Berechnungs-Translatoren
Ein Berechnungs-Translator leitet aus Feldern, die ein Gerät bereits gemeldet hat, einen neuen Wert ab und schreibt das Ergebnis daneben zurück. Eine Temperatur nach Fahrenheit umrechnen, aus einem Abstand ein Tankvolumen machen oder aus einem stetig wachsenden Zählerstand ein "wie viel in diesem Monat" machen, das sind alles Berechnungs-Translatoren.
Wie Alarm-Translatoren sind sie verkettet: Sie laufen auf dem Hardware-Translator des Geräts auf und lesen Felder, die dieser bereits decodiert hat, keine rohen Payloads.
Warum einen Berechnungs-Translator einsetzen
Der Wert wird einmal berechnet, auf dem Weg herein, und dann wie jedes andere Feld am Gerät gespeichert.
Das wiegt schwerer, als es klingt. Jedes Dashboard, jede Ansicht, jeder Bericht, jede Regel und jeder Export nachgelagert liest dieselbe gespeicherte Zahl, niemand rechnet sie neu und niemand ist anderer Meinung darüber. Eine monatliche kWh-Kennzahl wartet in dem Moment am Gerät, in dem sie abgefragt wird, statt zur Abfragezeit von demjenigen aus der Historie abgeleitet zu werden, der sie gerade braucht.
Es bedeutet außerdem, dass ein abgeleiteter Wert ein vollwertiges Feld ist, sodass alles, was mit Gerätedaten arbeitet, auch damit arbeitet. Am nützlichsten: Ein Alarm-Translator kann ein berechnetes Feld genauso überwachen wie ein gemessenes, und so alarmieren Sie auf etwas, das der Sensor nie gemeldet hat.
Summen je Zeitraum
Diese führen am Gerät fortlaufende Behälter für Tag, Woche, Monat, Quartal und Jahr. Wenn das
Zeitfenster eines Behälters wechselt, wird dieser zurückgesetzt und beginnt neu. Alle nehmen einen
Parameter timeZone, denn Periodengrenzen sind lokal: Mitternacht und Montag bedeuten an
verschiedenen Orten verschiedene Zeitpunkte.
| Translator | Was er berechnet | Erzeugte Felder |
|---|---|---|
calculate-energy-consumption-per-time-period | Die bisher im laufenden Tag, in Woche, Monat, Quartal und Jahr verbrauchte Energie, aus einem kumulativen kWh-Zähler. Geben Sie das Ergebnis an set-alarm-energy-consumption weiter, um Mehrverbrauch früh zu erkennen | energyConsumptionDay, energyConsumptionWeek, energyConsumptionMonth, energyConsumptionQuarter, energyConsumptionYear |
calculate-counter-delta-per-time-period | Um wie viel ein monoton wachsender Zähler im laufenden Zeitraum bisher gewachsen ist. kWh, Liter, Zyklen, alles, was nur steigt | amounts |
calculate-amount-by-time-period | Wie viel ein wachsender Zähler im letzten Tag, in Woche, Monat, Quartal und Jahr angesammelt hat | amounts |
calculate-amount-sum-per-time-period | Summiert einen Wert aus jedem Uplink in dieselben Periodenbehälter, dazu eine Gesamtsumme über die Lebensdauer. Zu verwenden, wenn jede Meldung eine Menge und keinen laufenden Zähler trägt | amounts |
Der Unterschied, den man richtig verstehen sollte: counter-delta und amount-by-time-period lesen
einen Zähler, der nur wächst, und ermitteln die Differenz. amount-sum liest eine jeweils gemeldete
Menge und addiert sie auf.
Personen- und Verkehrszählung
| Translator | Was er berechnet | Erzeugte Felder |
|---|---|---|
calculate-people-count-total | Eine Gesamtsumme ein und aus über die Lebensdauer, die Sensor-Rücksetzungen übersteht. Ein Zähler kann aus Gründen auf null fallen, die nichts mit gehenden Personen zu tun haben: eine konfigurierte tägliche Rücksetzung, ein erneutes Anmelden im Netz, ein Batteriewechsel. Dieser addiert je Uplink den Zuwachs und addiert bei einem Abfall den neuen Wert statt einer negativen Differenz, sodass die Summe nur wächst | peopleCountTotalIn, peopleCountTotalOut |
calculate-people-count-daily | Eine Zählung "bisher heute", die um lokale Mitternacht zurückgesetzt wird | peopleCountDailyIn, peopleCountDailyOut |
calculate-people-count-per-time-period | Fortlaufende Summen für Tag, Woche, Monat, Quartal und Jahr sowie eine Gesamtsumme, durchgehend gezählt | people |
calculate-people-count-during-time-window-per-time-period | Dieselben Zeiträume, aber nur innerhalb eines täglichen Zeitfensters gezählt, mit der Möglichkeit, Wochenenden zu überspringen. Für Öffnungszeiten statt rund um die Uhr | people |
calculate-traffic-counter-total | Gesamtsummen über die Lebensdauer für ein PMX-Verkehrszählradar, je Geschwindigkeitsklasse und Richtung. Das Verkehrspendant zu calculate-people-count-total | countClass0TotalLTR … countClass4TotalRTL |
Einheitenumrechnung, Skalierung und Kalibrierung
| Translator | Was er berechnet | Erzeugte Felder |
|---|---|---|
calculate-temperature-fahrenheit | Celsius nach Fahrenheit, eine Nachkommastelle | temperatureF |
calculate-average-temperature-fahrenheit | Dasselbe für einen gemittelten Temperaturmesswert | averageTemperatureF |
calculate-scale-by-factor | Multipliziert einen Messwert mit einem festen Faktor | scaledValue |
calculate-linear-calibration | Wendet eine lineare Kalibrierung, k und m, auf einen Messwert an. Zur Korrektur eines Sensors mit bekanntem Offset und bekannter Steigung | arithmeticResult |
calculate-4-20-ma-scaling | Skaliert einen Messwert einer 4–20-mA-Stromschleife auf den technischen Messbereich des Sensors um. 4 mA ist der untere, 20 mA der obere Bereichsrand, und so melden die meisten analogen Prozesssensoren für Druck, Füllstand und Durchfluss | arithmeticResult |
calculate-strips-drip-calibration | Kalibrierhilfe für den Sensative Strips Drip | capMin, capMax, calibrationStatus |
Umwelt
| Translator | Was er berechnet | Erzeugte Felder |
|---|---|---|
calculate-dew-point-from-temperature-rh | Taupunkt aus einem Paar aus Temperatur und relativer Feuchte, mit der SMHI-Näherung. Die Temperatur, auf die die Luft abkühlen müsste, damit ihre Feuchte kondensiert: nahe an der Lufttemperatur bedeutet, dass Kondensat, Nebel oder schwüle Raumluft wahrscheinlich sind | dewPointTemperature |
calculate-frost-precipitation | Ob sich auf einer kalten Oberfläche Reif bildet, durch Vergleich der Oberflächentemperatur mit dem Taupunkt der umgebenden Luft. Eine Oberfläche kälter als der Taupunkt zieht Feuchte aus der Luft, und unter dem Gefrierpunkt wird daraus Reif | frostPrecipitation, state |
Tankinhalt und Diagnose
| Translator | Was er berechnet | Erzeugte Felder |
|---|---|---|
calculate-cylinder-fill | Volumen des Inhalts und Füllstand eines zylindrischen Tanks aus dem Messwert eines Abstandsmessers. Berücksichtigt stehende und liegende Tanks sowie einen Sensor, der von der Decke oder vom Boden aus misst | volume, fillLevel |
calculate-satellite-snr | Entpackt ein 32-Bit-Wort bestSatellites in vier einzelne Signal-Rausch-Werte von Satelliten, zur Diagnose des GNSS-Empfangs | satelliteSNR1 … satelliteSNR4 |
Decoder mit eingebauter Berechnung
Zwei Einträge decodieren eine rohe Geräte-Payload und rechnen an derselben Nachricht, sie sind also Hardware-Translatoren und keine verketteten. Sie stehen hier wegen dem, was sie berechnen:
| Translator | Was er tut |
|---|---|
dragino-lht65-dewpoint-calculation | Decodiert einen Uplink des Dragino LHT65 und berechnet den Taupunkt aus dessen interner Temperatur und Feuchte |
vegapuls-air41-cylinder-calculation | Decodiert einen Radar-Uplink des Vega Vegapuls Air 41 und rechnet den Abstand in Tankvolumen und Füllstand um, für die Überwachung von Silos, IBC-Behältern und Puffertanks |
Parameter
Berechnungs-Translatoren folgen derselben Konvention wie die Alarm-Familie: Jeder Parameter ist optional und haben einen Standardwert, manche - etwa die physischen Maße, die eine Volumenberechnung braucht - sind aber Pflicht, und das Eingangsfeld wird automatisch bestimmt, sofern Sie es nicht gezielt woanders hinlenken.
| Parameter | Zweck |
|---|---|
[Größe]Field | Den Quellwert aus einem bestimmten Feldpfad statt aus dem automatischen Standard lesen. Zum Beispiel energyField, counterField, temperatureField, peopleInField |
timeZone | Lokale Zeitzone, die bestimmt, wo die Grenzen von Tag, Woche, Monat, Quartal und Jahr liegen. Wird von jedem periodenbezogenen Translator genutzt |
Die Geometrie- und Skalierungs-Translatoren nehmen stattdessen die Zahlen, die die Installation
beschreiben: radius, length, isStanding und isDistanceFromCeiling für einen Tank;
multiplyerK und additionM für eine lineare Kalibrierung; min_mA_value und
max_measured_range für eine Stromschleife.
Verkettung
Berechnungs-Translatoren sind am nützlichsten vor einem weiteren Translator. Drei Ketten, die es zu kennen lohnt:
- Energiebudget. Zähler →
calculate-energy-consumption-per-time-period→set-alarm-energy-consumption. Der Zähler meldet einen Gesamtwert, der Rechner macht daraus den Verbrauch dieses Monats, und der Alarm löst aus, wenn der Monat die vertragliche Menge überschreitet. - Frostwarnung. Temperatur- und Feuchtesensor →
calculate-dew-point-from-temperature-rh→calculate-frost-precipitation→set-alarm-frost-precipitation. Jeder Schritt fügt einen Wert hinzu, und der Alarm am Ende braucht keine Schwellen, weil der Rechner bereits zu einem Urteil gekommen ist. - Verlässliche Personenzählungen. Personenzähler →
calculate-people-count-total→calculate-people-count-per-time-period. Der erste sorgt dafür, dass die Zählung die Rücksetzungen des Sensors übersteht, der zweite teilt sie in Zeiträume auf.
Zu den Alarmen am Ende dieser Ketten siehe Alarm-Translatoren. Das vollständige A–Z-Verzeichnis aller Translatoren finden Sie in der Translator-Übersicht.