Hauptmenü

GPIO mit FHEM schalten

Begonnen von arnoL, 23 November 2013, 21:03:34

Vorheriges Thema - Nächstes Thema

arnoL

Hallo Gemeinde,
ich hab auf meinem Pi in /usr/bin/ folgendes Script:

#!/bin/bash
PORT=$1;
gpio -g mode $PORT out
STATE=$2;
if [ $STATE -gt 1 ]
then
  STATE=1
fi
gpio -g write $PORT $STATE

nennt sich fhem-gpio.sh

Aufruf aus Konsole zBsp fhem-gpio.sh 14 1 schaltet den GPIO_14 ein.
Soweit alles kein Problem.

In FHEM

#---------GPIO---------
define GPIO15 dummy
attr GPIO15 setList on off
define off_GPIO15 notify GPIO15:off {\
system("fhem-gpio.sh 15 0 &")}
define on_GPIO15 notify GPIO15:on {\
system("fhem-gpio.sh 15 1 &")}
#--------GPIO Ende ---------


ändert sich beim schalten nur das Icon, mein Pi bleibt unbeeindruckt!

Im Logfile von FHEM steht nur
on_GPIO15 return value: -1

Der Aufruf auf Konsole ist ohne sudo, einfache Rechte reichen aus.
Bei "system("fhem-gpio.sh 15 0 &")}" hab ich auch schon alles versucht:
komletter Pfad zu Script, mit/ohne sudo.
Das Sript auch mal testweise nach /opt/fhem geschoben.

Ist doch bestimmt ein Rechte-Problem, oder nicht?
Wie bring ich das alles zum funktionieren?

Dieses andere Bash-Script hier bei FHEM irgendwo bringt gleiches Ergebnis.


Danke
Arno

arnoL

#1
hab mal testweise in FHEM

define GPIO1 dummy
attr GPIO1 setList on off
define off_GPIO1 notify GPIO1:off {\
system("touch /tmp/aus.txt &")}
define on_GPIO1 notify GPIO1:on {\
system("touch /tmp/an.txt &")}

angelegt.

Die Dateien werden richtig erstellt.
Nur das Script in den anderen Schaltern wird nicht gestartet.
Welche Rechte/Gruppenzugegörigkeiten könnten da fehlen?

Nachtrag: der Eintrag im Logfile ist auch hier "returnvalue -1".
Ist wohl dann richtig so, geht ja.

Danke
Arno

hobu

#2
Hallo Arno!

Dein Skript funktioniert hier in der Form tadellos.
Habe es ebenfalls nach /usr/bin kopiert und Dein define/notify so übernommen.
Auch mir den Rechten "755 root:root" ist hier alles schick.

Das Einzige, was beim Skript evtl. Probleme machen könnte, ist der Pfad zu gpio.
Hier bei mir liegt's in /usr/local/bin/.
Prüf mal, wo gpio bei Dir liegt und trag den Pfad dann absolut im Skript ein.

Mehr fällt mir ad hoc auch nicht ein...

Edit:
Evtl. könnten noch die Rechte von gpio Probleme machen.
Diese sind hier: 4755 root:root
Das Sticky-Bit muss gesetzt sein, da das Prog es sonst nicht von einem User ausgeführt werden kann.
Raspberry Pi (Model B)
HM-CFG-USB, HM-CC-RT-DN, HM-LC-SW1-FM, HM-Dis-WM55, HM-FK-SCO

arnoL

Zitat von: hobu am 24 November 2013, 17:15:14
Prüf mal, wo gpio bei Dir liegt und trag den Pfad dann absolut im Skript ein.

Ah, dam Konsolenaufruf ists egal.
Für FHEM brauchts im Script aber den Pfad zu gpio

Danke, Problem gelöst.

Arno