Raspberry Pi: GPIOs schalten

Aus FHEMWiki

Mit FHEM lassen sich auch die GPIO's 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 -gt 1 ]
then
  STATE=1
fi
echo "$STATE" > /sys/class/gpio/gpio$PORT/value

Der Aufruf des Script erfolgt dann mit Angabe des Pins 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

In Arbeit: Perl-Modul basierend auf BCM2835-Modul

Dummy-Schalter

Über einem 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 &")\
 }\
}

Externe Links

http://elinux.org/RPi_Low-level_peripherals

http://search.cpan.org/~mikem/Device-BCM2835-1.0/lib/Device/BCM2835.pm