Guten Tag,
Vollgende Situation:
Mit dem Modul "I2C_PCA9685" steuere ich mittels PWM an meinem Aquarium die LED Beleuchtung.
Nun möchte ich eine Sequenz erstellen die beim Aufrufen dieser, automatisch alle 10Sekunden den PWM Wert von 0 bis 4095 hochzählt. Das Modul "I2C_PCA9685" bietet leider nicht diese Möglichkeit.
Genauer gesagt soll alle 10 Sekunden folgender Befehl audgeführt werden: "set PWM Port01 (xy)" Wobei (xy) der Wert ist der automatisch hochgezählt werden soll 50er Schritte reichen mir da vollkommend aus.
Vom Prinzip her soll es dann so ausehen:
set PWM Port01 0
sleep 10 Sekunden
set PWM Port01 50
sleep 10 Sekunden
set PWM Port 01 100
usw....
bis zum Erreichen des Wert 4050
habe mir schon einiges durchgelesen zum Thema notify und doif aber komme irgendwie auf keinen grünen Zweig. Da "sleep" fhem in diesem Moment blockiert ...
MFG, Daniel Joachims
define pwmStart notify pwmStart { $data{p01}=-50;; fhem "defmod pwmDo at +*{82}00:00:10 set Port01 {(\$data{p01}+=50)}" }
Start mit "trigger pwmStart". Wenn das Ueberleben von einem FHEM-Neustart wichtig ist, dann muss $data{p01} gegen einem dummy ausgetauscht werden.
Hi.
Und dann?
Du kannst mit AT und relativer Zeitangabe z.b. alle 10 Sekunden zum Beispiel sowas machen:
define iterator at *00:00:10 {my $port = ReadingsVal("PWM","Port01",""); $port += 50; fhem("setreading PWM Port01 $port");}
... nur keine Ahnung ob das wirklich zielführend ist.
Zitat von: rudolfkoenig am 22 August 2016, 14:48:12
define pwmStart notify pwmStart { $data{p01}=-50;; fhem "defmod pwmDo at +*{82}00:00:10 set Port01 {(\$data{p01}+=50)}" }
Start mit "trigger pwmStart". Wenn das Ueberleben von einem FHEM-Neustart wichtig ist, dann muss $data{p01} gegen einem dummy ausgetauscht werden.
Vielen vielen Dank, dass funktioniert hervorragend 8)