Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Tasmota Script for WiFi-2Channel-Dimmer QS-WiFi-D02-2C or MS-105B-220
;WiFi-2CH-Dimmer v1.3
;QS-WiFi-D02-2C
;MS-105B
>D
sw1=0
sw2=0
x=0
cn1=0
cn2=0
tm1=0
tm2=0
h1=0
h2=0
t1=0
t2=0
sl1=0
sl2=0
di=""
pl=2
pu=10
dd1=0
dd2=0
mp=2.2
sp=2
ll=15
ul=95
dv1=70
dv2=70
p1=0
p2=0
>B
=>Counter1 0
=>Counter2 0
=>Baudrate 9600
=#sd1(dv1)
delay(1000)
=#sd1(0)
=#sd2(0)
>F
cn1=pc[1]
cn2=pc[2]
if chg[cn1]>0
then sw1=1
else sw1=0
endif
if chg[cn2]>0
then sw2=1
else sw2=0
endif
tm1+=1
tm2+=1
if sw1==0
and tm1>pl
and tm1<pu
then
t1^=1
if t1==1
then
=#sd1(dv1)
else
=#sd1(0)
endif
endif
if sw2==0
and tm2>pl
and tm2<pu
then
t2^=1
if t2==1
then
=#sd2(dv2)
else
=#sd2(0)
endif
endif
if sw1>0
then
if h1==0
then
dd1^=1
endif
if tm1>pu
then
h1=1
if t1>0
then
if dd1>0
then
dv1+=sp
if dv1>ul
then
dv1=ul
endif
=#sd1(dv1)
else
dv1-=sp
if dv1<ll
then
dv1=ll
endif
=#sd1(dv1)
endif
endif
endif
else
tm1=0
h1=0
endif
if sw2>0
then
if h2==0
then
dd2^=1
endif
if tm2>pu
then
h2=1
if t2>0
then
if dd2>0
then
dv2+=sp
if dv2>ul
then
dv2=ul
endif
=#sd2(dv2)
else
dv2-=sp
if dv2<ll
then
dv2=ll
endif
=#sd2(dv2)
endif
endif
endif
else
tm2=0
h2=0
endif
>E
sl1=Channel1
if chg[sl1]>0
then
if sl1>0
then
dv1=sl1
=#sd1(dv1)
else
t1=0
=#sd1(0)
endif
endif
sl2=Channel2
if chg[sl2]>0
then
if sl2>0
then
dv2=sl2
=#sd2(dv2)
else
t2=0
=#sd2(0)
endif
endif
p1=pwr[1]
if p1==1
then
t1=1
=#sd1(dv1)
else
t1=0
=#sd1(0)
endif
p2=pwr[2]
if p2==1
then
t2=1
=#sd2(dv2)
else
t2=0
=#sd2(0)
endif
#sd1(x)
di="FF5501"+hn(x*mp)+"0000000A"
=>SerialSend5 %di%
=>Channel1 %x%
#sd2(x)
di="FF550200"+hn(x*mp)+"00000A"
=>SerialSend5 %di%
=>Channel2 %x%
#
@thxthx0

This comment has been minimized.

Copy link
Owner Author

@thxthx0 thxthx0 commented Jan 31, 2020

QS-WIFI-D02

Template:
{"NAME":"2Chan-Dimmer","GPIO":[255,148,255,149,38,43,0,0,255,42,37,255,255],"FLAG":0,"BASE":18}

Console:
SetOption68 1

We have to use SetOption68 1 for two dimmer sliders
with "Channel1" and "Channel2" for PWM1(37) and PWM2(38).

2chan-dimmer-pinout

@adfolfotregosa

This comment has been minimized.

Copy link

@adfolfotregosa adfolfotregosa commented Feb 3, 2020

Thank you for this. I'm almost there. I am missing the device template or pinout assignments. Can you help ?

thank you

EDIT:

Counter 1 GPIO13, counter 2 is GPIO5.

@thxthx0

This comment has been minimized.

Copy link
Owner Author

@thxthx0 thxthx0 commented Feb 4, 2020

thanks 👍 , updated above with info from:
arendst/Tasmota#5737 (comment)

@timaseth

This comment has been minimized.

Copy link

@timaseth timaseth commented Feb 14, 2020

Hi There!
Struggling Noob here - I compiled the binary step by step per details on Tasmota wiki but upon navigating 'Configuration'>>, I see the usual suspects as option and no option to paste a script.
I am certain I am missing something very obvious - please guide.

image

image

@aceindy

This comment has been minimized.

Copy link

@aceindy aceindy commented Feb 20, 2020

@amitseth13 I managed to get it compiled, and the DS01 (1 channel) works fine.
But on the 2 channel (DS02) only the 1st channel shows signs of live, 2nd channel is present, but shows wrong parameters (f.e. RGB ??)
I can send you the bins if you want?

@timaseth

This comment has been minimized.

Copy link

@timaseth timaseth commented Feb 20, 2020

Thanks mate - much appreciate. That would start my tinkering, if nothing. Await your bins and thanks in advance!

@dannaren

This comment has been minimized.

Copy link

@dannaren dannaren commented Feb 20, 2020

This works very well. My 2nd channel also shows the color temp output, but here however, voltage output will actually change in the desired manner for both outputs anyway. One thing I'm wondering; Are the dimmer max or dimmer range controlled by this script or the tasmota software? Because here, max output will only give 195volts out of 220. and so, I would like to crank it all the way up to 220.

@aceindy

This comment has been minimized.

@timaseth

This comment has been minimized.

Copy link

@timaseth timaseth commented Feb 23, 2020

@aceindy - Many thanks for point out the obvious. Just installed my first compile...EVER!

@maxela

This comment has been minimized.

Copy link

@maxela maxela commented Feb 27, 2020

@thxthx0 based on your script I have programmed a variant that dimms the light on and off softly. This prevents the lights from flashing shortly when you switch them on to a low value and they were dimmed to max the last time. I prefer a soft fade in and out anyway ;)

Here's my code: https://gist.github.com/maxela/64af0e0471aa59c1550b05d8c0d79802

@dondch

This comment has been minimized.

Copy link

@dondch dondch commented Mar 1, 2020

I have dual dimmer and tried several variant off scripts but what I've noticed is that I can not turn ON second switch via MQTT from Home Assistant, turning OFF works but not ON. Switch one both ON and OFF work fine from Home Assistant. Both switches work fine via web toggle button. Are you seeing same issue ?

@maxela

This comment has been minimized.

Copy link

@maxela maxela commented Mar 2, 2020

@dondch have you tried power1 on,
power1 off and power2 on, power2 off in tasmota console? I use OpenHAB and everything works fine via mqtt.

Do you use this template and option?

Template:
{"NAME":"2Chan-Dimmer","GPIO":[255,148,255,149,38,43,0,0,255,42,37,255,255],"FLAG":0,"BASE":18}

Console:
SetOption68 1

I use my variant of the script: https://gist.github.com/maxela/64af0e0471aa59c1550b05d8c0d79802

@aceindy

This comment has been minimized.

Copy link

@aceindy aceindy commented Mar 4, 2020

@maxela,
I've exactly similar behavior on HomeAss, from tasmota control everything appears to be working fine, but from H.A. I can switch Off, but not On.
I also noted that :

  • channel 1 is mounted as a switch (on/off) instead of a dimmer (0-100)
  • channel 2 is mounted as a dimmer (0-100), but comes with color temperature setting (warm/cool)

I haven't dived deep yet into mqtt, but on device console I can see the commands coming through:
08:24:24 MQT: tasmota/stat/RESULT = {"POWER1":"OFF"}
08:24:24 MQT: tasmota/stat/POWER1 = OFF
08:24:25 MQT: tasmota/stat/RESULT = {"POWER2":"OFF"}
08:24:25 MQT: tasmota/stat/POWER2 = OFF
08:24:25 MQT: tasmota/tele/STATE = {"Time":"2020-03-

@dondch

This comment has been minimized.

Copy link

@dondch dondch commented Mar 4, 2020

I think there should be a way to modify the way tasmota reports configuration to Home Assistant but until someone figures that out I came up with a workaround in configuration.yaml:
(you might want to change names according to your configuration. "dualdimmer" bellow is MQTT topic name from tastmota configuration)

light:

  • platform: mqtt
    name: "dualdimmer_SW1"
    state_topic: "dualdimmer/stat/POWER1"
    command_topic: "dualdimmer/cmnd/POWER1"
    availability_topic: "dualdimmer/tele/LWT"
    brightness_state_topic: "dualdimmer/stat/RESULT"
    brightness_command_topic: "dualdimmer/cmnd/Channel1"
    brightness_scale: 100
    brightness_value_template: >
    {% if value_json.Channel1 is defined %}
    {{ value_json.Channel1 }}
    {% else %}
    {% if state_attr('light.dualdimmer_SW1','brightness') == none %}
    0
    {% else %}
    {{ state_attr('light.dualdimmer_SW1','brightness') / 255 * 100 }}
    {% endif %}
    {% endif %}
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
    retain: false
  • platform: mqtt
    name: "dualdimmer_SW2"
    state_topic: "dualdimmer/stat/POWER2"
    command_topic: "dualdimmer/cmnd/POWER2"
    availability_topic: "dualdimmer/tele/LWT"
    brightness_state_topic: "dualdimmer/stat/RESULT"
    brightness_command_topic: "dualdimmer/cmnd/Channel2"
    brightness_scale: 100
    brightness_value_template: >
    {% if value_json.Channel2 is defined %}
    {{ value_json.Channel2 }}
    {% else %}
    {% if state_attr('light.dualdimmer_SW2','brightness') == none %}
    0
    {% else %}
    {{ state_attr('light.dualdimmer_SW2','brightness') / 255 * 100 }}
    {% endif %}
    {% endif %}
    qos: 1
    payload_on: "ON"
    payload_off: "OFF"
    payload_available: "Online"
    payload_not_available: "Offline"
    retain: false
@aceindy

This comment has been minimized.

Copy link

@aceindy aceindy commented Mar 5, 2020

@dondch Awesome dude... looks like this works ;that is on mqtt console (at least no errors on either HA nor 2ch dimmer).
I only haven't actually connected a light on ch2 output (yet), but ch1 already worked, so I assume it’ll work on ch2 too;)

PS: SetOption19=0 so HA won’t use auto detect 😉

Thanks !!

@poezadri

This comment has been minimized.

Copy link

@poezadri poezadri commented Mar 12, 2020

Hello,
first I want to apologize for my bad english (google translate),
I cannot configure this module "power1 ON" works but with the command "power2 ON" the console responds command unknow, same for channel1 and channel 2, the switches in S1 and S2 do not respond
Hope you can help me for info I have entered the script, the template and activated "Setoption68 1"
thank you in advance

@aceindy

This comment has been minimized.

Copy link

@aceindy aceindy commented Mar 14, 2020

@poezadri Does the unit show correct options in it's webpage [http://<ip_of_2ch_dimmer>], and does the unit respond well on it?
image
The problem I had; it worked fine from the tasmoto webpage, but controling it from HomeAssistant was irratic (especially on the 2nd channel).
@dondch helped me fix it by providing me the idea of adding a mqtt based configuration, instead of using the 'auto-detect' (SetOption19=0) ;)

@poezadri

This comment has been minimized.

Copy link

@poezadri poezadri commented Mar 15, 2020

thank you for your answer, and actually I had saved the template but not activated in configuration-> module configuration

@aceindy

This comment has been minimized.

Copy link

@aceindy aceindy commented May 6, 2020

@dondch ,

Looks like there is one more 'glitch', the status of channel 1 and 2 are not updated on HA when operated by the manual switch :-/
Will try to fix it (or maybe you already did ??)

@casapleiadi

This comment has been minimized.

Copy link

@casapleiadi casapleiadi commented May 7, 2020

Hello, I was able to install tasmota firmware and load the template but the device is not working. Looks like both lights are always on at 50% power. Unfortunately I am not capable of activate script, it is a must have to let the device work or it is just for the button functions?

I also noticed that after a few minutes the device loses its configuration and start over with the tasmota-xxxx thingy.

Any suggestions?

a place to download the tasmota bin with script activated for this dual dimmer would be awesome for noobs like me.

@maxela

This comment has been minimized.

Copy link

@maxela maxela commented May 8, 2020

@casapleiadi

Hello, I was able to install tasmota firmware and load the template but the device is not working. Looks like both lights are always on at 50% power. Unfortunately I am not capable of activate script, it is a must have to let the device work or it is just for the button functions?

It's required for both the button functions and mqtt.

I also noticed that after a few minutes the device loses its configuration and start over with the tasmota-xxxx thingy.

Do you use and activate this template and option?

Template:
{"NAME":"2Chan-Dimmer","GPIO":[255,148,255,149,38,43,0,0,255,42,37,255,255],"FLAG":0,"BASE":18}

Console:
SetOption68 1

The device should respond in the browser like in the post of @aceindy above https://gist.github.com/thxthx0/ce7f72ea75ab82be2704c9536ea77bf7#gistcomment-3212382

@aldii-hassio

This comment has been minimized.

Copy link

@aldii-hassio aldii-hassio commented May 19, 2020

Only switch 2 works. Any help?

@aceindy

This comment has been minimized.

Copy link

@aceindy aceindy commented May 21, 2020

@dondch ,

Looks like there is one more 'glitch', the status of channel 1 and 2 are not updated on HA when operated by the manual switch :-/
Will try to fix it (or maybe you already did ??)

Finally had the time to fix the 'glitch' that the status of channel 1 and 2 are not updated on HA when operated by the manual switch by using value_template See also HA documentation https://www.home-assistant.io/integrations/switch.mqtt/

Just replace

    state_topic: "dualdimmer/stat/POWER1"
by
    state_topic: "dualdimmer/stat/RESULT"
    value_template: '{{ value_json["POWER1"] }}'

And ofc the same for POWER2:

light:

- platform: mqtt
  name: "dualdimmer_SW1"
  state_topic: "dualdimmer/stat/RESULT"
  value_template: '{{ value_json["POWER1"] }}'
  command_topic: "dualdimmer/cmnd/POWER1"
  availability_topic: "dualdimmer/tele/LWT"
  brightness_state_topic: "dualdimmer/stat/RESULT"
  brightness_command_topic: "dualdimmer/cmnd/Channel1"
  brightness_scale: 100
  brightness_value_template: >
  {% if value_json.Channel1 is defined %}
  {{ value_json.Channel1 }}
  {% else %}
  {% if state_attr('light.dualdimmer_SW1','brightness') == none %}
  0
  {% else %}
  {{ state_attr('light.dualdimmer_SW1','brightness') / 255 * 100 }}
  {% endif %}
  {% endif %}
  qos: 1
  payload_on: "ON"
  payload_off: "OFF"
  payload_available: "Online"
  payload_not_available: "Offline"
  retain: false
- platform: mqtt
  name: "dualdimmer_SW2"
  state_topic: "dualdimmer/stat/RESULT"
  value_template: '{{ value_json["POWER2"] }}'
  command_topic: "dualdimmer/cmnd/POWER2"
  availability_topic: "dualdimmer/tele/LWT"
  brightness_state_topic: "dualdimmer/stat/RESULT"
  brightness_command_topic: "dualdimmer/cmnd/Channel2"
  brightness_scale: 100
  brightness_value_template: >
  {% if value_json.Channel2 is defined %}
  {{ value_json.Channel2 }}
  {% else %}
  {% if state_attr('light.dualdimmer_SW2','brightness') == none %}
  0
  {% else %}
  {{ state_attr('light.dualdimmer_SW2','brightness') / 255 * 100 }}
  {% endif %}
  {% endif %}
  qos: 1
  payload_on: "ON"
  payload_off: "OFF"
  payload_available: "Online"
  payload_not_available: "Offline"
  retain: false

@casapleiadi

This comment has been minimized.

Copy link

@casapleiadi casapleiadi commented Jun 14, 2020

Great job, the devices (I have multiple) works fine on tasmota consolle. I am using node-red instead of HA, I can switch the lights on and off but can't control dimmers, can you please tell me the MQTT command (or the console command) to dim Channel1 ans channel2? thanks!

@aceindy

This comment has been minimized.

Copy link

@aceindy aceindy commented Jun 14, 2020

Hmm..I also use node red (within HA), but not with MQTT.
(Or did I misunderstand, and you use MQTT only and no HA at all??)

In case you do use HA, I use a 'fixed' brightness here, I'm sure you'll find a way to adapt it.
image

https://pastebin.com/iRNVhmmU

I also tinkered a while ago with a softstarter

@yuraivan

This comment has been minimized.

Copy link

@yuraivan yuraivan commented Jul 7, 2020

Hello everyone!!!! I did everything according instruction.I have entered the script, the template and activated "Setoption68 1". In web interface I see all correct. Toggle 1 and 2 are working but my lamps not light(((((( What is the problem???

@yuraivan

This comment has been minimized.

Copy link

@yuraivan yuraivan commented Jul 8, 2020

Hello everyone!!!! I did everything according instruction.I have entered the script, the template and activated "Setoption68 1". In web interface I see all correct. Toggle 1 and 2 are working but my lamps not light(((((( What is the problem???

Sorry for this moment lamp lights everytime and dont turn off. In console I see turn on and off process

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.