Aller au contenu
kiwi

Gestion Chauffe-Eau

Recommended Posts

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 : post-9-0-41339600-1419429627_thumb.jpg

 

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

Partager ce message


Lien à poster
Partager sur d’autres sites

×