Kodi / XBMC per openHAB fernsteuern

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?

4 Kommentare
  1. Chris
    Chris sagte:

    Hi! Top Anleitung. Ich habe damit sogar endlich Alexa dazu gebracht lustige Dinge zu tun… Allerdings würde ich gerne die Untertitelanzeige an-/abschalten. Gibt es eine Möglichkeit das auch zu tun?

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.