Heat

smartphone klokthermostaat en remote controller
(zelfbouw)

klokthermostaat'Heat'
klokthermostaat
remote'HeatRem'
remote controller

Aanleiding

Kort samengevat: een simpele knop die - net als de klok - schakelt naar dag- of nacht­temperatuur en waarbij het programma gewoon blijft doorlopen.
Kamerthermostaten bieden vaak uitgebreide mogelijkheden, maar missen steeds deze eenvoudige voorziening. 's Avonds schakelt de thermostaat op nachttemperatuur en wil je nog een uurtje doorgaan. Of 's morgens sta je eerder op dan normaal en is het koud. Steeds moet je dan talloze keren op een klein knopje drukken of het programma verlaten. Dat kan handiger.

Opzet

Voor een zelfbouw-klokthermostaat biedt een smartphone bijna alles wat nodig is: een klok, program­meer­baarheid, een scherm voor de bediening en een backup-accu met laadcircuit.
Een in onbruik geraakte smartphone (Android, niet ouder dan KitKat) is meestal wel te vinden.
Wat nog ontbreekt is een temperatuursensor en een relais om de CV te schakelen. Dat zijn twee simpele componenten, die op de smartphone aangesloten kunnen worden met behulp van een IOIO-board. Dat is een klein en betaalbaar (€ 30) printkaartje dat met een OTG-kabeltje op de USB-poort wordt aangesloten en dat ook het bijladen van de accu verzorgt. IOIO gebruikt het Android Open Accessory Protocol.
De (optionele) remote controller is een app die op een andere (Android) smartphone draait, via internet met de kamer­ther­mostaat communiceert en de interface daarvan kopieert.

Schema

schema

Bouw

binnenaanzicht smartphone montage vooraanzicht

De getoonde bouw is vooral praktisch en gericht op zo goed mogelijke temperatuurmeting. Tussen de sensor (links) en IOIO/relais wordt nog een stukje schuimplastic geplaatst. In de onder- en bovenzijde van de behuizing zijn gaten geboord voor ventilatie. De invloed van de andere componenten op de sensor (offset) is hier ongeveer 0,1 graden (NB: een grote invloed zal de meting ook ongevoelig maken).
Ongeveer alle op de markt verkrijgbare thermostaten gebruiken eigen opwarming als tegen­koppeling, waardoor de gewenste temperatuur schijnbaar snel wordt bereikt. Daarbij klopt de weergegeven temperatuur pas als evenwicht is bereikt. 'Heat' gebruikt een (aanpasbaar) algoritme voor de tegenkoppeling.
De smartphone is - met het scherm aan - de grootste warmtebron. Zorg dat die warmte niet bij de sensor komt. Monteer de thermostaat op 1 mm afstand van de wand om trage repons te vermijden.
Op het IOIO-board zit een potentiometer waarmee de laadstroom begrensd kan worden; stel deze zo in dat de accu tijdens gebruik net nog iets laadt. Hoewel een voeding van 5V= 200mA waarschijnlijk volstaat, is wat marge aan te raden om een grotere laadstroom mogelijk te maken.
Met de gratis app 'BatteryChargeLimit' (root) kan de lading van de accu op bij­voorbeeld 80% worden gehouden. Dit verlengt de levensduur. De gratis app 'Velis Auto Brightness' is nuttig om de helderheid van het scherm te verlagen, wat stroom en dus warmte bespaart.
De analoge meting van de IOIO behoeft een eenmalige ijking, vooral van de offset. Daarvoor kan het beste een potentio­meter op de 3,3V uitgang worden gezet en getVoltage() in de log-file worden uitgelezen. Het resultaat blijkt zeer goed lineair en hierna is nog slechts een kleine offset voor de invloed van smartphone, IOIO en relais nodig.

Software

De apps zijn gebouwd met Android Studio 3.1 voor targetSdk 26 (Oreo) en minimumSdk 16 (Jelly Bean). Alle IOIO-libraries zijn gratis te downloaden op GitHub, waar ook documentatie te vinden is. E.e.a. is tevens bereikbaar via de website van SparkFun.
Het huidige algoritme berekent het voortschrijdend gemiddelde (2 min.) van de temperatuur en van de temperatuurgradient.
Er zijn instellingen o.a. voor de interne tegenkoppeling en de response-tijd van het systeem. Daarmee wordt een snelle opwarming bereikt, terwijl overshoot nagenoeg geheel wordt voor­komen. Met de optie 'Zelflerend' regelt het algoritme zichzelf in en blijft zich optimaliseren onder veran­derende omstandigheden.
De knoppen 'night' en 'day' schakelen naar nacht- resp. dagtemperatuur. Nogmaals drukken zet die stand op 'hold' en kleurt de icon blauw. De pijl-icon is groen als de ketel brandt. Op de remote controller fungeert deze icon tevens als 'refresh'-knop. De 'Off'-knop zet de thermostaat op vorst­beveiliging.
Elke 15 sec. vindt een update plaats, elke 2 minuten worden de actuele waarden naar een log-file geschreven (optioneel).
Op de remote controller zijn IP-adres en poort in te stellen. Bij WiFi-verbinding achter een router is port-forwarding nodig. Er is een beveiligd protocol voor het aansturen van de thermostaat.

Resultaat

log

De thermostaat voldoet ruimschoots aan de verwachtingen. De temperatuur blijft binnen 0,2 graden van de gewenste waarde en de ketel brandt niet onnodig vaak. Het algoritme is nog niet getest bij strenge vorst, maar het exprimenteren ermee is gemakkelijk en geeft vaak veel voldoening.
'Heat' verbruikt zelf weinig energie (plm. 1 Watt) en start na stroomuitval automatisch weer op. In de zomer kan de smartphone worden afgenomen en zonder aanpassingen normaal worden gebruikt.

Tenslotte

'Heat' is een zelfbouwproject dat qua hardware vrij eenvoudig is, maar qua software wel wat ervaring met Android vraagt. Het is een prima optie om die ervaring op te doen door gewoon te beginnen.
Wie sneller iets werkends wil hebben, kan beide apps met hun broncode (als compleet Android Studio project) bestellen via voor € 15,- inclusief BTW en een (naar redelijkheid) beperkte ondersteuning via email.
Veel plezier met bouwen, testen en optimaliseren!

Egbert Boerma
Bryk NL