Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add multi-circuit electrical meter classes and subclasses #577

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

wcrd
Copy link
Contributor

@wcrd wcrd commented Oct 20, 2023

Hi Gabe,

We have been coming across these sort of meters regularly. I have found it easiest to model them as subclasses of Electrical_Meter and utilise the brick:IsVirtualMeter entity property. I've provided some more context below (I am happy to add a section to the docs, if you agree :) ).

General Background

Multi-circuit meters allow the monitoring of a number of circuits through a single configurable controller. Each multi-circuit meter has a number of 'virtual' meters configured through software.

See here for additional information:

Definitions

Multi-Circuit Meter

Multi-circuit meters allow the monitoring of many metering points from a single controller without having to mount/purchase/wire/commission individual energy meters. Typically allow between 4 - 18 3-phase ‘meters’ to be added per controller.

Branch Circuit Meter

A branch circuit meter is a type of multi-circuit meter designed to monitor a number of circuits in close proximity branching from a single source; i.e. a distribution board, panel, or switchgear installation. Typically more compact in design and with built in aggregation functions across all the branch circuits.

Proposed Hierarchy

  • existing Electrical_Meter
    • Multi_Circuit_Electrical_Meter
      • Branch_Circuit_Electrical_Meter

Modelling Strategy

A multi-circuit meter is made up of a number of parts of type: Electrical Meter
(A multi-circuit meter will also have its own points for status reporting, configuration, aggregation, etc)

The component Electrical Meters should be marked as Virtual Meters as they exist inside the multi-circuit controller, not as physical individual meters. This does not affect querying and these ‘meters’ are identical to normal electrical meters. This additional property just helps identify meters that do not have an 'independent' physical presence within the building.

https://docs.brickschema.org/modeling/meters.html#virtual-meters

Example model

Note: completely arbitrary model

:multi-circuit-meter-1 a brick:Multi_Circuit_Electrical_Meter ;
    rdfs:label "MSSB Meter" ;
    brick:hasPart :em-1, :em-2 .

:em-1 a brick:Electrical_Meter ;
    rdfs:label "Chiller Plant Meter" ;
    brick:isPartOf :multi-circuit-meter-1 ;
    brick:isVirtualMeter [ brick:value true ] .

:em-2 a brick:Electrical_Meter ;
    rdfs:label "Rooftop Plant Meter" ;
    brick:isPartOf :multi-circuit-meter-1 ;
    brick:isVirtualMeter [ brick:value true ] .

I found this useful as virtual meters look exactly like physical meters so no queries need to be changed if you don't care about the distinction between them. I can easily query all electrical 'meters' in the building:

SELECT ?meter WHERE {
   ?meter rdf:type/rdfs:subClassOf* brick:Electrical_Meter .

Or just get all Multi Circuit Meters:

SELECT ?meter WHERE {
  ?meter rdf:type/rdfs:subClassOf* brick:Multi_Circuit_Meter .
}

Or quickly get just the (virtual) meters that form part of the multi-circuit meter

SELECT ?meter WHERE {
   ?meter brick:isPartOf ?target_meter ;
          brick:isVirtualMeter/brick:value true .
  VALUES(<...>)
}

Or just get all the virtually defined meters

SELECT ?meter WHERE {
   ?meter rdf:type/rdfs:subClassOf* brick:Meter ;
          brick:isVirtualMeter/brick:value true .
}

Note: Most of the queries above are covered by the linked 'virtual meter' docs section on the Brick website. Just including the basic ones in here for ease.


A little extra info considering I'm only adding two classes :), but hopefully makes sense.
Let me know what you think.

@gtfierro gtfierro added this to the 1.4.0 Pre-Release milestone Dec 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants