Tasmota runs on hundreds of different devices including switches, plugs, buttons, power strips, sensors, IR & RF gateways, etc. Tasmota homepage: https://tasmota.github.io/docs/. There are over 2800 devices listed in this user maintained repository: https://templates.blakadder.com/.
Three years ago when I was choosing devices I initially ordered a Kasa switch to try but after a little research quickly realized I didn't want any cloud-locked proprietary devices installed in my home's walls. So, I sent the Kasa switch back unopened and chose this dimmer switch on Amazon because it could be flashed with Tasmota firmware: https://www.amazon.com/TASMOTA-Martin-Jerry-ESP8266-Assistan... (now $20 each in a three pack). https://templates.blakadder.com/martin_jerry_MJ-SD01.html. Ultimately, almost all these devices are commodity components based on standard reference designs. Various off-shore manufacturers will put these in their own different plastic designs with slightly differing button, light and other features. Kasa just happens to only offer their flavor locked to their proprietary app, cloud and services. Even if they are benign today, that can always change without notice and they won't be in business forever.
As you'll see on the user repository, Tasmota supports all this different hardware by grouping them into type classifications and then within each type using a configuration string. The MJ-SD01 switches I bought are Type 73 which is a PWM Dimmer. The configuration string is listed on the page I linked and specifies which pins are used for input, output and what they're connected to (buttons, LEDs, dimmer, etc) because this is something various manufacturers often do differently. Everything needed to make generic Tasmota work on any device listed in the repository is in the config string on its repository page. Just copy and paste that string into the device's Tasmota Config web page and the buttons, lights and loads will be mapped to the correct pins.
These Martin Jerry switches now come with Tasmota firmware pre-installed but they did not three years ago, so we had to open them and temporarily solder three wires to the board to upload the firmware using a USB-Serial adapter. I used it as an opportunity to give my middle-schooler some practical soldering experience. This was a one-time requirement because once installed, Tasmota firmware then can update itself via wifi. Fortunately, lots of devices come with Tasmota pre-installed now. Here's a partial list: https://templates.blakadder.com/preflashed.html but you can just search Amazon, eBay and AliExpress for "Tasmota" to find others.
I chose this particular switch because it fit the modern style of the house we were building, has three primary buttons (plus a tiny reset button just under the rocker) and unobtrusive LED indicators. Today there are many other similar switches available with different looks and features and I might choose differently now. Under Tasmota the three buttons and LEDs have sensible defaults but can optionally be assigned to any functions you'd like on the device, on other devices or to anything else under Home Assistant control via press, long press and double press. One thing to keep in mind about these (and similar) switch devices is that the "front-end" of the button controls and LED display are entirely separate from the "back-end" of controlling the attached AC power load such as a light fixture. By default the buttons are mapped to control the device's own load just like a normal 'dumb' switch, but this can easily be customized. I have some switches whose front buttons control loads connected to other switches but not the load connected to that switch. And I have some switches that don't have any AC fixture connected to the output. I use those to do things like control low voltage landscape lights connected through a Tasmota wall power plug in a panel outside the house. I suggest keeping it simple when you start by sticking to the defaults, just be aware that you can later do all kinds of creative and unexpected things because Tasmota is so flexible.
Sir, take it from a random person on the internet, you're more than kind. Thank you so much for the details and bits of your own experience to make it relatable.
Even though I have many Kasa switches I do want the option 3 that was raised earlier. Again, many thanks.
If they're the older Kasa bulbs/switches (before they got all Matter), they have a dead simple local, MAC-addressed TCP packet protocol. I've implemented basic ON/OFF commands in ESPHome C++ code, but there's also a command line tool: https://github.com/python-kasa/python-kasa?tab=readme-ov-fil... There's a list at the bottom of supported devices.
Last used the command-line utility with a PowerShell script to make the lights in the playroom do a rainbow-random color dance party for the kiddos. Was nice to crank out a working automation in 2 minutes.
I have a bunch of Kasa devices. I got them before Tasmota was really on the scene, because they are configurable and controllable without Internet access. The protocol could be better, but it does work. I've heard that TP-Link may have changed the protocol since then (at least on some devices), so YMMV.
Three years ago when I was choosing devices I initially ordered a Kasa switch to try but after a little research quickly realized I didn't want any cloud-locked proprietary devices installed in my home's walls. So, I sent the Kasa switch back unopened and chose this dimmer switch on Amazon because it could be flashed with Tasmota firmware: https://www.amazon.com/TASMOTA-Martin-Jerry-ESP8266-Assistan... (now $20 each in a three pack). https://templates.blakadder.com/martin_jerry_MJ-SD01.html. Ultimately, almost all these devices are commodity components based on standard reference designs. Various off-shore manufacturers will put these in their own different plastic designs with slightly differing button, light and other features. Kasa just happens to only offer their flavor locked to their proprietary app, cloud and services. Even if they are benign today, that can always change without notice and they won't be in business forever.
As you'll see on the user repository, Tasmota supports all this different hardware by grouping them into type classifications and then within each type using a configuration string. The MJ-SD01 switches I bought are Type 73 which is a PWM Dimmer. The configuration string is listed on the page I linked and specifies which pins are used for input, output and what they're connected to (buttons, LEDs, dimmer, etc) because this is something various manufacturers often do differently. Everything needed to make generic Tasmota work on any device listed in the repository is in the config string on its repository page. Just copy and paste that string into the device's Tasmota Config web page and the buttons, lights and loads will be mapped to the correct pins.
These Martin Jerry switches now come with Tasmota firmware pre-installed but they did not three years ago, so we had to open them and temporarily solder three wires to the board to upload the firmware using a USB-Serial adapter. I used it as an opportunity to give my middle-schooler some practical soldering experience. This was a one-time requirement because once installed, Tasmota firmware then can update itself via wifi. Fortunately, lots of devices come with Tasmota pre-installed now. Here's a partial list: https://templates.blakadder.com/preflashed.html but you can just search Amazon, eBay and AliExpress for "Tasmota" to find others.
I chose this particular switch because it fit the modern style of the house we were building, has three primary buttons (plus a tiny reset button just under the rocker) and unobtrusive LED indicators. Today there are many other similar switches available with different looks and features and I might choose differently now. Under Tasmota the three buttons and LEDs have sensible defaults but can optionally be assigned to any functions you'd like on the device, on other devices or to anything else under Home Assistant control via press, long press and double press. One thing to keep in mind about these (and similar) switch devices is that the "front-end" of the button controls and LED display are entirely separate from the "back-end" of controlling the attached AC power load such as a light fixture. By default the buttons are mapped to control the device's own load just like a normal 'dumb' switch, but this can easily be customized. I have some switches whose front buttons control loads connected to other switches but not the load connected to that switch. And I have some switches that don't have any AC fixture connected to the output. I use those to do things like control low voltage landscape lights connected through a Tasmota wall power plug in a panel outside the house. I suggest keeping it simple when you start by sticking to the defaults, just be aware that you can later do all kinds of creative and unexpected things because Tasmota is so flexible.