Please, proceed carefully following the tips published in this blog, specially when Main Power is involved. I'm not responsible for any damages caused by what is written in this blog.
Thank you

Wednesday, 30 August 2017

Home Automation System - SONOFF Tasmota firmware upgrade using OTA

It's been a while since the first TASMOTA firmware upload and several updates have already come out.

Let's see the TASMOTA releases page


You can see that the latest version is 5.6.1 and I uploaded on my SONOFF 5.3.0 version, as you can see on the "information" page on the web console of the SONOFF

So, it's time to perform an upgrade.

Don't worry, I don't need to open,it, unplug from the main power, solder serial contacts and connect it to the PC...after the first installation of TASMOTA, I'm able to upgrade the firmware on the fly, using OTA (Over The Air)procedure; I have to tell it where it can download the new firmware and the game is over. Very comfortable functionality!!!

So, I followed the official wiki:


I chose the automatic download choice, so I have no need to download the new firmware and upload it to the device. I must only put the firmware url in a property of the SONOFF and start upgrade it. All these operations can be done directly from the console or through MQTT messages.

There is only one thing to check: the firmware size, because you can go out of memory if it's too big. There is a workaround for this: you can upload a minimal firmware and then the complete one.

Just a couple of notes:

- sometimes this procedure can go wrong...it seems that on some TASMOTA versions there is a bug with OTA (but I'm not sure about this). I tried 3 times to get it works.

- after upgrade SONOFF, it reboots with "access point" mode (I don't know if this is right or wrong...) and so I linked my PC to its wifi network, go into the web console (url and just reboot it again

A special note here: subscribing to the topic sonoff-version on a public MQTT broker sonoff.maddox.co.uk:1883 you can get a message with the TASMOTA latest version (thanks to  @smadds)

Here is it, using mqtt-spy

Here is a video about my upgrade procedure:

Monday, 28 August 2017

Home Automation System - MQTT and RF433 to monitor photovoltaic production

Now I will try to integrate my RF433 Wireless Receiver (built on Arduino with Ethernet Shield) with MQTT, just to acquire my photovoltaic production data in my future Home Automation System

I don't write nothing more about my acquisition system; this is my old post about that:


Now I would like to transmit data to my MQTT broker, for the future integration with OpenHAB

So, I have to edit the code of the Arduino sketch and let it to publish messages to the MQTT broker. In this time, the receiver publishes data to a HTTP REST Web Service

Well, using Arduino IDE (the same thing used for the SONOFF firmware upload), I open the sketch and edit the code.

I omit the technical details about the code because it's not the purpose of this post, but if you are interested in it, write me an email; I will be happy to share my code with you.

I chose the following MQTT topic:


I followed the same naming convention as the SONOFF :

[device]/[zone]/[type]/[data id]/state

The content of the message is simply the value of the production in Watt.

Here are the published messages, through mqtt-spy:

And here is the receiver:

Currently it's "mute", but the next step would be adding a led to monitor its status and eventually some environmental sensor...

Stay tuned...

Tuesday, 22 August 2017

Home Automation System - SONOFF and TASMOTA, small configuration error

Playing with MQTT and my SONOFF Basic, with TASMOTA firmware on board, I found a small mistake in the exchanged messages. In a few words, when I sent a MQTT message to power on or off the SONOFF (tasmota/garden/light/sonoffbasic01/cmnd/POWER ON), the device replied to me with the standard topic (stat/sonoffbasic01/RESULT) and not with the "fulltopic".

I immediately thought that the reason was a bug in the firmware and so I opened an "issue"on the GitHub page of TASMOTA.

In a few hours I found the solution, caused by a configuration error and not by a bug of the firmware.

In particular, I left the default value for "MqttClient" parameter, which assumed the same value as "Topic" parameter. For TASMOTA this is not OK. So I changed "MqttClient" parameter with a different value than "Topic" parameter and set mqtt-sonoffbasic01. Please, remember that this parameter must be unique in the entire system.

This is the link to the discussion:


I must admit that in a few hours I found the solution to my problem, thanks to the big support of developer.


Saturday, 19 August 2017

Home Automation System - SONOFF and MQTT together

I'm ready to test MQTT communication with my SONOFF Basic, also connected to a real button to light up my garden lamp.

I think it's important to be able to manage lights through standard buttons and switch, not only by Home Automation Software as openHAB and others, to avoid failures due to network problems.

So, I did another little hack to SONOFF: I soldered two little wire to its push button; these wires will be linked to a standard button on the wall.

Here are the wires connected to the button on the SONOFF

In this way, the standard button will activate the relays in the same way the button on the SONOFF or the APP will.

Last thing, to close the SONOFF with its case I have to make a little hole on the side to let the wires passing by:

Now, it's time to connect the SONOFF with the main power and link a standard button with the wires. In the INPUT pin I connected phase and neutral of the main power and in the OUTPUT pin I connected phase and neutral of the garden lamp.

Ok, after a little test all is working as expected. I pushed the button twice and lamp lighted up and down Thanks again to Piero who helped me to link the sonoff to the main power.

Now I can inspect the MQTT messages involved.

I use the web console, opening it through a internet browser, typing the ip address of the SONOFF in the address bar. Then, accessing the "Console" men├╣ I can take a look at the MQTT messages.

The first thing I noticed is the telemetry messages, sended by device about every 10 seconds (this timeout is managed by the TELEPERIOD parameter); the message content is a JSON string, which contains many informations (POWER, the state of the relay is the most interesting one for me in this moment); the MQTT topic is tasmota/garden/light/sonoffbasic01/tele/STATE, following what I wrote in a previous post (http://domoticsduino.blogspot.com/2017/08/home-automation-system-sonoff-and-mqtt.html).

In the following screenshot, the marked lines show the MQTT messages sequence:

After I pushed the button for the first time. the relay went on the ON state and the system sent a MQTT message with topic tasmota/garden/light/sonoffbasic01/stat/RESULT, with content POWER: ON. This is the confirmation sent by the device; the command has been well understood. When the relay changed its state to ON, the device sent another MQTT message with topic tasmota/garden/light/sonoffbasic01/stat/POWER and value ON. Now the relay is active and the lamp is ON.

The next telemetry messages confirmed this too. The POWER variable now has the value ON.

Then I pressed the button for the second time: the relay changes its state to OFF and the system sent the following MQTT messages:
tasmota/garden/light/sonoffbasic01/stat/RESULT {POWER: OFF} and tasmota/garden/light/sonoffbasic01/stat/POWER OFF. Now the lamp is OFF.

We get the same behaviour using the TOGGLE button on the web interface.

or sending POWER ON and POWER OFF commands directly from the web console.

As last step, I powered on the lamp using the MQTT POWER ON message, using a standard MQTT client, connected to our broker.

Normally I use MQTT-SPY, a very useful java software which permits to send and receive MQTT messages.

My message must belong to the topic tasmota/garden/light/sonoffbasic01/cmnd/POWER and must have the ON value. The lamp will turn ON.

Thursday, 10 August 2017

Home Automation System - SONOFF and MQTT

Ok, it's time to get all the power of SONOFF.

Just to summarize, I've got a SONOFF Pow and a SONOFF Basic, both of them with TASMOTA firmware on board.

Using this fantastic firmware, I could control the device through serial comms, web api (http) and MQTT, a very good protocol for IoT purpose, thanks to its lightweight footprint. I spoke about MQTT in a previous post (see http://domoticsduino.blogspot.com/2017/07/home-automation-system-discovering.html)

I will use mostly the MQTT protocol; so, I have to setup SONOFFs to use it, entering the MQTT broker informations and the topics. As usual, the official Wiki pages help us (see https://github.com/arendst/Sonoff-Tasmota/wiki/MQTT-Features)

For those not able to run a local MQTT broker (Mosquitto is a good free broker), it is possible to use, only for testing purpose, some free public MQTT broker (example: Mosquitto Test Server, Hive MQ and Eclipse)

Browsing the configuration pages on the SONOFF web console, you could enter all the MQTT informations. You can open the SONOFF web console using your browser and typing the ip address in the address bar. A web page similar to the following one will be shown:

Clicking on "Configuration" ==>

We will use mainly the "Configure MQTT" option: the others are self-explained.

Here, I entered the Host (ip address or host name) and the Port (1883 is the MQTT default one) for the MQTT broker.

The Client ID field is a simple string which identifies the device on the MQTT broker. It will be better to be univocal among all the devices.

User and Password fields are used for broker authentication (highly recommended!!!)

Topic and Full Topic fields are the most important one for the MQTT protocol. Here you can find some information about them: https://github.com/arendst/Sonoff-Tasmota/wiki/MQTT-Features#mqtt-topic-definition

- Topic: normally used to identify the device; it will be part of the MQTT Full Topic. It will be better to be univocal among all the devices.

- Full Topic: is the complete topic used for MQTT messages.

Inside Full Topic, we could use two variables called %topic% and %prefix%.

%topic% will be replaced by one of the following system variables, according to the real situation: Topic, GroupTopic, ButtonTopic, SwitchTopic e MqttClient.

%prefix% identifies the type of message and could take three distinct values, corresponding to the folloing system variables: Prefix1, Prefix2 and Prefix3

- Prefix1 = cmnd, used for command messages
- Prefix2 = stat, used for status messages
- Prefix3 = tele, used for telemetry messages

When I speak about system variables, I mean a list of configurable TASMOTA properties for every device. There are so many...Here you can find the complete list: https://github.com/arendst/Sonoff-Tasmota/wiki/Commands#command-overview

Here is my SONOFF Basic configuration:

Topic = sonoffbasic01

Full Topic = tasmota/garden/light/%topic%/%prefix%/

For Topic and Full Topic I followed a naming convention, in order to understand the mean of a message, just reading its topic.

The Topic, as said before, identifies the single device; so I used the type of device followed by a progressive number. For example, the topic of the SONOFF Pow will be sonoffpow02. The same topic string will be used also as network name and mqtt client id for the device.

The naming convention for the Full Topic is: firmware/zone/type/%topic%/%prefix%/

I would like to clarify that these are not rules but only suggestions. I chose this naming convention, you could use another one. It's up to you...

The final step is to enable MQTT protocol on the device, looking for the MQTT enable flag in the Configure Other page.

Well, finally now I'm ready to test my SONOFF with MQTT.


A small update about a configuration error I found later


Saturday, 5 August 2017

Home Automation System - OpenHAB 2 on Raspberry PI 3

It's time to setup my Home Automation System. I chose OpenHAB v.2, see my previous post http://domoticsduino.blogspot.com/2017/07/home-automation-system-discovering.html)

My target is to install OpenHAB v.2 and all related services on my brand new Raspberry PI 3; reading the official documentation (http://docs.openhab.org/installation/openhabian.html), I discovered OpenHABianPI, a custom operating system based on Raspian Lite, but optimized for OpenHAB. So I flashed on SD-CARD, with Etcher, a complete pre-configured image, downloaded from https://github.com/openhab/openhabian/releases. Then I plugged the SD-Card in the Raspberry slot and power it up, after connected a LAN cable (there is also a procedure to connect the raspberry direct to WiFi...http://docs.openhab.org/installation/openhabian.html#wifi-setup). The setup of OpenHABianPI automatically starts during boot and you can follow it through SSH. In about ten minutes the system will be ready.

The first thing to do is run the openhabian-config tool, which will let us to setup the complete system.

sudo openhabian-config

01 - Update and 02 - Upgrade System will keep the system updated and you will run them frequently.


- 10 - Apply Improvements ==> run all the submen├╣

- 20 - Optional Components ==> 21 - Log Viewer, 22 - Mosquitto (the MQTT broker) and 23 - Grafana (not mandatory but it's a very nice dashboard tool)

- 30 - System config ==> all optional except 34 - Change Passwords which will secure your system; 37 - Move root to USB;  is a very useful choice...it lets you to use an external USB Hard disk, instead of SD Card. I configured both my raspberries in this way, but I followed a manual procedure (see https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=44177&hilit=usb+stick+operating+system)

- 40 - openHAB related ==> 43 - Reverse Proxy very useful option to expose OpenHAB system on the internet and access it from everywhere; it will configure NGINX as SSL reverse proxy - pay attention that with this option your system will be exposed to internet and so if not well secured could permit to everyone to take control of your home devices.

Ok, OpenHAB is ready to use. I suggest you to take a look at the official documentation, tutorials and forum on the OpenHAB website http://docs.openhab.org/ https://community.openhab.org

The official youtube channel is https://www.youtube.com/channel/UC7OK88DW0La_BJlcXZg8ydQ/feed

Just another useful info: OpenHAB could use a lot of services to persist data; one of these services uses InfluxDB, a NOSQL database. It lets OpenHAB to store historical data series which could be displayed as charts or tables. Grafana, the open source dashboard tool, is perfectly integrated with InfluxDB. You could also use the standard MYSQL RDBMS as a persistence service. I will use InfluxDB, and so I will install it on the same raspberry as openHAB (see https://docs.influxdata.com/influxdb/v1.3/introduction/installation/)

Let's summarize my system:

- OpenHAB v 2.1
- Mosquitto MQTT Broker, with authentication
- Grafana
- InfluxDB, as OpenHAB persistence service
- Reverse proxy SSL with authentication, through NGINX , to expose OpenHAB and Grafana on the internet, in a secure way

If you are not able to setup and mantain reverse proxy, NAT and port forwarding, you could use My OpenHAB service, which lets you to exposed on the internet a local OpenHAB installation; registration is required.

Ok, we are ready to use our Home Automation System

Thursday, 3 August 2017

Home Automation System - Configuring SONOFF Basic

Priority to the youngest...the just arrived SONOFF Basic

The first thing to do is testing it with no modification...in this way, if the device is bad, we could return it. The procedure is the standard one, explained here.

First, plug the device to the main power; the SONOFF Basic, differently from the SONOFF Pow, has INPUT and OUTPUT terminals splitted, one on each side and has no earth connection.

I connected the INPUT side to a standard plug and the OUTPUT side to a lampholder...

I connected the plug to a wall outlet and the SONOFF turned on. Now I have to download the EWeLink App on my android tablet. During the first setup, I created a new EWeLink account. Then I followed the pairing procedure (see https://www.itead.cc/wiki/EWeLink_Introduction). The app suggested me what to do in order to add the device; the following step was to store the wifi SSID and password to join my home network; the last step was to give a name to the device. Ok, now I can take control of the device through EWeLink app.

Ok, the device is working as expected with the default firmware. Now I may update it with the TASMOTA firmware, using the same procedure as the SONOFF Pow, described in and old post (http://domoticsduino.blogspot.com/2017/07/home-automation-system-first-sonoff.html); it's important to unplug the device from the main power when connected to serial interface.

The main difference is that the serial interface is located in the middle of the device, near the button, and it has 5 PIN (not 4 as the SONOFF Pow). The PIN located far from the button is GPIO0 and it is not part of the serial interface.

Here is the USB-Serial converter, connected to the SONOFF

And here is the WiFi configuration panel, as the result of the procedure already followed for the SONOFF Pow (https://github.com/arendst/Sonoff-Tasmota/wiki/Button-Usage).

As you can see, the TASMOTA firmware let us to manage two WiFi connections; so, if the first one is not reachable or its signal is very low, the device switches to the second one, and vice versa. Very good feature...

Now, finally I will try the MQTT protocol...

Tuesday, 1 August 2017

Home Automation System - New mailbag...

In the meantime, time passes by and a new mailbag is arrived; it contains new toys for my Home Automation System: a Basic SONOFF and a Raspberry PI 3.

The Basic SONOFF is a simple WiFi switch, as the SONOFF Pow, which we already know, but without the power measurement chip. In simple words, it's a WiFi controlled relay.

The Raspberry PI 3 is the world famous mini PC (see https://www.raspberrypi.org/products/raspberry-pi-3-model-b):

- Quad Core 1.2GHz Broadcom BCM2837 64bit CPU
- BCM43438 wireless LAN and Bluetooth Low Energy (BLE) on board
- 40-pin extended GPIO
- 4 USB 2 ports
- 4 Pole stereo output and composite video port
- Full size HDMI

I will use it as an OpenHab v.2 server, with some addons as the MQTT broker...

I already own a Raspberry PI 2, but it's already running OSMC, a very nice Operating System which transforms PC in Media Center.

With the Raspberry PI 3 I received also a good "starter-kit": a 3A power supply , a transparent case and some heatsinks (see https://www.amazon.it/dp/B01DDFFOYK/ref=cm_sw_r_cp_dp_T2_UUqGzb73MSE2T)

In the next posts, I will write some words about the Raspberry PI 3 and OpenHab v.2 setup