[gelöst] Sonoff Mini Tasmota 9.4.0 MQTT2 bleibt reading state in set_on/set_off

Begonnen von Mihca, 05 Juni 2021, 18:19:19

Vorheriges Thema - Nächstes Thema

Mihca

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
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

supernova1963


Mihca

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.
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

supernova1963

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.

Mihca

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
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

mike1969bln

Guten Morgen,

Es gibt ein attrtemplate mit dem man die Kleinschreibung einschalten kann: tasmota_set_lowercase_texts_and_state1.

Mihca

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.
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

Mihca

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
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

supernova1963

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

Mihca

Danke Gernot, werde ich beim nächsten Device ausprobieren.

VG Achim
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 22.04 Perl 5.34, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

Beta-User

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).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

no_Legend

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?
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Beta-User

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!)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

no_Legend

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.
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files