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
siehe https://fhem.de/commandref_DE.html#DOIF_aggregation
da findest du die passenden Beispiele, u. a.
[@"^window":state:"open"]
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.
besser noch, die Anzahl zählen lassen:
([Wetterstation:isRaining] eq "yes" and [?#"^Window":state:"open"])
Stimmt wir müssen ja nicht einen auf Javascript machen und uns darauf verlassen, dass [] == false ;)
Lang her, aber wäre hier nicht ein DOIF_Reading sinnvoll?