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.
| Translator | Rolle |
|---|---|
modbus | Der 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.
Die rohe Payload aufbewahren
| Translator | Rolle |
|---|---|
set-payload-from-uplink | Kopiert jede rohe Uplink-Payload in payload, als Hex-String in Großbuchstaben, damit sie in der Zeitreihe des Knotens gespeichert wird. Verkettet über dem Hardware-Translator |
Yggio speichert die rohe Payload nicht von sich aus in der Zeitreihe. Fügen Sie diesen Translator den Knoten hinzu, bei denen Sie sie haben möchten, etwa um den Verlauf nach einer Korrektur des Decoders erneut zu decodieren.
Einen vorgelagerten Translator korrigieren
| Translator | Rolle |
|---|---|
xovis-field-inverter | Vertauscht 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.
Fehlersuche bei Uplinks
| Translator | Rolle |
|---|---|
set-log-from-uplink | Schreibt jeden rohen Uplink in das Log des Knotens: die Payload als Hex, dazu Port und Gateway-Zeit, wenn die Integration sie setzt. Verkettet über dem Hardware-Translator |
Der Translator füllt nur log; eine Regel der Regel-Engine v1 mit einer Log-Aktion macht daraus
einen Logeintrag (die Beschreibung des Translators enthält die genaue Einrichtung). Die Regel-Engine
v2 kann das nicht, weil ihre Aktion zum Schreiben eines Logs auf der Regel protokolliert, nicht auf
dem Knoten. Die Einträge sind verbose und werden nach 14 Tagen gelöscht. Verbose-Einträge sind in
der Logliste ausgeblendet, bis Sie im Typfilter Verbose ankreuzen. Entfernen Sie den Translator,
wenn Sie fertig sind, weil log auch in der Zeitreihe des Knotens gespeichert wird.
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.
| Translator | Zeigt |
|---|---|
example-regular | Die 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-parameterized | Die Parameterfunktion, mit Anwendung eines vom Benutzer gelieferten scaleFactor und offset |
example-timeseries | Eine 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.