Domotica met pimatic, deel 1: draadloos schakelen

Door K-Jay op woensdag 30 december 2015 13:56 - Reacties (27)
CategorieŽn: Home automation, Raspberry pi, Views: 12.335

Al langere tijd was ik van plan om mijn Raspberry Pi te gebruiken om mijn KlikAanKlikUit-ontvangers mee te bedienen. Een leuk knutselproject voor donkere avonden dat meteen wat bruikbare home automation oplevert. Wat wil een mens nog meer.
Deze blogpost bevat wat achtergrondinformatie, een stappenplan waarmee je zelf aan de slag kunt en een troubleshooting-lijst.

Pimatic
Na enig inlezen besloot ik met pimatic te gaan werken. Pimatic is een open source home automation platform, heeft een actieve community, is uit te breiden met diverse plugins en kent een mooi systeem van regels, waarmee je acties aan triggers kunt koppelen. Uiteraard loopt er een draadje op GoT.
Er zijn diverse alternatieven voor pimatic, zoals Domoticz en nog veel meer.

Don't shoot the messenger
Als Linux-n00b moest ik al mijn kennis opdoen via blogs, fora en wat trial-and-error. Een bijzonder leerzaam traject, dat wel. Alle uitgevoerde stappen heb ik bijgehouden in een document. En aangezien we in een participatiesamenleving leven, deel ik dat stappenplan via dit blog. Alles wat je hieronder leest, is dus ook ergens anders op internet terug te vinden. Ik heb het niet verzonnen, ik verdien geen credits, ik geef het alleen maar door.

Genoeg inleiding. Aan de slag
In deze blogpost behandel ik de installatie van pimatic en het schakelen van KlikAanKlikUit. Er is nog veel meer mogelijk: inmiddels doet mijn domoticasysteem het volgende:
  • verlichting (automatisch) schakelen
  • bewegingsdetectie
  • notificatie van deurbel op mobiele telefoon, inclusief een snapshot van de beveiligingscamera
  • temperatuurmonitoring
  • monitoring van elektriciteitsverbruik
  • monitoring van status van diverse apparaten
  • tonen of deur/raam open/gesloten is
  • … en nog veel meer in de planning
pimatic gui
Screenshot van mijn pimatic gui


Voorbereiding: wat heb je nodig
1 Raspberry Pi + SD-kaart
Op Raspberry Pi model A en B werkt pimatic, ik heb geen ervaring met de Pi Zero, maar dat zal ook wel lukken. Je hebt een SD-kaartje van minstens 8GB nodig. Overal te koop.

1 Arduino nano (-kloon)
Deze filtert de ruis uit het 433-MhZ signaal weg. Kost ongeveer $3 op Ebay.

1 receiver/sender kit
Om het 433-MhZ signaal te verzenden en ontvangen. Kost ongeveer $5 op Ebay.

Breadboard en jumper wires. Ook op Ebay te krijgen.


Stap 1: Raspbian installeren
Je Pi heeft een besturingssysteem nodig. Download de nieuwste versie van Raspbian. Zet het img-bestand ergens op je computer. Gebruik het open-source programma win32diskimager om de image op je SD-kaartje te zetten.

Stop de SD-kaart in je Pi en start deze op. Gebruik PuTTY of een ander programma om via ssh op de Pi in te loggen. Default login voor Raspbian is pi/raspberry.

We gaan eerst een paar zaken configureren. Geef het volgende commando:
sudo raspi-config 

en pas de volgende zaken aan:
  • Expand filesystem (zo wordt de hele SD-kaart gebruikt)
  • Change user password (voor de veiligheid)
  • Internationalisation Options -> Change timezone
  • Advanced options -> memory split (GPU op 16 MB zetten)
  • Advanced options -> Update
Reboot de Pi
sudo reboot 

en werk de Raspbian-installatie bij:
sudo apt-get update 
sudo apt-get upgrade 


Zo. Nu hebben we Raspbian geÔnstalleerd, geconfigureerd en bijgewerkt. Het begin is er.


Stap 2: Pimatic installeren en configureren
Ga naar http://pimatic.org/guide/getting-started/installation/ en volg de stappen. Dit spreekt redelijk voor zich, bij sommige stappen heb ik een paar opmerkingen.

Installation (installeren van pimatic)

Configuration
Open het config.json-bestand met de nano-editor:
sudo nano config.json 

en voer een wachtwoord in voor de user "admin". Anders wil pimatic niet starten.
Sluit nano af het ctrl+x, bevestig met y en enter.

Running
Als je voor het eerst het commando
sudo node_modules/pimatic/pimatic.js 

opgeeft, zal pimatic gaan starten. Dit duurt even. Je weet dat pimatic succesvol is gestart als er staat "listening for http request on port 80…". Je kunt nu naar de gui gaan door het ip-adres van je Raspberry pi in een browser te benaderen.

Autostarting
Voer deze stappen uit om pimatic automatisch te laten starten. Wel zo handig.

Als alles goed is gegaan zie je nu de lege GUI van pimatic. We zijn weer een stap verder!


Stap 3: Arduino nano koppelen
Nu gaan we de sender en de receiver via de Arduino nano aan de Raspberry pi koppelen.
Zet je pi uit:
sudo poweroff 


Verbind de nano via USB met je pi. Verbind de zender/ontvanger als volgt aan de nano:

Ontvanger (het brede blokje met 8 pinnen)
  • GND op pin 29 GND
  • DATA op pin 5 D2
  • VCC op pin 27 +5V
Zender (het smalle blokje met 4 pinnen)
  • VCC op pin 27 +5V
  • DATA op pin 7 D4
  • GND op png 29 GND.
pimatic gui
De Arduino nano koppelen

Zet je pi weer aan. Check welk adres je nano heeft gekregen:
cd /dev 
ls -l ttyUSB? 


Waarschijnlijk krijg je als antwoord ttyUSB0

Nu moet je de software voor de nano compileren:
sudo apt-get install arduino-core avr-libc avrdude binutils-avr gcc-avr libconfig-yaml-perl libftdi1 libyaml-perl screen python-serial 

en de sketch-file downloaden:
git clone --recursive https://github.com/pimatic/homeduino.git 

Nu nog het makefile-bestand controleren en eventueel aanpassen:
sudo nano homeduino/Makefile 

check de waarde van MONITOR_PORT en pas deze eventueel aan zodat deze overeenkomt met het adres van je nano. Sla de wijzigingen op. Nu kun je de boel naar de nano uploaden:
make upload



Stap 4: KlikAanKlikUit schakelen via de GUI
Eerst gaan we de plugin pimatic-homeduino installeren. Die hebben we nodig om KlikAanKlikUit te kunnen schakelen.
cd pimatic-app 
sudo npm install pimatic-homeduino


Nu moeten we de plugin nog even configureren, zoals beschreven op de detailpagina van de plugin.

Start pimatic, ga via het menu naar "config". Kies linksboven voor "Code" en klik rechtsboven op "Edit". Na het invoeren van je wachtwoord kun je de configfile gaan aanpassen.

pimatic gui
Het aanpassen van de config

Scroll naar de plugins-section en pas de definitie van de plugin aan:

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



Sla de config op. Pimatic zal de config controleren op fouten en dan herstarten.

Zo. Pimatic kan nu de 433Mhz-signalen van KlikAanKlikUit ontvangen. Navigeer via het menu naar "Messages" en vink hier aan dat je Debug-regels wil zien.
Verzend nu een commano met je KlikAanKlikUit-afstandbediening. Als het goed is verschijnen er nu een paar debug-regels.

pimatic gui
Debugregels

Zoek de regel die begint met "switch1" en noteer de codes die achter "id" en "unit" getoond worden. Open wederom de configfile, ga naar de devices-section en voeg je KlikAanKlikUit-apparaat toe als device. Bij "id" en "unit" vul je de genoteerde waarden in.

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 
  } 
}] 
}



Sla de config op en herstart pimatic. Als je de lege GUI weer voor je hebt, klik je rechtsboven op het tandwieletje. Klik vervolgens op "Add a new item". Je nieuwe device wordt dan getoond. Klik op het plus-symbool om de switch aan de GUI toe te voegen. Klik erop en je KlikAanKlikUit-ontvanger zal schakelen.


Troubleshooting
Bij mij ging het ook niet in een keer goed... Hier een aantal veelvoorkomende vragen, problemen en hun oplossing.

:? Hoe moet ik mijn pi stoppen/herstarten/inloggen?
  • starten: stroom-adapter aansluiten
  • inloggen: default inlog is pi/raspberry
  • herstarten: sudo reboot
  • afsluiten: sudo poweroff
:? Ik kan geen commando's uitvoeren of een commando kan niet worden gevonden
  • Controleer dat je in de juiste dir zit
  • Controleer of je het commando met "sudo" bent begonnen
:? pimatic wil niet starten
  • controleer of de admin-user een wachtwoord heeft
  • controleer of er een fout in de configfile zit: lees de laatste regels van pimatic-daemon.log
:? pimatic/Raspberry Pi valt soms uit of loopt vast
  • Probeer een andere stroom-adapter
:? Ik zie geen debugregels als ik signalen verzend
  • Zet het loglevel in config.json op "Debug"
  • Vink "Debug" aan bij "Messages"
  • Controleer dat je Arduino nano goed is aangesloten
  • Controleer dat je zender/ontvanger correct zijn aangesloten op je Arduino nano
  • Controleer de configuratie van de homeduino-plugin. Ook daar moet je debug aanzetten sinds versie 0.9
:? Verstuurde signalen komen niet altijd aan
  • Monteer een antenne (ongeveer 17cm draad) aan de antennepin van de zender
  • Controleer of er andere apparaten (modem, magnetron, etc) aan het storen zijn
Wordt vervolgd...
In een volgende blogpost zal ik uitleggen hoe je een temperatuursensor aan pimatic koppelt. Bestel er alvast maar een paar...

Op verzoek een tweetal foto's van mijn huidige setup. De boel hangt in de meterkast, dus erg netjes hoeft het er niet uit te zien ;) Op de tweede foto heb ik het deksel van de behuizing afgehaald. Daarin zie je onderin de Raspberry pi. Het rode ding daarboven is een breadboardje waarop alle binnenkomende signalen (temperatuursensors, deurbel) eerst terechtkomen. De Arduino nano zit in het witte kastje. Dat werkte beter voor het bereik.

setup-1

setup-2

Volgende: DIY head tracking, deel 1: IR-clip 01-'16 DIY head tracking, deel 1: IR-clip

Reacties


Door Tweakers user bastv, woensdag 30 december 2015 17:01

ik wil hier al maanden eens mee gaan starten meet met de blog begin ik er direct aan! heel mooi! zie uit naar de volgende blogs.

Door Tweakers user bastv, woensdag 30 december 2015 17:13

ps: waarom een Arduino en niet rechtstreeks met de pi?

Door Tweakers user joentje, woensdag 30 december 2015 17:22

Als die Arduino er niet tussen zit ontvangt de ontvanger veel ruis, wat zeer veel cpu tijd vergt van de pi om het goed te coderen. Als je dit door de arduino laat doen scheelt dat heel veel.

In de praktijk is cpu belasting zonder ongeveer 60% en met arduino tot 2%

Door Tweakers user joentje, woensdag 30 december 2015 17:23

Ik ben wel benieuwd welke weer plugin jij gebruikt voor zoveel informatie, of heb je toevallig een draadloos weerstation?



Door Tweakers user holygame, donderdag 31 december 2015 10:07

Heb je ook foto's van je setup tot nu toe?

Door Tweakers user Thedr, donderdag 31 december 2015 12:47

Leuk artikel, draai zelf ook reeds een aantal maanden pimatic en bevalt me uitstekend.
Hoe heb je die macro's geimplementeerd?

Door Tweakers user K-Jay, donderdag 31 december 2015 13:04

holygame schreef op donderdag 31 december 2015 @ 10:07:
Heb je ook foto's van je setup tot nu toe?
Jep, ik heb er twee in de blogpost gezet.

Door Tweakers user K-Jay, donderdag 31 december 2015 13:12

Thedr schreef op donderdag 31 december 2015 @ 12:47:
Hoe heb je die macro's geimplementeerd?
Maak in je config een buttonsdevice:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
      "id": "alles-uit-buttons",
      "name": "Uitschakelen",
      "class": "ButtonsDevice",
      "buttons": [
        {
          "id": "button-1",
          "text": "Verlichting 1 en 2"
        },
        {
          "id": "button-2",
          "text": "Verlichting 3 en 4"
        }
      ]
    }


en maak een regel voor elke button-press, bijvoorbeeld

code:
1
if button-1 is pressed then turn off Verlichting 1 and turn off Verlichting 2


Door Flip75, vrijdag 1 januari 2016 12:22

Keep it up! Ben heel benieuwd naar je volgende blogposts.

Enig idee of en hoe je kan schakelen met een iOS app?

Door Tweakers user K-Jay, vrijdag 1 januari 2016 20:39

Flip75 schreef op vrijdag 01 januari 2016 @ 12:22:
Enig idee of en hoe je kan schakelen met een iOS app?
Voor zover ik weet is er geen iOs app. Er is wel iemand bezig met een Android-app: http://forum.pimatic.org/...l-pimatic-with-android/24

Door Pergola3994, zondag 3 januari 2016 22:05

Ziet er goed uit wat je hebt gemaakt. Ik ben inmiddels ook al een tijdje aan het stoeien, maar kom er niet uit. Ik gebruik een arduino nano aan mij pi waaraan ik een 433mhz receiver module hang om het signaal op te pakken van mijn eurodomest setje van de action. Daarmee hoop ik dan met de transmitter de schakelaar te kunnen aansturen. Probleem is dat ik de het debug log van de pimatic helemaal niets binnen krijg als ik op de remote klik van de eurodomest. Waar zou dit aan kunnen liggen?

Door Tweakers user K-Jay, zondag 3 januari 2016 22:20

Je bent niet de enige, zie de laatste posts in het pimatic-topic op GoT. Kan een hoop oorzaken hebben:
- brakke ontvanger
- onjuiste configuratie (kloppen alle pin-nummers?)
- debug staat niet aan
Heb je andere 433-hardware om mee te testen? Krijg je wel signalen binnen als je zonder Arduino werkt?
Overigens kun je dit het beste bespreken in het genoemde topic, dan wordt het door meer mensen gelezen.

Door skipper79, vrijdag 8 januari 2016 09:32

@K-Jay, mijn complimenten voor je blog. Ziet er goed en volledig uit. Inmiddels is Pimatic tot de standaard inventaris gaan behoren, met een tablet aan de muur :)

Door Tweakers user Ethereal73, zaterdag 9 januari 2016 03:42

Een makkelijkere manier om pimatic te installeren.

http://forum.pimatic.org/topic/909/pimatic-installer

*Installeren van pimatic-homeduino op een Rpi2 faalt,

1. plug je arduino device aan je Rpi2
2. sudo tail -f /var/log/messages
3 Zoek naar je arduino, zal te vinden zijn op iets als ttyACM0.

4 Ga naar : /home/pi/pimatic-installer/homeduino-scripts
5 Open een van de mega, uno of nano scripts, naar gelang je arduino device.
6 Verander de MONITOR_PORT = /dev/ttyUSB0 naar MONITOR_PORT = /dev/ttyACM0
7 opslaan, en met de install enkel homeduino opnieuw installeren met de veranderde optie.

Alle vier de poorten op een Rpi2 zijn zo te gebruiken.


*Ben niet handig in het schrijven van handleidingen, don't shoot me!

[Reactie gewijzigd op zaterdag 9 januari 2016 04:12]


Door Tweakers user BaRF, zondag 10 januari 2016 17:46

Thanks! Ik HAD dit allemaal ook draaien voor lange tijd, tot ineens een stroomstoring thuis mijn sd kaart verk$#53t had - spijtig genoeg geen SD backkup gemaakt :( Ik was echter weer een beetje kwijt wat ik allemaal gedaan had, maar door deze tutorial heb ik eindelijk weer alle info bij elkaar :)

Door Tweakers user sw3ex, dinsdag 12 januari 2016 13:50

Hey ziet er een simpele maar leuke setup uit, wat ik mij afvraag is of je ook de ingebouwde verlichting beheert en zo ja hoe? Vertrekt dit allemaal vanuit de meterkast of…?
Ik heb best wel zin om ook zoiets voor elkaar te krijgen maar ik woon in een huurhuis dus het mag niet te ingrijpend zijn en het liefst van al zou ik het willen hergebruiken in een volgend huis.

Door Tweakers user BaRF, dinsdag 12 januari 2016 20:22

Mmm, dankzij je tutorial draait alles alweer als een zonnetje, maar er is 1 ding dat ik maar niet voor elkaar krijg: het autostarten :( Ik heb alle autostart regels gevolgd en krijg ook geen foutmelding, behalve bij het daadwerkelijke starten, dat hij pimatic niet kan vinden?

Door Tweakers user K-Jay, dinsdag 12 januari 2016 21:41

@sw3ex: ik heb mijn pi in de meterkast hangen, maar het beste kies je een centrale plaats in huis. Je ingebouwde verlichting beheren kan, kijk eens op klikaanklikuit.nl naar de AWMR-230.
@BaRF: mooi dat alles weer draait! Bij mij ging het autostarten ook niet meteen goed. Welke foutmelding krijg je precies?

Door Tweakers user BaRF, maandag 18 januari 2016 22:36

Autostart geeft geen foutmelding, start gewoon niet - MAARR als ik hem dan nog een keer wil starten geeft ie aan dat het process already aan het runnen is (pid 2326)...

Door Tweakers user K-Jay, maandag 18 januari 2016 22:43

waarschijnlijk staat er dan wat waardevolle debug-info in pimatic-daemon.log :)

Door Dennis, maandag 1 februari 2016 14:58

Hallo K-Jay,

Onwijs gave beschrijving! Zelf heb ik ook een raspberry draaien met Pimatic. Aan de hand van jou beschrijving heb ik nu ook een Arduino besteld vanwege de hoge CPU belasting zonder. In jou printscreens zie ik dat de deuren dicht zijn. Ik heb een goedkope sensor uit China die niet ziet of de deur openstaat. Welke sensors gebruik jij hiervoor? De echte kaku?

Door Tweakers user K-Jay, maandag 1 februari 2016 15:14

@Dennis voor de meeste deuren heb ik de echte KAKU-sensor.
Ik heb ook een paar uit China en die stuurt alleen een signaal als de deur geopend wordt, maar niet als de deur weer gesloten wordt. Dit kun je deels oplossen door in de pimatic config aan te geven dat de contactsensor ge-reset moet worden na een aantal seconden.
Overigens hebben mijn Chinese sensors een groter bereik dan die van KAKU, wellicht dankzij de uitschuifbare antenne en de 12V-batterij.

Door Dennis, maandag 1 februari 2016 16:08

K-Jay schreef op maandag 01 februari 2016 @ 15:14:
@Dennis voor de meeste deuren heb ik de echte KAKU-sensor.
Ik heb ook een paar uit China en die stuurt alleen een signaal als de deur geopend wordt, maar niet als de deur weer gesloten wordt. Dit kun je deels oplossen door in de pimatic config aan te geven dat de contactsensor ge-reset moet worden na een aantal seconden.
Overigens hebben mijn Chinese sensors een groter bereik dan die van KAKU, wellicht dankzij de uitschuifbare antenne en de 12V-batterij.
Dank voor je reactie. Ik heb inderdaad een reset meegegeven zodat de schakelaar weer dicht staat. Echter kan ik nooit zien of me ramen dicht zijn als ik het huis uitloop ;). Ga ook maar de echter kaku sensors bestellen voor me ramen. Kan op ebay namelijk niks vinden die open/closed aangeven.
Voor de deuren maakt dat weer niet uit. Die schakelen alleen de verlichting aan als de deur opengaat voor 5 min.

Door Tweakers user Charly Manolo, zondag 19 augustus 2018 13:03

Beste K-Jay,

Met belangstelling las ik deze blog en besloot dit ook te gaan maken.
( maar misschien ben ik een beetje laat omdat dit project inmiddels alweer een tijdje bestaat en er wijzigingen zijn)
Na alles in huis te hebben begon ik met de weinig kennis die ik heb.
Het ging helaas al mis bij stap 2 als ik Pimatic wilde installeren.
Ik krijg dan een hele rij warnings, waaronder onderstaande:

npm install pimatic --prefix pimatic-app --production
npm WARN deprecated coffee-script@1.12.7: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
npm WARN deprecated jayschema@0.3.2: this project is no longer maintained
npm WARN installMany coffee-script was bundled with pimatic@0.9.43, but bundled package wasn't found in unpacked tree
.
Heeft iemand misschien voor mij een tip om me verder te helpen?
Alvast bedankt,

Door Tweakers user K-Jay, maandag 20 augustus 2018 11:09

Heeft iemand misschien voor mij een tip om me verder te helpen?
Alvast bedankt,
Heb jij ook deze thread gestart? https://forum.pimatic.org...rrors-during-installation
Daar staan dezelfde errors, plus een vraag naar de Linux-installatie. Je kunt het beste Raspbian Jessie gebruiken op je pi.

Reactie formulier
(verplicht)
(verplicht, maar wordt niet getoond)
(optioneel)