Abfrage einbauen : Sensor vorhanden?
- __blackjack__
- User
- Beiträge: 13077
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Umulmer: Was heisst Du bekommst keine Werte? Das könnte nur passieren wenn `temperatur_lesen()` jetzt doch irgendwie definiert ist und das eine Endlosschleife ist. Ansonsten hat die Funktion garantiert irgend einen Rückgabewert, oder löst eine Ausnahme aus.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Um noch mal klar zu machen, was mein Vorschlag war:
ist durch
zu ersetzen, und dann stellt sich, wenn alles andere so bleibt wie bisher, der gewuenschte Effekt ein: egal warum das Programm abschmiert (und eben nicht nur, wenn man C-c drueckt!), wird alles ausgeschaltet.
Der ganze Rest ist wirklich sehr schlecht programmiert (jaja, ich weiss, Anfaenger, aber so ist es halt trotzdem), und da wuerde ich, wenn das sonst so tut, am besten gar nichts dran rumdrehen.
Code: Alles auswählen
except KeyboardInterrupt:
Code: Alles auswählen
finally:
Der ganze Rest ist wirklich sehr schlecht programmiert (jaja, ich weiss, Anfaenger, aber so ist es halt trotzdem), und da wuerde ich, wenn das sonst so tut, am besten gar nichts dran rumdrehen.
Das du was ändern willst, ist mir schon klar. Was mir nicht klar ist: wie soll die Änderung erfolgen? Einen Wert über die Tastatur einzulesen ist schlecht aus mehreren Gründen: es blockiert, darum muss man also herum arbeiten. Es erfordert Tastatur und Monitor und Terminal. Haben deine Familienmitglieder da Bock drauf, nur weil es 2 Grad wärmer werden soll? Und auch gestalterisch ist das eine Sackgasse. Was willst du also warum ändern?
Code: Alles auswählen
def grad_lesen9():
try:
file = open('/sys/bus/w1/devices/28-3c01e076f457/w1_slave')
time.sleep(0.2) #Wartezeit ja/nein?
filecontent = file.read()
file.close()
pos = filecontent.rfind('t=') + 2
temperature_string = filecontent[pos:]
temperature = float(temperature_string) / 100 #temperatur in 1/10tel Grad
return temperature
except FileNotFoundError:
temperature = 0
print(" Sensor nicht vorhanden")
snvh = snvh + 1 #Zähler der Störungen
restart() # Unterbrechung des Pluspol der Onewire, Pause 20 sec
return temperature
Vielleich hilft ja die Def für Funktionen bei der eine Pause keine Rolle spielt.
Ich halte das für einen Rückschritt. Das du eine reset Funktion hast, ist natürlich gut. Aber dann einfach 0 zurück zu geben, statt in einen Fehlerzustand zu wechseln, wenn es nicht geklappt hat, erweckt doch nur die Illusion, dass da etwas funktioniert.