Ldfa Posté(e) le 30 décembre 2019 Partager Posté(e) le 30 décembre 2019 Aprés vous avoir présenté les ampoules Yeelight, il est temps de jouer avec en créant des scènes pour l’ampoule blanche. Le but va être de reproduire les scènes présentes dans l’application et d’en créer deux, ce qui va me permettre de vous expliquer l’API Yeelight, vous que vous puissiez en crée d’autre vous même. Elle est disponible ici : http://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf C’est un document qui explique comment discuter avec les ampoules et c’est la base qui permet l’intégration dans Domoticz et ailleurs, elle est gratuite, ce qui veut dire que chacun peut l’utiliser. Sans trop rentré dans les détails, nous allons prendre ici un exemple : Le lever de soleil (Sunrise en anglais), il faut d’abord comprendre ce que fait cette scène : elle va allumer l’ampoule très progressivement de 0 a 100% en 15 minutes. Dans l’API nous avons la fonction set_scene, qui permet de créer une scène et surtout qui va allumer l’ampoule si elle est éteinte, voici la commande : {"id":1,"method":"set_scene", "params":["cf",2,1,"50,2,4000,1,900000,2,4000,100"]} {"id":1,"method":"set_scene", "params":["cf",2,1,"50,2,4000,1,900000,2,4000,100"]} id = numéro l’identifiant (api page : 5) method = le type de commande que nous allons envoyer set_scene = la commande que nous allons définir une scène (toutes les méthodes sont a la page : 9) params = les paramètres propre a chaque méthode, il y a des exemples. cf = color flow : un enchaînement de couleur (page 12) 2 = le nombre de flow, de changement de couleur appeler « count » (page 12) 1 = l’état de l’ampoule a la fin du « flow » appeller « action » (page 12) Les flows se composent de 4 données dans cet ordre : le temps : en combien de temps le changement va s’effectuer en millisecondes le type : 1 : couleur 2 : temperature de blanc la couleur en valeur decimal ou la temperature la luminosité On les enchaîne les uns après les autres par des « , » et pareil pour les flows, l’ensemble est contenu dans les « » Reprenons notre exemple : "50,2,4000,1,900000,2,4000,100" "50,2,4000,1,900000,2,4000,100" Premier flow : on allume l’ampoule en 50 millisecondes sur une température de blanc de 4000k a 1% 50,2,4000,1 50,2,4000,1 50 = temps d’allumage en millisecondes 2 = on travail sur la température du blanc 4000 = la température du blanc (la mono/white/blanche n’ayant qu’une seule couleur ce sera toujours 4000) 1 = l’ampoule est allumée a son minimum : 1 % Deuxieme Flow : on change l’état de l’ampoule en 900000 ms en jouant sur la température de blanc pour atteindre 100% de luminosité. 900000,2,4000,100 900000,2,4000,100 900000 : Temps en millisecondes : 15 minutes 2 = on travail sur la température du blanc 4000 = la température du blanc (la mono/white/blanche n’ayant qu’une seule couleur ce sera toujours 4000) 100 = le niveau à atteindre Assez simple à comprendre en fait, pour créer vos scènes, je vous conseil en premier lieu d’utiliser un papier et un stylo, et d’y réfléchir pas a pas. On créer un Dummy Selector : Puis un script LUA de type device, et y coller le code suivant commandArray = {} DomDevice = 'nom de votre dummy selector pour les scenes'; IP = 'ip de votre ampoules blanches'; PORT = '55443' if devicechanged[DomDevice]=='Off' then -- turn off runcommandoff = "sudo echo -ne '{\"id\":1,\"method\":\"set_power\", \"params\":[\"off\", \"smooth\", 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandoff); print(runcommandoff) elseif devicechanged[DomDevice]=='Sunrise' then -- turn to sunrise mode from 0 to 100% on 15 minutes runcommandsunrise = " sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"cf\",2,1,\"50,2,4000,1,900000,2,4000,100\"]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandsunrise); print(runcommandsunrise) elseif devicechanged[DomDevice]=='Sunset' then -- turn to sunset mode from 100% to 0 on 15 minutes and turn off bulb runcommandsunset = " sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"cf\",2,2,\"50,2,4000,75,900000,2,4000,1\"]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandsunset); print(runcommandsunset) elseif devicechanged[DomDevice]=='Bright 25%' then -- turn to 25% bright runcommand25 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 25, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand25); print(runcommand25) elseif devicechanged[DomDevice]=='Bright 50%' then -- turn to 50% bright runcommand50 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 50, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand50); print(runcommand50) elseif devicechanged[DomDevice]=='Bright 75%' then -- turn to 75% bright runcommand75 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 75, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand75); print(runcommand75) elseif devicechanged[DomDevice]=='Baby' then -- turn to Baby Mode runcommandbaby = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 1, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandbaby); print(runcommandbaby) elseif devicechanged[DomDevice]=='4-7-8' then -- turn to 4-7-8 mode runcommand478 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"cf_\",24,2,\"4000,2,4000,30,7000,2,4000,10,8000,2,4000,1\"]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand478); print(runcommand478) end return commandArray 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 commandArray = {} DomDevice = 'nom de votre dummy selector pour les scenes'; IP = 'ip de votre ampoules blanches'; PORT = '55443' if devicechanged[DomDevice]=='Off' then -- turn off runcommandoff = "sudo echo -ne '{\"id\":1,\"method\":\"set_power\", \"params\":[\"off\", \"smooth\", 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandoff); print(runcommandoff) elseif devicechanged[DomDevice]=='Sunrise' then -- turn to sunrise mode from 0 to 100% on 15 minutes runcommandsunrise = " sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"cf\",2,1,\"50,2,4000,1,900000,2,4000,100\"]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandsunrise); print(runcommandsunrise) elseif devicechanged[DomDevice]=='Sunset' then -- turn to sunset mode from 100% to 0 on 15 minutes and turn off bulb runcommandsunset = " sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"cf\",2,2,\"50,2,4000,75,900000,2,4000,1\"]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandsunset); print(runcommandsunset) elseif devicechanged[DomDevice]=='Bright 25%' then -- turn to 25% bright runcommand25 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 25, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand25); print(runcommand25) elseif devicechanged[DomDevice]=='Bright 50%' then -- turn to 50% bright runcommand50 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 50, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand50); print(runcommand50) elseif devicechanged[DomDevice]=='Bright 75%' then -- turn to 75% bright runcommand75 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 75, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand75); print(runcommand75) elseif devicechanged[DomDevice]=='Baby' then -- turn to Baby Mode runcommandbaby = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"bright\", 1, 500]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommandbaby); print(runcommandbaby) elseif devicechanged[DomDevice]=='4-7-8' then -- turn to 4-7-8 mode runcommand478 = "sudo echo -ne '{\"id\":1,\"method\":\"set_scene\", \"params\":[\"cf_\",24,2,\"4000,2,4000,30,7000,2,4000,10,8000,2,4000,1\"]}\\r\\n' | nc -w1 " ..IP.." " ..PORT..""; os.execute(runcommand478); print(runcommand478) end return commandArray Comme d’habitude prenez le temps de lire un peu le script, avec l’explication de l’api ci dessus cela devient plus facile a lire. N’oubliez pas non plus de personnaliser le script avec vos noms. Par rapport aux scènes présentes dans l’application, j’ai rajouté 2 scènes : Bright 75% : qui allume l’ampoule a 75% de sa puissance 4-7-8 : qui est une méthode d’endormissement basé sur la respiration, l’ampoule vous aidant à passer par les 3 phases, j’en parlait déja sur le forum EasyDomoticz 4-7-8 est une bonne base pour créer vos propres scenes Prochaine étape : Les Scènes pour l’ampoules RGBW Partager : Sur le même thème Afficher l’article complet Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.