Costco Feit Smart Dimmer Tuya Convert Tasmota

I’ve tried this rule, but it seems to have no effect. Hardware dimmer button are acting normally. I see that the rule is triggering, and it reports the dimmer to be back at 100 every time, but the light is following my hardware dimmer button’s command, not what’s reported in the console:

04:53:04 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:53:04","Uptime":"0T00:33:31","UptimeSec":2011,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":20,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:53:04 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":20}
04:53:04 RUL: DIMMER#STATE<100 performs "dimmer 100"
04:53:04 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:53:04","Uptime":"0T00:33:31","UptimeSec":2011,"Heap":24,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:53:04 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":100}
04:53:05 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:53:05","Uptime":"0T00:33:32","UptimeSec":2012,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":5,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:53:05 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":5}
04:53:05 RUL: DIMMER#STATE<100 performs "dimmer 100"
04:53:05 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:53:05","Uptime":"0T00:33:32","UptimeSec":2012,"Heap":25,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":86,"Signal":-57,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:53:05 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":100}
04:53:05 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:53:05","Uptime":"0T00:33:32","UptimeSec":2012,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":1,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":86,"Signal":-57,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:53:05 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":1}
04:53:05 RUL: DIMMER#STATE<100 performs "dimmer 100"
04:53:05 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:53:05","Uptime":"0T00:33:32","UptimeSec":2012,"Heap":24,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":86,"Signal":-57,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:53:05 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":100}

Even issuing command “Dimmer 1” does absolutely nothing. The rule trigger, but the light stays where it was:

04:55:18 CMD: dimmer 1
04:55:18 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:55:18","Uptime":"0T00:35:45","UptimeSec":2145,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":1,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":96,"Signal":-52,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:55:18 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":1}
04:55:18 RUL: DIMMER#STATE<100 performs "dimmer 100"
04:55:18 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:55:18","Uptime":"0T00:35:45","UptimeSec":2145,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":96,"Signal":-52,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:55:18 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":100}

I’ve tried adding in delays with:

rule1 on power1#state=1 do backlog delay 5; dimmer 100 endon on dimmer#state<100 do backlog delay 5; dimmer 100 endon

And now, issuing “dimmer 1” makes the dimmer go to the lowest, then after a short while, the rule kicks in, and the dimmer ACTUALLY goes back to 100. A “delay 1” is not enough, “delay 5” seems to work. The buttons still won’t care, the rules are kicking in, but not results on the light output:

04:58:18 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:18","Uptime":"0T00:38:45","UptimeSec":2325,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":80,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:18 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":80}
04:58:18 RUL: DIMMER#STATE<100 performs "backlog delay 5; dimmer 100"
04:58:18 MQT: stat/Dimmer2/RESULT = {"Delay":5}
04:58:19 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:19","Uptime":"0T00:38:46","UptimeSec":2326,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":65,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:19 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":65}
04:58:19 RUL: DIMMER#STATE<100 performs "backlog delay 5; dimmer 100"
04:58:19 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:19","Uptime":"0T00:38:46","UptimeSec":2326,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":104,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:19 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":100}
04:58:19 MQT: stat/Dimmer2/RESULT = {"Delay":5}
04:58:19 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:19","Uptime":"0T00:38:46","UptimeSec":2326,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":50,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:19 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":50}
04:58:19 RUL: DIMMER#STATE<100 performs "backlog delay 5; dimmer 100"
04:58:19 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":35}
04:58:19 RUL: DIMMER#STATE<100 performs "backlog delay 5; dimmer 100"
04:58:19 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:19","Uptime":"0T00:38:46","UptimeSec":2326,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":101,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:19 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":100}
04:58:20 MQT: stat/Dimmer2/RESULT = {"Delay":5}
04:58:20 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:20","Uptime":"0T00:38:47","UptimeSec":2327,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":20,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:20 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":20}
04:58:20 RUL: DIMMER#STATE<100 performs "backlog delay 5; dimmer 100"
04:58:20 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:20","Uptime":"0T00:38:47","UptimeSec":2327,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":104,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:20 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":100}
04:58:20 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:20","Uptime":"0T00:38:47","UptimeSec":2327,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":5,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:20 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":5}
04:58:20 RUL: DIMMER#STATE<100 performs "backlog delay 5; dimmer 100"
04:58:20 MQT: stat/Dimmer2/RESULT = {"Delay":5}
04:58:20 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:20","Uptime":"0T00:38:47","UptimeSec":2327,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":1,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:20 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":1}
04:58:20 RUL: DIMMER#STATE<100 performs "backlog delay 5; dimmer 100"
04:58:20 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:20","Uptime":"0T00:38:47","UptimeSec":2327,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":104,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:20 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":100}
04:58:20 MQT: stat/Dimmer2/RESULT = {"Delay":5}
04:58:21 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:21","Uptime":"0T00:38:48","UptimeSec":2328,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":86,"Signal":-57,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:21 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":100}
04:58:21 MQT: stat/Dimmer2/RESULT = {"Delay":5}
04:58:22 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:58:22","Uptime":"0T00:38:49","UptimeSec":2329,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":99,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:58:22 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":100}

Even powering off / on triggers the rule, but has no effect on the light output, even with delays:

04:59:56 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:59:56","Uptime":"0T00:40:23","UptimeSec":2423,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":99,"MqttCount":1,"POWER":"OFF","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":84,"Signal":-58,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:59:56 MQT: stat/Dimmer2/RESULT = {"POWER":"OFF"}
04:59:56 MQT: stat/Dimmer2/POWER = OFF
04:59:59 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T04:59:59","Uptime":"0T00:40:26","UptimeSec":2426,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":19,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":80,"Signal":-60,"LinkCount":1,"Downtime":"0T00:00:13"}}
04:59:59 MQT: stat/Dimmer2/RESULT = {"POWER":"ON"}
04:59:59 MQT: stat/Dimmer2/POWER = ON
04:59:59 RUL: POWER1#STATE=1 performs "backlog delay 5; dimmer 100"
04:59:59 MQT: stat/Dimmer2/RESULT = {"Delay":4}
05:00:00 MQT: tele/Dimmer2/STATE = {"Time":"2020-11-20T05:00:00","Uptime":"0T00:40:27","UptimeSec":2427,"Heap":26,"SleepMode":"Dynamic","Sleep":10,"LoadAvg":24,"MqttCount":1,"POWER":"ON","Dimmer":100,"Fade":"OFF","Speed":1,"LedTable":"OFF","Wifi":{"AP":1,"SSId":"Maison!","BSSId":"B4:75:0E:FE:EA:7F","Channel":4,"RSSI":82,"Signal":-59,"LinkCount":1,"Downtime":"0T00:00:13"}}
05:00:00 MQT: stat/Dimmer2/RESULT = {"POWER":"ON","Dimmer":100}

You’re reporting that it works on your side, is that with a FEIT dimmer, or a Martin Jerry dimmer ?

Yes I tried this rule on two different Costco Feit Smart Dimmers; one wired electrically to its lights, and the other via Tasmota grouping control rules. In both cases the rule worked fine for me. Rapid smashing the dimmer down button as quickly as I could got the dimmer down to 50% before the rule changed it back, but a simple press nearly instantly changed it back. If there’s any difference it would be that mine are 2019 Tuya-Converted dimmers… but I kind of doubt that would be it. Also my Feits are still on Ebb’s v0.521 custom Tasmota, not his current v0.60 build.

Perhaps there’s a configuration or firmware remnant that’s gumming up your rule execution. Let’s first try configuring the basics for this dimmer. I’m sure you know this, but for the lurkers out there type in the console:

reset 5

After reboot physically disconnect the power to the switch for about 30 seconds and re-apply power. After the switch successfully boots back up, apply the following console commands (remember to let it reboot after each of the first 3):

module 54
tuyamcu 21,2
dimmerrange 10,1000
ledtable 0
backlog rule1 on power1#state=1 do dimmer 100 endon on dimmer#state<100 do dimmer 100 endon; rule1 1

I don’t suggest messing with the dimmerrange manipulation. The 1000,1000 isn’t working on my end either, and honestly that’s something I probably had working when I was using ESPHome. From here go see if it’s working correctly now. If it is, go ahead and set your other misc settings (MQTT, Configure Other, etc.). If it isn’t working then I’m not sure what the issue is… the only things left are the firmware (again I’m not using Ebb’s latest just yet) and a possible hardware variation affecting Ebb’s custom firmware.

1 Like

I am on tasmota 9.1.0, what’s different with ebb’s custom firmware? A quick read of the posts above suggest that the fix ebb implemented is merged somewhere around version 8.x of tasmota, isn’t it?

Reviewing your series of command, it seems this is exactly what I’ve done already, let me try them again, resetting this time…

The stock firmware had all kinds of issues with these switches, with the power cycling bug being the most notorious. It worked more stably with ESPHome (discussed early on in this thread), but had its own bugs / issues there too (not to mention not having the perks or ease of use that Tasmota has). Though I know he intended to submit it to the Tasmota team, I’m not aware of Ebb’s fix ever actually making it into official firmware. Ebb’s latest release, v0.60, is Tasmota v8.5.

Without using his fix, there’s no telling what issues you might have with these switches. Only thing I can suggest is to downgrade to his custom firmware. I do think I read that downgrading Tasmota 9.X to 8.X will likely require serial flashing again due to the way the internal firmware structures have changed. Downgrading via OTA might brick your switch, or at the very least introduce even more strange and erratic behavior. If you’re going to flash another switch, I’d suggest flashing it first to Ebb’s latest firmware located here, and see if that works for you.

I performed a reset 6, and did the full sequence again. No change to the behavior. The rule trigger, but the dimmer’s hardware button are still dimming.

I’ll flash my next dimmer using EBB’s firmware, see what it does.

Do you know if it’s possible to flash OTA from ebb’s firmware based on 8.5 to 9.x ?

You can always upgrade (or “migrate” as the Tasmota team calls it), with the only issue being the size of the version jump. Read the migration path here on the Tasmota page for details, but upgrading from Ebb’s looks like it’s recommended to update to v8.5.1 and then to v9.X.

1 Like

Turning off the white led might actually be possible

See the tuya protocol sheet:


page 21-22

On state 6 , “the indicator should be turned off by the MCU”

This relate how the Tuya MCU display the wifi status with the white light ON/off/blink ext.

So if the ESP send this very right command to the tuyaMCU , we can actually make it think the wifi is in “low power consumption mode” and the tuyaMCU should turn off the white led

Will this have any adverse impact , I dont know

How you make this happen: this need a modification on tasmota or ESPhome code to add the possibility

Read the manual that came with the dimmer
Hold both up and down button on the dimmer for >~5sec
Ajust minimal britness ( in you case , pres up maaaany times)
Hold both up and down button on the dimmer for >~5sec

I’m using ESPhome , but it should work with any firmware as it is a config in the tuya MCU and not the wifi esp chip
I’ve tried it on one of my dimmer , now if I dim it down on the phisical buton , it does not visualy dim it down

Thank you for pointing this out. I remember reading this guide, but somehow missed that part!

I already removed the dimmer’s button on all my switches, but I still have to flash a few to Tasmota. I’ll try this instead of removing the buttons!

I don’t know what I’m talking about, but couldn’t we send that command using a rule in Tasmota that triggers on powerup ?

Again, I have no idea what I’m proposing.

$13 per switch plus $130 of time and labor. :wink:

Works perfectly. Even with my dimmers acting as dimmers this was useful, as by default, the dimmer isn’t programmed to go all the way down. It can go even lower, and my bulbs support it without flickering. WAF was upgraded!

Doesn’t fix the “not all the way 100%” at powerup problem, but not bad!

Tks for this tip!

When it remains fun, there’s no price.

That sounds suspiciously like the Sunk Cost Fallacy.

Sounds like we’re doing what we enjoy doing. If you don’t enjoy it, makes me wonder what you’re doing around in these forums :slight_smile:

You don’t have to wonder, click on my profile and you’ll discover what I do here.

I got several of these Feit smart switches installed and would like to try and flash them with the Tasmota firmware. My question is: Should anything go wrong (or I change my mind), is there a way to reset the switches with the original factory firmware?

This dimmer does not seem to be convertable anymore GOD DAMN !!!

Old news.

The link you just posted already exists within this thread (in this post) submitted on September 17th.

It’s been several months now that you have to flash it manually but first you have de-solder the chip from the PCB in order to access a pin underneath that’s used to put the chip into programming mode (afterwards you have to re-solder it back to the PCB). These instructions, and more, are also found within this topic.

The latest update 9.2.0 of Tasmota contains some fixes for TuyaMCU. Do we know if these fixes address the same as @TheEebb’s custom firmware?