Hallo zusammen,
ich möchte mit meinem ZeroW/Raspbian den Impulsausgang (S0) meines PV-Stromzählers auswerten, um bei ausreichender Leistung z.B. das Brauchwasser erwärmen zu können.
Das Inputsignal liegt an GPIO3 an, die (Diagnose-) LED an GPIO27. Erwarteter Impulsabstand t>2s.
Ich möchte die Funktion ticks_diff nutzen (Output in s), wie sie in LocalPiFactory oder gpiozero.Factory angeboten wird, und bei pull_up auf fallende Flanken triggern.
Ich scheitere in der Regel in den Zeilen 7 oder 9 mit Fehlern in der Syntax (Abschließende Klammer kommt unerwartet bei geschachtelten Classes mit Parametern) oder fehlenden Attributen im alternativ verwendeten "Button", z.T. tief in GPIOZero.
Ich habe folgenden python3 Quelltext für den Test:
#
from gpiozero.pins.local import LocalPiFactory
from gpiozero import Pin, DigitalInputDevice, LED, Factory, TimeOfDay
from datetime import time
from signal import pause
my_factory = LocalPiFactory
led = LED(27)
pin1 = DigitalInputDevice(3,pin_factory=my_factory)
itime = 100.
power = 0.
pin1.function = 'input'
pin1.pull_up = True
Pin.edges = 'falling'
tod = TimeOfDay(time(8), time(17))
# if tod.when_activated:
if pin1.when_pressed: print (" Impuls ")
itime = pin1.ticks_diff(later)
power = 7.2/itime
print (" Power [kW] ", power)
if power > 3.1: led.on
pause()
led.off
#else:
# tod.when_deactivated = led.off
# led.off
# pause()
Da ich vom prozeduralen Programmieren komme, bin ich mit meinem Class-Latein am Ende. Die Dokumentation von GPIOZero hilft mir momentan nicht weiter, da für meine Anwendung die Beispiele fehlen.
Kann mir jemand meinen Code zum Laufen bringen oder hat einer von Euch bereits eine Lösung für diese Aufgabe?
Gruß HWolf