FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: juemuc am 07 April 2019, 17:06:51

Titel: [gelöst] Ausgabe von hh:mm:ss in stateformat
Beitrag von: juemuc am 07 April 2019, 17:06:51
Hallo,

aktuell gebe ich die in einem reading enthaltenen Sekunden im stateformat über Variablen aus ($h:$m:$s). Allerdings werden hier die führenden Nullen unterdrückt. Bsp. 0:7:3 anstatt 00:07:03. staeformat ist wie folgt definiert:
{if (ReadingsVal($name,"state","") eq "off")
{"off"}
else
{my $sec=ReadingsNum("EZ_Lampe_dimmen_dummy","timerRemaining",0);
  my $hour=$sec/3600;
  my $h=int($hour);
  $sec=$sec - ($h * 3600); 
  my $min=$sec /60;
  my $m=int($min);
  my $s=$sec - ($m * 60);
  "$h:$m:$s"}}

Wie kann ich die Ausgabe formatieren?
Viele Grüße
Jürgen
Titel: Antw:Ausgabe von hh:mm:ss in statesormat
Beitrag von: Byte09 am 07 April 2019, 17:18:43
das zauberwort hier ist wohl sprintf

https://perldoc.perl.org/functions/sprintf.html (https://perldoc.perl.org/functions/sprintf.html)

gruss Byte09
Titel: Antw:Ausgabe von hh:mm:ss in stateformat
Beitrag von: juemuc am 07 April 2019, 18:10:51
Danke es funktioniert  ;D

hier die Definition, falls es jemand benötigt:
{my $sec=ReadingsNum("EZ_Lampe_dimmen_dummy","timerRemaining",0);
my $hour=$sec / 3600;
my $h=sprintf('%02s',int($hour));
$sec=$sec - ($h * 3600); 
my $min=$sec / 60;
my $m=sprintf('%02s',int($min));
my $s=sprintf('%02s',$sec - ($m * 60));
"$h:$m:$s"}


Viele Grüße
Jürgen