(modifié le 7 février 2016 à 20:58)

Je dispose d'un amplificateur Yamaha RXV475 que j'utilise pour diffuser le son de tous mes appareils multimédia.

piloter-yamaha-ampli

Je vous en parlais il y a quelques semaines en vous présentant le RFXCom. J'ai créé un script qui me permet d'allumer ou d'éteindre mon ampli audio/vidéo Yamaha avec Domoticz, le tout via mon réseau ethernet.

Il m'arrive de laisser l'ampli allumé en fin de soirée, ce qui consomme du courant. Malgré le mode éco qui coupe l'ampli après 4h sans activité, c'est toujours 4h d'alimentation pour rien. (je coupe déjà le caisson de basse qui consomme 40W en continue).

Mon ampli dispose d'une prise ethernet reliée sur le même réseau que mon Raspberry Pi B+ qui fait tourner Domoticz. C'est grâce à la présence du mode "network" que j'arrive à piloter l'ampli. C'est ce même mode qui est utilisé par l'application android Yamaha "AV Controller". La plupart des ampli Yamaha depuis 2012 intègrent cette fonctionnalité.

Activer le mode réseau

Sur l'ampli Yamaha aller dans menu > network setup > NET Standby > Standby : passer sur ON.

Une fois le mode activé j'ai une LED rouge de veille qui s'allume quand mon ampli est éteint (ce n'est peut-être pas le cas sur tous les modèles). Vérifier que l'ampli réponde au ping y compris quand il est éteint, vous pouvez lire son adresse IP dans le menu (network setup > information)  ou sur l'interface de votre box.

temoin-yamaha-rxv475

Avant d'aller plus loin il faut que l'adresse IP de l'ampli soit fixe. Soit vous configurez un dhcp statique (box ou routeur) pour l'adresse mac de l'ampli, soit vous définissez une IP fixe via le menu réglages de l'ampli.

note : le menu de l'ampli est plus facile à configurer si vous avez un écran connecté à la sortie HDMI, sinon il faudra le faire en vous aidant de l'afficheur de façade du Yamaha.

Création du script

J'ai opté pour un script bash.

Simple, efficace et ne nécessitant aucun ajout de paquet supplémentaire. Je ne voulais pas installer PHP sur ma framboise pour ne pas le surcharger. Je rappelle que Domoticz est développé en C++ compilé pour ceux qui se poseraient la question, il n'y a pas de PHP.

En SSH se connecter avec l'utilisateur pi, puis créer ce répertoire :

mkdir /home/pi/scripts_bm
cd /home/pi/scripts_bm
touch yamaha.sh
chmod +x yamaha.sh

Voici le contenu du script (dépôt github) à placer dans yamaha.sh (ou faites un wget).

Editer le script (nano ou vim) pour modifier l'adresse IP, remplacer "192.168.0.16" par l'IP de votre ampli Yamaha.

Tester le script :

./yamaha.sh ON
./yamaha.sh OFF

L'ampli devrait réagir.

Voici la trace du script avec ON et OFF :

./yamaha.sh ON
ON
* About to connect() to 192.168.0.16 port 80 (#0)
*   Trying 192.168.0.16...
* connected
* Connected to 192.168.0.16 (192.168.0.16) port 80 (#0)
> POST /YamahaRemoteControl/ctrl HTTP/1.1
> User-Agent: curl/7.26.0
> Host: 192.168.0.16
> Accept: */*
> Content-Type: text/xml
> Content-Length: 147
>
* upload completely sent off: 147 out of 147 bytes
* additional stuff not fine transfer.c:1037: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 200 OK
< Server: AV_Receiver/3.1 (RX-V475)
< Content-Type: text/xml; charset="utf-8"
< Content-Length: 109
<
* Connection #0 to host 192.168.0.16 left intact
<YAMAHA_AV rsp="PUT" RC="0"><Main_Zone><Power_Control><Power></Power></Power_Control></Main_Zone></YAMAHA_AV>* Closing connection #0

---

./yamaha.sh OFF
OFF
* About to connect() to 192.168.0.16 port 80 (#0)
*   Trying 192.168.0.16...
* connected
* Connected to 192.168.0.16 (192.168.0.16) port 80 (#0)
> POST /YamahaRemoteControl/ctrl HTTP/1.1
> User-Agent: curl/7.26.0
> Host: 192.168.0.16
> Accept: */*
> Content-Type: text/xml
> Content-Length: 152
>
* upload completely sent off: 152 out of 152 bytes
* additional stuff not fine transfer.c:1037: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 200 OK
< Server: AV_Receiver/3.1 (RX-V475)
< Content-Type: text/xml; charset="utf-8"
< Content-Length: 109
<
* Connection #0 to host 192.168.0.16 left intact
<YAMAHA_AV rsp="PUT" RC="0"><Main_Zone><Power_Control><Power></Power></Power_Control></Main_Zone></YAMAHA_AV>* Closing connection #0

L'ampli réagit dans la seconde.

Ajout dans domoticz

Dans Réglages > Matériéls : ajouter un nouveau bouton virtuel "dummy".

Dans Réglages > Dispositifs : lui donner un nom "amplificateur yamaha".

Dans "Interrupteurs" on retrouve maintenant notre bouton virtuel > éditer :

yamaha-virtual-switch

Choisir le chemin du script :

Action ON : script:///home/pi/scripts_bm/yamaha.sh ON
Action OFF : script:///home/pi/scripts_bm/yamaha.sh OFF

Et voilà ! Un clic sur l'interrupteur permet d'allumer ou d'éteindre le périphérique.

Pour finir

Il n'est pas possible d'avoir le retour d'état de l'ampli, s'il est déjà dans l'état demandé il ne se passera rien. Vous pouvez donc créer un scénario ou alors deux interrupteurs virtuels si vous voulez être sûr d'éteindre ou d'allumer l'ampli.

J'utilise cURL pour atteindre l'ampli via son API, le mode verbeux est volontaire pour voir une éventuelle erreur retournée. C'est bien sûr utilisable avec bien d'autres choses que Domoticz (android, qrcode, nfc, etc).

J'ajoute qu'il est possible de faire bien d'autres choses que de gérer l'alimentation : changer d'input, de mode, gérer le volume, etc. Il existe également un projet en nodejs, eventghost, python, php... Pour récupérer toutes les commandes de l'API il faut se rendre sur http://ip-ampli/YamahaRemoteControl/desc.xml (Yamaha RX Function Tree sur le net) et quelques exemples par là.

Je pense que ce serait pas mal d'ajouter un capteur de proximité (que j'ai déjà acheté) pour une fois dans le canapé allumer l'ampli et son caisson de basse automatiquement (avec blockly). Si mon PC ne répond pas au ping et que personne n'est dans le canapé alors l'ampli peut être éteint.

Bref, des possibilités infinies et ça fait plaisir.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter