According to the S20 schematic, uart is routed to a header, so it should be easier to flash. 
The Sonoff S20 is the same price as the mentioned model, and is supported by espurna.  Espurna is great, it has MQTT, Domoticz, Home Assistant, an HTTP API, and Alexa integration. Espurna also supports sending data directly to InfluxDB which is very handy.
If you want to monitor power consumption as well, I can highly recommend the Sonoff POW.  Although to get a plug you will need to butcher an extension cable or power strip. If you only want to monitor power consumption and don't want to have the relay, it's quite easy to solder across the relay in the Sonoff POW and use it only as a power monitoring device.
Just a reminder to anyone working with these devices: never, ever connect UART while the device is plugged into AC!!
No UL certification could be an issue for US consumers though.
Not that I would recommend plugging any of them into the mains with the case removed, or while plugged into other wiring, to be sure!
Is that even allowed by the FCC?
Someone commented to tell me about the ResetPlug, which does just that. I'm now the very happy owner of one.
I don't mean that as a advert, but as an encouragement that when you comment useful links to products that already exist, it does make a difference, and I appreciate it. (not spam, but user recommendations).
The story is important and often overlooked in these moments. It's what justifies spending a hundred hours and $200 to achieve something you could probably just buy for $50.
The switches are especially handy because you can program them to do anything, not just switch lights on and off. For example, you can program your bedroom switch to turn off all lights with a long press. Theoretically, anyway, as I haven't yet gotten mine so I haven't tried it with that particular model in practice.
But essentially, he reprograms the smart plugs to respond to a simple HTTP GET request to turn the lights on, and then turn the lights off after 11 seconds, and the 11 second countdown can be reset by hitting that HTTP endpoint again.
He has a "sensor" board that has a light sensor, and when he turns his regular light switch on, that sensor board detects the light in the room, and hits all the smart plugs endpoints to turn them on. As long as that sensor board detects light, it will keep hitting the "lights on" endpoints of the smart plugs.
When he turns his regular light switch off, the sensor board stops hitting the "lights on" endpoints, and the lights automatically turn off after 11 seconds.
Question: once you turn the lights on, how would you turn them off given that there's still light in the room?
You can definitely achieve the same functionality cheaper with a ESP8266 breakout + shield, but this way you get a nice case that can just sit on a socket.
When faced with a similar problem (big room, wanted to control multiple lights without pulling wires), I used an Insteon battery operated remote switch:
And an inline switch module that went up in the ceiling light housing: https://www.smarthome.com/insteon-2443-222-micro-on-off-modu... ($49)
And a couple plug in lamp modules:
One advantage of the off the shelf products is that they are all UL approved for the use, so if it catches fire and burns my house down, I don't have to prove that it wasn't my fault.
What I'd like is for outlets to have wifi or bluetooth connectivity on them. I just tell the outlet to turn on via some app, and the app/outlet keep track of how long the outlet is on and charges me a flat rate per unit time. Simple. The smarts for this need only cost $13 above what a regular outlet costs, as this project shows.
This would be especially useful in apartments or parking garages. Provided you already have lights, it'd be cheap to run a 120V outlet to within reach of most (or at least a large number of) parking spots. $13 of electronics plus maybe $50 (i.e. a quad outlet of $200 split among 4) to install an outdoor outlet is all it'd cost to electrify a parking space. The owner of the parking lot could offer low cost electricity and, say, make a profit off the difference between residential and commercial/industrial electrical rates (might take a few months to pay for the outlet, but not more than a year for a well-used spot, then the owner makes an easy profit). Everyone wins, and urban EVs become practical for everyone (and a slow charge is fine. of course, you would still want fast chargers to top up if you were doing a lot of driving, but that can be done elsewhere). Also would be pretty cheap to install on all parking meters.
Just need someone to develop that app and an outdoor outlet with a $13 bluetooth relay that talks to the user's app (only the user's app would necessarily need internet connectivity). Someone do this and be a hero.
If the main panel is out of spare breaker slots (or doesn't have enough amperage left on the feeder), it's going to expensive to upgrade the panel.
Most of the cost ends up in labor, so if you're going to go to all of the expense to install a 4x20A quad outlet, you may as well install a 30A 240V level 2 charge station.
Most of that cost is labor -- I looked into installing a charge station in my condo apartment garage -- coring and installing a home run back to the main panel would have cost $3000 - $5000, and I would have had to pay for a power study for the HOA owned panel.
There wouldn't have been much difference in materials cost between installing a 120V 20A circuit for level 1 charging and a 30A 220VAC level2 charge station.
That is comimg. For sure.
Other than that, this is exactly what I've been looking for. I have an old wireless outlet (controlled by a RF remote) that I rigged up a Raspberry Pi Zero to, but that is a lot of effort compared to soldering some headers and flashing a new firmware.
Now all we need is some good software to securely integrate this with other IoT systems.