Hallo,
ich bin heute im Log nach einem Update über Fehlermeldungen gestolpert. Nach Infos aus dem Forum, handelt es sich um einen Zusammenhang mit dem Befehl "Sprint". Ich habe auch schon ein stacktrace gemacht. Wo finde ich aber die Ursache? Den Befehl habe ich im Zusammenhang mit Temperatur Sensoren verwendet.
stacktrace:
2016.11.26 23:57:32 1: main::__ANON__ called by (eval 7785) (1)
2016.11.26 23:57:32 1: (eval) called by fhem.pl (3972)
2016.11.26 23:57:32 1: main::evalStateFormat called by fhem.pl (4061)
2016.11.26 23:57:32 1: main::readingsEndUpdate called by ./FHEM/98_HTTPMOD.pm (2450)
2016.11.26 23:57:32 1: main::HTTPMOD_Read called by FHEM/HttpUtils.pm (421)
2016.11.26 23:57:32 1: main::__ANON__ called by fhem.pl (669)
2016.11.26 23:57:32 1: PERL WARNING: Missing argument in sprintf at (eval 7787) line 1.
Es läuft soweit alles gut, nur im Log kommt immer wieder diese Meldung.
defmod SENSOR_Abstellraum HTTPMOD http://measurements.mobile-alerts.eu/Home/SensorsOverview?phoneid=xxxxxxxxx762
attr SENSOR_Abstellraum userattr event-on-change-reading icon reading01Expr reading01Name reading01Regex reading02Name reading02Regex requestData requestHeader1 stateFormat
attr SENSOR_Abstellraum icon temperature_humidity
attr SENSOR_Abstellraum reading01Expr $val =~ s/,/\./;; $val;;
attr SENSOR_Abstellraum reading01Name TEMPERATUR
attr SENSOR_Abstellraum reading01Regex <h4>xxxxxxxC51E2<\/h4>\s+<\/div>\s+<\/div>\s+<div class="nofloat"><\/div>\s+<div class="sensor-component">\s+<h5>Zeitpunkt<\/h5>\s+<h4>.*?<\/h4>\s+<\/div>\s+<div class="sensor-component">\s+<h5>Temperatur<\/h5>\s+<h4>+([0-9\,]+)
attr SENSOR_Abstellraum reading02Name FEUCHTIGKEIT
attr SENSOR_Abstellraum reading02Regex (?s)<h4>xxxxxxxC51E2.*?<h4>.*?<h4>.*?<h4>([\-\d\.]+)
attr SENSOR_Abstellraum requestHeader1 Content-Type: application/x-www-form-urlencoded
attr SENSOR_Abstellraum room Draussen,Sensoren,Temperatur und Luftfeuchtigkeit
attr SENSOR_Abstellraum stateFormat {sprintf("%.1f Grad C, Feuchtigkeit %.1f %", ReadingsVal($name,"TEMPERATUR",0), ReadingsVal($name,"FEUCHTIGKEIT",0))}
setstate SENSOR_Abstellraum 18.4 Grad C, Feuchtigkeit 61.0 %
setstate SENSOR_Abstellraum 2016-11-27 00:22:32 FEUCHTIGKEIT 61
setstate SENSOR_Abstellraum 2016-11-27 00:22:32 TEMPERATUR 18.4
Ich bin erst in der Anfänger Phase und da sucht man teil`s sehr lange nach einer Lösung.
Wie kann man das Verursachende finden?? Hatt jemand eine Idee? Bin für jede Hilfe Dankbar.
Gruß Dieter
sprintf (http://perldoc.perl.org/functions/sprintf.html) kennt nur zwei Übergabewerte und scheint mir völlig falsch verwendet zu werden.
Gruß
Dan
Probier 'mal:
attr SENSOR_Abstellraum stateFormat {sprintf("%.1f Grad C, Feuchtigkeit %.1f %%", ReadingsVal($name,"TEMPERATUR",0), ReadingsVal($name,"FEUCHTIGKEIT",0))}
Das einzelne "%" wird als Einleitung einer conversion interpretiert und durch die Verdopplung erst zu "Prozent".
Gruß
Hans
Hallo Hans,
das wars, herzlichen Dank. Beim Copy und Paste einmal % verloren gegangen.
Gruß Dieter :)