Zum Hauptinhalt springen

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.

TranslatorWas er berechnetErzeugte Felder
calculate-energy-consumption-per-time-periodDie 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 erkennenenergyConsumptionDay, energyConsumptionWeek, energyConsumptionMonth, energyConsumptionQuarter, energyConsumptionYear
calculate-counter-delta-per-time-periodUm wie viel ein monoton wachsender Zähler im laufenden Zeitraum bisher gewachsen ist. kWh, Liter, Zyklen, alles, was nur steigtamounts
calculate-amount-by-time-periodWie viel ein wachsender Zähler im letzten Tag, in Woche, Monat, Quartal und Jahr angesammelt hatamounts
calculate-amount-sum-per-time-periodSummiert 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ägtamounts

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​

TranslatorWas er berechnetErzeugte Felder
calculate-people-count-totalEine 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ächstpeopleCountTotalIn, peopleCountTotalOut
calculate-people-count-dailyEine Zählung "bisher heute", die um lokale Mitternacht zurückgesetzt wirdpeopleCountDailyIn, peopleCountDailyOut
calculate-people-count-per-time-periodFortlaufende Summen für Tag, Woche, Monat, Quartal und Jahr sowie eine Gesamtsumme, durchgehend gezähltpeople
calculate-people-count-during-time-window-per-time-periodDieselben 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 Uhrpeople
calculate-traffic-counter-totalGesamtsummen über die Lebensdauer für ein PMX-Verkehrszählradar, je Geschwindigkeitsklasse und Richtung. Das Verkehrspendant zu calculate-people-count-totalcountClass0TotalLTR … countClass4TotalRTL

Einheitenumrechnung, Skalierung und Kalibrierung​

TranslatorWas er berechnetErzeugte Felder
calculate-temperature-fahrenheitCelsius nach Fahrenheit, eine NachkommastelletemperatureF
calculate-average-temperature-fahrenheitDasselbe für einen gemittelten TemperaturmesswertaverageTemperatureF
calculate-scale-by-factorMultipliziert einen Messwert mit einem festen FaktorscaledValue
calculate-linear-calibrationWendet eine lineare Kalibrierung, k und m, auf einen Messwert an. Zur Korrektur eines Sensors mit bekanntem Offset und bekannter SteigungarithmeticResult
calculate-4-20-ma-scalingSkaliert 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 DurchflussarithmeticResult
calculate-strips-drip-calibrationKalibrierhilfe für den Sensative Strips DripcapMin, capMax, calibrationStatus

Umwelt​

TranslatorWas er berechnetErzeugte Felder
calculate-dew-point-from-temperature-rhTaupunkt 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 sinddewPointTemperature
calculate-frost-precipitationOb 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 ReiffrostPrecipitation, state

Tankinhalt und Diagnose​

TranslatorWas er berechnetErzeugte Felder
calculate-cylinder-fillVolumen 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 misstvolume, fillLevel
calculate-satellite-snrEntpackt ein 32-Bit-Wort bestSatellites in vier einzelne Signal-Rausch-Werte von Satelliten, zur Diagnose des GNSS-EmpfangssatelliteSNR1 … 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:

TranslatorWas er tut
dragino-lht65-dewpoint-calculationDecodiert einen Uplink des Dragino LHT65 und berechnet den Taupunkt aus dessen interner Temperatur und Feuchte
vegapuls-air41-cylinder-calculationDecodiert 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.

ParameterZweck
[Größe]FieldDen Quellwert aus einem bestimmten Feldpfad statt aus dem automatischen Standard lesen. Zum Beispiel energyField, counterField, temperatureField, peopleInField
timeZoneLokale 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.