Ampli Home Cinema Yamaha

Bonjour,

Je tente de développer un module pour mon ampli Yamaha (RX-V671) à partir du package yamaha-nodejs.

Après pas mal de tâtonnement, j’ai réussi à installer le module et à créer un device de type binary :slight_smile:
Mais j’ai cette erreur lors du setup :

Une idée de l’origine du problème ?

@pierre-gilles a quoi correspondent exactement les catégories de devices, car je ne sais pas à laquelle attacher l’ampli ?
Serait-il possible d’étendre la liste en ajoutant par exemple “Multimédia” ou “Home cinéma” ?

Ton module ne retourne pas de promise !

A la fin de ta fonction setup tu dois retourner une promise

par exemple si ton setup s’est bien passé ( et uniquement dans ce cas là ) =>

return Promise.resolve();

Mais j’aimerais bien voir ton code pour voir à quoi ressemble ta fonction setup

C’est pour la reconnaissance de texte cette partie, pour que le brain soit capable de contrôler des périphériques spécifiques.

Il faudrait en effet pouvoir gérer les périphériques de musiques :slight_smile:

Merci pour ta réponse, je corrige ça ce soir et te fait un retour.

Je pense que je vais avoir d’autres questions pour pouvoir gérer le volume, le mute, le type d’input de l’ampli (TV, radio, MP3, Aux, …) et surtout les actions liées à l’input (preset et frequence radio, piste MP3, …).
Peut-être vais-je devoir créer une box pour piloter tout ça… :scream:

Petit conseil, essaie de d’inspirer du module Gladys-hue. Il gère les différents cas (luminosité, couleur etc…) que tu peux appliquer aux différents types de deviceType (volume, TV, fréquence radio etc…).
Pour ce qui est de la box, en effet ça peut être une solution pour commander gladys via le dashboard

Merci @pierre-gilles, je n’ai plus l’erreur :wink:

Maintenant, j’ai un nouveau device :

L’API me permet de récupérer pas mal de valeur :

yamaha.getBasicInfo(zone).done(function(basicInfo){
basicInfo.getVolume();
basicInfo.isMuted();
basicInfo.isOn();
basicInfo.isOff();
basicInfo.getCurrentInput();
basicInfo.isPartyModeEnabled();
basicInfo.isPureDirectEnabled();
basicInfo.getBass();
basicInfo.getTreble();
basicInfo.getSubwooferTrim();
basicInfo.getDialogueLift();
basicInfo.getDialogueLevel();
basicInfo.isYPAOVolumeEnabled();
basicInfo.isExtraBassEnabled();
basicInfo.isAdaptiveDRCEnabled();
})

Comment faire pour que Gladys, récupère ces valeurs et initialise les contrôles ?

[Edit] : comment faire des incréments de 5 pour le volume ?
Je m’explique :
Dans Gladys, je stocke le volume est en dB (x10), soit -320 pour -32dB et l’ampli fonctionne par palier de 0.5dB et donc de 5 en 5 dans Gladys.
Le problème est que le curseur dans les contrôles ne permet pas cela…

1 Like

Ah… euh pour l’instant ce que je verrais, c’est que tu arrondis au palier le plus proche dans ton module :slight_smile:

Sinon effectivement avoir un “pas” ça pourrait être intéressant pour certain module. Si on trouve d’autres applications ça pourrait être ajouté pourquoi pas

C’est ce que j’ai fait :wink:

Sinon, pour récupérer l’état ou la valeur d’un device (power, volume, …), comment procéder ? Il faut créer une fonction pour ça ?

Le projet est là, et il risque de pas mal évoluer encore :slight_smile: :

@pierre-gilles, j’ai un peu avancé sur mon module, je peux via les devices, allumer l’ampli, muter le son et régler le volume.

Mais, je me pose quelques questions sur le retour d’info, de l’ampli vers Gladys.

  • Comment récupérer l’état (ampli allumé/eteint, niveau du volume, …)
  • A quoi sert le paramètre sensor dans la description d’un device (ici, à false) ?

J’ai tout mis sur mon github, si tu veux y jeter un oeil.

J’envisage pour après (si je ne galère pas de trop :yum:) de créer une box avec les mêmes fonctionnalités que l’api native :

Hello ! mais c’est pour la musique du coup ? pourquoi ne pas implémenter l’API de music Gladys ? :slight_smile:

Oui, pour les entrées tuner et usb, mais l’ampli est aussi branché à la box tv et au lecteur DVD (ou même une console) et peut les allumer grâce au hdmi cec.
Je voudrais pouvoir piloter d’autres fonctions qu’un simple player, comme choisir l’ambiance (sifi, aventure,…) ou de mode de sortie (5.1, 7hp)

1 Like

Biensur, mais déjà pour toute la partie music tu peux te plugger sur l’API Gladys :wink:

Hello,

Petit up sur ce sujet.
Ce module est-il fonctionnel ?
Quelqu’un l’a déjà utilisé ?

Merci à vous

Salut @Tioborto, en fait, j’ai mis de coté le développement du module pour bosser sur d’autres plus simple.
Mais je compte bien m’y remettre prochainement.

Le problème c’est que je ne sais pas comment gérer les différentes fonction de l’ampli.

Hello @Pti_Nico ,

Merci pour ta réponse et ta contribution :slight_smile:
Par contre comment utiliser ce module ? J’ai ajouté le device “Yamaha …” et lorsque je demande de baisser le volume ça ne fonctionne pas.
Pourrais-tu donner un exemple d’utilisation dans un script ou via le chat ?

Pour info

0|gladys | Sending 500 (“Server Error”) response:
0|gladys | TypeError: Cannot read property ‘exec’ of undefined
0|gladys | at /home/pi/gladys/api/core/devicetype/deviceType.exec.js:26:57
0|gladys | at tryCatcher (/home/pi/gladys/node_modules/bluebird/js/release/util.js:16:23)

Salut @Tioborto, heureux de voir que ce module t’intéresse, mais il n’est pour le moment qu’un module de test.
Si tu es un peu curieux, tu as pu voir dans github que je n’ai pas touché à ce module depuis 9 mois.

Si ça ne marche pas, c’est parce que je n’utilise pas encore les fonctionnalités du module MP3 Player (comme les modules Sonos et Bose le font). Et je pense d’ailleurs revoir complétement les fonctionnalités et l’implémentation (l’ampli n’est pas juste une enceinte connectée).

Si tu as des idées, sur comment le faire, elles sont les bienvenues :wink:

Hello @Pti_Nico,

Oui j’ai jeté un oeil sur le github justement.

Je pourrais éventuellement y jeter un oeil mais pour le moment je ne connais pas encore très bien le javascript (plus d’origine système que développement).

Je te tiens au courant :slight_smile:

1 Like

Hello @Pti_Nico,

Pourquoi veux-tu revoir complétement l’implémentation et les fonctionnalités (hors intégration du module MP3 Player) ?

Je te propose dans un premier temps de ne gérer qu’une zone et faire quelque chose de simple fonctionnant avec les fonctionnalités de base :

  • Allumer/Eteindre
  • Baisser/Augmenter le volume
  • Changer d’ambiance

Je peux essayer (via MR) de te proposer les modifications avec MP3 Player, cela te convient ?

Actuellement les fonctions suivantes existent (pour la zone principale) :
Allumer/Eteindre (restauration du dernier mode utilisé)
Baisser/Augmenter le volume (via l’écran device, voir pour gérer par script)
Muter/Demuter

Sachant que l’ampli n’est pas juste une enceinte connectée, comme je l’ai déjà précisé, comment lui indiqué que tu veux l’allumer en mode télé (HDMI_1, AV_1, …), ou en mode MP3 player (PC) (ou switcher de l’un à l’autre) ?

Si tu le souhaite, tu peux modifier le code et me proposer une PR.
Pour info, j’utilise ce module pour gérer les fonctions de l’ampli :

Ce qu’il faut définir en premier lieu, ce sont les uses-cases, après, on verra comment les coder :wink:

Il n’y aurait pas un canal où l’on pourrait échanger plus facilement ?

D’après ce que je vois dans le module nodejs, il y a plusieurs méthodes qui permettent de récupérer l’input courant et de switcher vers d’autres input et même modifier l’input principal

//Switch Input
yamaha.setInputTo(“USB”, 2)
yamaha.setMainInputTo(“NET RADIO”)

// Current input
basicInfo.getCurrentInput();

On peut alors récupérer cette liste d’input, qui pourront être désactivé ou non, modifier l’input par défaut et switcher vers d’autres au choix

D’après ce que je vois dans l’API “YamahaExtendedControl”, on peut avoir la liste des fonctions disponibles :
http://ip_ampli/YamahaExtendedControl/v1/system/getFeatures

Exemple pour mon ampli :
image

Donc en use-cases :
Comme tu le faisais, on peut détecter :

  • l’ampli et ses fonctions possibles (hdmi_1, av1, bluetooth, etc) qui seront activables/désactivables,
  • allumer/éteindre l’ampli
  • setter l’input par défaut
  • et par la suite gérer le mute/volume

J’utilise Telegram avec Gladys sur mon téléphone…

Ce sont des fonctionnalités, pas des uses cases.

Pour moi les uses cases ça serait plutôt :
“Gladys, allume l’ampli” => allumage de l’ampli (input par défaut ?)
“Gladys, monte le son de l’ampli” => +5bB
“Gladys, baisse le son de l’ampli” => -5bB
“Gladys, allume la radio” => allumage de l’ampli, puis set input radio (à voir pour gérer la fréquence)
“Gladys, met la musique” => allumage de l’ampli, puis set input PC, puis MP3 Player

[Edit] canal créé : https://t.me/joinchat/AAAAAE322Vpomh7V6LvWhg

[Edit 2] j’ai poussé ma version de dev sur la branche develop de mon repo (https://github.com/NicolasD-62/gladys-yamaha/tree/develop).