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, pour que vous puissiez en créer d’autres 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 d’ailleurs, elle est gratuite, ce qui veut dire que chacun peut l’utiliser.
Sans trop rentrer dans les détails, nous allons prendre ici un exemple : Le levé 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 = 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 à 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
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"
Premier flow : on allume l’ampoule en 50 millisecondes sur une température de blanc de 4000k a 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 : 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.
DANS DOMOTICZ
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
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.
LES BONUS
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éjà sur le forum EasyDomoticz
4-7-8 est une bonne base pour créer vos propres scènes
Prochaine étape : Les scènes pour l’ampoules RGBW