Sturing van de radiatoren

Zie ook de specifieke pagina over Verwarming Sturingen

Schermafdruk 2016-03-16 14.12.43Nu mijn radiatoren uitgerust zijn met de Danfoss LC-13, moeten deze ook aangestuurd worden door de Home Center 2. Eerst heb ik de standaard functionaliteit van de Home Center 2 (het “Heating Panel”) bekeken, maar naar mijn gevoel is dit toch te beperkend of te ingewikkeld om aan te passen naar mijn wens.

De bedoeling was om per kamer de aansturing van de thermostatische radiatorkop op de verwarming te laten afhangen van een aantal globale omgevingsvariabelen en sensorwaarden. Het concept dat ik hierrond bedacht heb gaat uit van

  • een (scene) regeling per kamer, die de juiste temperatuurinstelling van de kop bepaalt, afhankelijk van die variabelen en sensoren die daar nodig zijn, en die instelling doorstuurt naar het device indien nodig
  • een centrale scene die om de 10 minuten alle verschillende kamer-regelingen aanroept om indien nodig de instellingen aan te passen. Verder wordt deze ook geactiveerd door veranderingen in de (globale) variabelen

De centrale scene

Deze ziet er als volgt uit: (in basisversie)

--[[
%% autostart
%% properties
%% events
%% globals
--]]

local heatsetids={30}

while true do
  fibaro:debug("Running scene at: "..os.date())
  for i=1,#heatsetids do
    fibaro:startScene(heatsetids[i])
  end
  fibaro:sleep(10*60*1000)
end

Een scene per kamer

(hier badkamer)

--[[
%% properties
%% events
%% globals
--]]

local iemandthuis=tonumber(fibaro:getGlobalValue("G_IemandThuis"))
local tempbuiten=tonumber(fibaro:getGlobalValue("G_TempBuiten"))

local heaterid=98 --id van de thermostaatkop
local buitenwarmtemp=16 --temperatuur buiten zonder verwarming
local errortemp=18

--per "soort" een scrn : vanuut,vanminuut,totuur,totminuut,setvalue
-- voor een normale weekdag
local thuisweekdag={
  {0,0,6,0,18},
  {6,1,8,30,21},
  {8,31,15,30,18},
  {15,31,17,00,20},
  {17,01,18,30,21},
  {18,31,23,00,20},
  {23,01,23,59,18}
  }

local thuisweekenddag={
  {0,0,6,0,18},
  {6,1,8,30,21},
  {8,31,17,30,20},
  {17,31,18,30,21},
  {18,31,23,00,20},
  {23,01,23,59,18}
  }

local nietthuis={
  {0,0,17,30,18},
  {17,31,20,30,19},
  {20,31,23,0,20},
  {23,01,23,59,18}
  }

local buitenwarm={
  {0,0,23,59,16}
  }

local parsetemp=nietthuis
local schemaName="nietthuis"

if (tempbuiten>=buitenwarmtemp) then
  parsetemp=buitenwarm
  schemaName="buitenwarm"
elseif (iemandthuis==0) then
  parsetemp=nietthuis
  schemaName="nietthuis"
elseif ((tonumber(os.date("%w"))~=0) and (tonumber(os.date("%w"))~=6)) then
  parsetemp=thuisweekdag
  schemaName="thuisweekdag"
else
  parsetemp=thuisweekenddag
  schemaName="thuisweekenddag"
end

fibaro:debug("Selected Schema: "..schemaName)

local time=tonumber(os.date("%H"))*60+tonumber(os.date("%M"))
local setlevel=errortemp
local levelttl=0

for i=1,#parsetemp do
  local mintime=parsetemp[i][1]*60+parsetemp[i][2]
  local maxtime=parsetemp[i][3]*60+parsetemp[i][4]
  if ((time>=mintime) and (time<maxtime)) then
    setlevel=parsetemp[i][5]
    levelttl=(maxtime-time-1)
  end
end

fibaro:debug("Selected Temp: "..setlevel.." for: "..levelttl.." minutes")

local currentlevel=tonumber(fibaro:getValue(heaterid,"value"))
if (currentlevel~=setlevel) then
  fibaro:call(heaterid,"setTargetLevel",setlevel)
  fibaro:call(75, "setProperty", "ui.Label1.value", "HeatSteering")
  fibaro:call(75, "setProperty", "ui.Label2.value", "Updating Heater "..fibaro:getName(heaterid).." Time: "..os.date().." to: "..setlevel)
  fibaro:call(75, "setProperty", "ui.Label3.value", "INFORMATIONAL")
  fibaro:call(75, "pressButton", "3")   
  fibaro:sleep(100)
  fibaro:debug("Current setLevel: "..currentlevel.." new level: "..setlevel)
  fibaro:call(heaterid,"setTime",tonumber(os.time(t))+levelttl*60)
end

Een reactie achterlaten

Je e-mailadres zal niet getoond worden. Vereiste velden zijn gemarkeerd met *

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

Translate »