Om de CV-pomp te kunnen schakelen heb ik gekozen voor Z-Wave. Ik wilde een Fibaro wall plug aan en uit kunnen zetten. De UZB van Z-Wave.me leek een goede optie, want goedkoop en plug and play op Raspberry PI. Je kunt het exemplaar zonder licentie kopen, omdat je niet met de Z-Way controller hoeft te interfacen. Die staat bekend als UZB1.
Plug and play
De stick kon ik meteen aansluiten en ook direct vinden met Domoticz. Dat ging dus goed. Ik ben echter eindeloos bezig geweest met het vinden van de Fibaro wall plug. Hij kon hem maar niet vinden. Dat was een beetje mijn eigen schuld. Ik had de niet zo heel duidelijke handleiding niet goed gelezen. Het is namelijk nogal belangrijk dat je de usb-stick op de goede radiofrequentie schakelt. Daarvoor is een scriptje beschikbaar. Dat scriptje moet je aanroepen met het adres van de stick en de code EU. Het adres van de stick kun je vinden op de command prompt met ‘ls /dev/ttyACM*‘. Daarna is het makkelijk. Volg gewoon de handleiding van Domoticz.
CV-pomp schakelen
Ik heb een eenvoudig script gemaakt als time-based event om de CV-pomp te schakelen. Het komt er op neer dat de pomp uit mag als hij niet hoeft te koelen of te verwarmen. Dat kun je zien aan de CV-temperatuur. Als die net boven de 20 graden zit, dan kan hij net zo goed uit. Als het water dan warmer wordt en het is bovendien buiten koud, of als het kouder wordt en het is buiten warm, dan moet hij weer aan. Net als bij het aanpassen van de stooklijn moest ik door de Netatmo bug een workaround met dummy-variabelen toepassen.
-- -- Aan en uitzetten CV-pomp op basis van temperatuur warmtepomp en buitentemperatuur -- -- commandArray = {} -- Als 1-wire devices in error of Bedrijfsstatus onbekend dan sowieso aan if (uservariables['check-temp']==0) or ((otherdevices['Bedrijfsstatus'] == "Onbekend")) then if (otherdevices['CV-pomp'] == "Off") then commandArray['CV-pomp'] = "On" commandArray['Variable:cv-pomp-even-aan']= '4' end -- Bedrijfsstatus Verwarmen elseif (otherdevices['Bedrijfsstatus'] == "Verwarmen bron") or (otherdevices['Bedrijfsstatus'] == "Verwarmen elekrisch") then -- Als de status niet is gewijzigd if uservariables['Bedrijfsstatus_oud'] == "Verwarmen" then -- Als de pomp uit is if (otherdevices['CV-pomp'] == "Off") then -- Check of even 'uit' voorbij is -- Pomp even uitschakelen als buffer nog niet vol en de retourtemperatuur stijgt if (uservariables['cv-pomp-even-uit']>0) then -- Minuut er af commandArray['Variable:cv-pomp-even-uit']= tostring(uservariables['cv-pomp-even-uit'] -1) if (otherdevices['Retour warmtepomp'] - otherdevices['Retour huis'] > 0) then -- Als retour buffer warmer dan retour huis direct weer aan voor iig 2 minuten commandArray['CV-pomp'] = "On" commandArray['Variable:cv-pomp-even-aan']= '2' end -- Als te lag uit tijdens verwarmen anders hij gewoon weer tenminste 3 minuten aan, want er wordt warm water geproduceerd else commandArray['CV-pomp'] = "On" commandArray['Variable:cv-pomp-even-aan']= '2' end -- Als de pomp aan is elseif (otherdevices['CV-pomp'] == "On") then -- water mag niet te warm voor vloerverwarming, dus dan 10 minuten uit, maar maximaal een dag -- dit is beveiliging, maar ongewenst tijdens normaal gebruik, want buffer warmt op en kan warmte niet meer kwijt zonder vloer te heet te stoken -- Als dit voorkomt, moet max waarde op de ketel met 1 graad omlaag if (otherdevices['Aanvoer huis']-uservariables['aanvoer-huis-max']>0) then commandArray['CV-pomp'] = "Off" commandArray['Variable:cv-minutenteller']= '1440' commandArray['Variable:cv-pomp-even-uit']= '9' commandArray['SendNotification']='Watertemperatuur CV te hoog voor vloerverwarming!' -- Check of even 'aan' voorbij is elseif uservariables['cv-pomp-even-aan']>0 then -- Nog niet dan minuut er af commandArray['Variable:cv-pomp-even-aan']= tostring(uservariables['cv-pomp-even-aan'] -1) -- Pomp even uitschakelen als water te warm terugkomt, rond pompen heeft geen zin als er geen warmte wordt afgegeven, maar niet langer dan dag (1440 minuten) -- elseif (otherdevices['Aanvoer huis'] - otherdevices['Retour huis'] <= uservariables['aanvoer-retour-verschil']) then -- commandArray['CV-pomp'] = "Off" -- commandArray['Variable:cv-minutenteller']= '1440' -- commandArray['Variable:cv-pomp-even-uit']= '2' -- Pomp even uitschakelen als buffer nog niet vol en de retourtemperatuur stijgt elseif (otherdevices['Retour warmtepomp'] - otherdevices['Retour buffer'] > uservariables['retour-verschil-buffer-wp']) then commandArray['CV-pomp'] = "Off" commandArray['Variable:cv-minutenteller']= '1440' commandArray['Variable:cv-pomp-even-uit']= '9' end end -- Als verwarmen net gestart, dan sowieso 5 minuten aan, als de pomp tenminste uit was elseif (otherdevices['CV-pomp'] == "Off") then commandArray['CV-pomp'] = "On" commandArray['Variable:cv-pomp-even-aan']= '4' end -- En nog even de status op verwarmen zetten if uservariables['Bedrijfsstatus_oud']~='Verwarmen' then commandArray['Variable:Bedrijfsstatus_oud']= 'Verwarmen' end -- Bedrijfsstatus Koelen elseif (otherdevices['Bedrijfsstatus'] == "Koelen") then -- Bij koelen moet pomp altijd aan, als hij uit stond if (otherdevices['CV-pomp'] == "Off") then commandArray['CV-pomp'] = "On" commandArray['Variable:cv-pomp-even-aan']= '4' end -- En de status is Koelen if uservariables['Bedrijfsstatus_oud']~='Koelen' then commandArray['Variable:Bedrijfsstatus_oud']= 'Koelen' end -- Niet verwarmen of koelen, ofwel anders else -- Als de pomp uit is if (otherdevices['CV-pomp'] == "Off") then -- Check 'even uit' voorbij is if uservariables['cv-pomp-even-uit']>0 then -- Met 1 minuut bekorten commandArray['Variable:cv-pomp-even-uit']= tostring(uservariables['cv-pomp-even-uit'] -1) -- Pomp aanschakelen als CV-water voldoende warm en buitentemperatuur laag (verwarmen uit buffer). Koelen uit buffer komt niet voor, dus hoeft niet gechecked. elseif ((otherdevices['Aanvoer huis'] - uservariables['CV-pomp-bandbreedte-boven'] > 0) and (uservariables['buiten_temp_dummy'] <=uservariables['CV-pomp-buiten-onder'])) then -- Pomp 5 minuten aan commandArray['CV-pomp'] = "On" commandArray['Variable:cv-pomp-even-aan']= '4' -- En anders gewoon uit laten als er nog geen dag voorbij is elseif uservariables['cv-minutenteller']>0 then -- Maar wel met minuutje bekorten commandArray['Variable:cv-minutenteller']= tostring(uservariables['cv-minutenteller'] -1) -- Na een dag weer aanzetten voor 5 minuten, om de pomp niet vast te laten roesten elseif uservariables['cv-minutenteller']==0 then commandArray['CV-pomp'] = "On" commandArray['Variable:cv-pomp-even-aan']= '4' end -- Als de pomp aan is elseif (otherdevices['CV-pomp'] == "On") then -- Check of de 5 minuten 'aan' voorbij zijn if uservariables['cv-pomp-even-aan']>0 then -- Zo niet, minuutje er af commandArray['Variable:cv-pomp-even-aan']= tostring(uservariables['cv-pomp-even-aan'] -1) -- Pomp uitschakelen als water kamertemperatuur heeft, minimaal 5 minuten, maximaal 1 dag elseif ((otherdevices['Aanvoer huis'] - uservariables['CV-pomp-bandbreedte-onder'] >= 0.5) and (otherdevices['Aanvoer huis'] - uservariables['CV-pomp-bandbreedte-boven'] <= -0.5 )) then commandArray['CV-pomp'] = "Off" commandArray['Variable:cv-minutenteller']= '1440' commandArray['Variable:cv-pomp-even-uit']= '4' -- Pomp even uitschakelen als water te warm terugkomt elseif (otherdevices['Aanvoer huis'] - otherdevices['Retour huis'] <= uservariables['aanvoer-retour-verschil']) and (otherdevices['Aanvoer huis']-uservariables['CV-pomp-bandbreedte-boven'] > 0) then commandArray['CV-pomp'] = "Off" commandArray['Variable:cv-minutenteller']= '1440' commandArray['Variable:cv-pomp-even-uit']= '4' end end -- Bedrijfsstatus Anders if uservariables['Bedrijfsstatus_oud']~='Anders' then commandArray['Variable:Bedrijfsstatus_oud']= 'Anders' end end return commandArray |