A ready solution expects certain telemetry keys, attributes and relations. Your devices probably name things differently: temp instead of air_temp, door as text instead of door_open as true/false, pressure in pascals instead of bar. This page shows how to fit them together without rewriting the solution, and what else a solution needs from you.
Choose an approach
| Approach | Best when | Effort |
|---|---|---|
| 1. Clean up in the root flow | Many devices of one kind send the same names | One flow, then every board and rule works unchanged |
| 2. Change the cards | Only a few cards are involved, or you use a template board anyway | Edit each card’s keys |
| 3. Change the codec (LoRaWAN) | The sensor is LoRaWAN and its codec names keys your way | Save a copy of the codec with other output names |
| 4. Put your devices in the solution’s profiles | Your devices can send the solution’s keys directly (you control the firmware) | None on the Hermetry side |
Approach 1 is the usual choice: the stored data then matches the solution’s profiles, so alarm rules, boards and charts all work, and you can mix device makers.
1. Clean up in the root flow
Every device message passes through one root flow before it is stored: the profile’s own root if there is one, otherwise the organisation’s root flow. Put the clean-up steps before Save telemetry.
- Give the devices of one kind their own device profile, or use the solution’s profile.
- In Automation, create a flow on the IoT host from the Default root flow template and bind it as that profile’s root. See Hosts, the root flow and profile root flows.
- Between Device messages and Alarm rules, add the steps below.
- Test with a recorded message, then deploy.
Put the steps before Alarm rules, so the rules see the cleaned keys too.
Rename a key
A Change block with two steps, for example to turn temp into air_temp:
| Step | Path | Value |
|---|---|---|
set | msg.payload.air_temp | msg.payload.temp |
delete | msg.payload.temp |
Convert a value
A Calculate block, one target per value:
| Need | Expression | Target |
|---|---|---|
°F to °C (air_temp) | round((msg.payload.temp_f - 32) * 5 / 9, 1) | msg.payload.air_temp |
| Text door state to true/false | msg.payload.door == "open" | msg.payload.door_open |
| A tracker’s event code to the solution’s word | msg.payload.ev == 3 ? "fall" : (msg.payload.ev == 7 ? "sos" : "normal") | msg.payload.event |
| Numeric text to a number | number(msg.payload.level) | msg.payload.level_cm |
Arithmetic on text fails, even on numeric text such as "21.5": convert with number(...) first. See Data transform blocks and Cleaning up decoded values.
Drop keys you do not need
A Change block with delete steps, or limit Save telemetry to the keys you list. Fewer keys keep you further from your plan’s key cap; see Telemetry keys.
Note
Cleaning up changes what is stored, not what is counted: the message counts toward your monthly allowance when it arrives. See Message quota and usage.
2. Change the cards
To read your keys directly, open the board in Customise mode, open a card’s settings and pick your key in its data field. Charts, tables and maps each have their own key lists. A board parameter such as Tanks or Site controllers selects devices by profile: open Manage parameters… and add your profile to it, so your devices appear on the board.
Change a copy rather than the installed board: Duplicate it first. When Hermetry updates a solution, the installed board’s cards are written again (see Install a solution).
3. Use the solution’s limits
The alarm rules compare readings with server attributes of each device. Your devices need them too:
| Solution | Attributes on each device |
|---|---|
| Water site | Tank: lowLevelThreshold, highLevelThreshold. Pump station: minPressure |
| Remote sites | Site controller: highTempThreshold, lowTempThreshold, highHumThreshold, lowHumThreshold |
| Sensor regions | maxTempThreshold, minTempThreshold, warnTempThreshold, maxHumThreshold, minHumThreshold, warnHumThreshold |
| Personnel tracking | forbiddenZone |
| Weather stations | None |
A device without an attribute is not checked by the rule that reads it. Set the attributes:
- by hand, on the device’s Attributes tab (Server scope),
- in bulk, with
attr:<key>columns in a device import (see Importing devices in bulk), - from another system, with
POST /api/iot/devices/{deviceId}/attributes/server(see Telemetry and attributes API).
4. Places and relations
Some pages find devices through the site model. Recreate it for your own devices:
| Solution | What the board needs | How |
|---|---|---|
| Water site | Tanks and stations placed in a zone under the site; each tank CONTROLS its pump station | Place the devices; add the relation from the tank to the station |
| Remote sites | Controller and UPS gateway placed in the site; the UPS gateway FEEDS the controller; cameras placed in the site | Place the devices; add the relation from the UPS to the controller |
| Sensor regions | Sensors placed in a region; the region’s floorPlan attribute; the station labelled Weather station | Place the devices; set the attribute and the label |
| Personnel tracking | Zone assets named exactly as the trackers report them | Create assets of kind Zone with those names |
See Placing devices and Relations.
5. Name devices well
The boards show device names in titles, tables, maps and alarm texts (“Alarm opened on name: …”). Name each device after what it is and where it is (Hilltop shelter, Tank 3 North), not after its serial number. The sensor regions board also uses the device label on the map.
Checklist
- Your devices send the solution’s keys, directly or after the root flow’s clean-up. Check a device’s Telemetry tab.
- Each device has its limit attributes.
- The devices are placed, and the relations exist.
- The board’s profile parameters include your profiles.
- The notification flow’s profiles list names your profiles, its recipients are right, and it is switched on.
- Sample devices you no longer need are deleted.
Troubleshooting
| Symptom | Check |
|---|---|
| A card stays empty | The key name on the device’s Telemetry tab, exactly, including case. See A dashboard shows no data. |
| A chart is empty but the value card shows a value | The key is text or true/false: store a numeric copy |
| No alarm opens | The limit attribute is missing, or the clean-up runs after Alarm rules |
| Data stopped after you bound a profile root | The new root lacks Save telemetry. See Data does not arrive. |

