Hauptmenü

I2C_PCA9685 Dimmer

Begonnen von rieders, 17 Juli 2018, 19:02:11

Vorheriges Thema - Nächstes Thema

rieders

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é

klausw

Genau verstanden habe ich es zwar nicht. Aber wenn du jeden Dimmkanal separat haben möchtest, dann könntest du dies mir readingsproxy realisieren.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

rieders

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é

klausw

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.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

rieders

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é

klausw

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
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

rieders

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é

rieders

Hallo

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

Grüße Andre

klausw

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.



RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

rieders

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é