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

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

Vorheriges Thema - Nächstes Thema

dev0

Zitatda die neuen Effekte nicht in das ESPEasy-Plugin von FHEM eingepflegt worden sind
Sorry, has habe ich dann wohl übersehen oder verschlampert.
Magst Du einen Patch erstellen?

djcysmic

Zitat von: dev0 am 23 Januar 2019, 16:07:20
Sorry, has habe ich dann wohl übersehen oder verschlampert.
Magst Du einen Patch erstellen?

Ist nicht dein Fehler - ich hatte dir das nicht mitgeteilt, weil die Befehle auch problemlos mit dem nfx-Präfix funktionieren.
Der Vollständigkeit halber habe ich aber einen Patch fertig gemacht und mit angehängt.
Vielen Dank für deine Mühe  ;)

LuckyTV

ZitatDer Dualwipe-Effekt ist ein einmaliger Übergangs-Effekt zu einer neuen Farbe, welcher von einem farbigen Pixel angeführt werden kann. Der fängt an beiden Enden des Stripes an und läuft zur Mitte. Wenn er in der Mitte angekommen ist, verbleibt der Stripe in der neuen Farbe. Mit einem negativen Speed-Wert kannst du den Effekt auch umkehren. Der Default Speed-Wert ist 25.

Ich hatte zuvor den Stripe im Wohnzimmer und der PC steht im Büro. Bis ich dann ins Wohnzimmer kam war der Effeckt schon vorbei. Schade das der nicht endlos geht mit Farbwechsel.

ZitatDas ist korrekt, da die neuen Effekte nicht in das ESPEasy-Plugin von FHEM eingepflegt worden sind. Das ist aber auch nicht weiter wild, da über den Befehl nfx alle Befehle und Parameter erreichbar sind.

Ja da kam die Irritation her. Ich habe jetzt das DOIF auf nfx umgestellt und alles läuft prima. fireflicker und simpleclock habe ich auch noch in das DOIF eingebaut. hue muß ich dann anders lösen. Mal schauen wie ich das weiter ausbaue oder umbaue.

Noch mal danke für die Hilfe.

Gruß
Tobias

djcysmic

Zitat von: LuckyTV am 23 Januar 2019, 19:11:10
Ich hatte zuvor den Stripe im Wohnzimmer und der PC steht im Büro. Bis ich dann ins Wohnzimmer kam war der Effeckt schon vorbei. Schade das der nicht endlos geht mit Farbwechsel.

Der Dualwipe-Effekt ist momentan (noch) als Farbwechseleffekt ausgelegt - wenn du was dauerhaftes haben möchtest, könntest du entweder den Dualscan-Effekt (mit entsprechender Hintergrundfarbe) nehmen oder den Dualwipe-Effekt mit einer entsprechenden Pause permanent aufrufen.
Wenn ich mal wieder etwas Zeit habe, kann ich ja mal schauen, ob ich den Effekt erweitere, dass er zwischen zwei Farben hin und her wechselt.

dev0

ZitatPatch fertig gemacht und mit angehängt.
Hab's eingecheckt.


hugo

Hallo,
ich hänge mich jetzt mal hier rein.
Ich haben einen ModeNCU mit einer Firmware aus diesem Thread geflasht. Am ModeNCU hängt eine WS2812B Strip. In den Tools auf dem ESP kann ich den Strip ansprechen und auch die Pixel einschalten (nfx,all,00ff00,10).
Aus Fhem kann ich keinen Befehl absetzen.

Im ESP folgendes definiert.
Device:
   ✔   NeoPixelBusFX   WordUhr   
Controller:
Enabled   Protocol   Host   Port
   ✔   FHEM HTTP   192.168.12.42   8383

list ESPBridge

Internals:
   CFGFN     
   DEF        bridge 8383
   FD         42
   HOST       bridge
   IPV        4
   MAX_HTTP_SESSIONS 3
   MAX_QUEUE_SIZE 250
   NAME       ESPBridge
   NOTIFYDEV  global
   NR         5197
   NTFY_ORDER 50-ESPBridge
   PORT       8383
   STATE      Initialized
   SUBTYPE    bridge
   TYPE       ESPEasy
   VERSION    2.01
   WARNING_192.168.12.59 http://192.168.12.59:ESPBridge/control?cmd=nfx,all,ff0000,100: malformed or unsupported URL
   READINGS:
     2019-03-02 18:23:44   state           Initialized
   helper:
     pm:
       Encode     1
       JSON       1
     sessions:
       192.168.12.59 0
Attributes:
   authentication 0
   autocreate 1
   combineDevices 0
   group      ESPEasy Bridge
   room       ESPEasy


list ESPEasy_WordClock

Internals:
   CFGFN     
   DEF        192.168.12.59 ESPBridge WordUhr
   HOST       192.168.12.59
   INTERVAL   300
   IODev      ESPBridge
   NAME       ESPEasy_WordClock
   NOTIFYDEV  global
   NR         5213
   NTFY_ORDER 50-ESPEasy_WordClock
   PORT       ESPBridge
   STATE      absent
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    2.01
   READINGS:
     2019-03-02 19:36:30   presence        absent
     2019-03-02 19:36:30   state           absent
   helper:
     fpc        1551547544.8901
     pm:
       Encode     1
       JSON       1
     received:
   sec:
     admpwd     
Attributes:
   IODev      ESPBridge
   room       ESPEasy


Im Log erscheint folgende Meldung:
2019.03.02 19:40:51 3: ESPEasy ESPEasy_WordClock: set ESPEasy_WordClock nfx all,ff0000,100
2019.03.02 19:40:51 2: ESPEasy ESPBridge: http://192.168.12.59:ESPBridge/control?cmd=nfx,all,ff0000,100: malformed or unsupported URL [set ESPEasy_WordClock nfx all,ff0000,100]
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

djcysmic

Zitat von: hugo am 02 März 2019, 20:01:21
Hallo,
ich hänge mich jetzt mal hier rein.
Ich haben einen ModeNCU mit einer Firmware aus diesem Thread geflasht. Am ModeNCU hängt eine WS2812B Strip. In den Tools auf dem ESP kann ich den Strip ansprechen und auch die Pixel einschalten (nfx,all,00ff00,10).
Aus Fhem kann ich keinen Befehl absetzen.

Hallo,

probiere mal bitte, die Kommata durch Leerzeichen zu ersetzen:

set ESPEasy_WordClock nfx all ff0000 100

Über die URL sollten auch Plus-Zeichen funktionieren:

http://192.168.12.59:ESPBridge/control?cmd=nfx+all+ff0000+100

Viele Grüße

hugo

Leider brachte das keinen Erfolg.
Muss ich das Device  ESPEasy_WordClock nicht als Type ESPEasy definieren sondern HTTPMOD?
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

djcysmic

Zitat von: hugo am 03 März 2019, 12:27:39
Leider brachte das keinen Erfolg.
Muss ich das Device  ESPEasy_WordClock nicht als Type ESPEasy definieren sondern HTTPMOD?

Setze mal bitte noch folgende Attribute:

attr ESPEasy_WordClock mapLightCmds nfx
attr ESPEasy_WordClock parseCmdResponse nfx

hugo

@djcysmic
Danke für die Hilfe.
Jetzt hat Fhem ein zweites Device angelegt. Mit diesem Device kann ich jetzt nfx Befehle senden. :)
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

Wigbert

Hallo,
ich bin neu im Forum (und im FHEM) aber ich habe schon viel hier "erlesen können". Herzlichen Dank erst mal an alle Beitragsersteller!

Jetzt habe ich aber eine Frage zum NeopixelBusFX Plugin.
Ich habe FHEM auf einem Raspberry und die WS2812 über ESPEasy angeschlossen. (30 LEDs)
Alle Effekte etc funktionieren einwandfrei.
Jetzt will ich aber für ein Display in FHEM nur einzelne LEDs schalten (an/aus).
Dabei ist mir aufgefallen, dass das Schalten sehr lange dauert
Beispiel "set Display_ESPEasy one 5 FF0000",
            "set Display_ESPEasy one 6 FF0000",
            "set Display_ESPEasy one 7 FF0000",
            "set Display_ESPEasy one 8 FF0000",
Die Befehle werden in FHEM sofort nacheinander ausgegeben, aber die LEDs werden im Abstand von ca. 1 Sec. an (bzw. auch aus) geschaltet.
Daher meine Frage: Ist das Normal?
Habe ich eine Möglichkeit, die Geschwindigkeit zu erhöhen?
Denn bei den "Effekten" werden die LEDs doch auch sehr schnell geschaltet.

Hat jemand einen Tipp für mich?


djcysmic

Zitat von: Wigbert am 05 März 2019, 10:34:31
Hallo,
ich bin neu im Forum (und im FHEM) aber ich habe schon viel hier "erlesen können". Herzlichen Dank erst mal an alle Beitragsersteller!

Jetzt habe ich aber eine Frage zum NeopixelBusFX Plugin.
Ich habe FHEM auf einem Raspberry und die WS2812 über ESPEasy angeschlossen. (30 LEDs)
Alle Effekte etc funktionieren einwandfrei.
Jetzt will ich aber für ein Display in FHEM nur einzelne LEDs schalten (an/aus).
Dabei ist mir aufgefallen, dass das Schalten sehr lange dauert
Beispiel "set Display_ESPEasy one 5 FF0000",
            "set Display_ESPEasy one 6 FF0000",
            "set Display_ESPEasy one 7 FF0000",
            "set Display_ESPEasy one 8 FF0000",
Die Befehle werden in FHEM sofort nacheinander ausgegeben, aber die LEDs werden im Abstand von ca. 1 Sec. an (bzw. auch aus) geschaltet.
Daher meine Frage: Ist das Normal?
Habe ich eine Möglichkeit, die Geschwindigkeit zu erhöhen?
Denn bei den "Effekten" werden die LEDs doch auch sehr schnell geschaltet.

Hat jemand einen Tipp für mich?


Hallo,
Die Effekte sind im NeopixelBusFX-Plugin implementiert und laufen ausschließlich auf dem ESP - FHEM sagt dem ESP nur, welcher Effekt mit welchen Parametern laufen soll.

Du möchtest jetzt die Neopixels schnellstmöglich über FHEM steuern - für Echtzeiteffekte ist das FHEM-ESPEasy-Plugin aber nicht ausgelegt, da es über HTTP-Requests läuft und für jeden Befehl eine Antwort erwartet, bevor der nächste Befehl ausgeführt wird.

Es gibt aber eine Lösung dafür. Wenn du die UDP-Funktion von ESPEasy nutzt, kannst du alle LEDs einzeln fast in Echtzeit steuern - dann allerdings ohne Statusrückmeldung an FHEM. Die musst du dann bei Bedarf über
set Display_ESPEasy nfx statusrequest
abrufen.

Als erstes musst du dafür in ESPEasy unter Tools-Advanced Settings-UDP Port eine Portnummer vergeben (siehe angehängtes Bild) und den ESP rebooten.
Je nach ESPEasy-Version kann es sein, dass du "GlobalSync" aktivieren oder unter Controller noch ein Generic UDP-Device anlegen musst - bei mir ging es auch ohne.

Dann schreibst dir eine Funktion in deine myUtils - vielen Dank an marvin78:

Zitat von: marvin78 am 12 August 2016, 07:42:37
sub UDP_Msg($$)
{
my ($dest,$cmd)  = @_;
my $sock = IO::Socket::INET->new(
    Proto    => 'udp',
    PeerPort => 6666,
    PeerAddr => $dest
) or die "Could not create socket: $!\n";
$sock->send($cmd) or die "Send error: $!\n";
return "send $cmd";
}


als sub für die myUtils. Dann aufrufen per

UDP_Msg("HOST","MESSAGE");

Die Portnummer (hier 6666) musst du durch deine UDP-Portnummer aus ESPEasy ersetzen.
Dann führst du ein Reload deiner myUtils aus:

reload 99_myUtils

Jetzt kannst du beispielsweise über die FHEM Kommandozeile oder DOIF/notify/etc. folgende Befehle ausführen:


{UDP_Msg("192.168.xxx.xxx","nfx one 1 00ff00")};
{UDP_Msg("192.168.xxx.xxx","nfx one 2 0000ff")};
{UDP_Msg("192.168.xxx.xxx","nfx one 3 0ff000")};
{UDP_Msg("192.168.xxx.xxx","nfx one 4 000ff0")};


Die IP ersetzt du durch die IP deines ESPs.

Bei mir wurden die Farben sofort nach Betätigung der Entertaste umgesetzt ;)

Viele Grüße

Wigbert

Hallo djcysmic,
das hört sich aber gut an,
du hast mir ja eine sehr gute Anleitung beschrieben.
Ich werde es  heute Abend sofort ausprobieren und melde das Ergebnis zurück.
Herzlichen Dank schon mal.
Wigbert

Wigbert

Hallo djcysmic,
nochmals herzlichen Dank.
Es funktioniert.
Ich bin begeistert. Deine Beschreibung ist super!
Ich habe das Script in der 99_myUtils.pm noch dahingehend geändert, dass ich die IP Adresse dort fest vorgegeben hab, da ich ja nur ein Display habe (derzeit).
Mir ist zwar aufgefallen, dass im Event Monitor
2019-03-06 21:27:18 DOIF Display_Kueche_Licht error: {UDP_LED("nfx one 29 050500");}: send nfx one 29 050500
steht, aber funktionieren tut es trotzdem.
Warum dort der Eintrag "error" steht habe ich noch nicht herausgefunden.
(Der Aufruf erfolgt mit:  {UDP_LED("nfx one 29 000005");}

Viele Grüsse
Wigbert