(stads)verwarming draadloos schakelen

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

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: 25.157

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

Home automation met Pimatic

Door Koffie op woensdag 15 oktober 2014 20:39 - Reacties (42)
Categorie: -, Views: 25.381

Al enkele keren heb ik wat posts gemaakt over home automation met een Raspberry Pi. In het begin gebruikte ik hiervoor Pilight, maar inmiddels ben ik bijna helemaal overgestapt op Pimatic.
Het bijna gedeelte zal ik straks uitleggen ;)

Zoals gezegd: voorheen gebruikte ik pilight als service voor het aansturen van diverse RF devices. Aansturing van dit alles gebeurde met pimatic.
Er waren al wat experimenten om RF rechtstreeks aan te sturen vanuit pimatic, maar sinds begin deze week kan dat ook rechtstreeks via een RF 433 sender en receiver op de GPIO pinnen.

De eerste test zijn veelbelovend te noemen, op wat kleine problemen met KaKu na werkt zenden en ontvangen vlekkeloos. Zonder arduino of filter.
Wanneer mijn KaKu deurcontact goed functioneert, kan ik pilight volledig loslaten en alles via pimatic laten lopen, wel zo makkelijk :Y)

Wat kan pimatic dan wel niet allemaal ?
De allergrootste kracht (en de reden van mijn overstap) is het zogenoemde rules systeem. Door middel van rules kun je pimatic van alles laten uitvoeren - of juist niet :)
Een simpel voorbeeld

code:
1
IF it is after 08:00 THEN turn lamp1 on



Cool he?! Je kunt nu niet alleen je lampen via je browser aan of uit zetten, je kun het nu ook schedulen. Nog leuker word het om allerlei randvoorwaarden aan je rules te koppelen:

code:
1
IF lamp1 is turned off THEN turn lamp2 off


Oftewel : wanneer ik de ene lamp uitzet, ze dan de andere ook uit.

Plugins
Het tweede ijzersterke punt van pimatic is het plugin systeem.
Pimatic beschikt inmiddels over een aardig groeiende lijst met plugins die allemaal ook weer in de rules gebruikt kunnen worden.
Een greep van de plugins die ik gebruik:
• Cron (voor het kunnen sturen op basis van tijd)
• GPIO (voor het rechtstreeks aansturen van een GPIO, of kijken of deze wel of niet verbonden zijn)
• pilight (Vrijwel alle devices van pilight kunnen geïmporteerd en bestuurd worden)
• ping (is een device wel of niet bereikbaar?)
• pushover (Stuur berichtjes middels de pushover API naar je telefoon)
• Mail (Verstuur mail)
• shell-execute (uitvoeren van CMD opdrachten)
• sunrise (Een skala aan zonsop- en ondergang momenten op basis van locatie
• sysinfo (monitor CPU temp, CPU load, memory load, disksize en pimatic DB size)
• weather (Weersinformatie en voorspelling).

User en role systeem
Sinds enige tijd beschikt pimatic over een user en role systeem. Je kunt een oneindig aantal users defineren, samen met een oneinding aantal roles.
Vervolgens koppel je een user aan een role:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
      "name": "resident",
      "permissions": {
        "pages": "read",
        "rules": "read",
        "variables": "read",
        "messages": "read",
        "events": "read",
        "devices": "none",
        "groups": "none",
        "plugins": "none",
        "updates": "none",
        "controlDevices": true,
        "restart": false
      }


Zoals je ziet kun je dus door middel van een role een gebruiker behoorlijk afschermen van allerlei functies.

Cool, hoe ziet dat er nu uit?
Op dit moment ziet mijn pimatic er zo uit:

http://zooi.oostindie.com/images/396pimatic01_tn.jpg

Door het aanmaken van diverse pages (tabbladen) en groups (verdelingen over de pages) kun je alles naar eigen inzicht rangschikken.
Het mooie is ook dat een device niet zichtbaar op een pagina hoeft te staan om aangesproken te kunnen worden.
Een device is bekend (en aanspreekbaar) binnen het pimatic systeem, maar is dan nog standaard nog niet zichtbaar. Een device kan ook op meerdere pages geplaatst worden. Zo zou je dus voor elk vertrek een pagina kunnen maken, voorzien van de locatiegebonden devices. En vervolgens een page genaamd 'Favorieten' waar je de meest gebruikte devices bij elkaar zet :)

Vertel nog eens meer over die rules?
Het mooie van de rules is, dat je diverse plugins en devices kunt gebruiken. Zo heb ik een rule om mijn kachel naar 18 graden te zetten na 10 uur 's avonds, echter niet zolang de verlichting nog in gebruik is:

code:
1
IF it is after 22:00 and beneden-thermostaat-runprogram is on and pilight-Beneden-dressoir is off THEN $BenedenTemperatuurInstelling = 18


Dit vanuit de gedachtegang dat als de verlichting nog aan is, ik waarschijnlijk nog niet naar bed ben (en dus niet in de kou wilt zitten)

Het wil soms wel eens voorkomen dat per ongeluk de voeding van mijn draadloze temperatuur sensor losgetrokken word. Om nu te voorkomen dat pimatic ten onrechte denkt dat het heel lang te koud of te warm is, heb ik een rule gemaakt die mij hiervoor waarschuwt :

code:
1
IF temperature of pilight-thermostaat-woonkamerwireless was not updated for 1 hour THEN push title:"Temperature sensor error" message:"Woonkamer wireless is not update since 1 hour" and $BenedenStopWarmte = $BenedenStopWarmte + 1


Als extra veiligheid word de variabele $BenedenStopWarmte opgehoogd met 1. Er zit namelijk een beveiliging in het aansturen van de kachel, Zodra deze variabele hoger is dan 0 word er onherroepelijk gestopt met verwarmen en zal deze ook niet langer verwarmen, totdat deze variabele minstens 5 minuten 0 is.

Een andere rule die zorgt voor het ophogen van deze variabele:

code:
1
IF contact of pilight-Beneden-tuindeur = opened THEN $BenedenStopWarmte = $BenedenStopWarmte + 1



Met dus de volgende rule om te zorgen dat de kachel per direct gestopt word:

code:
1
IF $BenedenStopWarmte > 0 and warmte is on THEN turn warmte off



Waar gebruik jij zelf pimatic nu allemaal voor?
Zelf heb ik 2 onafhankelijke Raspberry Pi's draaien. Eentje in de meterkast voor het aansturen van alle verlichting en de kachel.
Deze leunt nu nog op pilight, maar zal deze week waarschijnlijk volledig op pimatic gaan draaien.

Een tweede Raspberry Pi hangt in de schuur om alles wat maar met het zwembad te maken heeft aan te sturen.
Voor het dagelijks laten draaien van de filterpomp en zoutelectrolyse hoef ik niets meer te doen, dit gaat volledig automatisch. Ook aansturing van verwarming gebeurt via deze installatie, op basis van 2 temperatuursensoren in de waterleidingen.

Hoe installeer ik pimatic?
Installatie is relatief eenvoudig en word hier besproken

Na installatie kun je de homeduino plugin installeren met het commando sudo npm install pimatic-homeduino
Onder de sectie plugins in je config.json plaats je dan de volgende config:

code:
1
2
3
4
5
6
7
{
      "plugin": "homeduino",
      "driver": "gpio",
      "driverOptions": {},
      "receiverPin": 16,
      "transmitterPin": 15
    }



Waarbij de pin nummering op basis van WiringPi nummering is.

Het gaat te ver om nu alles voor te kauwen in deze blog. Kijk eens rond op de site van pimatic of de issues pagina op github: https://github.com/pimatic/pimatic/issues

Mocht je ergens vragen over hebben, stel ze dan daar of hier in de comments op deze blog maar gelieve geen PM's te sturen met vragen ;)

Update: nog wat coole shizzle die je pimatic kan doen

Mijn zwembad heeft een LED RGB lamp met iets van 15 verschillende standen. Wanneer je de lamp uit zet en binnen x seconden weer aan, is dat een teken voor de lamp om naar het volgende programma te schieten. Zou je langer dan x seconden wachten, blijft hij gewoon bij het huidige programma.
Van begon af aan had ik dus al een knop 'volgend programma' die er voor zorgde dat de lamp uitging en na 1 seconde weer aan.
Later heb ik dit uitgebreid door er een variabele aan te koppelen. Elke keer als er op die knop gedrukt word, word de variabele met +1 opgehoogd.
Een andere rule zorgt er voor dat deze variabele nooit meer dan 15 kan worden, en dus na 15 weer naar 1 schiet.

Van de 15 mogelijke standen heb ik 2 favorieten : volledig wit en een stand waar de lamp heel rustig van kleur naar kleur verloopt.
Vervolgens 2 knoppen gemaakt "wit" en "kleuren programma". Wanneer 1 van die knoppen word ingedrukt, zal een rule net zo lang de lamp aan en weer uit zetten tot het gewenste programma is bereikt (lees: de variabele de juiste inhoud heeft).




Dit is nog een ouder filmpje waar het aansturen van een LCD met python ging, inmiddels kan pimatic rechtstreeks een LCD aansturen: op basis van rules kun je dus verschillende tekst laten zien.



Wanneer pimatic ziet dat er op de knop gedrukt word, stuur ik een python (pi-blaster) script aan die met soft PWM de LED ring van die kop aan of uit zet. Vervolgens word er nog een status info op het LCD gezet.

Building the dream

Door Koffie op donderdag 3 juli 2014 16:06 - Reacties (34)
Categorie: -, Views: 8.868

In de afgelopen weken is een langgekoesterde wens van ons gerealiseerd : het bouwen een eigen zwembad :Y)

Het bouwen van een zwembad en alles wat daarbij komt kijken is iets wat je niet zomaar even doet. Er is veel tijd gegaan in het uitzoeken, afwegen, rekenen en plannen.
Voordat je überhaupt ook maar 1 schep in de grond zet zul je moeten beslissen wat voor type bad je nu eigenlijk wilt hebben.
Grofweg zijn er 3 type baden:

Monoblock/polyester kuip
De meest makkelijke manier een om een bad te plaatsen. Vanaf de fabriek word een grote bak/kuip geleverd welke je alleen nog maar 'even' in de grond hoeft te plaatsen.

http://zooi.oostindie.com/images/328Polyester_zwembad_ibiz_tn.jpg

Ovale stalen wand
Voor dit type bad hoef je alleen 2 steunmuren te maken op de beide lange zijden, vervolgens plaats je een stalen wand tussen de muren, waardoor deze vanzelf ovaal zal gaan staan.

http://zooi.oostindie.com/images/145staalwand_tn.jpg

Bouwkundig bad
De term bouwkundig bas is wat divers maar komt er eigenlijk ook neer dat je van scratch af aan een bak/kuip opbouwt. Meestal is dit met grote betonblokken of styropor bouwstenen.

http://zooi.oostindie.com/images/809Styropor_Gerade_03_300_tn.jpg

Een monoblock viel voor ons af vanwege de prijs en het feit dat deze nogal snel omhoog kunnen 'drijven' bij leegstand en hoog grondwater.
Onze eerste keuze was een stalen wand, maar in overleg met de leverancier hebben we hier vanaf gezien. Bij ons hebben we nogal last van grondwater, en waren toch wel bang dat dit een probleem voor de relatief dunne zou kunnen zijn.
Uiteindelijk hebben we dus gekozen voor een bouwkundig bad.
En dan begint het rekenen, wikken/wegen en uitzoeken in het kwadraat :+

De plek waar het bad globaal moest komen wiste we al, maar nu begon het echte meten. Met touwtjes hebben we een rechthoek van 8 x 4 meter uitgezet

http://zooi.oostindie.com/images/9382013_09_01_11_tn.25_tn.40_tn.jpg http://zooi.oostindie.com/images/1442013_09_01_11_tn.28_tn.39_tn.jpg

Het plan was om pas tegen de zomer te beginnen met de bouw, ook om het financiële plaatje op orde te krijgen.
In de tussentijd kon ik mooi beginnen met alle informatie op te slurpen die er maar te vinden was.
Na veel inlezen, nadenken en afwegen kwamen we op het volgende wensenlijstje uit

Zwembad rechthoek 8x4x1.5
Zandkleurige liner
2 mini inbouw LEDlampen
2 extra brede skimmers
2 inspuiters
stofzuigeraansluiting
Graniet randstenen
Zoutelectrolyse
13 kW warmtepomp (zelf uit Duitsland laten komen)

Ondertussen waren we druk bezig met uitzoeken hoe we de bouw aan zouden pakken. In de eerste instantie gingen we voor een DIY project, maar dat is uiteindelijk volledig uitbesteed. We waren toch wel heel erg bang voor grote problemen met het extreem hoge grondwater wat wij hebben.
Omdat we van tevoren al inzagen dat de tuin naar de knoppen zou gaan door al het bouwmaterieel besloten we ook meteen een stuk terras rondom het bad aan te laten leggen.
Na diverse partijen gesproken te hebben, kwamen we uit bij een bedrijf die alles in volledig eigen beheer wilde uitvoeren, terwijl ik alle spullen zou leveren.

We hebben gezorgd dat alle spullen ruim voor de bouw binnen waren, zodat er marge was om spullen te kunnen omruilen of bijbestellen. Het gevolg is wel dat je hele huis vol meuk staat, maar ik vond het toch wel erg fijn om zo alles tijdig te kunnen regelen.

En toen was het dan zover .. de graafmachines arriveerde en de eerste stukken gras vlogen je om de oren :+





Het graven is op een vrijdag begonnen en op zaterdag afgemaakt. Omdat de kleilaag zo vreselijk hard was hebben we halverweg een extra graafmachine laten komen.
Al bij het graven bleek dat het grondwater (gelukkig) reuze mee bleek te vallen. Sterker nog: op de laagste diepte (circa 1.90) hadden we geen grondwater terwijl het hoger (circa 1.50).
Onze conclusie (achteraf) is dat we niet zozeer last hebben van grondwater, maar dat de kleilaag zo dik is, dat het hemelwater er amper doorheen komt.

Na het afgraven van het gat moest er een betonvloer in komen. Na een dag hard werken stond er een bekisting met daarin 2 lagen betonnetten, klaar om gestort te worden.



http://zooi.oostindie.com/images/5412014_06_10_16_tn.32_tn.45_tn.jpg http://zooi.oostindie.com/images/1292014_06_10_16_tn.33_tn.51_tn.jpg http://zooi.oostindie.com/images/3422014_06_10_16_tn.34_tn.24_tn.jpg

http://zooi.oostindie.com/images/6322014_06_10_16_tn.37_tn.54_tn.jpg http://zooi.oostindie.com/images/7602014_06_10_16_tn.42_tn.26_tn.jpg http://zooi.oostindie.com/images/1952014_06_10_17_tn.14_tn.46_tn.jpg

Nu de vloer er lag kon er een begin gemaakt worden aan het opbouwen van de wanden. Zoals gezegd hebben wij gekozen voor een bouwkundig bad met styropor blokken. Deze blokken zijn zeer stevig en stapelen als lego. Wanneer goed geplaatst, kun je de hele muur van bovenaf volstorten met beton.
Na het plaatsen van de muur (maar vóór het storten) kun je alle inbouwdelen in de muur plaatsen (skimmers, inspuiters, lampen, stofzuigeraansluting.





Nu ging het al echt op een zwembad ijken, helemaal na het dichtgooien van de wanden en voorzichtig uitmeten van de randstenen.



Inmiddels was het minder zomers weer geworden, en dat begon toch wel invloed te hebben op de planning.
Halverwege het aansmeren van de vloer begon het zo hard te regenen dat we alles er weer uit konden scheppen. Gene leuk klusje en zonde van het werk en uren. Direct een tentje erop gebouwd en het maar afgemaakt met egaline.

De volgende was het zover: deze dag zou de liner (zeg maar de folie waar het water er in zit) gaan, spannend!
Het plaatsen van de liner ging sneller dan verwacht en zonder noemenswaardige problemen.



http://zooi.oostindie.com/images/2350445_1445_tn.jpg

Direct na het inhangen van de liner moet je beginnen met vullen met water. Wanneer je een centimeter of 10 onder het eerste inbouwdeel bent, kun je voorzichtig een opening in de liner snijden en de pakking erop schroeven.

Helaas zat er een lang weekend tussen deze en de volgende werkdag, maar daarna kon gelukkig al het water in 1 dag erin lopen.



Het bad zat nu officieel vol! :Y)

Ondertussen is ook het pomphuis zo goed als klaar, nog wat laatste puntjes op de I om alles via de relais van de Raspberry Pi te laten lopen.

http://zooi.oostindie.com/images/577RaspiPool_tn.jpg

http://zooi.oostindie.com/images/9852014_06_30_21_tn.02_tn.34_tn.jpg http://zooi.oostindie.com/images/6362014_06_30_20_tn.26_tn.27_tn.jpg http://zooi.oostindie.com/images/4602014_06_30_21_tn.01_tn.34_tn.jpg

http://zooi.oostindie.com/images/2452014_06_30_21_tn.01_tn.48_tn.jpg http://zooi.oostindie.com/images/6832014_06_29_14_tn.01_tn.17_tn.jpg http://zooi.oostindie.com/images/3152014_06_29_14_tn.01_tn.38_tn.jpg

Voor de geintresseerden naar hoe de timelapse filmpjes zijn gemaakt: Men neme een Raspberry Pi met camera module, bouw deze in een of ander vogelhuisje en hang deze uit het raam van de slaapkamer van je dochter :P

http://zooi.oostindie.com/images/3912014_06_05_18_tn.41_tn.55_tn.jpg http://zooi.oostindie.com/images/4082014_06_05_20_tn.00_tn.29_tn.jpg

Raspberry Pi met pilight voor noobs deel 2

Door Koffie op zondag 27 april 2014 14:32 - Reacties (29)
Categorie: -, Views: 30.649

Vol goede moed heb ik deel 1 gepost: Koffie's tweakblog: Raspberry Pi met pilight voor noobs deel 1 om vervolgens niets mee te posten. Beetje jammer :P

De reden is eigenlijk zoals zo vaak: ik was veel te druk. Ondertussen heb ik niet stil gezeten met mijn eigen Raspberry Pi project, ook de verschillende software voor aansturen van je domotica is verder ontwikkelt.
Met deze post wil ik de draad toch weer oppakken. Wanneer je deel 1 gevolgd hebt, heb je werkende Raspberry Pi, maar verder nog niets.
Tijd om een breadboard in elkaar te prutsen.

Benodigdheden
Breadboard
433MHz Superheterodyne 3400 RF Transmitter and Receiver link kit
Jumperwires

Al deze onderdelen kun je o,a, bij Nederlandse webshops vinden, maar als je enig geduld op komt brengen ook voor een fractie van de prijs van ebay. Let goed op dat je RF set de juiste frequentie is (433Mhz) en dat het een Superheterodyne is (deze hebben veel beter ontvangst).

Hardware installeren
Zorg ervoor dat je de Raspberry Pi zo voor je hebt liggen dat de GPIO pinnen rechtsboven zitten. De pin linksboven is pin 1, de pin rechtsonder is pin 26.
Maak gebruik van het volgende schema:

http://zooi.oostindie.com/images/842raspberrypi_GPIO_tn.jpg

Pak de zender en receiver en druk deze in je breadboard. Naast elkaar, niet onder elkaar!
Pak nu 2 jumperwires (rood/zwart of rood/blauw) . Plaats de rode op de 5v en de zwarte/blauwe op de 0v/GND van de Raspberry Pi.
De andere kant van de jumperwires steek je in de + en - baan die over de hele breedte van het breadboard loopt.
Vervolgens lus je de + en - vanaf die baan door naar de + en - van de zender en ontvanger (zie beschrijving bij de pinnen op de modules).
Vervolgens moet je alleen nog een jumperwire op de data van de zender en ontvanger plaatsen.
De data jumperwire van de ontvanger plaats je op GPIO 0, de data van de zender plaats je op GPIO 1.

http://zooi.oostindie.com/images/1422014_04_27_13_tn.39_tn.26_tn.jpg

http://zooi.oostindie.com/images/9952014_04_27_13_tn.39_tn.49_tn.jpg

pilight installeren
Op dit moment is pilight 3.0 de huidige stable version, dat is dus ook de versie die we gebruiken.
Breng een SSH verbinding met je Raspberry Pi tot stand, en voer het volgende commando uit: git clone --depth 5 -b master https://github.com/pilight/pilight.git
Mogelijk mis je nog wat onderdelen die pilight nodig heeft, deze installeer je als volgt:
sudo apt-get install dialog
sudo apt-get install cmake

Nu kun je pilight compileren met alle benodigde opties. Ga naar de pilight directory: cd pilight en start de setup: sudo ./setup.sh

http://zooi.oostindie.com/images/399piligt_install1_tn.jpg

In principe kun je alle opties laten voor wat ze zijn, maar persoonlijk zet ik alle protocollen die ik niet gebruik uit,. Door middel van SPATIE kun je een optie aan of uit zetten.
Zorg er voor dat HARDWARE_433_LIRC en WEBSERVER in ieder geval enabled zijn. Wacht tot de installatie klaar is met alle benodigde onderdelen te compileren.

http://zooi.oostindie.com/images/971piligt_install2_tn.jpg

LIRC configureren
Na de installatie moet pilight nog geconfigureerd worden. Het is verstandig om pilight in lirc-modus te gebruiken. In deze modus laat je LIRC alles verzenden en ontvangen. In een later stadium kun je dan overstappen naar een hardwarematig filter welke de CPU van de Raspberry Pi zal ontlasten.
Voor het volgende commando uit: sudo modprobe lirc_rpi gpio_in_pin=17 gpio_out_pin=18. Op deze manier vertel je LIRC op welke GPIO de ontvanger (GPIO 0, BCM pin 17) en zender (GPIO 1, BCM pin 18) zit.
Wanneer dit commando geen foutmeldingen geeft, kun je deze direct in je bootprocedure opnemen. Edit je modules bestand dmv sudo nano /etc/modules en voeg daar de volgende regel aan toe: lirc_rpi gpio_in_pin=17 gpio_out_pin=18.
Sluit af met de toetsencombinatie CTRL-x en bevestig het schrijven van de wijzigingen door op y te drukken. Houd de opgegeven naam aan.

pilight configureren
Open de settings van pilight: sudo nano /etc/pilight/settings.json. Zorg dat je settings er als volgt uitzien:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
        "log-level": 4,
        "pid-file": "/var/run/pilight.pid",
        "config-file": "",
        "hardware-file": "/etc/pilight/hardware.json",
        "log-file": "/var/log/pilight.log",
        "send-repeats": 3,
        "receive-repeats": 1,
        "webserver-enable": 1,
        "webserver-root": "/usr/local/share/pilight",
        "webserver-port": 80,
        "webserver-cache": 1,
        "webserver-authentication": 0,
        "webserver-username": "",
        "webserver-password": "",
        "whitelist": "",
        "update-check": 1,
        "standalone": 0,
        "port": 5000
}


Sluit af met de toetsencombinatie CTRL-x en bevestig het schrijven van de wijzigingen door op y te drukken. Houd de opgegeven naam aan.

Bewerk nu je hardware.json: sudo nano /etc/pilight/hardware.json en zorg dat deze er als volgt uitziet:

code:
1
2
3
4
5
{
        "433lirc": {
                "socket": "/dev/lirc0"
        }
}


Sluit af met de toetsencombinatie CTRL-x en bevestig het schrijven van de wijzigingen door op y te drukken. Houd de opgegeven naam aan.

pilight starten en testen
Start nu de pilight daemon in debug modus op: sudo pilight-daemon -D.

http://zooi.oostindie.com/images/900pilight_daemonstart_tn.jpg

Pak een KlikAanKlikUit (of gelijksoortig ondersteund merk( afstandsbediening (of andere zender) en stuur een signaal. Als het goed is, zul je nu op je console zien dat pilight het commando ontvangt.

http://zooi.oostindie.com/images/997pilight_daemonreceive_tn.jpg

Nu we weten dat alle hard- en software werkt, kun je de daemon stoppen dmv CTRL-C. Start nu de daemon als service : sudo service pilight start.
Standaard zal deze service al als autostart in het bootproces geplaatst worden bij de pilight installatie.

Devices in de GUI plaatsen
Nu komt het leuke: de diverse apparaten in de config zetten, zodat deze vanuit een GUI te bedienen zijn.
In mijn test heb ik een afstandsbediening gebruikt welk een KlikAanKlikUit apparaat aanstuurt met ID 8934706 en Unit 0. Deze zullen voor dit voorbeeld gebruikt worden.

Indien deze nog draait, stop de service: sudo service pilight stop, en open de config: sudo nano /etc/pilight/config.json.
Zorg dat de inhoud er als volgt uit ziet:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
        "woonkamer": {
                "name": "Woonkamer",
                "lamp1": {
                        "name": "Lamp 1",
                        "protocol": [ "kaku_switch" ],
                        "id": [{
                                "id": 8934706,
                                "unit": 0
                        }],
                        "state": "on"
                }
        }
}


Sluit af met de toetsencombinatie CTRL-x en bevestig het schrijven van de wijzigingen door op y te drukken. Houd de opgegeven naam aan.

Open daarna settings.json: sudo nano /etc/pilight/settings.json en bewerkt de regel waar "config-file" staat. Zorg dat hier het jusite pad ingevuld staat:

code:
1
"config-file": "/etc/pilight/config.json",


Sluit af met de toetsencombinatie CTRL-x en bevestig het schrijven van de wijzigingen door op y te drukken. Houd de opgegeven naam aan.

Start nu de daemon op: sudo service pilight start en ga met een browser naar het IP adres van je Raspberry Pi
Vanaf nu kun je met 1 druk op de knop in een browser een lamp aan of uit zetten.

http://zooi.oostindie.com/images/385pilight_GUI_tn.jpg

Mocht je nog vragen hebben, of foutjes in deze post zien: laat het in de comments even weten.
Binnenkort hoop ik een post te kunnen voor het aansturen van een kachel dmv een relais in combinatie met uitgebreide rules uitleg. Gezien het warme weer van de laatste tijd is het namelijk niet zo erg als je de kachel een dag 'down for maintenance' hebt ;)