Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Tasmota Script Ver. a for QS-WiFi-D01-TRIAC 150W 1CH-Dimmer
>D
sw=0
tmp=0
cnt=0
tmr=0
hold=0
pwrt=0
slid=0
dim=""
doff="FF550005DC0A"
splo=2 ;short press lo limit
spup=10 ;short press up limit
ddir=0 ;dim dir 0/1
dmul=2.2 ;dim multipl 1..2.55
dstp=2 ;dim step/speed 1..5
dlo=15 ;dim lolimit min.0
dup=95 ;dim uplimit max.100
dval=50 ;start dim level 0..100
>B
print > Wifi-1CH-Dimmer-Script v2.0a <
print >> QS-WiFi-D01 150W Dimmer <<
;hide cnt webui
->WebSensor1 0
;reset cnt@teleperiod
->SetOption79 1
->Baudrate 9600
;boot sequ
=#snddim(dval)
delay(1000)
->SerialSend5 %doff%
=>Power1 0
>F
cnt=pc[1]
if chg[cnt]>0
;sw press
then sw=1
else sw=0
;sw not pressed
endif
; 100ms timer
tmr+=1
; short press
if sw==0
and tmr>splo
and tmr<spup
then
pwrt^=1
;change on/off
if pwrt>0
then
=#snddim(dval)
=>Power1 1
else
->SerialSend5 %doff%
=>Power1 0
endif
endif
; long press
if sw>0
then
if tmr>spup
then
hold=1
;off then on
if pwrt==0
then
pwrt=1
endif
;dim if on&hold
if pwrt>0
then
if ddir>0
then
;incr dimlevel
dval+=dstp
if dval>dup
then
;upper limit
dval=dup
endif
else
;decr dimlevel
dval-=dstp
if dval<dlo
then
;lower limit
dval=dlo
endif
endif
endif
endif
else
tmr=0
if hold>0
then
hold=0
;change dim dir
ddir^=1
endif
endif
if chg[dval]>0
then
=#snddim(dval)
=>Dimmer %dval%
endif
>E
; slider
slid=Dimmer
if chg[slid]>0
then
; dim per slider
if slid>0
then
dval=slid
else
pwrt=0
endif
endif
>P
; on/off webui
if pwr[1]>0
then
pwrt=1
dim="FF55"+hn(dval*dmul)+"05DC0A"
->SerialSend5 %dim%
else
pwrt=0
->SerialSend5 %doff%
endif
; subroutine
#snddim(tmp)
dim="FF55"+hn(tmp*dmul)+"05DC0A"
->SerialSend5 %dim%
#
@dbrb2
Copy link

dbrb2 commented Nov 29, 2021

I found today that the scripting builds I was using did not support MQTT autodiscovery - so I rebuilt one on gitpod, and got discovery working again.

The dimming on this version works as expected using the scripts above, as does the discovery over MQTT - however power toggles no longer work at all.

On attempting a toggle I now get:

23:54:29.999 SRC: WebGui from 192.168.1.154
23:54:30.002 var not found: Dimmer
23:54:30.012 MQT: tele/bedroom_light/STATE = {"Time":"2021-11-28T23:54:30","Uptime":"0T00:01:49","UptimeSec":109,"Heap":22,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":19,"MqttCount":1,"POWER":"ON","Dimmer":40,"Fade":"OFF","Speed":1,"LedTable":"ON","Wifi":{"AP":1,"SSId":"barkernet","BSSId":"78:65:59:7C:9E:47","Channel":6,"Mode":"11n","RSSI":98,"Signal":-51,"LinkCount":1,"Downtime":"0T00:00:03"}}
23:54:30.018 MQT: stat/bedroom_light/RESULT = {"POWER":"ON"}
23:54:30.021 MQT: stat/bedroom_light/POWER = ON
23:54:30.555 CFG: Saved to flash at FB, Count 1356, Bytes 4096
23:54:42.435 WIF: Sending Gratuitous ARP
23:54:44.759 WIF: Checking connection...

Any thoughts?

@thxthx0
Copy link
Author

thxthx0 commented Nov 29, 2021

Any thoughts?

Hi,

this must be set in my_user_config.h / user_config_override.h:

#define USE_SCRIPT                               // Add support for script (+17k code)
  #define SCRIPT_POWER_SECTION                   // enable >P section (execute on power changes)

or you may use:
https://github.com/tasmota/install/blob/main/firmware/unofficial/tasmota-scripting.bin
or
https://github.com/tasmota/install/blob/main/firmware/unofficial/tasmota-scripting.bin.gz

@dbrb2
Copy link

dbrb2 commented Nov 29, 2021

Ah - thanks very much, I missed that line. I will try it this evening.
When I initially tried the unofficial build, the dimmer worked, but then MQTT autodiscovery did not - I think it may be left commented out in the automatic builds - but I'll take a look

Thanks for the help

@dbrb2
Copy link

dbrb2 commented Nov 29, 2021

Thanks - getting there!
The precompiled binaries functioned, but did not have auto discovery MQTT enabled
My own build, with your extra #define line, got the power on/off section working fine along with auto discovery

At this point, the dimming works, but toggles on/off do not. I suspect there are some status messages that are not being sent/received as expected.

I think that is because I had not set:

#define TELE_ON_POWER true

from its default of false. Doing this has partially resolved the issue - there is now a STATE message on every power ON, but not one on POWER OFF. Still looking into why!

@thxthx0
Copy link
Author

thxthx0 commented Nov 29, 2021

Domoticz requires a STATE message

maybe autodiscovery plugin issue (?) and maybe SetOption59 on helps,

I also use the dimmer with Domoticz and it works without autodiscovery,
(added the dimmer manually to Domoticz and inserted the Idx in Tasmota).

@dbrb2
Copy link

dbrb2 commented Nov 29, 2021

@MFe-tasmota
Copy link

MFe-tasmota commented Jan 29, 2022

Hi there,

using QS-WiFi-D01-TRIAC since about 2 years with old tasmota an 0.3 script. Since about a year WebUI does reacts anymore, last week dimmer stops working completly (also LED goes defective). So i have reflashed tasmota to reanimate the dimmer, using the actual version. Usind the new v2.0a script, but the light changes with some delay on changes in the WebUI slider and when I dim below 9% the LED begans to flicker and the dimmer resets. So i set limit minimal dimming rangen by setting dlo to 10 and with it works well with the wall switch, but using the slider in the webUi dimvalues below 10 can still be set causing a reset of the dimmer.

So i have read the scripting manual und changed some parts in the script 2.0a:

Changed GPIO14 from pwr1 to relay1 (to get rid of the "old" slider)

replaced

'>E
; slider
;slid=Dimmer
;if chg[slid]>0
;then
; dim per slider
;if slid>0
;then
;dval=slid
;else
;pwrt=0
;endif
;endif

by

'>W
sl(%dlo% %dup% dval "%dlo%" "%dval%" "%dup%")

for new slider.

When Dimmer is off and a differend dval than before is choosen with the new slider, die dimmer goes directly on. To also get correct state of relay1 (must toogle to Power1 1) by adding the following to the script in ^F section in dval-if-loop:

if sw==0
then
=>Power1 1
endif

before:

if chg[dval]>0
then
=#snddim(dval)
=>Dimmer %dval%
endif

after change:

if chg[dval]>0
then
=#snddim(dval)
=>Dimmer %dval%
if sw==0
then
=>Power1 1
endif
endif

pros:

  • The new slider now shows the minimum an maximum values and the actual dimvalue an the LED and reacts much faster in changes in WebUi and can only moved in the ranges set in >D section.

cons:

  • none konwn yet

Best regards

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment