Skip to content

Extension for assistant-plugins ( by aymeric) to pilot yamaha AV receiver with voice control

License

Notifications You must be signed in to change notification settings

tapsystem/assistant-yamaha

Repository files navigation

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

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épertoire assistant-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

^Sommaire

É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

^Sommaire

Le déclenchement des commandes se fait via IFTTT pour relier une commande vocale à une action

  1. Créer une nouvelle applet dans IFTTT : https://ifttt.com/create
  2. Cliquer sur this puis choisir Google Assistant (ou Amazon Alexa ou Cortana)
  3. Choisir la carte Say a simple phrase (ou autre, selon votre cas)
  4. Dans « What do you want to say? » mettre la phrase qui va déclencher l'action
  5. Remplir les autres champs de la carte
  6. Maintenant, cliquer sur that puis choisir Pushbullet
  7. Choisir la carte Push a Note
  8. Dans le champs « Title », mettre Assistant
  9. 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
  10. Enregistrer puis cliquer sur Finish
  11. Dites : « OK Google » (ou le trigger de votre assistant) suivi de votre phrase spéciale du point 4)
  12. Votre assistant devrait s'exécuter

Combinaisons

^Sommaire

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

^Sommaire

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

^Sommaire

Les variables "communes":

  • le paramètre int zone est optionnel et le plugin sélectionne automatiquement la zone 1 MainZone 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 et int bypermettent 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écifique

  • setMainSceneTo int to : charge la scène préconfigurée dans la zone 1 MainZone

  • 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 actuel

  • setVolumeTo 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 tuner

    • int band : 1 pour FM et 2 pour AM
    • int 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

^Sommaire

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.

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

^Sommaire

Quelques exemples de commandes :

  • yamaha_volumeDown#50 : Baisse le volume de 5dB
  • yamaha_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

^Sommaire

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

^Sommaire

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)

About

Extension for assistant-plugins ( by aymeric) to pilot yamaha AV receiver with voice control

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published