FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: m8ichael am 25 Januar 2016, 19:33:35

Titel: Zeiten in Readings vergleichen
Beitrag von: m8ichael am 25 Januar 2016, 19:33:35
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
Titel: Antw:Zeiten in Readings vergleichen
Beitrag von: JoWiemann am 25 Januar 2016, 20:12:28
Hallo,

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

Grüße Jörg
Titel: Antw:Zeiten in Readings vergleichen
Beitrag 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...
Titel: Antw:Zeiten in Readings vergleichen
Beitrag von: m8ichael am 25 Januar 2016, 21:54:25


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?
Titel: Antw:Zeiten in Readings vergleichen
Beitrag von: m8ichael am 25 Januar 2016, 21:57:10
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...