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

Code: Alles auswählen

 mosquitto_sub -h 192.xxx.xxx.xx  -t zb2mqtt/hz_dg/#
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?