At a glance
| Item | Typical answer |
|---|---|
| Problem | A portfolio of buildings runs on several building management systems that each work locally, so plant running out of hours, heating and cooling fighting each other and uncomfortable rooms stay invisible to the people who pay the energy bills. |
| What is connected | Main and sub-meters, air handling units, chillers, boilers, heat pumps, outdoor temperature and a sample of rooms, read from the existing BMS or plant controllers by a licensed gateway per building, plus wireless room sensors where there is no BMS. |
| Who uses it | The portfolio energy manager, building facility managers, the HVAC maintenance contractor and, for comfort views, building tenants. |
| Typical first scope | Three buildings of different types (for example an office, a school and a retail unit) with their main meters, central plant and ten to twenty sample rooms each. |
| Time to first screen | Typically one to two weeks per building once the BMS integrator has exported the point list. Budget six to eight weeks for a pilot whose findings the site teams accept. |
The situation
Most portfolios grew building by building, each with the BMS its contractor preferred, its own workstation, alarm list and idea of a schedule. The facility manager sees one building well; the energy manager responsible for twenty sees a monthly invoice.
The waste is rarely dramatic and always persistent. An air handler left in hand after a weekend event runs for months. A summer schedule is never switched back. A boiler heats a circuit while a chiller cools the same floor. Night baseload creeps up. Comfort complaints arrive by e-mail with no data behind them.
A yearly audit and a spreadsheet of meter readings do not show what the plant did yesterday at 3 a.m. The aim here is to lay one supervisory layer across every building without replacing any BMS: read the points that matter, keep the history in one place, and turn the known failure patterns into rules that tell the right person.
Goals and measures
Write the measures down before choosing points; each one names the points it needs. Typical measures for a mixed portfolio:
- Energy use intensity = annual kWh (electricity plus heat, kept separate) ÷ the building's conditioned floor area. The area is an attribute on the building asset; the annual sum comes from the meters' daily increase.
- Baseload ratio = average power between 01:00 and 04:00 ÷ average power on weekdays between 10:00 and 16:00. A ratio drifting upward means equipment that no longer switches off.
- Out-of-hours run time per air handler and per chiller = hours running outside the occupancy window. With states sent as 0 or 1, each hourly average is the fraction of that hour the unit ran.
- Simultaneous heating and cooling = hours in which a heating source and a cooling source serving the same zone both ran.
- Comfort compliance = share of occupied hours in which a room stayed inside its band (for example 20 to 24 °C in winter; agree bands with the owner).
- Chilled water delta-T = return minus supply temperature at the chiller. A low delta-T points to bypassing valves.
Hermetry stores one-minute aggregates (sum, count, minimum, maximum, last) of every key and rolls them up to hours and days, and dashboard cards can ask for the increase of a meter total per bucket. Daily energy and hourly run fractions therefore need no extra calculation in the field. Do weather normalisation on the exported history.
Architecture
Each building gets one licensed gateway in the plant room or the BMS panel. It reads what the building already has and publishes over MQTT with TLS on one outbound connection; the BMS network accepts nothing from the internet. See Hermetry Edge and the licensed devices for interfaces per model.
Where the data comes from
- Modbus first. Energy meters, heat meters with a Modbus output, chiller and boiler controllers and many BMS supervisors offer Modbus RTU or Modbus TCP. The gateway reads them as configured register lists.
- BACnet building systems. One licensed gateway model, the DC620 DUAL BACnet, is built for BACnet building systems. Confirm with us which objects and how many points it reads for your BMS before planning on it. BACnet on the general-purpose Edge routers is in development.
- A BMS that publishes on its own. A supervisor that can publish MQTT or post HTTP connects straight to Hermetry with an access token or user name and password.
- Buildings without a BMS, or rooms the BMS does not cover. Battery LoRaWAN room sensors (temperature, humidity, CO2, door contacts, water leak) report through a LoRaWAN gateway on Hermetry's own LoRaWAN network server. A LoRaWAN pulse reader on a meter's pulse output covers meters without a bus.
| Component | Role | Notes |
|---|---|---|
| Licensed gateway with Edge | Reads meters and plant over Modbus, publishes telemetry | One per building. Factory identity, claimed into your organisation; buffers readings during an outage, how much depends on the model. |
| Existing BMS and plant controllers | Keep controlling the building | Read-only in the first phases. Schedules, interlocks and loops stay here. |
| Electricity, heat and gas meters | Energy per building and per major load | Modbus RTU on the gateway's RS485 line, or a LoRaWAN pulse reader. |
| LoRaWAN room sensors and gateway | Comfort and air quality in sample rooms | EU868, OTAA, class A. The gateway speaks LoRa Basics Station. |
| Hermetry | History, alarms, rules, boards, plant drawings | EU, US or Türkiye region, or on your own servers. |
When one gateway reads several controllers, it can report each as a child device of itself (for example AHU-1, AHU-2, Chiller-1), each with its own profile, readings and alarms, over the one connection. Commands and shared attributes to child devices are in development, which is one more reason to start read-only.
Point list
A typical medium office with two air handlers, one air-cooled chiller, two boilers, a main meter and sub-meters. Register numbers are illustrations; take them from the BMS or controller documentation. Send states as 0 or 1 numbers rather than text, so hourly averages give run fractions.
| Point | Telemetry key | Unit | Source | Interval | Notes |
|---|---|---|---|---|---|
| AHU run state | ahu_run | 0/1 | BMS or AHU controller, Modbus coil or register | on change + 15 min | One child device per AHU. |
| AHU in hand | ahu_hand | 0/1 | Controller mode register | on change | Catches overrides left on. |
| Supply air temperature | supply_air_c | °C | Controller, e.g. holding register 30101 | 5 min | |
| Supply fan speed | fan_speed_pct | % | Drive or controller | 5 min | |
| Heating valve position | heat_valve_pct | % | Controller output | 5 min | Valve and cooling coil both open = fighting. |
| Cooling valve position | cool_valve_pct | % | Controller output | 5 min | |
| Filter differential pressure | filter_dp_pa | Pa | Pressure switch or transducer | 15 min | Limit per AHU as an attribute. |
| AHU fault | ahu_fault | 0/1 | Common fault point | on change | |
| Chiller run state | chiller_run | 0/1 | Chiller controller | on change + 15 min | |
| Chilled water supply | chw_supply_c | °C | Chiller controller | 5 min | |
| Chilled water return | chw_return_c | °C | Chiller controller | 5 min | Delta-T from the two. |
| Chiller fault | chiller_fault | 0/1 | Chiller controller | on change | |
| Boiler run state | boiler_run | 0/1 | Boiler controller or flame relay | on change + 15 min | One per boiler. |
| Main electricity energy | elec_kwh | kWh | Main meter, Modbus RTU | 15 min | Daily use from the increase. |
| Main electricity power | elec_kw | kW | Main meter | 1 min | For baseload and peaks. |
| Sub-meter energy (HVAC, lighting, tenant) | sub_kwh | kWh | Sub-meters, one child device each | 15 min | Same key on every sub-meter; the device says which load. |
| Heat energy | heat_kwh | kWh | Heat meter with Modbus, or pulse reader | 15 min | |
| Outdoor air temperature | outdoor_c | °C | Sensor on gateway or LoRaWAN | 10 min | |
| Room temperature | room_c | °C | LoRaWAN room sensor or BMS room point | 10 min | Codec key names vary by sensor model; see Pitfalls. |
| Room humidity | room_rh | % | LoRaWAN room sensor | 10 min | |
| Room CO2 | room_co2_ppm | ppm | LoRaWAN CO2 sensor | 10 min | |
| Sensor battery | battery | % | LoRaWAN sensor | with each uplink | |
| BMS communication | bms_comm_ok | 0/1 | Gateway read status | 5 min | False when the gateway cannot read a controller. |
Declare every key in the profile's Telemetry keys tab with label, unit, decimals and a plausible range. Gauges take the range as their scale.
Asset model
In Sites & Assets, build the tree the way the portfolio is managed. Assets carry a kind (Site, Building, Floor, Room, Area and free kinds), a code, a location and a time zone. A common shape:
- Building (Building), with location and time zone,
floor_area_m2,building_type(office, school, retail),criticalityandcontractor. - Plant room (Area), with the AHUs, chillers and boilers as Machine assets carrying
rated_kwandinstall_year. - Floor (Floor) and Room (Room), with
comfort_band_low_c,comfort_band_high_candco2_limit_ppmas attributes, and the room's code matching the room's name on the floor drawing.
Place each device where it measures: the gateway on the building, AHU children under the plant room, room sensors under their rooms, and add Feeds relations from each AHU to the floors it serves. Placement decides a building's status (the worst of the devices beneath it), which devices a building's Rules card may name, and which buildings an attribute-based policy can narrow a person to.
Limits that differ per room or per unit belong on the device as server attributes (for example max_room_c on each room sensor, max_filter_dp_pa on each AHU). Profile alarm rules can compare against such an attribute, so one rule set serves every building.
Device setup
Profiles
Create one profile per kind of equipment, not per building: AHU (Modbus), Chiller, Boiler, Electricity meter, Room sensor (LoRaWAN) and the gateway. A profile holds transport, login and online rules, telemetry keys, alarm rules, commands and, for LoRaWAN, codec and radio settings. Gateway children use the Recent message online rule with a 15-minute expected interval.
Provisioning
Licensed gateways leave the factory with an identity; an administrator claims each one by scanning its code and picks the profile. LoRaWAN room sensors are added with DevEUI, JoinEUI and AppKey or imported in a batch, and a profile can hold one shared AppKey for a delivery.
Remote settings and intervals
On licensed gateways, remote device settings list every setting of the model with its current value: serial parameters, Modbus slave addresses, register lists and polling intervals. Prepare a baseline per building type (for example office with two AHUs) and apply it with a bulk job that runs in waves and stops itself if too few gateways apply the change.
Poll analog plant values every five minutes and meters every fifteen. Plant has long time constants; only main power earns one-minute data. Send states on change plus a periodic heartbeat.
Time and gaps
Let the gateway stamp readings with its synchronised clock; a controller without a reliable clock should not send time stamps. During an outage licensed gateways keep readings and send them later with their original times (capacity depends on the model); alarm rules evaluate them as a backfill, marked Backfilled, without paging.
Firmware
Signed gateway firmware rolls out in waves with a soak time: one low-criticality building first; a failed wave gate pauses the rollout.
Dashboards
Start from the Sites board template (site table and status map). An entity parameter lets one building page serve every building.
| Board | Audience | Widgets and what they show |
|---|---|---|
| Portfolio | Energy manager, management | Site table with status, open alarms and last seen; map coloured by status; bar chart of yesterday's kWh per building from the meters' daily increase; alarm table filtered to Major and above. |
| Building | Facility manager | The building's 2D or 3D view with floors and rooms coloured by status; line chart of main power over seven days with outdoor temperature; state cards for every AHU, chiller and boiler; table of rooms outside their band; activity feed. |
| Plant room | Facility manager, contractor | Process drawing card with the AHU, chiller and boiler drawings bound to live values; gauges for supply temperatures; heat and cool valve positions on one chart to reveal fighting. |
| Energy detail | Energy manager | Heatmap of hourly electricity use; scatter of daily kWh against average outdoor temperature; table of sub-meter consumption per day, downloadable to Excel. |
| Comfort | Facility manager, tenants | Rooms table with temperature, humidity and CO2, filtered with a key filter (for example room_co2_ppm above 1,000); per-room trend on click. |
For a tenant's lobby screen or a facilities office wall, create a display link per screen: read-only, no menus, valid for 1 to 365 days and revocable one screen at a time.
SCADA screens
Draw plant screens per equipment type, not per building. The Building pack supplies the symbols: from its HVAC family Air handling unit, Louvre damper, Heat recovery core, VAV box, Air-cooled chiller, Cooling tower, Condensing boiler, Heating circulator pump, Three-way valve and duct pieces; from its building family Sub-meter and BMS rack. Smart meter comes from the Power pack. See the symbol library.
- States. Fans show running or stopped from
ahu_run; valves print their position; a rule turns a filter red whenfilter_dp_paexceeds its limit and blinks the AHU outline onahu_fault. - Fighting at a glance. A label rule shows a warning text when heating and cooling valve positions are both above 10 %.
- Reuse. Attach the AHU drawing as a view on the AHU profile; every AHU in every building gets its own view with its own bindings. Match everything proposes a device for each unbound symbol, and the Problems tab lists anything still unbound.
- Buildings in 3D. A building or floor can hold a 2D drawing and a 3D view made from it. The 3D scene tints each room whose code matches a room asset with the worst status beneath it, read from the key
status; a small flow can write that key from the comfort band.
Commands on symbols are possible behind a confirmation that names the symbol, the command and the values. Keep them out of the first phases, and remember that controllers reached as gateway children cannot take commands yet.
Rules and alarms
Two tools do the work. Alarm rules on device profiles watch one device's values with debounce, hysteresis and per-device limits. The Rules card on a building board watches several devices of the building and knows the clock: time of day, weekdays, sunrise and sunset, seasons and the organisation's holiday calendar, in the building's time zone.
A value trigger fires when the value crosses the line, not while it stays there. An air handler already running at closing time never crosses again, so give out-of-hours rules a second trigger at a fixed time after closing and let the condition check the current state.
| Alarm | Condition | Delay and hysteresis | Severity | Notified | Escalation |
|---|---|---|---|---|---|
| AHU running out of hours | Rules card: when ahu_run becomes 1, or every day at 20:00; only if ahu_run = 1 and the time is outside 06:30 to 19:30 Monday to Friday, or it is a holiday | Value trigger stays so for 30 min | Minor | Building facility manager, e-mail | None; reviewed weekly |
| Heating and cooling together | Rules card: when boiler_run becomes 1, only if chiller_run = 1 on a chiller serving the same building | Stays so for 30 min | Minor | Energy manager, e-mail | None |
| AHU fault | Profile rule: ahu_fault = 1 | Debounce 2 samples | Major | Contractor and facility manager, push and e-mail | Reminder every 60 min until acknowledged |
| Chiller fault | Profile rule: chiller_fault = 1 | Debounce 2 samples | Major; Critical for buildings with critical cooling | Contractor, push and SMS | Reminder every 30 min |
| Room too warm | Profile rule on room sensors: room_c above attribute max_room_c | Debounce 30 min; hysteresis 0.5 °C | Warning | Facility manager, in-app | None |
| High CO2 | Rules card: room_co2_ppm above 1,200 for 20 min, only if within occupied hours | Stays so for 20 min | Warning | Facility manager, push | None |
| Gateway offline | Inactivity rule on the gateway profile, no message for 30 min | Major | IT and facility manager, push | Reminder every 2 h | |
| Sensor battery low | Profile rule: battery below 20 | Debounce 2 samples | Info | Facility manager, e-mail | None |
Lifecycle. An alarm opens after its debounce, is acknowledged with an optional note and resolves by itself when the condition clears; repeats count as occurrences on the one open alarm. Review resolved alarms that nobody acknowledged: a chiller fault that cleared at 4 a.m. still deserves a look.
Maintenance. Mute devices before planned work: alarms are recorded, nobody is paged, and the mute ends by itself (at most 90 days). For a late event, set the building to Manual until a time; its rules resume on their own.
Floods. A BMS restart can make every point of a building drop and return at once. Keep the communication alarm above its consequences in severity, debounce equipment alarms by two samples and dampen chattering points. Above 20 alarm notifications a minute Hermetry collects the rest into a five-minute digest.
Automation and integrations
- Status for the twin. A flow on the room sensor profile reads the band attributes with a device details block and saves a
statuskey (ok,warning,critical) that colours rooms on the views. - Work orders.
alarm.created,alarm.acknowledgedandalarm.clearedwebhooks, signed with HMAC and optionally in CloudEvents form, feed the contractor's CMMS. A flow's HTTP request block can post selected alarms to a helpdesk instead. - Writing to the BMS. Where a controller is a directly connected device with a command catalog, a Rules card can send a basic-tier command, for example an AHU to unoccupied mode at 20:00, if the controls contractor agrees. Commands to gateway children are in development.
- Reports. History tables download to Excel for monthly energy and comfort reports; scheduled or e-mailed reports are not built in today.
A licensed router's web panel opens from its device page through router remote access: outbound tunnel, time-limited and audited sessions.
Roles and access
| Who | Role or group | Can |
|---|---|---|
| Portfolio energy manager | User + IoT viewer group | See every building, export history, add notes to alarms. |
| Building facility manager | User + IoT operator group, narrowed to their buildings | See their buildings, acknowledge alarms, switch their building's rules to Manual. |
| HVAC contractor | User, narrowed to the buildings under contract | See plant boards and alarms, acknowledge, add notes. |
| Controls engineer | Admin | Edit profiles, alarm rules, drawings, Rules cards, gateway settings and firmware. |
| IT owner | Owner | Members, sign-in policy (two-factor, passkeys, SAML or OIDC), API keys, raw commands. |
Narrowing a person to some buildings uses attribute-based policies; check each with the policy simulator. A property manager can give each owner its own organisation, isolated by row-level security. The audit log records sign-ins, role changes, rule edits, mutes, setting changes and commands in a verifiable hash chain, exportable as CSV or NDJSON.
Sizing and data
As an order of magnitude, for 40 buildings, each with one gateway reporting 12 child devices (AHUs, plant, meters) every five minutes and 30 LoRaWAN room sensors every ten minutes. Sizing counts one message per device per reading as a conservative estimate:
- Gateway children: 12 × 288 readings a day = 3,456 messages per building.
- Room sensors: 30 × 144 = 4,320 uplinks per building.
- Per building about 7,800 messages a day; for 40 buildings about 310,000 a day, or roughly 9.5 million a month.
- Values: about 100 plant values × 288 plus 30 rooms × 4 values × 144 gives roughly 46,000 values per building a day, about 1.8 million a day for the portfolio and 670 million a year.
Only telemetry and attribute messages count toward the monthly allowance; commands, alarms and connection events do not. The plan's retention class (7, 30, 90, 365 or 1,095 days) sets history length: raw readings are kept for at most 90 days, minute aggregates for up to 31 days, and hourly and daily aggregates for the full class, which carry multi-year energy comparisons. Confirm storage per value for your deployment with us, and see how the platform is load-tested.
Rollout plan
| Phase | Weeks | Work | Exit criteria |
|---|---|---|---|
| 0. Survey | 1-3 | Collect BMS point lists, controller manuals and meter schedules for three pilot buildings; choose equipment profiles and key names; agree measures, comfort bands and occupancy windows. | Signed point list per equipment type; occupancy windows confirmed by each site. |
| 1. Meters first | 4-5 | Gateways, main meters, sub-meters and outdoor temperature in the pilot buildings; portfolio and energy boards. | Daily kWh matches utility meter readings within an agreed tolerance. |
| 2. Plant and rooms | 6-9 | AHU, chiller and boiler points; LoRaWAN room sensors; plant drawings; alarm rules and out-of-hours Rules cards notifying only. | Four weeks of findings reviewed with each facility manager; nuisance alarms tuned out. |
| 3. Portfolio | 10-24 | Remaining buildings in batches of three to five; gateway baselines per building type; CMMS webhooks; display links. | Every building reporting; baseload and out-of-hours figures in the monthly review. |
| 4. Supervisory actions | After 3 | Selected commands to directly connected controllers, if the controls contractor agrees. | Each command tested in a safe state; Manual switch used and understood by site teams. |
Commissioning checklist
- Gateway claimed, on the right profile, placed on the right building, certificate active; child devices appear with the expected profiles.
- Every analog point compared with the BMS workstation at the same moment; units, scaling and decimals correct.
- Every state point toggled or observed changing on site and seen with the right sense (running = 1).
- Meter readings compared with the meter display over 24 hours.
- Time stamps checked against a known event, in the building's time zone; building time zone set on the asset.
- Out-of-hours rule tested by running an AHU in hand outside the window; the right person receives it on the right channel.
- Every profile alarm forced once and acknowledged; reminder interval seen to repeat.
- Uplink unplugged for 30 minutes: gateway offline alarm opens; buffered readings fill the gap after reconnection.
- Plant drawings bound, Problems tab empty; room codes match the floor drawing so 3D tinting works.
Pitfalls
- Reading every BMS point. Read the few dozen points each measure needs; add more later with a settings baseline.
- Text states.
ONandOFFas text cannot be averaged. Send 0 and 1 so run fractions and out-of-hours hours fall out of the hourly aggregates. - One schedule for all buildings. Out-of-hours rules must follow each building's real occupancy and time zone. Home the rule on the building, and use the holiday condition so bank holidays are not flagged as waste or as normal.
- Codec key names. Different LoRaWAN sensor models name the same value differently. Either keep one sensor model per profile or save a copy of the library codec and rename its outputs to your keys.
- Treating comfort alarms as urgent. A warm meeting room is a Warning for the facility manager's list, not a push at night.
- Commands too early. Writing to a BMS without the controls contractor's agreement creates two masters. Start read-only and keep control in the BMS.
What Hermetry does not replace
Hermetry is a supervisory and analysis layer across buildings. Control loops, time schedules, frost protection, fire and smoke control, life-safety interlocks and plant protection stay in the BMS, the plant controllers and hard-wired circuits, and must keep working when the link or the platform is unavailable. Any command Hermetry sends is a request that the controller may accept or refuse. Fire alarm systems, utility billing, tenant recharging and the CAFM or CMMS remain the systems of record.

