FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: al15 am 12 Mai 2018, 16:14:22

Titel: Zeit für 'level' umrechnen
Beitrag von: al15 am 12 Mai 2018, 16:14:22
Hallo,

hoffe ich bin hier richtig - würde gerne dein Fortschritt eines Filmes grafisch mit LEVEL darstellen - habe dabei aber Probleme:
habe diese Daten von Kodi:

time: 00:09:36.000 (entspricht der verstrichenen Zeit)
totaltime: 02:12:05.000 (entspricht der gesamt Zeit des Filmes)

mit Level muss ich ja min (0) und max (da müsste ich die 02:12:05.000 in sekunden oder minuten umrechnen) bzw auch den aktuellen Wert (00:09:36.000 auch nach in sekunden oder minuten umrechnen)

Wie kann ich das am besten machen?

Weiters möchte ich auch die endzeit berechnen - also:
Jetzt + totaltime - time

Wie ginge das am besten?

DANKE
lg
AL
Titel: Antw:Zeit für 'level' umrechnen
Beitrag von: MadMax-FHEM am 12 Mai 2018, 19:38:08
Mittels google etc. nach perl und rechnen mit uhrzeiten suchen und schauen welche Funktion welche Aufgabe erfüllt und das dann in eine eigene myUtils Sub gießen...

Evtl. hilft das schon mal: https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit

Und falls noch nicht angelegt/gemacht: https://wiki.fhem.de/wiki/99_myUtils_anlegen

Kurz da nur Handy...

Gruß, Joachim
Titel: Antw:Zeit für 'level' umrechnen
Beitrag von: al15 am 12 Mai 2018, 23:26:24
Hallo,

Danke hab das ganze mit userreadings gelöst:

time_current { my $current = (ReadingsVal("$name", "time", 0)); my ($h_current,$m_current,$s_current, $frac_current) = split(/[:.]/, $current); my $current_time = $s_current + $m_current * 60 + $h_current * 3600;; return $current_time;;},

time_duration { my $duration = (ReadingsVal("$name", "totaltime", 0)); my ($h_duration,$m_duration,$s_duration, $frac_duration) = split(/[:.]/, $duration); my $duration_time = $s_duration + $m_duration * 60 + $h_duration * 3600;; return $duration_time;;},

time_diff { my $current = (ReadingsVal("$name", "time", 0)); my ($h_current,$m_current,$s_current, $frac_current) = split(/[:.]/, $current); my $current_time = $s_current + $m_current * 60 + $h_current * 3600; my $duration = (ReadingsVal("$name", "totaltime", 0)); my ($h_duration,$m_duration,$s_duration, $frac_duration) = split(/[:.]/, $duration); my $duration_time = $s_duration + $m_duration * 60 + $h_duration * 3600;; return sprintf("%.0f", ($duration_time-$current_time)/60);;},

time_movieendtime { my $current = (ReadingsVal("$name", "time", 0)); my ($h_current,$m_current,$s_current, $frac_current) = split(/[:.]/, $current); my $current_time = $s_current + $m_current * 60 + $h_current * 3600; my $duration = (ReadingsVal("$name", "totaltime", 0));my ($h_duration,$m_duration,$s_duration, $frac_duration) = split(/[:.]/, $duration); my $duration_time = $s_duration + $m_duration * 60 + $h_duration * 3600; use POSIX qw[tzset]; $ENV{'TZ'} = 'Europe/Vienna';tzset(); my $now = localtime();my $m_end=$now + ($duration_time-$current_time);my ($s_diff,$m_diff,$h_diff) = gmtime( $m_end);my $movie_end_time = sprintf("%02u:%02u:%02u", $h_diff,$m_diff,$s_diff);; return $movie_end_time;;}

lg
AL