Ich lerne immer noch.... DOIF -> Perl mit Regex (wenn state -> setze reading)

Begonnen von Master_Nick, 04 Februar 2022, 12:06:41

Vorheriges Thema - Nächstes Thema

Master_Nick

Moin,

tja immer wieder verschlägt es mich hierher - so ganz firm bin ich mit den regex und dem Perl Modus nach den Jahren immer noch nicht - aber es wird ja immerhin erkennbar besser.

Ich versuche aktuell, auf den state "fhempy server offline" meiner Thermostate mit einem setreading presence offline zu reagieren.
Das ganze natürlich mit einem Doif statt 6 für 6 Thermostate.

Mein aktueller Versuch wirft keine Fehler - funktioniert aber auch nicht - ich denke es liegt an dem Trigger und ggf auch noch an weiterem.

Folgende Versuche habe ich unternommen - neben vielen die auf mich noch falscher wirkten:

([@"_Thermostat":state:$_ == "fhempy server offline","unklar"]) { fhem ("setreading [$DEVICE] presence offline") }

Log:

2022-02-04 11:59:13 DOIF Global_SetOffline warning_aggr: condition: $_ == "fhempy server offline" , device: Wohnzimmer_Thermostat, Argument "fhempy server offline" isn't numeric in numeric eq (==)
2022-02-04 11:59:13 DOIF Global_SetOffline warning_aggr: condition: $_ == "fhempy server offline" , device: Kinderzimmer_Thermostat, Argument "fhempy server offline" isn't numeric in numeric eq (==)
2022-02-04 11:59:13 DOIF Global_SetOffline warning_aggr: condition: $_ == "fhempy server offline" , device: Flur_Thermostat, Argument "update" isn't numeric in numeric eq (==)
2022-02-04 11:59:13 DOIF Global_SetOffline warning_aggr: condition: $_ == "fhempy server offline" , device: Schlafzimmer_Thermostat, Argument "fhempy server offline" isn't numeric in numeric eq (==)
2022-02-04 11:59:13 DOIF Global_SetOffline warning_aggr: condition: $_ == "fhempy server offline" , device: Badezimmer_Thermostat, Argument "fhempy server offline" isn't numeric in numeric eq (==)
2022-02-04 11:59:13 DOIF Global_SetOffline warning_aggr: condition: $_ == "fhempy server offline" , device: Arbeitszimmer_Thermostat, Argument "fhempy server offline" isn't numeric in numeric eq (==)
2022-02-04 11:59:13 DOIF Global_SetOffline warning_aggr: condition: $_ == "fhempy server offline" , device: Kueche_Thermostat, Argument "fhempy server offline" isn't numeric in numeric eq (==)


2.:

([@"_Thermostat":state:$_ eq "fhempy server offline","unklar"]) { fhem("setreading $DEVICE presence offline") }

Log:


{ fhem("setreading  presence offline") }: Usage: setreading <name> [YYYY-MM-DD HH:MM:SS] <reading> <value>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.



3.:

([@"_Thermostat":state:$_ eq "fhempy server offline","unklar"]) (setreading $DEVICE presence offline)


Log:


setreading  presence offline: Usage: setreading <name> [YYYY-MM-DD HH:MM:SS] <reading> <value>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.



Ich denke mit meinem ersten Teil - dem Trigger scheine ich soweit nicht ganz falsch oder sogar richtig zu liegen.
Ich orientierte mich an einem älteren DOIF was ich auch mit Hilfe baute:

([@"_Sensor_[2-5]":humidity:$_ > 54] and [07:00-21:00])

{ if ([$DEVICE:humidity:"(.*)":"$1"] >54) {fhem ("set GoogleCloudMessages send Homeland|Achtung|Luftfeuchtigkeit im [$DEVICE:alias:"(.*)":"$1"] bei [$DEVICE:humidity:"(.*)":"$1"]\% - bitte lueften!")}}
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

Damian

1) Texte werden nicht mit == verglichen, sondern eq
2) Hier wurde offenbar der Block ohne Trigger ausgeführt, daher war $DEVICE nicht belegt
3) siehe 2) hier war $DEVICE auch nicht belegt
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Master_Nick

Moin Damian,

genau deswegen hatte ich dann von == auf eq gewechselt.
Ah - stimmt fehlende Triggerung = $DEVICE nicht definiert.

Danke ich schaue weiter :-)
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)