Aller au contenu

Etat Lampe Philips Hue - Interrogation En Lua


Messages recommandés

Posté(e)

Bonjour à  tous,

j'ai fait un VD afin de récupérer l'état de mes lampes HUE philips.

N'étant de loin pas un programmeur, je me suis inspiré de code LUA trouvé sur ce forum.

Entre autre j'ai repris le VD de Steven pour l'état des entrées sorties de l'IPX. Merci à  tous les autres pour leurs excellentes contributions.

 

Mon VD "Hue's Etat" fonctionne, mais je pense que l'on pourrait améliorer et simplifier le code, j'aurai donc besoin de votre aide si c'est possible.

local status = ""
HueUser = "newdeveloper";
HueAddress = "192.168.0.195";
HuePort = 80
hueCon = Net.FHttp(HueAddress,HuePort)

HueDevice1 = 1
response = hueCon:GET('/api/'..HueUser..'/lights/'..HueDevice1);
data1 = json.decode(response).state.on
if data1 == true then data1 = " â–  " else data1 = " â–¡ " end
fibaro:call(195, "setProperty", "ui.Label1.value", data1)

HueDevice2 = 2
response = hueCon:GET('/api/'..HueUser..'/lights/'..HueDevice2);
data2 = json.decode(response).state.on
if data2 == true then data2 = " â–  " else data2 = " â–¡ " end
fibaro:call(196, "setProperty", "ui.Label1.value", data2)

HueDevice3 = 3
response = hueCon:GET('/api/'..HueUser..'/lights/'..HueDevice3);
data3 = json.decode(response).state.on
if data3 == true then data3 = " â–  " else data3 = " â–¡ " end
fibaro:call(268, "setProperty", "ui.Label1.value", data3)

HueDevice4 = 4
response = hueCon:GET('/api/'..HueUser..'/lights/'..HueDevice4);
data4 = json.decode(response).state.on
if data4 == true then data4 = " â–  " else data4 = " â–¡ " end
fibaro:call(201, "setProperty", "ui.Label1.value", data4)

HueDevice5 = 5
response = hueCon:GET('/api/'..HueUser..'/lights/'..HueDevice5);
data5 = json.decode(response).state.on
if data5 == true then data5 = " â–  " else data5 = " â–¡ " end
fibaro:call(202, "setProperty", "ui.Label1.value", data5)

HueDevice6 = 6
response = hueCon:GET('/api/'..HueUser..'/lights/'..HueDevice6);
data6 = json.decode(response).state.on
if data6 == true then data6 = " â–  " else data6 = " â–¡ " end
fibaro:call(203, "setProperty", "ui.Label1.value", data6)

HueDevice7 = 7
response = hueCon:GET('/api/'..HueUser..'/lights/'..HueDevice7);
data7 = json.decode(response).state.on
if data7 == true then data7 = " â–  " else data7 = " â–¡ " end
fibaro:call(232, "setProperty", "ui.Label1.value", data7)

HueDevice8 = 8
response = hueCon:GET('/api/'..HueUser..'/lights/'..HueDevice8);
data8 = json.decode(response).state.on
if data8 == true then data8 = " â–  " else data8 = " â–¡ " end
fibaro:call(233, "setProperty", "ui.Label1.value", data8)

HueDevice9 = 9
response = hueCon:GET('/api/'..HueUser..'/lights/'..HueDevice9);
data9 = json.decode(response).state.on
if data9 == true then data9 = " â–  " else data9 = " â–¡ " end
fibaro:call(194, "setProperty", "ui.Label1.value", data9)

status = data1
status = status ..data2
status = status ..data3
status = status ..data4
status = status ..data5
status = status ..data6
status = status ..data7
status = status ..data8
status = status ..data9

fibaro:debug(status)

fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", status)

fibaro:setGlobal("HueDevice_1", data1)
fibaro:setGlobal("HueDevice_2", data2)
fibaro:setGlobal("HueDevice_3", data3)
fibaro:setGlobal("HueDevice_4", data4)
fibaro:setGlobal("HueDevice_5", data5)
fibaro:setGlobal("HueDevice_6", data6)
fibaro:setGlobal("HueDevice_7", data7)
fibaro:setGlobal("HueDevice_8", data8)
fibaro:setGlobal("HueDevice_9", data9)

Pourriez-vous me donner un coup de main ?

Merci pour votre aide.

 

 

post-40-0-17923600-1429359991_thumb.png

  • Upvote 2
  • 3 mois après...
Posté(e)

Salut,

 

J'aimais bien ton idée de string avec des petits carrés pour montrer l'état.

Je suis reparti de ton code.

Voilà  :

 

- dans lamp, tu mets les ID de tes lampes

- dans l'adresse IP du VD, l'adresse de la base Hue

id=fibaro:getSelfId()
hueIP = fibaro:get(id, "IPAddress");
hueuser = "newdeveloper";
huePort = 80;

lamp = {1,2,3,4,5,6,7,8,9,10,11,12,13}
nblamp = 13
local strAffiche = ""

i = 1

while i <= nblamp do   
   
    huelightid=lamp[i]
    Hue = Net.FHttp(hueIP,huePort)
    response ,status, errorCode = Hue:GET('/api/'..hueuser..'/lights/'..tostring(huelightid));
   fibaro:debug(response)
   data = json.decode(response)
   
   if tostring(data.state.on) == "true" and tostring(data.state.reachable) == "true" then 
        strAffiche = strAffiche .. " â–  " 
   else 
       strAffiche = strAffiche .. " â–¡ " 
   end
  
  i = i + 1

end
 
fibaro:call(id, "setProperty", "ui.Label1.value", strAffiche)
×
×
  • Créer...