Temperatursensoren einbinden

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

FrankW5300
Beiträge: 16
Registriert: 9. Mai 2023 10:07

Temperatursensoren einbinden

Beitrag 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
Openhab 4.1.1, InfluxDB v2.71, Grafana v10.0.1

Benutzeravatar
udo1toni
Beiträge: 13951
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Temperatursensoren einbinden

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

FrankW5300
Beiträge: 16
Registriert: 9. Mai 2023 10:07

Re: Temperatursensoren einbinden

Beitrag 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
Openhab 4.1.1, InfluxDB v2.71, Grafana v10.0.1

Harka
Beiträge: 303
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: Temperatursensoren einbinden

Beitrag 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ß

Benutzeravatar
udo1toni
Beiträge: 13951
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Temperatursensoren einbinden

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

FrankW5300
Beiträge: 16
Registriert: 9. Mai 2023 10:07

Re: Temperatursensoren einbinden

Beitrag 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).
Openhab 4.1.1, InfluxDB v2.71, Grafana v10.0.1

Benutzeravatar
udo1toni
Beiträge: 13951
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Temperatursensoren einbinden

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

FrankW5300
Beiträge: 16
Registriert: 9. Mai 2023 10:07

Re: Temperatursensoren einbinden

Beitrag 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).
Openhab 4.1.1, InfluxDB v2.71, Grafana v10.0.1

FrankW5300
Beiträge: 16
Registriert: 9. Mai 2023 10:07

Re: Temperatursensoren einbinden

Beitrag 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?
Openhab 4.1.1, InfluxDB v2.71, Grafana v10.0.1

Benutzeravatar
udo1toni
Beiträge: 13951
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Temperatursensoren einbinden

Beitrag 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. :)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten