FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rud0815 am 01 Mai 2017, 09:56:40

Titel: (gelöst) Perl Warnung
Beitrag von: rud0815 am 01 Mai 2017, 09:56:40
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
Titel: Antw:Perl Warnung
Beitrag von: Shadow3561 am 01 Mai 2017, 10:37:35
Das liegt wahrscheinlich am "%" Zeichen in deiner deiner Readingsgroup.
Du könntest versuchen statt "ReadingsVal" das "ReadingsNum"'zu nehmen.

MfG
Titel: Antw:Perl Warnung
Beitrag von: rud0815 am 01 Mai 2017, 12:53:32
Das einzigste Mal wo ich "ReadingsVal" verwende passt nicht zum Zeitstempel.
Also werde ich weitersuchen.
Titel: Antw:Perl Warnung
Beitrag von: Shadow3561 am 01 Mai 2017, 13:37:46
Ich denke du solltest erst mal schauen was überhaupt den Wert '17%' ausgibt.
Von dort aus kann man die Suche dann beginnen.

Mfg
Titel: Antw:Perl Warnung
Beitrag von: CoolTux am 01 Mai 2017, 15:24:45
Zeige doch einfach mal ein list Deiner ReadingsGroup
Titel: Antw:Perl Warnung
Beitrag von: rud0815 am 02 Mai 2017, 14:35:36
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.
Titel: Perl Warnung
Beitrag von: justme1968 am 02 Mai 2017, 15:14:11
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.
Titel: Antw:Perl Warnung
Beitrag von: rud0815 am 02 Mai 2017, 16:52:49
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.