--[[
%% globals
SoleilLever
SoleilCoucher
%% properties
179 value
--]]
local mesvolets ={
["Volet Ch Parents"] = 117,
["Volet CH Lily"] = 108,
["Baie 1"] = 73,
["Baie 2"] = 75,
["Volet 3"] = 77,
["Volet Bureau"] = 28,
}
-- Table Zone (Groupes de modules)
local text = {"bb"}
local RDC = {"Volet Bureau", "Baie 1", "Volet 3"}
local Etage = {"Volet CH Lily", "Volet Ch Parents"}
--------------------------------------------------------------------------
local nomLever = "SoleilLever" --> Nom de la Variable Globale lever soleil
local nomCoucher = "SoleilCoucher" --> Nom de la Variable Globale coucher soleil
--local Heure = "Heure" --> Nom de la variable globale Heure
--local JourChome = fibaro:getGlobalValue("JourChome") --> Nom de la variable Module Virtuel Hansloo
local IdTel = fibaro:getGlobalValue("IdTel") -- Recuperation de id du tel pour le push
local JourNuit = fibaro:getGlobalValue("Jour_Nuit")
--------------------------------------------------------------------------
local Pause = 0 -- Temp de pause entre chaque commande de modules en seconde
----------------------------------------------------------------------
-- Envoi d'un Push pour avertir que le box àdémarrer ou redémarrer --
----------------------------------------------------------------------
function EnvoiPush(Message)
fibaro:debug("Envoi Push : "..Message)
if Idtel ~= nil then
fibaro:call(IdTel, "sendPush", Message)
else
fibaro:debug("Il n'y a aucun tel enregistré")
end
end
-----------------------------------------------------------------------
-- Test si la valeur a enoyer est différente de la valeur du module
-----------------------------------------------------------------------
function testvaleur(id, valeurs)
local GetValeur = tonumber(fibaro:getValue(id, "value"))
if valeurs ~= GetValeur then
fibaro:call(id, "setValue", valeurs)
--fibaro:debug(id.." - action en cours... - Valeur "..valeurs)
fibaro:sleep(Pause*1000)
end
end
----------------------------------------------------------------------------
-- Recupération de l'id par rapport au nom de la tables mesvolets
----------------------------------------------------------------------------
function volets(zone, valeurs)
if (type(zone) == "table") then
local messages = "Les "..#zone.." Volets : "
for i,v in ipairs(zone) do
messages = (messages..v..", ")
local id = mesvolets[v]
if id == nil then
fibaro:debug("ERREUR NOM DU VOLET - "..v.." - dans une table")
EnvoiPush("ERREUR NOM DU VOLET - "..v.." - dans une table")
else
testvaleur(id, valeurs)
end
end
messages = (messages.."ont été actionnés à"..valeurs.."%")
EnvoiPush(messages)
elseif (type(zone) == "string") then
local id = mesvolets[zone]
if id == nil then
fibaro:debug("ERREUR DANS LE NOM DU VOLET : "..zone)
EnvoiPush("EERREUR DANS LE NOM DU VOLET : "..zone)
else
testvaleur(id, valeurs)
EnvoiPush("Le volet : "..zone.." a été actionné à"..valeurs.."%")
end
else
fibaro:debug("Erreur......")
EnvoiPush("Erreur......")
end
end
--------------------------------------------------------------------
-- test si le déclencheur est lever ou coucher du soleil
--------------------------------------------------------------------
function Test(zone, valeurs, minutes)
if zone ~= nil then
if minutes == nil then;
minutes = 0
end
volets(zone, valeurs)
else
fibaro:debug("Erreur dans la table ou table inéxitante")
EnvoiPush("Erreur dans la table ou table inéxitante")
end
end
--------------------------------------------------------------------
-- test Lever
--------------------------------------------------------------------
function lever(zone, valeurs, minutes, Jchome)
if nomTrigger == nomLever and valeurTrigger == minutes then
if Jchome == JourChome or Jchome == nil then
Test(zone, valeurs, minutes)
end
end
end
--------------------------------------------------------------------
-- test Coucher
--------------------------------------------------------------------
function coucher(zone, valeurs, minutes, Jchome)
if nomTrigger == nomCoucher and valeurTrigger == minutes then
if Jchome == JourChome or Jchome == nil then
Test(zone, valeurs, minutes)
end
end
end
--------------------------------------------------------------------
-- test Heure
--------------------------------------------------------------------
function heure(zone, valeurs, minutes, Jchome)
if nomTrigger == Heure and valeurTrigger == minutes then
if Jchome == JourChome or Jchome == nil then
Test(zone, valeurs, minutes)
end
end
end
--------------------------------------------------------------------------
-- Demarrage du programme
--------------------------------------------------------------------------
local trigger = fibaro:getSourceTrigger()
if (trigger['type'] == 'global') then
nomTrigger = trigger['name']
valeurTrigger = tonumber(fibaro:getGlobalValue(nomTrigger))
print("Nom du déclencheur = ", nomTrigger, " - Minutes : ", valeurTrigger)
elseif (trigger['type'] == 'property') then
if JourNuit == "Nuit" then
if tonumber(fibaro:getValue(179, "value")) == 0 then
testvaleur("Baie 2", 0)
end
end
fibaro:abort();
else
fibaro:debug("La scéne ne peut être lancer que par une Variable Globale")
fibaro:abort();
-- nomTrigger = "SoleilCoucher"
-- valeurTrigger = -5
end
-------------------------------------------------------------------------
-- Ne rien modifier au dessus de cette ligne
-------------------------------------------------------------------------
-- Commandes a écrit pour lever du soleil
-- lever (Funtion qui traite le lever du soleil
-- coucher(zone, valeur, minutes)
-- exemple pour actionné les volets de la table Rue a 80% 10 minutes avant le lever
-- lever(Rue, 80, -10)
-- exemple pour actionné le volet "Bureau" au lever du jour
-- lever("Bureau", 99, 0)
-- Pour actionner un volet au coucher du soleil
-- Il faut remplacer lever par coucher
-- ex : coucher(Rue, 0, 20)
------------------------------------------------------------------------
-- Vous pouvez entrer vos commande en dessous de cette ligne
------------------------------------------------------------------------
-- si Baie 2 fermer alors fermer volet
if tonumber(fibaro:getValue(179, "value")) == 0 then
coucher("Baie 2", 0, -5)
end -- fin test baie 2 fermer
coucher(Etage, 0, 10)