Ich habe einen Sonoff Mini mit Tasmota 9.4.0 geflasht und in Fhem via MQTT2 als "tasmota_basic_state_power1" eingebunden. Schalten funktioniert, aber der "state" geht beim schalten nicht auf on/off sondern auf set_on/set_off. Das Template ist das aktuelle. Anders als bei bisherigen Minis sind die Schaltzustände in der Tasmota-Konsole in Großbuchstaben "ON"/"OFF"
Kann jemand helfen?
Hier ein Auszug aus der Tasmota-Konsole des Devices:
18:16:36.690 MQT: stat/tasmota_2AB16F/RESULT = {"POWER":"ON"}
18:16:36.696 MQT: stat/tasmota_2AB16F/POWER = ON
18:16:38.016 MQT: stat/tasmota_2AB16F/RESULT = {"POWER":"OFF"}
18:16:38.022 MQT: stat/tasmota_2AB16F/POWER = OFF
18:16:39.618 MQT: stat/tasmota_2AB16F/RESULT = {"POWER":"ON"}
18:16:39.623 MQT: stat/tasmota_2AB16F/POWER = ON
18:16:41.100 MQT: stat/tasmota_2AB16F/RESULT = {"POWER":"OFF"}
18:16:41.105 MQT: stat/tasmota_2AB16F/POWER = OFF
Und hier die Raw Definition aus Fhem:
defmod LichtAussenTerrasse MQTT2_DEVICE LichtAussenTerrasse
attr LichtAussenTerrasse autocreate 0
attr LichtAussenTerrasse comment NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10;; 'cmnd/cmnd/tasmota_2AB16F/Backlog POWER1 1;; delay '.$duration.';; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
attr LichtAussenTerrasse icon hue_filled_outlet
attr LichtAussenTerrasse jsonMap POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:0 Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 HSBColor:0 Color:0
attr LichtAussenTerrasse model tasmota_basic_state_power1
attr LichtAussenTerrasse readingList tele/tasmota_2AB16F/LWT:.* LWT\
tele/tasmota_2AB16F/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/tasmota_2AB16F/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/tasmota_2AB16F/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ? json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
tele/tasmota_2AB16F/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }\
stat/tasmota_2AB16F/POWER1:.* state\
stat/tasmota_2AB16F/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr LichtAussenTerrasse room MQTT2_DEVICE
attr LichtAussenTerrasse setList off:noArg cmnd/tasmota_2AB16F/POWER1 0\
on:noArg cmnd/tasmota_2AB16F/POWER1 1\
toggle:noArg cmnd/tasmota_2AB16F/POWER1 2\
setOtaUrl:textField cmnd/tasmota_2AB16F/OtaUrl $EVTPART1\
upgrade:noArg cmnd/tasmota_2AB16F/upgrade 1
attr LichtAussenTerrasse setStateList on off toggle
Vielen Dank vorab. Achim
Schon 'mal probiert POWER1 durch POWER zu ersetzen?
Wenn ich überall auf POWER anstatt POWER1 gehe, steht im "state" ON/OFF und nicht on/off. Der STATE wechselt nicht. Ist noch nicht die Lösung.
Versuch 'mal
attr LichtAussenTerrasse autocreate 1
attr LichtAussenTerrasse jsonMap POWER:0
attr LichtAussenTerrasse model tasmota Sonoff Mini
und anschliessend am Schalter und/oder über das Web Interface des Mini's ein- und ausschalten und ggf. einen Neustart ausführen.
Danach ein
list LichtAussenTerrasse
und das Ergebnis hier posten.
Danke :), hier das List nach Änderung:
List Nach Änderung:
Internals:
CID LichtAussenTerrasse
DEF LichtAussenTerrasse
DEVICETOPIC LichtAussenTerrasse
FUUID 60bb9f9e-f33f-e676-0fcd-a5f810fdfe866682
IODev MQTTServer
LASTInputDev MQTTServer
MQTTServer_MSGCNT 139
MQTTServer_TIME 2021-06-06 08:18:18
MSGCNT 139
NAME LichtAussenTerrasse
NR 101
STATE ON
TYPE MQTT2_DEVICE
JSONMAP:
POWER 0
READINGS:
2021-06-06 00:02:06 FallbackTopic cmnd/LichtAussenTerrasse_fb/
2021-06-06 00:02:06 GroupTopic cmnd/tasmotas/
2021-06-06 08:17:10 Heap 28
2021-06-06 00:02:06 Hostname tasmota_2AB16F-4463
2021-06-06 03:06:32 IODev MQTTServer
2021-06-06 00:02:06 IPAddress 192.168.0.219
2021-06-06 03:06:32 LWT Online
2021-06-06 08:17:10 LoadAvg 19
2021-06-06 00:02:06 Module Sonoff Mini
2021-06-06 08:17:10 MqttCount 3
2021-06-06 08:17:10 POWER OFF
2021-06-06 00:02:00 Restart Restarting
2021-06-06 00:02:06 RestartReason Software/System restart
2021-06-06 08:17:10 Sleep 50
2021-06-06 08:17:10 SleepMode Dynamic
2021-06-06 08:17:10 Switch1 ON
2021-06-06 08:17:10 Time 2021-06-06T08:17:10
2021-06-06 08:17:10 Uptime 0T08:15:09
2021-06-06 08:17:10 UptimeSec 29709
2021-06-06 00:02:06 Version 9.4.0(tasmota)
2021-06-06 00:02:06 WebServerMode Admin
2021-06-06 08:17:10 Wifi_AP 2
2021-06-06 08:17:10 Wifi_BSSId E0:28:6D:10:23:23
2021-06-06 08:17:10 Wifi_Channel 1
2021-06-06 08:17:10 Wifi_Downtime 0T00:00:04
2021-06-06 08:17:10 Wifi_LinkCount 2
2021-06-06 08:17:10 Wifi_RSSI 94
2021-06-06 08:17:10 Wifi_SSId Flora-EG2
2021-06-06 08:17:10 Wifi_Signal -53
2021-06-05 18:02:01 attrTemplateVersion 20210523
2021-06-06 08:18:18 state ON
2021-06-06 03:07:31 subscriptions cmnd/LichtAussenTerrasse_fb/# cmnd/tasmota_2AB16F/# cmnd/tasmotas/#
Attributes:
autocreate 1
comment NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10; 'cmnd/cmnd/tasmota_2AB16F/Backlog POWER 1; delay '.$duration.'; POWER 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
icon hue_filled_outlet
jsonMap POWER:0
model tasmota Sonoff Mini
readingList tele/tasmota_2AB16F/LWT:.* LWT
tele/tasmota_2AB16F/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
tele/tasmota_2AB16F/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
tele/tasmota_2AB16F/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ? json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
tele/tasmota_2AB16F/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
stat/tasmota_2AB16F/POWER:.* state
stat/tasmota_2AB16F/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
room MQTT2_DEVICE
setList off:noArg cmnd/tasmota_2AB16F/POWER 0
on:noArg cmnd/tasmota_2AB16F/POWER 1
toggle:noArg cmnd/tasmota_2AB16F/POWER 2
setOtaUrl:textField cmnd/tasmota_2AB16F/OtaUrl $EVTPART1
upgrade:noArg cmnd/tasmota_2AB16F/upgrade 1
setStateList on off toggle
Es gibt kein MQTT2-Template für "tasmota Sonoff Mini". Daher ist mir unklar, was die Zuweisung als "model" bewirken soll.
Dadurch, dass der STATE/state ON/OFF und nicht on/off ist, lässt sich das Device nicht durch anklicken des Icons links von "on off" schalten. Dass man über das Icon schalten kann, erreicht man, indem man in der "setList" und in der "setStateList" das "on" durch "ON" und das "off" durch "OFF" ersetzt. Damit funktioniert dann alles, außer dass man unüblich Großbuchstaben für Schaltungen am Device hat. Damit kann man eigentlich nicht vernünftig arbeiten, wenn man das Device zB in einem Structure einsetzen will.
VG Achim
Guten Morgen,
Es gibt ein attrtemplate mit dem man die Kleinschreibung einschalten kann: tasmota_set_lowercase_texts_and_state1.
Hallo Mike,
vielen Dank. Ich bekomme dann in einem aufgehenden Fenster die Fehlermeldung "Please define HASH(0xaaaaf98c2ee0) first", die man nur mit "ok" quittieren kann, aber das Template wird nicht angenommen.
Habe es nun folgendermaßen gelöst:
1. POWER1 durch POWER ersetzt. Hier die RAW:
defmod LichtAussenTerrasse MQTT2_DEVICE LichtAussenTerrasse
attr LichtAussenTerrasse autocreate 0
attr LichtAussenTerrasse comment NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10;; 'cmnd/cmnd/tasmota_2AB16F/Backlog POWER1 1;; delay '.$duration.';; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
attr LichtAussenTerrasse icon hue_filled_outlet
attr LichtAussenTerrasse jsonMap POWER:0
attr LichtAussenTerrasse model tasmota_basic_state_power1
attr LichtAussenTerrasse readingList tele/tasmota_2AB16F/LWT:.* LWT\
tele/tasmota_2AB16F/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/tasmota_2AB16F/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/tasmota_2AB16F/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ? json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
tele/tasmota_2AB16F/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }\
stat/tasmota_2AB16F/POWER:.* state\
stat/tasmota_2AB16F/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr LichtAussenTerrasse room MQTT2_DEVICE
attr LichtAussenTerrasse setList off:noArg cmnd/tasmota_2AB16F/POWER 0\
on:noArg cmnd/tasmota_2AB16F/POWER 1\
toggle:noArg cmnd/tasmota_2AB16F/POWER 2\
setOtaUrl:textField cmnd/tasmota_2AB16F/OtaUrl $EVTPART1\
upgrade:noArg cmnd/tasmota_2AB16F/upgrade 1
attr LichtAussenTerrasse setStateList on off toggle
2. In der Tasmota-Konsole folgendes gesetzt:
StateText1 off
StateText2 on
StateText3 toggle
Damit ist jetzt alles ok.
Danke an Euch für die Unterstützung!
VG Achim
Es freut mich das es funktioniert.
Ich wollte Die aber noch die Möglichkeit ON->on und OFF->off nicht vorenthalten:
attr LichtAussenTerrasse eventMap ON:on OFF:off
lg Gernot
Danke Gernot, werde ich beim nächsten Device ausprobieren.
VG Achim
Zitat von: Mihca am 06 Juni 2021, 09:51:54
vielen Dank. Ich bekomme dann in einem aufgehenden Fenster die Fehlermeldung "Please define HASH(0xaaaaf98c2ee0) first", die man nur mit "ok" quittieren kann, aber das Template wird nicht angenommen.
Sorry, ist ein Folgeproblem der Umstellung der IODev-Abfrage; update der attrTemplate kommt demnächst (es gab die Tage ein paar mehr, die über das Thema gestolpert sind).
Das mit dem define first hab ich auch.
Mir ist auch aufgefallen, dass zum Beispiel das iodev gelöscht wird.
Wenn man es von Hand wieder anlegt danach geht das Template setzen.
Ich hab aber noch ein Problem ich bekommen von einem tasmota device einen Fehler ins log geschrieben:
2021.06.07 21:10:45 3: Login denied for user >mqtt2-user< via bridge.mqtt2_192.168.30.113_61051
Komisch ist aber das alle anderen Geräte das gleichen User nehmen und auch das gleiche passwort, bei den übrigen 10 Geräten geht das alles ohne Problem.
Jemand ne Idee dazu?
Gibt ein Blacklist wie bei zum Beispiel fail2ban oder so, beim mqtt2-Server?
Zitat von: no_Legend am 07 Juni 2021, 21:16:21
Das mit dem define first hab ich auch.
Das sollte nach dem heutigen Update dann nicht mehr kommen.
Zitat
Mir ist auch aufgefallen, dass zum Beispiel das iodev gelöscht wird.
Da wird nichts gelöscht, dieses Attribut wird seit kurzem nur eben nicht mehr automatisch angelegt - das hatte das Problem verursacht, so dass in den attrTemplate die Auswertung geändert werden musste.
Zitat
Ich hab aber noch ein Problem ich bekommen von einem tasmota device einen Fehler ins log geschrieben:
Grundsätzlich ist es empfehlenswert, für völlig andere Probleme dann auch einen neuen Thread aufzumachen. Es gibt keine wirkliche "blacklist" bei MQTT2_SERVER, allerdings könnte ich mir vorstellen, dass "allowed" was damit zu tun hat - falls die IP-Adresse von diesem speziellen Gerät nicht von deinem allowed umfasst ist.
Falls Vertiefung dazu erforderlich ist: s.o. => neuer Thread (dmit Rudi das mitbekommt, denn dieser Thread ist ausdrücklich "gelöst" => uninteressant!)
Zitat von: Beta-User am 08 Juni 2021, 07:27:23
Das sollte nach dem heutigen Update dann nicht mehr kommen.
Da wird nichts gelöscht, dieses Attribut wird seit kurzem nur eben nicht mehr automatisch angelegt - das hatte das Problem verursacht, so dass in den attrTemplate die Auswertung geändert werden musste.
Das mit dem Löschen ist aber definitiv so. Vor dem Template steht es da, dann kommt der define first Fehler und dann ist das IODev weg.
Für das Login Problem mach ich einen anderen Beitrag auf. Danke.
Zitat von: no_Legend am 08 Juni 2021, 08:25:02
Das mit dem Löschen ist aber definitiv so. Vor dem Template steht es da, dann kommt der define first Fehler und dann ist das IODev weg.
Vielleicht zur Klarstellung: Das _Attriut_ IODev wird weder gelöscht, noch wird es vom autocreate-Prozess (neuerdings) angelegt.
Dafür wird ein Reading IODev angelegt. Das wird und wurde aber nicht ausgewertet, sondern in der Tat (wie alle anderen Readings bis auf eines) gelöscht.
Letzteres hat zwar keinen Einfluss auf das Problem hier, ist aber trotzdem eine Sache, die nicht so bleiben sollte => update folgt.