Hierbij de code die ik voor elk van de verwarmingen apart heb aangegeven. Per kamer heb je zo een scene nodig om de radiatoren van die kamer juist aan te sturen.
--[[ %% properties %% events %% globals --]] local heaterid=133 --id of the thermostatic valve local heaterfloor="gelijkvloers" -- for logging local heaterroom="living" -- for logginh local extopen1=56 --id of the external door/window sensor local extopen2=189 --id of the external door/window sensor local extopen3=0 --id of the external door/window sensor local exttemp=196 --id of the external temperature sensor local extmotion=149 --id of the external motion detector local extmanplus=37 --id of the external heat switch +1 degrees local buitenwarmtemp=19 --temperatuur outside with heating off local errortemp=18 local iemandthuis=tonumber(fibaro:getGlobalValue("G_IemandThuis")) local tempbuiten=tonumber(fibaro:getGlobalValue("G_TempBuiten")) --per "soort" een scrn : vanuut,vanminuut,totuur,totminuut,setvalue -- voor een normale weekdag local thuisweekdag={ {0,0,6,0,18}, {6,1,20,0,20}, {20,1,22,0,21}, {22,1,23,0,20}, {23,1,23,59,18} } local thuisweekenddag={ {0,0,6,0,18}, {6,1,23,0,20}, {23,1,23,59,18} } local nietthuis={ {0,0,17,0,18}, {17,1,18,0,19}, {18,1,19,00,20}, {19,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 if (extopen1~=0) then if (tonumber(fibaro:getValue(extopen1,"value"))==1) then parsetemp=buitenwarm schemaName="verluchtingopen" end end if (extopen2~=0) then if (tonumber(fibaro:getValue(extopen2,"value"))==1) then parsetemp=buitenwarm schemaName="verluchtingopen" end end fibaro:debug("T ext.:"..tempbuiten.."; Selected Schema: "..schemaName) local time=tonumber(os.date("%H"))*60+tonumber(os.date("%M")) local setlevel=errortemp local levelttl=0 local logtotime="--:--" 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 (timetonumber(fibaro:getValue(exttemp,"ui.curtemp.value"))) then fibaro:setGlobal("G_KetelWarmte",1) fibaro:debug("Demanding Boiler Heat: "..setlevel.." requested "..fibaro:getValue(exttemp,"ui.curtemp.value").." measured") end end fibaro:debug("Selected Temp: "..setlevel.." for: "..levelttl.." minutes until "..logtotime) local currentlevel=tonumber(fibaro:getValue(heaterid,"value")) if (currentlevel~=setlevel) then fibaro:call(heaterid,"setTargetLevel",setlevel) fibaro:debug("SETTING - Current setLevel: "..currentlevel.." new level: "..setlevel) fibaro:call(heaterid,"setTime",tonumber(os.time(t))+levelttl*60) end
ik vraag me af of dit niet makkelijker kan. Ik heb ook fibaro, temperatuursensoren in de kamers en een aantal van die gekoppelde thermostaatknoppen. Nog niet aan elkaar gekoppeld want pas geïnstalleerd, maar is daarvoor echt zoveel code nodig?
Als je de basis functionaliteit voor verwarming wil, kan je de Heating panels van Fibaro inderdaad gebruiken zonder te coden.
Ondertussen heb ik schema’s waarbij de temperatuur afhankelijk is van ramen of deuren die open staan, verluchtingen die actief werken, bewegingsdetectoren die controleren of er iemand in huis is etc. Dit kan niet met de basisschema’s en dan ben je aangewezen op programmeren in LUA…