Zeiten in Readings vergleichen

Begonnen von m8ichael, 25 Januar 2016, 19:33:35

Vorheriges Thema - Nächstes Thema

m8ichael

Hallo zusammen,

ich nutze das KODI-Modul und möchte nun zwischen der Gesamtzeit eines Films und der aktuellen Filmzeit eine Zeitdifferenz berechnen. Hierfür werte ich per ReadingsVal die dafür zuständigen Readings aus:


my $zeitist=ReadingsVal("wz_KODI", "time", "");
my $zeitgesamt=ReadingsVal("wz_KODI", "totaltime", "");


Ich versuche nun, die so ermittelten Zeiten in zwei Timestamps umzuwandeln, aber dies gelingt mit


my $zeitistmk = mktime(substr($zeitist,6,2),substr($zeitist,3,2),substr($zeitist,0,2),1,1,2015);
my $zeitgesamtmk = mktime(substr($zeitgesamt,6,2),substr($zeitgesamt,3,2),substr($zeitgesamt,0,2),1,1,2015);


nicht. Die Variablen $zeitistmk und $zeitgesamtmk bleiben leer. Wo ist mein Denkfehler?

Viele Grüße

Michael

JoWiemann

Hallo,

welchen Inhalt haben den die Variablen: $zeitdist, $zeitgesamt bzw, was geben die ReadingsVal zurück.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

All-Ex

#2
Ich hab im XBMC Modul folgendes Userreading angelegt:

endcredits { join("",ReadingsVal($name,"time",0),ReadingsVal($name,"totaltime",0)) =~ /(\d\d):(\d\d):(\d\d).(\d\d\d)(\d\d):(\d\d):(\d\d).(\d\d\d)/; return defined($3) ? (($1*60*60 + $2*60 + $3) / ($5*60*60 + $6*60 + $7) > 0.92 ? 1 : 0) : 0 }

Das setzt endcredits auf 1, wenn die letzten 8% des Films laufen. Ist nicht ganz was Du suchst, aber vielleicht eine Anregung...

m8ichael



Zitat von: JoWiemann am 25 Januar 2016, 20:12:28
welchen Inhalt haben den die Variablen: $zeitdist, $zeitgesamt bzw, was geben die ReadingsVal zurück.

In den Readings ist die jeweilige Zeit im Format hh:mm:ss.sss hinterlegt. Die Readings kommen auch sauber rüber, werden durch substr auch erfolgreich zerlegt, allerdings hakt es dann bei mktime. Werden hier vielleicht statt eines Strings Zahlen erwartet und die Funktion mktime funktioniert deshalb nicht?

m8ichael

Zitat von: All-Ex am 25 Januar 2016, 21:41:39
Ich hab im XBMC Modul folgendes Userreading angelegt:

endcredits { join("",ReadingsVal($name,"time",0),ReadingsVal($name,"totaltime",0)) =~ /(\d\d):(\d\d):(\d\d).(\d\d\d)(\d\d):(\d\d):(\d\d).(\d\d\d)/; return defined($3) ? (($1*60*60 + $2*60 + $3) / ($5*60*60 + $6*60 + $7) > 0.92 ? 1 : 0) : 0 }

Das setzt endcredits auf 1, wenn die letzten 8% des Films laufen. Ist nicht ganz was Du suchst, aber vielleicht eine Anregung...
Oh...auch eine Variante. Statt der Division könnte man einfach eine Substraktion machen und hätte so die Differenz in Sekunden...