moin,
habe mit den neuen Möglichkeiten am Kodi Template rumgebaut ...
damit alles läuft, sind Einige userReadings nötig
myPlayTimePCT { ReadingsVal($name,"playStatus","") eq "playing" ? (myPlayedPCT(hms2secs(ReadingsVal($name,"totaltime","1")),hms2secs(ReadingsVal($name,"time","1")))) : 0},
myLabel { ReadingsVal($name,"playStatus","") eq "playing" ? (ReadingsVal($name,"type"," ") eq "channel" ? (ReadingsVal($name,"label"," ").":") : (ReadingsVal($name,"type"," ") eq "song" ? (ReadingsVal($name,"currentAlbum"," ")) : " ")): " "},
myTitle { ReadingsVal($name,"playStatus","") eq "playing" ? (" ".ReadingsVal($name,"currentTitle"," ")) : " "},
myArtist { ReadingsVal($name,"playStatus","") eq "playing" ? (ReadingsVal($name,"type", " ") eq "song" ? ReadingsVal($name,"currentArtist"," ") : " " ) : " " },
myAppPlay { ReadingsVal($name,"playStatus","") eq "playing" ? (ReadingsVal($name,"type","") eq "song" ? (ReadingsVal($name,"myLabel"," ")) : (ReadingsVal($name,"myLabel"," ")." ".ReadingsVal($name,"myTitle"," "))) : " " },
myAppMusic { ReadingsVal($name,"playStatus","") eq "playing" ? (ReadingsVal($name,"myArtist","") eq " " ? "false" : (ReadingsVal($name,"currentArtist"," ")." - ".ReadingsVal($name,"currentTitle"," "))) : "false"},
openchannel { ReadingsVal($name,"type"," ") eq "channel" ? (ReadingsVal($name,"myLabel"," ")) : " "},
playItem { ReadingsVal($name,"playStatus","") eq "playing" ? (ReadingsVal($name,"myLabel"," ")." - ".ReadingsVal($name,"myTitle"," ")) : " "}
das ein oder andere mag mit dem aktuellen Bugfix nicht mehr nötig sei, aber, es stört auch nicht wirklich, zudem kann ich so sicher stellen, dass "myArtist" z.B. leer ist, wenn keine Musik spielt. (im Modul bleiben einige Readings gerne "hängen" wenn man von beispielsweise von Musik auf Film wechselt oder so)
dazu muss in die 99_myUtils.pm
#24H Timestamp to Seconds
sub hms2secs($){
my ($t) = @_;
return substr($t,0,2) * 3600 + substr($t,3,2) * 60 + substr($t,6,2);
}
#Kodi % of Track Played
sub myPlayedPCT($$) {
my ($total, $elapsed) = @_;
if ($total < 1 || $elapsed < 1) { return 0 };
return ($elapsed / ($total) * 100);
}
Diese Readings müssen einmalig mittels setreading in der FHEM console angelegt werden:
setreading <KODIDEVICENAME> tState other
setreading <KODIDEVICENAME> appControl true
das erste wird benötigt, um zwischen TV und Media Mode umzuschalten (siehe Screenshots)
das zweite steuert die anzeige von den Steuerelementen (3er block in der mitte)
Ursprünglich war der Plan, die Erkennung Media oder TV automatisch zu machen, das Problem jedoch, mit jedem Senderwechsel ändert sich das Reading "type" was zu unerwünschtem verhalten führt.
wer damit leben kann, dass beim Sender wechsel die untere Leiste kurz wechselt kann natürlich auch ein userReading auf tState setzen, etwa so
tState { ReadingsVal($name,"type","") eq "channel" ? "channel" : "other" }
das aktuelle template läuft unter kodiremote1 - kann also zusätzlich mal reingesetzt werden zum rumprobieren. da die subs in der 99 nur für die statusbar benötigt werden, kann man diese zum testen auch weglassen

Zur Statusbar: diese wird halt Abhängig von eurem updateInterval "gefüttert" ..
das Menü im TV Mode (unten mitte) ist als Favoritenliste gedacht, diese sollte man also an die eigenen Wünsche anpassen

hf
Jens