[NODE-RED] enceintes Sonos

Avec l’aide de @spenceur, je vais vous expliquer comment faire parler vos enceintes Sonos via node-red et une scène.

Je ne vais pas explique comment mettre en place NODE-RED, @pierre-gilles à déjà fait un tuto en vidéo pour ça. https://www.youtube.com/watch?v=bpmHzR8_S5g.
Par contre il va falloir appeler une API externe dans Node-RED qui est « node-red–contrib-tts-ultimate ».
Pour faire ça @pierre-gilles l’explique à la 38:55 minutes.

Voici le flow de Node-red:

Première fonction: http in
Rien de bien compliqué
Capture fonction http in

Seconde fonction: Globals settings

// Global Settings
global.set("defaultVolume", 30);
global.set("home", {
    salon: '192.168.1.58'
   chambre: 'ip-chambre'
})
return msg;

Troisième fonction: check auth

msg.statusCode = 401;
if (
    typeof msg.payload.room != 'undefined'
    && msg.payload.user === 'clef uuid' à renseigner
) {
    msg.statusCode = 200;
    msg.room = msg.payload.room || 'all';
    msg.volume = msg.payload.volume || global.get("defaultVolume");
    msg.payload = msg.payload.msg;
    msg.test = global.get("home")[msg.room];
    msg.setConfig = {};
    if (msg.room === 'all') {
        msg.setConfig = {
            setMainPlayerIP: global.get("home")['salon'],
            setPlayerGroupArray: [
                global.get("home")['salon']
            ],
        }
    } else {
        msg.setConfig.setMainPlayerIP = global.get("home")[msg.room];
    }
}
return msg;

Vous allez devoir générer un clef UUID afin que vous soyez le seul à pouvoir diffuser sur vos enceintes via un générateur de clef: uuidgenerator.net.

Quatrième fonction: TTS-Ultimate

A vous de choisir les paramètres que vous voulez dans cette fonction.
Dans « main Sonos Player », sélectionner la ou le groupe d’enceintes.

Cinquième fonction: http reponse

On a rien à y mettre dedans.

Sixième fonction: debug
Capture fonction debug

Pensez à tous relier comme il faut et déployer votre flow.
Si tout va bien en dessous de la fonction TTs-Ultilmate, vous devriez avoir Sonos is connected.

Maintenant on va créer une scène dans Gladys.

Choisissez un déclencheur en fonction de ce que vous voulez faire.
Puis rajouter une action "Faire une requête HTTP.

Dans cette requête:

  • Méthode: POST
  • URL: ip_de_votre_instance:1880/tts
  • Body:
{
"user":"clef uuid",
"msg":"il faut sortir la poubelle",
"room":"salon",
"volume": 15

}

A vous de jouer avec vos scènes et diffuser vos messages.

Dés que j’ai compris comment il faut rajouter un fichier audio afin qu’il puisse être diffuser je le rajouterai au tuto.
Par exemple un son d’alarme lors d’un intrusion.
Si vous savez comment faire, je suis preneur des infos, je suis loin d’être un expert en node-red.
Merci à @spenceur pour son aide.

3 Likes