-
-
Save thxthx0/ce7f72ea75ab82be2704c9536ea77bf7 to your computer and use it in GitHub Desktop.
;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% | |
# |
thanks 👍 , updated above with info from:
arendst/Tasmota#5737 (comment)
@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?
Thanks mate - much appreciate. That would start my tinkering, if nothing. Await your bins and thanks in advance!
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 - Many thanks for point out the obvious. Just installed my first compile...EVER!
@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
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 ?
@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
@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-
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
@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 !!
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
@poezadri Does the unit show correct options in it's webpage [http://<ip_of_2ch_dimmer>], and does the unit respond well on it?
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) ;)
thank you for your answer, and actually I had saved the template but not activated in configuration-> module configuration
@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 ??)
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.
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
Only switch 2 works. Any help?
@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
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!
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.
I also tinkered a while ago with a softstarter
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???
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
This thread is probably dead but I will try.
I've successfully flashed LM1 chip with script enabled firmware. I've pasted the script and enabled Setoption 1. Everything looks ok in Tasmota. I can see two toggles for both channels, both sliders for dimming and two counters.
My problem - my lamps are always off despite of the status in tasmota. I've tried checking corresponding channels with multimeter and one of them reports ~10V when the lamp is on or off, and the other one is always 0. Using push button also doesn't work. If I push the button toggle status doesn't change and only the counter increases.
I've tried script in this thread and script available here - https://gist.github.com/maxela/64af0e0471aa59c1550b05d8c0d79802
Maybe I did something wrong? Any help would be appreciated...
Thank you!
This thread is probably dead but I will try
There’s not much happening in this thread, but I get notified and usually I try to help.
Which device and which version of the tasmota firmware are you using?
Hi, @maxela, thanks for a quick reply!
At first glance it looks like I'm using the same two channel dimmer that is displayed in this thread with LM1 chip but my version might be a bit different. I will attach a photo of the insides when I get back home from work.
I'm not 100% sure but I believe it was 9.5.
Just for info, i moved to esphome with this 2ch dimmer unit, it works a lot smoother.
https://community.home-assistant.io/t/qs-wifi-d01-triac-dimmer/149811/25?u=aceindy
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.