Domoticz – relais schakelen via GPIO

Deze tutorial beschrijft hoe je een relaisbord op een Raspberry Pi installeert en hoe je het bedient met Domoticz. Met een relais kun je apparatuur aansturen die een hogere spanning/stroom nodig heeft dan de Raspberry Pi kan leveren, denk aan de lamp bij de voordeur of een vijverpomp. Bij grote spanningen/stromen wordt vaak gebruik gemaakt van een stuur- en lastrelais combinatie.

Stap 1: Sluit het relais aan op de Raspberry Pi
Sluit het relais(bord) aan op de Raspberry Pi. Gebruik de volgende tabel voor de pinaansluiting.

Aansluittabel

Bij gebruik van een relaismodule ziet de opstelling er als volgt uit.

Aansluitschema

Stap 2: Valideer de werking via de WiringPi gpio-module
WiringPi zit tegenwoordig in de distributie van Raspberry Pi OS, dit controleer je door in de desktop naar
Start -> Voorkeuren -> Add/Remove software te gaan en te zoeken op WiringPi. Als de bibliotheek gevonden is er er staat een vinkje voor dan is deze geïnstalleerd. Mocht je regelmatig je systeem updaten is de kans erg klein dat je een OS-versie hebt waarbij de WiringPi bibliotheek handmatig geïnstalleerd moeten worden.

Lees bij de ontwikkelaar er meer over. Controleer of dit het geval bij jouw Raspberry het geval is met dit commando

gpio -v

Terugkoppeling van gpio -v

Dit is het resultaat bij een geïnstalleerde WiringPi bibliotheek. Mocht het resultaat eruitziet als ‘gpio: commando niet gevonden‘, moet het WiringPi-pakket geïnstalleerd worden met het commando:

sudo apt-get install wiringpi

Omdat WiringPi waarschijnlijk in de distributie van jouw Raspberry zit, krijg je na het uitvoeren van de opdracht waarschijnlijk de volgende melding. Zo niet? Dan zie je dit bericht niet.


Geen WiringPi beschikbaar?
Het komt voor dat er geen WiringPi voorhanden is en dat het zich ook niet laat installeren zoals hierboven aangegeven, dat merk je doordat het commando gpio -v niet herkend wordt. Waarschijnlijk dient er een update op je Raspberry Pi doorgevoerd te worden. Kijk hiervoor op de website van de ontwikkelaar van WiringPi, te weten Gordon Henderson: http://wiringpi.com/news

Na de update zal het commando gpio -v hoogstwaarschijnlijk de terugkoppeling geven zoals hierboven aangegeven.


We gaan van start!

Om GPIO17 als type OUT in te schakelen, kun je de volgende opdracht typen:

gpio export 17 out

GPIO17 wordt nu geëxporteerd als de UITgang en het relais wordt ingeschakeld. Speel gewoon wat met de volgende commando’s:

gpio readall

Bovenstaande commando toont de huidige status van alle pinnen gpio exports, daarnaast toont het alle huidige geëxporteerde pinnen.

Alle geëxporteerde pinnen kunnen door Domoticz worden gelezen. Bij GPIO 17 (pin 11) zie je dat het nu een ‘OUT’-pin is. Je kunt hier kijken: http://wiringpi.com/the-gpio-utility/ voor meer informatie.

Stap 3: Bereid de GPIO-pinnen voor Domoticz voor met sysfs
Volgens Domoticz is het gebruik van de wiringPi-module de ‘oude’ manier en de ‘nieuwe’ manier is met Generic sysfs GPIO. Als we GPIO17 willen exporteren, kunt u de volgende opdracht gebruiken:

echo 17 >> /sys/class/gpio/export

Gebruik de volgende opdracht om te controleren of de pin geëxporteerd is:

ls /sys/class/gpio

Zoals je hierboven ziet is de standaard richting van de pinnen IN. Net als de wiringPi-module kunnen we de richting veranderen door:

echo out >> /sys/class/gpio/gpio27/direction

Echter! zoals we hebben gemerkt door de wiringPi, als we de status op OUT zetten, wordt de pin actief en wordt het relais ingeschakeld. We willen niet dat de relais standaard is ingeschakeld, dus we moeten de ‘direction’ op HOOG zetten.

We moeten ook de status van de GPIO-pin omschakelen. Standaard denkt Domoticz dat de schakelaar aan staat als en het relais uit is.
Gebruik de volgende opdrachten om de GPIO status om te zetten:

sudo sh -c “echo ‘1’ >> /sys/class/gpio/gpio27/active_low”
echo high > /sys/class/gpio/gpio27/direction

Nu hebben we de status omgeschakeld en het relais is standaard uitgeschakeld. Je kunt de volgende commando’s geven om het relais in en uit te schakelen:

echo 1 > /sys/class/gpio/gpio27/value
echo 0 > /sys/class/gpio/gpio27/value

Stap 4: Schakel de GPIO automatisch in na een herstart
We weten nu hoe we een GPIO-pin kunnen inschakelen met wiringPi en sysfs. Na een herstart worden echter alle pinnen in hun standaardstatus (in) gezet. Er zijn verschillende manieren, maar mijn voorkeur gaat uit naar een eigen bashscript (.sh) uitgevoerd vanuit rc.local.

Maak een setGpio.sh-scriptbestand
We voegen een setGpio.sh-scriptbestand toe aan onze homedirectory. In dit script exporteren we GPIO17 en GPIO27 omdat we twee relais in domoticz willen beheren. Open de editor:

nano ~/setGpio.sh

Kopieer de code van het script en plak deze in de editor. Sla het bash-script op en sluit de editor af.

Geef het script de volgende permissies:

chmod +x setGpio.sh

Voer dit script uit in het bestand rc.local:

sudo nano /etc/rc.local

Voeg aan het einde van jet script en voor exit 0 de volgende regel:

/home/pi/setGpio.sh

Sla het bestand op en activeer een herstart:

sudo reboot

Na het opnieuw opstarten kun je de geëxporteerde pinnen controleren:

gpio exports

Het resultaat zou er als volgt uit moeten zien:

GPIO Pins exported:
17: out 0 none
27: out 0 none

Zo niet, controleer dan je logbestanden in /var/log (begin met de bootlog: cat /var/log/boot.log)

Stap 4: Voeg schakelaars toe in Domoticz
Nu kunnen we de relais beheren. We willen twee schakelaars in Domoticz om de status van de relais te wijzigen.

a) GPIO-hardware toevoegen
Voeg in Instellingen -> Hardware het type ‘Generic sysfs GPIO‘ toe. Geef het een naam zoals: Algemeen GPIO.

Klik op ‘Toevoegen’. Je zou nu de naam en het type in het overzicht moeten zien.

b) Apparaten bewerken
Ga naar Instellingen -> Apparaten. Je ziet automatisch de geëxporteerde GPIO-pinnen.

Het project voor mij is het automatiseren van mijn voordeur. Dus met de ene schakelaar wil ik de lamp bij de voordeur inschakelen en met de andere schakelaar de lamp in de tuin.

Ik hernoem Idx1 (GPIO17) naar Lamp Voordeur en Idx2 (GPIO27) naar Lamp Tuin door op het potlood (edit) te klikken. Je kunt dit ook doen via Aanpassen in het Domoticz venster.

c) Schakel schakelaars in
Je kunt de schakelaars in Domoticz inschakelen door op de groene pijl van een apparaat op de pagina Instellingen -> Apparaten te klikken.

d) gebruik de schakelaars in Domoticz
Ga naar de Schakelaars pagina in Domoticz. Hier zie je de twee toegevoegde schakelaars voor de lampen. Je kunt ze aan- of uitzetten door op het lampje te klikken.


Aanvullende informatie van Domoticz- Wiki
Aangezien het een lastige tutorial is, helpt wellicht de volgende link: https://www.domoticz.com/wiki/GPIO


Have A Nice Day!

4 Reacties

  1. Wow, hier was ik al héél lang naar op zoek. Ik gebruikte eerst de oude methode, maar moest dan altijd na een reboot (of bij stroomuitval) alles opnieuw activeren. Nu ook na reboot gewoon alle relais weer actief.
    Eén ‘maar’: op één of andere manier is bij mij alles net omgekeerd: aan is uit etc. dat los ik wel op in Domoticz door de timers zo in te stellen dat het goed gaat, maar het is visueel niet logisch.

  2. Gelukt: ik moest in setGpio.sh alle ‘1’ op ‘0’ zetten. Werkt prima (eindelijk)!

Reacties zijn gesloten.