So bin bisschen weiter gekommen leider funktioniert das aber immer noch nicht so ganz.
Das Script stammt von einem Freund wir kommen nur beide nicht mehr weiter.
Das Script läuft zwar aber wenn einer der GPIOs gedrückt ist werd jeder weiter GPIO Ignoriert.
Woran kann das liegen?
Bin echt am verzweifeln.
Bitte helft mir.
VG Mike
Code
# Beenden dauert solange wie in temperaturzeit drine steht
import os, sys, time, socket, RPi.GPIO as GPIO, threading # Importiert die Klassen
GPIO.setmode(GPIO.BCM) #BCM Modus fuer GPIO
GPIO.setwarnings(False) # Warnungen fuer GPIO Auschalten
#___________________UDP___________________________
UDP_IP = "172.16.1.40" # IP des empfaengers
UDP_PORT = 7007 # Port des empfeangers
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # UDP Seasion eaffnen
#__________________________________________________
#___________________Temperatur_sensoren____________
temperaturzeit = 10 # Zeit bis zur neachsten wiederholung in Sekunden
Sensor = ['28-041685fa3dff','28-041686101aff','28-041685eb30ff','28-0416860135ff','28-0516869ef8ff']#Sensoren hier eintragen -----> ['10-000802d3ab2f','Neachstersensor'] zufinden in /sys/devices/w1_bus_master1/
#___________________________________________________
#___________________GPIO__________________________
buttonsend = 5 # Wird 5 Mal gesendet
druchlaeufe = 0
buttonwait = 0.01 # x Sec Warten bis zum naechsten senden
button1 = 13
button2 = 17
button3 = 18
buttonstatus1 = 0
buttonstatus2 = 0
buttonstatus3 = 0
GPIO.setup(button1, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(button2, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(button3, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
#______________________________________________________
def aktuelleTemperatur():
while not stop:
time.sleep(temperaturzeit)
for index in range(len(Sensor)):
# 1-wire Slave Datei lesen
file = open('/sys/bus/w1/devices/' + str(Sensor[index]) +'/w1_slave')
filecontent = file.read()
file.close()
# Temperaturwerte auslesen und konvertieren
stringvalue = filecontent.split("\n")[1].split(" ")[9]
temperature = float(stringvalue[2:]) / 1000
# Temperatur ausgeben
rueckgabewert = '%0.2f' % temperature #<-------- wird aktuell in 21.25 ausgegeben fuer Temperatur 21,25 C [rueckgabewert = '%0.2f' % temperature]
print "Aktuelle Temperatur von Sensor " + (Sensor[index])+ ":" , rueckgabewert, "C"
sock.sendto(Sensor[index] + ":"+ rueckgabewert, (UDP_IP, UDP_PORT))# Sendet wert an UDP Client
def buttonsender(button,status):
global druchlaeufe
global buttonsend
if status == 0:
if not druchlaeufe == buttonsend:
for x in range(0,buttonsend):
time.sleep(buttonwait)
print(str(button) + ":1" )
sock.sendto(str(button) + ":1", (UDP_IP, UDP_PORT))
druchlaeufe += 1
# print status
# print druchlaeufe
if status == 1:
if druchlaeufe == buttonsend:
if not GPIO.input(button): #Wenn Button
for x in range(0,buttonsend):
time.sleep(buttonwait)
print(str(button) +":0" )
sock.sendto(str(button) +":0", (UDP_IP, UDP_PORT))
druchlaeufe=0
# print status
# print druchlaeufe
try:
stop = False
t1 = threading.Thread(target=aktuelleTemperatur)
t1.start()
while True:
#______Buttons senden___________
if GPIO.input(button1):
if buttonstatus1 == 0:
buttonsender(button1,buttonstatus1)
buttonstatus1 = 1
if not GPIO.input(button1):
if druchlaeufe == buttonsend:
buttonsender(button1,buttonstatus1)
buttonstatus1 = 0
if GPIO.input(button2):
if buttonstatus2 == 0:
buttonsender(button2,buttonstatus2)
buttonstatus2 = 1
if not GPIO.input(button2):
if druchlaeufe == buttonsend:
buttonsender(button2,buttonstatus2)
buttonstatus2 = 0
if GPIO.input(button3):
if buttonstatus3 == 0:
buttonsender(button3,buttonstatus3)
buttonstatus3 = 1
if not GPIO.input(button3):
if druchlaeufe == buttonsend:
buttonsender(button3,buttonstatus3)
buttonstatus3 = 0
#________________________________
#---------Unwichtig-----
except (KeyboardInterrupt, SystemExit):
stop = True
#-----------------------
sock.close
print("Ende")
Alles anzeigen