Sensorlogger
MQTT-Einstellungen
Zunächst können in einer allgemeinen Sektion die Verbindungen zu den MQTT Brokern konfiguriert werden. Es kann eine beliebige Anzahl an Brokern konfiguriert werden. Das folgende Beispiel nutzt zwei Broker.
"mqtt": [ { "comment": "Configuration for Broker #1", "host": "192.168.1.3", "port": 1883, "qos": 1, "retained": false, "connected_topic": "Sensorlogger/status", "connected_message": "online", "lwt_topic": "Sensorlogger/status", "lwt_message": "offline", "enable_publish": true, "enable_subscribe": false, "topic_domain": "" }, { "comment": "Configuration for Broker #2", "host": "192.168.1.8", "port": 1883, "qos": 1, "retained": false, "connected_topic": "Sensorlogger/status", "connected_message": "online", "lwt_topic": "Sensorlogger/status", "lwt_message": "offline", "enable_publish": false, "enable_subscribe": true, "topic_domain": "House/Living_Room" } ]
"host": Hostname oder IP-Adresse des MQTT-Brokers. Kann ausgelassen oder auf null gesetzt werden, um die MQTT-Verbindung und -Sensoren zu deaktivieren.
"port": Port auf dem Host für die Verbindung zum MQTT-Broker.
"qos": Quality of Service (QoS) für die Verbindung zum MQTT-Broker.
Standardwert: 1
"retained": Legt fest, ob der MQTT Broker die verschickten Nachrichten aufheben soll (true) oder nicht (false). Betrifft auch Last Will & Testament (LWT).
Standardwert: false
"connected_topic": Topic, unter dem bei erfolgreichem Verbindungsaufbau mit dem MQTT-Broker eine Nachricht geschickt werden soll.
Standardwert: null
"connected_message": Nachricht, die bei erfolgreichem Verbindungsaufbau mit dem MQTT-Broker geschickt werden soll.
Standardwert: null
"lwt_topic": Topic für Last Will & Testament (LWT), unter dem der MQTT-Broker bei Verbindungsabbruch eine Nachricht verbreiten soll.
Standardwert: null
"lwt_message": Nachricht für Last Will & Testament (LWT), die der MQTT-Broker bei Verbindungsabbruch verbreiten soll.
Standardwert: null
"topic_domain": Kann verwendet werden, um die Topics, die dieser Broker behandeln soll, einzugrenzen. Topics, die für diesen Broker gültig sind, müssen dann mit der hier angegebenen Zeichenkette beginnen. Falls mehrere Broker konfiguriert werden, kann dieser Parameter auf diese Weise als eine Filtermaske eingesetzt werden. Wenn der Broker alle Topics behandeln soll, kann eine leere Zeichenkette für diesen Parameter verwendet werden.
Standardwert: ""
"enable_publish": Wenn dieser Parameter auf true gesetzt ist, werden alle Werte mit Topics innerhalb der Topic Domain an den Broker gesendet. Um das Senden aller Werte zu unterbinden, kann dieser Parameter auf false gesetzt werden. Die Statusmeldungen (connected und LWT) werden immer an den Broker geschickt, unabhängig von diesem Parameter.
Standardwert: true
"enable_subscribe": Wenn dieser Parameter auf true gesetzt ist, wird der Broker eingesetzt, um alle Topics innerhalb seiner Topic Domain zu abonnieren. Mit false können alle Abonnements deaktiviert werden.
Standardwert: true
MQTT-Sensoren
"sensors": [ ... { "sensor_id": "Shelly/AnalogTemp", "mqtt_subscribe": "shelly/tele/SENSOR", "json_key": ["ANALOG", "Temperature"], "factor": 1, "offset": 0, "counter": false, "mqtt_publish": "Haus/Wohnzimmer/Temperatur/aktuell", "homematic_publish": "12345", "rest_period": {"value": 2, "unit": "s"} }, { "sensor_id": "Wetterstation/Regenwippe", "mqtt_subscribe": "Haus/Wetterstation/Regenwippe", "json_key": null, "factor": 0.5, "offset": 0, "counter": true, "rest_period": {"value": 100, "unit": "ms"} }, ... ]
"sensor_id": Allgemeine, eindeutige ID für den Sensor, um später bei der Definition der Logbücher hierauf Bezug nehmen zu können.
"mqtt_subscribe": MQTT-Topic, das für diesen Sensor abonniert werden soll.
"json_key": Falls der Wert nicht als reine Zahl geschickt wird, sondern in einen JSON-String eingebettet ist, kann hier die Schlüsselfolge der Position des Wertes im JSON-Objekt angegeben werden. Für die obere Ebene genügt eine einfache Zeichenkette. Falls der Wert auf tieferen Ebenen liegt, muss über ein Array von Strings der Schlüsselpfad angegeben werden. Ist der Wert an irgend einer Stelle in ein JSON-Array eingebettet und damit nicht direkt über Schlüsselnamen zugreifbar, können im json_key-Array auch Ganzzahlen verwendet werden, um die entsprechenden Indexpositionen in Arrays anzugeben (Zählung beginnend bei 0).
Wenn der Wert bereits in korrekter Form als MQTT-Payload übermittelt wird und nicht in einen JSON-String eingebettet ist, kann dieser Parameter ausgelassen oder auf null gesetzt werden.
Standardwert: null
"factor": Korrekturfaktor, siehe nächster Punkt.
Standardwert: 1
"offset": Korrekturoffset. Der resultierende Wert für den Sensor wird anhand der Formel factor·(Messwert+offset) ermittelt.
Standardwert: 0
"counter": Legt fest, ob es sich bei diesem Sensor um einen reinen Zähler handeln soll. In diesem Fall muss die Variable auf den Wert true gesetzt werden. Der Sensorlogger speichert in diesem Fall immer nur den letzten Wert bzw. Zustand des Sensors, und zählt die ausgelösten Ereignisse. Im Logbuch können später nur die Anzahl der Ereignisse und Frequenzen ausgewertet werden, keine anderen statistischen Operationen (z.B. Mittelwert). Falls Ereignisse sehr häufig ausgelöst werden, wie z.B. im obigen Beispiel für den Windsensor, kann es Arbeitsspeicher und Rechenzeit sparen, nicht alle Messwerte des aktuellen Messzyklus aufzuheben, sondern nur die Ereignisse zu zählen.
Ereignisse werden allerdings immer gezählt, unabhängig vom Wert dieses Parameters. Dadurch funktioniert die Zähl- und Frequenzstatistik, die evtl. in Logbücher einfließen soll, ebenfalls immer.
Standardwert: false
"mqtt_publish": Topic, unter dem der empfangene und ggf. korrigierte Wert erneut per MQTT verteilt werden soll. Kann nicht das gleiche Topic sein wie mqtt_subscribe.
Standardwert: null
"homematic_publish": ISE-ID der Systemvariable, deren Wert auf den ausgelesenen und ggf. korrigierten Sensorwert gesetzt werden soll.
Standardwert: null
"rest_period": Ruhezeit für den Sensor, d.h. Mindestzeit zwischen zwei aufgezeichneten Werten. Neu empfangene Werte werden bis zum Ablauf der Ruhezeit ignoriert. Der numerische Wert wird über "value" angegeben, die Einheit über "unit". Folgende Einheiten sind erlaubt: "ms", "s", "min", "h", "d".
Standardwert: default_rest_period