Auf unserem Fire TV Stick von Amazon läuft das Media-Center Kodi. Es macht dann natürlich auch Sinn die Mediensteuerung in die Hausautomatisierung zu integrieren.
Hier in dem Beispiel möchte ich die Informationen von Kodi in openHAB darstellen und Kodi damit fernsteuern. Es sollen auch bestimmte Aktionen ausgeführt werden z.B. wenn ich Pause drücke, soll das Licht automatisch gedimmt werden.
Vorbereitung Kodi
Im ersten Schritt sollte man kontrollieren, ob man im Fire TV Stick eine feste IP-Adresse hinterlegt hat (das kann man im WLAN-Dialog unter erweitert etwas versteckt einstellen).
Danach Kodi starten und kontrollieren, ob das Einstellungslevel mindestends “Standard” ist (oder wie bei mir “Fortgeschritten”.
Dann kann man unter “System – Einstellungen – Dienste – Webserver” die “Steuerung über HTTP zulassen” aktivieren.
Außerdem muss man noch unter “System – Einstellungen – Dienste – Fernsteuerung” die “Steuerung über lokale Programme zulassen” und “Steuerung über entferne Programme zulassen” einschalten.
Das Ergebnis kann man mit dem Aufruf http://IP-ADRESSE:8080 kontrollieren.
Binding
Nun wird das Binding in openHAB 2.x aktiviert – “Paper UI – Add-ons – BINDINGS – XBMC Binding” – dazu INSTALL auswählen.
Nun kann man das Binding über den Eclipse SmartHome Desinger unter “Services – xbmc.cfg” parametrieren:
# Hostname / IP address of your XBMC host (required). Example:
livingRoom.host=IP-ADRESSE
# Port number for the json rpc service (optional, defaults to 8080). Example:
livingRoom.rsPort=8080
# Port number for the web socket service (optional, defaults to 9090). Example:
livingRoom.wsPort=9090
# Username to connect to XBMC. (optional, defaults to xbmc). Example:
livingRoom.username=xbmc
# Password to connect to XBMC. (optional, defaults to xbmc). Example:
livingRoom.password=xbmc
#Refresh interval in ms (optional, defaults to 60000ms [1 minute])
refreshInterval=60000
In diesem Beispiel muss die IP-ADRESSE noch getauscht und optional Benutzer und Passwort gesetzt werden.
Items
Danach kann man beginnen seine gewünschten Items einzufügen. Eine Übersicht der Möglichkeiten findet Ihr hier.
Meine erste Test-Konfiguration sieht wie folgt aus:
Switch XBMC_System_State "XBMC - System.State [%s]" {xbmc="<[#livingRoom|System.State]"}
Switch XBMC_System_Shutdown "XBMC - System.Shutdown" {xbmc=">[#livingRoom|System.Shutdown]", autoupdate="false"}
String XBMC_Player_State "XBMC - Player.State [%s]" {xbmc="<[#livingRoom|Player.State]"}
String XBMC_Player_Title "XBMC - Player.Title [%s]" {xbmc="<[#livingRoom|Player.Title]"}
Switch XBMC_Player_PlayPause "XBMC - Player.PlayPause" {xbmc=">[#livingRoom|Player.PlayPause]", autoupdate="false"}
Switch XBMC_Player_Stop "XBMC - Player.Stop" {xbmc=">[#livingRoom|Player.Stop]", autoupdate="false"}
String XBMC_GUI_ShowNotification "XBMC - GUI.ShowNotification [%s]" {xbmc="<[#livingRoom|GUI.ShowNotification]", autoupdate="false"}
String XBMC_Label_Player_FinishTime "XBMC - Label.Player.FinishTime [%s]" {xbmc="<[#livingRoom|Label.Player.FinishTime]"}
String XBMC_Label_Player_Time "XBMC - Label.Player.Time [%s]" {xbmc="<[#livingRoom|Label.Player.Time]"}
String XBMC_Label_System_Uptime "XBMC - Label.System.Uptime [%s]" {xbmc="<[#livingRoom|Label.System.Uptime]"}
String XBMC_Label_VideoPlayer_VideoCodec "XBMC - Label.VideoPlayer.VideoCodec [%s]" {xbmc="<[#livingRoom|Label.VideoPlayer.VideoCodec]"}
Sitemap
Die Visualisierung in der Sitemap habe ich mir wie folgt aufgeteilt:
Text label="Kodi (Fire TV Stick)" icon="video" {
Frame label="System" {
Text item=XBMC_System_State label="Systemstatus [%s]"
Text item=XBMC_Label_System_Uptime label="Systemlaufzeit [%s]"
//Switch item=XBMC_System_Shutdown label="Herunterfahen" mappings=[OFF="OK"] visibility=[XBMC_System_State==ON]
}
Frame label="Mediensteuerung" {
Switch item=XBMC_Player_PlayPause label="Wiedergabe starten" mappings=[ON="Play"] visibility=[XBMC_Player_State==Pause]
Switch item=XBMC_Player_PlayPause label="Wiedergabe pausieren" mappings=[ON="Pause"] visibility=[XBMC_Player_State==Play]
Switch item=XBMC_Player_Stop label="Wiedergabe beenden" mappings=[ON="Stop"] visibility=[XBMC_Player_State==Play, XBMC_Player_State==Pause]
}
Frame label="Medieninformationen" {
Text item=XBMC_Player_State label="Medienstatus [%s]"
Text item=XBMC_Player_Title label="Gerade läuft [%s]"
Text item=XBMC_Label_Player_Time label="Aktuelle Laufzeit [%s]"
Text item=XBMC_Label_Player_FinishTime label="Ende um [%s]"
Text item=XBMC_Label_VideoPlayer_VideoCodec label="Video-Codec [%s]"
}
}
Rules
Um das Zusammenspiel etwas besser darzustellen wird mit dieser Regel sobald man Pause drückt per KNX das Licht gedimmt (und bei Play wieder ausgeschalten):
var Number brightnessBeforePause
rule "Licht an bei Pause"
when
Item XBMC_Player_State changed from Play to Pause
then
brightnessBeforePause = Dimmen_EG_Wohnen.state as DecimalType
logInfo("TEST","Licht vor Pause: " + brightnessBeforePause)
if (brightnessBeforePause < 50){
sendCommand(Dimmen_EG_Wohnen,50)
}
end
rule "Licht aus bei Pauseende"
when
Item XBMC_Player_State changed from Pause to Play
then
if (Dimmen_EG_Wohnen.state == 50){
sendCommand(Dimmen_EG_Wohnen,OFF)
}
end
Fazit
Mit dem XBMC / Kodi Binding ist es recht einfach das Media-Center in openHAB zu integrieren. Damit kann ich zukünftig wieder auf eine Fernbedienung verzichten.
Leider habe ich keine Möglichkeit gefunden Kodi auf dem Fire TV Stick automatisch zu starten (das geht scheinbar nur, wenn es auf eigenständiger Hardware läuft). Auch funktioniert in meiner Kodi-Version 15.1 der Befehl “System.Shudown” nicht um Kodi abzuschalten.
Welche Anwendungsfälle fallen euch im Zusammenspiel mit Kodi ein?