open door heat loss

Iedereen met kleine kinderen kent het probleem: Kinderen die vergeten de buitendeur dicht te doen, waardoor er onnodig gestookt wordt. Ook hier in huis hebben we dit probleem. Terwijl het buiten koud is laten de kinderen de keukendeur openstaan als ze in de tuin gaan spelen. Niet alleen loopt alle warmte uit het huis, maar de verwarming gaat ook nog eens harder stoken om het toch weer warm te krijgen.

Zo kwam ik op het idee om de verwarming eens wat slimmer te maken, waardoor hij stopt met stoken op het moment dat onze keukendeur te lang open staat. De domotica in ons huis draait op Domoticz en de verwarming wordt aangestuurd door een Nest Thermostaat. Het enige dat ik nog nodig had, was een manier om te detecteren of de keukendeur open stond. Hiervoor heb ik een zWave deursensor aangeschaft. Deze sensor werkt op een batterijtje (dat zo’n anderhalf jaar meegaat) en communiceert draadloos met het Domotica-systeem.

Ik heb gekozen voor de deursensor van Neo Coolcam. Deze is bestaat uit twee delen. Eén breng je aan op de deur en het andere deel breng je aan op het kozijn. Hiervoor kun je de meegeleverde schroefjes of dubbelzijdige tape gebruiken. Neo Coolcam door sensorBinnen 5 minuten zit de sensor op je deur en heb je hem gekoppeld aan Domoticz. Het is echt supereenvoudig!

Bij het schakelen van de verwarming wil ik ook graag rekening houden met de buitentemperatuur. Hiervoor heb ik de API van Weather Underground gebruikt. De handleiding voor hoe je deze in Domoticz integreert vindt je hier. Na de implementatie kreeg ik er in Domoticz een device bij, genaamd Buitentemperatuur.

Nu moest ik de logica gaan programmeren. Deze is als volgt:

  • Wanneer de keukendeur langer dan 2 minuten open staat en de buitentemperatuur lager is dan 20 graden, moet de Nest-thermostaat in ECO-mode gezet worden. Hierdoor stopt de verwarming met stoken.
  • Wanneer de deur weer gesloten wordt, moet de ECO-stand worden opgeheven waardoor de verwarming weer aan gaat.
  • Het opheffen van de ECO-mode moest echter alleen plaats vinden wanneer we niet thuis zijn.

Gelukkig weet onze Nest Thermostaat of we thuis zijn. Dit is door Domoticz uit te lezen; er is gewoon een sensor voor.



In eerste instantie heb ik geprobeerd de logica te programmeren in LUA, maar daarbij liep ik tegen problemen met het uitlezen van sommige sensoren. De oorzaak hiervan heb ik nog niet kunnen achterhalen. Tijdens het uitzoeken kwam ik DzEvents tegen: een nieuwe manier van LUA scripting die ik zelf veel prettiger vond en die ook ondersteund wordt door Domoticz.

Om deze LUA-scripts door Domoticz uit te laten voeren, plaats je deze in de ~/domoticz/scripts/dzVents/scripts directory. De bestandsnaam dient de extensie lua te hebben. Ik heb dus het bestand keukendeur.lua aangemaakt in deze directory. Dit is mijn code:

return {
    active = true,
    on = {
        devices = {
            'Keukendeur'
        }
    },
    execute = function(domoticz, switch)
        if (switch.state == 'Open' and domoticz.devices('Buitentemperatuur').temperature < 20) then
                domoticz.log('Timer set for 5 minutes before entering heating ECO mode')
                domoticz.devices('Thuis Family Room Manual Eco Mode').setState('On').afterMin(2)
        end

        if (switch.state == 'Closed' and domoticz.devices('Thuis Family Room Away').state == 'Off') then
            domoticz.devices('Thuis Family Room Manual Eco Mode').setState('Off')
        end

    end
}

Deze code wordt event-based uitgevoerd. Op het moment dat de status van Keukendeur wijzigt, wordt de bovenstaande code uitgevoerd. Daarbij wordt gekeken naar de status van de sensor (switch.state), de temperatuur van de Buitentemperatuur-sensor en de status van de Away-sensor in de Nest Thermostaat.

Door deze uitbreiding is ons huis weer een beetje slimmer geworden en kan het omgaan met kinderen die vergeten de deur achter zich dicht te doen.

 

Reacties