[gelöst]MQTT2_Server mit MQTT2_Device setList schaltet Device(Tasmota) nicht

Begonnen von MadMe86, 31 Dezember 2018, 01:48:23

Vorheriges Thema - Nächstes Thema

MadMe86

Hallo zusammen!

ich habe ein hoffentlich kleines Problem...
Nach einer weile habe ich den MQTT2 Server zu laufen bekommen(ich hab den Satz falsch interpretiert:
"If IP is specified, then MQTT2_SERVER will only listen on this IP." hab gedacht die Angabe wäre optional)

Generell will ich einen OBI Wlan Schalter mit Tasmota ans laufen bringen.

Der Server läuft nun und ich kann z.B. mit "cmnd/sonoffMain/Power on" über den Server gepublished den Schalter an bzw mit  "cmnd/sonoffMain/Power off" ausschalten.
Nur über den angelegten Schalter mit
attr DVES_51AD6D setList \
   on cmnd/sonoffMain/POWER on\
   off cmnd/sonoffMain/POWER off


funktioniert es nicht.

2018-12-31 01:40:35 MQTT2_SERVER m2s publish cmnd/sonoffMain/Power on
2018-12-31 01:40:35 MQTT2_DEVICE MQTT2_DVES_51AD6D RESULT_POWER: ON
2018-12-31 01:40:35 MQTT2_DEVICE MQTT2_DVES_51AD6D POWER: ON
2018-12-31 01:40:39 MQTT2_SERVER m2s publish cmnd/sonoffMain/Power off
2018-12-31 01:40:39 MQTT2_DEVICE MQTT2_DVES_51AD6D RESULT_POWER: OFF
2018-12-31 01:40:39 MQTT2_DEVICE MQTT2_DVES_51AD6D POWER: OFF
2018-12-31 01:40:42 HMLAN hmusb loadLvl: low
2018-12-31 01:40:47 MQTT2_DEVICE MQTT2_DVES_51AD6D on
2018-12-31 01:40:47 MQTT2_DEVICE MQTT2_DVES_51AD6D RESULT_POWER: OFF
2018-12-31 01:40:47 MQTT2_DEVICE MQTT2_DVES_51AD6D POWER: OFF
2018-12-31 01:40:48 MQTT2_DEVICE MQTT2_DVES_51AD6D off
2018-12-31 01:40:49 MQTT2_DEVICE MQTT2_DVES_51AD6D RESULT_POWER: OFF
2018-12-31 01:40:49 MQTT2_DEVICE MQTT2_DVES_51AD6D POWER: OFF

Hier noch die relevante Config dazu.
define m2s MQTT2_SERVER 1883 global
attr m2s autocreate 1
attr m2s room MQTT2_DEVICE
define MQTT2_DVES_51AD6D MQTT2_DEVICE DVES_51AD6D
attr MQTT2_DVES_51AD6D IODev m2s
attr MQTT2_DVES_51AD6D devStateIcon devStateIcon on:rc_GREEN:off off:rc_RED:on
attr MQTT2_DVES_51AD6D icon hue_filled_outlet
attr MQTT2_DVES_51AD6D readingList DVES_51AD6D:tele/sonoffMain/LWT:.* LWT\
DVES_51AD6D:cmnd/sonoffMain/POWER:.* POWER\
DVES_51AD6D:tele/sonoffMain/INFO1:.* { json2nameValue($EVENT, 'INFO1_', $JSONMAP) }\
DVES_51AD6D:tele/sonoffMain/INFO2:.* { json2nameValue($EVENT, 'INFO2_', $JSONMAP) }\
DVES_51AD6D:tele/sonoffMain/INFO3:.* { json2nameValue($EVENT, 'INFO3_', $JSONMAP) }\
DVES_51AD6D:stat/sonoffMain/RESULT:.* { json2nameValue($EVENT, 'RESULT_', $JSONMAP) }\
DVES_51AD6D:stat/sonoffMain/POWER:.* POWER\
DVES_51AD6D:tele/sonoffMain/STATE:.* { json2nameValue($EVENT, 'STATE_', $JSONMAP) }\
DVES_51AD6D:tele/sonoffMain/UPTIME:.* { json2nameValue($EVENT, 'UPTIME_', $JSONMAP) }
attr MQTT2_DVES_51AD6D room MQTT2_DEVICE
attr MQTT2_DVES_51AD6D setList attr DVES_51AD6D setList \\
   on cmnd/sonoffMain/POWER on\\
   off cmnd/sonoffMain/POWER off
define FileLog_MQTT2_DVES_51AD6D FileLog /var/lib/fhem/MQTT2_DVES_51AD6D-%Y.log MQTT2_DVES_51AD6D
attr FileLog_MQTT2_DVES_51AD6D logtype text
attr FileLog_MQTT2_DVES_51AD6D room MQTT2_DEVICE


Ich bin für jeden Hinweis dankbar:)

Viele Grüße MadMe86

OdfFhem

Hier scheint etwas doppelt ...

attr MQTT2_DVES_51AD6D setList attr DVES_51AD6D setList \\
   on cmnd/sonoffMain/POWER on\\
   off cmnd/sonoffMain/POWER off


So könnte es vermutlich eher funktionieren ...

attr MQTT2_DVES_51AD6D setList\
   on cmnd/sonoffMain/POWER on\
   off cmnd/sonoffMain/POWER off



Um die Definition von FHEM-Geräten zu zeigen, besser die Ausgabe von list MQTT2_DVES_51AD6D (Kommandozeile) oder gleich die Raw definition (ganz unten auf der Geräteseite) verwenden.

rudolfkoenig

Zitathab gedacht die Angabe wäre optional
Ich habe das auch so gedacht.

ZitatNur über den angelegten Schalter mit [...] funktioniert es nicht.
Ich wuerde das Schalten im FHEM-Log bei gesetzten "attr m2s verbose 5" beobachten, und die PUBLISH Zeilen bei "funktioniert" und "funktioniert nicht" vergleichen.

MadMe86

Danke für die schnellen Antworten :)

Das doppelte attr MQTT2_DVES_51AD6D setList hab ich rausgeworfen, ein Fehler weniger... funktioniert aber leider immer noch nicht.

Es scheint immer nur der letzte Befehl in setList zu funktionieren.  ???

Ausgangszustand Aus
Button Off gedrückt
2018.12.31 12:39:35 5: m2s: PUBLISH cmnd/sonoffMain/POWER off\
2018.12.31 12:39:35 5: m2s_192.168.170.87_49153 DVES_51AD6D => cmnd/sonoffMain/POWER:off\
2018.12.31 12:39:35 5: PUBLISH: (0)(22)stat/sonoffMain/RESULT{"POWER":"OFF"}
2018.12.31 12:39:35 4: m2s_192.168.170.87_49153 DVES_51AD6D PUBLISH stat/sonoffMain/RESULT:{"POWER":"OFF"}
2018.12.31 12:39:35 5: m2s: dispatch autocreate:DVES_51AD6D:stat/sonoffMain/RESULT:{"POWER":"OFF"}
2018.12.31 12:39:35 5: PUBLISH: (0)(21)stat/sonoffMain/POWEROFF
2018.12.31 12:39:35 4: m2s_192.168.170.87_49153 DVES_51AD6D PUBLISH stat/sonoffMain/POWER:OFF
2018.12.31 12:39:35 5: m2s: dispatch autocreate:DVES_51AD6D:stat/sonoffMain/POWER:OFF

Button On gedrückt
2018.12.31 12:39:37 5: m2s: PUBLISH cmnd/sonoffMain/POWER on
2018.12.31 12:39:37 5: m2s_192.168.170.87_49153 DVES_51AD6D => cmnd/sonoffMain/POWER:on
2018.12.31 12:39:37 5: PUBLISH: (0)(22)stat/sonoffMain/RESULT{"POWER":"ON"}
2018.12.31 12:39:37 4: m2s_192.168.170.87_49153 DVES_51AD6D PUBLISH stat/sonoffMain/RESULT:{"POWER":"ON"}
2018.12.31 12:39:37 5: m2s: dispatch autocreate:DVES_51AD6D:stat/sonoffMain/RESULT:{"POWER":"ON"}
2018.12.31 12:39:38 5: PUBLISH: (0)(21)stat/sonoffMain/POWERON
2018.12.31 12:39:38 4: m2s_192.168.170.87_49153 DVES_51AD6D PUBLISH stat/sonoffMain/POWER:ON
2018.12.31 12:39:38 5: m2s: dispatch autocreate:DVES_51AD6D:stat/sonoffMain/POWER:ON
Zustand AN... Hat funktioniert!

Button Off gedrückt
2018.12.31 12:39:43 5: m2s: PUBLISH cmnd/sonoffMain/POWER off\
2018.12.31 12:39:43 5: m2s_192.168.170.87_49153 DVES_51AD6D => cmnd/sonoffMain/POWER:off\
2018.12.31 12:39:43 5: PUBLISH: (0)(22)stat/sonoffMain/RESULT{"POWER":"ON"}
2018.12.31 12:39:44 4: m2s_192.168.170.87_49153 DVES_51AD6D PUBLISH stat/sonoffMain/RESULT:{"POWER":"ON"}
2018.12.31 12:39:44 5: m2s: dispatch autocreate:DVES_51AD6D:stat/sonoffMain/RESULT:{"POWER":"ON"}
2018.12.31 12:39:44 5: PUBLISH: (0)(21)stat/sonoffMain/POWERON
2018.12.31 12:39:44 4: m2s_192.168.170.87_49153 DVES_51AD6D PUBLISH stat/sonoffMain/POWER:ON
2018.12.31 12:39:44 5: m2s: dispatch autocreate:DVES_51AD6D:stat/sonoffMain/POWER:ON
Zustand AN... Hat leider nicht funktioniert


Ich denke das Problem liegt darin das m2s den backslash mit übergeben bekommt...
also
m2s: PUBLISH cmnd/sonoffMain/POWER off\
anstatt
m2s: PUBLISH cmnd/sonoffMain/POWER off

das funktioniert dann auch nicht direkt über m2s...

leider hab ich von Perl gar keine Ahnung... :-\

Hier mal die aktuelle Config von dem Schalter
defmod MQTT2_DVES_51AD6D MQTT2_DEVICE DVES_51AD6D
attr MQTT2_DVES_51AD6D IODev m2s
attr MQTT2_DVES_51AD6D readingList DVES_51AD6D:tele/sonoffMain/LWT:.* LWT\
DVES_51AD6D:cmnd/sonoffMain/POWER:.* POWER\
DVES_51AD6D:tele/sonoffMain/INFO1:.* { json2nameValue($EVENT, 'INFO1_', $JSONMAP) }\
DVES_51AD6D:tele/sonoffMain/INFO2:.* { json2nameValue($EVENT, 'INFO2_', $JSONMAP) }\
DVES_51AD6D:tele/sonoffMain/INFO3:.* { json2nameValue($EVENT, 'INFO3_', $JSONMAP) }\
DVES_51AD6D:stat/sonoffMain/RESULT:.* { json2nameValue($EVENT, 'RESULT_', $JSONMAP) }\
DVES_51AD6D:stat/sonoffMain/POWER:.* POWER\
DVES_51AD6D:tele/sonoffMain/STATE:.* { json2nameValue($EVENT, 'STATE_', $JSONMAP) }
attr MQTT2_DVES_51AD6D room MQTT2_DEVICE
attr MQTT2_DVES_51AD6D setList on cmnd/sonoffMain/POWER on\\
off cmnd/sonoffMain/POWER off\


setstate MQTT2_DVES_51AD6D off
setstate MQTT2_DVES_51AD6D 2018-12-31 12:07:48 INFO1_FallbackTopic cmnd/DVES_51AD6D_fb/
setstate MQTT2_DVES_51AD6D 2018-12-31 12:07:48 INFO1_GroupTopic sonoffs
setstate MQTT2_DVES_51AD6D 2018-12-31 12:07:48 INFO1_Module OBI Socket
setstate MQTT2_DVES_51AD6D 2018-12-31 12:07:48 INFO1_Version 6.4.1(sonoff)
setstate MQTT2_DVES_51AD6D 2018-12-31 12:07:48 INFO2_Hostname sonoffMain-3437
setstate MQTT2_DVES_51AD6D 2018-12-31 12:07:48 INFO2_IPAddress 192.168.170.87
setstate MQTT2_DVES_51AD6D 2018-12-31 12:07:48 INFO2_WebServerMode Admin
setstate MQTT2_DVES_51AD6D 2018-12-31 12:07:48 INFO3_RestartReason Power on
setstate MQTT2_DVES_51AD6D 2018-12-31 12:07:48 LWT Online
setstate MQTT2_DVES_51AD6D 2018-12-31 12:50:20 POWER OFF
setstate MQTT2_DVES_51AD6D 2018-12-31 12:38:41 RESULT_Command Unknown
setstate MQTT2_DVES_51AD6D 2018-12-31 12:50:20 RESULT_POWER OFF
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_LoadAvg 19
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_POWER ON
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_Sleep 50
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_SleepMode Dynamic
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_Time 2018-12-31T12:47:56
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_Uptime 0T00:40:14
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_Vcc 3.471
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_Wifi_AP 1
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_Wifi_BSSId CX:XX:XX:XX:XX:XX
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_Wifi_Channel 1
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_Wifi_RSSI 100
setstate MQTT2_DVES_51AD6D 2018-12-31 12:47:56 STATE_Wifi_SSId DED
setstate MQTT2_DVES_51AD6D 2018-12-31 12:50:20 state off


MadMe86

Habs nun!
https://forum.fhem.de/index.php/topic,90145.msg829640.html#msg829640
Es darf kein Backslash hinten anstehen und auch kein Leerzeichen!
Es darf also einfach nur

off cmnd/sonoffMain/POWER off
on cmnd/sonoffMain/POWER on

im Attribut setList stehen

Das Beispiel auf der Benutzeroverfläche passt wohl nur wenn man alles über die Kommandozeile macht  ::)

Vielen Dank und einen Guten Rutsch ins neue Jahr!