Zum Hauptinhalt springen

Utility-Translatoren

Die Utility-Gruppe ist das, was übrig bleibt, wenn die anderen Kategorien genommen haben, was sie beschreiben: Translatoren, die einen anderen Translator konfigurieren, ein generisches Format decodieren, einen vorgelagerten Translator korrigieren oder dazu da sind, als durchgearbeitete Beispiele gelesen zu werden.

Modbus decodieren​

Modbus ist kein selbstbeschreibendes Format. Dieselben Bytes sind eine Temperatur, ein Durchfluss oder eine Seriennummer, je nach einem Registerlayout, das nur der Errichter kennt, ein generischer Decoder braucht dieses Layout also mitgeliefert.

TranslatorRolle
modbusDer generische Decoder. Nimmt eine hex-codierte Modbus-Payload und decodiert sie nach dem Registerlayout in contextMap.modbusRegisters. Verkettet, typischerweise hinter einer Watteco- oder Enginko-Brücke für Modbus über LoRaWAN, funktioniert aber mit jeder Quelle, die eine zusammenhängende Hex-Payload liefert

Jedes Register in modbusRegisters wird beschrieben durch einen fieldName, einen dataType von float, int oder uint, eine length von 1 für ein 16-Bit-Register oder 2 für 32 Bit, einen scale-Multiplikator und ein encoding von BE oder LE. Die Bytereihenfolge ist entscheidend und nicht zu erraten: Sie falsch zu wählen erzeugt Zahlen und keine Fehler.

Anders als der Rest der Plattform liest modbus sein Layout aus kontextuellen Parametern statt aus Translator-Parametern, weil das Layout eine Liste von Registerbeschreibungen ist und keine Menge benannter Werte.

Wenn Sie einen gängigen Zähler auf die Plattform bringen, sehen Sie zuerst im A–Z-Katalog nach. Mehrere Hersteller haben eigene Voreinstellungen, etwa die Decoder für Kamstrup Multical und Ambiductor, die die richtige Registerkonfiguration bereits mitbringen.

Einen vorgelagerten Translator korrigieren​

TranslatorRolle
xovis-field-inverterVertauscht die Richtungen ein und aus in der Ausgabe von xovis-pc2se-people-line-counter, über jeden erzeugten Zählwert hinweg: live, täglich, gesamt sowie die langen und kurzen Varianten. Für einen Sensor, der andersherum montiert ist, als der Zähler annimmt

Einen Zähler andersherum zu montieren ist eine physische Tatsache, die sich nach der Installation oft nicht mehr ändern lässt. Die Umkehrung in Software hält die Daten korrekt, ohne dass sich jemand merken muss, dass ausgerechnet dieses Gerät rückwärts zählt.

Beispiele für Translator-Entwickler​

Diese drei sind zum Lesen da. Es sind funktionierende Translatoren, und sie sind der kürzeste Weg, die Form eines Translators zu verstehen, bevor Sie einen eigenen schreiben.

TranslatorZeigt
example-regularDie Grundform: eine Hex-Payload in eine Temperatur, einen Status und einen Zeitstempel decodieren, mehrere Datentypen aus Binärdaten lesen und im Ergebnis zurückgeben
example-parameterizedDie Parameterfunktion, mit Anwendung eines vom Benutzer gelieferten scaleFactor und offset
example-timeseriesEine Zeitreihe statt eines einzelnen Messwerts zurückgeben, mit einer Payload, in der jedes Byte eine Temperatur eine Minute weiter in der Vergangenheit ist

Zum Schreiben eines eigenen siehe Translator-Entwicklung.

Das vollständige A–Z-Verzeichnis aller Translatoren finden Sie in der Translator-Übersicht.