Regex in DOIF - was mache ich falsch?

Begonnen von Master_Nick, 12 März 2018, 14:41:23

Vorheriges Thema - Nächstes Thema

Master_Nick

Hallo, ich habe mir über https://regex101.com/ passend auf meine Sensoren eine RegEx gecastet:

^[[:alpha:]]{1,}_Sensor_\d\Z

Dieser deckt alle meine Sensoren ab:
Balkon_Sensor_6
Arbeitszimmer_Sensor_3
Kinderzimmer_Sensor_2
Schlafzimmer_Sensor_4
Wohnzimmer_Sensor_5
Badezimmer_Sensor_1


Allerding scheitere ich bei der Anwendung:


([[[:alpha:]]{1,}_Sensor_\d:humidity]>54 and $device ne "Badezimmer_Sensor_1")
(set GoogleCloudMessages send Homeland|Information|Luftfeuchtigkeit im $room seit über 45 Minuten bei $_ - bitte lüften)


Aktuell meldet er mir ich nutze eine falsch formatierte Uhrzeit, somit gehe ich davon aus, dass er noch nicht als als RegEx interpretiert.
Ich habe auch schon Variationen aus dem Commandref (https://fhem.de/commandref_DE.html#DOIF) versucht, aber einen grünen Zweig habe ich noch nicht erreicht.


*Edit - Hui und hiermit scheine ich FHEM sogar in die Knie zu zwingen (also mit Vorsicht zu genießen):
([#"[[:alpha:]]{1,}_Sensor_\d":humidity,0]>54 and $device ne "Badezimmer_Sensor_1")
(set GoogleCloudMessages send Homeland|Information|Luftfeuchtigkeit im $room seit über 45 Minuten bei $_ - bitte lüften)
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.... ;-)

CoolTux


(["_Sensor_:^humidity$",0] > 54 and ...


Eventuell musst Du noch ^ bei humidity entfernen. Aber teste erstmal so
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Master_Nick

Also kann ich keinen normalen/komplexen RegEx verwenden?
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.... ;-)

Otto123

Doch, aber nach meiner Erfahrung ist regEx auch immer etwas individuell und DOIF ist individueller  ;D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

CoolTux

Nur zum Teil. Du musst Dich da bitte schon an die Commandref halten. DOIF hat einen eigenen parser Teil um die Bedingung dann entsprechend zu prüfen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

He Leon -> "give me five" - da waren wir aber synchron :)


Mit der Doppelklammer  [] machst Du doch extra ne Uhrzeit aus dem Inhalt - oder?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damian

#6
Mach dir das Leben nicht komplizierter als es ist:

(["_Sensor_:humidity",0] > 54 ...

Edit: OK. ich sehe gerade, ich habe mir schon zu viel Zeit mit der Antwort gelassen, da war CoolTux schneller. ^ und $ macht die Sache eindeutiger.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Master_Nick

 ;) Naaaaa gut  :D
Das ist mir zwar eigentlich viel zu einfach so  8) 8) ;D ;D ;D hehe.

Vielen Dank :-)
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.... ;-)

Master_Nick

Ist das nun böse, im gleichen Thread noch eine Frage zu den Variablen $room und $_ zu haben? :-D Wäre ja nicht mehr wirklich DOIF...

Er wandelt mir $room nicht um und behauptet sogar es wäre nicht definiert.
Ich habe das schon mal gehabt beim setzen der Variable $wday als reading für ein device da war ".$wday die Lösung - weil es ganz am ende stand.
Aber auf die gleiche Art und Weise bekomme ich es hier nicht escaped... auch ob das ".$DEVICE." in der Bedingung wirklich funktioniert ist mir noch unklar.

(["_Sensor_:humidity",0] > 54 and ".$DEVICE." ne "Badezimmer_Sensor_1")
{fhem("set GoogleCloudMessages send Homeland|Information|Luftfeuchtigkeit im ".$room" seit über 45 Minuten bei ".$_" - bitte lüften")}
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.... ;-)

CoolTux

Das wird so nix. $DEVICE in der Bedingung geht so nicht wie Du es gemacht hast.
$room geht meines Wissens gar nicht da Damain noch keine? Attributsauswertung dabei hat.

Und wieso gehst du im Ausführungsteil in Perl. Das sollte nicht nötig sein.


["_Sensor_:humidity",0] > 54 and $DEVICE ne "Badezimmer_Sensor_1") (set GoogleCloudMessages send Homeland|Information|Luftfeuchtigkeit im [$DEVICE:room] seit über 45 Minuten bei - bitte lüften)


Bitte lese noch mal DOIF, bin mir unsicher ob das genau so passt im Ausführungsteil. Was Du mit $_ bezwecken wolltest weiß ich nicht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Master_Nick

Mhh also in der commandref zu DOIF steht:

ZitatIn der Aggregationsbedingung können alle in FHEM definierten Perlfunktionen genutzt werden. Folgende Variablen sind vorbelegt und können ebenfalls benutzt werden:

$_ Inhalt des angegebenen Readings (s.o.)
$number Nach Zahl gefilteres Reading
$name Name des Devices
$TYPE Devices-Typ
$STATE Status des Devices (nicht das Reading state)
$room Raum des Devices
$group Gruppe des Devices

Lass mich raten.... ich fische wieder an einer Stelle wo ich gar nicht bin - Stichwort: "Aggregationsbedingung"
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.... ;-)

CoolTux

Zitat von: Master_Nick am 12 März 2018, 16:46:21
Mhh also in der commandref zu DOIF steht:

Lass mich raten.... ich fische wieder an einer Stelle wo ich gar nicht bin - Stichwort: "Aggregationsbedingung"

Aber nur in der Aggregationsbedingung

Mom ich muss lesen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux


define di_temp DOIF (([08:00-20:00]) and [?#"_Sensor_":humidity: $_ > 54] != 0)
(set GoogleCloudMessages send Homeland|Information|Luftfeuchtigkeit im [@"^Rooms":humidity:$_ > 54,"keine"] seit über 45 Minuten bei - bitte lüften)

DOELSE
()

attr di_temp do always
attr di_Raumtemp state In folgenden Zimmern ist zu feucht: [@"^Rooms":humidity:$_ > 54,"keine"])


Probiere bitte erst mal. Nur zum testen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Master_Nick

Erst einmal danke ;-)

Ich glaube so will es noch nicht. Ich habe für den Test aus 54 mal 20 gemacht und er erfasst dennoch keinen einzigen Sensor.
Bei der Meldung welche Räume betroffen wären, sagt er auch dauerhaft "keine".
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.... ;-)

CoolTux

Muss ich mir auch erstmal was in meiner Testumgebung auf bauen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net