[Gelöst] DOIF Ausführen bei status mindestens eines Devices.

Begonnen von Qowy, 03 August 2020, 18:39:22

Vorheriges Thema - Nächstes Thema

Qowy

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

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Qowy

#2
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.

Damian

besser noch, die Anzahl zählen lassen:

([Wetterstation:isRaining] eq "yes" and [?#"^Window":state:"open"])
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Qowy

Stimmt wir müssen ja nicht einen auf Javascript machen und uns darauf verlassen, dass [] == false  ;)

Per

Lang her, aber wäre hier nicht ein DOIF_Reading sinnvoll?