[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 permit 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 »