Je kachel aansturen met pimatic, een echte thermostaat

Door Koffie op maandag 6 april 2015 18:55 - Reacties (16)
Categorie: -, Views: 6.528

In het eerste deel heb je gezien hoe je de CV of stadsverwarming kunt schakelen en de temperatuur in de woonkamer kunt meten.
De basis is eigenlijk simpel : vind je het te koud zet je de CV aan, vind je het te warm ze je deze weer uit :) Tijd om hier slimmer mee om te gaan.

Het maken van een thermostaat
Om te beginnen gaan we een thermostaat device toevoegen aan pimatic. Zet het volgende stuk code in je config, onder de devices sectie.


code:
1
2
3
4
5
6
7
{
      "id": "thermostaat",
      "class": "DummyHeatingThermostat",
      "name": "Thermostaat",
      "comfyTemp": 20,
      "ecoTemp": 17
    },



Sla de wijzigingen op en reboot pimatic. Je hebt nu een thermostaat device in je installatie. Voeg de thermostaat toe aan je GUI en test de knoppen uit. Je zult zien dat alles werkt, maar pimatic heeft nog niets om op te reageren. Dit moet je allemaal zelf doen met extra rules
De thermostaat heeft 7 knoppen, verdeeld over 3 blokken.
De eerste 3 zijn : auto, manu en boost.
Dit zijn de standen waarin je je thermostaat kunt zetten. Omdat je zelf de rules schrijft, kun je zelf bepalen wat je er mee doet. In deze blog zullen ze het volgende betekenen :

auto : het systeem zal volgens alle rules gewoon automatisch werken aanpassingen zullen alleen tijdelijk van kracht zijn
manu : overrulled volledig alle programma's en zal voor onbepaalde tijd de huidige temperatuur handhaven
boost : verhoogd de huidige temperatuur met 2 graden voor 1 uur lang

De knoppen eco en comfy zijn hardcoded waardes, in dit geval 17 voor eco en 20 voor comfy.
Met de + en - knoppen kun je de temperatuur instelling veranderen.

http://zooi.oostindie.com/images/2282015_04_06_16_tn.35_tn.52_tn.jpg

Pimatic laten reageren op wijzigingen aan de thermostaat
Zoals gezegd : de thermostaat is een dom device wat niets uit zichzelf kan doen. Dat is mooi, want dat kunnen wij alles precies doen zoals we zelf willen ;)
De 3 standen van de thermostaat zijn op te vragen en veranderen door middel van rules :

code:
1
IF mode of thermostaat = boost THEN set mode of thermostaat to "auto"


Ook de temperatuurinstelling is uit te lezen en te wijzigen:

code:
1
IF mode of thermostaat = "boost" THEN set temp of thermostaat to 25



Een simpele AAN/UIT thermostaat'
We hebben nu een sensor die de temperatuur meet, en een thermostaat device waarmee we het e.e.a aan kunnen sturen. We kunnen nu relatie makkelijk een simpele thermostaat maken.
Dit kun je doen door de volgende rules aan te maken:


code:
1
2
IF temperature of woonkamer < $thermostaat.temperatureSetpoint THEN turn on warmte
IF temperature of woonkamer > $thermostaat.temperatureSetpoint THEN turn off warmte



Is het kouder dan de gewenste temperatuur, dan zal de CV (relais) aan gaan, is het warmer dan gaat hij vanzelf weer uit.
Je thermostaat is vanaf nu niet meer nodig:)

De thermostaat moet 'slimmer' worden
Ik ben al langere tijd bezig met het aansturen van de verwarming dmv een Raspberry Pi python scripts / pilight / pimatic, en ben uiteindelijk op de volgende aanpak uitgekomen: zorg dat er 1 variabele waarnaar gekeken word (in dit geval: de setting van de thermostaat) laat allerlei rules die setting beÔnvloeden op basis van dag/tijdstip/externe factoren. Laat vervolgens je thermostaat simpelweg naar die setting kijken tov woonkamer temperatuur.

Op mijn eigen installatie heb ik dus enorm veel regels die (mogelijkerwijs) de gewenste temperatuur beÔnvloeden. Of vervolgens de kachel aan of uit moet gebeurt slechts op basis van 2 rules.
Zo heb ik bijvoorbeeld een rule die er zo uitziet:

code:
1
[it is monday or tuesday or thursday or friday] and it is after 07:30 and before 13:30 and beneden-thermostaat-sunday is off and mode of thermostaat = auto THEN set temp of thermostaat to 18


Op maandag, dinsdag en vrijdag is er van half 8 tot 3 (de rule is tot half 2 ivm opwarm tijden) niemand thuis. Tussen die periode mag het dus afkoelen tot 18 graden.

Elke dag om 10 uur 's avonds mag de kachl terug van 20 naar 18 graden, tenzij de woonkamer verlichting nog aan is - als de hoofdverlichting nog brand is de kans namelijk reŽel dat ik nog beneden ben):

code:
1
IF it is after 22:00 and mode of thermostaat = auto and dressoir is off THEN set temp of thermostaat to 18


Wanner de verlichting om 22:00 nog brand zal de thermostaat op 20 blijven staan. Ga ik uiteindelijk om 23:50 naar bed, dan zal de thermostaat automatisch terugvallen naar 18 graden.

Deze rules kun je net zo moeilijk of makkelijk maken als je wil, ik ken situaties waar men gewoon een AAN/UIT thermostaat heeft gemaakt, aangevuld met aanwezigheid van personen op basis van een ping plugin voor de smartphones.

Voor de boost knop heb ik de volgende rule aangemaakt:


code:
1
IF mode of thermostaat = "boost" THEN $BeforeBoostTemp = $thermostaat.temperatureSetpoint and set temp of thermostaat to ($thermostaat.temperatureSetpoint + 2) and after 1 hour set mode of thermostaat to "auto" and after 3601 seconds set temp of thermostaat to $BeforeBoostTemp



Deze rule schrijft de huidige temperatuur weg in de $BeforeBoostTemp en verhoogt deze temperatuur met 2 graden. Na 1 uur word de mode naar auto gezet, en de vorige temperatuur uit BeforeBoostTemp weer gebruitk.

Andere slimme manieren om om te gaan met de temperatuurinstelling en je thermostaat:
- Bijhouden of de temperatuur van je woonkamer stijgt. Waarom zou je verwarmen wanneer de woonkamer op een natuurlijke manier opwarmt?
- Stoppen met verwarmen als er een deur of raam geopend word
- Heb je behoefte aan een warme kamer in de ochtend, voor je naar werk gaat? Warm dan slechts op tot 19,5 graden. Dit scheelt behoorlijk in tijd
- Stuur bij op basis van aanwezigheid van smartphones. Waarom verwarmen als de smartphones niet aanwezig zijn?

Het lukt niet, ik snap het niet, ik heb hulp nodig! :?
Als je vragen hebt, kun je deze beter in het pimatic topic stellen : het grote pimatic topic - home domotica met je Raspberry Pi
Dat is makkelijker dan her te behandelen (je bereikt ook een groter publiek dan alleen Koffie :P ).

Inhoudelijk reacties op specifiek dit artikel kunnen uiteraard gewoon in de comments.

Ik ben zeker benieuwd naar de handigheidjes die jullie gebruiken om slim om te gaan met het verwarmen van de woonkamer, post vooraal je tips en tricks!

Volgende: DIY draadloze temperatuursensor voor pimatic - en meer! - Update 01-'16 DIY draadloze temperatuursensor voor pimatic - en meer! - Update
Volgende: Je kachel aansturen met pimatic, de basics 04-'15 Je kachel aansturen met pimatic, de basics

Reacties


Door Tweakers user EjjE101, maandag 6 april 2015 22:01

Even heel kort door de bocht een cv kun je beter niet aan sturen met een aan/uit schakeling.

Door Tweakers user Koffie, maandag 6 april 2015 22:03

EjjE101 schreef op maandag 06 april 2015 @ 22:01:
Even heel kort door de bocht een cv kun je beter niet aan sturen met een aan/uit schakeling.
Je thermostaat doet niet veel anders ;)

Door Tweakers user Devil_Inside, dinsdag 7 april 2015 06:27

Je (modulerende) thermostaat doet juist wel anders.
Met een gewone aan/uit schakeling brandt je ketel ofwel 0, ofwel 100%. Je kan dit vergelijken met aan het rode licht staan. Van zodra het op groen springt geef je alleen maar plankgas, om aan het volgende rode licht met piepende remmen stil te komen staan. Aangenaam voor de inzittenden is dit uiteraard niet, en zo is het ook in je huis dan. De temperatuur zal constant 1 ŗ 2 graden schommelen.

Een modulerende thermostaat kijkt naar de omgevingstemperatuur en zal tegen de ketel zeggen hoe hoog hij zijn water moet verwarmen om de temperatuur constant te houden. Hierdoor wordt de ketel niet tot veel te hoge en inefficiente temperaturen gestookt. Te vergelijken met een 'groene golf' in het verkeer. Je trekt rustig op en blijft aan een constante snelheid rijden.

Ik was ook eerst aan het kijken om een Nest te installeren. Bij het overschakelen naar een nieuwe energieleverancier kregen we deze er zo goed als gratis bij. Maar na een controle bleek dat een Nest ook alleen maar aan/uit is, waardoor het verbruik al snel 10 tot 25% zou stijgen! Snel geannuleerd dan maar. Zo goed als alle cv's in Belgie & Nederland zijn modulerend.

Door Tweakers user Koffie, dinsdag 7 april 2015 07:18

Devil_Inside schreef op dinsdag 07 april 2015 @ 06:27:
Je (modulerende) thermostaat doet juist wel anders.
Met een gewone aan/uit schakeling brandt je ketel ofwel 0, ofwel 100%. Je kan dit vergelijken met aan het rode licht staan. Van zodra het op groen springt geef je alleen maar plankgas, om aan het volgende rode licht met piepende remmen stil te komen staan. Aangenaam voor de inzittenden is dit uiteraard niet, en zo is het ook in je huis dan. De temperatuur zal constant 1 ŗ 2 graden schommelen.

Een modulerende thermostaat kijkt naar de omgevingstemperatuur en zal tegen de ketel zeggen hoe hoog hij zijn water moet verwarmen om de temperatuur constant te houden. Hierdoor wordt de ketel niet tot veel te hoge en inefficiente temperaturen gestookt. Te vergelijken met een 'groene golf' in het verkeer. Je trekt rustig op en blijft aan een constante snelheid rijden.

Ik was ook eerst aan het kijken om een Nest te installeren. Bij het overschakelen naar een nieuwe energieleverancier kregen we deze er zo goed als gratis bij. Maar na een controle bleek dat een Nest ook alleen maar aan/uit is, waardoor het verbruik al snel 10 tot 25% zou stijgen! Snel geannuleerd dan maar. Zo goed als alle cv's in Belgie & Nederland zijn modulerend.
Ik snap je verhaal, ik heb het echter nooit over modulerende ketels gehad.
Ik weet niet hoeveel draden je voor een modulerende ketel/thermostaat nodig hebt, maar volgens mij zijn dat er of meer dan 2 of ze werken niet als een simpele maak/breek verbinding.

Als je een modulerende ketel hebt, zou ik daar zeker gebruik van maken en idd niet zomaar volgas gaan. Echter heb slaat deze blog dus totaal niet op modulerende ketels, anders had ik die wel genoemd ;)

Door Tweakers user Sterk1, dinsdag 7 april 2015 08:36

Een leuk project !
Ik ga eens op zoek naar een modulerende interface.

Want deze oplossing zou eigenlijk voor 100% van de ketelbezitters onbruikbaar moeten zijn. Volgens mij worden er al 15 jaar lang modulerende HR ketels verkocht.
Dus heb je een HR ketel, gebruik dit niet want het kost je meer energie dan het oplevert.
Heb je geen HR ketel, koop er ťťn. De investering verdien je terug.

Dat de Nest ook niet in een modulerende variant is uitgebracht in Nederland snap ik ook helemaal niet.

[Reactie gewijzigd op dinsdag 7 april 2015 08:37]


Door Tweakers user cohn, dinsdag 7 april 2015 09:15

Koffie schreef op dinsdag 07 april 2015 @ 07:18:
[...]

Ik snap je verhaal, ik heb het echter nooit over modulerende ketels gehad.
Ik weet niet hoeveel draden je voor een modulerende ketel/thermostaat nodig hebt, maar volgens mij zijn dat er of meer dan 2 of ze werken niet als een simpele maak/breek verbinding.
Een veel gebruikt protocol voor modulerende thermostaten is OpenTherm. Deze maakt gebruik van twee draden voor zowel de voeding als de communicatie. Ook de thermostaten van Nefit (geen OT) maken gebruikt van een tweedraads verbinding.
Met deze heb je het overgrote deel van de NL markt wel te pakken.
Je kunt dus niet zomaar stellen dat je meer dan 2 draden nodig hebt voor modulerende thermostaten.
Kijk hier voro meer info over OpenTherm.


Als je nog op zoek bent naar verbeteringen voor je thermostaat: kijk ook eens naar de overshoot die je hebt en probeer die te verminderen. Dit zal wel lastig worden met een aan/uit interface (zie uitleg hierboven van Devil_Inside), maar hiermee kun je veel winst halen. Zowel op comfort (constantere temperatuur) als op energie verbruik (geleidelijker stoken). Als je het echt mooi oplost dan maak je een PID regelaar die zelflerend is en dus uiteindelijk weet hoeveel CV vermogen nodig is om een graad temperatuur verhoging te realiseren.

[Reactie gewijzigd op dinsdag 7 april 2015 09:17]


Door Tweakers user naftebakje, dinsdag 7 april 2015 10:09

Met ^, ook een aan/uit thermostaat zal een PI(D) algoritme gebruiken om voorspelbare over/undershoot te vermijden, kan een zelfinstellende verwarmvervroeging gebruiken,...
Zaken die ook perfect haalbaar zijn via pimatic imho, verwarming gaat om een traag systeem, je PWM mag gerust een periode hebben van 10 minuten.
Eerste berekening die je zou moeten maken is het verschil tussen gewenste en gemeten temperatuur...

Door Tweakers user Koffie, dinsdag 7 april 2015 11:47

OK, dat van die 2 draden wist ik niet ;)
Ik heb al 10 jaar geen CV ketel meer (stadsverwarming) , dus voor mij is het allemaal simpel maken/breken van de verbinding.

Overshoot is inderdaad iets waar ik al een tijdje mee aan het spelen ben, maar nog niet echt een werkbaar iets voor hebt.

Door Tweakers user naftebakje, dinsdag 7 april 2015 12:19

Koffie schreef op dinsdag 07 april 2015 @ 11:47:
....Overshoot is inderdaad iets waar ik al een tijdje mee aan het spelen ben, maar nog niet echt een werkbaar iets voor hebt.
High-level: als je stadsverwarming hebt kan dat niet, maar bij CV kan je het max vermogen minderen (dat zorgt voor langere stooksessie's met minder overshoot, vaak heb je teveel vermogen). Nadeel is dat je dit eigenlijk moet gaan afstellen volgens de buitentemperatuur.

Voor een betere aan-uit kan eenvoudig beginnen: als je meer dan 2 graden van de gewenste temperatuur bent ga je volle bak verwarmen, ben je dichter dan ga je elke 10 minuten 5 minuten verwarmen, en eens zien hoe dat loopt. Je kan nog een trapje toevoegen indien dat beter loopt.

Als je het wat beter wil doen draaien, dan kan je enkele waarden gaan vergelijken om te voorspellen waar je zal uitkomen:
- temperatuursstijging in de laatste 20 minuten
- verschil tussen gewenste en gemeten temperatuur
(- hoe snel het de afgelopen week lukte om op te warmen, of buitentemperatuur inrekenen die je via internet binnentrekt, je hebt mogelijkheden om hiermee te spelen)
Daaruit kan je een gaan bepalen hoe hard je nog moet opwarmen, en daarmee een PWM gaan doen op de aan/uit (dus 20% verwarmen = 2 minuten verwarmen en 8 minuten niet verwarmen).

Door Tweakers user himlims_, woensdag 8 april 2015 12:05

ben nu bezig met nodo-domotica icm arduino, qua functionaliteit lijkt dat vrij in lijn te liggen

Door Tweakers user schijf, zaterdag 11 april 2015 14:07

Koffie, ik mis een stukje in je verhaal: hoe maak je de variabelen aan en welke waardes geef je die?

Bijvoorbeeld $thermostaat.temperatureSetpoint zal eerst moeten worden aangemaakt in Pimatic als variabele. En welke waarde geef je deze?

Door Tweakers user Koffie, zaterdag 11 april 2015 15:50

Die variabele komt automatisch als je de dummythermostaat toevoegt ;)

Door Tweakers user RogerDad, woensdag 15 april 2015 11:32

Ik heb nog steeds het plan liggen om een eenvoudige modulerende thermostaat (Atag Smart in mijn geval) Internet connected te maken. Dat zou heel simpel moeten kunnen door de knop voor dag/nacht te overbruggen met een relais en dat dan te schakelen.
Wil je het warm, dan schakel je naar dag, en de modulerende thermostaat zorgt ervoor dat die vooraf ingestelde temperatuur optimaal bereikt wordt. Ben je weg, dan kan het naar nacht.
Voor het schakelen kan je dan een Raspberry Pi gebruiken met wifi dongle en daarop zelf nog een DHT22 sensor zodat ook de actuele temperatuur en luchtvochtigheid beschikbaar is.

Voordelen: remote control, klokprogramma's, actuele temperatuur en luchtvochtigheid, minimale complexiteit, wel een modulerende thermostaat, geen cloud-oplossing met de daarbij vaak gepaard gaande kosten en risico's voor privacy
Nadelen: groter dan een slimme thermostaat, meer stroomverbruik, ??

Door RomSys, woensdag 26 augustus 2015 09:32

Kan iemand mij verder helpen?

Ik werk al enige tijd met succes met Pimatic (zonder pilight en homeduino).
Nu heb ik een thermostaat toegevoegd, maar de rules worden niet geaccepteerd.

error [pimatic]: Could not parse rule"if temperature of woonkamer > $thermostaat.temperatureSetpoint then turn off warmte"": Could not find an provider that decides next predicate of "temperature of woonkamer > $thermostaat.temperatureSetpoint".
09:06:08error [pimatic]: Could not parse rule"if temperature of woonkamer < $thermostaat.temperatureSetpoint then turn on warmte"": Could not find an provider that decides next predicate of "temperature of woonkamer < $thermostaat.temperatureSetpoint".

Ik heb al diverse mogelijkheden/varianten geprobeerd, maar ze werken niet!
Bij voorbaat dank voor oplossende suggesties.

Door Tweakers user Koffie, woensdag 26 augustus 2015 14:20

Probeer eens "$woonkamer.temperature > $thermostaat.temperatureSetpoint"

Door Tweakers user RomSys, woensdag 26 augustus 2015 17:07

Beste Koffie,
Dank voor je snelle reactie.
Ik was helaas niet geheel volledig, althans ik had niet het idee dat dit belangrijk was.

Ik refereer mijn kamerthemperatuur niet aan een DS18B20 (is nog wel de bedoeling) maar aan een buitenunit van een weerstation ($rftemperature.temperature)[b]. Dus $woonkamer.temperature bestaat bij mij (nog) niet.
De oplossing heb ik nu gevonden met:
"if $rftemperature.temperature gets updated and $rftemperature.temperature < $thermostaat.temperatureSetpoint then turn on warmte".
En dit werkt uitstekend.

Pimatic is het overigens helemaal voor mij en ik wens je veel succes met volgende ontwikkelingen. Zo kunnen anderen er ook van profiteren.

Groet, Frans

Om te kunnen reageren moet je ingelogd zijn. Via deze link kun je inloggen als je al geregistreerd bent. Indien je nog geen account hebt kun je er hier ťťn aanmaken.