ich habe folgendes Problem:
Das Script funktionier auf dern Konsole des Raspberry ohne Probleme.
Ich möchte aber das Script per PHP Starten.
Starten kann man es aber es Läuft nur bis "print('test2')", das Heist das nix in die DB geschrieben wird.
Kann mir da jemand Helfen?
Code: Alles auswählen
#!/usr/bin/env python
#Python Timerklasse importieren
import time
#Python Raspberry Pi GPIO Klasse importieren
import RPi.GPIO as GPIO
import mysql
# Festlegung der Nutzung der vorgegebenen Nummerierung der GPIOs
GPIO.setmode(GPIO.BCM)
# Namen von True und False zum besseren Verstaendnis festlegen (Klarnamen)
HIGH = True # 3,3V Pegel (high)
LOW = False # 0V Pegel (low)
import mysql.connector;
try:
connection = mysql.connector.connect(host = "localhost", user = "***", passwd = "***", db = "***")
except:
print("Keine Verbindung zum Server")
exit(0)
# SCI Funktion
def getAnalogData(adCh, CLKPin, DINPin, DOUTPin, CSPin):
# Pegel definieren
GPIO.output(CSPin, HIGH)
GPIO.output(CSPin, LOW)
GPIO.output(CLKPin, LOW)
cmd = adCh
cmd |= 0b00011000 # Kommando zum Abruf der Analogwerte des Datenkanals adCh
# Bitfolge senden
for i in range(5):
if (cmd & 0x10): # 4. Bit pruefen und mit 0 anfangen
GPIO.output(DINPin, HIGH)
else:
GPIO.output(DINPin, LOW)
# Clocksignal negative Flanke erzeugen
GPIO.output(CLKPin, HIGH)
GPIO.output(CLKPin, LOW)
cmd <<= 1 # Bitfolge eine Position nach links verschieben
# Datenabruf
adchvalue = 0 # Wert auf 0 zuruecksetzen
for i in range(11):
GPIO.output(CLKPin, HIGH)
GPIO.output(CLKPin, LOW)
adchvalue <<= 1 # 1 Postition nach links schieben
if(GPIO.input(DOUTPin)):
adchvalue |= 0x01
#time.sleep(1)
return adchvalue
# Konfiguration Eingangskanal und GPIOs Raspi-Belegung
#CH = 0 # Analog/Digital-Channel
CLK = 11 # Clock alles GPIO-Nummern GPIO1
DIN = 10 # Digital in
DOUT = 9 # Digital out
CS = 8 # Chip-Select
print('test2')
# Pin-Programmierung
GPIO.setup(CLK, GPIO.OUT)
GPIO.setup(DIN, GPIO.OUT)
GPIO.setup(DOUT, GPIO.IN)
GPIO.setup(CS, GPIO.OUT)
print('test3')
#try:
#while True:
for z in range (8):
#if (z==0 or z==1):# or z==2 or z==3 or z==4 or z==5 or z==6 or z==7 ):
print ("Kanal " + str(z) + ": " + str(getAnalogData(z, CLK, DIN, DOUT, CS)))
wert = str(getAnalogData(z, CLK, DIN, DOUT, CS))
Kanal = str(z)
send = "UPDATE `Rezept`.`wandler` SET `"+ Kanal +"` = '" + wert + "' WHERE `wandler`.`id` = 1;"
cursor = connection.cursor()
cursor.execute(send)
cursor.close()
connection.commit()
#else:
# print ("Kanal " + str(z) + ": " + "- - - ")
#except KeyboardInterrupt:
GPIO.cleanup()