Heimkino-Steuerung mit Home Assistant

  • Ich stelle hier meine Heimkino-Steuerung mit Home Assistant vor.


    Die ersten vier Posts enthalten folgende Inhalte:

    1. Screenshots der aktuellen Benutzeroberfläche
    2. Infos zum Setup
    3. Entwicklung eigener Geräte-Integrationen
    4. Automatisierung


    Das Fazit zu Beginn:

    • Schon seit Jahren wünsche ich mir eine zuverlässige IP-Steuerung für mein Kino. Mit HA konnte ich mir diesen Wunsch erfüllen.
    • Die freie Konfigurierbarkeit ist Stärke und Schwäche zugleich. Alles ist möglich, aber vieles lässt sich nur aufwändig realisieren bzw. man muss herausfinden wie man Dinge am besten umsetzt.
    • Genial ist die Stabilität, die installationsfertigen Images für RPI und VMs sowie die Performance. Mein RPI4 läuft mit 5% CPU-Last.
    • Wenn man möchte, kann alles autonom lokal, ganz ohne Cloud, laufen!
    • Die Konfiguration eines Setups wie hier vorgestellt, ist mit HA ist nicht intuitiv möglich und schon gar nicht trivial.
      Hohe Frustrationstolleranz und den Anspruch es fertig zu bekommen sind Vorraussetzung.
    • HA ist "nur" eine Platform - man muss sich die passenden Erweiterungen zusammensuchen, um Funktionen umzusetzen. (siehe Post#2)


    Status der Implentierung:

    • Nutzbar als Prototyp
    • Laufende Optimierung und Bugfixing
    • Ein ein Samsung A7-Tab inkl. Haltung für die Sitzlehne ist bestellt


    Wozu der ganze Aufand - dass muss ich mich ehrlich fragen

    • Meine Signalkette ist doch recht lange und unterschiedlich je Quelle, das bringt die Harmony an die Grenze
    • Ich teste gerne unterschiedliche Einstellungen (AVR, Beamer, MadVR, etc.) und wenn ich dann mal einen Film schaue, möchte ich wissen, dass alles wieder wie gewünscht eingestellt ist.
    • Da die Harmony kein Feedback zu Gerätestatus und Settings empfangen kann, weiss ich oft nicht warum Bild oder Ton gerade nicht richtig funktioniert.
    • Da ich in meinem Setup kein OSD vom Denon anzeigen kann, wusste ich nie was das aktuelle Format des Input- und das Output-Signals ist.
    • Meine Familie soll auch ohne mich in der Lage sein das Kino zu nutzen.
    • Die Touch-Oberfläche sieht im Vergleich zur Harmony schon schick aus.


    @Mods: Ich poste dies hier, da dieser Bereich anscheinend nicht öffentlich sichtbar ist. Sollte es einen besseren, nicht öffentlichen Ort geben dann bitte verschieben.


    1) Screenshots der aktuellen Benutzeroberfläche

    (Bitte nicht die Schriftgrößen bemängeln, diese sind aktuell für mein SGS optimiert und die Screenshots sind vom Firefox. Am Handy wirkt leider ein DPI-Scaling)


    Die Startseite


    Das Klicken auf ein Feld, startet die hinterlegte Automatisierung und schaltet die Oberfläche passend um. Hier wurde „Netflix“ gewählt, es erschein ein blauer Rahmen rund um Netflix, die „Streaming“-Karte wird geöffnet und auf der Leinwand sollte bald Netflix angezeigt werden.


    pasted-from-clipboard.png


    Das Ausführen der Automatisierung dauert ja ein paar Sekunden ;-) Daher ist in der obersten Zeile die „Kette“ der benötigten Geräte dargestellt. Ein Gerät wird erst dann grün angezeigt, sobald es eingeschalten UND korrekt eingestellt ist. Und der Rahmen um Netflix auf der Startseite wird erst dann grün, wenn die "Chain" fertig ist.


    Klickt man auf „Chain“ erscheint die folgende Detail-Ansicht der Kette.

    Hier sieht man die Entwicklung der „Chain“-Ansicht, von „PowerOff“ bis „Streaming (Prime Video)“


    pasted-from-clipboard.png


    Zu den Spalten:

    Bezeichnung, Stromversorgung, Ping-Status, IP-Service-Status, aktuelle Geräteeinstellungen und Gerätestatus in der Kette.

    Die Buttons mit abgerundeten Ecken haben eine Funktion (Ein/Aus).

    Per Klick auf die Bezeichnungen kommt man zur jeweiligen Detail-Karte des Geräts.


    Die Karte für das Filmschauen mit Kodi (MPC-HC) sieht wie folgt aus - Ist das Gegenstück zu Karte "Streaming" im ersten Bild.

    Wichtig war mir hier zB die Laufzeiten darzustellen. Die Filmbilder sehen nur schick aus.


    pasted-from-clipboard.png


    Das sind die Geräte-Karten

    pasted-from-clipboard.png


    Den Denon habe ich schon recht umfangreich integriert. Damit habe ich begonnen.

    Wichtig war mir von Beginn an die Darstellung der Auswahltasten. Keine Drop-Downs sondern Radio-Buttons. Eine gedrückte Taste wird sofort blau, dass heisst das Kommando wurde an das Gerät gesandt. Sobald das Gerät die Einstellung bestätigt wird die Taste grün. Dies ist, wo es möglich war, überall so umgesetzt.
    pasted-from-clipboard.png


    Hier noch der HTPC, der JVC und die Harmony

    pasted-from-clipboard.png

  • 2) Infos zum Setup


    Basisinstallation



    und verwendete Erweiterungen


    Device Integrations:

    • Mikrotik Routerboard
      • HACS-Integration
      • https://github.com/tomaae/homeassistant-mikrotik_router
      • Sehr umfangreich. Legt aber beim Anlegen gleich für alle Interfaces und Status Sensoren an. Waren bei mir an die 100. Sensoren die ich nicht benötige, habe ich gelöscht, um das System nicht unnötig zu belasten.
    • AppleTV
      • HA-Integration
      • https://www.home-assistant.io/integrations/apple_tv
      • Zu Beginn mit 2023-04 hat sich die Verbindung ständig getrennt. Ab 2023-05 keine Probleme mehr.
      • Cool finde ich, dass man direkt Streaming-Apps aufrufen ann und zur aktuellen Wiedergabe die Laufzeiten, den Titel und sogar das Fan-Art-Bild bekommt.
    • Denon:
      • Eigene Integration (via Telnet)
      • Mit der Standard HA-Integration für den Denon hab‘ ich mein HA-Projekt begonnen und war bald recht verzweifelt. Daher habe ich mich entschlossen meine eigene Integration zu programmieren. Details im Post #3.
    • HTPC (MPC-HC)
      • Eigene Integration (via http-API)
      • Die Bedienung hätte ich auch über Tastendruck per hass.agent machen können, jedoch bietet das http-API eine vollumfängliche Bedienung und auch Infos zur aktuellen Wiedergabe. Damit ich die Kodi-Fanart zum Film nach HA bekomme läuft aber noch zusätzlich ein AutoIt-Script.
    • HDFury (Diva)
      • Eigene Integration (via http-API)
      • Liefert einige nette Infos zum Audio- und Video-Format. Ich benötige aber nur die Umschaltung der HDMI-Eingänge, um zwischen HTPC und dem Rest umzuschalten
    • JVC
      • HACS-Integration
      • https://github.com/iloveicedgreentea/jvc_projector_improved
      • Hier kenne ich zwei Integrationen. Eine offizielle und eine HACS. Beide snd nicht annähernd vollständig. zB. vermisse ich Motion-Flow-Settings und Lampen-Laufzeit.
      • Da ich am NZ8 aber praktisch nichts umstelle stört mich das noch wenig, werde aber wahrscheinlich meine eigene Integration programmieren.
    • Panasoinc BD-Player 424
      • IR über Harmony
      • Hat Lan-Interface und IP-Adresse aber finde keine Protokollbeschreibung. Also, noch nicht integriert, sonst halt mit Harmony.
    • Technisat HD1
      • IR über Harmony
      • Hat Lan-Interface und IP-Adresse aber finde kein Protokollbeschreibung. Also, noch nicht integriert, sonst halt mit Harmony.
    • PS4, XBoxOne:
      • Wird nicht integriert. Nur die Kette wird entsprechend eingestellt.
    • Licht (Intertechno)
      • IR über Harmony
      • Umbau auf Tasmota folgt.


    GUI – lovelace

    • browser-mod
      • HACS-Integration
      • https://github.com/thomasloven/hass-browser_mod
      • Notwendig, damit man aus Scripts heraus die Karten im GUI umschalten kann. Seit der Installation dieses Mods zeigt das GUI aber immer wieder mal Fehlermeldungen. Ursache noch unbekannt


    Development und Tools

    • Recorder
      • HA-Integration
      • https://www.home-assistant.io/integrations/recorder/
      • Die historischen Daten aller Sensoren (nicht Attribute) werden in der Datenbank gespeichert. Für unsere Heimkino-Anwendung eigentlich unnötig. Mit dieser Erweiterung kann man historischen Daten automatisiert und gezielt löschen, sonst läuft der Speicher voll.



    Add-Ons (HA)




  • 3) Eigene Integrationen


    Es sind bereits sehr viele Geräte-Integrationen für HA verfügbar. Deren Qualität und Umfang ist jedoch sehr unterschiedlich. Sehr gut sind z.B. die Integrationen Tasmota oder MQTT/hass.Agent. AppleTV funktioniert erst seit 2023.05 ohne Verbindungsabbrüche.


    Die Integrationen für Denon und JVC sind sehr eingeschränkt und für HDFury, MPC-HC und meine DIY-Maskierung gibt es gar keine fertigen Einbindungen. Dem eifrigen Entwickler bietet HA jedoch eine Entwicklungsplattform, die die Grundlage für eine große, aktive GitHub-Community ist. https://developers.home-assistant.io/


    Einfache Integrationen über http lassen sich z.B. relativ einfach via command-line oder scripts und curl realisieren. Damit kommt man jedoch schnell ans Limit. Komplexere Integrationen mit Vorverarbeitung und „Intelligenz“ benötigen ausgelagerte Services.


    Für die hier vorgestellte Umsetzung meiner Heimkino-Steuerung war mir eine möglichst rasche Fertigstellung wichtiger, als eine Umsetzung laut HA-Dev-Guidelines. Da ja viele Wege zum Ziel führen und dies besonders für HA gilt, habe ich meine Integrationen aktuell wie folgt umgesetzt. Wobei ich, sofern ich weiterhin Begeisterung aufbringe, plane diese Integrationen zumindest über HACS installierbar zu machen.


    Hier möchte ich kurz beispielhaft meine Denon-Integration vorstellen:


    • Besonderheiten und Herausforderungen des Denon-Protokolls
      • manche Informationen werden aktiv (via Push) an den Client gesandt (z.B. Lautstärke)
      • die meisten Werte müssen vom Client aber abgefragt werden.
      • die Parameter sind unterschiedlich formatiert („gewachsenes“ Protokoll). Trennzeichen sind manchmal Leerzeichen, manchmal „:“ oder auch gar kein Trennzeichen
      • Viele Commandos sind nicht im XLS enthalten (z.B. SSINFAISFOR für das Audio-Inputformat)
      • Einige Infos liegen nicht explizit vor (z.B. Output-Channel-Layout)
      • Viele Infos müssen vor der Anzeige in eine darstellbare Form konvertiert werden.

    Um diese Aufgaben zu lösen, habe ich ein Python-Programm „denon-grepper.py“ erstellt. Dieses läuft auch unabhängig von HA - Das hat Vorteile beim Debuggen und Testen. Es erzeugt einen Datenstrom, welcher alle Daten des Denon in vorbereiteter Form in ein File oder eine Pipe schreibt. Das HA-Python-Script „denon-sensor.py“ nimmt diesen Datenstrom entgegen und schreibt die Daten als Argumente mit Methoden der hass-Klasse in die HA-Entity „sensor.denon_device“. Diese Argumente können dann im GUI verwendet werden.


    Für das Senden von Befehlen habe ich das HA-Python-Script „denon-remote.py“ erstellt. Dieses nimmt als Argument einen Befehl, eine Befehlskette oder eine Befehlsgruppe entgegen, konvertiert diese in eine Kommando-Sequenz laut Denon-Protokoll und sendet sie an den Denon.


    Das Programm „denon-sensor.py“ ruft auch selbst „denon-remote.py“ mit Kommandos auf. zB. Wenn sich das Audio-Input-Format ändert (was aktiv via Push signalisiert wird) werden die Audio-Output-Infos abgefragt, da sich diese hierbei auch ändern, dies aber nicht vom Denon aktiv signalisiert wird.


    Zwecks besserer Anschauung stelle ich hier den Weg der Daten dar.


    1. Telnet-Rohdaten (Auszug)

    pasted-from-clipboard.png

    MV64 bedeutet z.B -16dB


    pasted-from-clipboard.png

    Aus den CV-Parametern kann man herauslesen, welche Output-Channels aktiv sind. Die Summierung über die Ebenen ergibt hier somit 7.1.4.


    2. Der vorverarbeitete Datenstrom vom „denon-grepper.py“ sieht dann so aus

    pasted-from-clipboard.png

    Die Rohdaten in Capitals die vorverarbeiteten beginnen mit „nn“


    3. Und das sind dann die Attribute des Entities

    pasted-from-clipboard.png

    (inkl. umfangreicher Debug-Infos - deaktivierbar)



    4. Die Darstellung eines Werts (Attribut dieser Entity) in auf einem Feld im GUI geht dann so:

    pasted-from-clipboard.png

    Zu beachten: Der Template-Code in den Custom-Button-Cards ist Java-Script. Im Gegensatz zu den HA-YAML-Templates wo Jinja2 verwendet wird und in den Python-Scripts natürlich Python. Das kann schon recht verwirrend sein.

  • 4) Automatisierung


    Ohne Automatisierung ist HA nur eine Universalfernbedienung. Aber, man möchte ja eine Taste drücken und alles stellt sich rasch und verlässlich, korrekt ein.


    Man muss jedoch zuerst die Grundlagen schaffen, um größere Automatisierungen zu implementieren. Daher habe ich zunächst alle meine Geräte - soweit notwendig - in HA integriert.


    Aber am Ende benötigt jedes Device noch immer andere Befehle und anderen Syntax für das Ein und Ausschalten, und um Einstellungen vorzunehmen. Daher habe ich noch eine Programmebene darübergelegt. Daher hat jetzt jedes Gerät es ein HA-Script für das Einschalten(mit Settings) und das Ausschalten bekommen.


    ZB das HA-Script “Denon_Start(Quick,Input)”, dieses startet den Denon-AVR und setzt QuickSelect und Input (sofern nicht schon so eingestellt) wie in den Parametern angegeben.


    Damit habe ich alle Bausteine für das Starten der Ketten per Automatisierung zusammen.

    Der YAML-Code für die Automatisierung der Kette „Kodi“ sieht aktuell so aus. IMHO recht übersichtlich, fast wie im Harmony-Konfigurator.


    pasted-from-clipboard.png

  • Dem schliesse ich mich an.

    Vielen Dank für die echt ausführliche Dokumentation!!!

    "A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila." - Mitch Ratcliffe

  • Hallo Roman,

    Hammer wieviel Arbeit du hier reingesteckt hast. Vielen Dank für die Doku. Ich habe wenig Zeit - aber deine Denon Steuerung muss ich mir nochmal genauer abschauen, damit könnte ich noch ein paar interessante Infos abgreifen.

  • Was ich noch nicht verstanden habe

    • Wenn ich jetzt schon HA-fit bin, wozu könnte ich ausserhalb des Heimkinos diese Hausautomatisierung noch sinnvoll nutzen?
    • Hätte ich schon eine PV-Anlage könnte ich Geräte auf Basis der aktuell verfügbaren Sonnen-Energie ein/ausschalten, aber sonst?
    • Warum sollte ich meine Rolladen und Markisen zentral ansteuern, die haben eh einen Sonnensensor?
    • Für das Licht reichen mir ein/zwei Lichtschalter je Raum eigentlich vollkommen.
    • Warum sollte ich die Heizung schalten wollen, wenn niemand zuhause ist?
    • Und, dass ich nur zum Spass alle und alles überwache ist auch sinnbefreit.


    Ideen?

  • Ich habe heute einen pi4 sehr günstig auf Kleinanzeigen ergattert und werde mich da auch mal rantasten. Bei weitem nicht so umfangreich, sondern eher zum schnuppern. Ader Appetit kommt ja oft beim Essen. Daher schon einmal vielen Dank für die tolle Doku :)

    auch gewerblich als User "Speaker Base" unterwegs

  • Hallo,


    echt beeindruckend.

    Darf ich fragen ob du das (programmieren) beruflich machst bzw. Background hast?


    Ich schaffe aktuell nicht Mal Helfer Sensoren richtig zu erstellen. Und dabei sind das, bzw. sollten das Grundfunktionen sein ein paar Zeilen lang.


    Was sonst noch automatisieren?

    Es gibt eine Threads dazu wo einiges besprochen wird. U.a. das aufheizen der Kaffeemaschine je nach aufwachzeit.


    Strommäßig wäre z.b. wenn man awattar nutzt (stundenpreise Strom) eine gewisse Einsparung möglich.


    Bei einem Pool kann man die Steuerung damit machen. Also dosieranlage, Pumpe,...


    Wetteraufzeichnungen, Bewässerung.


    Ich nutze es im Zusammenhang der PVA, aber auch mit ein paar Schaltern am Smartphone für rollläden, Licht (Szenen) oder auch als TV Fernbedienung. Das meiste funktioniert aber optisch ist es noch Chaos.

    Es sind dann auch Eigenheiten die ich nicht verstehe. Z.b. direkter Aufruf von paramount+ am TV. Gleiche Vorgehensweise wie bei Prime oder Netflix, aber bei paramount funktioniert dann die Auswahl des Profils nicht. Man kann klicken aber es tut sich nichts. Auch die IR Fernbedienung vom TV kann dann dort nichts mehr ausrichten.



    Aber klar es braucht hier immer auch die Hardware dazu.



    mfg

  • Über IR geht es einfach, aber zu einem IP-Protokoll finde ich keine Hinweise.

    Ist bekannt ob Control4 die Pana-Player via IP einbindet?

    Das ist das einzige was ich dazu finde. https://forum.roomieremote.com…nic-ub9000-control/4221/9


    Steuern geht ja über HarmonyHub und IR. Aber den Status ob Pause oder Play und die Laufzeit wäre interessant.

  • Richtig gut beschrieben und tolle Arbeit! Ich selbst nutze HA für das ganze Haus und natürlich auch für das Kino. Allerdings bin ich nicht so fit mit Python und Co, daher greife ich immer auf die Boardmittel zurück.


    Was mache ich noch mit HA? Ich habe meine Lüftungsanlage damit optimiert, gerade im Sommer soll der Luftaustausch reduziert werden im die Wärme draussen zu lassen, abends und nachts dann erhöht um die kühle Luft rein zu holen. Trotz Wärmetauscher hilft die dynamische Steuerung hier. Das meiste im Haus wird tatsächlich ohne Eingriff von HA gesteuert, wir haben KNX. Allerdings stößt auch KNX hin und wieder an seine Grenzen, da kommt dann HA zum Einsatz. Die Kodi Geräte im Wohnzimmer und Kino werden damit gesteuert (an/aus), vergessene Lichter nach dem zu Bett gehen ausgeschaltet. Die Spülmaschine wird beladen und dann bei PV Überschuss gestartet, auch wenn keiner da ist. Kommt nicht genug Strom vom Dach startet die Maschine automatisch drei Stunden vor dem Abendessen damit die Teller sauber sind 😉 im Kino-Rack werden damit die Ventilatoren im Rack kontrolliert.


    Was ich noch empfehlen kann sind die Mushroom Cards, optisch sehr ansprechend und sehr flexibel. Dazu noch den card_mod. Damit ist dann alles modifizierbar.

  • Cricket hat die Integration für den JVC aktualisiert. Unter anderem gibt es jetzt wohl auch eine generische Funktion zum Senden eines beliebigen commandos.

    Er hat auch das HDR Level implementiert … leider scheint es so, als wäre das Commando mit der FW 2.0 nicht mehr korrekt. Zumindest funktioniert bei mir weder das Auslesen des aktuellen Levels noch das Setzten.

    Da es bei mir aber auch mit dem Harmony Commando für das direkte setzten nicht klappt - wäre es nett wenn noch jemand das mal probieren könnte.

  • Projekt: LED-Strips mit DMX-Controler, Artnet-Node und Home Assistant Integration


    Wie in meinem Bauthema vorgestellt habe ich mein Heimkino um LED-Strips erweitert.


    RE: Status und Geschichte des Heimkinos „Tron“


    Kern ist die DMX-Schnittstelle für professionelle Bühnentechnik. Bei Thomann gibt es hunderte Produkte mit DMX-Interface. Von LED-Strips, über Scheinwerfer bis zu Nebelmaschinen.


    Damit man DMX-Komponenten über das IP-Netzwerk ansteuern kann benötigt man ein Gateway oder auch Node genannt. Der hier verwendete Node kann via DMX 512 Kanäle ansteuern. DMX Geräte kann man einfach hintereinander an den DMX-2Draht-Bus hängen.


    Folgende Produkte, Software und Konfigurationen habe ich dafür einsetzt.


    Aufbau der Kette:


    1.) RGB-LED Strips

    2.) Über 4-polige Steckverbindungen und Kabel zum DMX-Controller

    3.) DMX-Controller

    4.) Über XLR-Kabel zum DMX-Artnet Node

    5.) DMX-Artnet Node

    6.) Über WLAN zu Home Assistant

    • War etwas tricky, da die Doku des SigmaNET BlueDMX sehr kurz gehalten ist.

    7.) Home Assistant: DMX-Integration über HACS

    8.) Home Assistant: Konfigurationen erstellen

    • Beispielhafte Auszüge:
      Einbindung der DMX-Integration über die <Configuation.yaml>
    • Licht mit einem Touch-Button einschalten <lovelace.yaml>


    • Zufällige Szene bei FilmPause aktivieren <Automation.yaml>
  • Wie groß ist denn das delay bei Apple TV wenn du Pause als Auslöser nutzt?

    Beim firetv Stick geht das über die debug Bridge, aber mit zu langem delay und das Problem ist dass auch im Menü wenn eine Vorschau gespielt wird das nicht als Pause gemeldet wird.


    mfg

Jetzt mitmachen!

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