Aller au contenu
yoim

Eteindre piece en Lua

Recommended Posts

Qq un connaitrait le code Lua pour eteindre et allumer une piece ?

 

Merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

comme ça à froid...

 

je dirais, tu fais une scène, que tu peux démarrer quand tu veux, avec un passage d’arguments, qui selon ce dernier, va tout allumer ou tout éteindre...

 

Mais une commande unique qui fait ça, je sais pas si ça existe.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah ok

 

Sinon j'allais mettre tout mes modules de ma piece dans une scene ... mais bon vu que sur le dashboard j'ai une option pour éteindre une piece precise, je pensais que en Lua on aurait une commande.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Je viens de regarder la page Web dont tu parles, et il fait autant de turnOn ou TurnOff qu'il y a de lumières dans la pièce.

Donc il n'y a pas d'API directe, il faut que tu crées une boucle qui identifie tous les modules de type light de ta pièce, puis réalise l'action désirée pour chacun.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour bonjour,

 

Passage un peu tardif ;-)

Voila ce qui est fait das GEA si ca peut t'aider

 

En gros :

 - récupérer l'id de la pièce (ici room.id)

- boucler sur toutes les lumieres de la pièce et action souhaitée sur chacune d'entre elles

 

Comme te l'a précisé @Lazer

 

 local rooms = api.get("/rooms")
 for _, room in pairs(rooms) do
 	if (room.name:lower() == roomName:lower()) then
    	for _, device in pairs(api.get("/devices?type=com.fibaro.philipsHueLight&roomID="..room.id)) do fibaro:call(device.id, action) end              
        for _, device in pairs(api.get("/devices?property=[isLight,true]&roomID="..room.id)) do fibaro:call(device.id, action) end
     end
end

 

  • Like 1
  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@yoim, moi j'utiliserais bien la méthode callGroupAction ;)

 

local data = 
{
  enabled = true,
  visible = true,
  roomID = 1,
  properties = {
    --dead = false, -- option
    isLight = true
  },
  interfaces = {
    "light"
    }
}

local devices = fibaro:getDevicesId(data)
print(json.encode(devices))

for k,v in ipairs(devices) do
 print (fibaro:getRoomName(fibaro:getRoomID(v)) .. " " .. fibaro:getName(v))
end

 

Il faut mettre l'id de ta pièce pour le roomID.

 

Si c'est concluant dans ton debug alors il faudra juste remplacer le fibaro:getDevicesI(data) par fibaro:callGroupAction("turnOff", data)

 

:)

 

  • Like 2
  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@Krikroff

 

L'idée est interessante, mais ca m'eteint tout :( toutes les rooms et meme si ce n'est pas des lumieres. Ca vient de crier a la maison :D

 

--[[
%% properties
%% events
%% globals
--]]

local data = 
{
  enabled = true,
  visible = true,
  roomID = 616,
  properties = {
    --dead = false, -- option
    isLight = true
  },
  interfaces = {
    "light"
    }
}

--local devices = fibaro:getDevicesId(data)

local devices = fibaro:callGroupAction("turnOff", data)
print(json.encode(devices))

for k,v in ipairs(devices) do
 print (fibaro:getRoomName(fibaro:getRoomID(v)) .. " " .. fibaro:getName(v))
end

Dans mon debug j'ai ca :

[DEBUG] 22:11:24: [3,4,5,6,7,24,41,42,43,44,47,48,49,50,51,52,53,54,55,72,74,75,76,77,78,79,80,81,82,89,93,94,95,98,99,102,103,104,105,106,107,111,112,113,114,115,116,117,123,125,128,129,130,131,132,133,134,135,136,137,138,153,157,158,159,160,161,162,163,166,172,175,177,178,179,180,181,182,183,184,185,186,187,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,215,216,217,218,219,222,223,230,231,232,234,235,236,237,238,239,240,241,242,243,244,245,246,247,252,266,267,269,276,277,278,279,280,281,282,283,284,285,300,301,302,303,304,306,314,315,316,317,318,319,320,321,322,323,324,325,326,327,337,338,339,340,341,342,353,361,362,363,364,365,366,367,368,371,372,373,374,375,376,384,385,386,387,388,389,390,391,392,403,404,405,406,472,473,474,475,479,480,484,485,486,487,488,491,492,493,498,499,500,501,521,522,523,524,533,534,537,538,541,542,543,544,550,551,552,553,554,556,595,596,606,613,615,616,617,618,619,620,621,622,623,624,630,631,632,633,634,635,636,637,642,647,648,649,650,653,654,655,656,657,658,680,684,685,687,689,690,691,694,695,696,697,698,699,702,703,704,705,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,729,730,731,732,733,734,749,750,751,752,753,754,756,757,772,773,774,775,776,777,778,779,780,781,782,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820]
[DEBUG] 22:11:24: JARDIN YR Weather
[DEBUG] 22:11:24: 2020-01-30 22:11:24.615561 [ fatal] Unknown exception: /opt/fibaro/scenes/325.lua:27: attempt to concatenate a nil value

Alors que quand je faisais le 

local devices = fibaro:getDevicesId(data)

Ca me sortait bien juste mes modules de la Room.

Partager ce message


Lien à poster
Partager sur d’autres sites

tu es sur quelle version, la dernière stable ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Punaise , j’essaierai demain.
Et désolé pour les hurlements !

  • Haha 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Pas de soucis. Avec la HC2, ce sont des choses qui arrivent. :D

 

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Je pense que ceci devrait faire l'affaire

fibaro:callGroupAction("turnOff", {
   args = { 1 },
   filters =
   {
      {
         filter = "deviceID",
         value = fibaro:getDevicesId({
          enabled = true, 
          roomID = 616, 
          properties = {
            isLight = true
          }
        })
      }
   }
})

:)

  • Like 2
  • Thanks 1
  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Sympa le callGroup :-)

Envoyé de mon BND-L21 en utilisant Tapatalk

  • Haha 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×