Kinosteuerung mit FHEM (Hausautomation) + Harmony

  • Hallo,
    wie in dem anderem Thread angekündigt hier mal meine Heimkinosteuerung:


    Randbedingungen:
    Abspielmedien:
    HTPC: KODI auf Windows 7
    BluRay-Player
    Steuerung: Harmony Elite mit Hub
    Haussteuerung: FHEM mit diverseren Modulen auf einem Pi3b


    Die Sinn und Zweck meiner Kinosteuerung ist recht einfach. Ich bin Faul und möchte echtes Kinofeeling.
    Das heißt:
    Dimmen des Lichtes in Anghängigkeit der Filmstati (Play, Pause, Stop)
    Überwachen und Schalten der Geräte auch von Unterwegs
    Automatisches Umschalten der Quellen.
    Integration in die Haussteueurung (Signalisierung von Babyfon, Türklingel und Telefon)
    Kontrolle der klimatischen Gegebenheiten (Temperatur und Luftfeuchtigkeit)
    Die Beleuchtung wird mithilfe von Zigbee und Homematic angesteuert. Dies wird bei uns Zentral über FHEM erledigt. Daher musste eine Schnittstelle her, welche die Kommunikation zu FHEM aufnimmt. Dies übernimmt der Harmony Hub, welcher als „Modul“ in FHEM integriert ist.


    Der Start des Kinos schaut im Grunde wie folgt aus:
    Ich starte eine Harmony Activity z.B. KODI. Diese kann ich über die Fernbedienung, Harmony App, Wandtaster oder auch Telegram…
    Der Start der Activity wird an FHEM übergeben. Dieses schaltet alle für diese Activity notwendigen Steckdosen zu und die Beleuchtung entsprechend ein/ um.
    Mittlerweile habe ich die Logik aus der Harmony Activity komplett in FHEM integriert, so dass nun alle für die Activity benötigten Geräte nacheinander eingeschaltet bzw. Eingänge umgeschaltet werden.
    Zwischendurch gibt es Benachrichtungen um den Start zu überwachen.
    Die Steuerung im Kino erfolgt ausschließlich über die Harmony Elite. Die verschiedenen Aktionen werden ebenfalls über dummys bzw. Module direkt an FHEM weitergeleitet, so dass FHEM jede Situation mitbekommt.
    Im Falle der Activity KODI reagiert das FHEM-Modul seitens FHEM auf den Playstatus. Dies ist mit dem BluRayPlayer so nicht möglich, daher wird beim Starten des Films über die Fernbedienung paralllel zu dem Befehl Play ein weiterer Befehl Netzwerkgerät (FakeRoku) gesendet damit die entsprechenden Dummys gesteuert werden können und die Haussteuerung analog dessen die Beleuchtung schalten kann.
    Klingt erstmal kompliziert, funktioniert aber zu 100% und hat einen extrem hohen WAF.


    Hier mal der Code für die Hauptsteuerung. Es handelt sich um ein zentrales DOIF welches in Abhängigkeiten Programmschritte durchläuft.


    Eine weitere Spielerei:
    Ich habe meine kompletten Filme, auch die als BluRay bestehenden in KODI importiert. Diese Stub-Dateien werden ebenfalls von KODI verwaltet. Rufe ich nun besagte Datei auf, erscheint ein Fenster in KODI, welches mir angibt meinen faulen Hintern aus dem Sessel zu heben und die BluRay einzulegen. Im Hintergrund wird bereits der BluRayPlayer gestartet sofern noch nicht an und das Laufwerk geöffnet und die Activity BluRay gestartet.
    Schaue ich allerdings ein Film über das CinemaVision Addon von KODI, ist das Prozedere anders. Hier kommt dann die Aufforderung zum einlegen der BluRay, parallel werden allerdings Trailer abgespielt und erst nach Beendigung der Trailer wird auf den BluRayPlayer umgeschaltet.
    Die ist tatsächlich nur eine Spielerei, da diese Geschichte noch nicht Zuverlässig läuft. Aber zu 75% klappt es :big_smile:


    Nicht direkt mit der Heimkinosteuerung haben folgende Punkte zu tun.
    Telefonanrufe, sowie das Türklingeln signalisiere ich mit Umschalten der Beleuchtungsfarben, Licht blinken, oder auch Pause des Films bei sogenannten Notfallnummern.


    Die Steuerung des Raumklimas wird ebenfalls bei Filmwiedergabe unterdrückt um nicht vom Entfeuchter, oder der Hinterlüftung des DBAs gestört zu werden.
    Mich würden Eure Abläufe interessieren.

  • Danke für Deine Erläuterung - Das hört sich sehr gut an bei Dir :respect:
    Eventuell magst Du den Thread umbenennen in z.B. "Kinosteuerung mit FHEM (Hausautomation)" oder so ähnlich,
    macht es dann auch besser auffindbar?


    Um dem Thread mal ein wenig Leben zu geben, werde ich mal grob beschreiben wie ich es mache:
    Bei Bedarf kann ich Details nachreichen.
    Bei mir ist die Zentrale Steuerstelle KODI bzw. der HTPC - zumindest was das Filme schauen angeht.


    FHEM macht bei mir im Haus hauptsächlich Rollläden, ein bissel Heizung und einige Leuchten.
    Insgesamt muss ich zugeben, dass ich aus mangelnder Lust FHEM in letzter Zeit recht stiefmütterlich behandelt habe. :cray:
    Da gibt es bei mir noch ziemlich viel auf der ToDo Liste zu dem ich bisher keine Lust hatte. ;)
    Aber was läuft, läuft rock-stable :respect: ...da ist fhem schon super!


    Zurück zum Kino:
    Hier ist die Steuerkette bei mir ein x-beliebige IR Fernbedienung die per FLIRC-Dongle den PC steuert.
    Auf dem Rechner läuft Eventghost zur Steuerung verschiedener Dinge und KODI
    Da FLIRC letztlich nur eine Tastatur emuliert, habe ich viele Tasten in Kodi "remapped".
    Dadurch kann ich z.B. mit ein und der selben Taste ein Menu öffnen und es auch wieder schließen.
    Mit Hilfe von Eventghost fange ich Tasten der Fernbedienung ab und steuer über ein Plugin in Eventghost z.B. die Lautstärke des AVR über dessen Netzwerkinterface. Auch wird über Eventghost der AVR auf den richtigen Eingang etc geschaltet beim starten des PC.


    Zur Fernbedienung:
    Eine Harmony habe ich nicht, bzw. hatte ich mal eine fürs Wohnzimmer.
    Bin mit dem Ding aber nie wirklich warm geworden.
    Derzeit nutze ich eine X-Box Fernbedienung: Gibts leider nicht mehr von MS.
    Die ist für mich perfekt:
    Sie hat keine Zifferntasten (brauche ich nicht oder man verwendet diese für Funktionen, bei denen man hinterher nicht mehr weiß welche Funktion auf welcher Ziffer lag :angry: ), hat ansonsten relativ viele Tasten und eine Hintergrundbeleuchtung die auf Bewegung reagiert.


    Bzgl. FHEM:
    Da habe ich einen kleinen MischMasch, historisch bedingt:
    Ich nutze das FHEM Plugin in Kodi und das Kodi Plugin in FHEM (das eine hat mit dem anderen nichts zu tun.)
    Über das FHEM Plugin in KODI werden bei mir die Rollläden heruntergefahren und FHEM per dummy device in den "Film Modus" geschickt.
    D.h. z.B. die Automatik für das steuern der Rollläden wird so lange deaktiviert, etc...
    Über das KODI Plugin von FHEM frage ich den Kodi-Status (Play/Pause/Stop) ab für u.a. das Pausenlicht.
    Dieser letzte Punkt ist erst später dazu gekommen, daher ist es so zwei geteilt.


    Die Steuerung der Maskierung läuft über einen Einzeiler in madvr, von dort wird der zur AspectRatio passende Wert an fhem gesendet und dieser schickt den Rollladenmotor via Aktor an die passende Position.
    Da man die AR aus madvr leider nicht als Parameter herausbekommt gibt es dazu in madvr je AR ein Profil (leider sehr unübersichtlich so) welches das jeweils passende Kommando absetzt. (Diese Profile sind in einem Zweig von madvr versteckt bei dem sich die Settings sowieso nicht ändern)


    Ich habe dann noch einen kleinen Zwave Funk-Schalter über den ich die Medientechnik per zwave-Steckdose und fhem ein/ausschalten kann und auch die Rollläden und Licht händisch steuern kann....


    Das war es im groben.


    Der Ablauf ist bei mir also:
    Strom an, PC an machen, Bier holen :sbier::big_smile:, Beamer an, Film schauen :respect:


    Todo's gibt es aber einige....
    u.a. in Fhem wollte ich da auch mal mehr auf doifs umstellen und die tablet-ui verfeinern/bzw. überhaupt mal richtig schön machen.
    Auch liegen hier noch ein paar Z-Wave Geräte rum die ich noch nicht eingebunden habe... :blush:

  • Hallo Frini,


    tolle Umsetzung deiner Kinosteuerung. Den ersten Teil habe ich in meinem Kino genauso gelöst. Die Logic liegt aber noch viel in der Harmony. FakeRoku kommt dabei auch zum Einsatz. Bei Play wird das Licht runtergedimmt und bei Pause wieder raufgedimmt. Daneben wird noch das Licht im Vorraum geschaltet, damit das Bier besser gefunden werden kann.


    Jetzt habe ich gerade KODI auf einem FireTV installiert und CinemaVision zum Laufen bekommen.


    Ich würde nun gern über CinemaVison einen Vorspann , Trailer usw. laufen lassen und danach auf BluRay umschalten, um von dort dann den Film zu schauen.


    Kannst du mir da einen Einblick in deine Lösung geben?


    Vielen Dank

  • Hallo,

    ich hatte das meiste vorher auch auf der Hub-Seite. Nachdem Harmony ja den API Zugang vorrübergehend geschlossen hatte, habe ich angefangen die Logik der Activities in FHEM abzubilden um flexibler zu werden.


    Ich guck mal, ob ich ein paar Screenshots von dem CinemaVision Ablauf bekomme.


    Mal gucken ob ich das beschreiben kann:

    Ich habe in CinemaVision zwei Ablaufstränge. 1. BluRay im Regal, 2. Film auf HTPC

    Bleiben wir bei 2..

    In Cinemavision kann man einen Ablaufstrang erstellen, der bei Wiedergabestart beginnt zu laufen.

    Ich habe eigentlich nur das Abspielen von 2 Trailern drin und einen Dolby-Trailer.

    Über einen Youtube-Downloader lade ich bei jedem HTPC-Start (Musste ich machen, da nur 6000er Leitung) 20 Trailer in einen Ordner auf dem ich mit Cinemavision zugreifen kann. In einem anderen Ordner liegen die Dolby Trailer.


    Die komplette Beleuchtungssteuerung wird von CinemaVision übernommen. Die ursprüngliche Steuerung wird ausgeschaltet.

    Der Ablauf sieht so aus:

    Film mit Cinemavision wiedergeben --> CinemaVision Dummy in FHEM auf "1" ## somit ist die normale Steuerung deaktiviert. Das musste ich machen, da sonst vor jedem Trailer das Licht aus und wieder angegangen ist...

    Im CinemaVisionverlauf sind dann noch batch-Dateien drin, die das Licht an oder ausschalten oder auf die verschiedenen Dim-Level schalten. Am Ende des Ablaufes (Hauptfilm-Start) greift dann auch wieder die normale Kinosteuerung.


    In Cinemavision sind diese Batch-Dateien kleine Scripte die einen HTTP-Befehl an FHEM senden (set%20dim_ug_Fries_Hinten%20off). Ich habe es allerdings nicht hinbekommen das ganze über Telnet laufen zu lassen. Stecke da nicht so drin.

    Also habe ich ein Script, dass Firefox öffnet, sich den Token holt, den Befehl abgibt, die Sicherheitsmeldung bestätigt...... Ist ziemlich umständlich, aber funktioniert.

    Wie gesagt, den Befehl über Telnet abzusetzen wäre einfacher, aber da kenn ich mich nicht aus.


    btw. man kann in Cinemavision verschiedene Ablaufstränge für die verschiedenen Dateiändungen aufbauen. ^^ war für Filme auf HTPC. Der andere Strang ist etwas komplizierter. Cinemavision erkennt die Stub-Datei an der Endung und startet ähnlichen Ablauf. Im Hintergrund wird allerdings der BluRay-Player eingeschaltet, das Laufwerk aufgefahren und nach Ablauf der Trailer automatisch die BluRayActivity eingeschaltet.


    Ist viel gebastelt läuft aber zu 100%.

  • Ich habe mehrere Möglichkeiten einen Film zu starten. Mit Enter/Select/OK, mit Play oder mit ContextMenu (rechtsklick mit Maus oder C auf der Tastatur).

    Ich nutze aktuell, sofern ich einen Film mit CinemaVision starten möchte das Contextmenu. Die Taste habe ich mir bei Harmony auf menu gelegt und wähle dann starten mit CinemaVision.

    Das ganze ist eher ein Gimmick und wird wenn dann mal am WE genutzt. Zu 90% starte ich Filme mit Select oder mit Play.


    Du kannst allerdings in KODI Cinemavision als Standard setzen. Dann spielt er immer darüber ab.

  • Ich nutze das FHEM Plugin in Kodi und das Kodi Plugin in FHEM (das eine hat mit dem anderen nichts zu tun.)
    Über das FHEM Plugin in KODI werden bei mir die Rollläden heruntergefahren und FHEM per dummy device in den "Film Modus" geschickt.
    D.h. z.B. die Automatik für das steuern der Rollläden wird so lange deaktiviert, etc...
    Über das KODI Plugin von FHEM frage ich den Kodi-Status (Play/Pause/Stop) ab für u.a. das Pausenlicht.
    Dieser letzte Punkt ist erst später dazu gekommen, daher ist es so zwei geteilt.

    Aktuell verwende ich das KODI-Modul in FHEM. Gibt es Vorteile oder mehr Möglichkeiten beim FHEM Plugin in KODI?

  • Nein, da gibt es eigentlich keine Vorteile.

    Das plugin in KODi nutze ich halt historisch bedingt. Am Anfang hatte es von der Funktion gereicht, später ist dann das Plugin in fhem dazu gekommen....

    Ich könnte da sicher einiges an Funktionen konsolidieren und die Abläufe vereinfachen. Da aber alles funktioniert ist der Druck in die Richtung gering :zwinker2:


    Frini: fhem kannst du gut per "curl" aus der (Windows) command line steuern.

  • Ich hab das über Curl nicht zum laufen gebracht. :-)

    Wenn es bei Dir läuft wirst Du vermutlich wenig Motivation haben es zu ändern (wie bei mir ja auch:zwinker2:)


    Aber für den einen oder anderene aber vielleicht interessant:

    Code
    # Führt den Befehl: "set DG_Leinwandmaskierung off" in FHEM aus
    curl -s -D - "192.168.1.1:8083/fhem?detail=DG_Leinwandmaskierung&cmd=set%%20DG_Leinwandmaskierung%%20off"
    # oder:
    # Führt den Befehl: "set DG_Leinwandmaskierung dim 64" in FHEM aus
    curl -s -D - '192.168.1.1:8083/fhem?detail=DG_Leinwandmaskierung&cmd=set%%20DG_Leinwandmaskierung%%20dim%%2064'

    "192.168.1.1" ist natürlich durch die Adresse (IP oder DNS-Namen) der eigenen Instanz zu ersetzen, Port sollte man auch überprüfen, verwendet wird der Port des Standard Web Interface.

    und "DG_Leinwandmaskierung" ist das zu steuernde Gerät wie es in FHEM benannt ist

    Die doppelten Prozent sind für die Windows CLI nötig: %%20 erzeugt halt das "html-Leerzeichen %20".

  • Hallo,

    naja ich bin immer gern dabei was neues zu lernen.

    Allerdings funktioniert das bei mir nicht.

    Ich habe bei FHEM HTTPS eingeschaltet. Somit habe ich noch eine Anmeldung mit drin. Und dann ebenfalls diese Token-Geschichte. Ich kopiere heute abend mal den Inhalt der Action.py - Datei hier rein.

  • Ah, ok, mit https und anmeldung Token wird es komplizierter.

    Im fhem Wiki ist nur ein Beispiel für Unixoide, mit genug Muße kann man das sicher auch unter Win10 ans laufen bekommen:

    https://wiki.fhem.de/wiki/CsrfToken-HowTo


    Weil ich gerade neugierig war, hier ist eine Variante per Powershell beschrieben:

    https://forum.fhem.de/index.php?topic=73030.0

    Ich las bei mir den Token Geraffel erst mal aus:big_smile:


    Aber schreib mal Deine Variante, wer weiß wann ich es vielleicht brauche... :byebye:

    :sbier:

  • Bei mir ist es die Leinwandmaskierung die ich von madvr aus direkt ansteuere.

    madvr detektiert die richtige AR und sendet den passenden Befehl an fhem welches einen Rollladenaktor hierfür ansteuert.

    Da nützt mir das KODI Plugin nichts....

    (ich weiß, du hast das mit einem eigenen Tool gelöst....)

    Mit dem Plugin wiederum mach ich die Licht-Steuerung.....

    Gibt halt immer viele Wege nach Rom oder fhem ;-):sbier:

    curl war für mich der einfachste, da nur ein Einzeiler....

  • Es ist noch schlimmer als ich befürchtet habe :shock:

    Ich habe das 2017 gemacht. Und zwar habe ich eine bat erstellt mit folgendem Inhalt:

    Code
    @echo off
    start /max firefox "https://xxx:yyy@192.168.178.10:8083/fhem?cmd=set dum.ug.kn.CinemaVision on&fwcsrf=253o7wohnungmacawohnungmaca253o7"
    timeout /t 3
    
    taskkill /f /im firefox.exe
    exit
    
    :: #network.http.phishy-userpass-length 255 als integer


    Ich hatte mich mal an curl rangewagt, aber nicht zielführend beendet. Ich glaube der untenstehende hat ohne den token geklappt.:

    Wie gesagt KODI läuft auf Windows 7.

    Bei mir ist es wie gesagt nur im CinemaVisionModus. Normalerweise triggere ich das FHEM-Modul

  • Frini

    Hat den Titel des Themas von „Kellopolis: Kinosteueurung mit FHEM + Harmony“ zu „Kinosteuerung mit FHEM (Hausautomation) + Harmony“ geändert.
  • Hallo Frini,


    du schreibst, dass die komplette Logik nun in FHEM ausgelagert ist. Wie hast du denn dann die Harmony eingerichtet Ich nehme doch an, damit steuerst du dne Bluray player usw.?! Wie sagst du denn der Harmony, dass sie nun Play/Pause/Stop usw. schalten soll, wenn du doch die On/Off Eingänge usw. in FHEM regelst ?


    Ich habe bisher nur die Steckdose und das Licht über FHEM realisiert und würde gern auch den Rest dort unterbringen, weil ich immer wieder Problem mit der Harmony habe.


    kannst du mir da ein wenig unter die Arme greifen ?


    Vielen Dank!

    Gruß

    Tom

  • Die Anbindung der Logik steht im ersten Post.

    Zum Beispiel noch mal für die Activiy KODI:

    Es wird auf das event currentActivity gehorcht, welches ausgelöst wird, wenn eine Activity über die Fernbedienung, App, FHEM (Wandtaster,Telegram usw) gestartet wird.

    Die Geräte sind ganz normal in der Harmony angelernt. So dass die normalen Befehle klappen. In den Betriebseinstellungen habe ich allerdings der Harmony mitgeteilt, dass die Geräte nicht ein und ausgeschaltet werden sollen.

    Die Logik übernimmt FHEM. Bei mir über das DOIF mithilfe von wait.

    Ich hatte es vorher in eine sub ausgelagert, allerdings hat dies nie so richtig zuverlässig (fehlende Perl-Kenntnisse meinerseits) funktioniert.

    So hab ich die volle Kontrolle und nutze die Harmony nur noch als "doofes" Gateway.

    Der Nachteil dieser Lösung ist allerdings, dass die Harmony den aktuellen Status der Geräte nicht mehr weiß. Das heißt, beim Umschalten von einer auf die anderen Activity muss ich das ebenfalls abfangen:

    Code
    DOELSEIF
    ([hub_ug_kn_Kellopolis:currentActivity] eq "starting KODI" and [?doi_ug_kn_Kinosteuerung] ne "PowerOff")
    (set std_ug_kn_PC:FILTER=STATE!=on on, setreading doi_ug_kn_Kinosteuerung zustand KODI)
    (set hub_ug_kn_AVR InputDvd)
    (set med_ug_kn_KODI connect, set teleBot message Kino bereit --KODI--)
    ##0,5:

    Mittlerweile meldet ein Kinogong die Bereitschaft des Kinos. Dieser wird (wenn die Kinder noch wach sind) über unsere Squeezeboxen Synchron ausgegeben. :-)


    Vielleicht für den Einen oder Anderen interessant. Wir haben nun die Babyfone (4J. und 6J.) abgeschaltet. Damit wir dennoch wissen, falls die Kinder aufstehen habe ich die Bewegungsmelder umfunktioniert:

    Code
    (([mot_og_fl_Treppe_Motion:"motion:.on"] or [Bewegungsmelder1:"motion"]) and [?doi_ug_kn_Kinosteuerung:zustand] ne "PowerOff" and [?20:00-06:00])
    (set med_ug_kn_KODI playpause, set hub_ug_kn_BluRay command Pause, set teleBot message Kind wach. Ab nach oben!)
    (set dim_ug_kn_Fries_Sw.* on)
    (set dim_ug_kn_Fries_Sw.* off)
    (set dim_ug_kn_Fries_Sw.* on)

    Unabhängig des Abspielmediums, wird der Film pausiert, und das Licht beginnt zu blinken. Ist noch etwas Verbesserungswürdig, aber es funktioniert.

  • Zitat

    In den Betriebseinstellungen habe ich allerdings der Harmony mitgeteilt, dass die Geräte nicht ein und ausgeschaltet werden sollen.

    Klasse, das hat mir gefehlt. Einfach nicht einschalten … manchmal kann es so einfach sein :-) Danke!


    DOIF habe ich allerdings nie so richtig verstanden. Ich habe das alles in Subs ausgelagert. Fhem macht nur die notwendigen notifys. Jetzt ist es wirklich eine 1-Cklick Lösung geworden :-) Bin zufrieden

  • Magst du die Sub teilen?

    Ich bin wieder zurück zu dem DOIF, weil meine Abläufe mehrfach getriggert wurden, (3 mal die gleiche Nachricht erhalten). Dies konnte ich erst mithilfe eines weiteren Readings abfangen.

    Im großen und ganzen lief das ganze nicht wirklich rund und immer etwas zufällig.

    Wenn ich noch einmal neu aufbauen würde, würde ich die Geräte von einander abhängig starten. Also 1. Beamer, dann wenn dieser eingeschaltet ist, die Mediasteckdosen, dann wenn der AVR eingeschaltet wurde die Endstufen etc.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!