Temperatursensoren einbinden
-
- Beiträge: 16
- Registriert: 9. Mai 2023 10:07
Temperatursensoren einbinden
Hallo,
ich bin ganz neu in der Openhab Welt und habe zur Zeit Openhab zum Probieren auf einer virtuellen Debianmaschine laufen. Das soll dann später auf einen mini PC umziehen (ursprünglich sollte das ein Raspi werden). Bisher habe ich meine Heizung einbinden können und würde gerne auch noch Raumtemperaturwerte mit erfassen. Diese erfasse ich zur Zeit Offline mit Roomlogg Pro. Da das System sehr zuverlässig und relativ genaue Werte anzeigt würde ich gerne dabei bleiben. Im Netz (https://github.com/juergen-rocks/raumklima bzw. https://juergen.rocks/blog/articles/elv ... linux.html) habe ich was gefunden womit man den Roomlogg über USB auslesen kann (nur für Raspi), ob das auch über Debian geht weiß ich nicht. Gibt es eine Möglichkeit die Scripte so anzupassen, dass man das auch in openhab einbinden kann?
Grüße Frank
ich bin ganz neu in der Openhab Welt und habe zur Zeit Openhab zum Probieren auf einer virtuellen Debianmaschine laufen. Das soll dann später auf einen mini PC umziehen (ursprünglich sollte das ein Raspi werden). Bisher habe ich meine Heizung einbinden können und würde gerne auch noch Raumtemperaturwerte mit erfassen. Diese erfasse ich zur Zeit Offline mit Roomlogg Pro. Da das System sehr zuverlässig und relativ genaue Werte anzeigt würde ich gerne dabei bleiben. Im Netz (https://github.com/juergen-rocks/raumklima bzw. https://juergen.rocks/blog/articles/elv ... linux.html) habe ich was gefunden womit man den Roomlogg über USB auslesen kann (nur für Raspi), ob das auch über Debian geht weiß ich nicht. Gibt es eine Möglichkeit die Scripte so anzupassen, dass man das auch in openhab einbinden kann?
Grüße Frank
Openhab 4.1.1, InfluxDB v2.71, Grafana v10.0.1
- udo1toni
- Beiträge: 13951
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Temperatursensoren einbinden
Herzlich willkommen im openHAB Forum!
Grundsätzlich: der Raspberry Pi läuft meist unter Raspberry Pi OS, welches von Debian abstammt (die Versionsbezeichnung ist inzwischen auch die gleiche, also aktuell z.B. bullseye).
Es geht hier ja auch "nur" um serielle Kommunikation.
Schade, dass (bisher) keine vernünftige Schnittstelle wie z.B. mqtt integriert ist - das wäre eigentlich naheliegend, eine Redis Datenbank oder Webschnittstelle ist nett, grenzt das Ganze aber ziemlich ein, während ein Publizieren der ermittelten Werte als JSON Objekt wirklich einfach zu bewerkstelligen wäre.
Leider habe ich keine solche Wetterstation...
Die Anbindung in einer VM könnte das größere Hindernis sein - je nach verwendetem Hypervisor - schließlich muss eine USB-Schnittstelle in die VM hereingereicht werden.
Grundsätzlich: der Raspberry Pi läuft meist unter Raspberry Pi OS, welches von Debian abstammt (die Versionsbezeichnung ist inzwischen auch die gleiche, also aktuell z.B. bullseye).
Es geht hier ja auch "nur" um serielle Kommunikation.
Schade, dass (bisher) keine vernünftige Schnittstelle wie z.B. mqtt integriert ist - das wäre eigentlich naheliegend, eine Redis Datenbank oder Webschnittstelle ist nett, grenzt das Ganze aber ziemlich ein, während ein Publizieren der ermittelten Werte als JSON Objekt wirklich einfach zu bewerkstelligen wäre.
Leider habe ich keine solche Wetterstation...
Die Anbindung in einer VM könnte das größere Hindernis sein - je nach verwendetem Hypervisor - schließlich muss eine USB-Schnittstelle in die VM hereingereicht werden.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 16
- Registriert: 9. Mai 2023 10:07
Re: Temperatursensoren einbinden
Hallo udo1toni,
Wenn ich das Script richtig interpretiere wird dabei die USB Schnittstelle geöffnet, eine Anfrage gestellt, danach 64 byte eingelesen und das ganze noch etwas formatiert. Zum Schluss wird das dann irgendwie in die Redisdatenbank verschoben.
Wenn man so ein JSON Objekt (wie müsste das eigentlich aussehen) erzeugen könnte. Wie bekäme man das dann in Openhab?
Grüße
Frank
Das sehe ich nicht als Problem, da wie schon geschrieben Openhab später auf einen mini-PC laufen soll (ohne VM).
Laut der Webseite werden die Daten über ein Pyhton-Script in eine Redis-Datenbank geschrieben. Die Frage ist halt, ob man das Script so modifizieren kann das es direkt von Openhab eingelesen wird oder das es so ein JSON-Objekt erzeugt? Leider ist mein wissen in der Programmierung nur rudimentär (ein bisschen C, Pascal, Arduino). Zumindest sind die Scripte nicht sehr umfangreich. Da lässt sich doch bestimmt was machen.
Wenn ich das Script richtig interpretiere wird dabei die USB Schnittstelle geöffnet, eine Anfrage gestellt, danach 64 byte eingelesen und das ganze noch etwas formatiert. Zum Schluss wird das dann irgendwie in die Redisdatenbank verschoben.
Wenn man so ein JSON Objekt (wie müsste das eigentlich aussehen) erzeugen könnte. Wie bekäme man das dann in Openhab?
Grüße
Frank
Openhab 4.1.1, InfluxDB v2.71, Grafana v10.0.1
-
- Beiträge: 303
- Registriert: 30. Apr 2021 13:13
Re: Temperatursensoren einbinden
Moin,
schau Dir mal die mqtt-Erweiterung -> https://github.com/juergen-rocks/raumklima/issues/64 an oder alternativ das Web-Interface mit JSON-Schnittstelle https://juergen.rocks/blog/articles/elv ... rface.html an. Ist imho ein Versuch wert.
Gruß
schau Dir mal die mqtt-Erweiterung -> https://github.com/juergen-rocks/raumklima/issues/64 an oder alternativ das Web-Interface mit JSON-Schnittstelle https://juergen.rocks/blog/articles/elv ... rface.html an. Ist imho ein Versuch wert.
Gruß
- udo1toni
- Beiträge: 13951
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Temperatursensoren einbinden
Ach, guck, mal, da ist schon jemand vor mir auf die Idee gekommen...
mqtt in Python ist eigentlich wirklich simpel, Modul laden, initialisieren, Daten schreiben.
Du kannst selbstverständlich auch (wie im verlinkten Issue) einzelne Topics pro Sensor anlegen, die JSON Variante ist im Zweifel schlanker, weil man lediglich ein JSON Objekt mit entsprechenden Knoten erzeugen muss. Dabei werden ohnehin bei jedem Durchlauf alle Daten gelesen, stehen also auch schon bereit.
mqtt in Python ist eigentlich wirklich simpel, Modul laden, initialisieren, Daten schreiben.
Du kannst selbstverständlich auch (wie im verlinkten Issue) einzelne Topics pro Sensor anlegen, die JSON Variante ist im Zweifel schlanker, weil man lediglich ein JSON Objekt mit entsprechenden Knoten erzeugen muss. Dabei werden ohnehin bei jedem Durchlauf alle Daten gelesen, stehen also auch schon bereit.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 16
- Registriert: 9. Mai 2023 10:07
Re: Temperatursensoren einbinden
Hallo
danke für die Informationen. Leider bin ich da noch etwas überfordert. Ich müsste bei der mqtt Variante (ich glaube ich habe irgendwas mit mosqito bei mir Installiert) dieses Script in Openhab einbinden. Wie und wo würde ich das dann einbinden?
Bei der Webserver Variante blicke ich gar nicht durch, wenn auf den Rechner Openhab läuft kann dann parallel auch noch der webserver mit den Temperaturen laufen (wo kann ich da die IP/Port festlegen).
danke für die Informationen. Leider bin ich da noch etwas überfordert. Ich müsste bei der mqtt Variante (ich glaube ich habe irgendwas mit mosqito bei mir Installiert) dieses Script in Openhab einbinden. Wie und wo würde ich das dann einbinden?
Bei der Webserver Variante blicke ich gar nicht durch, wenn auf den Rechner Openhab läuft kann dann parallel auch noch der webserver mit den Temperaturen laufen (wo kann ich da die IP/Port festlegen).
Openhab 4.1.1, InfluxDB v2.71, Grafana v10.0.1
- udo1toni
- Beiträge: 13951
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Temperatursensoren einbinden
Der Punkt bei mqtt ist, dass die Kommunikation über mqtt läuft.
Der develop-Branch enthält tatsächlich schon mqtt Funktionalität. Leider wird überhaupt nicht erläutert, wie das in Betrieb zu nehmen ist.
Grundsätzlich sollte der rs500reader (wenn ich den mal so nennen darf) zyklisch die Werte auslesen und anschließend an mqtt senden - wie auch immer. Da die Daten eh immer alle zur Verfügung stehen, ist eine Lösung über ein JSON Objekt naheliegend, z.B. so:
Zeilenumbrüche und Leerzeichen als Einrückung sind optional, genauso kann es so ausgegeben werden:
Eine solche Datenstruktur zu erzeugen ist nicht weiter schwer und man benötigt nun nur ein einziges Topic, um alle Messwerte auf einen Schlag zu übergeben. Leere Datenknoten müssen nicht geschrieben werden (hier sind z.B. nur fünf Channel im JSON Objekt vorhanden)
In openHAB muss dann lediglich ein mqtt Thing angelegt werden, in dem für jeden Sensor ein Channel angelegt wird, in dem die Daten landen. Das macht das Ganze ja so einfach in der Handhabung, man muss in openHAB überhaupt keinen Aufwand treiben.
Das Datenformat ist aber nur eine Mögliche Variante, wie man so etwas aufbaut. Letztlich ist es Sache des Programmierers, wie so etwas umgesetzt wird.
Der develop-Branch enthält tatsächlich schon mqtt Funktionalität. Leider wird überhaupt nicht erläutert, wie das in Betrieb zu nehmen ist.
Grundsätzlich sollte der rs500reader (wenn ich den mal so nennen darf) zyklisch die Werte auslesen und anschließend an mqtt senden - wie auch immer. Da die Daten eh immer alle zur Verfügung stehen, ist eine Lösung über ein JSON Objekt naheliegend, z.B. so:
Code: Alles auswählen
{
"Time": "2023-05-10T20:59:53",
"Data": {
"Channel1": {
"Temperature": -25,
"Humidity": 12
},
"Channel2": {
"Temperature": 12,
"Humidity": 28
},
"Channel3": {
"Temperature": 30,
"Humidity": 45
},
"Channel4": {
"Temperature": 107,
"Humidity": 35
},
"Channel5": {
"Temperature": 123,
"Humidity": 55
}
}
}
Code: Alles auswählen
{"Time":"2023-05-10T20:59:53","Data":{"Channel1":{"Temperature":-25,"Humidity":12},"Channel2":{"Temperature":12,"Humidity":28},"Channel3":{"Temperature":30,"Humidity":45},"Channel4":{"Temperature":107,"Humidity":35},"Channel5":{"Temperature":123,"Humidity":55}}}
In openHAB muss dann lediglich ein mqtt Thing angelegt werden, in dem für jeden Sensor ein Channel angelegt wird, in dem die Daten landen. Das macht das Ganze ja so einfach in der Handhabung, man muss in openHAB überhaupt keinen Aufwand treiben.
Das Datenformat ist aber nur eine Mögliche Variante, wie man so etwas aufbaut. Letztlich ist es Sache des Programmierers, wie so etwas umgesetzt wird.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 16
- Registriert: 9. Mai 2023 10:07
Re: Temperatursensoren einbinden
Ich werde mal versuchen den Webserver zum laufen zu bekommen. Wenn ich das richtig gelesen habe sollte der mir dann mit den Aufruf von:
eine JSON-Datei erzeugen und diese Datei muss ich dann in Openhab einbinden (wie auch immer).
Code: Alles auswählen
curl -s -X GET http://x.x.x.x:y/data | python -m json.tool
Openhab 4.1.1, InfluxDB v2.71, Grafana v10.0.1
-
- Beiträge: 16
- Registriert: 9. Mai 2023 10:07
Re: Temperatursensoren einbinden
So, es geht in kleinen Schritten weiter. Ich kann die Sensoren über das Pythonscript auslesen. Ich würde das jetzt so anpassen, dass mir das Script wie vorgeschlagen eine json Datei erstellt. Mittels der Exec-Binding würde ich das Script dann regelmäßig ausführen. Die erstellte Datei liegt dann in einen gewünschten Verzeichnis und kann dann eingelesen werden. Wie würde es hier weitergehen?
Oder könnte man sowas (die json Daten) als Rückgabewert dann weiter verarbeiten?
Oder könnte man sowas (die json Daten) als Rückgabewert dann weiter verarbeiten?
Openhab 4.1.1, InfluxDB v2.71, Grafana v10.0.1
- udo1toni
- Beiträge: 13951
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Temperatursensoren einbinden
Also, gerade das exec Binding ist schon ziemlich speziell, will sagen: da geht manches nicht, was auf anderem Wege sehr leicht realisierbar ist.
Ich habe noch nie versucht, json per exec einzulesen, grundsätzlich sollte das schon funktionieren, aber jedes josn Objekt enthält Anführungszeichen, gewöhnlich die doppelten, ", teilweise aber auch einzelne, also ', und Strings mit Anführungszeichen sind oftmals ein wenig knifflig.
Ich habe noch nie versucht, json per exec einzulesen, grundsätzlich sollte das schon funktionieren, aber jedes josn Objekt enthält Anführungszeichen, gewöhnlich die doppelten, ", teilweise aber auch einzelne, also ', und Strings mit Anführungszeichen sind oftmals ein wenig knifflig.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet