MQTT2 Sonoff Tasmota ButtonTopic Doppelklick

Begonnen von germanikus666, 12 Juni 2021, 20:49:17

Vorheriges Thema - Nächstes Thema

germanikus666

OK. Vielen Dank für die Unterstützung.
Was muss ich jetzt genau tun bzw. was wären die weiteren Schritte für das Troubleshooting?

rudolfkoenig

ZitatWas muss ich jetzt genau tun bzw. was wären die weiteren Schritte für das Troubleshooting?
Als erstes meine Frage beantworten (Ist dein FHEM aktuell?) Wenn ja, koenntest Du die o.g. Zeile mit MQTT2_SERVER_ReadDebug bei dir in der Kommandozeile eingeben, und schauen, ob ein Event generiert wird und ob ein Reading auftaucht.
Die kaputte readingsList Zeile mit json2nameValue wuerde ich entfernen, um keine sinnlosen Fehler in FHEM-Log zu hinterlegen.

germanikus666

Ja, FHEM ist aktuell. Habe es gerade nochmal überprüft.

Habe den Befehl ausgeführt und im Event-Log nachgeschaut und folgende Einträge gefunden.

2021.06.14 18:03:45 5: in:  PUBLISH: 0(27)(0)(19)cmnd/buero_d/POWER1:toggl
2021.06.14 18:03:45 4:   MQTT2_FHEM_Server debug PUBLISH cmnd/buero_d/POWER1::toggl
2021.06.14 18:04:07 5: in:  PUBLISH: 0(27)(0)(19)cmnd/buero_d/POWER1toggle
2021.06.14 18:04:07 4:   MQTT2_FHEM_Server_192.168.179.183_64938 buero PUBLISH cmnd/buero_d/POWER1:toggle
2021.06.14 18:04:16 5: in:  PUBLISH: 0(27)(0)(19)cmnd/buero_d/POWER1toggle
2021.06.14 18:04:16 4:   MQTT2_FHEM_Server_192.168.179.183_64938 buero PUBLISH cmnd/buero_d/POWER1:toggle
2021.06.14 18:04:18 5: in:  PUBLISH: 0(27)(0)(19)cmnd/buero_d/POWER1toggle
2021.06.14 18:04:18 4:   MQTT2_FHEM_Server_192.168.179.183_64938 buero PUBLISH cmnd/buero_d/POWER1:toggle
2021.06.14 18:04:43 5: in:  PUBLISH: 0(27)(0)(19)cmnd/buero_d/POWER1toggle
2021.06.14 18:04:43 4:   MQTT2_FHEM_Server_192.168.179.183_64938 buero PUBLISH cmnd/buero_d/POWER1:toggle
2021.06.14 18:04:46 5: in:  PUBLISH: 0(27)(0)(19)cmnd/buero_d/POWER1toggle
2021.06.14 18:04:46 4:   MQTT2_FHEM_Server_192.168.179.183_64938 buero PUBLISH cmnd/buero_d/POWER1:toggle
2021.06.14 18:05:06 5: in:  PUBLISH: 0(27)(0)(19)cmnd/buero_d/POWER1toggle
2021.06.14 18:05:06 4:   MQTT2_FHEM_Server_192.168.179.183_64938 buero PUBLISH cmnd/buero_d/POWER1:toggle
2021.06.14 18:05:28 5: in:  PUBLISH: 0(27)(0)(19)cmnd/buero_d/POWER1toggle
2021.06.14 18:05:28 4:   MQTT2_FHEM_Server debug PUBLISH cmnd/buero_d/POWER1:toggle

Beta-User

Hm, also ich bin mir ja immer noch nicht sicher, ob es eine gute Idee ist, Publish und Subscribe _auf demselben Topic (für denselben Client)_ zu haben, oder deute ich das list falsch?
MAn. tut M2S gut daran, sowas zu verhindern (falls es Absicht ist), weil man sich sonst "bequem" Schleifen bauen kann.

Für diverse Tastendrücke gibt es zum einen SetOptions in Tasmota (https://tasmota.github.io/docs/Buttons-and-Switches/#changing-default-functionality), und wenn es damit nicht hinhaut, wären m.E. "rules" die bessere Alternative, statt die Info erst per MQTT zu versenden, um dann _auf demselben Device_ eine Schaltaktion auszulösen.

Just my2ct.
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

germanikus666

Das Szenario sieht eigentlich so aus..

Doppelklick am sonoff sendet per MQTT ein toggle an den Fhem Server.

Dort gibt es ein notify was dann eine Aktion auf einem anderen device (shelly 2.5) ausführt. In meinem Fall fährt der Rolladen runter.

Beta-User

#20
Was spricht dann in diesem Szenarium dagegen, einen anderen Topic zu nehmen als grade den, den der Tasmota subscribed hat?
(Ergänzend: einen, der nicht grade "cmnd" enthält?)
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

germanikus666

Gute Idee. An sich spricht gar nichts dagegen. Ich muss nur schauen, wie das genau funktioniert über die tasmota konsole.
Ich teste das mal und gebe ein Feedback.


germanikus666

#22
Kleines Update. Mit den Rules hat es nicht funktioniert.

Ich habe beim MQTT2-Server das attribut ignoreRegexp cmnd/[^:"]+: entfernt.
Und siehe da es funktioniert :-)

Internals:
   CFGFN     
   CID        buero
   DEF        buero
   DEVICETOPIC buero
   FUUID      60c8c9c5-f33f-b329-7491-dcecabfeec0fd6b2
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 459
   MQTT2_FHEM_Server_TIME 2021-06-15 17:46:47
   MSGCNT     459
   NAME       buero
   NR         817
   STATE      off
   TYPE       MQTT2_DEVICE
   JSONMAP:
     Channel_0  0
     Channel_1  0
     Channel_2  0
     Channel_3  0
     Channel_4  0
     Color      0
     Dimmer     0
     HSBColor   0
     POWER1     0
     POWER2     0
     POWER3     0
     POWER4     0
   OLDREADINGS:
   READINGS:
     2021-06-15 17:39:49   IODev           MQTT2_FHEM_Server
     2021-06-15 17:44:56   POWER1          toggle
     2021-06-15 17:45:24   POWER2          toggle
     2021-06-15 17:43:38   SaveData        on
     2021-06-15 17:43:38   SetOption26     on
     2021-06-15 17:43:38   StateText1      off
     2021-06-15 17:43:38   StateText2      on
     2021-06-15 17:43:38   StateText3      toggle
     2021-06-15 17:43:38   StateText4      hold
     2021-06-15 17:46:45   StatusFWR_Boot  7
     2021-06-15 17:46:45   StatusFWR_BuildDateTime 2019.12.25 12:47:07
     2021-06-15 17:46:45   StatusFWR_CR    384/699
     2021-06-15 17:46:45   StatusFWR_Core  2_6_1
     2021-06-15 17:46:45   StatusFWR_Hardware ESP8285
     2021-06-15 17:46:45   StatusFWR_SDK   2.2.2-dev(38a443e)
     2021-06-15 17:46:45   StatusFWR_Version 8.1.0(tasmota)
     2021-06-15 17:46:45   StatusLOG_LogHost 192.168.179.89
     2021-06-15 17:46:45   StatusLOG_LogPort 514
     2021-06-15 17:46:45   StatusLOG_MqttLog 0
     2021-06-15 17:46:45   StatusLOG_Resolution 558180C0
     2021-06-15 17:46:45   StatusLOG_SSId_1 ruppif
     2021-06-15 17:46:45   StatusLOG_SSId_2 ruppib
     2021-06-15 17:46:45   StatusLOG_SerialLog 2
     2021-06-15 17:46:45   StatusLOG_SetOption_1 0400880B
     2021-06-15 17:46:45   StatusLOG_SetOption_2 1405C8000100060000005AFF000000000000
     2021-06-15 17:46:45   StatusLOG_SetOption_3 00000080
     2021-06-15 17:46:45   StatusLOG_SetOption_4 00006000
     2021-06-15 17:46:45   StatusLOG_SysLog 0
     2021-06-15 17:46:45   StatusLOG_TelePeriod 300
     2021-06-15 17:46:45   StatusLOG_WebLog 2
     2021-06-15 17:46:46   StatusMEM_Drivers 1,2,3,4,5,6,7,8,9,10,12,16,18,19,20,21,22,24,26,29
     2021-06-15 17:46:46   StatusMEM_Features_1 00000407
     2021-06-15 17:46:46   StatusMEM_Features_2 8FDAE397
     2021-06-15 17:46:46   StatusMEM_Features_3 043683A0
     2021-06-15 17:46:46   StatusMEM_Features_4 22B617CD
     2021-06-15 17:46:46   StatusMEM_Features_5 01001BC0
     2021-06-15 17:46:46   StatusMEM_Features_6 00007881
     2021-06-15 17:46:46   StatusMEM_FlashChipId 144051
     2021-06-15 17:46:46   StatusMEM_FlashMode 3
     2021-06-15 17:46:46   StatusMEM_FlashSize 1024
     2021-06-15 17:46:46   StatusMEM_Free  436
     2021-06-15 17:46:46   StatusMEM_Heap  24
     2021-06-15 17:46:46   StatusMEM_ProgramFlashSize 1024
     2021-06-15 17:46:46   StatusMEM_ProgramSize 567
     2021-06-15 17:46:46   StatusMEM_Sensors 1,2,3,4,5,6,7,8,9,10,14,15,17,18,20,22,26,34
     2021-06-15 17:46:46   StatusMQT_KEEPALIVE 30
     2021-06-15 17:46:46   StatusMQT_MAX_PACKET_SIZE 1000
     2021-06-15 17:46:46   StatusMQT_MqttClient buero
     2021-06-15 17:46:46   StatusMQT_MqttClientMask buero
     2021-06-15 17:46:46   StatusMQT_MqttCount 1
     2021-06-15 17:46:46   StatusMQT_MqttHost 192.168.179.89
     2021-06-15 17:46:46   StatusMQT_MqttPort 1883
     2021-06-15 17:46:46   StatusMQT_MqttUser DVES_USER
     2021-06-15 17:46:46   StatusNET_DNSServer 192.168.179.2
     2021-06-15 17:46:46   StatusNET_Gateway 192.168.179.2
     2021-06-15 17:46:46   StatusNET_Hostname buero-8058
     2021-06-15 17:46:46   StatusNET_IPAddress 192.168.179.183
     2021-06-15 17:46:46   StatusNET_Mac   DC:4F:22:DE:9F:7A
     2021-06-15 17:46:46   StatusNET_Subnetmask 255.255.255.0
     2021-06-15 17:46:46   StatusNET_Webserver 2
     2021-06-15 17:46:46   StatusNET_WifiConfig 5
     2021-06-15 17:46:45   StatusPRM_Baudrate 115200
     2021-06-15 17:46:45   StatusPRM_BootCount 26
     2021-06-15 17:46:45   StatusPRM_CfgHolder 4617
     2021-06-15 17:46:45   StatusPRM_GroupTopic sonoffs
     2021-06-15 17:46:45   StatusPRM_OtaUrl http://192.168.179.89:9999/data/firmwares/tasmota.bin
     2021-06-15 17:46:45   StatusPRM_RestartReason Software/System restart
     2021-06-15 17:46:45   StatusPRM_SaveAddress F4000
     2021-06-15 17:46:45   StatusPRM_SaveCount 2984
     2021-06-15 17:46:45   StatusPRM_Sleep 50
     2021-06-15 17:46:45   StatusPRM_StartupUTC 2021-06-15T15:41:52
     2021-06-15 17:46:45   StatusPRM_Uptime 0T00:04:53
     2021-06-15 17:46:47   StatusSNS_Time  2021-06-15T16:46:45
     2021-06-15 17:46:47   StatusSTS_Heap  24
     2021-06-15 17:46:47   StatusSTS_LoadAvg 19
     2021-06-15 17:46:47   StatusSTS_MqttCount 1
     2021-06-15 17:46:47   StatusSTS_POWER1 off
     2021-06-15 17:46:47   StatusSTS_POWER2 off
     2021-06-15 17:46:47   StatusSTS_Sleep 50
     2021-06-15 17:46:47   StatusSTS_SleepMode Dynamic
     2021-06-15 17:46:47   StatusSTS_Time  2021-06-15T16:46:45
     2021-06-15 17:46:47   StatusSTS_Uptime 0T00:04:53
     2021-06-15 17:46:47   StatusSTS_UptimeSec 293
     2021-06-15 17:46:47   StatusSTS_Wifi_AP 2
     2021-06-15 17:46:47   StatusSTS_Wifi_BSSId 0C:80:63:C5:86:6C
     2021-06-15 17:46:47   StatusSTS_Wifi_Channel 1
     2021-06-15 17:46:47   StatusSTS_Wifi_Downtime 0T00:00:07
     2021-06-15 17:46:47   StatusSTS_Wifi_LinkCount 1
     2021-06-15 17:46:47   StatusSTS_Wifi_RSSI 100
     2021-06-15 17:46:47   StatusSTS_Wifi_SSId ruppib
     2021-06-15 17:46:47   StatusSTS_Wifi_Signal -48
     2021-06-15 17:46:46   StatusTIM_EndDST Sun Oct 31 03:00:00 2021
     2021-06-15 17:46:46   StatusTIM_Local Tue Jun 15 16:46:45 2021
     2021-06-15 17:46:46   StatusTIM_StartDST Sun Mar 28 02:00:00 2021
     2021-06-15 17:46:46   StatusTIM_Sunrise 04:15
     2021-06-15 17:46:46   StatusTIM_Sunset 20:44
     2021-06-15 17:46:46   StatusTIM_Timezone +01:00
     2021-06-15 17:46:46   StatusTIM_UTC   Tue Jun 15 15:46:45 2021
     2021-06-15 17:46:45   Status_ButtonRetain 0
     2021-06-15 17:46:45   Status_ButtonTopic buero_d
     2021-06-15 17:46:45   Status_FriendlyName_1 buero
     2021-06-15 17:46:45   Status_FriendlyName_2 buero2
     2021-06-15 17:46:45   Status_LedMask  FFFF
     2021-06-15 17:46:45   Status_LedState 1
     2021-06-15 17:46:45   Status_Module   29
     2021-06-15 17:46:45   Status_Power    0
     2021-06-15 17:46:45   Status_PowerOnState 3
     2021-06-15 17:46:45   Status_PowerRetain 0
     2021-06-15 17:46:45   Status_SaveData 1
     2021-06-15 17:46:45   Status_SaveState 1
     2021-06-15 17:46:45   Status_SensorRetain 0
     2021-06-15 17:46:45   Status_SwitchMode_1 0
     2021-06-15 17:46:45   Status_SwitchMode_2 0
     2021-06-15 17:46:45   Status_SwitchMode_3 0
     2021-06-15 17:46:45   Status_SwitchMode_4 0
     2021-06-15 17:46:45   Status_SwitchMode_5 0
     2021-06-15 17:46:45   Status_SwitchMode_6 0
     2021-06-15 17:46:45   Status_SwitchMode_7 0
     2021-06-15 17:46:45   Status_SwitchMode_8 0
     2021-06-15 17:46:45   Status_SwitchRetain 0
     2021-06-15 17:46:45   Status_SwitchTopic 0
     2021-06-15 17:46:45   Status_Topic    buero
     2021-06-15 17:46:35   associatedWith  buero2
     2021-06-15 17:43:33   attrTemplateVersion 20200529
     2021-06-15 17:44:32   state           off
     2021-06-15 17:43:33   subscriptions   cmnd/buero/# cmnd/buero_fb/# cmnd/sonoffs/#
Attributes:
   autocreate 1
   comment    Channel 1 for MQTT2_buero, see also MQTT2_buero_CH2
   genericDeviceType switch
   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 HSBColor:0 Color:0
   model      tasmota_2channel_split
   readingList tele/buero/LWT:.* LWT
  tele/buero/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/buero/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
  tele/buero/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
  tele/buero/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
  stat/buero/POWER1:.* state
  stat/buero/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
buero:stat/buero/STATUS:.* { json2nameValue($EVENT) }
buero:stat/buero/STATUS1:.* { json2nameValue($EVENT) }
buero:stat/buero/STATUS2:.* { json2nameValue($EVENT) }
buero:stat/buero/STATUS3:.* { json2nameValue($EVENT) }
buero:stat/buero/STATUS4:.* { json2nameValue($EVENT) }
buero:stat/buero/STATUS5:.* { json2nameValue($EVENT) }
buero:stat/buero/STATUS6:.* { json2nameValue($EVENT) }
buero:stat/buero/STATUS7:.* { json2nameValue($EVENT) }
buero:stat/buero/STATUS10:.* { json2nameValue($EVENT) }
buero:stat/buero/STATUS11:.* { json2nameValue($EVENT) }
buero:cmnd/buero_d/POWER1:.* POWER1
buero:cmnd/buero_d/POWER2:.* POWER2
   room       99_MQTT2_DEVICE
   setList    off:noArg    cmnd/buero/POWER1 0
  on:noArg     cmnd/buero/POWER1 1
  toggle:noArg cmnd/buero/POWER1 2
  setOtaUrl:textField cmnd/buero/OtaUrl $EVTPART1
  upgrade:noArg   cmnd/buero/upgrade 1
   setStateList on off toggle

germanikus666

Jetzt muss ich nur schauen, warum die CPU Last so hoch.
Der Fhem Server ist nun wirklich sehr träge und reagiert manchmal gar nicht.

Als ersten Lösungsansatz habe ich das Attribut event-on-change-reading bei den vorhandenen devices gesetzt. Das autocreate habe ich auch bereits abgeschaltet.

Verbose Level habe ich auf 0 gesetzt.

Hat jemand noch eine Idee was man noch zun könnte.


Beta-User

Wie bereits mehrfach hier geschrieben, ist es mAn. schlicht ein Designfehler, publish und subscribe _von demselben Device_ auf denselben Topic zu legen => Dauerschleifengefahr...

(wenn du RAW-Events am Server aktivierst, müsste da ggf. auch in FHEMWEB "Dauerfeuer" zu sehen sein, falls das die Ursache ist; alterntiv: den MQTT-Verkehr mit mosquitto_sub anschauen).

Löse es über rules und nimm einen anderen Präfix wie cmnd. Das cmnd gehört mAn. wieder in ignoreRegexp rein. (cmnd wir mAn. deswegen genutzt, weil damit die Tasmota-Devices direkt miteinander kommunizieren können. Da ist es auch ok, weil einen in diesem Falls sowieso nur interessiert, _dass_ (bzw. wie) am Zieldevice geschaltet wurde. Hier ist es aber was anderes und daher mAn. auch anders zu lösen...
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

rudolfkoenig

ZitatHat jemand noch eine Idee was man noch zun könnte.
"attr global verbose 0" ist im Normalfall grob fahrlaessig, damit unterdrueckt man Fehlermeldungen, ich betrachte sogar alles unter 3 als falsch.

Ich wuerde als erstes den Event-Monitor beobachten, und nachdem ich verstanden habe, wer  wieviele Events generiert, ueber event-on-change-reading fuer einzelne Geraete nachdenken. event-on-* ist mAn eine Notbremse fuer schlecht geschriebene Module oder nicht konfigurierbare Endgeraete. Ich brauche sowas in meiner Installation nicht.

Als naechstes wuerde ich "attr global mseclog 1" und "attr global verbose 4" (oder verbose 5) einschalten, und mit "tail -f /opt/fhem/logs/fhem-2021-06.log" die Stellen identifizieren, wo es "klemmt". Und diese dann zu einem sinnvollen Verhalten motivieren.

germanikus666

Cool danke für die vielen Tipps. Sehr gute Community hier.
Ich werde das in den nächsten Tagen testen. Den Umstieg auf MQTT2 hätte ich mir einfacherer vorgestellt. ;D ::)
Ist halt leider ein gewachsenes System was ist betreibe.

Mit dem verbose wollte ich erstmal die Nachrichtenfllut eindämmen.