Hallo,
ich bokomme im Log häufig folgende Ausgabe:
2017.05.01 08:45:18 1: PERL WARNING: Argument "17%" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 541.
2017.05.01 08:45:18 1: PERL WARNING: Argument "17%" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 1402.
Ich weis nicht, ob das mit meinen Änderungen oder mit dem FHEM Opdate zusammenhängt.
Wilhelm
Das liegt wahrscheinlich am "%" Zeichen in deiner deiner Readingsgroup.
Du könntest versuchen statt "ReadingsVal" das "ReadingsNum"'zu nehmen.
MfG
Das einzigste Mal wo ich "ReadingsVal" verwende passt nicht zum Zeitstempel.
Also werde ich weitersuchen.
Ich denke du solltest erst mal schauen was überhaupt den Wert '17%' ausgibt.
Von dort aus kann man die Suche dann beginnen.
Mfg
Zeige doch einfach mal ein list Deiner ReadingsGroup
in meiner ReadingGroup verwende ich ReadingsVal nicht.
Siehe:
define FHT_Heizung readingsGroup <%sani_heating_temp>,<Isttemperatur>,<Solltemperatur>,<Ventilstellung>,<Fenster>,<Batterie>,<Mode> TYPE=FHT:measured-temp,desired-temp,actuator,window,[Bb]attery,mode,
attr FHT_Heizung alias Heizung
attr FHT_Heizung commands { 'desired-temp' => 'desired-temp:' }
attr FHT_Heizung group Heizungsübersicht
attr FHT_Heizung mapping %ALIAS
attr FHT_Heizung nameStyle style="color:red"
attr FHT_Heizung noheading 1
attr FHT_Heizung notime 1
attr FHT_Heizung room Allgemein
attr FHT_Heizung valueColumns { eventdescription => 'colspan="4"' }
attr FHT_Heizung valueFormat {"measured-temp" => "%.1f °C", "desired-temp" => "%.1f °C","actuator"=> "%.0f %%", "desired-temp.off" => "%s", "temperature" => "%.1f °C","humidity"=> "%.0f %%"}
attr FHT_Heizung valueIcon {'battery.ok' => 'batterie@green', 'battery.low' => 'batterie@red', 'window.closed' => 'fts_window_1w@lightgreen', 'window.open' => 'fts_window_1w_open@red'}
attr FHT_Heizung valueStyle style="text-align:center"
jedoch in einem Perl script:
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
# Enter you functions below _this_ line.
# interval definieren Beginn
my %interval = (
"Aus" => 999,
"Eins" => 1,
"Zwei" => 2,
"Drei" => 3,
"An" => 1,
"Ein" => 1
);
# interval definieren Ende
#Wasser einschalten Beginn
sub DeviceOnOff ($$$$)
{
my($device, $duration, $work, $typ) = @_;
my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
my $inter = ReadingsVal($device, "state", "Zwei");
my $mod = $interval{$inter};
my $doy = $yday+1;
my $on = $doy % $mod;
Log 2, "DeviceOnOff $device $doy % $mod -> $on($inter) $typ $inter $duration";
if ($on == 0) {
if ($typ eq "FS"){
fhem ("set $work on-for-timer $duration");
}
elsif ($typ eq "FSWeek"){
fhem ("set $work on");
}
elsif ($typ eq "HMon"){
fhem ("set $work on");
}
elsif ($typ eq "HMoff"){
fhem ("set $work off");
}
}
}
#Wasser einschalten Ende
Dieser Script wird zu Zeiten aufgerufen die nicht zu den Log-Zeiten passen.
du verwendest für das actuator reading %.0f als
format. das reading enthält aber scheinbar ein% zeichen. also entweder %s verwenden oder selber mit sprintf und $NUM formatieren.
oder das neue replace-set-magic format verwenden um die zahl aus dem reading zu extrahieren.
Fehler gefunden. humidity liefert eine Zahl mit%. Brauche ich garnicht maskieren, hat schon das richtige Format.
Kommt davon wenn man schamlos kopiert.
Danke für die Hilfe.