Hello.
Moi je m'etais simplifié les scripts de deennoo pour les comprendres. J'ai aussi traduit la partie methode cf de l'api qui est la plus compliqué.
Si ca peut aider:
Code : Tout sélectionner
local script = ' [Scene Bande Led] ' ; commandArray={}
-- ****************************************************** - Ouverture - ****************************************************** --
if devicechanged['Scene Bande Led'] then
-- Chargement du fichier de fonction et init des logs
print('\n--------------------------------------------- '..script..' --------------------------------------------------------')
--################################################################################################################################--
DomDevice = 'Scene Bande Led';
IP = '192.168.0.37';
PORT = '55443'
local methode
local parametre
if dc[DomDevice]=='Off' then
methode = 'set_power'
parametre = '["off", "smooth", 500]'
elseif dc[DomDevice]=='Bright 1%' then -- Allume en orange/chaud à 1%
methode = 'set_scene'
parametre = '["color", 16737792, 1]'
elseif dc[DomDevice]=='Bright 25%' then -- Allume en orange/chaud à 25%
methode = 'set_scene'
parametre = '["color", 16737792, 25]'
elseif dc[DomDevice]=='Bright 50%' then -- Allume en orange/chaud à 50%
methode = 'set_scene'
parametre = '["color", 16737792, 50]'
elseif dc[DomDevice]=='Bright 75%' then -- Allume en orange/chaud à 75%
methode = 'set_scene'
parametre = '["color", 16737792, 75]'
elseif dc[DomDevice]=='Bright 100%' then -- Allume en orange/chaud à 75%
methode = 'set_scene'
parametre = '["color", 16737792, 100]'
elseif dc[DomDevice]=='Lever du soleil' then -- Allume en 0.5s a une chaleur de 6000K a 1% puis varie pendant 5m a 2700K 10% puis 2700K 100% pendant 10m
methode = 'set_scene'
parametre = '["cf",3,1,"500,2,6000,1,300000,2,2700,10,600000,2,2700,100"]'
elseif dc[DomDevice]=='Couché du soleil' then -- Modifie la couleur en orange a 50% en 10m puis descend a 1% en 5m
methode = 'set_scene'
parametre = '["cf",2,2,"600000, 1, 16737792, 50, 300000, 1, 16737792, 1,"]'
elseif dc[DomDevice]=='4-7-8' then -- mode d'aide a l'endormissement 4-7-8
methode = 'set_scene'
parametre = '["cf",24,2,"4000,2,4000,30,7000,2,4000,10,8000,2,4000,1"]'
elseif dc[DomDevice]=='Get Prop' then -- recupere les proprietés des led
methode = 'get_prop'
parametre = '["model", "name", "fw_ver", "support", "power", "bright", "color_mode", "ct", "rgb", "hue", "sat"]'
end
--creer la commande et l'envoi
local command = "sudo echo -ne '{\"id\":1,\"method\":\""..methode.."\", \"params\":"..parametre.."}\\r\\n' | nc -w1 "..IP.." "..PORT..""
local handle = io.popen(command)
local result = handle:read("*a")
handle:close()
--print(command)
--print(result)
end
return commandArray
Methode: start_cf
Utilisation: Cette methode est utiliser pour lancer une sequence de variation de couleur.
Les sequences seront des series de changement d'etat des leds.
Cela peut etre une variation de luminosité, un changement de couleur ou de temperature.
3 Parametres:
{"id":1,"method":"start_cf","params":[ count, action, "flow_expression (Duration, Mode, Value, Brightness, Duration, Mode, Value, Brightness...)"]}
"count": nombre total de changement de sequence avant d'arreter. 0 = changement infini entre les sequences.
"action": action apres le nombre de changement de sequence:
0 = les leds retrouveront l'etats qu'elles avaient avant le debut de la methode.
1 = les leds resteronts dans l'etats ou elle se trouve apres le nombre total de sequence de "count"
2 = les leds passeront off apres le nombre total de sequence de "count"
"flow_expression": sont les sequences de changement de led. Une sequence est defini comme suit:
Duration, Mode, Value, Brightness.
Plusieurs sequences peuvent se succeder en serie de telle sorte: Duration, Mode, Value, Brightness, Duration, Mode, Value, Brightness, Duration, Mode, Value, Brightness...
Duration: En millisecondes, durée graduelle du changement ou de la pause dans l'etat.
Mode: 1 – Changement de couleur, 2 – Changement de temperature, 7 – Aucun changement (pause dans l'etat).
Value: Pour le mode 1, il s'agit de la valeur en RGB. Pour le mode 2, il s'agit de la chaleur de l'ampoule. En mode 7, comme il s'agit d'un pause la valeur est ignorer.
Brightness: Valeur de luminosité de 1 a 100% Ignoré aussi en mode 7. (Apparement si cette valeur egale -1 elle est ignorer en mode 1 ou 2, mais je n'ai que des erreurs avec)
Exemple:
{"id":1,"method":"start_cf","params":[ 4, 2, "100000, 2, 2700, 100, 300000, 1,255, 10, 50000, 7, 0,0, 300000, 2, 5000, 1"]}
Exemple de reponse: {"id":1, "result":["ok"]}
Expression:
"4, 2,": 4 changement de serie de sequence, puis eteins les leds à la fin.
"100000, 2, 2700, 100,": Change graduellement jusqu'a une temperature de led de 2700K a 100% de luminosité pendant 100s
300000, 1,255, 10, Change graduellement jusqu'a la couleur RGB255 (rouge) et 10% de luminosité pedant 5 minutes.
50000, 7, 0,0, Marque une pause de 50s
300000, 2, 5000, 1" Change graduellement jusqu'a une temperature de 500K a 1% de luminosité pendant 5 minutes.