Raspberry Pi: GPIOs schalten: Unterschied zwischen den Versionen

Aus FHEMWiki
(→‎Dummy-Schalter: Umstellung auf $EVENT)
K (Umstellung auf source-Tags)
Zeile 4: Zeile 4:
Zum schalten der GPIOs via Bash kann folgendes Script (fhem-gpio.sh) verwendet werden:
Zum schalten der GPIOs via Bash kann folgendes Script (fhem-gpio.sh) verwendet werden:


<nowiki>#!/bin/bash
<source lang="bash">#!/bin/bash
PORT=$1;
PORT=$1;
if&#160;! [ -d /sys/class/gpio/gpio$PORT ]
if ! [ -d /sys/class/gpio/gpio$PORT ]
then
then
   echo "$PORT" &gt; /sys/class/gpio/export
   echo "$PORT" > /sys/class/gpio/export
   echo "out" &gt; /sys/class/gpio/gpio$PORT/direction
   echo "out" > /sys/class/gpio/gpio$PORT/direction
fi
fi
STATE=$2;
STATE=$2;
Zeile 16: Zeile 16:
   STATE=1
   STATE=1
fi
fi
echo "$STATE" &gt; /sys/class/gpio/gpio$PORT/value</nowiki>
echo "$STATE" > /sys/class/gpio/gpio$PORT/value
</source>
 
Der Aufruf des Scripts erfolgt dann mit Angabe der Pinnummer sowie des Zustands des Pins, z.&nbsp;B.:
Der Aufruf des Scripts erfolgt dann mit Angabe der Pinnummer sowie des Zustands des Pins, z.&nbsp;B.:


<nowiki>fhem-gpio.sh 17 1 # Pin 17 in High-Zustand versetzen
<source lang="bash">fhem-gpio.sh 17 1 # Pin 17 in High-Zustand versetzen
fhem-gpio.sh 17 0 # Pin 17 in Low-Zustand versetzen</nowiki>
fhem-gpio.sh 17 0 # Pin 17 in Low-Zustand versetzen
</source>
Wichtig: Das Script muss leider unter root (z.B. per sudo) aufgerufen werden.
Wichtig: Das Script muss leider unter root (z.B. per sudo) aufgerufen werden.
Der Einfachheithalber kann das Script unter /usr/sbin kopiert werden.
Der Einfachheithalber kann das Script unter /usr/sbin kopiert werden.
Zeile 42: Zeile 45:
Im Fall von [[FS20 Allgemein|FS20]] sähe eine entsprechende Schalter-Definition beispielsweise so aus:
Im Fall von [[FS20 Allgemein|FS20]] sähe eine entsprechende Schalter-Definition beispielsweise so aus:


<nowiki>define gpio_17 FS20 [Hauscode] [Devicecode]
<source lang="perl">define gpio_17 FS20 [Hauscode] [Devicecode]
attr gpio_17 dummy 1
attr gpio_17 dummy 1
define act_on_gpio_17 notify gpio_17 {\
define act_on_gpio_17 notify gpio_17 {\
Zeile 50: Zeile 53:
   system("sudo fhem-gpio.sh 17 0 &")\
   system("sudo fhem-gpio.sh 17 0 &")\
  }\
  }\
}</nowiki>
}
</source>


== Externe Links ==
== Externe Links ==

Version vom 1. März 2016, 23:33 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

Wichtig

Der Benutzer „fhem“ muss der Gruppe „gpio“ hinzugefügt werden, damit FHEM später auch Zugriff auf die GPIO Ports hat.

sudo adduser fhem gpio

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 ("$EVENT" ne "off") {\
  system("sudo fhem-gpio.sh 17 1 &")\
 } else {\
  system("sudo fhem-gpio.sh 17 0 &")\
 }\
}

Externe Links