[gelöst] Regex im Devicenamen ohne Eventauswertung?

Begonnen von FHEMAN, 09 Juni 2021, 10:12:26

Vorheriges Thema - Nächstes Thema

FHEMAN

Hallo,
ich habe einen Rasenmäher, der soll bei Regen oder aktiver Bewässerung ins Dock. Die Bewässerung besteht aus 6 Kreisen in der Form Schaltaktor.Bewaesserung.01.Sw.01.Kreis.5
Ist es möglich, wie in einem Notify, den Gerätenamen mit Wildcards zu versehen - ohne dabei auf reine Eventsteuerung umzuswitchen (und damit false bei ausbleibendem Event zu erhalten)?
Mein aktueller Versuch triggert (vermutlich) nur bei einem On-Event eines der Schaltaktoren:

([Indy]!~"Docked|Charging|Returning" and (["^Schaltaktor.Bewaesserung.*Kreis.(1|2|3|4|6).on"] or [netatmo:rain] > 0)) (
{
fhem("set Indy returnToDock");
SendMessage("Rasenmäher zu Station", "Grund: Rasen nass", "Pushover", "classical");
}
)

Ich möchte jedoch, dass bei Statusänderung des Rasenmähers (Indy) und bereits eingeschalteter Bewässerung der Gute ebenfalls zurück in die Station fährt.
Wie kann ich das realisieren?

Gruß
fheman
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Sany

Moin,
du konntest die Abfrage schachteln. Eventtrigger auf den Robo oder Bewässerungskreise und anschliessend nicht-triggernd die Bedingungen auswerten.

if (["Indy:reading"] or ["Schaltaktor:reading"]){
   if ([?Indy:reading] !~ "Docked|Charging|Returning" or [^Schaltaktor.Bewaesserung.*Kreis.(1|2|3|4|6)] eq "on"){

....
    }
}

Die Bedingungen kannst Du auch mehrfach in verschiedenen Versionen abfragen, wichtig ist, das sie nicht triggern, also mit ?

Damit lösen Änderungen beim Robo oder bei den Kreisen die Abfragen aus. Die trigger solltest Du so auswählen, dass möglichst nur ein sinvoller ausgewertet wird und nicht bei jeder Zuckung des Devices dein DOIF durchgearbeitet wird.

Versuchs mal in diese Richtung.

Viel Erfolg!
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

xenos1984

Klingt für mich, als suchst du eine Aggregationsbedingung:


([Indy]!~"Docked|Charging|Returning" and ([#"^Schaltaktor.Bewaesserung.*Kreis.(1|2|3|4|5|6)":state:"on"] > 0 or [netatmo:rain] > 0))


http://fhem.de/commandref_DE.html#DOIF_aggregation

FHEMAN

#3
Bis zu den Aggregationsbedingungen war ich im DOIF noch nicht vorgedrungen. Wichtig wäre, dass hier der Status beachtet wird und nicht nur das Event. Das habe ich so nicht ganz herauslesen können in der DOIF-Bibel ;)
Danke für den Lösungvorschlag xenos1984 und auch Sany für die Idee mit der Verschachtelung.
Ich habe es eingebaut und werde es demnächst testen.   

//edit: es funktioniert!!
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB