string item für die Abfrage von MQTT Status Meldungen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
haegar33
Beiträge: 7
Registriert: 21. Okt 2018 17:43

string item für die Abfrage von MQTT Status Meldungen

Beitrag von haegar33 »

Hallo!
Ich habe eine allgemeine Frage wie OpenHAB mit items umgeht die sowohl gesendete als auch empfangene MQTT Kommandos in ihrem Binding definiert haben. Dazu gibt es hier und anderswo verschiedene Beispiele (meistens mit switch items) zu verschiedenen Geräten.

Ich möchte einfach aus meinem MQTT Device (eine Sonoff RF Bridge) verschiedene Status Meldungen in String Items speichern und zwar explizit wenn ich das will (oder ein item wert noch NULL ist) und nicht warten auf irgendwelche Tele Nachrichten die irgendwann eintrudeln.

Ich definiere ein String item, hier als Beispiel die Abfrage der aktuellen IP Adresse:

Code: Alles auswählen

String Sonoff_IP "Status on current IP [%s]"
    { mqtt=">[NAS_broker:cmnd/sonoff/status:command:*:5],
            <[NAS_broker:stat/sonoff/STATUS5:state:JSONPATH($.StatusNET.IPAddress)]" }
            
Leider wird die ausgehende MQTT Nachricht "cmnd/sonoff/status 5" niemals gesendet! :? Wie könnte ich das triggern? Der eingehende MQTT Befehl wird korrekt gelesen wenn ich mit einem anderen MQTT client das Status 5 Kommando sende.

Don Stefano
Beiträge: 83
Registriert: 24. Mär 2018 23:02
Answers: 1

Re: string item für die Abfrage von MQTT Status Meldungen

Beitrag von Don Stefano »

Das ist wahrscheinlich am besten mit einer Rule, die auf ein Schalter-Item reagiert umzusetzen. Dazu noch Die MQTT Action, mit der kannst du die Anfrage, den Status 5 zu senden absetzen.

Mobil gesendet


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

Re: string item für die Abfrage von MQTT Status Meldungen

Beitrag von udo1toni »

Die Frage, die ich mir stelle, ist: Wie versuchst Du die das Kommando zu triggern?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

haegar33
Beiträge: 7
Registriert: 21. Okt 2018 17:43

Re: string item für die Abfrage von MQTT Status Meldungen

Beitrag von haegar33 »

udo1toni hat geschrieben: 25. Okt 2018 23:27 Die Frage, die ich mir stelle, ist: Wie versuchst Du die das Kommando zu triggern?
Das Beispiel oben mit einem Sende- und Empfangs Befehl habe ich auf mehreren Forums und Infoseiten gesehen. Ich bin mir aber nicht sicher ob es mit einem string item überhaupt funktionieren kann...? Die offizielle MQTT Doku sagt nichts dazu. Allerdings ist für den sendenden Befehl ja das :state: Feld definiert. Irgendein State (welcher??) soll den Befehl dann triggern...

Die Option einen switch zu definieren habe ich auch schon probiert. Allerdings muss man dann Statusabfragen manuell durchführen... :roll:

Eine rule zu definieren könnte gehen. Nur welchen Trigger? Viele Statusfelder haben am Anfang den Wert NULL. Ich habe aber keinen rule trigger:

Code: Alles auswählen

wenn item status=NULL dann....
gefunden. Welchen Status hat eigentlich ein String item??

Don Stefano
Beiträge: 83
Registriert: 24. Mär 2018 23:02
Answers: 1

Re: string item für die Abfrage von MQTT Status Meldungen

Beitrag von Don Stefano »

haegar33 hat geschrieben: 26. Okt 2018 18:06 Das Beispiel oben mit einem Sende- und Empfangs Befehl habe ich auf mehreren Forums und Infoseiten gesehen. Ich bin mir aber nicht sicher ob es mit einem string item überhaupt funktionieren kann...? Die offizielle MQTT Doku sagt nichts dazu. Allerdings ist für den sendenden Befehl ja das :state: Feld definiert. Irgendein State (welcher??) soll den Befehl dann triggern...
Ja, welcher denn? Du kannst bei dem String Item nur etwas ausgeben. Ich habe noch nicht damit ausprobiert etwas zu senden.
haegar33 hat geschrieben: 26. Okt 2018 18:06Die Option einen switch zu definieren habe ich auch schon probiert. Allerdings muss man dann Statusabfragen manuell durchführen... :roll:
Ich dachte, das wäre es, was du willst? Jetzt habe ich mir extra die Mühe gemacht, das nachzustellen und wollte dir die Lösung mit dem separaten switch item hier präsentieren. Naja, irgendwie will mein mosquitto nicht mit dem Windows PC sprechen. :cry:
haegar33 hat geschrieben: 26. Okt 2018 18:06Eine rule zu definieren könnte gehen. Nur welchen Trigger? Viele Statusfelder haben am Anfang den Wert NULL. Ich habe aber keinen rule trigger:

Code: Alles auswählen

wenn item status=NULL dann....
gefunden.
Wenn du möchtest, dass sich das Item "von alleine" aktualisierst, könntest du es zyklisch per cron rule antriggern oder es beim systemstart los laufen lassen (so oft ändert sich die IP auch nicht).

RfBridge.rules

Code: Alles auswählen

rule "IP-Command"
when
    System started
        or  
    Time cron "0 0 0 1/1 * ? *"  //00:00
 then
     logInfo("RfBridge", "IP abfragen")
     publish("NAS_broker", "cmnd/sonoff/status", "5")
 end
Um den MQTT aus der rule mit publish anzusprechen, musst du die MQTT action über die Paper UI -> Add ons -> ACTIONS nachinstallieren.

haegar33
Beiträge: 7
Registriert: 21. Okt 2018 17:43

Re: string item für die Abfrage von MQTT Status Meldungen

Beitrag von haegar33 »

Don Stefano hat geschrieben: 26. Okt 2018 21:25 Ich dachte, das wäre es, was du willst? Jetzt habe ich mir extra die Mühe gemacht, das nachzustellen und wollte dir die Lösung mit dem separaten switch item hier präsentieren. Naja, irgendwie will mein mosquitto nicht mit dem Windows PC sprechen. :cry:
Danke für die Mühe, irgendwas geht immer nicht ;) Vermutlich kann man einfach für String Items keine ausgehenden MQTT Kommandos definieren auch wenn die Syntax in Ordnung ist...

logInfo("RfBridge", "IP abfragen")
publish("NAS_broker", "cmnd/sonoff/status", "5")
end

Um den MQTT aus der rule mit publish anzusprechen, musst du die MQTT action über die Paper UI -> Add ons -> ACTIONS nachinstallieren.
Das mit den Action Addon ist eine gute Idee. Dann muss ich keinen Extra String Item anlegen nur um den Statusbefehl zu senden.

Danke, Haegar

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

Re: string item für die Abfrage von MQTT Status Meldungen

Beitrag von udo1toni »

haegar33 hat geschrieben: 27. Okt 2018 11:25 Danke für die Mühe, irgendwas geht immer nicht ;) Vermutlich kann man einfach für String Items keine ausgehenden MQTT Kommandos definieren auch wenn die Syntax in Ordnung ist...
Nein, selbstverständlich kann man auch String Items zum Senden bewegen. Deshalb meine Frage :)
Aber Du musst zumindest irgendwas vom String Item wegschicken. Du kannst das z.B. mit einer Rule machen:

Code: Alles auswählen

rule test
when
    Time cron "0 0/5 * * * ?"
then
    Sonoff_IP.sendCommand("0")
end
Die Rule triggert alle 5 Minuten und sendet dann den String "0" in Richtung MQTT. Durch die Item-Definition wird MQTT daraus dann ein command auf das Topic cmnd/sonoff/status 5 machen (der Stern reagiert auf beliebige Strings, 5 wird gesendet)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten