Hallo zusammen,
mein SH/SV System läuft wie bei vielen auf einem Raspberry Pi wunderbar und das schon seit Jahren.
nun möchte ich über einen weiteren Pi per GPIO einen HC-SR04 Sensor Entfernungen messen.
Dazu habe ich mir aus dem Internet folgendes Script zusammen kopiert....:
Führe ich das Python Script per Hand aus, funktioniert es wunderbar, lasse ich es aber per etc/logic.yaml ausführen bekomme ich folgende Meldung im sh.log:
Kann mir BITTE jemand erklären wo der Fehler liegt und wie ich es lösen kann? Ich möchte es auch verstehen damit ich das beim nächsten mal selbst lösen kann.
Vielen Dank im voraus!
mein SH/SV System läuft wie bei vielen auf einem Raspberry Pi wunderbar und das schon seit Jahren.
nun möchte ich über einen weiteren Pi per GPIO einen HC-SR04 Sensor Entfernungen messen.
Dazu habe ich mir aus dem Internet folgendes Script zusammen kopiert....:
Code:
import RPi.GPIO as GPIO import time # GPIOs fuer den US-Sensor GPIO.setmode(GPIO.BOARD) TRIG = 18 ECHO = 24 # Dauer Trigger-Impuls PULSE = 0.00001 # Anzahl Messwerte fuer Mittelwertbildung BURST = 25 # Schallgeschwindigkeit/2 SPEED_2 = 17150 # BCM GPIO-Referenen verwenden (anstelle der Pin-Nummern) # und GPIO-Eingang definieren GPIO.setup(TRIG, GPIO.OUT) GPIO.setup(ECHO, GPIO.IN) GPIO.output(TRIG, False) time.sleep(1) # Setup-Zeit fuer Sensor def measure(): GPIO.output(TRIG, True) # Trigger-Impuls time.sleep(PULSE) GPIO.output(TRIG, False) starttime = time.time() # Zeit initialisieren stopp = starttime start = starttime # Warten auf steigende Flanke, max. 2 Sekunden while GPIO.input(ECHO) == 0 and start < starttime + 2: start = time.time() # Startzeit # Warten auf fallende Flanke, max. 2 Sekunden while GPIO.input(ECHO) == 1 and stopp < starttime + 2: stopp = time.time() # Endezeit delta = stopp - start # Zeitdifferenz und Entfernung berechnen distance = delta * SPEED_2 return distance def measure_range(): values = [] sum = 0 for i in range(0, 25): values.append(measure()) # Messung starten sum = sum + values[i] # Wert im Array speichern und aufsummieren print("Messwert: %1.1f" % values[i]) # Kontrollausgabe time.sleep(0.05) sum = max(values) return sum; # do it try: # while True: Distance = measure_range() print("Range = %1.1f cm" % Distance) time.sleep(1) load = 12750 * (2 / Distance) print("Inhalt = %3d " % (load)) sh.zisterne.level(load) time.sleep(1) GPIO.cleanup()
2018-07-23 14:46:01 ERROR logics.Logic_Zisterne Logic: logics.Logic_Zisterne, File: /usr/local/smarthome/logics/hcsr04.py, Line: 46, Method: measure_range, Exception: name 'measure' is not defined
Traceback (most recent call last):
File "/usr/local/smarthome/lib/scheduler.py", line 493, in _task
exec(obj.bytecode)
File "/usr/local/smarthome/logics/hcsr04.py", line 56, in <module>
Distance = measure_range()
File "/usr/local/smarthome/logics/hcsr04.py", line 46, in measure_range
values.append(measure()) # Messung starten
NameError: name 'measure' is not defined
Traceback (most recent call last):
File "/usr/local/smarthome/lib/scheduler.py", line 493, in _task
exec(obj.bytecode)
File "/usr/local/smarthome/logics/hcsr04.py", line 56, in <module>
Distance = measure_range()
File "/usr/local/smarthome/logics/hcsr04.py", line 46, in measure_range
values.append(measure()) # Messung starten
NameError: name 'measure' is not defined
Vielen Dank im voraus!
Kommentar