-- Scène déclenchée tous les jours à 5h00 (Onglet Horaires) -- Affiche les Devices dont le niveau de batterie est inférieur à 100% -- sur un VContainer (5 lignes possibles) ---------------------------------------------------------------------- -- Fonction pour un tri Ascendant du Tableau function compare(a,b) return a.Bat < b.Bat end -- local SID_Ha = "urn:micasaverde-com:serviceId:HaDevice1" local SID_Vc = "urn:upnp-org:serviceId:VContainer1" local VarBat = "BatteryLevel" -- Initialisation des Tableaux de travail local Table_EE = {} local Table_EE1 = {} local EE = {} -- Initialisation du Tableau des Devices contenant des Batterie local Dev = {} local Dev = {BRI_CAP_ST814, SEC_CAP_FUMEE, SEC_ACT_SIRENE, SEC_CAP_PORTE_ENTREE, SEC_CAP_CUISINE, SEC_CAP_SALON_TV, SEC_CAP_SALON, SEC_CAP_BRIGITTE, SEC_CAP_CDE_ALARME, SEC_CAP_ANAIS, SEC_CAP_CEDRIC, SEC_CAP_AUVENT} -- -- Boucle pour lire les devices et constituer un TaBleau {Id,Niveau Batterie) -- for i,v in ipairs(Dev) do local TempId = v local NivBat = luup.variable_get(SID_Ha, VarBat, v) EE = {Id=TempId, Bat=tonumber(NivBat)} table.insert(Table_EE,i,EE) end -- -- tri du tableau croissant par niveau de batterie -- Table_EE1= table.sort(Table_EE,compare) -- -- Affichage Dans le VContainer 2x5 variables, On n'affiche que les devices dont le -- niveau batterie <100% au maximum sur les 5 lignes permises -- for i,v in ipairs(Table_EE) do local Bat = tonumber(v.Bat) local NomId = luup.devices[v.Id].description NomId = v.Id .. "-" .. NomId local Var = "Variable" .. i local VarName = "VariableName" .. i for i = 1 , 5 do if Bat < 100 then luup.variable_set(SID_Vc, Var, Bat .. "%", VMOD_CONT_PILE) luup.variable_set(SID_Vc,VarName,NomId,VMOD_CONT_PILE) else luup.variable_set(SID_Vc, Var, "", VMOD_CONT_PILE) luup.variable_set(SID_Vc,VarName,"",VMOD_CONT_PILE) end end end --