Betriebsdauer von Sekunden umrechnen und ausgeben

Hallo zusammen,

ich habe hier KNX Schaltaktoren, aus denen ich die Betriebsdauer auslesen kann.
Die Betriebsdauer wird in Sekunden ausgegeben, diese kann ich auch in IPS visualisieren.

Jetzt hätte ich die Ausgabe aber gerne im Format Tag / Stunde / Minute. Und bin damit komplett überfordert.

Kann mir vielleicht jemand helfen`?

Danke und einen schönen Sonntag noch.

Joerg

Hier eine Möglichkeit:

<?

$SekundenKNX = 128639;
$Ausgabe = timeconversion($SekundenKNX);

echo "Tage: " . $Ausgabe['tag'] . "
";
echo "Stunden: " . $Ausgabe['std'] . "
";
echo "Minuten: " . $Ausgabe['min'] . "
";
echo "Sekunden: " . $Ausgabe['sek'] . "
";


function timeconversion($sekunden){
   $tag  = floor($sekunden / (3600*24));
   $std  = floor($sekunden / 3600 % 24);
   $min  = floor($sekunden / 60 % 60);
   $sek  = floor($sekunden % 60);
   return array("sek"=>$sek,"min"=>$min,"std"=>$std,"tag"=>$tag);
}

?>

Den Wert der Variable $SekundenKNX musst Du Dir natürlich von der Variable Deines KNX-Aktors holen. Und je nachdem, was Du mit den Werten machen willst, solltest Du die Ausgabe noch etwas anders gestalten. Evtl. in eine String-Variable schreiben oder so.

Grüße,
Christoph

Vielen Dank für Deine Hilfe. Werd ich heute Abend testen.

Viele Grüsse

Joerg

Hallo Christoph,

die Umrechnung kallpt. Perfekt.

Jetzt muss ich nur noch rausfinden wie ich das Ergebnis in eine Stringvariable zur Anzeige im Webfront bekomme.

Auch hierzu wäre ich für Tipps wie mmer dankbar.

Vilele Grüße

Joerg

<?

$SekundenKNX = 128639;
$Ausgabe = timeconversion($SekundenKNX);

$String = $Ausgabe['tag'] . " Tage " . $Ausgabe['std'] . " Stunden " . $Ausgabe['min'] . " Minuten ";
SetValue(14370, $String);


function timeconversion($sekunden){
   $tag  = floor($sekunden / (3600*24));
   $std  = floor($sekunden / 3600 % 24);
   $min  = floor($sekunden / 60 % 60);
   $sek  = floor($sekunden % 60);
   return array("sek"=>$sek,"min"=>$min,"std"=>$std,"tag"=>$tag);
}

?>

Obiges Beispiel zeigt, wie man es machen könnte. Einfach eine String Variable aus demm Rückgabe-Array der Funktion zusammenbauen.

Ersetze 14370 durch die ID Deiner String Variable. Die Variable $String hat nicht gerade die intelligenteste Bezeichnung, aber mein Beispiel soll auch nur zeigen, wie es prinzipiell geht

Alternativ kann man den String auch schon in der Funktion zusammenbauen

   return ($tag . " Tage " . $std . " Stunden ");

und das Ergebnis dann der String-Variable zuweisen.

Viele Wege führen nach Rom :slight_smile:

Gruß,
Christoph

Hallo,

ich versuche mit den Scripts hier, die Umrechnung. Leider bekomme ich die Zeit falsch umgerechnet.

$SekundenKNX entspricht aktuell 190.000. IPS rechnet mit dem Script aus. :confused:

Tage: 0
Stunden: 11
Minuten: 34
Sekunden: 34


<? 

$SekundenKNX = 41674; 
$Ausgabe = timeconversion($SekundenKNX); 

echo "Tage: " . $Ausgabe['tag'] . "
"; 
echo "Stunden: " . $Ausgabe['std'] . "
"; 
echo "Minuten: " . $Ausgabe['min'] . "
"; 
echo "Sekunden: " . $Ausgabe['sek'] . "
"; 


function timeconversion($sekunden){ 
   $tag  = floor($sekunden / (3600*24)); 
   $std  = floor($sekunden / 3600 % 24); 
   $min  = floor($sekunden / 60 % 60); 
   $sek  = floor($sekunden % 60); 
   return array("sek"=>$sek,"min"=>$min,"std"=>$std,"tag"=>$tag); 
} 

?>

In $SekundenKNX sollten dann auch Sekunden sein, und nicht die VariableID.

Ohhhhh, Schande über mein Haupt. Leider sieht man manchmal den Wald vor lauter Bäumen nicht. Danke für die Hilfe!