Fehlermeldung: Unescaped left brace in regex is deprecated here

Begonnen von WolfgangV, 06 Januar 2020, 21:23:22

Vorheriges Thema - Nächstes Thema

WolfgangV

Hallo,

seit kurzem taucht bei mir im Log die folgende Fehlermeldung auf, und zwar ziemlich häufig.

PERL WARNING: Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/^(Leistung_Gesamt{ <-- HERE 230.89})$/ at fhem.pl line 1321.
2020.01.06 20:48:50.598 2: Steuerung_Heizung: set Leistung_Gesamt{230.89}: Please define Leistung_Gesamt{230.89} first/


Das kommt offensichtlich aus meiner Heizungssteuerung, die ich mit dem folgenden DOIF regele:

([LeistungGesamt]>200)
(set Leistung_Gesamt{[#sum:d2:":Leistung":Leistung:$TYPE eq "CUL_HM"]})
(set Ventile_Gesamt {([#sum:d2:":actuator":actuator:$TYPE eq "CUL_HM"])/16})
(set Heizungsschalter on)
DOELSE
(set Heizungsschalter off)
DOELSE


Die LeistungGesamt und Ventile_Gesamt werden von den Heizungsthermostaten HM-CC-RT-DN abgerufen. "actuator" entspricht der Ventilöffnung. Die Leistung wird aus dem folgenden Userreading abgerufen und da liegt anscheinend der Hase - aber in welchem ?  -  Pfeffer:

Leistung {ReadingsVal("Arbeitszimmer","actuator",0)*189/100}

Hier ist natürlich nur das Beispiel von einem Thermostat. Es gibt noch einige weitere.

Der Abruf der Daten funktioniert zwar, aber die Fehlermeldung müllt mein Log im Minutenabstand zu.
Hat jemand eine Idee, wie ich was ändern könnte?

Gruß


Wolfgang
Raspi5  HmUART, Jeelink, VU+Duo2, Viera, Sonos, HM-CC-RT-DN,     
HM-WDS30-OT2-SM, HM-LC-Dim1TPBU-FM,    
Jeelink, TUL

CoolTux

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

Damian

Du meinst wohl:

(set Leistung_Gesamt [#sum:d2:":Leistung":Leistung:$TYPE eq "CUL_HM"])
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

WolfgangV

Hallo,

danke an CoolTux. Das scheint das Problem gelöst zu haben.

@Damian: Ohne die geschweifte Klammer gibts eine Fehlermeldung. Wenn ich die DOIF-Erläuterungen richtig verstehe, sind die zum Rechnen notwendig.l


Gruß


Wolfgang
Raspi5  HmUART, Jeelink, VU+Duo2, Viera, Sonos, HM-CC-RT-DN,     
HM-WDS30-OT2-SM, HM-LC-Dim1TPBU-FM,    
Jeelink, TUL

Damian

Zitat von: WolfgangV am 06 Januar 2020, 21:45:36
Hallo,

danke an CoolTux. Das scheint das Problem gelöst zu haben.

@Damian: Ohne die geschweifte Klammer gibts eine Fehlermeldung. Wenn ich die DOIF-Erläuterungen richtig verstehe, sind die zum Rechnen notwendig.l


Gruß


Wolfgang

Du rechnest doch gar nicht, sondern die Aggregationsfunktion.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

Also ich würde nochmal (wie Damian schon)  ;) einwerfen: Da fehlt einfach ein Leerzeichen nach Gesamt
(set Leistung_Gesamt {[#sum:d2:":Leistung":Leistung:$TYPE eq "CUL_HM"]})


Die Klammern sind sicher nur mehr als flüssig :)
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

Wenn du innerhalb eines FHEM-Befehls rechnen wolltest, hättest du noch runde Klammern angeben müssen:

{( ...)}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

Insofern bringt der zweite Befehl zwar keine Fehler - rechnet sicher aber auch nicht. Die () sind einfach an der falschen Stelle?
(set Ventile_Gesamt {([#sum:d2:":actuator":actuator:$TYPE eq "CUL_HM"]/16)})
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

WolfgangV

Hallo an alle,

danke für die schnellen und kompetenten Rückmeldungen.
Ich hoffe, gegen das wie folgt geänderte DOIF gibt es jetzt keine Proteste mehr  ;)

([LeistungGesamt]>200)
(set LeistungGesamt [#sum:d2:":Leistung":Leistung:$TYPE eq "CUL_HM"])
(set VentilOeffnung_Gesamt [#sum:d2:":actuator":actuator:$TYPE eq "CUL_HM"]/16)
(set Heizungsschalter on)
DOELSEIF
(set Heizungsschalter off)
DOELSE


Gruß


Wolfgang
Raspi5  HmUART, Jeelink, VU+Duo2, Viera, Sonos, HM-CC-RT-DN,     
HM-WDS30-OT2-SM, HM-LC-Dim1TPBU-FM,    
Jeelink, TUL

Damian

doch im ersten set-Befehl, das war ursprünglich auch der Auslöser der Fehlermeldung, ist jetzt alles ok, weil du dort nicht rechnen willst.

Bei der zweiten Angabe willst du sehr wohl rechnen, daher waren die Klammern korrekt, wie vorgeschlagen:

(set Ventile_Gesamt {([#sum:d2:":actuator":actuator:$TYPE eq "CUL_HM"]/16)})

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

WolfgangV

Aha, daher die merkwürdigen Einträge im Log.
2020-01-06_23:01:32 VentilOeffnung_Gesamt 6.5625
2020-01-06_23:04:02 VentilOeffnung_Gesamt 104.00/16
2020-01-06_23:04:02 VentilOeffnung_Gesamt 6.5
2020-01-06_23:04:27 VentilOeffnung_Gesamt 109.00/16
2020-01-06_23:04:27 VentilOeffnung_Gesamt 6.8125
2020-01-06_23:06:18 VentilOeffnung_Gesamt 105.00/16
2020-01-06_23:06:18 VentilOeffnung_Gesamt 6.5625
2020-01-06_23:07:20 VentilOeffnung_Gesamt 106.00/16
2020-01-06_23:07:20 VentilOeffnung_Gesamt 6.625
2020-01-06_23:08:51 VentilOeffnung_Gesamt 6.5625
2020-01-06_23:09:35 VentilOeffnung_Gesamt 6.6875
2020-01-06_23:11:10 VentilOeffnung_Gesamt 6.375
2020-01-06_23:12:20 VentilOeffnung_Gesamt 6.375
2020-01-06_23:12:20 VentilOeffnung_Gesamt 6.375
2020-01-06_23:12:23 VentilOeffnung_Gesamt 6.3125
2020-01-06_23:12:23 VentilOeffnung_Gesamt 6.3125
2020-01-06_23:13:47 VentilOeffnung_Gesamt 6.3125
2020-01-06_23:13:47 VentilOeffnung_Gesamt 6.3125
2020-01-06_23:14:33 VentilOeffnung_Gesamt 6.1875
2020-01-06_23:14:34 VentilOeffnung_Gesamt 6.1875


Aber gerechnet wurde ja anscheinend doch.
Raspi5  HmUART, Jeelink, VU+Duo2, Viera, Sonos, HM-CC-RT-DN,     
HM-WDS30-OT2-SM, HM-LC-Dim1TPBU-FM,    
Jeelink, TUL

Damian

Zitat von: WolfgangV am 06 Januar 2020, 23:19:53
Aha, daher die merkwürdigen Einträge im Log.
2020-01-06_23:01:32 VentilOeffnung_Gesamt 6.5625
2020-01-06_23:04:02 VentilOeffnung_Gesamt 104.00/16
2020-01-06_23:04:02 VentilOeffnung_Gesamt 6.5
2020-01-06_23:04:27 VentilOeffnung_Gesamt 109.00/16
2020-01-06_23:04:27 VentilOeffnung_Gesamt 6.8125
2020-01-06_23:06:18 VentilOeffnung_Gesamt 105.00/16
2020-01-06_23:06:18 VentilOeffnung_Gesamt 6.5625
2020-01-06_23:07:20 VentilOeffnung_Gesamt 106.00/16
2020-01-06_23:07:20 VentilOeffnung_Gesamt 6.625
2020-01-06_23:08:51 VentilOeffnung_Gesamt 6.5625
2020-01-06_23:09:35 VentilOeffnung_Gesamt 6.6875
2020-01-06_23:11:10 VentilOeffnung_Gesamt 6.375
2020-01-06_23:12:20 VentilOeffnung_Gesamt 6.375
2020-01-06_23:12:20 VentilOeffnung_Gesamt 6.375
2020-01-06_23:12:23 VentilOeffnung_Gesamt 6.3125
2020-01-06_23:12:23 VentilOeffnung_Gesamt 6.3125
2020-01-06_23:13:47 VentilOeffnung_Gesamt 6.3125
2020-01-06_23:13:47 VentilOeffnung_Gesamt 6.3125
2020-01-06_23:14:33 VentilOeffnung_Gesamt 6.1875
2020-01-06_23:14:34 VentilOeffnung_Gesamt 6.1875


Aber gerechnet wurde ja anscheinend doch.

nein: 106.00/16 wurde nicht ausgerechnet
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Hauptursache dürfte das fehlende Leerzeichen gewesen sein, je nach folgendem Term und Reihenfolge der Klammern verhalten sich Perl-, Fhem- und DOIF-Interpreter unterschiedlich.

WolfgangV

Hallo Damian  und der  Rest,

Zitatnein: 106.00/16 wurde nicht ausgerechnet

ich werde nie mehr widersprechen!  ;)

Ernsthaft:
Nochmals vielen Dank! Ich muss immer wieder wiederholen, wie toll es ist, dass hier so viele kompetente Menschen in nahezu immer sehr kurzer Zeit mit Rat und Tat beiseite stehen! Ohne diese Unterstützung sähe meine FHEM-Installation bedeutend mickriger aus, wenn es sie überhaupt gäbe!

Gruß


Wolfgang
Raspi5  HmUART, Jeelink, VU+Duo2, Viera, Sonos, HM-CC-RT-DN,     
HM-WDS30-OT2-SM, HM-LC-Dim1TPBU-FM,    
Jeelink, TUL