Fhem-Kommandos per Fernbedienung aus openelec (kodi) absetzen

Begonnen von pula, 03 Mai 2015, 17:36:17

Vorheriges Thema - Nächstes Thema

pula

Hallo,

ich habe folgende Situation:

TV+Verstärker hängen an einer (HM)-Steckdose, ein Openelec läuft bei mir 24/7 auf einer Cubox (eingebauter IR-Empfänger) mit einer alten Fernbedienung eines Samsung-TVs.

"Problem": da ich keine HM-Fernbedienung habe, müssen wir den TV immer über Handy/Tablet (andfhem) ein- bzw ausschalten, was zwar nett, aber ein wenig umständlich ist. Da der Power-Button auf der Fernbedienung eh nicht benutzt wird, lag es nahe, diesen Button dazu zu verwenden, den TV und Verstärker ein- und auszuschalten.

Mein Ansatz dazu:
Web-Aufruf der entsprechenden fhem-Adresse aus kodi.

Die Url zu dem Aufruf in meinem Fall:

https://192.168.x.x:8083/fhem?cmd=set%20wz_kino%20toggle

Funktioniert im Browser, allerdings muss Username/Passwort eingegeben werden.
Also Idee: per wget die URL aufrufen und User/Passwort mitgeben.

Leider nicht möglich, weil das wget von openelec dieses Feature nicht unterstützt. Da kodi aber intensiv mit Python arbeitet (perl ist auch nicht verfügbar), lag die Idee nahe, den Aufruf per python zu machen.

So funktionierte es bei mir:
import urllib
import urllib2
url = "https://192.168.x.x:8083/fhem?cmd=set%20wz_kino%20toggle"

username = "xxxx"
password = "xxxx"
p = urllib2.HTTPPasswordMgrWithDefaultRealm()

p.add_password(None, url, username, password)

handler = urllib2.HTTPBasicAuthHandler(p)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)

page = urllib2.urlopen(url).read()

Skript gespeichert unter /storage/.kodi/userdata/toggle_tv.py

(Kann sein, daß der import von urllib nicht notwendig ist ;-)

So weit, so gut. Nun noch in der remote.xml den entsprechenden Eintrag gemacht:

<power>XBMC.RunScript(/storage/.kodi/userdata/toggle_tv.py)</power>

Restart von kodi und fertig.

Funktioniert bei mir wunderbar - vielleicht kann das ja mal jemand brauchen....

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

Vanagon

Super Sache! Genau das habe ich gesucht. Vielen Dank dafür.

Ascoban

Es gibt für kodi ein fhem addon das per telnet auf fhem zugreift, da kann man auch für Musik und Film verschiedene befehle hinterlegen oder Uhrzeiten.

masked__rider

#3
Hallo!

Ich möchte nur kurz ein Update zum Codeschnipsel von pula geben. Und zwar funktioniert der Code nach wie vor einwandfrei, es müssen jedoch zwei Dinge geändert werden:

import urllib
import ssl
import urllib2
url = "https://ip_fhem:8083/fhem?cmd=set%eigener_Befehl"

username = "Benutzername Fhem"
password = "Passwort"
url = url.replace(" ", "%20")
p = urllib2.HTTPPasswordMgrWithDefaultRealm()

ssl._create_default_https_context = ssl._create_unverified_context
p.add_password(None, url, username, password)


handler = urllib2.HTTPBasicAuthHandler(p)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)

page = urllib2.urlopen(url).read()


Im Endeffekt sind die SSL-Einträge neu, mit denen funktioniert das ganze wieder. (Ich persönlich schalte über die Fernbedienung die mir Kodi steuert die LED´s per Toggle ein und aus)

vg
Michael

edit: Hab noch eine Zeile hinzugefügt, sodass Leerzeichen im fhem-Link automatisch zu "%20" werden.