[GELÖST:] Frage zu PERL WARNING in FHEM LOG

Begonnen von josburg, 14 Februar 2016, 20:42:35

Vorheriges Thema - Nächstes Thema

josburg

Hallo,

in FHEM unter "Logfile" erscheint bei mir seit einigen Tagen dieses WARNING, welches ich nicht richtig zuordnen kann.
Was die Logfiles angeht, bin ich leider noch absoluter Anfänger und ich weiß nicht, was ich ggf. noch zusätzlich posten kann/soll...

Zunächst das Warning im Log:

Date: Sun, 14 Feb 2016 18:41:38 GMT
Connection: close, buffer empty,
Error read from to http://23.97.212.128:8080 timed out
2016.02.14 20:01:38 1: PERL WARNING: Missing argument in sprintf at (eval 364) line 1.
2016.02.14 20:01:38 1: PERL WARNING: Invalid conversion in sprintf: end of string at (eval 364) line 1.
2016.02.14 20:01:38 1: PERL WARNING: Missing argument in sprintf at (eval 365) line 1.
2016.02.14 20:01:38 1: PERL WARNING: Invalid conversion in sprintf: end of string at (eval 365) line 1.
2016.02.14 20:01:38 1: PERL WARNING: Missing argument in sprintf at (eval 366) line 1.
2016.02.14 20:01:38 1: PERL WARNING: Invalid conversion in sprintf: end of string at (eval 366) line 1.
2016.02.14 20:01:38 1: PERL WARNING: Missing argument in sprintf at (eval 368) line 1.
2016.02.14 20:01:38 1: PERL WARNING: Invalid conversion in sprintf: end of string at (eval 368) line 1.
2016.02.14 20:01:38 1: PERL WARNING: Missing argument in sprintf at (eval 370) line 1.
2016.02.14 20:01:38 1: PERL WARNING: Invalid conversion in sprintf: end of string at (eval 370) line 1.
2016.02.14 20:01:39 3: SENSOR_ANNAS_ZIMMER: Read callback: request type was Update,
header: HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 39395
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET


Von dem verwendeten Device "SENSOR_ANNAS_ZIMMER" anbei der evtl. relevante Ausschnitt aus der fhem.cfg:

define SENSOR_ANNAS_ZIMMER HTTPMOD http://23.97.212.128:8080/api/v1/dashboard 600
attr SENSOR_ANNAS_ZIMMER userattr event-on-change-reading icon reading01Name reading01Regex reading02Name reading02Regex requestData requestHeader1 stateFormat
attr SENSOR_ANNAS_ZIMMER icon scene_childs_room
attr SENSOR_ANNAS_ZIMMER reading01Name TEMP
attr SENSOR_ANNAS_ZIMMER reading01Regex "t1": (\d?\d.\d)
attr SENSOR_ANNAS_ZIMMER reading02Name FEUCHTIGKEIT
attr SENSOR_ANNAS_ZIMMER reading02Regex "h": (\d?\d.\d)
attr SENSOR_ANNAS_ZIMMER requestData devicetoken=c469a2c5-2f82464f-a73969cc-e1e3bf15-2eb7db2b-2b2cc4fb-a87fd82a-XXXXXXXX&vendorid=3D3BCADD-79C6-4AEE-9F8B-73C8YYYYYYYY&phoneid=0323ZZZZZZZZ&version=1.21&build=248&executable=Mobile Alerts&bundle=de.synertronixx.remotemonitor&lang=de&timezoneoffset=60&timeampm=false&usecelsius=true&usemm=true&speedunit=1&timestamp=1453237425&requesttoken=07436acf2dce9a096aef9317AAAAAAAA&deviceids=035CBBBBBBBB,&measurementfroms=,0,0,0,0,0,&measurementcounts=,50,50,50,50,50,
attr SENSOR_ANNAS_ZIMMER requestHeader1 Content-Type: application/x-www-form-urlencoded
attr SENSOR_ANNAS_ZIMMER room Temperatur und Luftfeuchtigkeit,all
attr SENSOR_ANNAS_ZIMMER stateFormat {sprintf("%.1f Grad, Feuchtigkeit %.1f %", ReadingsVal($name,"TEMP",0), ReadingsVal($name,"FEUCHTIGKEIT",0))}





# FileLog definieren, um die Daten in LogFile zu schreiben  #
#############################################################
define LOG.SENSOR_ANNAS_ZIMMER FileLog ./log/S_SENSOR_ANNAS_ZIMMER-%Y-%m.log SENSOR_ANNAS_ZIMMER:FEUCHTIGKEIT:.*|SENSOR_ANNAS_ZIMMER:TEMP:.*|SENSOR_ANNAS_ZIMMER:h:.*|SENSOR_ANNAS_ZIMMER:t1:.*
attr LOG.SENSOR_ANNAS_ZIMMER logtype text
attr LOG.SENSOR_ANNAS_ZIMMER room LogFiles


# SVG-Plot definieren, um die Daten in Graph anzuzeigen     #
#############################################################
define SVG_LOG.SENSOR_ANNAS_ZIMMER_1 SVG LOG.SENSOR_ANNAS_ZIMMER:SVG_LOG.SENSOR_ANNAS_ZIMMER_1:CURRENT
attr SVG_LOG.SENSOR_ANNAS_ZIMMER_1 fixedrange 7days
attr SVG_LOG.SENSOR_ANNAS_ZIMMER_1 label "Temp min $data{min1}, Temp max $data{max1}, aktuelle Temp $data{currval1}"
attr SVG_LOG.SENSOR_ANNAS_ZIMMER_1 room Plots,all


Kann mir jemand weiterhelfen?
Warum wird das warning geschrieben?
Kann ich am Code etwas verbessern, da so das Log relativ schnell mit vielen Einträgen beschrieben wird (alle 10 Minuten -> passend zum Abfrageintervall)?

Vielen Dank für Eure Hilfe.

Viele Grüße
Jens

marvin78

Das hier

ZitatError read from to http://23.97.212.128:8080 timed out

könnte darauf hinweise, dass das Device nicht erreichbar war/ist.

betateilchen

Spontan würde ich sagen, Du hast mehrere Probleme gleichzeitig.

Zum Einen wurde beim http-Request ein Verbindungsfehler festgestellt,
zum Anderen wird ein fehlendes Argument in sprintf() angemeckert.

Zu sprintf würde ich sagen, dass Du das Prozentzeichen dreimal verwendest, aber nur zwei Werte übergibst. Klar ist das dritte Prozentzeichen für die Einheitendarstellung der Luftfeuchtigkeit gedacht, aber genau deshalb musst Du es maskieren und %% schreiben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

josburg

Zitat von: betateilchen am 14 Februar 2016, 20:49:35
Zu sprintf würde ich sagen, dass Du das Prozentzeichen dreimal verwendest, aber nur zwei Werte übergibst. Klar ist das dritte Prozentzeichen für die Einheitendarstellung der Luftfeuchtigkeit gedacht, aber genau deshalb musst Du es maskieren und %% schreiben.

Vielen Dank. Nachdem ich sprintf in

{sprintf("%.1f Grad, Feuchtigkeit %.1f %%", ReadingsVal($name,"TEMP",0), ReadingsVal($name,"FEUCHTIGKEIT",0))}

geändert habe, ist der WARNING-Eintrag im Log nicht mehr vorhanden...

Also hat das doppelte "%%" geholfen.

Vielen Dank!