Provide ESP8266 based itead Sonoff with MQTT and OTA firmware - Now EOL
This software is End of Life. New features will be introduced in Sonoff-Tasmota available on https://github.com/arendst/Sonoff-Tasmota
Provide ESP8266 based itead Sonoff with MQTT and 'Over the Air' or OTA firmware.
Install the ESP8266 development environment from esp8266-dev.
Copy the sonoff code files as follows:
esp8266-dev/workand copy directory
sonoffand file
espupload.phpinto it
Makefile.commonin directory
esp8266-dev
Install php and a local web server (ie apache) for OTA and copy directory
apiin webroot.
Update
sonoff/user/user_config.hwith your specific Wifi and MQTT parameters.
Compile source with
makeand flash once to sonoff using cable connection as shown in Peter Scargill's blog with
make flash.
Do not connect AC power during the flash cable connection.
Compile and upload OTA images to your web server with
make clean; make IMAGE=1; make register; make clean; make IMAGE=2; make register.
Note: this software is not compatible with Pete's implementation.
The button on sonoff provides the following features:
stat/sonoff/POWER on
user_config.hfile
user_config.hand reboots sonoff
Sonoff responds to the following MQTT commands:
cmnd/sonoff/power on,
cmns/sonoff/power offor
cmnd/sonoff/power toggle. The LED will blink twice and sends a MQTT status message like
stat/sonoff/POWER on. The same function can be initiated with
cmnd/sonoff/light on
cmnd/sonoff/topic sonoff1which reboots sonoff and makes it available for MQTT commands like
cmnd/sonoff1/power on
cmnd/sonoff/otaurl http://sidnas2:80/api/sonoff/user1.binwhere sidnas2 is your webserver hosting the firmware. Reset to default with
cmnd/sonoff/otaurl 1
cmnd/sonoff/upgrade 1
cmnd/sonoff/status 1
Most MQTT commands will result in a status feedback like
stat/sonoff/POWER On.
The firmware supports both a serial and a MQTT Man Machine interface. The serial interface is set to 115200 bps. The MQTT commands are constructed as
cmnd/sonoff/.
The following commands are recognised by both topic and grouptopic:
Command |
Description |
---|---|
power | Show current power state as On or Off |
power on | Turn power On |
power off | Turn power Off |
power toggle | Toggle power |
power 1 | Turn power On |
power 0 | Turn power Off |
power 2 | Toggle power |
light | Show current power state as On or Off |
light on | Turn power On |
light off | Turn power Off |
light toggle | Toggle power |
light 1 | Turn power On |
light 0 | Turn power Off |
light 2 | Toggle power |
status | Show abbreviated status information |
status 1 | Show all status information |
status 2 | Show version information |
grouptopic | Show current MQTT group topic |
grouptopic 1 | Reset MQTT group topic to user_config.hvalue and restart |
grouptopic your-grouptopic | Set MQTT group topic and restart |
timezone | Show current timezone |
timezone -12 .. 12 | Set timezone |
The following commands are recognised by topic only:
Command |
Description |
---|---|
restart 1 | Restart sonoff |
reset 1 | Reset sonoff parameters to user_config.hvalues and restart |
ssid | Show current Wifi SSId |
ssid 1 | Reset Wifi SSId to user_config.hvalue and restart |
ssid your-ssid | Set Wifi SSId and restart |
password | Show current Wifi password |
password 1 | Reset Wifi password to user_config.hvalue and restart |
password your-password | Set Wifi password and restart |
host | Show current MQTT host |
host 1 | Reset MQTT host to user_config.hvalue and restart |
host your-host | Set MQTT host and restart |
topic | Show current MQTT topic |
topic 1 | Reset MQTT topic to user_config.hvalue and restart |
topic your-topic | Set MQTT topic and restart |
smartconfig 1 | Start smart config |
otaurl | Show current otaurl |
otaurl 1 | Reset otaurl to user_config.hvalue |
otaurl your-otaurl | Set otaurl |
upgrade 1 | Download ota firmware from your web server and restart |
If the same topic has been defined to more than one sonoff an individual sonoff can still be addressed by the fall back topic MQTTCLIENTID as defined in userconfig.h. The fall back topic will be ```DVES```.
ESP--. So the default name is
ESP-123456-sonoff
api/sonoff/user1.bincan be flashed using the SDK 1.4 provided bin files with the following esptool.py command line:
esptool.py --port /dev/ttyUSB0 write_flash -fs 8m 0x00000 boot_v1.4\(b1\).bin 0x01000 user1.bin 0xFC000 esp_init_data_default.bin 0xFE000 blank.bin