minos Posté(e) le 25 octobre 2017 Signaler Partager Posté(e) le 25 octobre 2017 (modifié) Bonsoir, Je viens de voir ceci : http://www.domotique-info.fr/2017/10/xiaomi-mi-smart-speaker-network/ ou là : XIAOMI Mi Wifi Network Speaker Pensez-vous que l'on peut faire l'utiliser comme SONOS , LMS ou squeezeBox ? Vu le prix , hyper cool si ça peut le faire ... merci de vos retours Minos Modifié le 25 octobre 2017 par minos modif Lien vers le commentaire Partager sur d’autres sites More sharing options...
i-magin Posté(e) le 25 octobre 2017 Auteur Signaler Partager Posté(e) le 25 octobre 2017 Dans ton deuxième lien, j'ai pu lire ceci : Citation Si vous utilisez la solution LMS (Logitech Média Serveur) même chose, l’enceinte est compatible, dans ce cas il suffit simplement d’activer et de paramétrer le plugin DLNA, elle sera ensuite vue ensuite comme une platine. Dans ce cas, tu pourras récupérer l'adresse MAC de la platine pour renseigner la valeur "local player" du code LUA (voir mon 1er post de ce topic) Tu auras noté qu'il faut monter un serveur LMS (dans mon exemple sur un NAS) Je ne pourrai pas en dire plus, n'ayant plus de box Fibaro Lien vers le commentaire Partager sur d’autres sites More sharing options...
minos Posté(e) le 26 octobre 2017 Signaler Partager Posté(e) le 26 octobre 2017 Il y a 7 heures, i-magin a dit : Tu auras noté qu'il faut monter un serveur LMS (dans mon exemple sur un NAS) @i-magin J 'ai un syno 415+...ça devrait le faire je vais encore étudier... sont fort ces chinois ...!! merci de ton reour 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
MAM78 Posté(e) le 26 octobre 2017 Signaler Partager Posté(e) le 26 octobre 2017 (modifié) @minosTu as vu mon post au sujet du DS415+ ? ici : Modifié le 26 octobre 2017 par MAM78 Lien vers le commentaire Partager sur d’autres sites More sharing options...
ygi Posté(e) le 6 septembre 2018 Signaler Partager Posté(e) le 6 septembre 2018 (modifié) Bonjour, J'ai enfin reussi a faire ce que je voulais, sans utiliser de plugin externe. C'est une scene qui va lire la prochaine alarme endéans les 24h d'une squeezebox et demarre des actions de votre souhait. l'avantage de celle-ci, c'est qu'il est possible de demarrer des actions un certain temps juste avant le reveil... tel chauffage dans la SDB . Dans le code qui suite j'ai cree un simulateur d'aube sur du RGBW N'hesitez pas a me notifier de vos ameliorations de code.. ou de bugs Ce code est donc composé d'un virualDevice (pour consulter la SqueezeBox) et d'une scène Voici le VirtualDevice: SqueezeBox.vfib et specifiez l'IP du LMS (Serveur Logitech) et le port 9090 Dans le code de chaque bouton et le main loop, n'oubliez pas de modifier la variable PlayerMAC qui est la MACaddress de votre squeezebox : Dans la partie Main Loop (tout en bas), vous pouvez modifier le pollingTime (Frequence de consultation de la Squeezzbox) dans la variable pollingTimeSec qui a la valeur de 10 (secondes). Créez une nouvellle scene, dont voici le code : --[[ %% autostart %% properties %% events %% globals --]] local runTaskFrom = ""; -- empty string if running all the time local runTaskTo = ""; local vdSqueezeboxId = 132; local polltimeCheck = 60; --in minutes local taskDuration = 0; -- in minutes 0 if nothing to do after task is done local waitSBStopOFF = true; local timeToStartBeforeSqueezeBox = 0; -- in minutes local lightId = 16; function task() fibaro:debug ("Running the task "); if waitSBStopOFF == true then fibaro:debug ("Waiting Squeezebox to start"); while fibaro:getValue(vdSqueezeboxId, "ui.Status.value") ~= "Play" do fibaro:sleep(5000); end end StartDawn(); if taskDuration > 0 or waitSBStopOFF == true then if taskDuration > 0 then fibaro:debug ("Waiting " .. math.floor(taskDuration) .. " minutes"); fibaro:sleep ((taskDuration) * 60000 ); end if waitSBStopOFF == true then fibaro:debug ("Waiting Squeezebox to stop"); while fibaro:getValue(vdSqueezeboxId, "ui.Status.value") == "Play" do fibaro:sleep(5000); end end StopDawn(); end end function StartDawn() local dawnDuration = 5; -- in minutes local dawnRGBW={{15,0,30,0}, {45,13,5,30}, {15,0,15,60}, {5,0,0,90}, {0,0,0,120}, {0,0,0,255}}; local maxValueByStep={}; local changeColor={}; fibaro:call(lightId, "turnOff"); fibaro:sleep(1000); local currentColor = split(fibaro:getValue(lightId, "color"),","); for k,v in ipairs(dawnRGBW) do maxValueByStep[k]=0; for i=1,4 do if (math.abs(v-currentColor) > maxValueByStep[k]) then maxValueByStep[k] = math.abs(v-currentColor); end; end currentColor = v; end --calculate time to wait for each color steps local totalChangeColors=0; for i,val in ipairs(maxValueByStep) do totalChangeColors = totalChangeColors + val; end local waitTime = math.floor(((dawnDuration*60*1000) / totalChangeColors) + 0.5); fibaro:debug(string.format("total change : %d steps in %d min = %dms by step",totalChangeColors, dawnDuration, waitTime)); --let's go for changing the colors currentColor = split(fibaro:getValue(lightId, "color"),","); for k,v in ipairs(dawnRGBW) do fibaro:debug(string.format("%d sec in %d steps to go to %d %d %d %d",(waitTime/1000*maxValueByStep[k]), maxValueByStep[k], v[1],v[2],v[3],v[4])); for i=1,4 do changeColor = (v-currentColor)/ maxValueByStep[k]; end for i=1, maxValueByStep[k] do for j=1,4 do currentColor[j] = currentColor[j]+changeColor[j]; end local R = math.floor(currentColor[1] + 0.5); local G = math.floor(currentColor[2] + 0.5); local B = math.floor(currentColor[3] + 0.5); local W = math.floor(currentColor[4] + 0.5); fibaro:call(lightId, "setColor",R,G,B,W); local keepOn = true; if waitSBStopOFF == true and fibaro:getValue(vdSqueezeboxId, "ui.Status.value") ~= "Play" then keepOn = false; end if keepOn == false then return; end; fibaro:sleep(waitTime); end end end function StopDawn() fibaro:call(lightId, "turnOff"); end function getTimeToWait(TimeToWaitStr) local startDate = os.date("*t"); startDate.hour = tonumber(string.sub(TimeToWaitStr,1,2)); startDate.min = tonumber(string.sub(TimeToWaitStr,4,5)); startDate.sec = 0; if (os.time() >= os.time(startDate)) then startDate = os.date("*t",os.time()+(24*60*60)); startDate.hour = tonumber(string.sub(TimeToWaitStr,1,2)); startDate.min = tonumber(string.sub(TimeToWaitStr,4,5)); startDate.sec = 0; end return os.time(startDate)-os.time(); end function process () --Wakeup time fibaro:debug("Starting Check "); local squeezeBoxNextAlarm = fibaro:getValue(vdSqueezeboxId, "ui.NextAlarm.value"); if squeezeBoxNextAlarm ~= nil and squeezeBoxNextAlarm ~= "" then fibaro:debug("Next alarm today at "..squeezeBoxNextAlarm); local hours = tonumber(string.sub(squeezeBoxNextAlarm,1,2)); local minutes = tonumber(string.sub(squeezeBoxNextAlarm,4,5)); local totalMinutes = (hours *60) + minutes; local timeToWait = getTimeToWait(squeezeBoxNextAlarm) - (timeToStartBeforeSqueezeBox *60); if timeToWait < (polltimeCheck *60) then fibaro:debug("Waiting Alarm for " .. math.floor(timeToWait/ 60) .. " minutes"); fibaro:sleep (timeToWait * 1000); task (); return true; end end return false; end ------------------------ -- Main Code ------------------------ if fibaro:countScenes() > 1 then fibaro:abort(); end local timeRange = false; while true do if (runTaskFrom ~= "") then timeRange = true; local timeFrom = getTimeToWait(runTaskFrom); local timeTo = getTimeToWait(runTaskTo); if timeFrom < timeTo then -- we are outside the range fibaro:debug ("Waiting for "..runTaskFrom); fibaro:sleep(timeFrom * 1000); end end if process() == false then fibaro:debug("Sleeping " .. polltimeCheck .. " minutes"); fibaro:sleep (polltimeCheck * 60000 ); end end les parametres de la scene : vdSqueezeboxId = ID du VirtualDevice de la SqueezBox runTaskFrom et runTaskTo : string des heures pendant lesquelles le process va consulter la Squeezebox (si parametres vide, le process va consulter cycliquement la SB tous les X minutes (param timeCheckCycle), ex "08:30" "16h47" (format 24h) polltimeCheck : minute entre les consultations de la SB taskDuration : minutes entre les actions à prendre en debut de reveil, et les actions de fin ( valeur 0 = pas d'actions de fin) waitSBStopOFF : true s'il faut se synchroniser avec l'état de la Squeezebox On/Off ou que que le status est Stop (ni Play, ni Pause) timeToStartBeforeSqueezeBox = délais en minutes pour déclencher les actions avant le réveil Parametres de l'aube : La fonction Dawn simule l'aube sur RGBW, avec comme parametre l'ID du device RGB. le tableau dawnRGBW definit les etapes de couleurs.. 6 ici en l'occurence, que vous pouvez changer à votre guise ma simulation colorimetrique ne vous satisfait pas. Le process va calculer la vitesse et les modifications pour chacune des couleurs et pour chacune des étapes en fonction du paramètre : dawnDuration qui specifie combien de minutes doit prendre l'éxecution de toutes les étapes. Dans mon code ici, je me synchronise avec l'etat de la squeezebox, et demarre l'aube lorsque la squeezbox est en "play"... si je stop le reveil pendand l'aube ou apres, il avorte l'execution et eteint le RGBW... par contre si vous mettez une valeur dans la duree de l'execution (taskDuration), ce délais sera enclenché qu'apres avoir executé l'aube. Donc si la durée d'exécution de l'aube est de 5 min, si vous coupez le reveil pendant l'exécution de celle-ci, le RGB s'eteindra, si vous le faites après, pendant cette attente... Elle ne s'eteindra une fois ce delais exécuté. have fun yves Modifié le 22 septembre 2018 par ygi Lien vers le commentaire Partager sur d’autres sites More sharing options...
ygi Posté(e) le 23 septembre 2018 Signaler Partager Posté(e) le 23 septembre 2018 (modifié) rebonjour, j'ai ammene une bonne modification a mon poste precedent... si vous l'aviez utilise.. veuillez prendre cette derniere mouture belle journee yves Modifié le 23 septembre 2018 par ygi Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés