FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rieders am 17 Juli 2018, 19:02:11

Titel: I2C_PCA9685 Dimmer
Beitrag von: rieders am 17 Juli 2018, 19:02:11
Hallo

Ich habe nicht viel Erfahrung mit FHEM. Daher meine Frage.
Ich habe ein I2C_PCA9685 Modul und danach per PWM mehrere LED´s mit Konstantstromquelle. Das funktioniert auch super.
Nun möchte ich ein Softwaredimmer der die LEDs einzeln langsam hoch und runter dimmt.
Am beste währe es wenn das mit Sonnenaufgang und Untergang mit offset ginge.

Für den Sonnenaufgang und Untergang  könnte ich ja sunrise nehmen.

Ich muss halt für jeden Kanal ein Dimmer anlegen damit ich von "sunrise" drauf zu greifen kann.

Ich würde mich freuen wenn mir jemand helfen könnte.


Grüße André
Titel: Antw:I2C_PCA9685 Dimmer
Beitrag von: klausw am 21 Juli 2018, 12:04:33
Genau verstanden habe ich es zwar nicht. Aber wenn du jeden Dimmkanal separat haben möchtest, dann könntest du dies mir readingsproxy realisieren.
Titel: Antw:I2C_PCA9685 Dimmer
Beitrag von: rieders am 21 Juli 2018, 16:28:54
Hallo

Vielen Dank für ihre Antwort.
Ja genau so wollte ich es machen.
Mit readingsproxy habe ich noch nicht  gearbeitet.
Ich hoffe ich bekomme es damit hin.


Grüße André
Titel: Antw:I2C_PCA9685 Dimmer
Beitrag von: klausw am 21 Juli 2018, 16:59:28
Readingsproxy ist meiner Meinung nach erheblich einfacher zu nutzen als dummy und notify.
Ich wäre im übrigen auch an deinem Ergebnis interessiert. Dämmerungsabhängig dimmen ist eine gute Idee.
Titel: Antw:I2C_PCA9685 Dimmer
Beitrag von: rieders am 26 Juli 2018, 13:08:29
Hallo

Ich habe nun mal versucht das Modul bzw die einzelnen Kanäle an zu steuern.
Zum teil mit mäßigem Erfolg.

Ich habe versuchsweise setFn {($CMD eq "on")?"Port00: slider 0 1 4095":"Port00 off";;} versucht.
Damit erhalte ich beim Schalten von on eine Fehlermeldung.

Ich wollte ja eigentlich ein Slider oder Dimmer erzeugen.
Unter setList slider on off wird dann zwar der Wert angezeigt aber es ist kein Balken zum Verschieben vorhanden.
Wenn ich dann darauf klicke kommt diese Fehlermeldung "wrong dimvalue: "slider" for "LED_PWM Port00:" use one of: off,on 0..4095"

Das Ausschalten des Kanals geht ohne Probleme.

Mit einem I2C_PCF8574 Modul habe ich Relais auch so angesteuert wobei ich da "nur"  on oder Off habe.
Das ging ohne Probleme und wird auch sehr schnell geschalten.

Ich würde mich freuen wenn ich mit eurer Hilfe den Dimmer oder Slider zum laufen bekomme.


Mit freundlichen Grüßen

André
Titel: Antw:I2C_PCA9685 Dimmer
Beitrag von: klausw am 26 Juli 2018, 23:17:29
Hallo André,

das gehört eher in den readingsproxy Thread. In der Wiki waren glaube ich auch einige Beispiele.

Die setFn ist nicht für die Generierung des Sliders verantwortlich.

So in der Art könnte die setFn aussehen:
{ if ($CMD eq "on") {
fhem ("set $DEVICE Port00 4095");
} elsif ($CMD =~ /^[1-9]\d*$/) {
fhem ("set $DEVICE Port00 " . $CMD);
} else {
fhem ("set $DEVICE Port00 0");
}
return undef
}


Klaus
Titel: Antw:I2C_PCA9685 Dimmer
Beitrag von: rieders am 27 Juli 2018, 00:14:17
Hallo Klaus

Ich kann wen ich in der setFN {($ CMD eq "on")? "Port00 4095": "Port00 aus" ;;} einfüge das Licht ganz aus oder auf 4095, also auf den eingestellten Wert schalten.
So kann ich zwar das Licht schalten aber nicht dimmen.

Wie kann ich ein Slider erstellen ?

Der Code den du mir gesendet hast funktioniert leider nicht.

Es muss doch eine Möglichkeit geben.


Grüße

André
Titel: Antw:I2C_PCA9685 Dimmer
Beitrag von: rieders am 29 Juli 2018, 08:15:19
Hallo

Ich habe jetzt zumindest ein Slider eingefügt.
Leider wird die Einstellung vom Slider nicht übergeben.
Off geht wie gewohnt.

Grüße Andre
Titel: Antw:I2C_PCA9685 Dimmer
Beitrag von: klausw am 31 Juli 2018, 12:04:41
Zitat von: rieders am 29 Juli 2018, 08:15:19
Ich habe jetzt zumindest ein Slider eingefügt.
Leider wird die Einstellung vom Slider nicht übergeben.
Off geht wie gewohnt.

Dann bist du schon einen Schritt weiter.
Die setList ist jetzt korrekt.

Aber nochmal, in der SetFn hat "slider 1,5,4095" nix zu suchen.
$CMD ist der Platzhalter für die set Eingabe in ReadingsProxy.
Kann in Deinem Fall also "off" oder eine Zahl zwischen 0 und 4095 sein.
Demzufolge gehört da eine Abfrage rein:
wenn Zahl -> Port01 Zahl 
wenn off -> Port01 off

Das sollte mein Beispiel eigentlich auch machen (ich habe es fast genau so in Verwendung).
Funktioniert es denn überhaupt nicht?
So müsste es auch gehen:
{($CMD eq "off") ? "Port01 off" : "Port01 " . $CMD}
ist halt unsauberer.



Titel: Antw:I2C_PCA9685 Dimmer
Beitrag von: rieders am 31 Juli 2018, 13:28:14
Hallo

Mit Hilfe eines Users ich glaube Martin  geht es jetzt.

setFn {($CMD eq "off")?"Port00 off":"Port00 ". sprintf("%.0f",(4095/100 * $CMD))}

setList state:slider,0,1,100

valueFn {($VALUE eq "off")?"off":sprintf("%.0f",($VALUE * (100/4095)))}

webCmd state


Grüße
André