FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Qowy am 03 August 2020, 18:39:22

Titel: [Gelöst] DOIF Ausführen bei status mindestens eines Devices.
Beitrag von: Qowy am 03 August 2020, 18:39:22
Hi,
irgendwo versumpfe ich hier im DOIF Dschungel von Status Events usw :)



([Wetterstation:isRaining] eq "yes" and ["^Window"] eq "open")
({SendPush("og","Es regnet. Fenster offen: [@:a"^Window":state:"open"]","rain",600,"rainWindowWarning")})


Ich möchte dass dieses DOIF triggert, wenn mindestens ein Device, dass mit Window beginnt den Status open hat.
Der Ausführungsteil funktioniert schon einwandfrei, aber die Bedingung nicht.

Mein Problem ist, dass die ganzen Regex Methoden ja immer auf ein event matchen und ich aber auf den Status (Oder ein Reading) matchen möchte aber eine Änderung dessen nicht triggern soll. Und einfach ? Voranstellen, wie bei Readings geht ja anscheinend nicht :D

Ich habe nur 3 Window* devices im moment, also kann ich es natürlich einfach mit or lösen, aber irgendwie wiederstrebt das meinem Informatiker ehrgeiz für schöne lösungen
Titel: Antw:DOIF Ausführen bei status mindestens eines Devices.
Beitrag von: Damian am 03 August 2020, 19:54:21
siehe https://fhem.de/commandref_DE.html#DOIF_aggregation

da findest du die passenden Beispiele, u. a.

[@"^window":state:"open"]
Titel: Antw:DOIF Ausführen bei status mindestens eines Devices.
Beitrag von: Qowy am 03 August 2020, 20:07:55
Ok vielen Dank,
die lösung wäre dann vermutlich

[?@"^Window":state:"open"]

Da ich ja keine Benachrichtigung will wenn ein Fenster neu aufgemacht wird.

Ich habe nicht realisiert, dass die Aggregationsfuktionen auch in der Bedingung funktionieren (nicht zuletzt vermutlich da ich eine Seite scrollen muss bevor die ensprechenden Beispiele kommen und es vorher nur um den ausführungsteil geht :D , wo ich es ja schon verwendet habe.)
Bzw. ich war der Meinung dass mir die reine Liste von Devices in der Bedingung nichts bringt, aber das war dann zu kompliziert gedacht.
Titel: Antw:[Gelöst] DOIF Ausführen bei status mindestens eines Devices.
Beitrag von: Damian am 03 August 2020, 20:10:27
besser noch, die Anzahl zählen lassen:

([Wetterstation:isRaining] eq "yes" and [?#"^Window":state:"open"])
Titel: Antw:[Gelöst] DOIF Ausführen bei status mindestens eines Devices.
Beitrag von: Qowy am 03 August 2020, 20:17:41
Stimmt wir müssen ja nicht einen auf Javascript machen und uns darauf verlassen, dass [] == false  ;)
Titel: Antw:[Gelöst] DOIF Ausführen bei status mindestens eines Devices.
Beitrag von: Per am 27 Februar 2021, 10:39:12
Lang her, aber wäre hier nicht ein DOIF_Reading sinnvoll?