Zie ook de specifieke pagina over Verwarming Sturingen
Nu 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