(stads)verwarming draadloos schakelen

Door Koffie op woensdag 12 november 2014 21:31 - Reacties (17)
Categorie: -, Views: 5.950

Zoals nu toch wel bekend zou moeten zijn, stuur ik mijn verlichting en verwarming aan met een Raspberry Pi en pimatic. Nog niet mee bekend? Kijk dan vlug bij mijn andere blogs.

Mijn manier van verwarming aansturen verschilt iets van die van de meeste: wij zitten namelijk opgezadeld met stadsverwarming.
Dat betekend dat er simpelweg een gesloten circuit voor mijn radiators in huis aanwezig is, met een aan- en afvoer van heet water van de nuon.
Toen wij dit huis kochten was er niets geregeld om dit te sturen. Geen thermostaat en ook geen afsluiter.
Wij hebben toen direct een honeywell klep op de aanvoer laten zetten, zodat we deze met een normale thermostaat konden bedienen.

Een van de allereerste dingen die ik automatiseerde in huis was dan ook deze afsluiter.
In plaats van een thermostaat, was het nu een relay die de afsluiter open of dicht zette.
Dit heeft tot nu toe altijd prima gewerkt, maar had toch wel 2 nadelen:
- De Raspberry Pi moest in de buurt van het relay geplaatst worden om zo de GPIO rechtstreeks aan het relay te hangen
- Bij een major storing op de Raspberry Pi kan ik de verwarming niet handmatig aanzetten.

Om dit op te lossen heb ik een attiny samen met een RF zender en ontvanger op een klein breadboardje geplaatst. Vervolgens het relay op dezelfde attiny aangesloten en vervolgens afgemaakt met een stukje software.

De attiny reageert op een normaal klik aan klik uit adres van mijn afstandsbediening. Wanneer er een ON signaal ontvangen word, gaat het relay aan. Word er een OFF signaal ontvangen gaat hij weer uit.
Als extra zekerheid word er 5 seconden na het ontvangen van het signaal een antwoord teruggestuurd. Dit antwoord is wederom KaKu, maar nu een ander adres met dezelfdestate als ontvangen is.
Doordat er nu een bevestiging teruggestuurd word, kan ik in pimatic rules maken die een nieuwe poging doen wanneer er na het versturen geen antwoord is ontvangen. Bij een 2e milsukte poging word er dan een alert via push-over verstuurd.

Door bewust een adres van mijn bestaande KaKu afstandsbediening te gebruiken, weet ik zeker dat ik altijd makkelijk met de hand de kachel kan overrulen als er een probleem met de Raspberry Pi is.

Attiny sketch, inclusief pin bezetting, en libraries staan op github: https://github.com/koffienl/attiny-kaku

Foto's en video (let niet op de bende in de meterkast :+ ) :

http://zooi.oostindie.com/images/6042014_11_12_20_tn.55_tn.38_tn.jpg http://zooi.oostindie.com/images/7592014_11_12_20_tn.56_tn.13_tn.jpg

Native RF zenden en ontvangen met pimatic

Door Koffie op vrijdag 7 november 2014 21:46 - Reacties (43)
Categorie: -, Views: 19.474

Na mijn vorige blog over pimatic is er al weer een hoop gebeurt.
Inmiddels is er een eigen topic op het forum: het grote pimatic topic - home domotica met je Raspberry Pi en beik volledig overgestapt van zenden en ontvangen via pilight naar pimatic.

Het is misschien iets moeilijker dan gewoon een zender en ontvanger aan je pi knopen, maar het levert een hoop voordelen op. Zo is mijn CPU verbruik gezakt van gemiddeld 50% naar gemiddeld 5% :Y)

Wat heb ik allemaal nodig :?
Eigenlijk niet veel. Om te beginnen een goed setje RF zender en ontvanger (liefst type "433MHz Superheterodyne") en een Arduino Nano clone. That's it.
Een nano clone is al voor een dollar of 4 te koop op ebay, dus dat zijn de kosten niet.

Hoe sluit ik het allemaal aan :?
Het makkelijkste is om de zender, ontvanger en arduino op een breadboard te plaatsen, en deze vervolgens met jumperwires met elkaar te verbinden.
Hoewel je verschillende pinnen van je arduino kunt gebruiken, is het 't makkelijkst om de standaard te volgen:

http://zooi.oostindie.com/images/862pins_nano.png

Je ontvanger heeft als het goed is 4 pinnen: GND, DATA, DER, VCC
Wij hebben alleen de GND, DATA en VCC nodig. Sluit de GND aan op pin 29 GND, sluit DATA aan op pin 5 D2 en de VCC op pin 27 +5V

Je zender heeft er ook 4 : VCC, DATA, GND, ANT
Sluit de VCC aan op pin 27 +5V, de DATA op pin 7 D4 en de GND op png 29 GND.
Eventueel kun je een jumperwire op de ANT plaatsen.

Sluit vervolgens de nano aan op de USB port van je Raspberry Pi, dubbelcheck dat deze ttyUSB0 toegewezen heeft gekregen:
pi@raspberrypi ~ $ cd /dev
pi@raspberrypi /dev $ ls -l ttyUSB?
crw-rw---T 1 root dialout 188, 0 Nov  7 20:26 ttyUSB0
pi@raspberrypi /dev $


Indien je geen andere gekke dingen aan je Pi hebt hangen zal deze gewoon ttyUSB0 zijn.

Software compileren en naar je Arduino Nano uploaded
Voordat we verder kunnen, hebben we arduino-mk nodig: sudo apt-get install arduino-core avr-libc avrdude binutils-avr gcc-avr libconfig-yaml-perl libftdi1 libyaml-perl screen python-serial.
Na installatie kun je de sketch file downloden: git clone --recursive https://github.com/pimatic/homeduino.git

Bewerk nu met nano het Makefile bestand in de homeduino folder. Er van uitgaande dat je een Arduino Nano Clone op basis van een ATmega328 hebt, kun je de BOARD_TAG gewoon op nano328 laten staan.
Let even goed op de setting MONIOR_PORT deze staat default op /dev/ttyUSB1 terwijl de kans dus groot is dat deze op /dev/ttyUSB0 moet staan.
Sla je wijzigingen op en run het command make upload.

Pimatic configuratie aanpassen
Je hebt nu nog de volgende aanpassingen nodig in je config.json :

code:
1
2
3
4
5
6
7
8
9
10
{
  "plugin": "homeduino",
  "driver": "serialport",
  "driverOptions": {
    "serialDevice": "/dev/ttyUSB0",
    "baudrate": 115200
  },
  "receiverPin": 0,
  "transmitterPin": 4
}



Let hier weer op de ttyUSB0 ;)
De receiverpin en transmitterpin zijn gelijk aan de pinnen van deze handleiding.
Als je nu ook nog debug aan zet in je config, zul je in de logfile alle receives voorbij zien komen:

code:
1
2
3
"settings": {
    "debug": true,
    "logLevel": "debug",



Sla je wijzigingen op en start pimatic. Bekijk nu je logstream door middel van tail -f pimatic-daemon.log als je nu bijvoorbeeld een KaKu commando verstuurd zul je deze voorbij zien komen:
20:42:47.990 [pimatic-homeduino] debug: switch1:  { id: 9565958, all: false, state: true, unit: 1 }
20:42:48.022 [pimatic-homeduino] debug: contact1:  { id: 9565958, all: false, state: true, unit: 1 }
20:42:48.603 [pimatic-homeduino] debug: data: "RF receive 270 2716 1363 10620 0 0 0 0 010002000202000002000202000002000200020200020002000200020000020200020002000002000200020002000202000200000200020200000200020002020003"


Als je nu een KaKu switch aan je config wil toevoegen, gebruik je het volgende voorbeeld:


code:
1
2
3
4
5
6
7
8
9
10
11
12
{
  "id": "rfswitch",
  "name": "RFSwitch",
  "class": "HomeduinoRFSwitch",
  "protocols": [{
    "name": "switch1",
    "options": {
      "id": 42,
      "unit": 0
    }
  }]
}



Voor een complete lijst van ondersteunde protocollen kun je hier even kijken: https://github.com/pimati.../blob/master/protocols.md

Een van de protocollen die direct mijn aandacht trok is het zogenoemde generic protocol. Met dit ptocol kun je een ID, sensornummer en value versturen.
Oftewel : een volledig build-in protocol voor mijn draadloze tempereatuur sensor :Y)
Geen gedoe meer met een protocol in pilight welke weer omgecat moet worden tot een generic_weather welke weer door pimatic-pilight plugin opgepikt word, maar gewoon rechtstreeks een temperatuur naar pimatig sturen.
Inmiddels draait mijn bestaande sensor op de aangepaste code, maar meer daarover in een andere blogpost.


Resources:
https://github.com/Yves911/generic_433_sender
https://github.com/pimatic/homeduino
https://github.com/pimatic/pimatic-homeduino
https://github.com/pimati.../blob/master/protocols.md
http://r.ebay.com/WucSA6 (Arduino Nano)
http://r.ebay.com/Abfrlq (433 Mhz Superheterodyne)
https://github.com/pimatic/pimatic/issues
het grote pimatic topic - home domotica met je Raspberry Pi

Prototype pimatic-homeduino zender/ontvanger met antenne:
http://zooi.oostindie.com/images/3092014_10_30_19_tn.25_tn.34_tn.jpg http://zooi.oostindie.com/images/2302014_11_05_09_tn.14_tn.08_tn.jpg