Sensorlogger
Tinkerforge-Einstellungen
Verbindung zum Brick Daemon
Zunächst muss in einer allgemeinen Sektion die Verbindung zum Brick Daemon konfiguriert werden.
"tinkerforge": { "host": "localhost", "port": 4223, "max_bricklet_read_failures": 8, "max_brickd_restart_attempts": 3, "brickd_restart_command": "sudo /bin/systemctl restart brickd", "system_restart_command": "sudo /bin/systemctl --force reboot" }
"host": Hostname oder IP-Adresse des Tinkerforge Brick Daemons. Kann ausgelassen oder auf null gesetzt werden, um die Tinkerforge-Verbindung und -Sensoren zu deaktivieren.
Standardwert: null
"port": Port auf dem Host für die Verbindung zum Brick Daemon.
"max_bricklet_read_failures": Mit diesem Parameter kann für Bricklets, die in bestimmten Zeitabständen ausgelesen werden sollen, ein erstes Limit für die maximale Anzahl aufeinanderfolgender Auslesefehler festgelegt werden. Die Überschreitung dieses Limits führt zunächst zu einem Eintrag in der Fehler-Logdatei. Falls definiert, wird das unter brickd_restart_command angegebene Kommando ausgeführt.
Standardwert: 7
"max_brickd_restart_attempts": Maximale Anzahl der durchzuführenden Versuche, den Brick Daemon neu zu starten, um Auslesefehler zu beheben. Die Überschreitung dieses Limits führt zunächst zu einem Eintrag in der Fehler-Logdatei. Falls definiert, wird das unter system_restart_command angegebene Kommando ausgeführt.
Standardwert: 3
"brickd_restart_command": Kommando, das ausgeführt wird, wenn die maximale Anzahl an aufeinanderfolgenden Auslesefehlern eines Bricklets überschritten wird. Hier ist vorgesehen, den Brick Daemon über die Kommandozeile neu zu starten. Unter manchen Bedingungen hilft das schon. Bitte beachten: wenn ein Kommando per sudo ausgeführt werden soll, muss das sudoers-File so konfiguriert sein, dass der Benutzer, unter dem der Sensorlogger läuft, dieses Kommando ohne die Eingabe eines Passwortes ausführen darf.
Standardwert: null
"system_restart_command": Kommando, das ausgeführt wird, wenn die maximale Anzahl an aufeinanderfolgenden Versuchen, den Brick Daemon neu zu starten, überschritten wird. Hier ist vorgesehen, das komplette System über die Kommandozeile neu zu starten. Bitte beachten: wenn ein Kommando per sudo ausgeführt werden soll, muss das sudoers-File so konfiguriert sein, dass der Benutzer, unter dem der Sensorlogger läuft, dieses Kommando ohne die Eingabe eines Passwortes ausführen darf.
Standardwert: null
Sollen keine Kommandos aufgrund von Fehlauslesungen ausgeführt werden, kann jedes der beiden Kommandos entweder nicht definiert oder auf null gesetzt werden.
"brickd_restart_command": null, "system_restart_command": null
Tinkerforge-Sensoren
Sensoren, die in Zeitintervallen abgefragt werden sollen
"sensors": [ ... { "sensor_id": "Wetterstation/Temperatur", "tinkerforge_uid": "z3L", "factor": 1, "offset": -4.5, "channel": 0, "mqtt_publish": "Haus/Wetterstation/Temperatur/aktuell", "homematic_publish": "12345", "counter": false, "trigger": "periodic", "rest_period": {"value": 60, "unit": "s"}, "retry_time": {"value": 30, "unit": "s"} }, ... ]
"sensor_id": Allgemeine, eindeutige ID für den Sensor, um später bei der Definition der Logbücher hierauf Bezug nehmen zu können.
"tinkerforge_uid": UID des Tinkerforge-Bricklets, wie sie z.B. im Brick Viewer angezeigt wird.
"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
"channel": Kanal, der ausgelesen werden soll. Nur relevant für Bricklets, die mehrere Messgrößen unterstützen. Siehe: Unterstützte Bricklets & Kanäle weiter unten auf dieser Seite.
Standardwert: 0
"io_port": Falls ein IO-16-Bricklet verwendet wird, gibt dieser Parameter den Port "a" oder "b" an.
Standardwert: "a"
"mqtt_publish": Topic, unter dem der ausgelesene und ggf. korrigierte Wert per MQTT verteilt werden soll.
Standardwert: null
"homematic_publish": ISE-ID der Systemvariable, deren Wert auf den ausgelesenen und ggf. korrigierten Sensorwert gesetzt werden soll.
Standardwert: null
"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 dann immer nur den letzten Wert des Sensors, und zählt die durchgeführten Messungen. Im Logbuch können später nur die Anzahl der Messungen und Frequenzen ausgewertet werden, keine anderen statistischen Operationen (z.B. Mittelwert). Falls Messungen sehr häufig durchgeführt werden, kann es Arbeitsspeicher sparen, nicht alle Messwerte des aktuellen Messzyklus aufzuheben.
Messereignisse 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
"trigger": Legt fest, wodurch eine Messung ausgelöst wird. Im Falle von Sensoren, die in bestimmten Zeitintervallen regelmäßig abgefragt werden sollen, muss hier "periodic" eingetragen werden. Für Sensoren, die selbstständig Ereignisse auslösen, siehe nächster Abschnitt.
Standardwert: "periodic"
"rest_period": Ruhezeit für den Sensor. Nach der Ruhezeit wird der Sensor das nächste Mal abgefragt. Der numerische Wert wird über "value" angegeben, die Einheit über "unit". Folgende Einheiten sind erlaubt: "ms", "s", "min", "h", "d".
Standardwert: default_rest_period
"retry_time": Wiederanlaufzeit für den Sensor. Wenn der Sensor nicht ausgelesen werden kann, wird der nächste Ausleseversuch nach der Wiederanlaufzeit unternommen (sofern sie kürzer ist als die Ruhezeit des Sensors). Der numerische Wert wird über "value" angegeben, die Einheit über "unit". Folgende Einheiten sind erlaubt: "ms", "s", "min", "h", "d".
Standardwert: default_retry_time
Sensoren, die selbstständig Ereignisse auslösen
Hierfür werden momentan nur die Tinkerforge IO-Bricklets unterstützt.
"sensors": [ ... { "sensor_id": "Wetterstation/Wind", "tinkerforge_uid": "9Ws", "channel": 0, "io_port": "a", "factor": 0.5, "offset": 0, "mqtt_publish": "Haus/Wetterstation/Wind/Letzter-Impuls", "counter": true, "trigger": "low", "rest_period": {"value": 7, "unit": "ms"}, "io_debounce": {"value": 7, "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.
"tinkerforge_uid": UID des Tinkerforge-Bricklets, wie sie z.B. im Brick Viewer angezeigt wird.
"channel": Kanal des IO-Bricklets, für den ein Interrupt ausgelöst werden soll. Bitte beachten: die Zählung der Kanäle beginnt bei 0.
Standardwert: 0
"io_port": Falls ein IO-16-Bricklet verwendet wird, gibt dieser Parameter den Port "a" oder "b" an.
Standardwert: "a"
"factor": Korrekturfaktor, siehe nächster Punkt.
Standardwert: 1
"offset": Korrekturoffset. Der resultierende Messwert für den Sensor wird anhand der Formel factor·(Messwert+offset) ermittelt. Bei Digitalsensoren wie den IO-Bricklets ist der Messwert zunächst immer 0 (low) oder 1 (high) und kann mit dem Faktor und Offset gewichtet und verschoben werden.
Standardwert: 0
"mqtt_publish": Topic, unter dem der aktuelle Sensorwert bei Auslösung des Ereignisses an den MQTT-Broker übermittelt werden soll.
Standardwert: null
"homematic_publish": ISE-ID der Systemvariable, deren Wert auf den aktuellen Sensorwert bei Auslösung gesetzt werden soll.
Standardwert: null
"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
"trigger": Legt fest, wodurch eine Messung ausgelöst wird. Momentan werden nur Tinkerforge IO-Bricklets unterstützt. Entsprechend können hier die folgenden Schlüsselworte gewählt werden:
- "low" — Ereignis wird ausgelöst, wenn der Pegel auf den Zustand low sinkt.
- "high" — Ereignis wird ausgelöst, wenn der Pegel auf den Zustand high steigt.
- "high_or_low" — Ereignis wird ausgelöst, wenn der Pegel seinen Zustand von low auf high wechselt und umgekehrt.
- "periodic" — In regelmäßigen Zeitabständen ausgelesener Sensor. Siehe vorheriger Abschnitt.
Standardwert: "periodic" (siehe vorheriger Abschnitt)
"rest_period": Ruhezeit für den Sensor. Im Falle eines Sensors, der durch Ereignisse ausgelöst wird, ist dies die Mindestzeit, die zwischen zwei beim Sensorlogger eintreffenden Ereignismeldungen vergangen sein soll. Ist dies nicht der Fall, werden die auf ein Ereignis folgenden Ereignisse nicht beachtet, bis die Ruhezeit abgelaufen ist.
Bei sehr häufig auslösenden Sensoren fungiert dieser Parameter als Entprellzeit auf Seiten des Sensorloggers, während für den Brick Daemon im nächsten Punkt noch eine eigene Entprellzeit definiert werden sollte. Der Parameter "rest_period" ist also wichtig, wenn man vermeiden möchte, dass Latenzen zwischen dem Brick Daemon und dem Sensorlogger zu einer zeitlichen Häufung von Impulsereignissen führen. Dies kann wiederum Auswirkungen auf die Frequenzermittlung für die Logbücher haben, denn die Eintreffrate von Impulsen beim Sensorlogger kann durch Latenzen von der eigentlich ausgelösten Rate des Sensors abweichen.
Der numerische Wert wird über "value" angegeben, die Einheit über "unit". Folgende Einheiten sind erlaubt: "ms", "s", "min", "h", "d".
Standardwert: default_rest_period
"io_debounce": Entprellzeit, um ein Prellen am Digitaleingang des IO-Bricklets zu unterdrücken. Der Wert wird an den Brick Daemon im Rahmen der Callback-Registrierung übermittelt, um dort berücksichtigt zu werden. Der numerische Wert wird über "value" angegeben, die Einheit über "unit". Folgende Einheiten sind erlaubt: "ms", "s", "min", "h", "d".
Standardwert: 7 ms
Unterstützte Bricklets & Kanäle
Das Programm nutzt aktuell die Tinkerforge C/C++-Bindings in Version 2.1.33 (2022-05-11). Die folgenden Tinkerforge-Bricklets werden momentan unterstützt. Außerdem sind ggf. die Kanäle aufgelistet, falls verschiedene Messungen mit einem Bricklet durchgeführt werden können.
Bricklet und Versionen | Kanäle |
---|---|
Air Quality |
0: Innenraumluftqualität (IAQ-Index) 1: Temperatur 2: Relative Feuchte 3: Luftdruck |
Ambient Light ver. 1, 2, 3 | |
Analog In ver. 1, 2, 3 | |
Barometer ver. 1, 2 | |
CO2 | |
CO2 2.0 |
0: CO2-Konzentration 1: Temperatur 2: Luftfeuchte |
Current12 | |
Current25 | |
Distance IR ver. 1, 2 | |
Distance US ver. 1, 2 | |
Dust | |
Energy Monitor |
0: Spannung 1: Strom 2: Energie 3: Wirkleistung 4: Scheinleistung 5: Blindleistung 6: Leistungsfaktor 7: Frequenz |
GPS ver. 1 |
0: geogr. Breite (Latitude) 1: geogr. Länge (Longitude) 6: PDOP 7: HDOP 8: VDOP 9: EPE |
GPS ver. 2, 3 |
0: geogr. Breite (Latitude) 1: geogr. Länge (Longitude) 2: Höhe (m) 3: Geoidale Separation (m) 4: Geschwindigkeit (km/h) 5: Richtung (°) 6: PDOP 7: HDOP 8: VDOP |
Hall Effect ver. 2 | |
Humidity ver. 1, 2 | |
Industrial Digital In 4 ver. 1, 2 | 0 bis 3 |
Industrial Dual 0-20mA ver. 1, 2 | 0 bis 1 |
Industrial Dual Analog In ver. 1, 2 | 0 bis 1 |
IO4 ver. 1, 2 | 0 bis 3, auch als Impulszähler |
IO16 ver. 1, 2 | 0 bis 15, auch als Impulszähler |
Laser Range Finder ver. 1, 2 | |
Line | |
Load Cell ver. 1, 2 | |
Moisture | |
Particulate Matter |
1 oder 10: PM1.0 2 oder 25: PM2.5 3 oder 100: PM10 |
PTC Temperature ver. 1, 2 | |
Sound Intensity | |
Sound Pressure Level | |
Temperature ver. 1, 2 | |
Temperature IR ver. 1, 2 |
0: Umgebung 1: Objekt |
UV Light ver. 1, 2 | |
Voltage | |
Voltage/Current ver. 1, 2 |
0: Spannung 1: Strom |