Raspberry PI – Relais schalten

Hat man mehrere Relais am PI hängen, möchte man vermutlich dafür ein Script haben, um die Relais komfortabel schalten zu können :

cat /bin/relais
#!/bin/bash

case $1 in
1) pin=21; ;;
2) pin=20; ;;
3) pin=26; ;;
4) pin=16; ;;
5) pin=19; ;;
6) pin=13; ;;
7) pin=12; ;;
8) pin=6; ;;
*)
 for (( x=1 ; $x<=8 ; x++ ))
 do
  /bin/relais $x
 done
exit 0 ;;

esac

if test "$2" == ""
then
 if test "$(cat /sys/class/gpio/gpio$pin/value)" == "0"
 then
  echo 1
 else
  echo 0
 fi
else

 if test "$2" == "1"
 then
  v=0
 else
  v=1
 fi
 #gpio -g mode $pin output
 #gpio -g mode $pin $1

 echo "$pin" > /sys/class/gpio/export 2>/dev/null
 echo "out" >  /sys/class/gpio/gpio$pin/direction
 echo "$v" > /sys/class/gpio/gpio$pin/value

# echo "$(date) $1 $(whoami)" >> /tmp/strom.log
fi

Weiters ist es von Vorteil, die Ausgänge beim Booten zu initialisieren, damit ein definierter Zustand herrscht :

cat /etc.rc.local
...
for (( r=1; $r<=8; r++)); do /bin/relais $r 0; done

Läuft sowieso schon ein Webserver mit PHP, dann bietet sich auch noch ein PHP Script an, um via Webinterface schalten zu können. (Achtung ! das hat keinen Passwortschutz eingebaut) :

index.php :
index_relais_schalten.php

visudo :

...
www-data ALL=(ALL) NOPASSWD: /bin/relais
...