FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: wilkens am 12 April 2019, 00:07:33

Titel: NeopixelBusFX - Frage zu "FHEM_DOIF_NFX.txt"
Beitrag von: wilkens am 12 April 2019, 00:07:33
Hallo,

ich habe einen 2811 LED Stripe an einen NodeMCU mit ESPEasy angeschlossen und kann diesen bereits über FHEM steuern.
Nun liegt der Bibliothek "NeopixelBusFX-master" eine textdatei bei: "FHEM_DOIF_NFX.txt"

In dieser ist folgender Code beschrieben:


defmod ESP DOIF ## cmd_1: Ausschalten\
([$SELF:effect] eq "off") (\
set [$SELF:device] nfx off 1000 10\
)\
## cmd_2: Animation anhalten\
DOELSEIF ([$SELF:effect] eq "stop") (\
set [$SELF:device] nfx stop\
)\
## cmd_3: Einschalten\
DOELSEIF ([$SELF:effect] eq "on") (\
set [$SELF:device] nfx on 1000 10\
)\
## cmd_4: Alle Pixel auf eine Farbe setzen\
DOELSEIF ([$SELF:effect] eq "all") (\
set [$SELF:device] nfx all [$SELF:color_1]\
)\
## cmd_5: Regenbogen-Effekt\
DOELSEIF ([$SELF:effect] eq "rainbow") (\
set [$SELF:device] nfx rainbow [$SELF:speed]\
)\
## cmd_6: Feuer-Effekt\
DOELSEIF ([$SELF:effect] eq "fire") (\
set [$SELF:device] nfx fire [$SELF:speed] 255 40 20\
)\
## cmd_7: Fake TV Animation\
DOELSEIF ([$SELF:effect] eq "faketv") (\
set [$SELF:device] nfx faketv 1 72\
)\
## cmd_8: Colorfade\
DOELSEIF ([$SELF:effect] eq "colorfade") (\
set [$SELF:device] nfx colorfade [$SELF:color_1] [$SELF:color_2] 1 72\
)\
## cmd_9: Knightrider\
DOELSEIF ([$SELF:effect] eq "kitt") (\
set [$SELF:device] nfx kitt [$SELF:color_1] [$SELF:speed]\
)\
## cmd_10: Theater\
DOELSEIF ([$SELF:effect] eq "theatre") (\
set [$SELF:device] nfx theatre [$SELF:color_1] [$SELF:color_2] 5 [$SELF:speed]\
)\
## cmd_11: Twinklefade\
DOELSEIF ([$SELF:effect] eq "twinklefade") (\
set [$SELF:device] nfx twinklefade [$SELF:color_1] 8 [$SELF:speed]\
)\
## cmd_12: Wipe-Effekt\
DOELSEIF ([$SELF:effect] eq "wipe") (\
set [$SELF:device] nfx wipe [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)\
## cmd_13: Dualwipe-IN-Effekt\
DOELSEIF ([$SELF:effect] eq "dualwipe") (\
set [$SELF:device] nfx dualwipe [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)\
## cmd_14: Dualwipe-OUT-Effekt\
DOELSEIF ([$SELF:effect] eq "dualwipeout") (\
set [$SELF:device] nfx dualwipe 000000 [$SELF:color_2] [$SELF:speed]\
)\
## cmd_15: Twinkle\
DOELSEIF ([$SELF:effect] eq "twinkle") (\
set [$SELF:device] nfx twinkle [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)\
## cmd_16: Comet\
DOELSEIF ([$SELF:effect] eq "comet") (\
set [$SELF:device] nfx comet [$SELF:color_1] [$SELF:speed]\
)\
## cmd_17: Scan\
DOELSEIF ([$SELF:effect] eq "scan") (\
set [$SELF:device] nfx scan [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)\
## cmd_18: Dualscan\
DOELSEIF ([$SELF:effect] eq "dualscan") (\
set [$SELF:device] nfx dualscan [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)\
## cmd_19: Sparkle\
DOELSEIF ([$SELF:effect] eq "sparkle") (\
set [$SELF:device] nfx sparkle [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)
attr di.sz.nfx alias NeopixelBusFX
attr di.sz.nfx cmdIcon play:rc_PLAY stop:rc_STOP on:taster_ch_an_gruen off:taster_ch_aus_rot
attr di.sz.nfx devStateIcon initialized:general_ok@green cmd_1:general_aus@darkred cmd_2:rc_STOP cmd_3:general_an@green cmd_4:rc_1 cmd_5:rc_2 cmd_6:rc_3 cmd_7:rc_4 cmd_8:rc_5 cmd_9:rc_6 cmd_10:rc_7 cmd_11:rc_8 cmd_12:rc_9
attr di.sz.nfx do always
attr di.sz.nfx eventMap /effect on:on/effect off:off/effect stop:stop/
attr di.sz.nfx group 01_NeopixelBusFX
attr di.sz.nfx icon hue_filled_lightstrip
attr di.sz.nfx readingList speed,effect,color_1,color_2,device
attr di.sz.nfx room Logik,Schlafzimmer
attr di.sz.nfx setList device:test.esp.wemos.1,sz.esp.innensensor effect:wipe,dualwipe,dualwipeout,all,fire,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
attr di.sz.nfx stateFormat state
attr di.sz.nfx webCmd device:effect:color_1:color_2:speed:play:stop:on:off
attr di.sz.nfx webCmdLabel Controller:Effekt:Farbe ;1:Farbe ;2:Speed: ;: ;: ;: ;


Ich schaffe es allerdings nicht das umzusetzen.
Ich habe ein notify definiert und habe alles ab "defmod ESP DOIF" bis zur ) vor den attributen in das DEF Feld des notify kopiert.
Dann habe ich ein dummy definiert und diesem alle attribute zugewiesen (außer "attr di.sz.nfx do always" -> das attribut gibt es nicht?)
Im Dummy setList -> device: Habe ich mein ESP Device eingegeben.
Im Notify statt des ESP den dummy.
Scheinbar ist das aber wohl anders gedacht.

Hat hier jemand einen Tipp für mich?
Was muss ich hier für geräte anlegen und was verweist wohin?

Gruß
Jens


Titel: Antw:NeopixelBusFX - Frage zu "FHEM_DOIF_NFX.txt"
Beitrag von: wilkens am 19 April 2019, 14:57:28
Niemand, der das schon mal umgesetzt hat und mir vielleicht ein paar Screenshots machen kann?
Oder jemand, der mir einen Tip zum Queltext geben kann?

Danke und schöne Feiertage zusammen..
Titel: Antw:NeopixelBusFX - Frage zu "FHEM_DOIF_NFX.txt"
Beitrag von: wilkens am 19 April 2019, 20:19:50
Ich habs...

Die erste Zeile
Zitatdefmod ESP DOIF
legt ein FHEM-Device vom Typ DOIF an.
Alledings landet man dann nicht direkt im DOIF sondern muss dieses erst im Raum Everything suchen.
Auch fehlt hier die DEF Zeile in der Quelltext eingefügt werden kann.
Also das Doif z.B. so anlegen:
Zitatdefmod ESP DOIF ## cmd_1: Ausschalten\
Dann das Device suchen und öffnen. Nun gibt es das DEF Feld. Hier muss der folgende Text rein:

## cmd_1: Ausschalten\
([$SELF:effect] eq "off") (\
set [$SELF:device] nfx off 1000 10\
)\
## cmd_2: Animation anhalten\
DOELSEIF ([$SELF:effect] eq "stop") (\
set [$SELF:device] nfx stop\
)\
## cmd_3: Einschalten\
DOELSEIF ([$SELF:effect] eq "on") (\
set [$SELF:device] nfx on 1000 10\
)\
## cmd_4: Alle Pixel auf eine Farbe setzen\
DOELSEIF ([$SELF:effect] eq "all") (\
set [$SELF:device] nfx all [$SELF:color_1]\
)\
## cmd_5: Regenbogen-Effekt\
DOELSEIF ([$SELF:effect] eq "rainbow") (\
set [$SELF:device] nfx rainbow [$SELF:speed]\
)\
## cmd_6: Feuer-Effekt\
DOELSEIF ([$SELF:effect] eq "fire") (\
set [$SELF:device] nfx fire [$SELF:speed] 255 40 20\
)\
## cmd_7: Fake TV Animation\
DOELSEIF ([$SELF:effect] eq "faketv") (\
set [$SELF:device] nfx faketv 1 72\
)\
## cmd_8: Colorfade\
DOELSEIF ([$SELF:effect] eq "colorfade") (\
set [$SELF:device] nfx colorfade [$SELF:color_1] [$SELF:color_2] 1 72\
)\
## cmd_9: Knightrider\
DOELSEIF ([$SELF:effect] eq "kitt") (\
set [$SELF:device] nfx kitt [$SELF:color_1] [$SELF:speed]\
)\
## cmd_10: Theater\
DOELSEIF ([$SELF:effect] eq "theatre") (\
set [$SELF:device] nfx theatre [$SELF:color_1] [$SELF:color_2] 5 [$SELF:speed]\
)\
## cmd_11: Twinklefade\
DOELSEIF ([$SELF:effect] eq "twinklefade") (\
set [$SELF:device] nfx twinklefade [$SELF:color_1] 8 [$SELF:speed]\
)\
## cmd_12: Wipe-Effekt\
DOELSEIF ([$SELF:effect] eq "wipe") (\
set [$SELF:device] nfx wipe [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)\
## cmd_13: Dualwipe-IN-Effekt\
DOELSEIF ([$SELF:effect] eq "dualwipe") (\
set [$SELF:device] nfx dualwipe [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)\
## cmd_14: Dualwipe-OUT-Effekt\
DOELSEIF ([$SELF:effect] eq "dualwipeout") (\
set [$SELF:device] nfx dualwipe 000000 [$SELF:color_2] [$SELF:speed]\
)\
## cmd_15: Twinkle\
DOELSEIF ([$SELF:effect] eq "twinkle") (\
set [$SELF:device] nfx twinkle [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)\
## cmd_16: Comet\
DOELSEIF ([$SELF:effect] eq "comet") (\
set [$SELF:device] nfx comet [$SELF:color_1] [$SELF:speed]\
)\
## cmd_17: Scan\
DOELSEIF ([$SELF:effect] eq "scan") (\
set [$SELF:device] nfx scan [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)\
## cmd_18: Dualscan\
DOELSEIF ([$SELF:effect] eq "dualscan") (\
set [$SELF:device] nfx dualscan [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)\
## cmd_19: Sparkle\
DOELSEIF ([$SELF:effect] eq "sparkle") (\
set [$SELF:device] nfx sparkle [$SELF:color_1] [$SELF:color_2] [$SELF:speed]\
)


Die folgenden Attribute gelten für das gerade angelegte DOIF mit dem Namen ESP.
Das wird aus dem Beispiel nicht klar, da dort statt ESP di.sz.nfx steht.

attr ESP alias NeopixelBusFX
attr ESP cmdIcon play:rc_PLAY stop:rc_STOP on:taster_ch_an_gruen off:taster_ch_aus_rot
attr ESP devStateIcon initialized:general_ok@green cmd_1:general_aus@darkred cmd_2:rc_STOP cmd_3:general_an@green cmd_4:rc_1 cmd_5:rc_2 cmd_6:rc_3 cmd_7:rc_4 cmd_8:rc_5 cmd_9:rc_6 cmd_10:rc_7 cmd_11:rc_8 cmd_12:rc_9
attr ESP do always
attr ESP eventMap /effect on:on/effect off:off/effect stop:stop/
attr ESP group 01_NeopixelBusFX
attr ESP icon hue_filled_lightstrip
attr ESP readingList speed,effect,color_1,color_2,device
attr ESP room Logik,Schlafzimmer
attr ESP setList device:test.esp.wemos.1,sz.esp.innensensor effect:wipe,dualwipe,dualwipeout,all,fire,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
attr ESP stateFormat state
attr ESP webCmd device:effect:color_1:color_2:speed:play:stop:on:off
attr ESP webCmdLabel Controller:Effekt:Farbe ;1:Farbe ;2:Speed: ;: ;: ;: ;


Angepasst werden muss bei den Attributen noch die setList
Zitatdevice:test.esp.wemos.1,sz.esp.innensensor
Sind hier zwei ESPEasy Device also die Namen der LED Streifen.
Hier einfach den passenden Namen rein oder mehrere. Diese tauchen dann im drop down des ESP devices auf.

Wo genau der unterschied zwischen
defmod ESP DOIF
und
define ESP DOIF
ist, weiß ich nicht. Ich habe beides probiert und erkenne keinen unterschied.

So, vielleicht hilft es ja irgendwann mal irgendwen ;-)

Jens