CV-pomp schakelen met Raspberry PI

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.

uzb

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

Geef een reactie