Home Assistant - Kino Steuerung

  • Hallo zusammen,


    ich bastel mir gerade ein Dashboard für mein Heimkino zusammen und nutze die Denon Integration. Ich habe es mittlerweile geschafft über Helfer virtuelle Buttons zu erstellen und über command entprechende Befehle zu senden.

    pasted-from-clipboard.png

    Was ich jetzt gerne machen würde ist den Status der commands abzubilden. Ich denke dafür brauchts wohl einen Sensor-Template.

    Ich habe aber keine blassen Dunst was ich da in die Codezeile (1) eintragen muss damit der Sensor den entsprechenden Wert abbildet, vielleicht kann mich da jemand in die richtige Richtung schubsen. Mit gehts auch explizit um Werte die ich über command erhalte und nicht um Werte die bereits als attribut vorliergen.

    pasted-from-clipboard.png



    Danke schonmal im voraus

  • Hast du dir die Anleitungen von Namor Noditz schon durchgeschaut?


    Ich bin leider nicht fit genug das so zu machen.

    Allerdings habe ich für andere Kleinigkeiten es über custom:Button card gemacht.

    Das ist über HACS zu installieren.


    Leider auch nur Code und kein GUI verfügbar aber was mir massiv hilft ist chat-gpt.

    Wenn die jew. Integration auch Status ausgibt (was nicht jede tut, Denon???) dann lässt sich das so umsetzen.

    In Chat -gpt eingeben was man will, welche Entitäten man hat, welche Sensoren unsw.. und dann was man will mit Button Card.


    Den Code dann ins Dashboard kopieren.

    Mit chat-gpt kann man dann auch verfeinern als "farbe von blau auf rot wechseln, wenn...."


    mfg

  • schauki

    DANKE DANKE DANKE

    geilster Tipp aller Zeiten! Jetzt hab ich den halben Tag damit verbracht die Lösung zu finden und durch deinen Tipp hat es 5 min gedauert - HAMMER!!


    Mit folgender frage hab ich Chatgpt gefüttert und direkt einen Volltreffer gelandet, saugeil:

    Zitat

    ich benötige für Homeassistant einen yaml code für einen sensor-template der den Status von denon command /goform/formiPhoneAppDirect.xml?MV? für die Entität media_player.denon_avc_x3800h ausgibt

  • Bin ich wohl zu spät dran, aber das gibt es doch auch fertig ?


    Also hier meine Lösung (einiger weiterer Schnickschnack mit drin)



    pasted-from-clipboard.png

  • Oh da hast du Recht. Manchmal verliere ich wirklich den Überblick, was schon umgestellt ist, und was noch nicht.


    Wärst du so nett deinen Code für die Buttons zu teilen ?

    Gude

    Basti

    Einmal editiert, zuletzt von atmde ()

  • Hier mal zwei Beispiele, wie ich mit HomeAssistant und Node-Red als Regel-Engine das Kino steuere.


    pasted-from-clipboard.png

    Hier benutze ich allerdings noch openHAB als Schnittstelle zu Kodi 17.6, da durch einen Bug in der V17.6 die Statis nicht an HA übertragen werden, sondern mit openHAB. HA dient aber als Middleware für die Beleuchtung (Zigbee und DMX).


    pasted-from-clipboard.png

    Hier löst das Einschalten des AVR das Einschalten der anderen Komponenten aus. Hier musste ich mit einem Workaround für den Projektor arbeiten, da HA erwartet, dass der Projektor immer im Standby ist, was ich nicht möchte. Also habe ich einfach eine direkte Integration für Node-red verwendet und so das Ganze mit HA kombiniert.


    Im ganzen ist es bei mir also ein Kombination aus HA, openHAB und Nod-Red und Zigbee2MQTT

  • Hier mal zwei Beispiele, wie ich mit HomeAssistant und Node-Red als Regel-Engine das Kino steuere.

    Hier benutze ich allerdings noch openHAB als Schnittstelle zu Kodi 17.6, da durch einen Bug in der V17.6 die Statis nicht an HA übertragen werden, sondern mit openHAB. HA dient aber als Middleware für die Beleuchtung (Zigbee und DMX).

    Ich nutzte auch noch die alte KODI Version wegen dem DS Player, aber in NodeRed direkt einen Kodi Node. Der funktioniert bei mir:

    https://flows.nodered.org/node/node-red-contrib-kodi


    Dann kannst Du dir den Umweg über OpenHab sparen.

    pasted-from-clipboard.png

  • DoXer

    Na klar.

    Hier sind die 3 Nodes:

  • Ich war in den vergangenen Wochen immer wieder viel beruflich unterwegs und genoss das Leben in "vollen Zügen" - jaja, die Bahn :) Während so einer langen Bahnfahrt hat man dann auch mal Zeit sich ein paar Gedanken über die Heimkinosteuerung zu machen. Da ich für das ganze Haus schon Home Assistant einsetze und das Kino auch schon drin ist, dachte ich mir: was könnte man da noch schickes machen?


    Wenn nur Musik läuft, ist WLED schon integriert, heißt: die Lichter reagieren dynamisch auf die Musik. Zum Start des Films das Licht herunterdimmen ok... aber: wäre es nicht cool, zum Abspann auch das Licht wieder langsam hochzudimmen? Nur wie? Dafür müsste man ja wissen, wann der Abspann startet und Home Assistant melden... Da fiel mir etwas anderes ein, was ich schon einsetze: RESTful Sensoren für einen anderen Zweck.


    Woher kommt der Ansatz:

    Wir haben im Haus ein Multiroom-System mit Deckenlautsprechern (da hab ich auch noch eine Baustelle, aber dazu vielleicht ein andermal mehr ;) ). Jetzt wollte ich, dass meine Kinder (4 und 7, natürlich kein Handy) ihre Lieblingsmusik und Hörspiele so wie bei einer Toniebox abspielen können. Wer das nicht kennt: man kauft für 100 Euro eine Toniebox und für jedes Hörpiel in Form einer kleinen Figur, die man auf die Box drauf stellt, zahlt man nochmal 15 Euro... teurer Spaß und es gibt nicht alles, was die Kids mögen (eigene Playlists etc.). Daher habe ich auf Basis von NFC Tags und dem im Link genannten Beispiel eine eigene Jukebox für die Kids und uns Erwachsene gebaut. Das klappt recht einfach: man legt eine NFC Karte auf und in HA wird dann eine Playlist, Ordner oder sonstiges Ziel per Automation im jeweiligen Player (basiert auf dem Logitech Media Server) gestartet. Welche Karten-ID mit welcher Playlist "verheiratet" ist, habe ich in einem JSON-File hinterlegt. Daher kam auch die Idee für das "Credits light" :)


    Der Aufbau sieht wie folgt aus:

    Kodi als media_player Entität, ein Helper (template Sensor), ein Rest-Sensor, ein JSON-File mit den Informationen und drei Automationen (versuche das aber zu reduzieren.


    Kodi liefert als media_player den Wert "media_position" als Attribut. Leider aktualisiert sich dieser Wert nicht automatisch.

    Der Helper-Template Sensor liest den Wert media_position aus, da ich das nicht mit der Abfrage des Rest-Sensors direkt verknüpfen kann. So sieht das template aus:

    Code
    {{ state_attr('media_player.cinema', 'media_content_id')['tmdb']  }}

    Der Rest-Sensor greift auf das lokale JSON-File zu, in dem ich die tmdb-ID mit dem Wert des Abspannstarts hinterlegt habe. Hier der Rest-Sensor:

    Code
    - platform: rest
      name: movie_credits_starttime
      resource: "https://dns.name.meines.ha.servers/local/movie_credits.json"
      value_template: "{{value_json[states.sensor.cinema_player_movie_id.state].credit_start}}"

    Die Daten in dem JSON-File, welches im www Ordner von Home Assistant liegt, sehen so aus:


    Code
    {
        "7446":
        {
        "name": "Tropic Thunder (2008)",
        "credit_start": "6920",
        "tmdb": "7446",
        "volume": "28",
        "profile": "standard"
        }
    }

    Hier mal exemplarisch für "Tropic Thunder" aus 2008. Am Ende tanzt Tom Cruise noch ein wenig herum, aber der "echte" Abspann läuft noch nicht. Daher bot sich das für den Effekt ganz gut an. Die Informationen wie "name" und "tmdb" sind optional, falls ich die für spätere Integrationen nutzen möchte. Ebenso hab ich bereits angefangen Werte für Volume und Profilinformationen einzupflegen.


    Leider muss man die Werte von Hand eintragen, das heißt: den Film anschauen und gegen Ende die Sekundenzahl ermitteln, wann der Abspann startet.


    Wenn der Film startet, aktualisiert sich der Helper Sensor mit der tmdb-ID. Das bringt den Rest-Sensor dazu sich auch zu aktualisieren und dieser zieht basierend auf der tmdb-ID sich den jeweiligen Eintrag aus dem JSON-File. Dann kommen die Automationen ins Spiel:


    Automation 1 aktiviert die sekündliche Abfrage des Entitätenstatus für den media_player (sonst würde die dauernd laufen, das Aktualisieren macht nur bei laufendem Player Sinn).

    Automation 2 ist die eigentlich Abfrage des Entitätenstatus.

    Automation drei vergleicht die aktuelle Position mit der Credit-Start time des Rest-Sensors. Wenn diese erreicht oder überschritten wird, wird das Licht hochgedimmt:

    Das Hochdimmen muss ich leider mit einem Repeat Command machen, weil ich dort KNX-Beleuchtung im Einsatz habe. Diese unterstützt keine "transition", die ich bei einem "light.turn_on" Kommando in HA eigentlich mitgeben kann. Bei anderen Licht-Entitäten geht das einfacher mit dem "Transition" Wert.


    Was möchte ich noch optimieren?

    Zunächst einmal die Anzahl Automationen nochmal reduzieren. Ggf. auch noch Sensoren einsparen, wenn das geht. Auch die Ablage sämtlicher Zeiten, wann die Credits starten, würde ich gerne noch anders lösen, ohne es zu kompliziert zu machen (Stichwort: Datenbank).


    Was kann man noch realisieren?

    Ich hatte schon die Werte "Volume" und "Profile" oben genannt. Man hört nicht alle Filme mit den gleichen Settings (zumindest ich nicht). Mal ist die Lautstärke zu hoch, mal zu niedrig. Gerade bei älteren Filmen fehlt es auch ein wenig an Bass. Man kann über den Profilwert eben diese Settings je Film festlegen. Die Lautstärke wird auch einmal eingetragen und beim Filmstart auf die richtige Lautstärke regeln - am Ende des Films kann diese dann abgesenkt werden. Da wir - wenn das Kino fertig ist - gerne Filmabende mit Freunden veranstalten wollen, wäre eine "Loungemusik" zur Ankunft oder Trailershow vor dem Film ganz cool. Zum eigentlichen Filmstart kann man dann die Lautstärke automatisch anpassen lassen. Ein Script dafür hab ich schon gebaut. Natürlich sind weitere Anwendungen oder Einträge in dem JSON denkbar. Das Bildformat kommt bei mir (schaue nur von Kodi) direkt vom Player bzw. aus den Metadaten des NFO-Files.


    Vielleicht ist das ja was für den ein oder anderen.


    VG
    Harald

  • Dein Ansatz ist interessant. Danke für das Teilen Deiner Lösung. Leider erfordert Dein Ansatz auch manuelles eingreifen (Eintragen wann der Abspann beginnt)


    Ich habe das ganz anders gelöst.


    Am Sitzplatz habe ich 5 Tasten (Wemos D1 --> MQTT --> HA).

    EIne davon drücke ich einfach wenn der Film zuende ist und der Abspann kommt und ich das Abspann-Scenario (gedimmtes Licht, Leinwand-Spots an) haben möchte.

    Ab und zu habe ich gar nicht das Bedürfnis die Scene zu starten, da der Sog des Films so stark war, das ich die Dunkelheit des Abspanns genieße. Ich gehöre zu denen, welche den Abspann IMMER schauen und hören. (Herr der Ringe Extended mal ausgenommen :zwinker2: )


    Aber ich kann Deine Motivation verstehen. Ich mag es auch mit HA Dinge zu automatisieren, solange sie im Verhältnis zum Aufwand stehen. Und das manuelle Eintragen der Anspann-Start-Zeit wäre mit zuviel. Da drücke ich eben auf die eine Taste und gut.


    Was ich mit HA autmatisiere oder in Kürze noch mache:

    - Beim Einschalten des Kinos den AVR (CX5100) auf das Straight-Soundformat setzen. Oft Habe ich den Upmixer aktiviert und vergesse den wieder auszuschalten.

    - Lautstärke/Bass/Hochton-Profile einrichten, welche ich schnell aufrufen kann, eventuell anhand eines Tags im Dateinamen, bei Filmen welche ich öfters schaue.


    Auf jeden Fall hilft das Teilen Deiner Lösung der KI wieder was dazu zu lernen und uns bei Fragen an dieser hilfreiche Lösungen zu präsentieren. :respect:

  • EIne davon drücke ich einfach wenn der Film zuende ist und der Abspann kommt und ich das Abspann-Scenario (gedimmtes Licht, Leinwand-Spots an) haben möchte.

    Für diesen Anwendungsfall suche ich noch einen automatischen Weg. Also erkennen, wann der Abspann anfängt und das dann schon mal ein paar Lichter hochdimmen!
    Hat ja gefühlt jeder Film einen anders "langen" Abspann

  • Die Idee mit dem Knopf (Kingsmen, wo Samuel L. Jackson sagt "A simple switch will do..." ;) hatte ich erst auch. Aber dieses vollautomatische gefällt mir ganz gut. Zudem könnte man das File mit den Abspannzeiten auch teilen oder anders zur Verfügung stellen. Ich hab da noch keine Idee. Ich mach das für jeden Film, der mir beim nächste Anschauen in die Finger kommt. Klappt natürlich auch nur, wenn man auch die Sekundeinfo vom Zuspieler erhält. Eleganter klappt es leider noch nicht...


    Dem Abspann bzw. der Musik lausche ich auch bei einigen Filmen noch ganz gerne, daher kann ich dich gut verstehen, dass man das noch in Ruhe genießen mag.


    Wegen des Upmixers und dem Soundformat: das ist dieses "profile" Tag in meinem JSON File. Du kannst genau das dafür verwenden und einfach nur für die Filme eintragen, die du wirklich öfter schaust oder wo du den Bedarf siehst. Beim Dateinamen musst du aber auch eine Referenzliste haben, genau die habe ich mit dem JSON gebaut. Der Restful Sensor greift einfach nur die Infos aus dem File ab, gemäß des Films der gerade läuft. Da die TMDB ID eindeutig ist, nutze ich diese als Referenz (bei mir sind alle Filme mit TinyMediaManager organisiert).


    Das JSON File einfach ausgedrückt eine Liste, die TMDB ID und spezifische Metadaten, die ich nicht in TMM hinterlegen kann (wäre cool, wenn das dort geht), miteinander verknüpft. Damit kann man auch eine Maskierung steuern oder sonst was mit steuern. Alternativ könnte man ein JSON oder eine NFO Datei in dem Ordner mit dem Film hinterlegen, aber das Auslesen dieser Datei fand ich als zu kompliziert.

  • Wie wäre es denn mit einem Button, der beim Klick den aktuellen Film und zugehörigen Zeitstempel automatisch in das JSON File schreibt ? Dann wäre wenigstens das pflegen des files schön einfach :big_smile:

    Sehr schöne Idee! Das würde den händischen Eintrag ersparen. Und man könnte direkt alle anderen Settings (Bass/Höhen/Sub, DSP, Leinwandformat etc.) mit ablegen. Leider komme ich da an meine programmiertechnischen Grenzen... :big_smile: aber wäre machbar!


    Für diesen Anwendungsfall suche ich noch einen automatischen Weg. Also erkennen, wann der Abspann anfängt und das dann schon mal ein paar Lichter hochdimmen!
    Hat ja gefühlt jeder Film einen anders "langen" Abspann

    Ich hab im Anhang schon mal meine bisherige Version gepackt. Einfach in movie_settings.json umbennen und in das www Verzeichnis von HA hochladen. Mit der von mir beschriebenen Lösung klappt das dann direkt.

Jetzt mitmachen!

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