[ERLEDIGT] Missing argument [...] 33_readingsGroup.pm

Begonnen von M.Piet, 30 September 2024, 10:09:51

Vorheriges Thema - Nächstes Thema

M.Piet

Hallo Zusammen,

ich habe immer wieder was im Log stehen:
2024.09.30 10:01:31 1: PERL WARNING: Missing argument in sprintf at ./FHEM/33_readingsGroup.pm line 543.
2024.09.30 10:01:31 1: PERL WARNING: Invalid conversion in sprintf: end of string at ./FHEM/33_readingsGroup.pm line 543.

Die betroffene Zeile hat folgenden Inhalt:
$v = sprintf( $value_format, $v );

Ein wenig mehr Zeilen vor und nach der Zeile 543:

}

  my $value_format = lookup2($hash->{helper}{valueFormat},$name,$n,$v,$cell_row,$cell_column);
  return (undef) if( !defined($value_format) );
  if(  $value_format =~ m/%/ ) {
    $v = sprintf( $value_format, $v );
  } elsif( $value_format ne "" ) {
    $v = $value_format;
  }
  my $value_formated = $v;


  my $room = AttrVal($name2, "room", "");
  my $alias = AttrVal($name2, "alias", $name2);
  my $group = AttrVal($name2, "group", "");

  my $cmd;
  my $devStateIcon;
  if( my $value_icon = $hash->{helper}{valueIcon} ) {
    if( my $icon = lookup($value_icon,$name,$alias,$n,$value_formated,$room,$group,$cell_row,"") ) {
      if( $icon =~ m/^[\%\$]devStateIcon$/ ) {
        my %extPage = ();
        my ($allSets, $cmdlist, $txt) = FW_devState($name, $room, \%extPage);
        $devStateIcon = $txt;
      } else {
        $devStateIcon = FW_makeImage( $icon, $v, "icon" );
        $cmd = lookup2($hash->{helper}{commands},$name,$n,$icon);
        $cmd = lookup2($hash->{helper}{commands},$name,$n,$value_formated) if( !$cmd );
      }
    }
  }



Jemand eine Ahnung wo hier der Fehler ist? Ich komme da so nicht weiter. ich danke euch!

Danke und Gruß

rudolfkoenig

Gib mal beide Parameter in der Zeile davor aus mit:
Log 1, "value_format: $value_format";
Log 1, "v: $v";

M.Piet

Danke für deine Antwort.

Die Zeilen davor:

  if(  $value_format =~ m/%/ ) {
Ich verstehe aber leider nicht, was du mit deiner Antwort meinst.
Danke dir.

rudolfkoenig

ZitatIch verstehe aber leider nicht, was du mit deiner Antwort meinst.
Da ich aus der Fehlermeldung alleine nicht schlau werde, solltest du bitte die beiden oben erwaehnten Zeilen direkt vor der Zeile 543 einbauen, das Modul neu laden (oder FHEM neu starten), und den Fehler provozieren. Und danach die FHEM-Log Ausgabe hier zeigen, vielleicht werden wir daraus schlauer.

M.Piet

Ah, OK. Alles klar. Danke.

Das kommt nun im Log raus:

2024.09.30 12:23:20 1: value_format: %.1f °C
2024.09.30 12:23:20 1: v: 33.1
2024.09.30 12:23:20 1: value_format: %.1f °C
2024.09.30 12:23:20 1: v: 30.6
2024.09.30 12:23:20 1: value_format: %.1f°C
2024.09.30 12:23:20 1: v: 52.08
2024.09.30 12:23:20 1: value_format: %.1f°C
2024.09.30 12:23:20 1: v: 60.2
2024.09.30 12:23:20 1: value_format: %.1f°C
2024.09.30 12:23:20 1: v: 33
2024.09.30 12:23:20 1: value_format: %.1f°C
2024.09.30 12:23:20 1: v: 33
2024.09.30 12:23:20 1: value_format: %.1f°C
2024.09.30 12:23:20 1: v: 33
2024.09.30 12:23:20 1: value_format: %.1f°C
2024.09.30 12:23:20 1: v: 33
2024.09.30 12:23:20 1: value_format: %.1f%
2024.09.30 12:23:20 1: v: 100
2024.09.30 12:23:20 1: PERL WARNING: Missing argument in sprintf at ./FHEM/33_readingsGroup.pm line 547.
2024.09.30 12:23:20 1: PERL WARNING: Invalid conversion in sprintf: end of string at ./FHEM/33_readingsGroup.pm line 547.
2024.09.30 12:23:20 1: value_format: %.1f Minuten
2024.09.30 12:23:20 1: v: 75.6
2024.09.30 12:23:20 1: value_format: %.1f%
2024.09.30 12:23:20 1: v: 9

rudolfkoenig

Wenn man nach "Invalid conversion in sprintf" sucht, kriegt man https://forum.fhem.de/index.php?topic=91109.0
Da deine Fehlermeldung aber leicht anders ist, habe ich mich nicht getraut, dich sofort auf diese Seite zu verweisen.

Die Vorsicht war in diesem Fall uebertrieben: in Formatangaben muss man % als %% schreiben.

M.Piet

Ahhhh, OK!
Ich habe das umgebaut und nun ist der Fehler im Log verschwunden. Ich danke dir. :)