[Gelöst] Sonoff RF Bridge und MQTT

Begonnen von eisi, 16 Oktober 2021, 19:14:38

Vorheriges Thema - Nächstes Thema

eisi

Hallo, ich habe mal wieder ein kleines (hoffentlich) Problem.

Ich habe eine Sonoff RF-Bridge, die per MQTT Daten an FHEM sendet.
3 Bewegungsmelder im Haus nutzen diese Bridge per 433Mhz. Alle geben einen anderen Datenwert raus:
RfReceived_Data oder Data: E7D74E zum Beispiel.

Wenn sich nun irgendwer im Haus bewegt und es dunkel genug ist, soll das FLurlicht für kurze Zeit angehen.

defmod Flur_Bewegung_oben DOIF ([MQTT2_Wlan_Bridge_01:Data] eq 'E7369E' and [MQTT2_Sensor_Schlafzimmer:BH1750_Illuminance]<=20 and [Licht_automatik] eq 'on') (set MQTT2_Wlan_Steckdose_21 on-for-timer 120;;set MQTT2_Wlan_Steckdose_20 on-for-timer 120)


Jetzt kommt das Problem:
Beim 1. Mal pro Bewegungsmelder geht es.
Sollte sich wer das 2. Mal durch denselben Bewegungsmelderbereich gehen, geht nichts.

Was ich schon gefunden habe:
Der Sonoff-RF gibt jedes Mal eine volle Meldung:


18:02:05.325 MQT: tele/Wlan-Bridge-01/RESULT = {"Time":"2021-10-16T18:02:05","RfReceived":{"Sync":12520,"Low":420,"High":1220,"Data":"E7D74E","RfKey":"None"}}


Nur in FHEM wird, wenn es derselbe Code ist, das Reading:  RfReceived_Data oder Data nicht geändert.
Es werden nur die Readings: Sync, Low, High und Time geändert.
Damit triggert das DOIF auch nicht.

Was kann man tun?
Lieben Gruß,
Ingo

3 x Rasp mit fhem 5.8 | 1 Rasp mit Kodi |1x Cube | 15 x MaxLan Thermostate und 18 Fensterschalter | 30 WLAN Schalter Sonoff | Diverse Sensoren mit Arduino | Tablet mit FTUI 2.6

Beta-User

Zitat von: eisi am 16 Oktober 2021, 19:14:38
Was kann man tun?
a) vollständige Infos liefern (z.B. wie event-on-change-Attribute gesetzt sind)?
b) im richtigen Bereich posten.

Das hier ist m.E. kein MQTT(2?)-"Problem", sondern eher ein Einsteiger-DOIF-Thema, das nach ELSE oder repeatsame riecht (nicht meine Stärke, würde das vermutlich über ein notify lösen, wenn man die Events kennen würde (=> Siehe a)))...
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

eisi

Zu a) Da habe ich bis eben nichts verstellt.
Zu b) Das ist kein DoIF Thema, da das DOIF nur dann getriggert werden kann, wenn sich der Wert für Data ändert, was er bis eben nicht tat. :-)

Lösung:
event-on-update-reading data

Damit wird auch der Datawert immer neu mitübertragen, auch wenn sich an dem Wert nichts geändert hat.
Aber Danke für den richtigen Pfad :-)
3 x Rasp mit fhem 5.8 | 1 Rasp mit Kodi |1x Cube | 15 x MaxLan Thermostate und 18 Fensterschalter | 30 WLAN Schalter Sonoff | Diverse Sensoren mit Arduino | Tablet mit FTUI 2.6

Beta-User

 ::) schön, wenn's irgendwie geholfen hat...

(da sind gleich ein paar Dinge "unsauber" formuliert, aber ohne a) tappe ich auch weiter nur im Dunkeln, wie es vorher "eingestellt" war. So habe ich immerhin die Idee, dass das ein MQTT2_DEVICE sein könnte, bei dem attrTemplate "tasmota_rf" gesetzt war... Das ist experimentell, und eventuell könnte ich das ja irgendwohin schreiben, wenn man mir sinnvolle Rückmeldung gibt, wie und wo...!)
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

eisi

Für a) Ich habe noch nie (seit 2015) daran etwas verstellt. Ich wusste nicht, dass es das so gibt.
Es ist ein MQTT2 Device mit Tasmota RF
Was möchtest du genau wissen?
Wenn es ums entwickeln geht, bin  ich gerne behilflich.
3 x Rasp mit fhem 5.8 | 1 Rasp mit Kodi |1x Cube | 15 x MaxLan Thermostate und 18 Fensterschalter | 30 WLAN Schalter Sonoff | Diverse Sensoren mit Arduino | Tablet mit FTUI 2.6

Beta-User

Also: MQTT2_DEVICE gibt es seit 2018. Das Device kann also nicht seit 2015 so eingestellt gewesen sein ;D ...

Ein RAW-listing wäre hilfreich. Ich kann sonst nur rätseln, warum bei dir "automatisch" event-on-change-reading auf (vermutlich) ".*" gestanden hat.
Wenn es nicht das attrTemplate war, kann es nur ein notify oä. sein, das das automatisch bei einem "global:DEFINED.*" setzt (was ja oft ok ist, aber leider eben keine 100%-Lösung). Aber auch das wäre kein MQTT-Thema ;D .
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

eisi

Ich meinte ja auch, dass ich seit 2015 mit FHEM herumbastle :-)
Ich habe aber kein Sonoff-RF Forum gefunden :-)


Internals:
   CID        Wlan_Bridge_01
   DEF        Wlan_Bridge_01
   DEVICETOPIC MQTT2_Wlan_Bridge_01
   FUUID      5d5e96f8-f33f-f5fa-7a45-1fe6b3e4134f14cb
   IODev      m2s
   LASTInputDev m2s
   MSGCNT     11670
   NAME       MQTT2_Wlan_Bridge_01
   NR         509
   STATE      192.168.0.50
   TYPE       MQTT2_DEVICE
   m2s_MSGCNT 11670
   m2s_TIME   2021-10-17 19:48:40
   READINGS:
     2020-01-19 18:15:36   Command         Unknown
     2021-10-17 19:34:37   Data            D69AA8
     2021-10-16 18:03:11   FallbackTopic   cmnd/Wlan-Bridge-01_fb/
     2021-10-16 18:08:31   GPIO12_0        None
     2021-10-16 18:08:31   GPIO14_0        None
     2021-10-16 18:07:56   GPIO1_0         None
     2021-10-16 18:08:31   GPIO2_0         None
     2021-10-16 18:07:56   GPIO3_0         None
     2021-10-16 18:08:31   GPIO4_0         None
     2021-10-16 18:08:31   GPIO5_0         None
     2021-10-16 18:03:11   GroupTopic      cmnd/sonoffs/
     2021-10-17 19:48:40   Heap            27
     2021-10-16 18:03:11   Hostname        Wlan-Bridge-01-6877
     2021-10-04 20:50:04   IODev           m2s
     2021-10-16 18:03:11   IPAddress       192.168.0.50
     2021-10-16 18:08:37   Info1_FallbackTopic cmnd/Wlan-Bridge-01_fb/
     2021-10-16 18:08:37   Info1_GroupTopic cmnd/sonoffs/
     2021-10-16 18:08:37   Info1_Module    Sonoff Bridge
     2021-10-16 18:08:37   Info1_Version   9.5.0(tasmota)
     2021-10-16 18:08:37   Info2_Hostname  Wlan-Bridge-01-6877
     2021-10-16 18:08:37   Info2_IPAddress 192.168.0.50
     2021-10-16 18:08:37   Info2_WebServerMode Admin
     2021-10-16 18:08:37   Info3_RestartReason Software/System restart
     2021-10-16 18:08:37   LWT             Online
     2021-10-17 19:48:40   LoadAvg         19
     2021-10-16 18:03:11   Module          Sonoff Basic
     2021-10-16 18:07:56   Module_2        Sonoff RF
     2021-10-16 18:08:31   Module_25       Sonoff Bridge
     2021-10-17 19:48:40   MqttCount       1
     2021-10-16 18:05:29   OtaUrl          http://ota.tasmota.com/tasmota/release/tasmota.bin.gz
     2021-10-16 18:08:37   POWER           
     2021-10-16 18:03:11   RestartReason   Software/System restart
     2021-10-16 17:31:45   RfKey1          Default sent
     2019-09-01 16:18:16   RfKey10         Set to default
     2019-09-01 16:18:19   RfKey11         Set to default
     2019-09-01 16:18:22   RfKey12         Set to default
     2019-09-01 15:47:45   RfKey14         Set to default
     2019-09-02 15:18:45   RfKey15         Learn failed
     2019-09-01 15:47:38   RfKey16         Set to default
     2019-09-01 18:09:17   RfKey2          Set to default
     2019-09-01 18:09:55   RfKey3          Set to default
     2019-09-01 18:10:00   RfKey4          Saved
     2019-09-01 18:10:21   RfKey5          Set to default
     2019-09-01 18:10:24   RfKey6          Set to default
     2019-09-01 16:15:05   RfKey7          Set to default
     2019-09-01 16:15:10   RfKey8          Set to default
     2019-09-01 16:18:12   RfKey9          Set to default
     2021-10-17 19:34:37   RfReceived_Data D69AA8
     2021-10-17 19:34:37   RfReceived_High 690
     2021-10-17 19:34:37   RfReceived_Low  320
     2021-10-17 19:34:37   RfReceived_RfKey None
     2021-10-17 19:34:37   RfReceived_Sync 5040
     2021-10-17 19:48:40   Sleep           50
     2021-10-17 19:48:40   SleepMode       Dynamic
     2021-10-17 19:48:40   Time            2021-10-17T18:48:40
     2021-10-16 18:05:29   Upgrade         Version 9.5.0 from http://ota.tasmota.com/tasmota/release/tasmota.bin.gz
     2021-10-17 19:48:40   Uptime          1T01:40:08
     2021-10-17 19:48:40   UptimeSec       92408
     2021-10-16 18:05:06   Vcc             3.504
     2021-10-16 18:03:11   Version         9.1.0(lite)
     2021-10-16 18:03:11   WebServerMode   Admin
     2021-10-17 19:48:40   Wifi_AP         1
     2021-10-17 19:48:40   Wifi_BSSId      7C:FF:4D:73:6C:3D
     2021-10-17 19:48:40   Wifi_Channel    5
     2021-10-17 19:48:40   Wifi_Downtime   0T00:00:03
     2021-10-17 19:48:40   Wifi_LinkCount  1
     2021-10-17 19:48:40   Wifi_Mode       11n
     2021-10-17 19:48:40   Wifi_RSSI       84
     2021-10-17 19:48:40   Wifi_SSId       eisenkraemer2
     2021-10-17 19:48:40   Wifi_Signal     -58
     2021-10-17 19:34:37   json_raw        {"Time":"2021-10-17T18:34:37","RfReceived":{"Sync":5040,"Low":320,"High":690,"Data":"D69AA8","RfKey":"None"}}
Attributes:
   IODev      m2s
   alias      Wlan-Bridge-1
   event-on-change-reading .*
   event-on-update-reading Data
   model      A_01d_tasmota_rf
   readingList tele/Wlan-Bridge-01/INFO.:.* { json2nameValue($EVENT) }
tele/Wlan-Bridge-01/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...([A-Za-z0-9]+)...RfKey...([^"]+)..., ? {"json_raw"=>$EVENT} : undef }
tele/Wlan-Bridge-01/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...([A-Za-z0-9]+)...RfKey...([^"]+)..., ? {"Data"=>"$4"} : undef }
tele/Wlan-Bridge-01/STATE:.* { json2nameValue($EVENT) }
tele/Wlan-Bridge-01/RESULT:.* { json2nameValue($EVENT) }
stat/Wlan-Bridge-01/RESULT:.* { json2nameValue($EVENT) }
Wlan_Bridge_01:tele/Wlan-Bridge-02/LWT:.* LWT
Wlan_Bridge_01:cmnd/Wlan-Bridge-02/POWER:.* POWER
Wlan_Bridge_01:tele/Wlan-Bridge-01/LWT:.* LWT
Wlan_Bridge_01:cmnd/Wlan-Bridge-01/POWER:.* POWER
   room       Funk2MQTT
   stateFormat IPAddress
3 x Rasp mit fhem 5.8 | 1 Rasp mit Kodi |1x Cube | 15 x MaxLan Thermostate und 18 Fensterschalter | 30 WLAN Schalter Sonoff | Diverse Sensoren mit Arduino | Tablet mit FTUI 2.6

Beta-User

OK, das war also eine ziemlich alte Version von dem tasmota_rf attrTemplate.

Nach etwas nachdenken finde ich nach wie vor das "event-on..." eigentlich für die generelle Anwendung so passend gesetzt ist - das ganze ist aber halt eigentlich eine Art "IO"-Device und von daher sollte/könnte man auch für jedes "richtige Device" eine eigene MQTT2_DEVICE-Instanz anlegen. Für jeden der Bewegungsmelder macht das z.B. Sinn. Aber dann müßte man jeweils den zugehörigen DATA-Teil separat abgreifen und könnte dann "klassische" Events wie  "motion" (und "nomotion", hier vermutlich dann über ein temporäres at, definiert in userReadings) in "state" schreiben.
Falls Interesse besteht: Es müßte eigentlich bereits einen Thread dazu geben; wenn der nichts hergibt, bitte hier nochmal durchklingeln... tasmota-rf ist halt schon etwas "nieschig" und speziell...
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