Tasmota
=======
* `tasmota `_
* `tuya-convert `_
* `HomeAssistant `_
.. contents::
Setup
-----
One-time steps.
On the laptop you'll be using to flash and configure the devices:
* Git clone tuya-convert
* cd to that directory
* run ./install_prereq.sh
.. note:: It's not obvious, but the ``tasmota.bin`` file included with tuya-convert is a stripped-down version. Don't try to install the full version of Tasmota with tuya-convert. Install the provided version, then upgrade to the full version.
MQTT broker
-----------
An MQTT broker needs to be running somewhere. If you have Ubuntu or Debian,
then wherever you want to run the MQTT broker:
* apt-get install mosquitto
Then in HomeAssistant, set up
`MQTT discovery `_:
* Go to Configuration/Integrations.
* "Search Integrations" for MQTT.
* Add MQTT and configure with the MQTT broker's IP address. Set the topic to something like "homeassistant".
Each device
-----------
This was for EFUN plugs, model SH331W. Tasmota info here:
``_
.. note:: To be safe, do not use the 'official' mobile app with the plugs, *ever*. There's always a chance it'll upgrade them to a new firmware that prevents flashing Tasmota.
Start by running `tuya-convert `_
to flash Tasmota to the device.
* Plug in the device. After a short period, the blue light should flash quickly.
* Go to the tuya-convert directory
* Run './start_flash.sh' and follow the directions
* When asked, install "tasmota-lite.bin".
Configure the device WIFI
-------------------------
**WARNING: TRIPLE_CHECK the WIFI config. If you enter it wrong, you might never be able to access the device again!!!**
* Connect laptop to the new 'tasmota-NNNN' WIFI access point (the device)
* Go to `http://192.168.4.1 `_ and you should see the Tasmota interface
* Click "Configure WIFI" and fill in the information for your 2.4GHz WIFI network. Also set a hostname.
I generally use a short punctuationless string like "readinglight". Submit and it'll restart.
* Connect laptop back to your normal WIFI network.
* Try connecting to `http://hostname `_, where ``hostname`` is the hostname
you set. If that doesn't work, use your access point or something to find the device on the network, and browse to it.
Upgrade firmware
----------------
1. If you tuya-converted using the tasmota.bin that came with tuya-convert,
you should upgrade to the full tasmota.bin at this point, as follows.
2. Once you've got the full tasmota.bin flashed, there's no need to upgrade
again unless you need a new feature or a bug fix. Really!
* Go to the download site `http://ota.tasmota.com/tasmota/ `_.
* Find the latest ``tasmota.bin.gz`` and *copy the link* (do *NOT* download).
At the moment that link is ``http://ota.tasmota.com/tasmota/tasmota.bin.gz``
* Go to the web page for your Tasmota device.
* Click "Firmware Upgrade".
* Find "Update by web server" and paste the link into the "OTA URL" field.
* Check the box.
* Start the upgrade.
* It might take several minutes until it's done and you can connect to the device again.
Configure the Tasmota template
------------------------------
* Find the template for the device at e.g.
`https://templates.blakadder.com/efun_SH331W.html `_.
* Copy the JSON string.
Example for my EFUN plugs, it's ``{"NAME":"Efun-Plug","GPIO":[56,0,158,0,0,134,0,0,131,17,132,21,0],"FLAG":0,"BASE":18}``.
* In the device Tasmota UI, go to *Configure Other* (*not* Configure Template,
that's for editing the details of the template), paste the template, and select the checkbox.
* Also set Friendly Name 1. I use the hostname I set earlier here too.
* Save. It'll reboot.
Configure MQTT and enable discovery for Home Assistant
------------------------------------------------------
* In the device confiGo to Configure MQTT. Fill in the MQTT broker's IP address, and set the Topic to the same string as the Friendly Name 1.
* Submit. It'll reboot.
* Go to Console. In the command line, enter "SetOption19 1" and hit Enter.
Time zone.
----------
If you're going to use the built-in Tasmota timer function, the device's time zone
will need to be set. Daylight Saving Time makes this... fun.
I'm in US Eastern. The offsets from UTC are EST -5, EDT -4, or in minutes::
EST: -5 * 60 minutes = -300 TimeSTD
EDT: -4 * 60 minutes = -240 TimeDST
Let's work this out. Go to https://tasmota.github.io/docs/Commands/ and search for TimeSTD,
and we find::
Set policies for the beginning of daylight saving time (DST) and return back to standard time (STD)
0 = reset parameters to firmware defaults
H,W,M,D,h,T
H = hemisphere (0 = northern hemisphere / 1 = southern hemisphere)
W = week (0 = last week of month, 1..4 = first .. fourth)
M = month (1..12)
D = day of week (1..7 1 = sunday 7 = saturday)
h = hour (0..23)
T = timezone (-780..780) (offset from UTC in MINUTES - 780min / 60min=13hrs)
Example: TIMEDST 1,1,10,1,2,660
_If timezone is NOT 99, DST is not used (even if displayed) see
USA rules are at
https://www.nist.gov/pml/time-and-frequency-division/popular-links/daylight-saving-time-dst
and say that daylight saving time in the United States:
* begins at 2:00 a.m. on the second Sunday of March (at 2 a.m. the local time time skips ahead to 3 a.m. so there is one less hour in the day).
* ends at 2:00 a.m. on the first Sunday of November (at 2 a.m. the local time becomes 1 a.m. and that hour is repeated, so there is an extra hour in the day).
So the commands for US Eastern will be::
TimeSTD 0,1,11,1,2,-300
TimeDST 0,2,3,1,2,-240
TimeZone 99
All-in-one
----------
You can speed up some of this if you're doing it over and over using the Backlog command, which lets you
string multiple commands together in the Console. E.g.::
Backlog FriendlyName efun-f;DeviceName efun-f;Hostname efun-f; Topic efun-f; MqttHost 192.168.1.2; SetOption19 1;TimeDST 0,2,3,1,2,-240;TimeSTD 0,1,11,1,2,-300;TimeZone 99;Latitude 35.913200; Longitude -79.055847
The available commands are documented at `https://tasmota.github.io/docs/Commands/ `_.
`Backlog command `_.