assistant-yamaha v1.0.4
assistant-yamaha
Ce plugin de assistant-plugins
permet de piloter un ampli AV Yamaha (Testé sur Rx-V675).
Contrôle Yamaha basé sur PSeitz yamaha node module.
Sommaire
- Installation
- Configuration
- Utilisation
- Combinaisons
- Variables
- Commandes
- Sources Audio
- Exemples
- Actions avancées
Installation
Si vous n'avez pas installé assistant-plugins
, alors il faut le faire, et sélectionner yamaha comme plugin.
Si vous avez déjà installé assistant-plugins
, et que vous souhaitez ajouter ce plugin, alors :
- Pour Windows, télécharger
install_yamaha.bat
dans le répertoireassistant-plugins
, puis l'exécuter en double-cliquant dessus. - Pour Linux/MacOS, ouvrir une console dans le répertoire
assistant-plugins
et taper :npm install assistant-yamaha@latest --save --loglevel error && npm run-script postinstall
Configuration
Éditer le fichier configuration.json
du répertoire assistant-plugins
.
Dans la section concernant le plugin yamaha
, on trouve plusieurs paramètres :
Paramètre auto_discover
:
- valeurs possibles :
- true qui permet de rechercher automatiquement l'ip de l'ampli sur votre réseau
- false qui permet d'utiliser l'ip de votre choix (à définir dans
receiver_ip
).
- valeur par défaut : true
Paramètre receiver_ip
Optionnel : si auto_discover
= true : l'ip de votre ampli sur le réseau local doit être indiqué. (Format ipv4 de type xxx.xxx.xxx.xxx)
Paramètre display_error
- valeurs possibles :
- true qui permet d'afficher dans la console les erreurs retournées par les envois de commandes à l'ampli
- false ... n'affiche rien
- valeur par défaut : false
Paramètre default_cmd_interval
- Il 'sagit du nombre de millisecondes entre 2 actions pour laisser le temps à l'ampli d'appliquer les commandes, vous pouvez augmenter cette valeur si l'ampli a des difficultés à réagir ou si le réseau est peu réactif.
valeur par défaut : 1000
Paramètre receiver_minVoldB
et receiver_maxVoldB
- Cela permet de limiter les valeurs pouvant être transmises par les commandes vocales et d'éviter que l'ampli refuse en erreurs
- valeur par défaut : -80.5 et 16.5
Utilisation
Le déclenchement des commandes se fait via IFTTT pour relier une commande vocale à une action
- Créer une nouvelle applet dans IFTTT : https://ifttt.com/create
- Cliquer sur this puis choisir Google Assistant (ou Amazon Alexa ou Cortana)
- Choisir la carte Say a simple phrase (ou autre, selon votre cas)
- Dans « What do you want to say? » mettre la phrase qui va déclencher l'action
- Remplir les autres champs de la carte
- Maintenant, cliquer sur that puis choisir Pushbullet
- Choisir la carte Push a Note
- Dans le champs « Title », mettre
Assistant
- Dans le champs « Message », mettre
yamaha_
suivi par la commande souhaitée- voir Commandes pour les actions disponibles
- il est possible d'enchainer plusieurs actions, voir Combinaisons
- les commandes peuvent nécessiter des variables, voir Variables
- Enregistrer puis cliquer sur Finish
- Dites : « OK Google » (ou le trigger de votre assistant) suivi de votre phrase spéciale du point 4)
- Votre assistant devrait s'exécuter
Combinaisons
Il est possible d'enchainer plusieurs actions avec une seule commande vocale. Pour cela, séparez les commandes dans le champ « Message » par des virgules. Le paramètre default_cmd_interval
est une pause s'intercalant entre chaque commande.
Exemple : yamaha_commande1,commande2,commande3
et ainsi de suite ...
Vous pouvez également inclure une pause supplémentaire en cas de besoin particulier en ajoutant *x
, x étant le nombre de seconde d'attente avant la commande suivante.
Exemple : yamaha_commande1,*2,commande2,*4,commande3
dans ce cas des pauses de 2 et 4 secondes seront respectivement appliquées entre les commandes 1 et 2 puis 2 et 3.
Variables
Il est possible de passer des valeurs au commande. Pour cela, séparez la commande et les variables par des # dans le champ « Message ». Cela reste compatible avec les commandes multiples et les pauses.
Exemple : yamaha_commande1#var1#var2,commande2,*2,commande3#var3
et ainsi de suite ...
Commandes
Les variables "communes":
- le paramètre
int zone
est optionnel et le plugin sélectionne automatiquement la zone 1MainZone
si aucune variable ne lui est transmise. Les valeurs possibles sont 1, 2, 3 ou 4 selon les versions d'ampli AV. les paramètres de volumes
int db
etint by
permettent de donner une indication de volume. Cette donnée doit être passée avec une sa valeur décimale et multipliée par 10. Ainsi pour régler un volume à -45.0 dB,int db
devra être égale à -450.
Power :
- powerOn
int zone
: Allume - powerOff
int zone
: Eteint - sleep
int val, int zone
: programme la mise en veille temporisée.int val
= 0 (désactive la mise en veille), 30, 60, 90,120 (min)
Input et scenes prédéfinies :
- setMainInputTo
int to
: définie le input pour la zone principale (voir Tableau des sources audio) setInputTo
int to, int zone
: idem, mais sur une zone spécifiquesetMainSceneTo
int to
: charge la scène préconfigurée dans la zone 1MainZone
- setSceneTo
int to, int zone
: charge la scène préconfigurée dans la zone choisie
Volume :
- muteOn
int zone
: active le mode sourdine - muteOff
int zone
: active le mode sourdine muteToggle
int zone
: switch le mode sourdine en fonction de l'état actuelsetVolumeTo
int db, int zone
: défini le volume à une valeur spécifique- setVolume
int db, int zone
: (idem) - volumeUp
int by, int zone
: augmente le volume par tranche du nombre de décibel indiqué (5 => +0.5dB) - volumeDown
int by, int zone
: baisse le volume par tranche du nombre de décibel indiqué (50 => -5dB) - adjustVolumeBy
int by, int zone
: ajuste le volume du nombre de décibel indiqué en tenant compte du signe +/- (-15 => -1.5dB et 25 => 2.5dB)
Ambiance :
- setPureDirect
int on
: switch du pure direct (on = 1 pour activer ou 0 pour désactiver)
Seek :
- stop
int zone
: équivalence de la touche stop de la télécommande - pause
int zone
: équivalence de la touche pause de la télécommande - play
int zone
: équivalence de la touche play de la télécommande - skip
int zone
: équivalence de la touche forward de la télécommande - rewind
int zone
: équivalence de la touche rewind de la télécommande
Party :
- partyModeOn : active le mode party (duplication de l'input actuel sur toutes les zones dispo de l'ampli)
- partyModeOff : désactivation du mode party
- partyModeUp : augmente le volume d'1 step de manière équivalente dans toutes les zones
- partyModeDown : baisse le volume d'1 step de manière équivalente dans toutes les zones
Radio :
selectTunerFrequency
int band, int frequency
: permet de changer de station si l'input est sur le tunerint band
: 1 pour FM et 2 pour AMint frequency
: un peu plus compliqué, cela dépends de la bande de diffusion sélectionnée :- en FM : de 8750 à 10800 par tranche de 5, et sans le point ou la virgule : 8955 => 89.55 Mhz
- en AM : de 531 à 1611 par tranche de 9
selectFMmode
int mode
: sélectionne le mode stéreo ou mono pour la FM : 1 pour stéreo , 2 pour mono- selectTunerPreset
int num
: présélection d'une radio enregistrée sur le tuner
Il est possible d'exposer d'autres fonctions de paramétrage, de listage, ... voir yamaha_simpleCommands.js
pour plus de détails (setHDMIOutput, setBassTo, setTrebleTo, setSubwooferTrimTo, setDialogLiftTo, setDialogLevelTo, YPAOVolumeOn, YPAOVolumeOff, extraBassOn, extraBassOff, adaptiveDRCOn, adaptiveDRCOff, selectUSBListItem , selectWebRadioListItem .... )
Sources Audio
Pour les variables d'input/entrée audio : la variable int to
est un entier représentant une des entrées ci-dessous. Le tableau ci-dessous indique également les compatibilitée entre les sources et les zones.
N° | Entrée | zone 1 | zone 2 | zone 3 | zone 4 |
---|---|---|---|---|---|
1 | TUNER | x | x | x | - |
2 | MULTI CH | x | - | - | - |
3 | PHONO | x | x | x | - |
4 | HDMI1 | x | - | - | - |
5 | HDMI2 | x | - | - | - |
6 | HDMI3 | x | - | - | - |
7 | HDMI4 | x | - | - | - |
8 | HDMI5 | x | - | - | - |
9 | HDMI6 | x | - | - | - |
10 | HDMI7 | x | - | - | - |
11 | AV1 | x | x | x | x |
12 | AV2 | x | x | x | x |
13 | AV3 | x | x | x | x |
14 | AV4 | x | x | x | x |
15 | AV5 | x | x | - | x |
16 | AV6 | x | x | - | x |
17 | AV7 | x | x | - | x |
18 | V-AUX | x | x | x | x |
19 | AUDIO | x | - | - | - |
20 | AUDIO1 | x | x | x | - |
21 | AUDIO2 | x | x | x | - |
22 | AUDIO3 | x | x | x | - |
23 | AUDIO4 | x | x | x | - |
24 | NET | x | x | x | - |
25 | Rhapsody | x | x | x | - |
26 | SIRIUS IR x | x | x | - | |
27 | Pandora | x | x | x | - |
28 | SERVER | x | x | x | - |
29 | NET RADIO | x | x | x | - |
30 | USB | x | x | x | - |
31 | iPod (USB) | x | x | x | - |
32 | AirPlay | x | x | x | - |
Exemples
Quelques exemples de commandes :
yamaha_volumeDown#50
: Baisse le volume de 5dByamaha_powerOn,*2,setInputTo#4#1,setVolumeTo#-400#1,sleep#90#1
: Allume l'ampli, attend 2 secondes, passe sur HDMI1, règle le volume à -40dB et active la veille auto dans 90 minutes. (et le tout en zone 1).- ... A vous de jouer !
Actions avancées
Si le js vous est familier, vous pouvez créer des chainages plus complexes avec des requêtes, promesses etc...
Pour cela, créez un fichier js dans dans le répertoire assistant-plugins/node_modules/assistant-yamaha
. Le fichier doit se nommer yamaha_presonnalCommands.js
. Il sera automatiquement loadé par le script au démarrage d'assistant-plugins.
Exemple de commandes chainées :
var Promise = require("bluebird");
var xml2js = Promise.promisifyAll(require("xml2js"));
function Yamaha() {}
Yamaha.prototype.maFctPerso = function(){
var self = this;
return self.powerOn().then(function(){
self.setMainSceneTo(2).then(function(){
return self.setVolumeTo(-480);
});
});
}
module.exports = Yamaha;
Cette fonction allume l'ampli, attend la confirmation, passe en scène préconfigurée 2 sur l'ampli, puis régle le volume à -48.0dB. Et pour l'appeler via IFTTT, rien de plus simple : dans le champs « Message » de Push Note, mettre yamaha_maFctPerso
et le tour est joué.
Applets IFTTT
Quelques exemples de commande IFTTT pour le principe :
- Extinction : Cette commande utilise plusieurs plugins de
assistant-plugin
et exécute dans l'ordre :- extinction de la freebox
- extinction ampli
- temporisation de 50 sec
- extinction des lumière dans la maison (via une autre requête IFTTT)