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!

Je kachel aansturen met pimatic, de basics

Door Koffie op maandag 6 april 2015 09:52 - Reacties (19)
Categorie: -, Views: 8.370

Na de vele artikelen over homeautomation, is het weer eens een tijd voor een stukje van mijn kant :)

In deze blog wil ik beginnen met het behandelen van aansturing van je kachel door middel van pimatic. Ik ga er vanuit dat je stadsverwarming of een normale CV met thermostaat hebt. Dus geen opentherm toestanden oid. Twijfel je ? Trek je thermostaat van de muur en kijk hoeveel draden er van je thermostaat naar je ketel gaan. Indien dit er 2 zijn, zit je goed :Y)

Wat heb ik allemaal nodig :?
- Raspberry Pi met pimatic geÔnstalleerd
- 1 relay (bijvoorbeeld : http://r.ebay.com/1RNzF8 )
- 1 temperatuursensor (DS18B20 + 4.7K weerstand of zelfbouw)
- Diverse kabeltjes (handjevol jumperwires en bijvoorbeeld UTP)

Stap 1 : De CV aansluiten aansluiten
Als allereerste haal je de huidige thermostaat van de muur af, die gaan we niet meer nodig hebben. Straks kun je daar een prachtige tablet hangen om je hele huis aan te sturen.
Laat de kabel zitten, deze hebben we wellicht nog nodig. Sowieso : liever bekabeling nutteloos laten zitten dan dat je een jaar later een probleem hebt omdat er geen kabel meer in de leiding te krijgen is.
De kabel die aan je thermostaat zat, loopt helemaal door naar je CV of stadsverwarmingsklep. De vraag is : waar gaat de Raspberry Pi komen?
Er is geen noodzaak om de Pi in de woonkamer te hangen, dus waarom niet gewoon lekker bij je CV plaatsen?
En nu komt die kabel die er al lag mooi van pas. We kunnen (indien je dat wilt) deze kabel hergebruiken voor de temperatuursensor. Controleer eerst hoeveel aders er van de muur naar je CV gaan. Indien dit er echt maar 2 zijn, zul je de kabel moeten vervangen. Voor de DS18B20 sensor hebben we minimaal 3 aders nodig.
Haal eerst de 2 aders van je CV af, en vervang deze voor 2 nieuwe aders (bijvoorbeeld een stukje UTP).
Verbind de andere kant van de 2 aders aan je relay.
Afhankelijk van je relay heb je verschillende aansluitmogelijkheden. Indien je 3 terminalschroeven hebt, zorg er dan voor dat 1 ader in de COM zit en de andere in de NO. Op deze manier zal je relay zonder tussenkomst van pimatic in een verbroken toestand staan.
Aan de andere kant van je relay zul je hoogstwaarschijnlijk 3 terrminalschroeven hebben : DC+ , DC- en CH1 (of VCC en GND ipv DC).
Verbind de VCC of DC+ met de 5v pin van je Raspberry Pi, en verbind de DC- of GND met de GND van je Raspberry Pi.
Verbind CH1 met GPIO0 van je Raspberry Pi (dat is BCM GPIO nummer 17).
De eerste stap is nu gezet, je ketel is verbonden met je Raspberry Pi :Y)

Voordat we verder gaan, testen we eerst of alles goed werkt. Zorg dat je pimatic goed hebt werken en installeer indien nodig de GPIO plugin.
Zet het volgende stuk code in je config, onder de devices sectie.


code:
1
2
3
4
5
6
{
      "id": "warmte",
      "class": "GpioSwitch",
      "name": "warmte",
      "gpio": 17
    },



Sla de wijzigingen op en reboot pimatic. Je hebt nu een ON/OFF device met de naam warmte in je installatie. Voeg de knop toe aan je GUI en test de knop uit. Wanneer je deze op ON zet, zal de klep van je stadsverwarming open moeten gaan. Indien je een ketel hebt, zal deze moeten gaan branden.
Gebeurt er niets? Controleer dan je bedrading tussen de Raspberry Pi, relay en CV nogmaals goed.

Stap 2 : Temperatuur in de woonkamer meten
We kunnen nu de CV aan en uit zetten wanneer we maar willen. Victory! Tijd om een stap verder te gaan, we willen namelijk ook weten hoeveel graden het in de woonkamer is.
De makkelijkste manier om de sensor op te hangen op de plek van je oude thermostaat. Er zit al een gaatje in de muur, en er loopt al een kabel naar de CV (waar je Raspberry Pi hangt).
Verbind de 3 pootjes van de sensor aan de 3 aders van je kabel. Onthoud welke kleur aan welk pootje.
Kijk naar het plaatje voor de juiste layout :

http://zooi.oostindie.com/images/247ds18b20_pinout.gif

Aan de andere kant van de kabel hebben we nog 1 onderdeel nodig : een weerstand van 4.7K. Plaats de weerstand tussen de VCC en de data (middeslte poot):

http://zooi.oostindie.com/images/736sensor_connection.png

Verbind vervolgens de VCC aan de 3.3V van de Raspberry Pi, de GND aan de GDN en de data aan GPIO 4 (BCM GPIO 23).
Zorg dat je de DS18B20 plugin geÔnstalleerd hebt op Pimatic en pas je modules bestand aan:

sudo nano /etc/modules


Voeg de volgende regels toe:

code:
1
2
w1-gpio
w1-therm


Reboot je Raspberry Pi en kijk of de sensor gevonden word:

cd /sys/bus/w1/devices
ls -l

Je ziet nu 2 directorys, 1 daarvan ziet er zo uit 28-xxxxxxxxxxxx
Indien je geen directory met 28-xxxxxxxxxxxx ziet , klopt je bedrading niet. Controleer deze. Is je sensor gloeiend heet? Dan heb je de VCC en GND omgedraaid of zit je weerstand niet goed. De sensor kun je dan weggooien :(
Onthoud het volledige 28-xxxxxxxxxxxx nummer.

Mocht je meerdere DS18B20 sensors willen toevoegen, dan kan dat. Onthoud goed : alle sensors moeten op 1 kabel met slechts 1 weerstand. Je mag er meerder op 1 lange kabel plaatsen, of vanuit de Raspberry Pi als een soort ster netwerk.
Elke keer als je een nieuwe sensor toevoegt, zul ju op bovenstaande manier het ID moeten achterhalen.

Zet het volgende stuk code in je config, onder de devices sectie.


code:
1
2
3
4
5
6
7
{
  "id": "woonkamer-sensor",
  "name": "Woonkamer",
  "class": "DS18B20Sensor",
  "hardwareId": "28-xxxxxxxxxxxx ",
  "interval": 60000
}



Waarbij 28-xxxxxxxxxxxx dus het eerder onthouden ID van je sensor is.
Sla de wijzigingen op en reboot pimatic. Je hebt nu een temperatuur device met de naam Woonkamer in je installatie. Voeg de sensor toe aan je GUI. Je moet nu de temperatuur van de woonkamer zien.

Stap 3 : Warmte schakelen op basis van omgeving
Nu begint het leuk te worden. We kunnen nu de CV aan of uit zetten wanneer we dat willen, en we kunnen ook nog eens de temperatuur in de woonkamer meten. De Raspberry Pi is ineens een slimme thermostaat geworden :Y)
Door middel van rules kun je nu de CV aan of uit zetten. Je kunt hier zo creatief in zijn als je zelf wil. In een volgende blog ga ik dieper in op de aansturing van je CV om dit zo slim mogelijk en gebruikersvriendelijk mogelijk te doen.

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.

=[UPDATE]=
Deel 2 is nu ook online: Koffie's tweakblog: Je kachel aansturen met pimatic, een echte thermostaat