Home - TobleMiner/ttn-klax GitHub Wiki

Willkommen zu Dokumentation des TTN Dekoders für den KLAX.

Schnellstart

Der TTN KLAX Dekoder gibt pro Empfangener Nachricht mit Zählerständen ein JSON-Objekt aus. Wenn nur Zählerstände erfasst werden sollen ist das Verarbeiten dieser Objekte ausreichend. Es gibt zwei verschiedene Formate:

Legacy

Sollte Sie einen KLAX mit Firmware <= V0.4 verwenden, oder die LEGACY_FORMAT-Option aktiviert sein, haben die Objekte folgende (vereinfachte) Form:

{
  "header": {
    "batteryPerc": 100, // Ladezustand der Batterie im KLAX in Prozent, integer
    "configured": true, // Konfigurationszustand des KLAX, boolean
    "deviceType": "SML Klax", // Typ der KLAX, entweder "SML Klax", oder "MODBUS Klax", string
    "meterType": "SML", // Typ der Smart Meter Schnittstelle
    "version": 1 // Version des KLAX-Protokolls
  },
  "payloads": [ // Array von Payloads aus dem empfangenen Paket
    {
      "registers": [ // Daten der Register, standardmäßig nur ein konfiguriertes Register
        {
          "dataValid": true, // Gültigkeit der Messwerte, boolean
          "data_valid": true, // Gültigkeit der Messwerte, für Rückwärtskompatibilität, boolean
          "unit": "Wh", // Einheit der Messwerte, string
          "values": [
            63000, // viertletzter Messwert, float
            63000, // drittletzter Messwert, float
            63000, // vorletzter Messwert, float
            63000  // letzter Messwert, float
          ]
        }
      ],
      "type": "historic" // Typ der Payload, "historic" für Messwerte
    }
  ],
  "type": "app" // Typ der Paketdaten, "app" für Applikationsdaten
}

Modern

Sollte Sie einen KLAX mit Firmware >= V1.03 verwenden und die LEGACY_FORMAT-Option nicht aktiviert sein, haben die Objekte folgende (vereinfachte) Form:

{
  "header": {
    "batteryPerc": 100, // Ladezustand der Batterie im KLAX in Prozent, integer
    "configured": true, // Konfigurationszustand des KLAX, boolean
    "deviceType": "SML Klax", // Typ der KLAX, entweder "SML Klax", oder "MODBUS Klax", string
    "meterType": "SML", // Typ der Smart Meter Schnittstelle
    "version": 1 // Version des KLAX-Protokolls
  },
  "payloads": [ // Array von Payloads aus dem empfangenen Paket
    {
      "register": { // Daten des ersten Registers, standardmäßig das einzige konfigurierte Register
        "unit": "Wh", // Einheit des Registerwerts, string
        "values": [ // Array der letzten vier Zählerstände
          {
            "valid": true, // Gültigkeit des viertletzten Messwerts, boolean
            "value": 34000 // viertletzter Messwert, float
          },
          {
            "valid": true, // Gültigkeit des drittletzten Messwerts, boolean
            "value": 34000 // drittletzter Messwert, float
          },
          {
            "valid": true, // Gültigkeit des vorletzten Messwerts, boolean
            "value": 34000 // vorletzter Messwert, float
          },
          {
            "valid": true, // Gültigkeit des letzten (aktuellen) Messwerts, boolean
            "value": 34000 // letzter (aktueller) Messwert, float
          }
        ]
      },
      "type": "filter" // Typ der Payload, "filter" für Messwerte
    }
  ],
  "type": "app" // Typ der Paketdaten, "app" für Applikationsdaten
}

Hinweis: Auch wenn in obiger Ansicht der erste Eintrag im payload Array die Messdaten enthält kann sich hierauf keinesfalls verlassen werden. Es muss immer das gesamte Array nach den Messdaten durchsucht werden, da diese an beliebiger Stelle stehen können. Die Identifikation der Messwerte kann zuverlässig durch Vergleich des type Feldes auf den String "filter" durchgeführt werden.

Obige Ansicht ist eine starke Vereinfachung der tatsächlich ausgegebenen Daten und dient lediglich als Orientierungspunkt zur besonders schnellen Entwicklung von Prototypen. Genauere Informationen zum Format finden sich in der Sektion Detaillierte Formatbeschreibung.

Konfigurationsoptionen

Am Anfang des Decoders finden sich die folgenden Konfigurationsoptionen:

// Dump raw regsiter contents without decoding
var REGISTER_RAW = false;
// Enable debug console.log
var DEBUG = true;
// Use legacy output format, enables old output format for more modern Klax
var LEGACY_FORMAT = false;

Sowohl REGISTER_RAW, wie auch DEBUG sind primär zum Debugging des Decoders gedacht. Wenn REGISTER_RAW auf true gesetzt werden alle Registerdaten als hexadezimaler Rohwert ausgegeben, statt sie zu dekodieren. Das Setzen von DEBUG schaltet zusätzliche Debuggingausgaben ein. Sollten diese stören kann DEBUG auf false gesetzt werden, um diese Ausgaben zu unterdrücken.

Die Option LEGACY_FORMAT beeinflusst das Ausgabeformat des Decoders. Sollte bereits eine ältere Version dieses Dekoders im Einsatz sein und die bestehende Umgebung um KLAX Sensoren mit Firmware > V0.4 erweitert werden, ohne ein verändertes Ausgabeformat zu unterstützen, kann diese Option auf true gesetzt werden.

Detaillierte Formatbeschreibung

Eine Detaillierte Beschreibung des Datenformats dieses Parsers ist unter Datenformat zu finden. Die detaillierte Dokumentation ist derzeit noch in Arbeit.