Seite 1 von 3
Espeasy Variable per MQTT ändern
Verfasst: 27. Okt 2018 23:00
von olem_de
Hallo
Kann mir jemand sagen wo ich Infos finde,wie ich eine Variable (Dummy) im espeasy per mqtt vom openhab ändern kann. Bisher fand ich nur Anleitungen wie ich ein Relais schalten kann aber eben kein dummy der mit Tasksetvalue geändert werden müsste.
Vielen Dank
Ole
Re: Espeasy Variable per MQTT ändern
Verfasst: 30. Okt 2018 13:57
von olem_de
Ok hab nun eine Lösung gefunden/ausprobiert:
ich verwende ein MQTT import device und publishe vom Openhab den Wert auf den ESP. Dort wird dann eine interne Regel (Rules) bei Änderung des MQTT-Wertes die Variable automatisch mit TaskSetValue überschreiben. Läuft
Re: Espeasy Variable per MQTT ändern
Verfasst: 7. Jan 2019 19:08
von oh_esp01
Hallo olem_de,
ich stehe gerade vor derselben Frage - kannst du mir mal die Syntax vom publish-Kommando auf der OpenHAB-Seite zur Verfügung stellen?
VD
Re: Espeasy Variable per MQTT ändern
Verfasst: 7. Jan 2019 19:46
von udo1toni
Du koppelst das Topic mit einem Item und führst ein Item.sendCommand(Wert) aus. Wie MQTT grundsätzlich in openHAB konfiguriert wird, hängt von der verwendeten Version ab.
Re: Espeasy Variable per MQTT ändern
Verfasst: 7. Jan 2019 20:46
von oh_esp01
Ok - einen Schritt zurück auf natives mosquitto_pub (mqtt und openhab2 läuft generell, ich hadere - vermutlich - mit der payload in Richtung espeasy):
@esp ist ein Device entstanden:
Device -> MQTT-in
Name -> MQTTin
Values -> Value1 (bis Value4 - ich möchte Value1 mit einem Wert versehen)
Linux-BASH auf dem Host, auf dem der Broker läuft (hier eine Spielart die nicht funktoniert):
mosquitto_pub -h 127.0.0.1 -u <mein erprobter User> -P <mein erprobtes Passwort> -t Haus/NodeMCU/NodeMCU04/MQTTin/cmd -m Value1,2.0
Zum Topic: Statusmeldungen eines anderen Devices von NodeMCU04 sehen so aus (mosquitto_sub ... -t "#" -v | grep NodeMCU04):
(z.B. f. ein Generic Systeminfo-Device)
Haus/NodeMCU/NodeMCU04/RSSI/Uptime 10
D.h., ich bin mir mit dem Topic recht sicher - vor allem weil: ein Device vom Type Output - Neopixel (candle) spreche ich z.B. so an:
-t Haus/NodeMCU/NodeMCU04/candle/cmd -m "CANDLE:1:0x66CC00:100"
funktioniert bestens, aber mit dem MQTTin-Device komme ich leider nicht weiter.
WENN das läuft bekomme ich das auch in Openhab hineingebaut.
HTH
Re: Espeasy Variable per MQTT ändern
Verfasst: 9. Jan 2019 20:01
von oh_esp01
So, jetzt habe ich mal die Tomaten von den Augen genommen und weggelegt und die Systematik hinter MQTT Import verstanden.
Funktioniert nun...
Vielen Dank für den Hinweis udo1toni.
Re: Espeasy Variable per MQTT ändern
Verfasst: 20. Dez 2021 13:19
von HiG
Du koppelst das Topic mit einem Item und führst ein Item.sendCommand(Wert) aus.
Das hab ich versucht....klappt aber irgendwie nicht. Es kommt nix im Broker an.
Folgende Dinge habe ich definiert
Thing
Code: Alles auswählen
Thing topic DG_HZ "Office Heizung"(mqtt:broker:1cecc2fd) @ "MQTT" {
Channels:
Type number : MQ_DG_HZ_BATTERIE "Heizung Bad Batterie" [ stateTopic="zb2mqtt/hz_dg/batterie"]
Type number : MQ_DG_HZ_TEMP_IST "Heizung Bad Ist-Temp" [ stateTopic="zb2mqtt/hz_dg/temp_ist"]
Type number : MQ_DG_HZ_TEMP_SOLL "Heizung Bad Soll-Temp" [ stateTopic="zb2mqtt/hz_dg/temp_soll"]
Type number : MQ_DG_HZ_VENTIL "Heizung Bad Ventil" [ stateTopic="zb2mqtt/hz_dg/ventil"]
Type string : MQ_DG_HZ_MODUS "Heizung Bad Modus" [ stateTopic="zb2mqtt/hz_dg/mode"]
Type string : MQ_DG_HZ_FEHLER "Heizung Bad Fehler" [ stateTopic="zb2mqtt/hz_dg/error"]
Type number : MQ_DG_HZ_BATTERIE_STATE "Heizung Bad Batteriestatus" [ stateTopic="zb2mqtt/hz_dg/batterie_status"]
Type number : MQ_DG_HZ_SIGNAL "Heizung Bad Signalstärke" [ stateTopic="zb2mqtt/hz_dg/signal"]
Type switch : MQ_DG_HZ_FENSTER "Heizung Bad Fenster" [ stateTopic="zb2mqtt/hz_dg/window"]
}
Item1:
Code: Alles auswählen
Number DG_HZ_TEMP_IST_VAL "Ladung [%d%%]" { channel="mqtt:topic:1cecc2fd:DG_HZ:MQ_DG_HZ_TEMP_IST" }
Item2:
Code: Alles auswählen
Number DG_HZ_Temp_Ist "Ist-Temperatur [%.2f °C]" <temperature> (G_DG_Hz, G_Hz_Temp) {channel="homematic:HG-HM-CC-RT-DN:ccu:KEE0111167:4#ACTUAL_TEMPERATURE"}
Rule:
rule "Office Heizung Temp"
when
Item DG_HZ_Temp_Ist changed
then
DG_HZ_TEMP_IST_VAL.sendCommand(675)
logInfo("Heizung","Rule 2")
end
Der Broker läuft. Ich überwache den mittels
Im Log steht dann...
Code: Alles auswählen
2021-12-20 13:11:04.860 [ome.event.ItemCommandEvent] - Item 'DG_HZ_TEMP_IST_VAL' received command 675
2021-12-20 13:11:04.878 [nt.ItemStatePredictedEvent] - DG_HZ_TEMP_IST_VAL predicted to become NULL
aber es kommt nicht im Mosquitto an #soifz
Hat jemand ne Idee?
Re: Espeasy Variable per MQTT ändern
Verfasst: 20. Dez 2021 14:44
von int5749
HiG hat geschrieben: ↑20. Dez 2021 13:19
Du koppelst das Topic mit einem Item und führst ein Item.sendCommand(Wert) aus.
Das hab ich versucht....klappt aber irgendwie nicht. Es kommt nix im Broker an.
Folgende Dinge habe ich definiert
......
Moin
bisher sehe ich in Deiner Konfig nur
stateTopic definiert => Status => lesend
Du muss bei den Werten, welche Du ändern möchtest noch ein
commandTopic definieren.
Hier ändert sich meist auch die angesprochene Adresse.
Beispiel aus meiner MQTT Konfig
Code: Alles auswählen
Type number : evcc_maxCurrent "max. Ladestrom" [
stateTopic="evcc/loadpoints/1/maxCurrent",
commandTopic="evcc/loadpoints/1/maxCurrent/set"
]
Viele Grüße
Re: Espeasy Variable per MQTT ändern
Verfasst: 20. Dez 2021 15:17
von HiG
Hallo int5749,
danke. Das war schon mal ein wichtiger Hinweis. Hab es mal auf
Code: Alles auswählen
Thing topic DG_HZ "Office Heizung"(mqtt:broker:1cecc2fd) @ "MQTT" {
Channels:
Type number : MQ_DG_HZ_BATTERIE "Heizung Bad Batterie" [ stateTopic="zb2mqtt/hz_dg/batterie" ,commandTopic="zb2mqtt/hz_dg/batterie/set"]
Type number : MQ_DG_HZ_TEMP_IST "Heizung Bad Ist-Temp" [ stateTopic="zb2mqtt/hz_dg/temp_ist" ,commandTopic="zb2mqtt/hz_dg/temp_ist/set" ]
Type number : MQ_DG_HZ_TEMP_SOLL "Heizung Bad Soll-Temp" [ stateTopic="zb2mqtt/hz_dg/temp_soll" ,commandTopic="zb2mqtt/hz_dg/temp_soll/set" ]
Type number : MQ_DG_HZ_VENTIL "Heizung Bad Ventil" [ stateTopic="zb2mqtt/hz_dg/ventil" ,commandTopic="zb2mqtt/hz_dg/ventil/set" ]
Type string : MQ_DG_HZ_MODUS "Heizung Bad Modus" [ stateTopic="zb2mqtt/hz_dg/mode" ,commandTopic="zb2mqtt/hz_dg/mode/set" ]
Type string : MQ_DG_HZ_FEHLER "Heizung Bad Fehler" [ stateTopic="zb2mqtt/hz_dg/error" ,commandTopic="zb2mqtt/hz_dg/error/set" ]
Type number : MQ_DG_HZ_BATTERIE_STATE "Heizung Bad Batteriestatus" [ stateTopic="zb2mqtt/hz_dg/batterie_status" ,commandTopic="zb2mqtt/hz_dg/batterie_status/set" ]
Type number : MQ_DG_HZ_SIGNAL "Heizung Bad Signalstärke" [ stateTopic="zb2mqtt/hz_dg/signal" ,commandTopic="zb2mqtt/hz_dg/signal/set" ]
Type switch : MQ_DG_HZ_FENSTER "Heizung Bad Fenster" [ stateTopic="zb2mqtt/hz_dg/window" ,commandTopic="zb2mqtt/hz_dg/window/set" ]
}
Leider kommt immer noch nix im Broker an.
Zusätzlich taucht im Log nun dieses auf
Code: Alles auswählen
Provide a thing UID in this format: <bindingId>:<thingTypeId>:<thingId>
Re: Espeasy Variable per MQTT ändern
Verfasst: 20. Dez 2021 15:44
von int5749
Bist Du denn sicher, dass dies korrekt konfiguriert ist??
Ist es bei Deinen Things ein "set" für den Command?