Beiträge von Namor Noditz

    Zurück zur Startseite und zum Inhaltsverzeichnis

    Voriges Kapitel: #03.05 JVC Beamer

    Downloads: #11 Downloads [HKV only]

    Version: 2024-04-11

    Integration eines DCX2496 DSP in Home Assistant via IP (RS232)





    Wie hier berichtet habe ich mir einen gebrauchten DCX2496 gekauft, um an mein Haus angepasste, dynamische Filter zur setzen, die gezielt starke Bass-Spitzen reduzieren, die ansonsten im Haus stören oder meine Frau vom Sofa werfen.


    RE: Reduktion des Schallpegels außerhalb des Kinos


    Das funktioniert wirklich perfekt!



    Um mit den Filtereinstellungen des DCX besser experimentieren und diese optimieren zu können, benötigt man eine Fernsteuerung.
    Die original Behringer Windows-Anwendung ist dafür schon recht gut geeignet aber nicht alltagstauglich.



    Daher habe ich zunächst die Serielle Schnittstelle des DCX2496 mit einem RS232-IP-Gateway modernisiert. Hier hatte ich das kurz berichtet.


    RE: Heimkino-Steuerung mit Home Assistant


    Dann folgte die vollständige Integration aller Kanäle und Parameter des DCX2496 mit der Programmierung einer Integration für Home Assistant.


    Um diese Integration nutzen zu können, müsste ihr euren DCX jedenfalls auch um ein IP-Gateway erweitern.

    Dieses RS232-IP-Gateway funktioniert bei mir ausgezeichnet!

    https://www.amazon.de/dp/B0CG173Y78


    Das Gateway ist bei mir wie folgt konfiguriert:



    Sobald die IP-Verbindung steht und der DCX via seriellem Kabel mit dem Gateway verbunden ist, kann man mit dem Gateway-Test-Tool (sscom5.13.1.exe) serielle Befehle an das angeschlossene Gerät senden und Daten empfangen. Hiermit kann man dann gut das Behringer-Protokoll http://jipihorn.free.fr/Projet…le/Doc/DCX%20protocol.pdf testen und mit einem Portsniffer herausfinden, dass die Behringer-Anwendung noch zusätzliche Schnittstellenbefehle nutzt die nicht in der Spezifikation stehen aber sehr hilfreich sind. ZB. Das Auslesen aller Parameter auf einmal und die Statusabfrage.



    Der DCX2496 hat, so wie man im kennt, 3 Eingänge, eine Eingangssumme und 6 Ausgänge. Gemacht für 5.1 und als Lautsprecherweiche.

    Die Eingänge und der Summenkanal haben jeweils 65 Parameter die Ausgänge jeweils 74. Zusätzlich gibt es noch die allgemeinen Setup-Parameter.

    Also insgesamt mehr als 700 Parameter! Die vollständige Integration war also herausfordernd.


    In der Entity sehen die Parameter wie folgt aus.



    Zum Ändern der Parameter stehen mehrere Services zur Verfügung. Das Grundlegende Service ist <dcx2496_dsp_nn.command> Die Byte-Folge entspricht der DCX-Spezifikation (siehe oben)



    Über das folgende Dashboard kann man alle DCX-Parameter anzeigen und ändern.

    (Jeder Kanal hat 9 Filter, und in diesem Dashboard stelle ich aber jeweils nur die Parameter der ersten beiden Filtern dar (EQ#1 und EQ#2) – Das könnt ihr bei Bedarf gerne erweitern)


    Zur Änderung eines Parameters klickt man auf diesen, damit wird dieser blau dargestellt. Und in der blauen Änderungskarte (rechts) wird dieser Parameter zur Änderung aufgelegt. Jede Paramteränderung wird sofort an den DCX übermittelt und aktiv.



    Umgekehrt, wenn man direkt am Bedienfeld des DCX einen Parameter ändert, wird dies sofort im HA-Dashboard markiert und angezeigt, da der DCX jede Änderung netterweise sofort wie Push auf der Schnittstelle ausgibt.


    Da ich in meinem Setup nur die Eingänge A und B sowie die Ausgänge 1,2 und 3 mit ausgewählten Parameter nutze, habe ich noch folgendes ein vereinfachtes Dashboard erstellt.



    Ok, noch immer zu viele Parameter und unübersichtlich. :-/

    Daher musste ich noch eine Preset-Funktion implementieren, denn die Presets der DCX in seinem Internen Speicher ablegt, kann man leider nicht über die Serielle Schnittstelle aktivieren.


    Die Presets dieser Integration sind in der Datei </custom_components/dcx2496_dsp_nn/dcx2496_presets.py> konfiguriert und können dort auch verändert werden.
    So gibt es zB. das Preset "P_DynEQ_light“ für dezente Dynamische Filter und das Preset „P_DynEQ_heavy“ für den Nachtmodus.
    Oder Presets um das DBA zu testen (Normal, Synchron oder nur Vorne).
    Und Presets für den Shacker.


    Im Preset werden die DCX-Parameter mit den gewünschten Werten eingetragen. Hier ein beispielhafter Auszug:



    Die Liste aller DCX-Parameter mit deren ID, Name und Wertebereich ist in der Datei /custom_components/dcx2496_dsp_nn/dcx2496_dicts.py zu finden.


    Zu guter Letzt kann man die Presets noch zu Preset_Groups kombinieren:



    DIe Presets kann man mit dem Service <dcx2496_dsp_nn.preset> aufrufen


    Hiermit sind wir wieder beim Screenshot vom Beginn dieses Posts.

    Dem DCX-Haupt-Dashboard. Hier kann man nun sehen welche Presets und Preset_Groups aktuell aktiv sind und diese auch umschalten.

    Hier ist also gerade die Preset-Group (=Modus) „Tag“ aktiv. Bestehend aus den Presets DBA=Normal, DynEQ=Normal, EQ#1=Spasskurve+3dB, EQ#2=Kicker_Aus, Shaker=0dB



    Bin schon gespannt ob jemand diese Integration nutzen wird. Ist doch eine sehr spezielle Integration und ein sehr altes Gerät.

    Aber wäre schade, wenn ich das nur für mich programmiert hätte.


    Übrigens, Home-Assistant hat am RPI5 keinen besonderen Stress mit diesen riesigen Dashboards und den hunderten Parametern. Hat mich positiv überrascht.

    Mein aktuelles Projekt:


    Wenn ich helfen darf.


    So sollte der Template-Syntax hierfür lauten

    Code
    {{ states.media_player.epson_projector_link.attributes.lamp_hours }}


    Unter den Developer Tools kann du dieses Template testen:


    (Ich habe diese Entity nicht, daher kommt bei mir eine Fehlermeldung. Bei dir sollte rechts oben der Wert angezeigt werden)


    Und folgendes wäre dann in der configration.yaml einzufügen

    Code
    template:    
      - sensor:
          - name: "my_epson_lamp_hours"
            state: >
                {{ states.media_player.epson_projector_link.attributes.lamp_hours }}

    Die Entity <sensor.my_epson_lamp_hours> kannst du dann im Dashboard hinzufügen.


    Das wird für mehrere Attribute schnell unübersichtlich.

    Diese Methode sollte man imho nur in Ausnahmefällen verwenden und nicht für größeren Integrationen systematisch nutzen!

    Noch absurder wird es, wenn man hierfür ein Helper-Template nutzt.

    Du verwendest die Media-Player-Karte im Dashboard? Die kann imho keine extra Attribute anzeigen.


    Wenn die custom:button_card nicht verwenden möchtest, dann

    musst du (mein letzter Kenntnisstand) die Attribute mittels yaml-Template (im configuration.yaml) in ein Template-Sensor konvertierten. Dann kannst du diese Werte im Dashboard mit der Karte "Entity" oder "Entity-Liste" anzeigen. Imho unnötig kompliziert.

    Wie bekomme ich die auf das Dashboard?

    Meine Anleitung kennst du schon?


    die wesentlichen Grundlagen


    und ein Dashboard-Beispiel

    Hier jetzt meine JVC-Integration



    In den nächsten Tagen stelle ich Euch dann die Dateien zur Verfügung.

    Zurück zur Startseite und zum Inhaltsverzeichnis

    Voriges Kapitel: #03.03 Panasonic UHD-Player

    Nächstes Kapitel: #03.06 DCX2496 DSP

    Downloads: #11 Downloads [HKV only]


    Version: 2024-04-09

    Integration eines JVC-Beamers (N, NX, NP, NZ) in Home Assistant.


    Es gibt für JVC-Beamer sowohl eine offizielle HA-Integration, als auch eine HACS-Integration.

    Ich war mit der Funktion beider Integration nicht wirklich zufrieden, insbesondere kann mit diesen jeweils nur ein sehr kleiner Bruchteil der Schnittstellenfunktionalitäten genutzt werden.


    Auf Basis der offiziellen JVC-Schnittstellendokumentation habe ich die komplette IP-Schnittstellenfunktionalität mit allen 185 Kommandos abgebildet. (Nur das binäre Übertragen der Gamma-Kurven habe ich noch ausgelassen).

    Die Schnittstellendokumentation aus 2021 enthält jedoch nur die Parameter bis Firmware 1.0 der NZ-Reihe.

    Ich nutze aktuell v2.0 am NZ8. Die Parameter der v2.0 hätte ich soweit mit Trial'n'Error ergänzt (LaserDimming 3, FrameAdapt 3).

    Die Parameter aus v3.0 (Laser 0-100, etc.) sind noch nicht enthalten. Wenn sie jemand kennt oder herausfindet kann ich sie gerne ergänzen.


    Link zur JVC-Schnittstellendokumentation

    https://www.avsforum.com/attac…and_for_leo3-pdf.3211399/


    In HA sieht das Dashboard (mit custom:buttoncard) wie folgt aus:



    Die Sensor-Entity des JVC stellt die benötigten bzw. ausgewählte Beamer-Parameter wie folgt dargestellt als Attribute dar.

    Jeder Parameter kann jeweils im Rohdaten-Format, wie auch Human-Readable-Klartext-Format angezeigt werden.


    ZB. lautet hier

    • <IP:6> im Klartext <Input: HDMI-1>

    oder

    • <PMCM: 4> => <ClearMotionDrive: High>



    Um Beamer-Parameter zu ändern, stellt diese Integration in bekannter Weise (sofern ihr diese Anleitung bis hierher schon gelesen habt) ein Service zur Verfügung.

    Mit dem Service <jvc_beamer_nn.command_list> kann man eine beliebig lange Liste an Kommandos an den Beamer senden oder vordefinierte Kommando-Listen nutzen.


    Beginnen Kommandos mit einem „!“ so wird eine Parameteränderung den Beamer übermittelt,

    beginnen Kommandos mit „?“ wird der Parameter nur abgefragt und in den Attributen eingetragen.


    In folgendem Beispiel werden also drei Kommandos an den Beamer gesandt:

    • !PMPM0C: PictureMode wird auf User1 (=0C) gesetzt
    • !PMCM4: ClearMotionDrive wird auf Hight (=4) gesetzt
    • ?IFLT: Die akutelle Laufzeit des Beamer wird abgefragt

    Der Parameter <response: all> des Services bewirkt, dass sowohl die Rohdaten als auch die Human-Readable-Version der Parameterabfragen in die Attribute gespeichert werden.

    Hier kann aber alternativ auch „raw“ oder „formated“ eintragen werden, um nur eine der beiden Darstellungen einzutragen.



    Die Liste und Bedeutung aller JVC-Parameter kann man aus der JVC-Schnittstellenspezifikation (siehe oben) entnehmen

    oder auch direkt aus der Datei /custom_components/jvc_beamer_nn/jvc_dicts.py.

    Den Inhalt dieser wesentlichen Datei erkläre ich kurz im folgenden Text:


    Das Dictonary <nncommands>:

    Hier habe ich einige Kommando-Listen vorbereitet.

    Diese können im Service genutzt aber auch von Euch beliebig geändert oder erweitert werden.

    Die Kommando-Liste <nnStart> wird beim Neuverbinden mit dem Beamer abgefragt

    und die Liste <nnSheduler> wird von HA automatisch alle 30 Sekunden abgefragt.



    Der Human-Readable-Klartext sowie der Parameter-Typ aller nutzbaren Beamer-Parameter kann aus dem Dictonary <jvcCmds> entnommen werden.



    Und im Dictionary <dictParameters> sind alle verfügbaren Optionen je Parameter-Typ spezifiziert.