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

Begonnen von djcysmic, 05 Juli 2017, 21:19:46

Vorheriges Thema - Nächstes Thema

texel

#285
Hi,

wirklich klasse, das Modul! Funktioniert bei mir tadellos.

Allerdings habe ich auch mit dem Colorpicker ein Problem (wie auf page6 hier im thread, bzw. auch hier: https://forum.fhem.de/index.php?topic=90589.0)

beim ersten Aufruf:

fhemweb_colorpicker.js line 59:
TypeError: undefined is not an object (evaluating 'value.split')



bei den nachfolgenden Aufrufen:
fhemweb_colorpicker.js line 85:
TypeError: cmd is not a function. (In 'cmd( rgb )', 'cmd' is undefined)


js-Files sind auf dem neusten Stand. Update etc. gemacht. Parameter auf nfx gesetzt ...

Hat hierfür schon jemand eine Lösung?

LG Texel

texel

Hab einen workaround gefunden: colorpicker Attribut auf RGB stellen, dann funktioniert es ...

texel

Hi, und noch eine andere Frage:

Hat jemand schon versucht, nfx in HomeKit einzubinden?

Ich habe erste Versuche mit

homebridgeMapping
clear
Brightness=dim::dim,factor=0.39215686,delay=500
On=mode,cmdOn=all+FFAAAA,cmdOff=off,valueOff=fade
Hue=rgb::RGB Saturation=rgb::RGB
RotationSpeed=mode,factor=10,minValue=0,maxValue=60,minStep=10,cmds=0:nfx+candle;1:nfx+rainbow;2:colProgram+2;3:colProgram+3;4:colProgram+4;5:colProgram+5;6:colProgram+6
deleteattr


gemacht. Funktioniert aber leider nicht wirklich, da nur RGB Werte angeboten werden und für HK benötigt man m.W. HSV Werte. Wäre super, wenn die HSV Werte parallel zu den RGB Werten als reading mitgegeben werden könnten...

viele Grüße,

Texel

djcysmic

Zitat von: Bond246 am 03 Dezember 2018, 23:34:58
Ich würde mich über zwei Dinge freuen:

Zum einen verwende ich einen sehr langen Stripe um mein Bett herum, 430 LEDs.  Es wäre schön, wenn das Plugin mehr Pixel unterstützen würde. Ich hab zwar jetzt im Code das MAX_ARRAY auf 500 gestellt und die einfachen Sachen kann ich damit abfeuern. Aber ich bin mir nicht sicher, bei welchen Effekten die Grenzen sind.

Hallo und erstmal sorry für die späte Antwort.
Ohne konkrete Fehlerbeschreibung kann ich dir da leider nicht wirklich weiterhelfen, da ich so lange Stripes (noch) nicht in Verwendung habe.

Zitat von: Bond246 am 03 Dezember 2018, 23:34:58
Zum anderen würde ich mich über einen anderen/zusätzlichen Feuer-Effekt freuen. Der jetztige startet einfach nur "eine Flamme" von vorne und wabert hinten raus mit roten Pixeln. Das ist ja nicht besonders cool, wie ich finde. Cooler fände ich da die Implementierung, die auch bei McLighting verwendet wird. Also in die Richtung gehend einer großen Flächen, die feurig wabert.

Ist jetzt eingebaut und bereits im Github eingecheckt.

Zitat von: Bond246 am 03 Dezember 2018, 23:34:58
Ich würde mir das auch selbst implementieren, meine Programmierkenntnisse beschränken sich jedoch auf die niedigsten Basics. Wie diese arduino Programmierung funktioniert ist mir absolut "spanisch".

Dann noch eine ganz andere Frage, wie habt ihr denn hier eure Dummys gebaut? Ich denke die wenigsten benutzen die rudimentären Möglichkeiten des espeasy devices selbst.

Schau dir mal im Github das Definitionsbeispiel für ein DOIF an - die letzten Änderungen sind da allerdings noch nicht implementiert.

Zitat von: texel am 11 Dezember 2018, 12:56:36
Hi, und noch eine andere Frage:

Hat jemand schon versucht, nfx in HomeKit einzubinden?

Ich habe erste Versuche mit

homebridgeMapping
clear
Brightness=dim::dim,factor=0.39215686,delay=500
On=mode,cmdOn=all+FFAAAA,cmdOff=off,valueOff=fade
Hue=rgb::RGB Saturation=rgb::RGB
RotationSpeed=mode,factor=10,minValue=0,maxValue=60,minStep=10,cmds=0:nfx+candle;1:nfx+rainbow;2:colProgram+2;3:colProgram+3;4:colProgram+4;5:colProgram+5;6:colProgram+6
deleteattr


gemacht. Funktioniert aber leider nicht wirklich, da nur RGB Werte angeboten werden und für HK benötigt man m.W. HSV Werte. Wäre super, wenn die HSV Werte parallel zu den RGB Werten als reading mitgegeben werden könnten...

Also Homekit in Verbindung mit Alexa und RGB funktioniert bei mir wunderbar. Ich bin jetzt deinem Wunsch nachgekommen und habe sowohl eine HSV-Rückmeldung, als auch einen HSV-Befehl implementiert. Die neue Version findest du im Github.

Bond246

#289
Hallo djcysmic,

danke für die Antwort. Ich hab die max LED-Zahl einfach mal auf 500 erhöht und momentan noch keine negativen Auswirkungen festgestellt.
den neuen fire-effekt teste ich, sobald ich das Problem hier unten gelöst habe :-) DANKE!

Ich würde das Plugin jetzt gerne auf meinem Sonoff Basic installieren und builde mir hier deswegen schon seit ein paar Tagen einen Wolf, weil es mal so oder mal so nicht funktioniert.

Dass der Sonoff nicht mit ESPEasy funktioniert, hab ich gelöst (https://www.letscontrolit.com/forum/viewtopic.php?f=4&t=6165 und https://github.com/letscontrolit/ESPEasy/issues/2088).

Allerdings hat ja der Sonoff Basic kein GPIO2, bzw. soweit ich weiß ist auf den RX und TX-Leitungen (die einrach zu erreichen sind) jeweils GPIO1 und GPIO3, ist das richtig?

Deswegen hab ich im Plugin in Zeile 111 den Code geändert von
#define METHOD NeoEsp8266Uart800KbpsMethod //GPIO2 - use NeoEsp8266Dma800KbpsMethod for GPIO3(TX)
zu
#define METHOD NeoEsp8266Dma800KbpsMethod //GPIO2 - use NeoEsp8266Dma800KbpsMethod for GPIO3(TX)
Leider bekomme ich dann folgende Fehlermeldung:
E:/Eigene Dateien/Desktop/espeasy/ESPEasy_mega-20181207/source/src/_P003_Pulse.ino: In function 'void Plugin_003_pulse_interrupt1()':
E:/Eigene Dateien/Desktop/espeasy/ESPEasy_mega-20181207/source/src/_P003_Pulse.ino:204:6: error: void Plugin_003_pulse_interrupt1() causes a section type conflict with static volatile void NeoEsp8266DmaMethodBase<T_SPEED>::i2s_slc_isr() [with T_SPEED = NeoEsp8266DmaSpeed800Kbps]
void Plugin_003_pulse_interrupt1()
^
In file included from C:\users\bond\.platformio\lib\NeoPixelBus_ID547\src/NeoPixelBus.h:67:0,
from C:\users\bond\.platformio\lib\NeoPixelBus_ID547\src/NeoPixelBrightnessBus.h:29,
from E:/Eigene Dateien/Desktop/espeasy/ESPEasy_mega-20181207/source/src/_P124_NeoPixelBusFX.ino:96:
C:\users\bond\.platformio\lib\NeoPixelBus_ID547\src/internal/NeoEsp8266DmaMethod.h:302:42: note: 'static volatile void NeoEsp8266DmaMethodBase<T_SPEED>::i2s_slc_isr() [with T_SPEED = NeoEsp8266DmaSpeed800Kbps]' was declared here
volatile static void ICACHE_RAM_ATTR i2s_slc_isr(void)
^
*** [.pioenvs\hard_SONOFF_BASIC\src\ESPEasy.ino.cpp.o] Error 1


Leider kann ich damit nicht viel anfangen. :-[
Falls jemand eine Idee hat...

Vielen Dank!

texel

Hi djcysmic,

Zitat
Also Homekit in Verbindung mit Alexa und RGB funktioniert bei mir wunderbar. Ich bin jetzt deinem Wunsch nachgekommen und habe sowohl eine HSV-Rückmeldung, als auch einen HSV-Befehl implementiert. Die neue Version findest du im Github.

Besten Dank, das ging ja unglaublich schnell. Werde ich gleich am Wochenende testen...

LG Texel

djcysmic

Zitat von: Bond246 am 19 Dezember 2018, 13:52:03
Allerdings hat ja der Sonoff Basic kein GPIO2, bzw. soweit ich weiß ist auf den RX und TX-Leitungen (die einrach zu erreichen sind) jeweils GPIO1 und GPIO3, ist das richtig?

Deswegen hab ich im Plugin in Zeile 111 den Code geändert von
#define METHOD NeoEsp8266Uart800KbpsMethod //GPIO2 - use NeoEsp8266Dma800KbpsMethod for GPIO3(TX)
zu
#define METHOD NeoEsp8266Dma800KbpsMethod //GPIO2 - use NeoEsp8266Dma800KbpsMethod for GPIO3(TX)
Leider bekomme ich dann folgende Fehlermeldung:
E:/Eigene Dateien/Desktop/espeasy/ESPEasy_mega-20181207/source/src/_P003_Pulse.ino: In function 'void Plugin_003_pulse_interrupt1()':
E:/Eigene Dateien/Desktop/espeasy/ESPEasy_mega-20181207/source/src/_P003_Pulse.ino:204:6: error: void Plugin_003_pulse_interrupt1() causes a section type conflict with static volatile void NeoEsp8266DmaMethodBase<T_SPEED>::i2s_slc_isr() [with T_SPEED = NeoEsp8266DmaSpeed800Kbps]
void Plugin_003_pulse_interrupt1()
^
In file included from C:\users\bond\.platformio\lib\NeoPixelBus_ID547\src/NeoPixelBus.h:67:0,
from C:\users\bond\.platformio\lib\NeoPixelBus_ID547\src/NeoPixelBrightnessBus.h:29,
from E:/Eigene Dateien/Desktop/espeasy/ESPEasy_mega-20181207/source/src/_P124_NeoPixelBusFX.ino:96:
C:\users\bond\.platformio\lib\NeoPixelBus_ID547\src/internal/NeoEsp8266DmaMethod.h:302:42: note: 'static volatile void NeoEsp8266DmaMethodBase<T_SPEED>::i2s_slc_isr() [with T_SPEED = NeoEsp8266DmaSpeed800Kbps]' was declared here
volatile static void ICACHE_RAM_ATTR i2s_slc_isr(void)
^
*** [.pioenvs\hard_SONOFF_BASIC\src\ESPEasy.ino.cpp.o] Error 1


GPIO3 sollte der RX-Pin sein. Wenn du diesen nutzt, solltest du in ESP Easy auch die serielle Schnittstelle deaktivieren.

Die NeoEsp8266Dma800KbpsMethod scheint mit dem 003-Pulse-Plugin von ESPEasy zu kollidieren, da dieses auch auf den Interrupt zugreift. Hast du mal probiert, das Plugin 003 zu deaktivieren?

Welche Revision vom Sonoff Basic hast du? Die aktuelle Version hat auf der Rückseite ein Lötpad, welches mit IO2 bezeichnet ist:

https://github.com/arendst/Sonoff-Tasmota/wiki/Sonoff-Basic
https://raw.githubusercontent.com/reloxx13/reloxx13.github.io/master/media/tasmota/sonoff-basic-r2/back.jpg

sinus61

#292
Zitat von: Bond246 am 03 Dezember 2018, 23:34:58
Dann noch eine ganz andere Frage, wie habt ihr denn hier eure Dummys gebaut? Ich denke die wenigsten benutzen die rudimentären Möglichkeiten des espeasy devices selbst.

Ich mach das ähnlich wie im DOIF Beispiel, aber mit einem Notify.

Der Dummy:


defmod au_NeoPixel1 dummy
attr au_NeoPixel1 cmdIcon play:rc_PLAY stop:rc_STOP on:taster_ch_an_gruen off:taster_ch_aus_rot
attr au_NeoPixel1 devStateIcon play.*:FS20.on stop.*:FS20.on
attr au_NeoPixel1 eventMap /on:on/off:off/stop:stop/
attr au_NeoPixel1 icon hue_filled_lightstrip
attr au_NeoPixel1 readingList speed,effect,color_1,color_2,dim
attr au_NeoPixel1 room System->ESPEasy
attr au_NeoPixel1 setList effect:wipe,dualwipe,dualwipeout,all,fade,fire,fireflicker,faketv,kitt,comet,theatre,rainbow,colorfade,scan,dualscan,twinkle,twinklefade,sparkle color_1:colorpicker,rgb color_2:colorpicker,rgb speed:selectnumbers,-50,1,50,0,lin dim:selectnumbers,0,5,255,0,lin
attr au_NeoPixel1 stateFormat state
attr au_NeoPixel1 webCmd effect:color_1:color_2:speed:play:stop:on:off:dim
attr au_NeoPixel1 webCmdLabel Effekt:Farbe1:Farbe2:Speed:&nbsp;;:&nbsp;;:&nbsp;;:&nbsp;;:Dim


und dazu das Notify


au_NeoPixel1:.* {
Log(3,"Neo: $NAME / $EVENT");
my $myeffect = ReadingsVal("au_NeoPixel1","effect",0);
fhem ("set ESPEasy_ESP02 statusrequest");
if ( $EVENT eq "stop" ) {
fhem ("set ESPEasy_ESP02 nfx stop");
}
elsif ( $EVENT eq "on" ) {
fhem ("set ESPEasy_ESP02 nfx on 1000 10");
}
elsif ( $EVENT eq "off" ) {
fhem ("set ESPEasy_ESP02 nfx off 1000 10");
}
elsif ( $EVENT =~ /dim/ ) {
fhem ("set ESPEasy_ESP02 dim [au_NeoPixel1:dim]");
}
elsif ( $EVENT eq "play" ) {
if ( ($myeffect eq "all") || ($myeffect eq "fade") ) {
fhem ("set ESPEasy_ESP02 nfx [au_NeoPixel1:effect] [au_NeoPixel1:color_1]");
}
elsif ( ($myeffect eq "comet") || ($myeffect eq "kitt") ) {
fhem ("set ESPEasy_ESP02 nfx [au_NeoPixel1:effect] [au_NeoPixel1:color_1] [au_NeoPixel1:speed]");
}
elsif ( ($myeffect eq "rainbow") ) {
fhem ("set ESPEasy_ESP02 nfx [au_NeoPixel1:effect] [au_NeoPixel1:speed]");
}
elsif ( ($myeffect eq "twinklefade") ) {
fhem ("set ESPEasy_ESP02 nfx [au_NeoPixel1:effect] [au_NeoPixel1:color_1] 8 [au_NeoPixel1:speed]");
}
elsif ( ($myeffect eq "twinkle") || ($myeffect eq "scan") || ($myeffect eq "dualscan") || ($myeffect eq "sparkle") || ($myeffect eq "wipe") || ($myeffect eq "dualwipe") ) {
fhem ("set ESPEasy_ESP02 nfx [au_NeoPixel1:effect] [au_NeoPixel1:color_1] [au_NeoPixel1:color_2] [au_NeoPixel1:speed]");
}
elsif ( ($myeffect eq "theatre") ) {
fhem ("set ESPEasy_ESP02 nfx [au_NeoPixel1:effect] [au_NeoPixel1:color_1] [au_NeoPixel1:color_2] 5 [au_NeoPixel1:speed]");
}
elsif ( ($myeffect eq "colorfade") ) {
fhem ("set ESPEasy_ESP02 nfx [au_NeoPixel1:effect] [au_NeoPixel1:color_1] [au_NeoPixel1:color_2]");
}
elsif ( ($myeffect eq "fire") ) {
fhem ("set ESPEasy_ESP02 nfx [au_NeoPixel1:effect] [au_NeoPixel1:speed] 255 40 20");
}
elsif ( ($myeffect eq "fireflicker") ) {
fhem ("set ESPEasy_ESP02 nfx [au_NeoPixel1:effect] 3 [au_NeoPixel1:speed]");
}
}
}

dev0

Zitat
if ( $EVENT eq "stop" ) {
{ fhem ("set ESPEasy_ESP02 nfx stop"); }
}
Die unnötigen Klammern, innerhalb des Ausführungsteil von "if(...){...} und elsif(...){...}", solltest Du entfernen, auch wenn es mit aktuellen Perl Versionen noch keine Probleme gibt. Schlechter Stil und Anfänger schauen sich das ggf. ab.

The-Holgi

Hallo,
hat jemand eine Idee wie man die blaue Statusled auf dem Wemos D1 aus bekommt?
In den Hartwareeinstellungen in ESP Easy steht sie auf none.
Gruß und frohe Weihnachten
Holger
HP T610 Thin Client; Docker Fhem 5.9; 2X CUL V3 868mhz; Max Heizungssteuerung; FS20kse; FS20UWS; FS20S8-3; 2 FS20DI; HM-CFG-LAN,HM-LC-SW1-PL,HM-SEC-SD, HM-SE1PBU-FM;
Harmony Hub;Hue-Bridge mit Iris, E27 Bulb & FLS-PP

djcysmic

Zitat von: The-Holgi am 24 Dezember 2018, 07:16:23
Hallo,
hat jemand eine Idee wie man die blaue Statusled auf dem Wemos D1 aus bekommt?
In den Hartwareeinstellungen in ESP Easy steht sie auf none.
Gruß und frohe Weihnachten
Holger

Normalerweise liegt die LED invertiert auf GPIO2 (D4). Mit dem Befehl gpio 2 1 solltest du sie aus bekommen...

Viele Grüße zurück und auch ein frohes Weihnachtsfest.

xyro

Hallo Leute,

erstmal, Gutes neues Jahr!

Folgendes Problem:

Beim Kompilieren der ESPEasy- Mega mit dem Plugin NeopixelBusFX funktioniert alles soweit.

Nur wenn ich das Plugin auswählen will, dann erscheint es nicht in der Drop- Down liste unter Devices.

(Ich muss neu Kompilieren, da ich SK6812 rgbw habe und die ino dementsprechend anpassen muss.
Die eine Test LED leuchtet die ganze Zeit weiß, ohne Ansteuerung auf GPIO 02)

Vielleicht weiss jemand einen Rat?

Grüße

Alex   

kaizo

Auch ein frohes neues...

Ähnliches Problem habe ich auch, das ESP-Plugin bzw. das 4096.bin kann ich installieren, neopixel auch auswählen, aber es leuchtet keine LED. Am Anfang ging auch nur die erste LED, und beim Betrachten der Signale sehe ich, dass nur die erste LED das Signal bekommt, aber dieses am DO nicht weitergibt.

Die erste LED kann auch nicht gesteuert werden.
Hätte schon gedacht dass die erste defekt ist und diese dann abgetrennt. Genutzt hat das nicht.

Irgendwann habe ich eine andere Software auf den Wemos geflashed, und siehe da, alles ist gut. Farben, Effekte, alles rennt.
(https://github.com/Aircoookie/WLED)


In ESPEASY habe ich schon alles abgestellt, I2C, serielle Schnittstelle etc.
Aber das Modul will bei mir einfach nicht.

Hat jemand das aktuelle 4096.bin aus dem git am laufen?

Gruß
Kai
FHEM 6.x  auf i3
1x Maplecun FS20, HM, 1x CUL f. WMbus
1x Arduino Nano für Lacrosse, 1x für Empfang WH1080,
1x Arduino Uno+Ethernet-Shield & Firmata für 1Wire
1x Raspberry Pi für Einbindung Junkers-Heizgerät mit HT3-Schnittstelle, div. Sonoff+EspEasy+Tasmota über MQTT

xyro


Hi2Helmi

Hallo,
ich habe mir einen "Bilderrahmen" gebastelt mit ein Paar LED's funktioniert auch super. Ich würde aber gerne bei bestimmten Ereignissen einzelne LED's blinken lassen. Habe leider keine Möglichkeit gefunden dies zu bewerkstelligen.
Noch eine andere Frage:
ich würde gerne über MQTT steuern, bin aber auch da noch nicht auf eine Lösung gestoßen.
MfG
Florian