Hi, ich weiß gar ob der Threat überhaupt hier reinpasst. Ich möchte meine Panasonic Klimaanlage per Tasmota_IR fernsteuern und habe das Tasmota per MQTT2 angebunden.
Internals:
CID DVES_8F37BC
DEF DVES_8F37BC
FUUID 6406f04c-f33f-2bd4-782f-ddb0bf5d23d21042
IODev gl.gw.mqttBroker
LASTInputDev gl.gw.mqttBroker
MSGCNT 165
NAME MQTT2_DVES_8F37BC
NR 331
STATE state
<br>
<a href="http://192.168.178.45" target="_blank">192.168.178.45</a>
TYPE MQTT2_DEVICE
eventCount 40
gl.gw.mqttBroker_CONN gl.gw.mqttBroker_192.168.178.45_55978
gl.gw.mqttBroker_MSGCNT 165
gl.gw.mqttBroker_TIME 2023-03-08 19:13:02
READINGS:
2023-03-08 10:57:58 BootCount 19
2023-03-08 10:57:58 FallbackTopic cmnd/DVES_8F37BC_fb/
2023-03-08 10:57:58 GroupTopic cmnd/tasmotas/
2023-03-08 19:13:02 Heap 26
2023-03-08 10:57:58 Hostname kiAc-8F37BC-6076
2023-03-08 09:55:35 IODev gl.gw.mqttBroker
2023-03-08 10:57:58 IPAddress 192.168.178.45
2023-03-08 16:55:35 IrReceived_Bits 216
2023-03-08 16:55:35 IrReceived_Data 0x0220E004000000060220E00400212E803F0000066020008500001F
2023-03-08 16:55:35 IrReceived_IRHVAC_Beep Off
2023-03-08 16:55:35 IrReceived_IRHVAC_Celsius On
2023-03-08 16:55:35 IrReceived_IRHVAC_Clean Off
2023-03-08 16:55:35 IrReceived_IRHVAC_Econo Off
2023-03-08 16:55:35 IrReceived_IRHVAC_FanSpeed Min
2023-03-08 16:55:35 IrReceived_IRHVAC_Filter Off
2023-03-08 16:55:35 IrReceived_IRHVAC_Light Off
2023-03-08 16:55:35 IrReceived_IRHVAC_Mode Dry
2023-03-08 16:55:35 IrReceived_IRHVAC_Model 4
2023-03-08 16:55:35 IrReceived_IRHVAC_Power On
2023-03-08 16:55:35 IrReceived_IRHVAC_Quiet Off
2023-03-08 16:55:35 IrReceived_IRHVAC_Sleep -1
2023-03-08 16:55:35 IrReceived_IRHVAC_SwingH Auto
2023-03-08 16:55:35 IrReceived_IRHVAC_SwingV Auto
2023-03-08 16:55:35 IrReceived_IRHVAC_Temp 23
2023-03-08 16:55:35 IrReceived_IRHVAC_Turbo On
2023-03-08 16:55:35 IrReceived_IRHVAC_Vendor PANASONIC_AC
2023-03-08 16:55:35 IrReceived_Protocol PANASONIC_AC
2023-03-08 16:55:35 IrReceived_Repeat 0
2023-03-08 12:26:08 LWT Online
2023-03-08 19:13:02 LoadAvg 19
2023-03-08 10:57:58 Module Generic
2023-03-08 19:13:02 MqttCount 2
2023-03-08 12:26:08 POWER
2023-03-08 10:57:58 RestartReason Power On
2023-03-08 19:13:02 Sleep 50
2023-03-08 19:13:02 SleepMode Dynamic
2023-03-08 19:13:02 Time 2023-03-08T19:13:13
2023-03-08 19:13:02 Uptime 0T08:15:08
2023-03-08 19:13:02 UptimeSec 29708
2023-03-08 19:13:02 Vcc 3.463
2023-03-08 10:57:58 Version 12.4.0(ir)
2023-03-08 10:57:58 WebServerMode Admin
2023-03-08 19:13:02 Wifi_AP 1
2023-03-08 19:13:02 Wifi_BSSId 7C:FF:4D:2B:42:27
2023-03-08 19:13:02 Wifi_Channel 1
2023-03-08 19:13:02 Wifi_Downtime 0T00:00:03
2023-03-08 19:13:02 Wifi_LinkCount 1
2023-03-08 19:13:02 Wifi_Mode 11n
2023-03-08 19:13:02 Wifi_RSSI 72
2023-03-08 19:13:02 Wifi_SSId FetzNetz
2023-03-08 19:13:02 Wifi_Signal -64
2023-03-08 12:26:08 btn_1 0
2023-03-08 12:26:08 btn_10 0
2023-03-08 12:26:08 btn_11 0
2023-03-08 12:26:08 btn_12 0
2023-03-08 12:26:08 btn_13 0
2023-03-08 12:26:08 btn_14 0
2023-03-08 12:26:08 btn_15 0
2023-03-08 12:26:08 btn_16 0
2023-03-08 12:26:08 btn_17 0
2023-03-08 12:26:08 btn_18 0
2023-03-08 12:26:08 btn_19 0
2023-03-08 12:26:08 btn_2 0
2023-03-08 12:26:08 btn_20 0
2023-03-08 12:26:08 btn_21 0
2023-03-08 12:26:08 btn_22 0
2023-03-08 12:26:08 btn_23 0
2023-03-08 12:26:08 btn_24 0
2023-03-08 12:26:08 btn_25 0
2023-03-08 12:26:08 btn_26 0
2023-03-08 12:26:08 btn_27 0
2023-03-08 12:26:08 btn_28 0
2023-03-08 12:26:08 btn_3 0
2023-03-08 12:26:08 btn_4 0
2023-03-08 12:26:08 btn_5 0
2023-03-08 12:26:08 btn_6 0
2023-03-08 12:26:08 btn_7 0
2023-03-08 12:26:08 btn_8 0
2023-03-08 12:26:08 btn_9 0
2023-03-08 12:26:08 dn KiAc
2023-03-08 12:26:08 fn_1 KiAc
2023-03-08 12:26:08 ft %prefix%/%topic%/
2023-03-08 12:26:08 hn kiAc-8F37BC-6076
2023-03-08 12:26:08 if 0
2023-03-08 12:26:08 ip 192.168.178.45
2023-03-08 12:26:08 lk 0
2023-03-08 12:26:08 lt_st 0
2023-03-08 12:26:08 mac BCDDC28F37BC
2023-03-08 12:26:08 md Generic
2023-03-08 12:26:08 ofln Offline
2023-03-08 12:26:08 onln Online
2023-03-08 12:26:08 rl_1 0
2023-03-08 12:26:08 rl_10 0
2023-03-08 12:26:08 rl_11 0
2023-03-08 12:26:08 rl_12 0
2023-03-08 12:26:08 rl_13 0
2023-03-08 12:26:08 rl_14 0
2023-03-08 12:26:08 rl_15 0
2023-03-08 12:26:08 rl_16 0
2023-03-08 12:26:08 rl_17 0
2023-03-08 12:26:08 rl_18 0
2023-03-08 12:26:08 rl_19 0
2023-03-08 12:26:08 rl_2 0
2023-03-08 12:26:08 rl_20 0
2023-03-08 12:26:08 rl_21 0
2023-03-08 12:26:08 rl_22 0
2023-03-08 12:26:08 rl_23 0
2023-03-08 12:26:08 rl_24 0
2023-03-08 12:26:08 rl_25 0
2023-03-08 12:26:08 rl_26 0
2023-03-08 12:26:08 rl_27 0
2023-03-08 12:26:08 rl_28 0
2023-03-08 12:26:08 rl_3 0
2023-03-08 12:26:08 rl_4 0
2023-03-08 12:26:08 rl_5 0
2023-03-08 12:26:08 rl_6 0
2023-03-08 12:26:08 rl_7 0
2023-03-08 12:26:08 rl_8 0
2023-03-08 12:26:08 rl_9 0
2023-03-08 12:26:08 sho_1 0
2023-03-08 12:26:08 sho_2 0
2023-03-08 12:26:08 sho_3 0
2023-03-08 12:26:08 sho_4 0
2023-03-08 12:26:08 sht_1_1 0
2023-03-08 12:26:08 sht_1_2 0
2023-03-08 12:26:08 sht_1_3 0
2023-03-08 12:26:08 sht_2_1 0
2023-03-08 12:26:08 sht_2_2 0
2023-03-08 12:26:08 sht_2_3 0
2023-03-08 12:26:08 sht_3_1 0
2023-03-08 12:26:08 sht_3_2 0
2023-03-08 12:26:08 sht_3_3 0
2023-03-08 12:26:08 sht_4_1 0
2023-03-08 12:26:08 sht_4_2 0
2023-03-08 12:26:08 sht_4_3 0
2023-03-08 12:26:08 sn_Time 2023-03-08T12:26:19
2023-03-08 12:26:08 so_11 0
2023-03-08 12:26:08 so_114 0
2023-03-08 12:26:08 so_117 0
2023-03-08 12:26:08 so_13 0
2023-03-08 12:26:08 so_17 0
2023-03-08 12:26:08 so_20 0
2023-03-08 12:26:08 so_30 0
2023-03-08 12:26:08 so_4 0
2023-03-08 12:26:08 so_68 0
2023-03-08 12:26:08 so_73 0
2023-03-08 12:26:08 so_82 0
2023-03-08 12:26:08 state_1 OFF
2023-03-08 12:26:08 state_2 ON
2023-03-08 12:26:08 state_3 TOGGLE
2023-03-08 12:26:08 state_4 HOLD
2023-03-08 12:26:08 sw 12.4.0
2023-03-08 12:26:08 swc_1 -1
2023-03-08 12:26:08 swc_10 -1
2023-03-08 12:26:08 swc_11 -1
2023-03-08 12:26:08 swc_12 -1
2023-03-08 12:26:08 swc_13 -1
2023-03-08 12:26:08 swc_14 -1
2023-03-08 12:26:08 swc_15 -1
2023-03-08 12:26:08 swc_16 -1
2023-03-08 12:26:08 swc_17 -1
2023-03-08 12:26:08 swc_18 -1
2023-03-08 12:26:08 swc_19 -1
2023-03-08 12:26:08 swc_2 -1
2023-03-08 12:26:08 swc_20 -1
2023-03-08 12:26:08 swc_21 -1
2023-03-08 12:26:08 swc_22 -1
2023-03-08 12:26:08 swc_23 -1
2023-03-08 12:26:08 swc_24 -1
2023-03-08 12:26:08 swc_25 -1
2023-03-08 12:26:08 swc_26 -1
2023-03-08 12:26:08 swc_27 -1
2023-03-08 12:26:08 swc_28 -1
2023-03-08 12:26:08 swc_3 -1
2023-03-08 12:26:08 swc_4 -1
2023-03-08 12:26:08 swc_5 -1
2023-03-08 12:26:08 swc_6 -1
2023-03-08 12:26:08 swc_7 -1
2023-03-08 12:26:08 swc_8 -1
2023-03-08 12:26:08 swc_9 -1
2023-03-08 12:26:08 t kiAc_8F37BC
2023-03-08 12:26:08 tp_1 cmnd
2023-03-08 12:26:08 tp_2 stat
2023-03-08 12:26:08 tp_3 tele
2023-03-08 12:26:08 ty 0
2023-03-08 12:26:08 ver 1
Attributes:
event-on-change-reading IrReceived_IRHVAC.*
icon IR
model tasmota_ir
readingList tele/kiAc_8F37BC/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ? json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
tele/kiAc_8F37BC/RESULT:.* { $EVENT =~ m,..IrReceived....Protocol...([A-Za-z0-9]+)...Bits..([\d]+)..Data...([A-Za-z0-9]+)..., ? {"$1_$2"=>$3} : json2nameValue($EVENT) }
DVES_8F37BC:tele/kiAc_8F37BC/STATE:.* { json2nameValue($EVENT) }
DVES_8F37BC:stat/kiAc_8F37BC/RESULT:.* { json2nameValue($EVENT) }
DVES_8F37BC:tele/kiAc_8F37BC/LWT:.* LWT
DVES_8F37BC:cmnd/kiAc_8F37BC/POWER:.* POWER
DVES_8F37BC:tasmota/discovery/BCDDC28F37BC/config:.* { json2nameValue($EVENT) }
DVES_8F37BC:tasmota/discovery/BCDDC28F37BC/sensors:.* { json2nameValue($EVENT) }
room Kinderzimmer,MQTT2_DEVICE
setList power:noArg cmnd/kiAc_8F37BC/IRHVAC {"Vendor":"PANASONIC_AC","Model":4,"Mode":"Dry","Power":"Off","Celsius":"On","Temp":25,"FanSpeed":"Auto","SwingV":"Auto","SwingH":"Auto","Quiet":"Off","Turbo":"Off","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}
volumeup:noArg cmnd/kiAc_8F37BC/IRsend {"Protocol":"PANASONIC_AC","Bits":216,"Data":"0x0220E004000000060220E00400213280AF00000660000085000073","Repeat":0}
11:noArg cmnd/kiAc_8F37BC/Backlog IRsend {"Protocol":"PANASONIC_AC","Bits":216,"Data":"0x0220E004000000060220E00400213280AF00000660000085000073","Repeat":0};cmnd/kiAc_8F37BC/delay 8;cmnd/kiAc_8F37BC/IRsend {"Protocol":"PANASONIC_AC","Bits":216,"Data":"0x0220E004000000060220E00400213280AF00000660000085000073","Repeat":0}
irsend:textField cmnd/kiAc_8F37BC/irsend {"Protocol":"$EVTPART1","Bits":$EVTPART2,"Data":"0x$EVTPART3","Repeat": 2}
irhvac:textField cmnd/kiAc_8F37BC/IRHVAC {"Vendor":"PANASONIC_AC","Model":4,"Mode":"$EVTPART1","Power":"$EVTPART2","Celsius":"On","Temp":$EVTPART3,"FanSpeed":"Auto","SwingV":"Auto","SwingH":"Auto","Quiet":"$EVTPART4","Turbo":"$EVTPART5","Econo":"Off","Light":"Off","Filter":"Off","Clean":"Off","Beep":"Off","Sleep":-1}
stateFormat state
<br>
<a href="http://IPAddress" target="_blank">IPAddress</a>
Zusätzlich habe ich ein Dummy war so ne Art Thermostat für die Klima darstellen soll. So sieht das aus:
Internals:
FUUID 640256c5-f33f-2bd4-e887-9ffd9c87975c25eb
NAME ki.dt.Klimaanlage
NR 328
STATE Mode: heat Powerful: on Quiet: off Temp: 21 Power: off
TYPE dummy
READINGS:
2023-03-07 21:03:31 mode heat
2023-03-08 09:11:44 powerful on
2023-03-08 09:09:40 quiet off
2023-03-08 08:39:59 state off
2023-03-05 20:41:14 temp 21
Attributes:
readingList mode temp state
room Kinderzimmer
setList mode:auto,cool,heat,dry temp:slider,16,1,26 state:on,off powerful:on,off quiet:on,off
stateFormat Mode: mode Powerful: powerful Quiet: quiet Temp: temp Power: state
webCmd mode:temp:state
Momentan überwache ich die Änderungen am dummy mit notify und sende dann die Readings über IRHVAC an das MQTT2 Device. Das klappt soweit auch ganz gut. Allerdings möchte ich die Klima auch parallel mit der original IR Fernbedienung steuern. Dabei kann passt der Zustand des Dummies nicht mehr den realen Einstellungen der Klima. Jetzt kam mir die Idee dass die das MQTT2 Device auch per Notify überwache und bei Änderungen der IRHVAC-Readings (die von der Fernbedienung empfangen wurden) in meinem Dummy setze.
Das würde aber nicht funktionieren denn das Setzen neuer Readings wieder das Sende-Notify auslöst und der gleiche IR Code nochmal von Tasmota_IR geschickt wird. Ich muss irgendwie verhindern dass beim Empfang kein weiteres Sende-Notify ausgelöst wird. Was kann ich da machen?
Oder gibt es noch bessere Möglichkeiten die Readings vom Dummy mit Readings vom MQTT2 Device synchron zu halten?
Ich würde annehmen, dass man den dummy nicht braucht.
Eine etwas komplexere Konfiguration einer MQTT2_DEVICE-Instanz sollte das auch abbilden können, dann hat man hoffentlich nicht das Problem, dass Sende- und Empfangsdaten sich in die Quere kommen; scheinbar ist ja alles, was mit dem Panasonic zu tun hat unter IrReceived_IRHVAC.* zu finden, oder?
Schau mal ins Wiki unter "Schritt für Schritt", dann solltest du zumindest einen Eindruck bekommen, warum manches wie aussieht, und was komplett unnötig ist...
Danke, das wäre sicherlich die beste Lösung aber wird vermutlich nicht funktionieren. Im MQTT device gibt es die Readings IrReceived_IRHVAC_* aber keine Readings für den gesendeten Code.
Ich habe mir jetzt überlegt dass ich es so mache dass ich erst das Sende-Notify auf Inactive schalte, dann die Readings im Dummy aktualisieren und dann das Sende-Notify wieder auf active. Ich berichte mal ob es funktioniert hat.
Zitat von: teichtaucher am 09 März 2023, 09:37:24
Danke, das wäre sicherlich die beste Lösung aber wird vermutlich nicht funktionieren. Im MQTT device gibt es die Readings IrReceived_IRHVAC_* aber keine Readings für den gesendeten Code.
?
Du musst halt eine entsprechende setList anlegen, ggf. setStateList anpassen und das ganze mit ein paar userReadings garnieren, die das "set_" aus den Readings fischen...
Zitat
Ich habe mir jetzt überlegt dass ich es so mache dass ich erst das Sende-Notify auf Inactive schalte, dann die Readings im Dummy aktualisieren und dann das Sende-Notify wieder auf active. Ich berichte mal ob es funktioniert hat.
Das klingt für mich unnötig umständlich (also umständlicher wie das "richtige" Konfigurieren eines M2D), aber gelobt sei, was funktioniert...
Deine Lösung ist sicherlich besser, aber bis ich mich da reingefuchst habe will ich es erstmal mit den notifys versuchen. Jetzt hänge ich aber bei einem anderen Problem: mehrere commands im notify. So sieht jetzt das Kommando im Notify bei mir aus:
set ki.fn.KlimaTx inactive;;setreading ki.dt.Klimaanlage mode [MQTT2_DVES_8F37BC:IrReceived_IRHVAC_Mode];;set ki.fn.KlimaTx active
Bin erst über die DOIF Syntax gestolpert weil ich die einzelnen Befehle in Klammern gesetzt habe bis gelernt habe dass Notify das nicht kennt :o Habe dann im Forum gelesen dass die set's mit zwei Semikolon getrennt sein müssen aber auch das funktioniert nicht. FHEM interpretiert alles was hinter "inactive" steht als weiteren Parameter... Selbst wenn ich die set's oben in die Commandline eingebe läuft es nicht.
Ich könnte es natürlich über {fhem("...")} versuchen aber ich vermute das wird auch nicht laufen. Gibt es da einen Trick oder wo hängt es bei mir?
Vielleicht hilft ein kurzes (fhem-) sleep nach dem inactive? (Beachte auch da die Zahl der erforderlichen Semikola und mache klarer, worauf sich das ggf. bezieht. In der DEF ist die Darstellung nämlich anders als in raw-Def etc.)
Das inactive ist vermutlich kein Problem. Ich habe auch versucht, mir per Telegram Nachrichten zu senden um zu sehen ob das Notify überhaupt ausgelöst wird. Sobalb mehr als ein Kommando abgesendet wird gibt es Probleme. Ich habe langsam keine Lust mehr auf Notify... Kann ich das nicht irgendwie mit DOIF nachbauen? Gibt es auch sowas wie DOFI on-change-Reading oder so?
Stell' mir keine solchen Fragen, eventuell ist es einfach ein Problem, dass das notify sich selbst deakivieren soll. Um nach einem Event kurz zu skippen, gibt es da auch ein Attribut.
OIF verstehe ich nicht, und ich würde es nach wie vor als M2D bauen... Das ist im Ergebnis m.E. einfacher als alles andere.
Just my2ct.
Es läuft jetzt. Für die Nachwelt meine Lösung:
Ich habe jetzt anstatt dem Empfangs-Notify ein DOIF verwendet. Der Vorteil von DOIF is dass es einfach flexibler ist als das Notify:
-Beim Notify schaffe ich es nicht, mehr als ein Kommando abzusenden - selbst wenn ich ";;" zwischen den Kommandos einfüge.
-Ich kann kein Perl und Fhem mischen. Es geht nur entweder oder. Im DOIF habe ich ein paar FHEM Kommandos in Klammern neben ein paar Perl-Schnipseln in Klammern. Läuft wunderbar.
Zur Vollständigkeit hier mein DOIF was beim Empfang von IR Botschaften reagiert:
Internals:
CFGFN
DEF ([MQTT2_DVES_8F37BC])
(set ki.fn.KlimaTx inactive)
(setreading ki.dt.Klimaanlage mode [MQTT2_DVES_8F37BC:IrReceived_IRHVAC_Mode])
(setreading ki.dt.Klimaanlage temp [MQTT2_DVES_8F37BC:IrReceived_IRHVAC_Temp])
{if(ReadingsVal("MQTT2_DVES_8F37BC","IrReceived_IRHVAC_Turbo","On") eq "On")
{fhem("setreading ki.dt.Klimaanlage profile Quiet")}
elsif(ReadingsVal("MQTT2_DVES_8F37BC","IrReceived_IRHVAC_Quiet","On") eq "On")
{fhem("setreading ki.dt.Klimaanlage profile Powerful")}
else {fhem("setreading ki.dt.Klimaanlage profile Normal")}}
(set ki.dt.Klimaanlage [MQTT2_DVES_8F37BC:IrReceived_IRHVAC_Power])
(set ki.fn.KlimaTx active)
FUUID 6409e3d2-f33f-2bd4-07ac-e0372e6220108c88
MODEL FHEM
NAME ki.fd.KlimaRx
NOTIFYDEV MQTT2_DVES_8F37BC,global
NR 1341
NTFY_ORDER 50-ki.fd.KlimaRx
STATE initialized
TYPE DOIF
VERSION 26938 2023-01-01 18:13:32
eventCount 165
READINGS:
2023-03-10 08:18:41 cmd 0
2023-03-10 08:18:41 mode enabled
2023-03-10 08:18:41 state initialized
Regex:
accu:
collect:
cond:
MQTT2_DVES_8F37BC:
0:
&STATE ^MQTT2_DVES_8F37BC$
attr:
cmdState:
wait:
waitdel:
condition:
0 ::InternalDoIf($hash,'MQTT2_DVES_8F37BC','STATE')
do:
0:
0 set ki.fn.KlimaTx inactive
1 setreading ki.dt.Klimaanlage mode [MQTT2_DVES_8F37BC:IrReceived_IRHVAC_Mode]
2 setreading ki.dt.Klimaanlage temp [MQTT2_DVES_8F37BC:IrReceived_IRHVAC_Temp]
3 {if(ReadingsVal("MQTT2_DVES_8F37BC","IrReceived_IRHVAC_Turbo","On") eq "On") {fhem("setreading ki.dt.Klimaanlage profile Quiet")} elsif(ReadingsVal("MQTT2_DVES_8F37BC","IrReceived_IRHVAC_Quiet","On") eq "On") {fhem("setreading ki.dt.Klimaanlage profile Powerful")} else {fhem("setreading ki.dt.Klimaanlage profile Normal")}}
4 set ki.dt.Klimaanlage [MQTT2_DVES_8F37BC:IrReceived_IRHVAC_Power]
5 set ki.fn.KlimaTx active
1:
helper:
NOTIFYDEV MQTT2_DVES_8F37BC,global
globalinit 1
last_timer 0
sleeptimer -1
internals:
all MQTT2_DVES_8F37BC:STATE
uiState:
uiTable:
Attributes:
do always
room Kinderzimmer
Zitat-Beim Notify schaffe ich es nicht, mehr als ein Kommando abzusenden - selbst wenn ich ";;" zwischen den Kommandos einfüge.
Das geht aber problemlos.
Zitat-Ich kann kein Perl und Fhem mischen. Es geht nur entweder oder
Das funktioniert normalerweise auch, ich empfehle aber stattdessen im Perl-Code den Aufruf der FHEM-Befehle per fhem("...") Funktion.