Seite 1 von 2
Temperatursensoren einbinden
Verfasst: 9. Mai 2023 10:47
von FrankW5300
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
Re: Temperatursensoren einbinden
Verfasst: 9. Mai 2023 14:37
von udo1toni
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.
Re: Temperatursensoren einbinden
Verfasst: 9. Mai 2023 15:31
von FrankW5300
Hallo udo1toni,
udo1toni hat geschrieben: ↑9. Mai 2023 14:37
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.
Das sehe ich nicht als Problem, da wie schon geschrieben Openhab später auf einen mini-PC laufen soll (ohne VM).
udo1toni hat geschrieben: ↑9. Mai 2023 14:37
...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.
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
Re: Temperatursensoren einbinden
Verfasst: 9. Mai 2023 19:57
von Harka
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ß
Re: Temperatursensoren einbinden
Verfasst: 9. Mai 2023 23:03
von udo1toni
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.
Re: Temperatursensoren einbinden
Verfasst: 10. Mai 2023 08:51
von FrankW5300
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).
Re: Temperatursensoren einbinden
Verfasst: 10. Mai 2023 22:38
von udo1toni
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:
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
}
}
}
Zeilenumbrüche und Leerzeichen als Einrückung sind optional, genauso kann es so ausgegeben werden:
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}}}
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.
Re: Temperatursensoren einbinden
Verfasst: 11. Mai 2023 15:20
von FrankW5300
Ich werde mal versuchen den Webserver zum laufen zu bekommen. Wenn ich das richtig gelesen habe sollte der mir dann mit den Aufruf von:
Code: Alles auswählen
curl -s -X GET http://x.x.x.x:y/data | python -m json.tool
eine JSON-Datei erzeugen und diese Datei muss ich dann in Openhab einbinden (wie auch immer).
Re: Temperatursensoren einbinden
Verfasst: 18. Jul 2023 11:39
von FrankW5300
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?
Re: Temperatursensoren einbinden
Verfasst: 18. Jul 2023 18:45
von udo1toni
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.
