Raspberry Pi: GPIOs schalten: Unterschied zwischen den Versionen
Klausw (Diskussion | Beiträge) |
Akw (Diskussion | Beiträge) |
||
Zeile 12: | Zeile 12: | ||
fi | fi | ||
STATE=$2; | STATE=$2; | ||
if [ $STATE - | if [ $STATE -ge 1 ] | ||
then | then | ||
STATE=1 | STATE=1 |
Version vom 13. Februar 2015, 18:49 Uhr
Mit FHEM lassen sich auch die GPIOs des Raspberry Pi steuern. Generell gibt es einige Möglichkeiten, eine entsprechende Steuerung zu verwirklichen. Als Informationsquelle empfiehlt sich hier die Low-Level Peripherals Seite des Embedded Linux Wiki
Bash Script
Zum schalten der GPIOs via Bash kann folgendes Script (fhem-gpio.sh) verwendet werden:
#!/bin/bash PORT=$1; if ! [ -d /sys/class/gpio/gpio$PORT ] then echo "$PORT" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio$PORT/direction fi STATE=$2; if [ $STATE -ge 1 ] then STATE=1 fi echo "$STATE" > /sys/class/gpio/gpio$PORT/value
Der Aufruf des Scripts erfolgt dann mit Angabe der Pinnummer sowie des Zustands des Pins, z. B.:
fhem-gpio.sh 17 1 # Pin 17 in High-Zustand versetzen fhem-gpio.sh 17 0 # Pin 17 in Low-Zustand versetzen
Wichtig: Das Script muss leider unter root (z.B. per sudo) aufgerufen werden. Der Einfachheithalber kann das Script unter /usr/sbin kopiert werden.
Perl-Modul
Das Modul RPI_GPIO für den Zugriff auf die GPIO Pins des Raspberry wird bereits mit FHEM mitgeliefert. Es setzt die WiringPi Bibliothek voraus. Installationsschritte sind in der Commandref zu finden. Diskussions Thread im Forum
In Arbeit: Perl-Modul basierend auf BCM2835-Modul
Dummy-Schalter
Über einen Dummy-Schalter kann das Bash-Script dann getriggert werden.
Im Fall von FS20 sähe eine entsprechende Schalter-Definition beispielsweise so aus:
define gpio_17 FS20 [Hauscode] [Devicecode] attr gpio_17 dummy 1 define act_on_gpio_17 notify gpio_17 {\ if ("%" ne "off") {\ system("sudo fhem-gpio.sh 17 1 &")\ } else {\ system("sudo fhem-gpio.sh 17 0 &")\ }\ }