Hallo Zusammen,
ich kämpfe seit Stunden mit einer RegExp und bekomme es nicht hin.
Ich habe ein Device, das bekommt einReading im Format: Druck 2.595;ok
Darstellen im STATE will ich schlußendlich: 2.595 bar - was ich auch ohne Probleme hinbekommen habe
NUR kommt im Log immer der Fehler: PERL WARNING: Argument "2.595 bar" isn't numeric in numeric lt (<) at (eval 621230) line 1.
im Attribut stateFormat habe ich schon alles mögliche ausprobiert und bin jetzt hierbei "stehen geblieben" und mit meinen Ideen/Versuchen am Ende: {no warnings 'numeric';ReadingsNum("Druck","state",0)." bar"}
Vielen Dank für eure Unterstützung!
die fehlermeldung muss von wo anders herkommen, da auf einen vergleich lower then (lt) hingewiesen wird.
Ah, okay, dann kann es nur an der cfg Datei liegen, wobei ich da auch schon alles (mir bekannte) ausprobiert habe.
Stand aktuell:
# Anlagendruck
get Druck cmd {"r -f Waterpressure\n"}
get Druck expect "\d+\.\d+\;.*\n\n"
get Druck postproc { no warnings 'numeric'; sprintf ( $_ ) }
Der übergebene Wert lautet: 2.595;ok
stacktrace einschalten und schauen woher die meldung genau kommt.
gruss
andre
Oh Mann, Danke.
Mit stacktrace habe ich rausgefunden, dass es ein zugehöriger DOIF war :-[
EDIT: zu früh gefreut:
2016.01.12 14:21:44 3: main::CallFn called by fhem.pl (661)
2016.01.12 14:21:44 3: main::FW_Read called by fhem.pl (3201)
2016.01.12 14:21:44 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (444)
2016.01.12 14:21:44 3: main::FW_doDetail called by ./FHEM/01_FHEMWEB.pm (890)
2016.01.12 14:21:44 3: main::FileLog_fhemwebFn called by ./FHEM/01_FHEMWEB.pm (1177)
2016.01.12 14:21:44 3: main::__ANON__ called by ./FHEM/92_FileLog.pm (407)
2016.01.12 14:21:44 3: stacktrace:
2016.01.12 14:21:44 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/92_FileLog.pm line 407.
2016.01.12 14:21:23 3: main::CallFn called by fhem.pl (661)
2016.01.12 14:21:23 3: main::FW_Read called by fhem.pl (3201)
2016.01.12 14:21:23 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (444)
2016.01.12 14:21:23 3: main::FW_showRoom called by ./FHEM/01_FHEMWEB.pm (889)
2016.01.12 14:21:23 3: main::FW_devState called by ./FHEM/01_FHEMWEB.pm (1531)
2016.01.12 14:21:23 3: main::FW_dev2image called by ./FHEM/01_FHEMWEB.pm (2645)
2016.01.12 14:21:23 3: main::__ANON__ called by ./FHEM/01_FHEMWEB.pm (2366)
2016.01.12 14:21:23 3: stacktrace:
2016.01.12 14:21:23 1: PERL WARNING: ^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at ./FHEM/01_FHEMWEB.pm line 2366.
das ist aber der stacktrace für eine andere meldung. ganz unten. da fängt irgendeine regex mit einem * an. das ist sinnlos.
vermutlich in einem devStateIcon.
gruss
andre
Seit wann gehören get-Aufrufe in die Konfig ???
@Puschel: Die angegebenen Konstrukte kommen normalerweise in ECMD classdef Dateien vor. Vielleicht ist das mit "cfg" gemeint ;)
Das sieht nach Code aus einer ECMD Device classdef aus, nicht nach fhem.cfg ;)
Und betateilchen war schneller
VG
Frank
@betateilchen
Kann sein das das mit "cfg" gemeint ist - dann kann man es aber auch schreiben 8)
@franky08
Sieht mir nicht unbedingt zwingend nach einer classdef aus.
So kann man das auch in die fhem.cfg "prügeln" - wenn man will ;D
Aber nun BTT - dann kommt der Code eben aus der classdef.
Aber sicher ist sicher daher frag ich lieber mal nach ;)
@all: vielen Dank, ja es war wohl ein Tippfehler bei devStateIcon.
Die cfg ist wikrlich eine classdef. Sorry, hätte ich genauer schreiben können :-[