PERL WARNING: Missing argument in sprintf at (eval 7787) line 1.

Begonnen von Hanneck, 27 November 2016, 00:37:00

Vorheriges Thema - Nächstes Thema

Hanneck

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

DeeSPe

sprintf kennt nur zwei Übergabewerte und scheint mir völlig falsch verwendet zu werden.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Hans Franz

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
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Hanneck

Hallo Hans,

das wars, herzlichen Dank. Beim Copy und Paste einmal % verloren gegangen.

Gruß Dieter  :)