[Dashboard Audio/video Surround] - Denon / Marantz

Bonjour à tous,

je dispose d’un ampli audio/video Denon X3700H assez évolué avec 7 enceintes connectées en Surround/Atmos et une interface HA qui me permet de piloter via NodeRed chacune des fonctions de l’ampli.

Le pilotage par la télécommande d’origine est complexe, et je me suis dit qu’il serait sympa d’avoir un dashboard HA graphique permettant de piloter ça simplement, ne serait-ce que pour régler le volume de chaque enceinte, ou faire une simple balance gauche/droite ou avant/arrière, ce qui est, étonnamment, tout sauf évident en standard.

Bref, je cherche des idées de cartes Lovelace, par exemple, comment créer un potentiomètre avant/arrière en mode vertical, un contrôle de type joystick, idéalement

Illustration, cet écran n’est pas réalisé avec HA :

Aujourd’hui, je suis en prototypage de faisabilité et je cherche donc en premier à savoir si des contrôles de type potentiomètres/joystick seraient possibles.

Toute idée sera appréciée.


Edit Septembre 2023: Le projet est quasiment fini

Démo Animée:

AudioVideo1

L’interface me permet de piloter et contrôler les principales fonctions audio de l’ampli:

  • Réglage du volume, mute, mode pub où je baisse le son pendant 5 minutes
  • Réglage global des enceintes (en 7.1, j’ai 7 enceintes + 1 caisson subwoofer) en « spatialisation », c’est le carré en haut à gauche avec le point jaune,
  • Réglage individuel de chaque enceinte
  • Application simple des efftets surround (Dolby, Neural, Stéréo, etc)
  • Utilisation fine de l’Equalizer Audissey (Dynamic Eq., etc.)
  • Visalisation des signaux en entrée et en sortie (PCM, Dolby, DTS, Atmos, 48K, 96K, nombre de canaux)
  • Boutons pour mettre directement le réglage son de l’ampli en mode TV ou en mode Ciné

En synthèse:

Ce fut assez long à mettre en oeuvre:

  • 1/3 du temps pour comprendre les fonctions de l’ampli
  • 1/3 du temps pour découvrir/comprendre l’API Denon/Marantz
  • 1/3 du temps pour dessiner l’interface en Picture_Element

Toute la partie programmation est en NodeRed.

Pour récupérer les informations de l’ampli. C’est en récupérant ces commandes que l’on peut connaître toutes les informations sur ce qui est en cours sur l’ampli.

Attention, tout est asynchone, et l’ampli est plutôt bavard, d’où la présence d’un node de filtrage « switch »

Exemple pour filtrer les messages SSAST de l’ampli:

Pour envoyer une commande à l’ampli:

Dans la fenêtre Debug, une session typique avec les commandes envoyées par l’ampli qui défilent et un « bac à sable » avec toutes les commandes que je teste.

Malheureusement, pour avoir les commandes de l’API, il faut aller un peu à la pêche avec des recherches Google type (Ampli Denon RS232), par exemple ici https://tutoriels.domotique-store.fr/content/53/94/fr/api-des-amplificateurs-home_cinema-denon-rs232-et-tcp.html

Je peux envoyer en MP également mon fichier xls pour les Denon X3700H, et c’est globalement compatible avec toute la game Denon/Marantz.

L’autre idée pour avoir les commandes non documentées est d’installer et d’utiliser l’appli AVR2016-Denon sur smartphone et de regarder les commandes qui passent dans la fenêtre de debug HA, ça m’a permis de trouver pas mal de choses qui ne sont pas documentées.

Pour l’IHM (Interface Homme Machine), c’est du Picture-element, c’est une vraie usine à gaz, mais ça fonctionne.

Et pour rendre à César ce qui appartient à César, c’est @fax qui m’a donné l’idée de départ ici: Passionné de domotique!

très sympa ton idée et bravo pour le design mais pour ce qui est potar ou bargraph on est très mal logé car cela est inutilisable en HA et personne dans les devs HA ni dans la communauté ne voient l’intérêt donc pour le moment à part faire joli c’est pas fonctionnel malheureusement :frowning: même soucis avec les release de boutons que HA ne connait pas ce qui est très regrettable…

1 « J'aime »

Bonjour,
un peu dans le style d’un potentiomètre.

Merci pour vos retours.

Du coup, peut-être en picture-element…

Certains sauraient-ils s’il est possible de faire varier la place d’une image en fonction de la valeur d’un sensor ? (par exemple via les fonctions translate)

J’ai quelques idées pour continuer, tout d’abord, j’essaye de créer un input_select en yaml parce que j’aurais beaucoup de duplications à faire et que ce sera plus rapide.

J’ai créé ça dans configuration.yaml mais ça ne marche qu’à moitié:

template:
  - select:
      - name: "HP Position"
        unique_id: hp_position
        state: "{{ states('input_select.hp_position') }}"
        options: "{{ ['F100P_B100M_L100P_R100M','F100P_B100M_L075P_R075M','F100P_B100M_L050P_R050M'] }}"
        select_option:
          - service: input_select.select_option
            target:
              entity_id: select.hp_position
            data:
              option: "{{ options }}"

L’entité est créée mais les valeurs ne restent pas affectées, vous avez une idée de ce qui cloche ?

Un petit « Work in Progress »

Ca avance doucement, tout est fonctionnel et je découvre les fonctions de mon ampli !

Ca avance doucement, en fait, je suis en train de créér une interface complète de pilotage de l’ampli avec Picture-element et NodeRed

L’API est très complète, pas forcément simple de même que les possibilités de l’ampli que je découvre tous les jours.

Tout est fonctionnel, mais il y a encore du boulot, je suis obligé de modifier le dashboard à chaque fois que je découvre une nouvelle option.

Très joli
j’ai juste une question comment faite vous pour avoir un dashboard bien rangé comme ça avec les éléments où vous le désirez !!
Mois cela s’emplile en grille verticale, horizontale etc…

C’est une carte picture-element: Picture Elements Card - Home Assistant

Il faut tout faire à la main au pixel prêt, c’est un boulot de fou… :slight_smile:

type: picture-elements
image: /local/images/AudioControl_Background5.png
style: |
  ha-card { 
    height: 1000px !important; 

  }
elements:
  - type: image
    image: local/images/null.png
    tap_action:
      action: none
    double_tap_action:
      action: none
    hold_action:
      action: none
    style:
      top: 30%
      left: 18.1%
      transform: translate(-50%, -50%) scale(0.82,0.82)
      width: 33%
      height: 58,6%
      opacity: 1
      background: rgba(38,38,38,1)
      border: 10px solid grey
      border-radius: 10%
      border-style: ridge
      border-bottom-color: '#A3A3A3'
      border-left-color: '#A3A3A3'
      border-right-color: '#A3A3A3'
      border-top-color: '#A3A3A3'
  - type: image
    image: local/images/null.png
    tap_action:
      action: none
    double_tap_action:
      action: none
    hold_action:
      action: none
    style:
      top: 76%
      left: 18.1%
      transform: translate(-50%, -50%) scale(0.82,0.82)
      width: 37%
      height: 40%
      opacity: 1
      background: rgba(38,38,38,0)
      border: 1px solid grey
      border-radius: 4%
      border-style: solid
      border-bottom-color: '#A3A3A3'
      border-left-color: '#A3A3A3'
      border-right-color: '#A3A3A3'
      border-top-color: '#A3A3A3'
  - type: image
    entity: input_boolean.hp_denon_on_off
    tape_action: more-info
    state_image:
      'on': local/images/On 02.png
      'off': local/images/Off 02.png
      unavailable: local/images/null.png
    state_filter:
      'on': brightness(100%) saturate(1)
      'off': brightness(100%) saturate(1)
    style:
      top: 10%
      left: 37.5%
      width: 46%
      transform: translate(-50%, -50%) scale(0.12,0.12)
      border: 0px solid white
      border-radius: 20%
  - type: image
    image: local/images/PlaqueMetal.png
    style:
      top: 10%
      left: 90%
      width: 30%
      transform: translate(-50%, -50%) scale(0.28,0.28)
      border: 0px solid white
      border-radius: 1%
  - type: image
    image: local/images/screw 01.png
    style:
      top: 4%
      left: 03%
      width: 30%
      transform: translate(-50%, -50%) scale(0.08,0.08)
      border: 0px solid white
      border-radius: 20%
  - type: image
    image: local/images/screw 01.png
    style:
      top: 4%
      left: 97%
      width: 30%
      transform: translate(-50%, -50%) scale(0.08,0.08)
      border: 0px solid white
      border-radius: 20%
etc.

Ajout de la démo animée et mise-à-jour de l’avancement du projet dans le premier post.

AudioVideo1

Cela m’a pris du temps, mais comprendre les subtilités de l’ampli, de l’API n’a pas été une mince affaire.

Aujourd’hui, j’ai un son au top et une maîtrise de ce que l’ampli fait en temps réel inégalés !

Dommage que je ne sois pas un développeur, ça n’est absolument pas portable, mais si quelque’un veut des informations sur l’API Denon/Marantz et la façon de la piloter en NodeRED ou sur les astuces de la carte picture_element que j’ai poussée à ses limites (avec du code vraiment pas élégant il faut le dire) pour réaliser une fonction, à votre disposition !

Et merci HA :sunglasses:

En fait, c’est un vrai studio, c’est impeccable pour tester ses réglages !

2 « J'aime »

@FillR2
Bonjour,
Je viens d’acquérir un Marantz CINEMA 60 et je voudrais bénéficier de ton travail pour le piloter par télécoms.
Est-ce que tu pourrais m’indiquer les éléments du dialogue entre le PC et l’ampli ? Je crois avoir compris qu’un PC envoie des commandes sur 2 + 2 caractères et qu’il reçoit des réponses ou des events. Mais y a t’il une première étape de connexion (initialisation, envoi Hello…) ?
Est-ce que tu as un exemple simple comme envoyer un « Mute » ?
Dans ton « studio », je suis bluffé par le rectangle qui affiche ce que je crois être les caractéristiques de la vidéo en cours ! Comment tu récupéres ces données ?
Merci

Attentio, tout ceci est géré par Node Red sous Home Assistant, parlons-nous bien de ce contexte ?

Pour les données de la vidéo en cours, ce sont les intégrations de type média-player qui les fournissent, pas l’ampli.

Salut, je suis très intéressé par ton super travail.
Comment je pourrai le mettre en place?

Il faut déjà commencer par mettre en place Node Red et ces 2 nodes.

Après, beaucoup de développement sur lequel je pourrai donner quelques conseils.

Dans tous les cas, ce n’est pas une intégration prête à l’emploi malheureusement.

@FillR2
Merci de ton retour rapide
Je ne pense pas utiliser Note Red. J’ai déjà un système Home Cinéma (maison) qui pilote mes appareils depuis un Raspberry (en java).
Comme dit au départ, je suis à la recherche des éléments du dialogue entre HA et l’ampli. Dans les photos que tu envoies à Barbotx, je comprends que la mise sous tension se fait en envoyant « PWON » en TCP sur l’adresse IP de l’ampli (port 23) ? C’est bien ça ? Est-ce qu’il y a un pré dialogue avant d’envoyer cette demande ?
Vu ton avancée, tu dois avoir la liste de toutes les commandes supportées par l’ampli (j’ai déjà trouvé une première doc. sur le Cloud mais pour un « vieux » ampli).
Suite à ta remarque, je serai aussi intéressé (dans un second temps) par l’intégration de type media-player qui représente une vraie valeur ajoutée.
En tous les cas, merci pour le partage

J’ai utilisé principalement ce fichier, même s’il ne contient pas toutes les commandes:

https://github.com/thkl/Homematic-Virtual-Interface/files/5682369/FY21AVR_DENON_PROTOCOL_V02_04062020.xlsx

L’ampli est également très bavard, HA/NodeRed permet de « sniffer » toutes les infos qu’il renvoit, j’ai notamment utilisé ce mécanisme pour découvrir certaines commandes qui sont envoyées par l’appli DENON Android et qui n’étaient pas dans le tableau.

Je teste avec ton tableau EXCEL dès que j’ai 5 minutes. Ça devrait aller.
Quand tu dis que l’ampli est très bavard, est-ce en réponse à une commande ? J’ai vu qu’il y avait aussi des « events » déclenchés par l’ampli : est-ce que c’est de cette manière qu’il est bavard ?
En tous cas, merci pour ton aide

Oui, à chaque fois qu’un paramètre change, par exemple si tu augmentes le volume via le bouton physique ou la télécommande, l’ampli envoi sur le réseau la nouvelle valeur du paramètre.

De plus, il envoi également régulièrement le statut de chacune des enceintes, donc sur du 11.1, ça fait du monde :slight_smile:

A noter également que les valeurs des paramètres ne sont pas celles qui s’affichent sur l’écran OSD, c’eut été trop simple, il faut souvent appliquer une translation des valeurs, je pourrai te donner les formules que j’applique pour un paramètre si tu en as besoin. Ca reste assez simple quand même.

@FillR2
Tes explications m’ont beaucoup aidé ! Je commence à piloter l’ampli. Il est réellement très bavard SAUF qu’il ne répond pas quand une commande correspond à la situation ! Par exemple, si on envoie PowerOn alors qu’il est déjà sous tension, il ne répond pas.
Dans le « flot » de réponses envoyées, je pense retenir celles qui commencent par « SV » = vidéo en cours et par « PS » = codage son en cours. Est-ce que tu retiens d’autres infos vraiment utiles ? Je pense que c’est ce dont tu veux parler quand tu « translates » des valeurs !
J’ai essayé de lire une clé USB sans succès (écran vide). Est-ce que tu as essayé ?
Si tu préfères, on peut continuer à discuter en privé → mon mail : renchr95@gmail.com
Bonne journée