J3R3M Posté(e) le 7 avril 2019 Signaler Posté(e) le 7 avril 2019 (modifié) Bonjour tout le monde ! J'utilise l'excellent VD SONOS Remote V1.0.1 RC pour Fibaro HC2 de Krikroff et je viens d'adapter une de mes scènes pour qu'elle puisse éventuellement servir à certains d'entre vous. J'utilise cette scène pour simplement éteindre mes enceintes en fondu, soit parce qu'il n'y a plus personne chez moi ou car une extinction est programmée par pièce dès que le mode DODO est activé. En espérant qu'elle vous soit utile. Enjoy ;-) NB : Je précise que cette scène n'est utile que pour les utilisateurs du VD Sonos Remote de Krikroff ! Exemples d'utilisation Avoir plusieurs versions de cette scène avec différents IDs de VD Sonos (par pièce) : Eteindre en fondu cette pièce (si une des enceintes a la main sur le groupe) "Mode Sleep" : Programmer une extinction douce des enceintes, sans vous réveiller Eteindre simplement les enceintes, sans se soucier de quelle enceinte a la main Enceinte qui "a la main" ? C'est effectivement spécifique à l'utilisation du VD. Ce n'est pas perceptible en utilisant les applications Sonos. Lorsque vous créez un groupement d'enceintes, vous sélectionnez une des enceintes et regroupez celles que vous voulez sur cette enceinte afin qu'elles diffusent le même programme. Cette enceinte a la main sur le groupe. C'est transparent depuis l'application, puisque vous pouvez ainsi contrôler toutes les enceintes du groupe (Programme - Start - Pause) via n'importe quelle enceinte. Depuis les VD, le contrôle d'un groupe n'est possible que via le VD de l'enceinte sur laquelle vous avez regroupé les autres. Une action comme un changement de programme, Play ou Pause ne fonctionnera pas sur une enceinte qui n'a pas la main. Ce VD recherche donc l'enceinte qui a la main parmi les IDs renseignés. Que fait cette scène ? Parcourt les IDs renseignés et récupère le volume de celui-ci et la pièce dans lequel il est affecté Recherche quel(s) VD est (sont) "Maître(s)" (Celui/ceux qui contrôle(nt) les autres VDs) Fait un fade out par pas de volume afin que toutes les enceintes s'atténuent au même niveau (Voir exemple de DEBUG) Une fois à 0%, le bouton Pause est appuyé sur chaque enceinte "maître" pour que le groupe entier soit éteint Remet le volume sur un niveau audible (pour les prochaines lectures) Réglages de la scène -- Liste IDs VD Sonos local VD = {242,243,245}; -- Durée entre deux pas de fondu (en secondes) local DureePas = 3 -- Volumes auxquels seront remises les enceintes après avoir été éteintes local Volume = 15 VD = Tableau contenant les IDs de tous vos VDs Sonos DureePas = Temps entre deux atténuations de volume Volume = Volume qui sera réglé sur chaque enceinte après les avoir éteintes En théorie, vous ne devriez pas avoir à modifier les valeurs de ces variables si vous utilisez le VD tel quel. J'ai simplement créé les variables suivantes pour mon usage personnel puisque j'ai modifié le VD original. -- ID du Slider Volume des VD local SliderVol = "15" -- ID du Bouton Pause des VD local BtnPause = "8" Icone Exemple de DEBUG Dans cet exemple, on voit que l'enceinte de la cuisine était la plus forte. La scène la baisse donc pourcentage par pourcentage jusqu'à ce qu'une autre enceinte soit au même volume (ici, la Chambre à 11%). Ainsi de suite, on voit par la suite que l'enceinte de l'entrée était à 5%, le volume des trois enceintes est donc ensuite baissé simultanément, jusqu'à 0% Scène English version here -- -- FadeOut intelligent pour VD Sonos v1 (J3R3M) -- Date : 7 Avril 2019 -- VD Sonos par Krikroff : https://www.domotique-fibaro.fr/topic/616-fibaro-hc2-vd-sonos-remote-t%C3%A3%C2%A9l%C3%A3%C2%A9commande-pour-diffuseur-sonos/ -- -- Liste IDs VD Sonos local VD = {242,243,245}; -- Durée entre deux pas de fondu (en secondes) local DureePas = 3 -- Volumes auxquels seront remises les enceintes après avoir été éteintes local Volume = 15 -- ---- Ne rien modifier sous ces lignes -- -- ID du Slider Volume des VD local SliderVol = "15" -- ID du Bouton Pause des VD local BtnPause = "8" -- Debug local debug = 1; local function Debug(color,message) if debug == 1 and color ~= nil and message ~= nil then fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")); end end -- Tableau qui contiendra les infos local ListeVDSonos = {}; -- Quelles enceintes ont la main ? local function LookForMaster() local j,t = 1,{}; for i=1,#VD do local GetVol = tonumber(fibaro:getValue(VD[i], "ui.slVolume.value")); local GetRoomName = fibaro:getRoomNameByDeviceID(VD[i]); table.insert(ListeVDSonos,{piece=GetRoomName, id=VD[i], vol=GetVol}); Debug("grey", "["..GetRoomName.."] [VD "..VD[i].."] ajouté à la table 'ListeVDSonos' (Volume = "..GetVol..")"); if fibaro:getValue(VD[i], "ui.lblPosition.value") ~= "NOT_IMPLEMENTED" then Debug("white", "["..GetRoomName.."] [VD "..VD[i].."] Enceinte Maître."); t[j] = VD[i]; j = j+1; end -- Condition Enceinte a la main ou non end -- IDs Sonos un par un return t; end -- Transfert du résultat dans une variable classique local Maitre = LookForMaster(); -- Enceintes ne sont pas en lecture ? local function CheckLecture() local t = {}; for i=1,#Maitre do if fibaro:getValue(Maitre[i], "ui.lblState.value") ~= "Stopped" and fibaro:getValue(Maitre[i], "ui.lblState.value") ~= "Paused" then Debug("grey", "L'enceinte Maître "..Maitre[i].." "..i.."/"..#Maitre.." est actuellement en lecture."); table.insert(t, Maitre[i]); end end if #t == 0 then Debug("yellow", "Les enceintes ne sont pas en lecture. Scène arrêtée."); fibaro:abort(); end return t; end CheckLecture(); -- Recherche du volume maxi actuel local function VolMax() table.sort(ListeVDSonos, function(a, b) return a.vol > b.vol end); Debug("green", "[VolMax] Le volume SONOS le plus fort est "..ListeVDSonos[1].vol.."% ("..ListeVDSonos[1].piece..")"); return ListeVDSonos[1].vol; end -- On remet sur un niveau audible local function Niveau(Vol) Debug("grey","[Niveau] Début - Fonction Niveau audible"); Vol = Vol or 15; for i=1,#ListeVDSonos do fibaro:call(ListeVDSonos[i].id, "setSlider", SliderVol, Vol); Debug("darkblue", "[Niveau] ["..ListeVDSonos[i].piece.."] [VD "..ListeVDSonos[i].id.."] Enceinte à "..Vol.."%."); fibaro:sleep(1000); end -- for globals Debug("grey","[Niveau] Fin - Fonction Niveau audible"); end local function Pause() for i=1,#Maitre do fibaro:call(Maitre[i], "pressButton", BtnPause); end setTimeout(Niveau,2000); end -- Fade out global local function FadeOut(VMax,delai) Debug("grey","[FadeOut] Début - Fonction FadeOut. Durée prévue : "..VMax*delai.."s"); for i=VMax, 0, -1 do for j=1,#ListeVDSonos do local valeur_init = tonumber(ListeVDSonos[j].vol); if i <= valeur_init then fibaro:call(ListeVDSonos[j].id, "setSlider", SliderVol, i); Debug("lightblue","[FadeOut] ["..ListeVDSonos[j].piece.."] [VD "..ListeVDSonos[j].id.."] Enceinte à "..i.."%."); end end -- Boucle Enceintes fibaro:sleep(delai*1000); end -- Boucle -1 Debug("grey","[FadeOut] Fin - Fonction FadeOut. Durée prévue : "..VMax*delai.."s"); setTimeout(Pause,2000); end FadeOut(VolMax(),DureePas); Modifié le 17 avril 2020 par J3R3M 2
pepite Posté(e) le 9 avril 2019 Signaler Posté(e) le 9 avril 2019 Excellent, sympa le fade out avant extinction. Merci encore pour le partage. J aime beaucoup l'idée Envoyé de mon BND-L21 en utilisant Tapatalk
J3R3M Posté(e) le 9 avril 2019 Auteur Signaler Posté(e) le 9 avril 2019 Merci @pepite Je viens de modifier un peu le premier post en essayant d'être un peu plus clair 1
J3R3M Posté(e) le 29 mai 2019 Auteur Signaler Posté(e) le 29 mai 2019 @pepite, puisque tu sembles utiliser la scène, pas de problèmes spécifiques avec celle-ci ?
J3R3M Posté(e) le 16 avril 2020 Auteur Signaler Posté(e) le 16 avril 2020 Bonjour aux quelques personnes qui suivent cette scène. Je vous informe avoir modifié le premier sujet pour y ajouter l'icône que j'ai faite pour la scène! 1
pepite Posté(e) le 17 avril 2020 Signaler Posté(e) le 17 avril 2020 Merciii :-) Vais mettre a jour :-)Envoyé de mon BND-L21 en utilisant Tapatalk
Messages recommandés