kiwi Posté(e) le 24 décembre 2014 Signaler Posté(e) le 24 décembre 2014 Bonjour, Comme dans un autre sujet on parle de Chauffe-eau, je mets içi mon script LUA qui m'as permis de faire baisser en 2013-2014 la consommation électrique "heures-creuses" de la maison. Il faut aussi noter les prérequis : Chauffe-eau récent (environ 10ans) Chauffe-eau dans un local fermé (nouvelles normes... normalement les maisons récentes ont ça) Contacteur de mise en marche en Heures Creuses (vous pouvez ne pas avoir d'heures creuses, dans ce cas vous devez vous procurer un contacteur jour-nuit) Un module relais compatible 220V (Fibaro, Qubino). Normalement votre installation électrique ressemble à ça : Il faut donc ajouter en coupure sur le fil rouge un relais, typiquement a la sortie phase (rouge) du disjoncteur 2A qui vas vers le compteur. J'ai fais ca avec FGS221 avec l'un des 2 contacts (l'autre est utilisé pour autre chose), ce module est donc pour mon exemple le 174. Il vous faut une variable globale que j'ai nommé ChauffeEau. Le nombre de jour sans chauffe est a mettre içi : local nod-4; Puis vous pouvez lancer le code suivant dans le scheduler (j'ai mis ca WinterNormal et SummerNormal, puisque en vacances on utilise pas l'eau chaude) : -- Chauffe-eau -- Scene de gestion de chauffe-eau luaDaySchedule:add("22:45","84", "" , "startScene", {"All"} ,false) -- Chauffe-eau : Off tous les jours luaDaySchedule:add("05:00","174", "turnOff" , "call", {"All"}, false) Voici le code : --[[ %% properties %% globals ChauffeEau --]] local debug=true; -- Debug or not local activator=174; -- ID of the ECS activator local globalvarce="ChauffeEau"; -- Name of Global Variable for ECS local nod = 4; -- Number of days between 2 ECS heating -- Avoid multiple launch of this scene if (fibaro:countScenes()>1) then fibaro:debug("Second instance killed"); fibaro:abort(); end -- Function function mydebug(string) if (debug) then fibaro:debug(string); end end -- Code local currenttime = os.time(); --local ce,tsmod = fibaro:getGlobal(globalvarce); local ce = fibaro:getGlobal(globalvarce); local tsmod = tonumber(ce); -- security if (nod <= 0) then fibaro:debug("Variable 'nod' should >= 1 : ABORTING"); fibaro:abort(); end -- Calculating if we have to heat or not local nodts = (nod * 86400) - 3600; -- Remove one hour in case local noddif = currenttime - tsmod; mydebug("Time is "..currenttime); mydebug("Global var ("..globalvarce..") is : ".. ce .. " TS is : "..tsmod); mydebug("Diff in seconds " .. noddif .. " (hours = ".. (noddif / 3600) ..")"); if ((tsmod+nodts) > currenttime) then mydebug("No need to heat, wait for next execution"); else mydebug("We need to heat, start the heating contactor..."); fibaro:setGlobal(globalvarce,currenttime); fibaro:call(activator, 'turnOn'); end Have fun.(A noter que dans ce code j'aurais pu utiliser le timestamp de la variable pour savoir si je peux déclencher le chauffe-eau, mais hélas, et ca doit être un bug le timestamp de la variable global est remise a la variable du reboot de la HC2 en cas de reboot, donc ça peux faire un fail...)
Messages recommandés