Seite 1 von 1

Solltemperatur lesen/schreiben über Exec Binding

Verfasst: 4. Mär 2021 19:58
von hannesk1973
Hallo zusammen,
ich bin jetzt schon einige Zeit am basteln und eigentlich schon weit gekommen, mein Projekt ist dass ich zusätzlich zu einigen anderen Dingen in meinem Home meine Heizung ansteuern kann.
Die Heizung ist über Netzwerk erreichbar und über ein proprietäres Interface (kein Binding) kann ich Werte lesen und schreiben.
Da ich mich über ein eigenes Binding noch nicht drübergetraut habe schreibe ich über ein kleines Programm zyklisch die Werte auf Dateien in einem TempFs auf meinem Raspi.
Anzeigen dieser Werte über das Exec Binding ist soweit auch problemlos möglich.

Mein Ziel wäre aber jetzt die Solltemperatur für einen Heizkreis nicht nur lesen sondern auch schreiben zu können.
Damit bin ich aber bisher mit meinem Exec Binding noch gescheitert.

Cmd Line:
/home/openhabian/readwritecmd.sh RaumtemperaturSollEG %2$s

readwritecmd.sh
#!/bin/bash
prev=$(cat /home/openhabian/tmp/in/heizung_$1)
if [ $2 != $prev ]
then
echo $2 > /home/openhabian/tmp/out/heizung_$1
fi
echo $prev
Bekomme aber folgende Exception
An exception occurred while formatting the command line '/home/openhabian/readwritecmd.sh RaumtemperaturSollEG %2$s' with the current time 'Thu Mar 04 19:57:40 CET 2021' and input value 'null': Format specifier '%2$s'
Wie bekomme ich denn Initial einen Wert auf das Item drauf.

Gibt es Ideen wie ich das anders lösen könnte ?

Re: Solltemperatur lesen/schreiben über Exec Binding

Verfasst: 4. Mär 2021 20:34
von udo1toni
Das Item muss mit dem Input Channel von Exec gekoppelt sein. Dann setzt Du noch autorun auf true und wenn das Item sich ändert, wird der Befehl gesendet.

Allerdings ist das Ganze in meinen Augen relatives Gemurkse :)
Meine Empfehlung wäre, dass Du Dein Programm dahingehend änderst, dass es über mqtt kommuniziert. Du hast leider nicht geschrieben, in welcher Sprache Du programmiert hast, aber letztlich sollte es für die meisten Umgebungen Libraries geben, bei Python wäre das z.B. paho, das ist sehr komfortabel zu verwenden.
Ich habe bei mir verschiedene Systeme laufen, die ich mit mqtt kommunizieren lasse, z.B. einen RGB LED Stripe oder auch einen Rechner, auf dem zwei Dienste installiert sind, die nicht gleichzeitig laufen dürfen (es geht hier um zwei Web-Schnittstellen zu meiner Calibre Buchverwaltung), über mqtt kann ich zwischen beiden Servern hin- und her schalten oder auch beide Server beenden (wenn ich calibre selbst starten möchte).
Der Client läuft jeweils als Dienst auf dem Remote Rechner und reagiert zum Einen auf Steuerbefehle, zum Anderen sendet er selbst eine Bestätigung, dass der Befehl ausgeführt wurde.

Re: Solltemperatur lesen/schreiben über Exec Binding

Verfasst: 4. Mär 2021 21:18
von hannesk1973
Wahrscheinlich hast du recht das ist ein Gemurkse, aber auf der Heizung kann und will ich kein MQTT implementieren.
Die Heizung unterstützt lediglich ein RPC Protokoll für das ich eine Java Lib habe mit der ich eben die Werte lesen und schreiben kann.
Auf dem Openhab dann noch einen MQTT Client zu implementieren scheint mir aber auch nicht die eleganteste Lösung oder ?
Wahrscheinlich wäre die beste Möglichkeit ein Binding auf Basis dieser Lib zu implementieren.




Aja und Item ist natürlich auf den Eingabewert/Input gemappt nur ist Wert Initial "NULL" und der kann scheinbar nicht auf %2$f formatiert werden lt. Fehlermeldung.

Re: Solltemperatur lesen/schreiben über Exec Binding

Verfasst: 4. Mär 2021 22:24
von udo1toni
Na aber die Java Lib verwendest Du ja auch irgendwo in einem Programm... Dann kannst Du dieses Programm doch leicht um mqtt erweitern, für Java gibt es doch auch mqtt Libraries.

Re: Solltemperatur lesen/schreiben über Exec Binding

Verfasst: 5. Mär 2021 07:51
von hannesk1973
Ja läuft localhost auf meinem Raspi auf dem auch OpenHab läuft.
Aber ja mein nächster Versuch wird dann den MQTT Client localhost mit dem MQTT Broker zu verbinden, hoffe das funktioniert dann auch so.
Das Design mit Exec und Filesystem habe ich aus ein paar Beispielen mit DHT22 und darum so weitergemacht.

Re: Solltemperatur lesen/schreiben über Exec Binding

Verfasst: 5. Mär 2021 10:35
von udo1toni
hannesk1973 hat geschrieben: 5. Mär 2021 07:51 Ja läuft localhost auf meinem Raspi auf dem auch OpenHab läuft.
Aber ja mein nächster Versuch wird dann den MQTT Client localhost mit dem MQTT Broker zu verbinden, hoffe das funktioniert dann auch so.
Das Design mit Exec und Filesystem habe ich aus ein paar Beispielen mit DHT22 und darum so weitergemacht.
Ja, das ist überhaupt kein Problem. mosquitto läuft ja (wenn installiert) auch auf dem Raspberry parallel zu openHAB, da ist openHAB auch "nur" ein Client, der halt localhost zugreift.

Re: Solltemperatur lesen/schreiben über Exec Binding

Verfasst: 13. Mär 2021 19:43
von hannesk1973
Danke nochmal für die schnelle Hilfe, habe jetzt auf MQTT umgestellt und läuft toll.