Raspberry Pi met pilight voor noobs deel 2

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

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 ;)