Hallo!
Beim Neustart von FHEM bekomme ich im Log immer folgende Meldung:
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/^esplink.*t:esp-link:.{ <-- HERE .*}$/ at ./FHEM/98_expandJSON.pm line 64, <$fh> line 494.
Die Definition des betroffenen Devices ist:
Internals:
DEF esplink.*t:esp-link:.{.*}
NAME esplink_mqtt_json
NR 173
NTFY_ORDER 50-esplink_mqtt_json
STATE 2018-05-14 19:30:50
TYPE expandJSON
s_regexp esplink.*t:esp-link:.{.*}
t_regexp .*
version 1.12
READINGS:
2018-05-14 18:24:22 state active
helper:
Attributes:
Im Moment hab ich Perl 5.26 installiert, damit kommt eben nur das WARNING. Aber falls irgendwann mal Perl auf 5.30 durch ein update am Rechner landet könnte es dann Probleme geben.
Ich nehme an, im 98_expandJSON.pm müsste dann { mit einem \ escaped werden.
lg, Sabine
Deine Annahmne ist richtig, aber nicht nur im Modul, sondern auch in Deinem define.
Das Modul passe ich bei Gelegenheit an.
beim define hab ich mich an der Commandref orientiert! Dort wird { nicht escaped... ;)
Complete definitions:
define ej1 expandJSON device:sourceReading:.{.*} targetReading
define ej2 expandJSON Sonoff.*:ENERGY.*:.{.*} (Power|.*day)
define ej3 expandJSON (?i).*_sensordev_.*:.*:.{.*}
Hab mein define jetzt aber angepasst, das WARNING wird jetzt nicht mehr ins Log geschrieben.
Danke und lg,
Sabine
Magst Du mal bitte die angehängte Version testen? Ich habe die angemäkelten "Unescaped left brace" in den regulären Ausdrücken maskiert, die Doku angepasst und eine _simple_ Dekodierung von JSON-Arrays eingebaut. Wenn auch bei Dir alles OK ist, dann checke ich die Version so ein.
Zitat von: dev0 am 17 Mai 2018, 13:02:38
Magst Du mal bitte die angehängte Version testen? Ich habe die angemäkelten "Unescaped left brace" in den regulären Ausdrücken maskiert, die Doku angepasst und eine _simple_ Dekodierung von JSON-Arrays eingebaut. Wenn auch bei Dir alles OK ist, dann checke ich die Version so ein.
Wenn man den \ vorm { weglässt, kommt immer noch das Warning im Log. Aber jetzt passt wenigstens die Commandref. Und ich hab meine Device DEV inzwischen angepasst.
Einchecken solltest du die Version auf jeden Fall!
Danke und lg,
Sabine
ZitatWenn man den \ vorm { weglässt, kommt immer noch das Warning im Log.
Na klar, das liegt aber nicht am Modul, sondern an der verwendeten Perl Version (>= 5.26). Ich könnte die Meldung zwar abfangen, das Ergebnis wäre aber das Gleiche. Ich werde nicht anfangen Eingaben von Anwendern zu modifizieren...
Die aktualisierte Version habe ich gerade ins svn repository eingecheckt. Ab Morgen via Update...