Beleuchtung, Bash-Datei ohne Auswirkung
Verfasst: Sonntag 24. Juli 2016, 21:40
Hallo Ihr,
ich bin noch ganz neu in Python und mein einer Freund hat auch schon ein wenig Erfahrung mit Python.
Betonung liegt auf wenig
Jetzt haben wir folgendes Problem:
Wir haben eine Terrassen-Beleuchtung mit Drucktastern, die auch leuchtLEDs als visuelles Feedback haben, gebaut.
Wir haben eine Python-Datei dafür in den Raspberry mit Raspbian Jessie in den Autostart gelegt.
Die het die Lampen als Variablen gesetzt, die ganzen GPIO-Pins sind definiert
und wir haben auch eine Abfrage, die nur den Status abfragt, wenn der Druckschalter reingedrückt wird.
Das funktioniert auch soweit.
hier eine kurzfassung der entsprechenden Datei:
die Teile die ich ausgelassen habe, sehen sich sehr ähnlich, bzw ist kein anderer code.
Jetzt kam uns die Idee, dass wir das alles per Handy steuern wollen.
Dazu haben wir auf dem Raspberry einen apache2-server mit php5 installiert.
Wir haben uns aus dem Netz folgenden Code für die Site rausgesucht:
[codebox=php file=Unbenannt.php]
<?php
if (isset($_POST['Licht1'])) {shell_exec("sudo bash skript1.sh");}
...
if (isset($_POST['Licht6'])) {shell_exec("sudo bash skript6.sh");}
?>
<!DOCTYPE HTML>
<html>
...
<form action="" method="post">
<div class="style">
<br>
<button class="Button" type="submit" name="Licht1">Lampe 1 toggeln</button>
</div>
...
<div class="style">
<br>
<button class="Button" type="submit" name="Licht6">Lampe 6 toggeln</button>
</div>
...
</html>
[/code]
Die entsprechenden Skripte liegen im selben ordner wie die eben aufgezeigte index.php
Die Skripte selber enthalten jeweils folgende Zeilen:
[codebox=bash file=Unbenannt.bsh]
#!/usr/bin/python
if lampe1 == 0:
lampe1 = 1
else: lampe1 = 0
[/code]
So nun zu meinem Problem:
wie schon gesagt ich bin noch recht neu in Python.
Ich habe auch schon gegoogelt und ein bischen was rumprobiert.
Nur ich weiß nicht genau was ich falsch gemacht habe, denn wenn ich die Skripte per index.php aufrufe, tut sich nichts.
rufe ich die Skripte per Terminal auf erhalte ist folgende Meldung:
Ich habe auch mal versucht die Skripte per <a href="..."> aufzurufen, und dann mit einer success-abfrage zurück auf die index.php zu leiten. Das funktioniert alles, nur kann ich die Lampen nicht ausschalten.
Meine Vermutung ist, dass ich die Variablen lampe1 bis lampe6 falsch definiert habe?
Mir kommen aber auch die Skripte, die die Variablen ändern sollen, recht kurz vor...
Ich wäre euch sehr dankbar wenn ihr mir da weiterhelfen könntet.
Vielen Dank bereits im voraus.
ich bin noch ganz neu in Python und mein einer Freund hat auch schon ein wenig Erfahrung mit Python.
Betonung liegt auf wenig

Jetzt haben wir folgendes Problem:
Wir haben eine Terrassen-Beleuchtung mit Drucktastern, die auch leuchtLEDs als visuelles Feedback haben, gebaut.
Wir haben eine Python-Datei dafür in den Raspberry mit Raspbian Jessie in den Autostart gelegt.
Die het die Lampen als Variablen gesetzt, die ganzen GPIO-Pins sind definiert
und wir haben auch eine Abfrage, die nur den Status abfragt, wenn der Druckschalter reingedrückt wird.
Das funktioniert auch soweit.
hier eine kurzfassung der entsprechenden Datei:
Code: Alles auswählen
import time
import RPi.GPIO as GPIO
global lampe1
...
global lampe6
lampe1 = 0
...
lampe6 = 0
GPIO.setmode(GPIO.BCM)
#Pins auf output setzen
GPIO.setup(5, GPIO.OUT) #LampeTaste4
GPIO.setup(6, GPIO.OUT) #LampeTaste5
...
GPIO.setup(25, GPIO.OUT) #LampeTaste3
GPIO.setup(20, GPIO.OUT) #Lampe5
GPIO.output(5, GPIO.HIGH)
...
GPIO.output(20, GPIO.HIGH)
#Pins auf input setzen
GPIO.setup(14, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Taste1
...
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Taste6
#Program
while 1:
if GPIO.input(14) == GPIO.LOW:
if lampe1 == 0:
lampe1 = 1
else:
lampe1 = 0
while GPIO.input(14) == GPIO.LOW:
time.sleep(0.1)
if GPIO.input(17) == GPIO.LOW:
if lampe3 == 0:
...
if GPIO.input(18) == GPIO.LOW:
if lampe4 == 0:
lampe4 = 1
else:
lampe4 = 0
while GPIO.input(18) == GPIO.LOW:
time.sleep(0.1)
#Lichter einschalten / ausschalten
if lampe1 == 0:
GPIO.output(13, GPIO.HIGH)
GPIO.output(23, GPIO.HIGH)
else:
GPIO.output(13, GPIO.LOW)
GPIO.output(13, GPIO.LOW)
...
if lampe6 == 0:
GPIO.output(21, GPIO.HIGH)
GPIO.output(12, GPIO.HIGH)
else:
GPIO.output(21, GPIO.LOW)
GPIO.output(12, GPIO.LOW)
time.sleep(0.1)
die Teile die ich ausgelassen habe, sehen sich sehr ähnlich, bzw ist kein anderer code.
Jetzt kam uns die Idee, dass wir das alles per Handy steuern wollen.
Dazu haben wir auf dem Raspberry einen apache2-server mit php5 installiert.
Wir haben uns aus dem Netz folgenden Code für die Site rausgesucht:
[codebox=php file=Unbenannt.php]
<?php
if (isset($_POST['Licht1'])) {shell_exec("sudo bash skript1.sh");}
...
if (isset($_POST['Licht6'])) {shell_exec("sudo bash skript6.sh");}
?>
<!DOCTYPE HTML>
<html>
...
<form action="" method="post">
<div class="style">
<br>
<button class="Button" type="submit" name="Licht1">Lampe 1 toggeln</button>
</div>
...
<div class="style">
<br>
<button class="Button" type="submit" name="Licht6">Lampe 6 toggeln</button>
</div>
...
</html>
[/code]
Die entsprechenden Skripte liegen im selben ordner wie die eben aufgezeigte index.php
Die Skripte selber enthalten jeweils folgende Zeilen:
[codebox=bash file=Unbenannt.bsh]
#!/usr/bin/python
if lampe1 == 0:
lampe1 = 1
else: lampe1 = 0
[/code]
So nun zu meinem Problem:
wie schon gesagt ich bin noch recht neu in Python.
Ich habe auch schon gegoogelt und ein bischen was rumprobiert.
Nur ich weiß nicht genau was ich falsch gemacht habe, denn wenn ich die Skripte per index.php aufrufe, tut sich nichts.
rufe ich die Skripte per Terminal auf erhalte ist folgende Meldung:
Natürlich läuft das Haupt-Program bereits, dann ich kann die Lampen per Knopfdruck einschalten und es leuchten dann auch die LEDs am Druckschalter selber.Traceback (most recent call last):
File "./skript1.sh", line 3, in <module>
if lampe1 == 0:
NameError: name 'lampe1' is nor defined
Ich habe auch mal versucht die Skripte per <a href="..."> aufzurufen, und dann mit einer success-abfrage zurück auf die index.php zu leiten. Das funktioniert alles, nur kann ich die Lampen nicht ausschalten.
Meine Vermutung ist, dass ich die Variablen lampe1 bis lampe6 falsch definiert habe?
Mir kommen aber auch die Skripte, die die Variablen ändern sollen, recht kurz vor...
Ich wäre euch sehr dankbar wenn ihr mir da weiterhelfen könntet.
Vielen Dank bereits im voraus.