Hallo,
leider finde ich nicht den Grund für die Perl Warnung in der Log Datei...
Der Code um den es sich handelt lautet:
Wandthermostat_Weather:temp.* {my $hum= (ReadingsNum("Wandthermostat_Weather","humidity",0));my $temp= (ReadingsNum("Wandthermostat_Weather","temperature",0));
fhem ("set AktFeuchSchl $hum") ;; fhem ("set AktTempSchl $temp")
}
Der Fehler:
2017.08.22 16:44:44 1: PERL WARNING: Missing argument in sprintf at (eval 299732) line 1.
2017.08.22 16:44:44 3: eval: my $EVTPART0='temperature:';my $EVTPART1='21.1';my $EVENT='temperature: 21.1';my $SELF='akt_TempHum_set';my $NAME='Wandthermostat_Weather';my $TYPE='CUL_HM';{my $hum= (ReadingsNum("Wandthermostat_Weather","humidity",0));my $temp= (ReadingsNum("Wandthermostat_Weather","temperature",0));
fhem ("set AktFeuchSchl $hum") ;; fhem ("set AktTempSchl $temp")
}
2017.08.22 16:44:44 1: PERL WARNING: Invalid conversion in sprintf: end of string at (eval 299732) line 1.
2017.08.22 16:44:44 3: eval: my $EVTPART0='temperature:';my $EVTPART1='21.1';my $EVENT='temperature: 21.1';my $SELF='akt_TempHum_set';my $NAME='Wandthermostat_Weather';my $TYPE='CUL_HM';{my $hum= (ReadingsNum("Wandthermostat_Weather","humidity",0));my $temp= (ReadingsNum("Wandthermostat_Weather","temperature",0));
fhem ("set AktFeuchSchl $hum") ;; fhem ("set AktTempSchl $temp")
}
Die beiden Dummys werden jedoch wie gewünscht mit Werten versorgt....
Vielen dank
Gruß
Thorsten
Hast Du stateFormat oder userReadings auf Wandthermostat_Weather? Poste mal ein "list" davon.
Hallo,
Keines von beidenhabe ich dort.
Hier das gewünschte List:
Internals:
DEF 34D25F01
NAME Wandthermostat_Weather
NOTIFYDEV global
NR 103
NTFY_ORDER 50-Wandthermostat_Weather
STATE T: 20.8 H: 59
TYPE CUL_HM
chanNo 01
device Wandthermostat
Helper:
Dblog:
Dewpoint:
Logdb:
TIME 1503462737.77603
VALUE 12.5
Humidity:
Logdb:
TIME 1503462737.77603
VALUE 59
Temperature:
Logdb:
TIME 1503462737.77603
VALUE 20.8
Readings:
2017-01-10 21:47:05 .peerListRDate 2017-01-10 21:47:05
2017-01-10 21:47:20 R-sign off
2017-01-10 21:47:20 RegL_01. 08:00 00:00
2017-08-23 06:32:17 dewpoint 12.5
2017-08-23 06:32:17 humidity 59
2017-08-23 06:32:17 state T: 20.8 H: 59
2017-08-23 06:32:17 temperature 20.8
Helper:
Expert:
def 1
det 0
raw 1
tpl 0
Role:
chn 1
Attributes:
DbLogInclude actuator,measured-temp,temperature,dewpoint,humidity
group Thermostat
model HM-TC-IT-WM-W-EU
peerIDs 00000000,
room Heizung_Schl
Danke
Gruß
Thorsten
Wieso jetzt genau Deine Meldung kommt kann ich nicht sagen. Aber versuche mal das ganze so zu machen. Musst schauen ob der EVTPART0 soweit passt.
Dein belastet ja FHEM doppelt mit der zusätzlichen Abfrage. Bei diesem Beispiel arbeitet Du nur mit dem was der EVENT Dir gibt.
Wandthermostat_Weather:(temperature|humidity):.* { fhem("set " . ($EVTPART0 eq 'temperature:' ? "AktTempSchl $EVTPART1" : "AktFeuchSchl $EVTPART1")) }
Grüße
Hallo,
den Code nimmt es so leider nicht...
Gruß
Thorsten
Oh schade. Na denn.
Zitat von: jailbreaker07 am 22 August 2017, 16:55:03
leider finde ich nicht den Grund für die Perl Warnung in der Log Datei...
Der Code um den es sich handelt lautet:
Um diesen zitierten Code handelt es sich mit Sicherheit nicht, wenn es darum geht, die Ursache für die Warnung zu finden.
In Deinem Code gibt es doch gar kein sprintf().
Ich würde als Erstes stacktrace aktivieren, dann bekommt man nützliche Zusatzinformationen.
Hallo,
Ich glaube ich habe den Fehler gefunden, unter den Dummy habe ich unter stateformat folgendes stehen:
{sprintf("%.0f %",ReadingsVal("AktFeuchSchl","state",0))}
Wenn ich das ändere zu:
{sprintf("%.0f pr",ReadingsVal("AktFeuchSchl","state",0))}
Dann kommt keine Fehlermeldung mehr... nur wie bekomme ich das % Zeichen dahin ohne das er meckert?
Danke
Gruß
Thorsten
Du mußt das Prozent-Zeichen verdoppeln, (%%), damit es angezeigt wird. Also: {sprintf("%.0f %%",ReadingsVal("AktFeuchSchl","state",0))}
Aha! Ich war schon auf dem richtigen Weg! ;) Nur falsches Device :)
Zitat von: amenomade am 23 August 2017, 11:44:43
Aha! Ich war schon auf dem richtigen Weg! ;) Nur falsches Device :)
Ich habe mir aufgrund deines Tips mal alle device's angeschaut die mit dem Thermostat zu tun haben und wo ein Sprintf vorkommt.....
Vielen Dank nochmal für die Hilfe