# Changement titres sonos

**URL:** <https://community.homey.app/t/changement-titres-sonos/100712>\
**Category:** Questions & Aide\
**Created:** [January 10, 2024, 8:39pm UTC](https://community.homey.app/t/changement-titres-sonos/100712 "2024-01-10T20:39:19Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![The\_cure\_Bob](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/the_cure_bob/32/80551_2.png) [@The\_cure\_Bob](https://community.homey.app/u/The_cure_Bob)\
**Post date:** [January 10, 2024, 8:39pm UTC](https://community.homey.app/t/changement-titres-sonos/100712/1 "2024-01-10T20:39:20Z")

</div>

bonjour,  
j’ai créer un flow comme joint

 ![Capture d’écran (19)](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/e/6/e602ab3d2e9fbb6a063b4991851fd71c90d91055.png)

je voudrai par un appui sur un BP (bouton sonoff) a changer de favoris sonos

Je n’arrive pas a creer ce flow, quelqu’un pourrais m’aider  
Merci  
Yann

---

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [January 12, 2024, 12:31pm UTC](https://community.homey.app/t/changement-titres-sonos/100712/2 "2024-01-12T12:31:31Z")

</div>

Je n’ai pas “sonos” mais je dirai:  
QUAND: Appuis sur le bouton sonoff  
ET: Sonos est en cours de lecture (si la carte existe)  
ALORS: Jouer favoris X

Non?

---

<div class="post-metadata">

**Author:** ![The\_cure\_Bob](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/the_cure_bob/32/80551_2.png) [@The\_cure\_Bob](https://community.homey.app/u/The_cure_Bob)\
**Post date:** [January 12, 2024, 3:39pm UTC](https://community.homey.app/t/changement-titres-sonos/100712/3 "2024-01-12T15:39:18Z")

</div>

bonjour sebastien,  
non ce n’est pas si simple, car j’ai environ 15 favori, le but est a chaque appui sur le bp, on change de favori  
yann

---

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [January 12, 2024, 6:39pm UTC](https://community.homey.app/t/changement-titres-sonos/100712/4 "2024-01-12T18:39:37Z")

</div>

Avec Homeyscript et un script dans le genre ça peut se faire.

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/0/f/0f9845eb12ebfa74099e2f13c04a80390d775032.png)

Si un nombre aléatoire suffit à sélectionner une playlist, le script serai le suivant:

```auto
const numberOfFav = 15;
var randomNum = Math.floor(Math.random() * numberOfFav) + 1;
log(randomNum);
await tag('Favoris aléatoire', randomNum);
return true;

```

Il créé un tag ‘Favoris aléatoire’ en lui donnant un nombre aléatoire de 1 à 15. A adapter.

Si jamais il te faut le nom de la playlist ça peut être celui ci:

```auto
const favPlaylist = ['playlist1', 'playlist2', 'playlist3', 'playlist4', 'playlist5'];
var randomPlaylist = favPlaylist[Math.floor(Math.random() * favPlaylist.length)];
log(randomPlaylist);
await tag('Favoris aléatoire', randomPlaylist);
return true;

```

---

<div class="post-metadata">

**Author:** ![The\_cure\_Bob](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/the_cure_bob/32/80551_2.png) [@The\_cure\_Bob](https://community.homey.app/u/The_cure_Bob)\
**Post date:** [January 12, 2024, 8:46pm UTC](https://community.homey.app/t/changement-titres-sonos/100712/5 "2024-01-12T20:46:50Z")

</div>

🥴 🥴

tu peux m’expliquer parce que la je suis perdu…  
Merci  
Yann

---

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [January 12, 2024, 9:01pm UTC](https://community.homey.app/t/changement-titres-sonos/100712/6 "2024-01-12T21:01:21Z")

</div>

Bien sur! 🙂

Je viens de regarder l’appli [Sonos](https://homey.app/fr-fr/app/com.sonos/Sonos/). Visiblement c’est du texte dans ta tuile

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/b/4/b40c44acd5b119044a83bd5fcab0e413b405a001.png)  
“Favorite” c’est bien le nom d’un favoris et pas un numéro si je ne me trompe pas?

Et bien tu peux créer le flow que j’ai proposé et utiliser [HomeyScript](https://homey.app/fr-fr/app/com.athom.homeyscript/HomeyScript/) pour l’enregistrer dedans. Une fois HomeyScript installé, tu aura un nouvel onglet dans ton menu latéral. Tu fais “Nouveau HomeyScript”, tu le nomme (dans mon exemple plus haut j’avais random mais tu mets ce que tu veux faudra juste remplacé random dans le flow) et tu l’enregistre.

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/1/d/1dc20ff7ccd66a65676ee3856143d663c25ac290.png)

Tu utilisera donc ce script:

```auto
const favPlaylist = ['playlist1', 'playlist2', 'playlist3', 'playlist4', 'playlist5'];
var randomPlaylist = favPlaylist[Math.floor(Math.random() * favPlaylist.length)];
log(randomPlaylist);
await tag('Favoris aléatoire', randomPlaylist);
return true;

```

Où playlist1, playlist2, … sont à remplacer par les nom de tes favoris, tu peux en mettre autant que tu veux. A chaque fois que le script sera exécuté, il ira chercher aléatoirement une valeur du tableau ( en javascript “[…]” est un tableau de données) et mettra à jour le tag “Favoris aléatoire” avec comme valeur la valeur aléatoirement sortie.

Donc il te faut simplement appeler ce script dans ton flow avec la carte “Run script” dans les cartes ET.  
Par exemple:  
QUAND: appuis sur le bouton sonoff  
ET: “Run script” (entrer le nom que tu as donné pour ton script)  
ALORS: ta carte sonos pour jouer ton favoris (avec comme valeur de favoris le tag créé par le script qui se nomme “Favoris aléatoire”)

---

<div class="post-metadata">

**Author:** ![The\_cure\_Bob](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/the_cure_bob/32/80551_2.png) [@The\_cure\_Bob](https://community.homey.app/u/The_cure_Bob)\
**Post date:** [January 12, 2024, 9:35pm UTC](https://community.homey.app/t/changement-titres-sonos/100712/7 "2024-01-12T21:35:09Z")

</div>

favori est bien le nom d’un favori.  
Et bien même si c’est chinois ce script je vais le recopier bêtement (je n’aime pas car il faut comprendre).  
je vais le tester ce weekend  
Comment tu créer ces scripts avec ce langage?  
Merci

---

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [January 13, 2024, 5:25am UTC](https://community.homey.app/t/changement-titres-sonos/100712/8 "2024-01-13T05:25:27Z")

</div>

```auto
/* Déclaration du tableau. 'const' car il est constant il ne changera pas dans le code
 'favPlayslit' est le nom du tableau
 ['1er élément', '2e élement', '3e élément'] sont le tableau et ses élément; */
const favPlaylist = ['playlist1', 'playlist2', 'playlist3', 'playlist4', 'playlist5']; 

/* Déclaration d'une variable 'randomPlaylist' pour stocker le titre de la playlist (j'aurai également pu mettre 'const' aussi car elle ne change pas plus loin dans le code)

Nous voulons un élément du tableau favPlaylist[]; favPlaylist[0] renverra le 1er élément du tableau soit 'playlist1',
favPlaylist[4] renverra le 5e élément du tableau soit 'playlist5'...
Mais nous voulons un élément de ce tableau de façon aléatoire, donc on ajuste avec ce qui suit.

Math.floor() est une fonction javascipt qui renvois l'entier inférieur d'un nombre Math.floor(0.1) renverra 0, Math.floor(1.999) renverra 1.

Math.random est une fonction javascript qui renvoie un nombre (décimal ou non, d'où l'intéret de Math.floor()) dans une plage qui lui est donnée. Math.random(10); renverra un nombre de 0 à 10. 3,3232323 ou 0,1233, ou 8...

.length est 'la taille de'. Donc favPlaylist.length est la taille du tableau 'favPlaylist'. en ajoutant *favPlaylist.length on dit que ça doit être un nombre aléatoire dans la plage de la taille du tableau (le nombre d'élément dans le tableau).

Nous avons donc une variable 'randomPlaylist' qui, a chaque fois que le code est exécuté, sera égale à:

favPlaylist[un nombre décimale ou non, aléatoire compris entre 0 et la taille du tableau, qui est arrondi à l'entier inférieur]

soit favPlaylist[nombre entier aléatoire]

Et on a vu plus haut que favPlaylist[2] renverra le 3e élément du tableau.
*/
var randomPlaylist = favPlaylist[Math.floor(Math.random() * favPlaylist.length)];

//log(); ou console.log(); permet de débogger en affichant ce que l'on souhaite dans la console
log(randomPlaylist);

//Ensuite on créé un tag ('Nom du tag', valeur);
await tag('Favoris aléatoire', randomPlaylist);

/* On retourne true cela permet dans les flows de continuer ensuite.
Dans les Advanced flow tu as du remarquer que les lignes entre carte sont bleu ou orange/jaune.
Quand c'est bleu c'est que la carte retourne vrai (true) quand c'est orange/jaune c'est que la carte retourne faux 'false'
*/
return true;

```

Tu peux créer directement dans HomeyScript.

# Pour aller plus loin:

[const](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Statements/const)

[var](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Statements/var)

[array](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array) (tableau)

[Math.floor()](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Math/floor)

[Math.random()](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Math/random)

[console.log()](https://developer.mozilla.org/fr/docs/Web/API/console/log_static)

---

<div class="post-metadata">

**Author:** ![HenriDO](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/henrido/32/84845_2.png) [@HenriDO](https://community.homey.app/u/HenriDO)\
**Post date:** [January 13, 2024, 9:57am UTC](https://community.homey.app/t/changement-titres-sonos/100712/10 "2024-01-13T09:57:03Z")

</div>

Un grand Merci @sebyldino , je cherchais cette fonction, par contre je n’arrive pas a remonter le Tag dans le Flow ? (A vrai dire j’ai jamais utilisé de Tag…)

 ![Capture d’écran 2024-01-13 à 10.55.51](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/d/f/df65661c637a3b2a3dcb8656320ff7398a55911c.png)

---

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [January 13, 2024, 11:07am UTC](https://community.homey.app/t/changement-titres-sonos/100712/11 "2024-01-13T11:07:06Z")

</div>

Il faut que le script soit exécuté une première fois pour que le tag soit créé.

---

<div class="post-metadata">

**Author:** ![HenriDO](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/henrido/32/84845_2.png) [@HenriDO](https://community.homey.app/u/HenriDO)\
**Post date:** [January 13, 2024, 2:26pm UTC](https://community.homey.app/t/changement-titres-sonos/100712/12 "2024-01-13T14:26:02Z")

</div>

Meme un fois, je n’arrive pas a récupérer le Tag, je pense que Sonos n’accepte pas, il faut choisir dans la liste.

Meme avec un simple Flow 🙂

---

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [January 13, 2024, 3:33pm UTC](https://community.homey.app/t/changement-titres-sonos/100712/13 "2024-01-13T15:33:35Z")

</div>

Ah je comprend mieux.  
La liste est à choisir parmi un choix défini dans la tuile.  
Du j’ai bien ma petite idée de comment faire mais je ne suis pas sur mon PC.

Il faudrai du coup utiliser le script qui sort un numéro aléatoire et faire un un flow.

Quand on appuis sur le bouton lancer le script.  
Et une autre carte QUAND la variables « favori aléatoire » a changé ET qu’elle est égale à 1 jouer favoris1, ET quand elle est égale à 2 jouer favoris 2…

---

<div class="post-metadata">

**Author:** ![The\_cure\_Bob](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/the_cure_bob/32/80551_2.png) [@The\_cure\_Bob](https://community.homey.app/u/The_cure_Bob)\
**Post date:** [January 13, 2024, 3:50pm UTC](https://community.homey.app/t/changement-titres-sonos/100712/14 "2024-01-13T15:50:01Z")

</div>

seb  
merci de tes retours, pourrais tu nous aider pour ton idée?  
Merci

---

<div class="post-metadata">

**Author:** ![The\_cure\_Bob](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/the_cure_bob/32/80551_2.png) [@The\_cure\_Bob](https://community.homey.app/u/The_cure_Bob)\
**Post date:** [January 13, 2024, 8:07pm UTC](https://community.homey.app/t/changement-titres-sonos/100712/15 "2024-01-13T20:07:24Z")

</div>

sinon pour contourner le probleme (ca ne le résoudra pas), j’avais chez moi n aeotec wallmote quad, il y a pas mal de possibilité de declenchements (16), mais pas +, c’est sur qu’avec un BP on peut faire a l’infini, mais je seche…

---

<div class="post-metadata">

**Author:** ![sebyldino](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/sebyldino/32/20067_2.png) [@sebyldino](https://community.homey.app/u/sebyldino)\
**Post date:** [January 14, 2024, 6:35am UTC](https://community.homey.app/t/changement-titres-sonos/100712/16 "2024-01-14T06:35:51Z")

</div>

Voici le flow auquel je pense. A ajuster suivant vos favoris.

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/c/0/c0af5a7e83e373e0fca8ad948636ec4bcf5c2f26.png)

Il faudra donc utiliser ce script:

```auto
const numberOfFav = 15; // Définir ici le nombre de favoris
var randomNum = Math.floor(Math.random() * numberOfFav) + 1; 
log(randomNum);
await tag('Favoris aléatoire', randomNum);
return true;

```

Si vous aviez utilisé l’autre script avant, il faudrait supprimer l’ancien tag. Car l’autre créait un tag de type String et celui ci créé un tag de type Number.

Pour supprimer un tag:

```auto
await tag('NAME', null); // Remplacer NAME par le nom du tag à supprimer puis exécuté le script

```

---

<div class="post-metadata">

**Author:** ![The\_cure\_Bob](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/the_cure_bob/32/80551_2.png) [@The\_cure\_Bob](https://community.homey.app/u/The_cure_Bob)\
**Post date:** [January 14, 2024, 8:07am UTC](https://community.homey.app/t/changement-titres-sonos/100712/17 "2024-01-14T08:07:17Z")

</div>

bonjour sebastien,  
tu es matinal 😀, merci de ton aide  
je vais essayer aujourd’hui, par contre question:  
comment fais tu pour taper le script? j’ai éssayé de le copier coller, ca ne fct pas, tu le tapes donc?il faut respecter les espaces scrupuleusement?  
Merci  
Yann

---

<div class="post-metadata">

**Author:** ![The\_cure\_Bob](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/the_cure_bob/32/80551_2.png) [@The\_cure\_Bob](https://community.homey.app/u/The_cure_Bob)\
**Post date:** [January 14, 2024, 10:28am UTC](https://community.homey.app/t/changement-titres-sonos/100712/18 "2024-01-14T10:28:40Z")

</div>

au top sebastien,  
ca fonctionne super  
merci a toi  
👍 👍 👍 👍 👍

---

<div class="post-metadata">

**Author:** ![HenriDO](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/henrido/32/84845_2.png) [@HenriDO](https://community.homey.app/u/HenriDO)\
**Post date:** [January 18, 2024, 9:47am UTC](https://community.homey.app/t/changement-titres-sonos/100712/19 "2024-01-18T09:47:16Z")

</div>

Bonjour a vous deux, l’App Sonos a été développée par Athom/Homey, je leur ai demandé de la modifier pour avoir l’option aléatoire, j’ai eu une réponse positive, ils vont l’ajouter, néanmoins si vous pouviez faire aussi une demande cela les incitera a placer en priorité cette demande 😉

[https://homey.app/en-us/support/](https://homey.app/en-us/support/)
