WORKSHOP: MQTT und Sonoffbridge in Verbindung mit Bewegungsmeldern - 433Mhz

Begonnen von Kuehnhackel, 04 Januar 2021, 20:29:33

Vorheriges Thema - Nächstes Thema

Beta-User

Na ja, #3 ist immerhin schon nahe dran.

Warum der Link? Weil auf der Seite u.A. auch erklärt wird, wie das mit den Regex funktioniert und du dir da erklären lassen kannst, wie das zu lesen wäre.

Habe mal den einen Teil ergänzt:
https://regex101.com/r/DfejUB/1

Zum Verständnis des Attributs noch: Da wird der komplette CID:topic:Payload-String durchsucht, nicht aber das Reading, das wir "gebastelt" haben. Deswegen ist es wichtig, dass das möglichst "trennscharf" ist.

Weiterer Tipp: Du kannst in ignoreRegep "normales Regex" verwenden, also alternative Teile in einer Klammer zusammenfassen: (entweder|oder).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Kuehnhackel

Ich bin alles noch einmal durchgegangen, bekomme es nicht hin.

es bleibt dabei:
MQTT2_DVES_BF00E2 discovery_sensors: {"sn":{"Time":"2021-01-05T16:21:52"},"ver":1}

Wir sitzen jetzt hier schon den ganzen Tag und vergeuden Deine und meine Zeit.
Ich finde es toll wieviel Mühe du dir gibst und mir versuchst das ein oder andere näher zubringen.
Aber diesen Workshop machen wir beide hier gerade ganz alleine und die die mitlesen, lachen sich wahrscheinlich tot, holen eine Tüte Popcorn und ein Getränk raus, amüsieren sich und denken, man was ist der blöd.






TomLee

Vlt. hab ich auch was nicht verstanden, habt ihr überhaupt mal geschaut ob man den discovery-Zweig einfach abschalten kann ?

Ich find auf Anhieb das hier:

ZitatSetOption19    Home Assistant automatic discovery.
WARNING On version 6.4.1.x enabling may cause a watchdog reset if used on a device with a configured sensor
0 = disabled (default)
1 = enabled and also sets SetOption59 1
If you enable and then disable SetOption19, doing so does not set SetOption59= 0 and does not revert to default %prefix%/%topic%/ FullTopic


Gruß

Thomas

Beta-User

Es ist nicht auszuschließen, dass es Mitleser gibt, die sich amüsieren. Aber du bist ganz sicher nicht der Einzige, der mit den Zusammenhängen Schwierigkeiten hat!

Von daher danke ich dir - ganz egal, wie du weitermachen willst - für den Versuch!

Für mich geht es "relativ" schnell, weil ich weiß, nach was ich suchen muss. Daher jetzt mal die komplette ignoreRegexp, die hoffentlich auch dieses dusselige discovery-feature eliminiert:
cmnd/[^:"]+:|homeassistant/[^:"]+/config:|shellies/[^:"]+/command:|zigbee2mqtt/[^/]+/set:|milight/0x[0-9a-fA-F]{1,4}/.*/[0-8]:|tasmota/discovery/[^:"]+/(config|sensors):

Und hier noch eine readingList-Zeile für das separate MQTT2_DEVICE für den Kontakt:
tele/SonoffBridge/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...([A-Za-z0-9]+)...RfKey...D2210E..., ? { state=>"closed"} : undef }
Zitat von: TomLee am 05 Januar 2021, 16:38:41
Vlt. hab ich auch was nicht verstanden, habt ihr überhaupt mal geschaut ob man den discovery-Zweig einfach abschalten kann ?
Danke für den Hinweis!
Die Frage hätte ich auch noch gestellt, aber ignoreRegexp war sowieso ein Thema (wg. dem cmnd), und da dachte ich, es wäre sinnvoller, das auch an der Stelle zu ergänzen.
Besser ist es aber natürlich, wenn unnützes Zeug (aus FHEM-Sicht) erst gar nicht in FHEM aufschlägt. Allerdings hatte ich irgendwo aufgeschnappt, dass sich das neuerdings gar nicht abschalten läßt, es läßt sich nach meiner Kenntnis leider nicht (mehr) via SetOption oä. ausschalten, nur "umschalten" auf homeassistant-Modus, zumindest lese ich https://github.com/arendst/Tasmota/issues/9267 so).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

TomLee

Ich hab mal eine Wlan-Steckdose mit 9.1.0 aus der Schublade geholt:

17:00:02 MQT: tele/DVES_55F827/STATE = {"Time":"2021-01-05T17:00:02","Uptime":"4T02:54:16","UptimeSec":356056,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":24,"POWER1":"off","Wifi":{"AP":1,"SSId":"FBF","BSSId":"FE:EC:DA:FD:26:1A","Channel":3,"RSSI":76,"Signal":-62,"LinkCount":3,"Downtime":"0T00:00:17"}}
17:00:33 CMD: SetOption19 1
17:00:33 MQT: stat/DVES_55F827/RESULT = {"SetOption19":"on"}
17:00:34 MQT: homeassistant/switch/55F827_RL_1/config = {"name":"SonoffObi","stat_t":"tele/DVES_55F827/STATE","avty_t":"tele/DVES_55F827/LWT","pl_avail":"Online","pl_not_avail":"Offline","cmd_t":"cmnd/DVES_55F827/POWER1","val_tpl":"{{value_json.POWER1}}","pl_off":"off","pl_on":"on","uniq_id":"55F827_RL_1","dev":{"ids":["55F827"]}} (beibehalten)
17:00:34 MQT: homeassistant/sensor/55F827_status/config = {"name":"SonoffObi status","stat_t":"tele/DVES_55F827/HASS_STATE","avty_t":"tele/DVES_55F827/LWT","pl_avail":"Online","pl_not_avail":"Offline","json_attr_t":"tele/DVES_55F827/HASS_STATE","unit_of_meas":"%","val_tpl":"{{value_json['RSSI']}}","ic":"mdi:information-outline","uniq_id":"55F827_status","dev":{"ids":["55F827"],"name":"SonoffObi","mdl":"Generic","sw":"9.1.0(tasmota)","mf":"Tasmota"}} (beibehalten)
17:01:06 MQT: stat/DVES_55F827/RESULT = {"SetOption19":"off"}
17:01:07 LOG: Home Assistant MQTT Discovery disabled.


Sieht für mich nach ein/ausschalten aus, mehr kann ich dazu nicht sagen, zuvor hatte ich diesen Zweig bei mir noch nirgends gesehen gehabt, jetzt das erste mal nach dem "einschalten".

Beta-User

...mir ist der Topic bisher auch nur "indirekt" begegnet (habe aber auch nur "hochgeflashtes" 9.1 und 9.2 (3 Devices insges.)), und SetOption19 1 können wir auch gerne in das Basis-attrTemplate "reinknödeln", aber das ist jetzt schon der 2. oder 3. User, der mit dem Thema um's Eck kommt, wird Gründe haben... (und ignoreRegexp für homeassistant ist bei mir gesetzt...).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Kuehnhackel

Ich habe mit
define Kontakt MQTT2_DEVICE
ein Device angelegt

Die Readingslist ausgefüllt mit:
tele/SonoffBridge/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...([A-Za-z0-9]+)...RfKey...D2210E..., ? { state=>"closed"} : undef }

Aber empfangen tut er nur hier
2021-01-05 17:29:56 MQTT2_DEVICE MQTT2_DVES_BF00E2 tele_RESULT: {"Time":"2021-01-05T17:29:55","RfReceived":{"Sync":9700,"Low":500,"High":1360,"Data":"D2210E","RfKey":"None"}}

Beta-User

Sorry, da hatte ich nicht aufgepaßt; das muss hinter Data...
tele/SonoffBridge/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...D2210E...RfKey...([A-Za-z0-9]+)..., ? { state=>"closed"} : undef }
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Kuehnhackel

Habe jetzt durch die readinglist close und open
tele/SonoffBridge/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...D2210E...RfKey...([A-Za-z0-9]+)..., ? { state=>"closed"} : undef }
tele/SonoffBridge/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...D2210A...RfKey...([A-Za-z0-9]+)..., ? { state=>"opened"} : undef }


um dann auf den Ursprung zurück zukommen, nämlich den Bewegungsmelder zu erkennen, bn ich wie folgt vorgegangen:
define Bewegung_Kueche MQTT2_DEVICE

readingsliste angepasst
tele/SonoffBridge/RESULT:.* { $EVENT =~ m,..RfReceived....Sync..([A-Za-z0-9]+)..Low..([\d]+)..High..([\d]+)..Data...D3D5DE...RfKey...([A-Za-z0-9]+)..., ? { state=>"Bewegung"} : undef }
somit könnte ich das ja im DOIF "leichter" verarbeiten, aber der schaltet ja nur "ein". Theoretisch müsste man den innerhalb von FHEM resetten, z.b. nach 10 sek

Geht das? Und wenn ja wie?

Beta-User

Hmmm, hier würde ich einen anderen Weg gehen, nämlich dieses Ding immer triggern lassen, also kein "eocr .*" dafür setzen, aber das ganze dann auch wieder in einem separaten Device abhandeln. Da dieses Device nur dieses Reading hat, sollte das klappen, oder?
Man könnte es auch zurücksetzen, hier ggf. "am einfachsten" mit einem userReadings, das ein (benanntes) sleep anlegt und dann nach Zeitablauf state auf "nomotion" setzt. Benanntes sleep deswegen, weil das dann ein ggf. laufendes erneuern sollte, wenn nochmal motion gemeldet wird (trigger passend setzen)...

Ich würde übrigens empfehlen, einen "internationalisierten" Reading-Wert zu verwenden, also "motion" und ggf. "nomotion" oä. (müßte auch nachsehen, wie das z.B. HUEDevice macht).

So langsam kommst du klar, was ich mitteilen will, oder täuscht das?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Kuehnhackel

Zitat von: Beta-User am 05 Januar 2021, 18:04:55
So langsam kommst du klar, was ich mitteilen will, oder täuscht das?

Ja, alles gut. Das Problem ist ganz einfach, dass man diese "Sachen" zu selten braucht um soviel Aufwand zu betreiben, dass man es "auswendig" kann. Es ist auch nicht alles so für die "Unwissenden" beschrieben, dass man alleine zurechtkommt. Habe jetzt meinen FHEM seit über einem Jahr laufen und es entwickeln sich immer andere Dinge. Wie z.B. die Geschichte mit dem LED-Stripe, wo 50% ausreichen, wenn niemand zuhause ist und man nur Anwesenheit "vortäuschen" will und bei Bewegung auf 100% geht.
In der ganzen unteren Etage gibt es nur einen Schalter, den Rest macht FHEM. Angefangen hatte ich mit "Funksteckdosen", die aus dem Gehäuse genommen und auf eine Montageplatte in einem separaten Gehäuse verbaut. Nun läuft fast alles über MQTT2 und Sprachsteuerung. Selbst IR-Sender sind im Betrieb, die u.a. meine Dunsthaube oder Lichtsäulen steuern. Was nicht klappt die Klima per IR zu steuern. Aber gibt es mittlerweile andere Lösungsansätze.

Kuehnhackel

Kann es sein, dass nachdem wir jetzt die Readinglist umgestellt haben, meine Bewegungsmelder in den DOIF´s nicht mehr ekannt werden?

defmod LUX_LED_Kueche DOIF (["^MQTT2_DVES_BF00E2$:^Data:.D3D5DE"] and [?16:30-21:30] and [?Lux_Dachboden:BH1750_Illuminance]< 1100 ) \
   (set H801_Kueche pct 100) \
   (set H801_Kueche pct 50) \
DOELSEIF  ([16:30-21:30] and [Lux_Dachboden:BH1750_Illuminance]< 50 and [$SELF:cmd] ne "1.1") \
   (set H801_Kueche pct 50) \
DOELSEIF (["^MQTT2_DVES_BF00E2$:^Data:.D3D5DE"] and [?21:31-16:29] and [?Lux_Dachboden:BH1750_Illuminance]< 1100) \
   (set H801_Kueche pct 50) \
   (set H801_Kueche off) \
DOELSE (set H801_Kueche off)
attr LUX_LED_Kueche do resetwait
attr LUX_LED_Kueche room Küche
attr LUX_LED_Kueche wait 0,300:0:0,300:0


Folgendes kommt ja in FHEM an
2021-01-05 19:05:36 MQTT2_DEVICE MQTT2_DVES_BF00E2 tele_RESULT: {"Time":"2021-01-05T19:05:36","RfReceived":{"Sync":12520,"Low":440,"High":1250,"Data":"D3D5DE","RfKey":"None"}}

Da würde dann die oben erwähnte Umstellung sehr helfen, wenn es eine Lösung gäbe  ;D ???

Beta-User

Zu DOIF bin ich bekennendermaßen "blind" und bitte darum, das hier auch nicht weiter zu vertiefen; kurz gesagt hast du aber ein neues Device, ein neues Reading und daher auch andere Events...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Kuehnhackel

Es gab doch mal attr timeout sek. Gibt es den nicht mehr? Weil damit konnte man wohl devices zurücksetzen. Habe ich so gelesen.

Kuehnhackel

Zitat von: Beta-User am 05 Januar 2021, 19:12:50
Zu DOIF bin ich bekennendermaßen "blind" und bitte darum, das hier auch nicht weiter zu vertiefen; kurz gesagt hast du aber ein neues Device, ein neues Reading und daher auch andere Events...

Sorry, zu spät  8)

[Bewegung_Kueche:state] eq "motion"

Es ist alles so einfach  ;D