Raspberry Pi: GPIOs schalten

Aus FHEMWiki
Version vom 10. Mai 2013, 21:51 Uhr von Generix (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Mit FHEM lassen sich auch die GPIO's des Raspberry Pi steuern. Generell gibt es einige Möglichkeiten, eine entsprechende Steuerung zu verwirklichen. Als Infor…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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