Aller au contenu

Eteindre piece en Lua


Messages recommandés

Posté(e)

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.

Posté(e)

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.

 

Posté(e)

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.

Posté(e)

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
Posté(e)

@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
Posté(e)

@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.

Posté(e)

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
×
×
  • Créer...