FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: Maxl am 12 Januar 2021, 21:15:20

Titel: HM-SEN-MDIR-O soll Shelly 4Pro triggern
Beitrag von: Maxl am 12 Januar 2021, 21:15:20
Hallo,

ich möchte mit dem HM Bewegungsmelder und dem Eingang eines Shelly 4 Pro einen Ausgang dessen triggern, im Eventmonitor wird zwar
ein "motion" ausgelöst aber das Shelly macht nichts, in FHEM kann ich es aber bedienen, die Anbindung MQTT müste also funtionieren
der Code wurde bei der Eingabe nicht beanstandet, es könnte aber trotzdem ein kleiner Fehler in der Abfrage sein, nur komme ich nicht drauf.

Kann mir jemand helfen

2021-01-12 21:04:39.014 MQTT2_DEVICE MQTT2_shellyrgbw2_42F717 timer_remaining: 3599
2021-01-12 21:04:39.014 MQTT2_DEVICE MQTT2_shellyrgbw2_42F717 rgb: FF07E1
2021-01-12 21:04:39.680 CUL_HM Bewegungsmelder_EG battery: ok
2021-01-12 21:04:39.680 CUL_HM Bewegungsmelder_EG brightness: 33
2021-01-12 21:04:39.680 CUL_HM Bewegungsmelder_EG commState: CMDs_done
2021-01-12 21:04:39.680 CUL_HM Bewegungsmelder_EG motion: on (to nanoCUL)
2021-01-12 21:04:39.680 CUL_HM Bewegungsmelder_EG motionCount: 35_next:15s
2021-01-12 21:04:39.680 CUL_HM Bewegungsmelder_EG motion
2021-01-12 21:04:39.680 CUL_HM Bewegungsmelder_EG trigDst_F11234: noConfig
2021-01-12 21:04:39.680 CUL_HM Bewegungsmelder_EG trigger_cnt: 35
2021-01-12 21:04:41.907 at checkNETIO1 Next: 21:05:06


define Licht_an_EG DOIF (([Bewegungsmelder_EG:?motion] and [Licht_Haustuer:state] ne "on" and \
  [?Bewegungsmelder_EG:brightness] < 68) or [MQTT2_shelly4pro_4D114C:input0] ne "on") (set MQTT2_shelly4pro_4D114C relay0 on)
setuuid Licht_an_EG 5ffdfd03-f33f-2b3e-dea7-3b4bc3b1077e5ea6
Titel: Antw:HM-SEN-MDIR-O soll Shelly 4Pro triggern
Beitrag von: amenomade am 13 Januar 2021, 00:27:43
Bitte ein vollständiges "list" des DOIFs immer liefern. Es gibt bei DOIF so viele Attribute, die das Verhalten beeinflüssen, dass es nötig ist.
Zitat[Bewegungsmelder_EG:?motion]
Das ist falsch. Die richtige Syntax für Event-Triggerung ist [device:"ReadingEventRegex"] oder ["deviceRegex:ReadingEventRegex"]
Siehe CommandRef

Und Du brauchst vielleicht ein "do always", sonst so lange [MQTT2_shelly4pro_4D114C:input0] ne "on" belibt das DOIF stehend.
Oder deine Klammern sind falsch gesetzt.

Also, alles in allem, zur weitere Hilfe, "list Licht_an_EG"
Titel: Antw:HM-SEN-MDIR-O soll Shelly 4Pro triggern
Beitrag von: Maxl am 14 Januar 2021, 18:09:59
Hallo,

damals ohne Shelly hat es so funktioniert, hier das vollständige DO IF

define Licht_Haustuer CUL_HM 353C4B08
attr Licht_Haustuer model HM-MOD-Re-8
define Licht_Garten CUL_HM 353C4B07
attr Licht_Garten model HM-MOD-Re-8

define Licht_an_EG_UG DOIF (\
  ([Bewegungsmelder_UG:?motion] and \
  [Licht_Haustuer:state] ne "on" and \
  [?Bewegungsmelder_UG:brightness] < 68) or \
  [Schalter_Haustuer_innen:?Short]) \
  ((set Licht_Haustuer,Licht_Garten on-for-timer 30))


anstatt  den <<[Licht_Haustuer:state] ne "on">> und <<set Licht_Haustuer,Licht_Garten on-for-timer 30>> möchte ich nun
das SHELLY4 verwenden (als MQTT device verbunden), jedoch weiß ich nicht wie man dies im DO IF abzufragen hat.
define MQTT2_shelly4pro_4D114C MQTT2_DEVICE shelly4pro_4D114C
Titel: Antw:HM-SEN-MDIR-O soll Shelly 4Pro triggern
Beitrag von: Otto123 am 14 Januar 2021, 18:15:36
ZitatEreignissteuerung über Auswertung von Events   back

Eine Alternative zur Auswertung von Status oder Readings ist das Auswerten von Ereignissen (Events) mit Hilfe von regulären Ausdrücken. Der Suchstring wird als regulärer Ausdruck in Anführungszeichen angegeben. Die Syntax lautet: [<devicename>:"<regex>"]

Anwendungsbeispiel: wie oben, jedoch wird hier nur das Ereignis (welches im Eventmonitor erscheint) ausgewertet und nicht der Status von "remotecontrol" wie im vorherigen Beispiel

define di_garage DOIF ([remotecontrol:"on"]) (set garage on) DOELSEIF ([remotecontrol:"off"]) (set garage off)

Perl-Modus:
define di_garage DOIF {if ([remotecontrol:"on"]) {fhem_set"garage on"} elsif ([remotecontrol:"off"]) {fhem_set"garage off"}}

In diesem Beispiel wird nach dem Vorkommen von "on" innerhalb des Events gesucht. Falls "on" gefunden wird, wird der Ausdruck wahr und der if-Fall wird ausgeführt, ansonsten wird der else-if-Fall entsprechend ausgewertet. Die Auswertung von reinen Ereignissen bietet sich dann an, wenn ein Modul keinen Status oder Readings benutzt, die man abfragen kann, wie z. B. beim Modul "sequence". Die Angabe von regulären Ausdrücken kann recht komplex werden und würde die Aufzählung aller Möglichkeiten an dieser Stelle den Rahmen sprengen. Weitere Informationen zu regulären Ausdrücken sollten in der Perl-Dokumentation nachgeschlagen werden. Die logische Verknüpfung "and" mehrerer Ereignisse ist nicht sinnvoll, da zu einem Zeitpunkt immer nur ein Ereignis zutreffen kann.

Die alte Syntax [<devicename>:?<regex>] wird aus Kompatibilitätsgründen noch unterstützt, sollte aber nicht mehr benutzt werden.

Sollen Events verschiedener Devices ausgewertet werden, so lässt sich folgende Syntax anwenden: ["<device regex>:<event regex>"]
::)
Und wir hätten gerne ein list kein Raw Def :) https://forum.fhem.de/index.php/topic,71806.0.html