(solved) SONOFF TH10 state aktualisieren auch wenn Schaltzustand unverändert

Begonnen von gadget, 30 Oktober 2023, 09:23:16

Vorheriges Thema - Nächstes Thema

gadget

Hallo,

Ich habe einen auf Tasmota geflashten SONOFF TH10 über MQTT am fhem-internen Broker angebunden. Schalten via fhem geht einwandfrei, Schaltzustand wird auch korrekt in fhem angezeigt. Ich hätte aber gerne den Schaltzustand (on/off) regelmäßig im Logfile, damit das vernünftig in einem Plot angezeigt wird.

Wenn ich mir die Tasomta Console anschaue, wird auch regelmäßig unter tele/tasmota_XYZ/STATE der JSON String gesendet, der u.a. den Schaltzustand unter POWER1 enthält. Mit dem MQTT Explorer sehe ich das auch auf dem MQTT Server ankommen, das reading "Time" wird auch aktualisiert. Leider aber nicht das Reading "state" und somit gibt es auch keinen Event. Das reading aktualisert sich nur, wenn tatsächlich geschaltet wird. Auch ein event-min-interval state:60 ändert daran nichts. Gibt es da einen Trick ?


List vom Device:

Internals:
   CID        DVES_06123D
   DEF        DVES_06123D
   FUUID      64fc7d42-f33f-81da-9cd3-d15a7903e3e8341c
   IODev      m2s
   LASTInputDev m2s
   MSGCNT     4152
   NAME       MQTT2_DVES_06123D
   NR         471
   STATE      off
   TYPE       MQTT2_DEVICE
   eventCount 1024
   m2s_CONN   m2s_192.168.179.111_58532
   m2s_MSGCNT 4152
   m2s_TIME   2023-10-30 09:16:54
   JSONMAP:
     Channel_0  0
     Channel_1  0
     Channel_2  0
     Channel_3  0
     Channel_4  0
     Channel_5  0
     Color      0
     Dimmer     0
     HSBColor   0
     POWER1     0
     POWER2     0
     POWER3     0
     POWER4     0
   READINGS:
     2023-10-12 09:46:43   BootCount       21
     2023-10-12 09:46:43   FallbackTopic   cmnd/DVES_06123D_fb/
     2023-10-12 09:46:43   GroupTopic      cmnd/%topic%/%prefix%/
     2023-10-30 09:16:54   Heap            24
     2023-10-12 09:46:43   Hostname        tasmota-06123D-0061
     2023-10-16 13:34:44   IODev           m2s
     2023-10-12 09:46:43   IPAddress       192.168.179.111
     2023-10-16 13:35:02   LWT             Online
     2023-10-30 09:16:54   LoadAvg         19
     2023-10-12 09:46:43   Module          Sonoff TH
     2023-10-30 09:16:54   MqttCount       2
     2023-09-09 16:22:34   OtaUrl          http://ota.tasmota.com/tasmota/tasmota.bin.gz
     2023-09-09 16:26:09   Password1       ****
     2023-09-09 16:26:09   Password2       ****
     2023-10-12 09:46:43   RestartReason   Software/System restart
     2023-10-30 08:54:02   Rule1_Free      511
     2023-10-30 08:54:02   Rule1_Length    0
     2023-10-30 08:54:02   Rule1_Once      off
     2023-10-30 08:54:02   Rule1_Rules    
     2023-10-30 08:54:02   Rule1_State     off
     2023-10-30 08:54:02   Rule1_StopOnError off
     2023-09-09 16:26:09   SSId1           mywifi
     2023-09-09 16:26:09   SSId2           mywifi2
     2023-09-09 16:13:52   SaveData        on
     2023-09-09 16:13:52   SetOption26     on
     2023-10-30 09:16:54   Sleep           50
     2023-10-30 09:16:54   SleepMode       Dynamic
     2023-09-09 16:13:51   StateText1      off
     2023-09-09 16:13:51   StateText2      on
     2023-09-09 16:13:51   StateText3      toggle
     2023-09-09 16:13:52   StateText4      hold
     2023-10-30 09:16:54   Time            2023-10-30T09:16:54
     2023-09-09 16:22:34   Upgrade         Version 9.1.0 from http://ota.tasmota.com/tasmota/tasmota.bin.gz
     2023-10-30 09:16:54   Uptime          18T00:30:31
     2023-10-30 09:16:54   UptimeSec       1557031
     2023-09-09 16:21:36   Vcc             3.418
     2023-10-12 09:46:43   Version         13.1.0.2(tasmota)
     2023-10-12 09:46:43   WebServerMode   Admin
     2023-10-30 09:16:54   Wifi_AP         2
     2023-10-30 09:16:54   Wifi_BSSId      DE:2C:6E:19:E9:B7
     2023-10-30 09:16:54   Wifi_Channel    6
     2023-10-30 09:16:54   Wifi_Downtime   0T00:00:18
     2023-10-30 09:16:54   Wifi_LinkCount  1
     2023-10-30 09:16:54   Wifi_Mode       11n
     2023-10-30 09:16:54   Wifi_RSSI       100
     2023-10-30 09:16:54   Wifi_SSId       mywifi
     2023-10-30 09:16:54   Wifi_Signal     -25
     2023-09-09 16:13:51   attrTemplateVersion 20210523
     2023-10-30 04:34:00   state           off
     2023-10-16 13:35:39   subscriptions   cmnd/%topic%/%prefix%/# cmnd/DVES_06123D_fb/# cmnd/tasmota_06123D/#
Attributes:
   alias      SONOFF TH1 Luftentfeuchter
   autocreate 0
   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_06123D/Backlog POWER1 1; delay '.$duration.'; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
   event-min-interval state:60
   event-on-change-reading state
   event-on-update-reading state
   icon       hue_filled_outlet
   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 Channel_5:0 HSBColor:0 Color:0
   model      tasmota_basic_state_power1
   readingList tele/tasmota_06123D/LWT:.* LWT
  tele/tasmota_06123D/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_06123D/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_06123D/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
  tele/tasmota_06123D/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
  stat/tasmota_06123D/POWER1:.* state
  stat/tasmota_06123D/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
   room       Heizungskeller,MQTT2_DEVICE
   setList    off:noArg    cmnd/tasmota_06123D/POWER1 0
  on:noArg     cmnd/tasmota_06123D/POWER1 1
  toggle:noArg cmnd/tasmota_06123D/POWER1 2
  setOtaUrl:textField cmnd/tasmota_06123D/OtaUrl $EVTPART1
  upgrade:noArg   cmnd/tasmota_06123D/upgrade 1
   setStateList on off toggle

rabehd

Auch funktionierende Lösungen kann man hinterfragen.

frober

Ich würde POWER1 nicht auf state schreiben. Evtl. hat das Nebenwirkungen.

Ansonsten mal event-on... etc. löschen und beobachten. Bzw. die Wechselwirkung diese Attribute in der Comref nachlesen.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

TomLee

Zitat von: gadget am 30 Oktober 2023, 09:23:16wird auch regelmäßig unter tele/tasmota_XYZ/STATE der JSON String gesendet,

Das dieser Topic regelmäßig gesendet wird ist einfach nur unnötig und das macht die Probleme, den würd ich einfach abschalten mit teleperiod 0 und die Verwendung irgendwelcher event-on-...-Attribute erübrigt sich meiner Erfahrung nach.



OT:

Folgenden Vorschlag hätt ich für die readingList um ein "sauberes Device" zu erhalten:
1.
Deine readingList-Einträge durch diese ersetzen:
attr MQTT2_DVES_06123D readingList tele/tasmota_06123D/LWT:.* LWT\
stat/tasmota_06123D/POWER1:.* state\
tele/tasmota_06123D/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/tasmota_06123D/INFO2:.* { $EVENT =~ m,IPAddress.:.(.*)..., ?  {ip=>$1} : undef }\
stat/tasmota_06123D.* {}\
tele/tasmota_06123D.* {}

2.
und einmal
deletereading MQTT2_DVES_06123D .*ausführen.

3.
Tasmota-Device einmal spannungslos machen oder im UI schalten

gadget

Danke für die Vorschläge !

Das Mapping für state ist nicht auf meinem Mist gewachsen sondern kommt vom verwendeten attrTemplate. Die Vorschläge oben haben leider alle nicht zum Ziel geführt, aber mehr durch Zufall bin ich nun drauf gekommen, dass das attrTemplate "tasmota_set_power1_state_to_power" funktioniert. Das fügt zusätzlich ein

attr MQTT2_DVES_06123D userReadings state:POWER:.* { lc(ReadingsVal($name,"POWER","")) }

ein.