Verschiedenes > ESP8266

[Project] NeopixelBusFX - WS2812 Effekt-Plugin für ESPEasy

(1/89) > >>

djcysmic:
Einen wunderschönen guten Abend,

da ich auf der Suche nach einer einfachen Implementierung von WS2812-Stripes in die Hausautomatisierung - ursprünglich für eine Treppenstufenbeleuchtung - nichts brauchbares gefunden habe, habe ich angefangen, ein eigenes Plugin für ESPEasy zu schreiben. Diese Effekte sind komplett ohne Delays programmiert und mittels Parameter sehr flexibel gestaltet. Das Plugin basiert auf der NeopixelBus-Library von Makuna und erlaubt eine prozessorschonende Ansteuerung der LEDs mittels ESP8266:


https://github.com/Makuna/NeoPixelBus


Zusätzlich wird die FastLED-Library für einige Berechnungen in dem Fire-Effekt benötigt:

https://github.com/FastLED/FastLED

Update 02.12.2018: Die entsprechenden Funktionen sind jetzt im NeopixelBusFX-Plugin implementiert. FastLED wird nicht mehr benötigt.


Diese Libraries müssen nur in den /lib-Ordner von ESPEasy geclont werden

Das Plugin kommt in den /src-Ordner:


https://github.com/djcysmic/NeopixelBusFX


Eine Beschreibung dazu findet ihr im Github bzw. im Plugin-Header.
Vielleicht gibt es ja den ein oder anderen Interessenten, der mir bei der Weiterentwicklung des Plugins helfen möchte bzw. Tipps geben kann (es enthält sicherlich noch einige Fehler).
Möglicherweise kann die Ansteuerung für das Plugin auch irgendwann mit ins ESPEasy-Modul mit aufgenommen werden (ähnlich dem Lights-Plugin).

Falls ihr Verbesserungsvorschläge habt, die ich einarbeiten soll, seht es mir bitte nach, wenn es nicht umgehend geschieht, da ich das Plugin ausschließlich in meiner Freizeit entwickle und meine Kinder einen Großteil davon in Anspruch nehmen.

Ansonsten wünsche euch erstmal viel Spaß beim Ausprobieren und wünsche euch noch einen schönen Abend.

Viele Grüße
Nico

Update 16.07.2017 im Github
Plugin für eine bessere Implementierung in das ESPEasy-Modul erweitert.

dev0:

--- Zitat von: djcysmic am 05 Juli 2017, 21:19:46 ---Möglicherweise kann die Ansteuerung für das Plugin auch irgendwann mit ins ESPEasy-Modul mit aufgenommen werden (ähnlich dem Lights-Plugin).

--- Ende Zitat ---
Ich nehme das Plugin gerne mit ins ESPEasy Modul auf. Mir fehlte beim letzten Blick auf Deine Befehlsliste noch die Idee, wie der benötigte Eintrag für die Syntaxhilfe/Syntaxprüfung aussehen könnte. (Fast) alle anderen Plugins nutzen eine eindeutige Syntax in dem sie unterschiedliche Befehle einsetzen, Dein Plugin nutzt nur einen Befehl mit vielen Optionen. Im ESPEasy Modul Quelltext findest Du diese Strings im hash %ESPEasy_setCmdsUsage zZ. ab Zeile 114.

gloob:
*nur um Updates zu bekommen*

djcysmic:
Die Aufteilung der Befehlsfolge schien mir so am sinnvollsten:

Pluginbefehl - Modus/Effekt - Parameter

NeopixelFX <off|on|dim|line|one|all|rgb|fade|colorfade|rainbow|kitt|comet|theatre|scan|dualscan|twinkle|twinklefade|sparkle|fire|stop> <parameter>

Das Problem dabei ist, dass nicht jeder Modus/Effekt die gleichen Parameter benötigt, d.h. die Syntaxüberprüfung ist abhängig vom jeweiligen Effekt.

Ich könnte sicherlich größtenteils auf den Plugin-Befehl verzichten, würde dann allerdings das Problem meiner Meinung nach nur verlagern, da die Parameter-Vielfalt für die Effekte gleich bleibt. Außerdem bestünde die Gefahr, dass es zu Überschneidungen mit Befehlen anderer Plugins kommt.

Ist es denn möglich, für jeden Modus/Effekt eine eigene Syntaxprüfung zu schreiben?
Beim Lights-Plugin ist es doch auch nochmal unterteilt (ct,pct,rgb etc.).

Ich weiß, dass es viel Aufwand für ein Plugin ist, allerdings habe ich spontan keine Idee, wie ich das sinnvoll vereinfachen könnte ohne Einschneidungen bei der Flexibilität der Effekte vorzunehmen.

Ich könnte dir auch anbieten, die Syntaxüberprüfungen/-hilfen für die einzelnen Effekte für das ESPEasy-Modul zu schreiben, wenn dir das weiterhilft...

dev0:

--- Zitat ---NeopixelFX <off|on|dim|line|one|all|rgb|fade|colorfade|rainbow|kitt|comet|theatre|scan|dualscan|twinkle|twinklefade|sparkle|fire|stop> <parameter>

--- Ende Zitat ---
Ich werde es am Wochenende dann so oder ähnlich ins svn einchecken... Noch habe ich auch keine bessere Idee.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln