Hallo ich habe mir einen Zwei Gang Touch-Schalter gekauft und möchte mit Hilfe dessen einen RGBW Strip (angeschlossen über ein Magic Home LED Controller) ein und ausschalten können und die Helligkeit steuern können. Sowohl auf den Schalter, als auch auf den LED Controller habe ich Tasmota in der neuesten Generation (8.3.1) geflashed. Des Weiteren soll über den Schalter auch die Deckenlampe ein und ausgeschaltet werden (nicht dimmbar, soll direkt über das integrierte Relay gesteuert werden). Um mit dem Schalter die LEDs Dimmen zu können, habe ich ein Script geschrieben, durch welches, durch gedrückt halten des Touch-Punktes, die Helligkeit verändert werden kann. Die aktuelle Helligkeit wird in einer Variablen gehalten. Nun soll der Zustand zwischen dem Schalter und dem LED Controller synchronisiert werden. Um dem Schalter auch per Dimmer-Befehl steuern zu können, habe ich Tasmota mit USE_SCRIPT_SUB_COMMAND kompiliert und wie zu sehen eine Subroutine erstellt. Leider kann ich die Subroutine nicht über die Konsole oder MQTT aufrufen, da er das Kommando nicht finden kann. Am Ende sollen die Zustände über eine Gerätegruppe synchronisiert werden.
Hier einmal das Skript:
>D
sw1=0
sw2=0
tmr=0
tmp=0
shortpru=8 ;short press up limit
dimdir=0 ;dim direction 0/1
dimmlp=2.2 ;dim multiplier 1..2.55
dimstp=4 ;dim step/speed 1..5
dimval=70 ;start dim level 0..100
slider=70
>B
spinm(12 1)
spinm(14 1)
>BS
spin(14 pwr[1]^1)
spin(12, pwr[2]^1)
>b
sw1=bt[1]^1
sw2=bt[2]^1
if sw1==0
then
if tmr<shortpru
then
=>POWER1 toggle
if pwr[1]==1
and dimval==0
then
=#DIMMER(70)
endif
spin(14 pwr[1]^1)
endif
tmr=0
else
dimdir^=1
endif
if sw2==0
then
=>POWER2 toggle
spin(12 pwr[2]^1)
endif
>F
if sw1==1
then
tmr+=1
if tmr>shortpru
then
if pwr[1]==1
then
if dimdir==1
then
dimval+=dimstp
if dimval>100
then
dimval=dimul
dimdir=0
endif
else
dimval-=dimstp
if dimval<1
then
dimval=dimll
dimdir=1
endif
endif
endif
endif
endif
if dimval!=slider
then
if chg[dimval]>0
then
slider=dimval
else if chg[slider]>0
then
=#DIMMER(slider)
endif
>E
spin(14 pwr[1]^1)
spin(12 pwr[2]^1)
>W
sl(0 100 slider "0" "Dimmer" "100")
#DIMMER(tmp)
if tmp<=0
then
=>POWER1 0
spin(14 1)
dimval=0
dimdir=1
else if tmp>=100
then
=>POWER1 1
spin(14 0)
dimval=100
dimdir=0
else
=>POWER1 1
dimval=tmp
endif
#
Alles anzeigen
Gerne könnt ihr auch Alternativen vorschlagen, wie ich mit Hilfe des Touch-Schalters und gedrückt halten des Touch-Punktes die Helligkeit des Controllers einstellen kann und die Zustände synchron halten kann.