@ebtjjnSalut. Bon ça ne veut pas fonctionner. J'ai copié le code plus haut, changé les paramètres et rien n'y fait. La scène se lance mais la pompe ne se déclenche pas. Les variables sont créés (1 x prédéfinie et 3 x globales) ainsi que les notifications. J'ai vérifié tous mes ID (pompe, thermomètre etc...). Je met le code pour vérification.
--[[
%% autostart
%% properties
%% events
%% globals
--]]
--****************************************
--*************PARAMETRAGE****************
local id_pompe = 570
local id_tel = 590 -- 13= tél JJ : téléphone sur lesquel envoyer une notif push (start et stop)
local id_eau = 587
--****************************************
--****************************************
local sourceTrigger = fibaro:getSourceTrigger();
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
function tempFunc() --fonction de filtration en ETE
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "10:30") )
)
then
fibaro:debug("Je filtre");
fibaro:call(id_pompe, "turnOn");
fibaro:setGlobal("modefiltration", 1)
fibaro:call(id_tel, "sendDefinedPushNotification", "566");
fibaro:sleep(3600*2*1000)
-- au bout de 2 heures, prise de température pour gestion auto du nbe d'heures à filtrer selon temp de l'eau
local temppiscine = fibaro:getValue(id_eau, "value")
fibaro:setGlobal('tempref',temppiscine)
-- test de la température : si > 27, filtration sur 22h30 de plus (=23h30 au total) sinon, règle BAROUDI
if tonumber(temppiscine) > 27 then
fibaro:debug("T° eau piscine > 27 ==> filtration continue")
fibaro:setGlobal("modefiltration", 8)
fibaro:call(id_tel, "sendDefinedPushNotification", "568");
local nbheuresafiltrer = 22,5 * 3600 * 1000
else
fibaro:debug("T° eau piscine = " ..temppiscine .. " °C")
local temppiscinearrondi = math.floor(tonumber(temppiscine)+ .5)
local nbheuresafiltrerenh = ((tonumber(temppiscinearrondi)/2)-2)
fibaro:debug("nb heures a filtrer = " .. nbheuresafiltrerenh)
local nbheuresafiltrer = nbheuresafiltrerenh *3600 * 1000
-- on définit la variable dureefiltration = nb d'heures à filtrer
fibaro:setGlobal("dureefiltration", nbheuresafiltrer)
end
fibaro:debug("Valeur de la variable _dureefiltration_ : "..fibaro:getGlobalValue("dureefiltration"));
fibaro:sleep(tonumber(fibaro:getGlobalValue("dureefiltration"))-(3600*2*1000));
if fibaro:getGlobalValue("modefiltration") == "12" then
fibaro:debug("Fin du mode auto mais CHOC déjà en cours")
else
fibaro:debug("Fin du timer, j\'arrête de filtrer");
fibaro:setGlobal("dureefiltration", 0)
fibaro:call(id_pompe, "turnOff");
fibaro:setGlobal('tempref', 99)
fibaro:setGlobal("modefiltration", 0)
fibaro:call(id_tel, "sendDefinedPushNotification", "567");
end
end
setTimeout(tempFunc, 60*1000)
end
if fibaro:getGlobalValue("Saison") == "Eté" then --je filtre en mode ETE
fibaro:debug("c\'est l\'été, cool !! :-)")
tempFunc()
else
local temppiscine = fibaro:getValue(id_eau, "value")
fibaro:debug("c\'est l\'hiver...!! :-(")
-- test de la température : si < 2, filtration sur 24h, sinon 2h de 4h à 6h du mat
if tonumber(temppiscine) < 2 then
fibaro:debug("T° eau piscine < 2 ==> filtration continue")
fibaro:call(id_tel, "sendDefinedPushNotification", "568");
--local nbheuresafiltrer = 23,5 * 3600 * 1000
fibaro:call(id_pompe, "turnOn");
fibaro:setGlobal('tempref', temppiscine)
fibaro:debug("Je filtre en continu");
fibaro:setGlobal("modefiltration", 8)
fibaro:sleep(23,5*3600*1000)
fibaro:call(id_pompe, "turnOff");
fibaro:setGlobal("dureefiltration", 0)
fibaro:setGlobal('tempref', 99)
fibaro:debug("Fin du timer, j\'arrête de filtrer");
fibaro:call(id_tel, "sendDefinedPushNotification", "567");
fibaro:setGlobal("modefiltration", 0)
--end
elseif ( --à 4h du matin, j'active la filtration
( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "04:00") )
) then
-- s'il y a un CHOC en cours --> priorité au CHOC : je ne fais rien. Sinon, je filtre 2h.
fibaro:debug("je filtre en mode HIVER")
if fibaro:getGlobalValue("modefiltration") == "12" then
fibaro:debug("CHOC déjà en cours : la durée de filtration est celle définie par le CHOC")
elseif
fibaro:getGlobalValue("EdfTempoJour") == "1" then
fibaro:call(id_pompe, "turnOn");
fibaro:debug("Je filtre");
fibaro:setGlobal("modefiltration", 1)
fibaro:call(id_tel, "sendDefinedPushNotification", "566");
fibaro:sleep(1.9*3600*1000)
fibaro:debug("Fin du timer, j\'arrête de filtrer");
fibaro:call(id_pompe, "turnOff");
fibaro:setGlobal("modefiltration", 0) --je ne teste pas s'il ya un CHOC en cours : il faudrait l'avoir déclenché entre 4h et 6H du matin...
fibaro:call(id_tel, "sendDefinedPushNotification", "567");
end
end
end