ESP RGBWW Wifi Led Controller - Firmware vbs

Begonnen von vbs, 18 April 2017, 09:26:13

Vorheriges Thema - Nächstes Thema

lewej

Zitat von: Pythonf am 04 Oktober 2017, 20:47:50
Der obere Code als "cmdalias" sollte reichen. Wenn was nicht geht einfach mal die Readings in einem Dummy testen und natürlich muss gelten, dass deine Devices mit "RGBW_" beginnen. Die Farbberechnung ist wie gesagt nicht exakt, da nicht logarithmisch etc.. aber dafür find ich sieht es recht gut aus.

Beste Grüße
Fabian

Ich versteh gerade nicht, wie ich das nutzen kann. Ich hab mehrere Stripes, die heissen alle LEDCON_n+1.

Wenn ich jetzt am LEDCON1 die Farbe ändere, wo muss ich jetzt den cmdalias aufrufen.

Könntest du evtl. eine exemplarische definition von zwei LED Controllern, hier anhängen?

gruss
lewej

vbs

Du musst nur das alias entsprechen ändern:
set LEDCON_.* ct .* AS

und dann mit "set LEDCON_n+1 ct 5000" eine Farbtemperatur setzen.

lewej

Zitat von: vbs am 04 Oktober 2017, 23:36:15
Du musst nur das alias entsprechen ändern:
set LEDCON_.* ct .* AS

und dann mit "set LEDCON_n+1 ct 5000" eine Farbtemperatur setzen.

Ok, aber ich dachte genauso das sollte automatisch gehen.
Ich ändere ja die Farben nicht in Fhem, sondern über die hue app an der hue bloom. Fhem pollt alle 5s die Readngs der Hue Bridge.
Dann werden per notify die anderen leds angpasst, das funktioniert erstmal.
Jedoch passen die Farben nicht immer, jetzt wollte ich diese funktion nutz n.

Weiss aber nicht an welcher Stelle und diese aufgerufen werden soll.
Ich will ja nicht jedes Mal die Farbtemperatur raussuchen.

Oder denke ich an dieser Stelle zu kompliziert?

Gruss
Lewej

Pythonf

#168
Du erstellt ein neues Device 
define LECOND_ct_cmdalias cmdalias set LEDCON_.* ct .* AS {

my $R = (-1.023 * $EVTPART2) + (3*1023);
my $WW = (-0.12775 * $EVTPART2) + (1406.25);
my $RGB = ( 0.25575* $EVTPART2 ) - 767.25 ;

if ($R > 1023) {$R = 1023};
if ($WW > 1023) {$WW = 1023};
if ($RGB > 1023) {$RGB = 1023};

if ($R < 0) {$R = $RGB};
if ($WW < 0) {$WW = 0};
if ($RGB < 0) {$RGB = 0};
$R = int($R);
$WW = int($WW);
$RGB = int($RGB);

fhem("set $EVTPART0 raw $R,$RGB,$RGB,$WW,$WW");
}

Damit wird der "set LEDCON_.* ct .." bei allen Geräten dessen Namen eben so anfängt überschrieben und der Code nach dem AS ausgeführt. Damit funktioniert eine grobe Steuerung der Farbtemperatur ähnlich wie bei HUE Geräten. Allerdings ist das ganze nicht exakt, da es auf auf 3 geraden basiert, die ich kurz mal gezeichnet und mit qtiplot gefittet habe. Eventuell werd ich mir mal anschaun, wie das korrekt geht. Damit du nun deine HUE und die RGBWW (! nur für RGB + WW sinnvoll !) synchroniesieren kannst würde ich ein einfache notify verwenden:
notify HUEDevice.:ct:.* {my $temp = $EVTPART2;
$temp =~ tr/0-9//dc; fhem("set LEDCON_.* ct $temp "); }

[EDIT]
Ich hab es gerade getestet, es funktioniert in einem gewissen Farbbereich ganz gut aber spätestens in den extremen Bereichen zeigt sich stark die Abweichung. Ich kann dir aber anbieten, dass du ein paar Messwerte aufnimmst und ich dir die Funktion so anpasse, dass es farblich ganz gut passen sollte. Dazu müsstest du an den HUEGeräten verschiedene Farbtemperaturen druchtesten und zu jedem Wert über den RAW Befehl die RGB und die WW LEDs entsprechend einstellen, und dann am besten im folgendem Format posten. Im optimalfall bleibt G bei 0
-----

HUE colorRGBWW
6500 K1023001023
2000 K0010231023
----------
Je mehr Werte desto besser, damit sollte sich das ganze recht gut interpolieren lassen und ich komm drum herum, mir die exakte Berechnung anzusehen. Am besten noch die Farbtemperatur deiner WW Streifen mit angeben.
--------------------------------------------------------------------------------------
Wünsche zum Modul/Firmware
Ich fände es praktisch, wenn man die Pins, die für RGB WW CW verwendet werden in den Einstellungen konfigurieren könnte. Ich hab kein Board aus dem Forum sondern alles selbst zusammen gelötet und dabei allerdings nur 4 FETs installiert und leider teilweise WW und CW vertauscht - gab es hier mal eine andere Konfiguration im GIT? - und möchte nicht neu löten  ;D .
Beste Grüße
Fabian

lewej

#169
@vbs:

Ich habe mein fhem Modul auf die neueste dev Version upgedatet, seit dem ist wieder das Problem mit dem disconnectd da.


2017-10-07 12:57:58   state           disconnected


Das Modul ist an und lässt sich auch bediedenen.

Ich hab mal die funktionierende noch mal angehangen, evl. könntest du mal schauen, ob da was in der neuen Version abhanden gekommen ist :).


Gruß
lewej


lewej

@vbs

Wenn ich die LEDStripes auf on oder off setze, dann wird das Reading stateLight nicht direkt umgesetzt, könnte man das ändern?

Gruß
lewej

vbs

Hm, mit welcher Firmware benutzt du das Modul denn? Passt da evtl. etwas nicht? Habe gerade Version vbs8 hochgeladen, also bitte noch einmal updaten. Es hätte aber eigentlich auch mit vbs7 funktionieren müssen.
Steht das Modul dauerhaft auf disconnect? Oder erst opened und später disconnect? Kannst du bitte mal ein verbose5-Log machen und posten?

Zitat von: lewej am 07 Oktober 2017, 17:13:22
Wenn ich die LEDStripes auf on oder off setze, dann wird das Reading stateLight nicht direkt umgesetzt, könnte man das ändern?
Das wird einfach daran liegen, dass dein Modul auf "disconnected" steht und du daher keine Zustandsänderungen mitbekommst.

weini

@vbs:
Bin gestern von Original-Modul&FW auf deinen Stand umgestiegen. Migration an sich hat gut geklappt. Vielen Dank dir für die tolle Arbeit!

Ein kleines Problem habe ich aber doch:
Ich hatte bisher über Timer bzw. DOIF gesteuert einen "rotate" abgesetzt, den kenn das neue Modul nicht mehr.
Das wäre noch nicht so schlimm, aber leider funktioniert auch das relative reduzieren von "hue" nicht mehr. Es schlägt eine Validierung im Modul zu, die keine neg. Werte erlaubt.

Damit funktioniert das so im Wiki beschriebene Vorgehen nur noch für "+" aber nicht mehr für "-".
Zitat
Relative Values

Instead of absolute target values it is also possible to use positive or negative relative values. Prepend color values either with + or with -.

Wäre super, wenn du das im Modul wieder "freischalten" könntest. Für "Umsteiger" wäre es vielleicht auch hilfreich, das "rotate" noch zu implementieren.

Viele Grüße,
weini

lewej

Zitat von: vbs am 07 Oktober 2017, 17:37:38
Hm, mit welcher Firmware benutzt du das Modul denn? Passt da evtl. etwas nicht? Habe gerade Version vbs8 hochgeladen, also bitte noch einmal updaten. Es hätte aber eigentlich auch mit vbs7 funktionieren müssen.
Steht das Modul dauerhaft auf disconnect? Oder erst opened und später disconnect? Kannst du bitte mal ein verbose5-Log machen und posten?
Das wird einfach daran liegen, dass dein Modul auf "disconnected" steht und du daher keine Zustandsänderungen mitbekommst.

@VBS: Alles auf den neusten Stand upgedatet:

Momentan funktioniert der Status von openend und disconnected. Jedoch wird


stateLight off 2017-10-07 19:26:13

der nächste aufruf war erst um

stateLight on 2017-10-07 19:28:46


Ich habe die Led bereits um 19:27 eingeschaltet.

Gruß
lewej

vbs

@lewej
Hm, also state ist "opened" und normale Reading-Updates funktionieren, nur "stateLight" nicht? Der Controller schickt regelmäßig seinen Status und daraufhin werden alle entsprechenden Readings wie hue, sat, val und eben auch stateLight upgedatet. Deshalb würde es mich wundern, wenn es generell jetzt funktioniert, aber nur stateLight nicht funktionieren würde.
Das einzige, was mir einfallen würde, wäre, dass das Update um 19:28:46 durch ein händisches "set update" getriggert wurde (was bedeuten würde, dass die Echtzeit-Updates bei dir nicht funktionieren).

Poste doch bitte mal ein Log. Die Chancen stehen ganz gut, dass ich da sehen kann, was da bei dir passiert...

@weini
Danke für den Hinweis, im Anhang eine Version mit geänderter Plausibilitätsprüfung. Sah bei mir jetzt gut aus. Könntest du das mal testen bei dir?
Über das "rotate" denke ich mal nach... Verstehe einerseits, dass es kompatibler wäre aber andererseits möchte ich nicht so gerne redundante Funktionen haben... mal schauen... ;)

lewej

#175
@VBS:
Also ich war etwas ungeduldig, der Status wird aktualisiert, jedoch braucht es lange, bis die events reinkommen.

Ausgeschalatet:
2017-10-07_22:00:43 WZTVLEDSTRIPE off
2017-10-07_22:01:17 WZTVLEDSTRIPE stateLight: off

Das sind 34s, das macht den WAF Effekt zur nichte :(.

Kann dieses Reading direkt aktualisiert werden, wenn man on oder off drückt?

Anbei auch das log:

vbs

Man sieht im Logfile, dass das Modul disconnectet, weil es der Meinung ist, keine Daten mehr empfangen zu haben. Erst dann beim erneuten Verbindungsaufbau kommen wieder Daten und du bekommst die stateLight-Änderung mit. Ist etwas komisch, aber man sieht, dass da irgendwas ziemlich schief läuft:
2017-10-07_22:00:43 WZTVLEDSTRIPE off
2017.10.07 22:00:43.618 5: WZTVLEDSTRIPE: LedController_ParseBoolResult
2017.10.07 22:00:43.619 5: WZTVLEDSTRIPE: LedController_ParseBoolResult success
2017.10.07 22:00:46.257 4: WZTVLEDSTRIPE: LedController_CheckConnection: Connection still alive. Last data received 40.2304549217224 s ago
2017.10.07 22:00:47.857 4: WZTVLEDSTRIPE: LedController_CheckConnection: Connection still alive. Last data received 20.8056139945984 s ago
2017.10.07 22:00:56.926 4: WZTVLEDSTRIPE: LedController_CheckConnection: Connection still alive. Last data received 50.8998129367828 s ago
2017.10.07 22:00:57.859 4: WZTVLEDSTRIPE: LedController_CheckConnection: Connection still alive. Last data received 30.8069970607758 s ago
2017.10.07 22:01:06.929 4: WZTVLEDSTRIPE: LedController_CheckConnection: Connection still alive. Last data received 60.9031128883362 s ago
2017.10.07 22:01:07.862 4: WZTVLEDSTRIPE: LedController_CheckConnection: Connection still alive. Last data received 40.8103330135345 s ago
2017.10.07 22:01:16.932 3: WZTVLEDSTRIPE: LedController_CheckConnection: Connection lost! Last data received 70.9056839942932 s ago
2017.10.07 22:01:16.933 1: 192.168.10.97:9090 disconnected, waiting to reappear (WZTVLEDSTRIPE)

Normalerweise muss das "LedController_CheckConnection" alle 10 Sek. kommen. Bei dir laufen offenbar zwei getrennte Timer, einmal immer xx:xx:56 und einmal xx:xx:57. Das sollte eigentlich nie passieren, aber ich weiß nicht, ob das das eigentliche Problem ist.

Bitte probier mal die Variante aus dem Anhang. Die Meldungen sollten dann sauber alle 10 Sek. kommen. Etwa so:
2017.10.07 22:35:13.001 4: wz_lightLedCouch: LedController_CheckConnection: Connection still alive. Last data received 20.4050650596619 s ago
2017.10.07 22:35:23.001 4: wz_lightLedCouch: LedController_CheckConnection: Connection still alive. Last data received 30.4054992198944 s ago
2017.10.07 22:35:33.001 4: wz_lightLedCouch: LedController_CheckConnection: Connection still alive. Last data received 40.4057521820068 s ago


Im Zweifel falls möglich bitte einmal FHEM neu starten.

Und bitte mach mal einen etwas längeren Log von mindestens 4-5 Minuten.

weini

@vbs:
Der Patch aus Post #174 funktioniert super. Danke dir!

Habe jetzt auch noch meine DOIFs entschlackt, in dem ich die "repeat" Funktion des Moduls verwendet habe. Läuft alles so, wie es soll. Tolle Sache!!!

vbs

Freut mich, das ist gut! In der Version aus dem letzten Post ist übrigens auch "rotate" drin wenn mich meine Erinnerung nicht täuscht :)

@lewej
Klappt jetzt die Verbindung bei dir stabil mit der Version?

lewej

@VBS:
Ich habe es erst jetzt eingespielt und teste es jetzt.
gruß
lewej