Skip to main content


Xiaomi Mi Flora Chinese and International version comparison

Xiaomi Miflora sensor allows monitoring of the surrounding environment of the plant. It can monitor temperature, soil moisture, conductivity (acidity of the soil), ambience light. There are 2 versions of the sensor, international and Chinese version. Realistically, I cannot see the difference between the 2 versions.

The left-hand side is the Chinese version and the right is the international version. Other than the packaging, the main difference is the price of the sensor. The International version cost 2x more.

In other forums, there are discussions that the Chinese version cannot connect to the MiHome App. I have set my MiHome app to connect to China server and it is able to register the sensor correctly.

For my usage, I will be connecting to Openhab to monitor the plants andusing Thomas Dietrich MiFlora mqtt daemon as the bridge between Openhab and the sensor.

The International version is detected as Flower care and the firmware version is 3.1.9 while the Chinese version is detecte…
Recent posts

Smart Home Project (Updates)

The project has reached an operational stage with the following milestones.

The original posts can be found at
Starting a smart home project
Smart Home Design V1

The Smart Home is controlled by Openhab2 using a Raspberry PI. After some initial instability, the system finally is able to be functioned smoothly. The main control panel is Habpanel and a sample of the main dashboard is as shown.

Habpanel is one of the official UI supported by Openhab. It comes with some pre-defined widgets such as buttons, frames etc. For the pictures above, some of the widgets are custom widgets created by third parties such as the column of sliding switches, presence detection panel and the fan control panel. User can easily extend habpanel widgets because the widgets are written in AngularJS.

There are 5 main types of communications protocols:

This is the main backbone used by all the devices.
2. Zigbee
This is mainly used by Xiaomi sensors.
3. RF 433 MHz
This is used by the ceiling fans, doorbell…

Google Cloud IotCore with Raspberry PI

In my previous blog post, I have written about the integration of Google Cloud IoTCore using UDOO and how the temperature information is sent up to Pub/Sub. In the post, I will describe the integration of Raspberry PI to Google Cloud IoTCore. The primary communication protocol between the sensors and the IoTHub is mosquitto MQTT.

For this setup, I have a temperature sensor using ESP8266 flashed with ESP Easy firmware. The ESP and sensor are battery power which set to wake up every 60 minutes to take the measurement and transfer this to Raspberry Pi. The IOT bridge is written in Python which bridges the internal MQTT messages and Google Cloud IoTCore.

The sensor is battery power using a 3rd party Nokia BL-5C (1020 mah) rechargeable battery. This can be cheaply purchased from many battery shops or online. I have used 2 versions of the Wemos Mini charging shield version (1.1and 1.2). The details on how to modify the version 1.1 to be able to read the voltage level of the battery can be f…

Smart Home Control Panel using ESP-Link

This post describes the control panel developed with a few open source software and libraries. The main purpose is to have a proof of concept that the various components can be put together to become a useful product.

I have built a smart home system controlled using Openhab and the hardware switches are primarily using Sonoff switches with Tasmota firmware. The switches are controlled using Openhab Habpanel using an Android Tablet. Generally, this is my preferred way of using the Android Tablet but the Arduino control panel is developed so that it can interface to external hardware at low cost.

The control panel is developed using ESP-Link firmware with the El-client APIs and the hardware is an ESP8266 and Mega2560 combi board.  Besides acting as a touchscreen based on/off switch, it is also an internet clock (ntp) and a doorbell buzzer.

The software/firmware/libraries are
ESP-Linkel-client APIs (interface to ESP-Link firmwareMCUFriends Arduino library to control the TFT screen.JOS me…

Two routers configuration for Smart Home

When setting up the smart home system using WIFI as the core network infrastructure, it is important to split the surfing traffic and smart home traffic. This will ensure that the smart switches respond timely. 

For my smart home setup, I have used 2  Asus routers (RT-AC1200G+ & RT- AC68U), one is configured as the main the other configured as the slave. There is no reason why a particular model is chosen as it is based on what I have on-hand but it is better to have dual-band routers because I will have 4 separate bands (Two 5Ghz and two 2.4 GHz) of network bandwidth.

The router is configured as a Master-slave mode with different subnets and network route is added to make sure that the traffic can flow both ways. The smart switches are all connected to a dedicated 2.4 GHz bandwidth and the remaining 3 bands are for normal surfing.

For normal surfing, in order to the client devices to automatic connect to the strongest signal frequency, all the SSIDs have to be the same.  So the clie…

A simple ESP-01 USB adapter with toggle switch for reprogramming

ESP-01 is a simple ESP8266 module which can be purchased cheaply from Aliexpress. At one of promotion, I purchased an ESP-01 for just S$1.97. That's very cheap for a wifi enabled microcontroller. An ESP-01 can be a WIFI bridge for non-connected microcontroller such as Arduino UNO, Mega, Nano etc. Communication between the microcontroller can be done using the serial link between them.

I have written a post on this using ESP-Link to connect to an Arduino Pro Mini. Together with the client library provided, the Pro Mini can easily transfer sensor data via MQTT.

For the most part, once the firmware is in place, normally I will use OTA to update. Sometimes, I wanted to reuse the same controller for another firmware and I have rewired up the controller for reflashing. This makes it very inconvenient to use.

Recently, I bought a USB ESP-01 adapter thinking that my problem is solved. When I received it and realised…

Google Cloud IoTCore with UDOO Quad

UDOO Quad is a maker SBC board from UDOO. It has a built-in Arduino microcontroller and can run Linux on the SBC. On the web, most of the Google IoT Core samples have been focused using Mongoose OS and I have written a post on "Journey into Google Cloud IoT Core with ESP8266 and Mongoose OS". Recently, Google releases code samples which make the initial handshaking with Cloud IoTCore simpler.  For UDOO, the tedious part is to get all supporting tools to work with a particular version of Linux Distribution.

UDOO supports a few Linux distributions (Ubuntu, Debian and others). I have installed Ubuntu and the current version supported by UDOO is 14.04 LTS. For this demo, I wanted to work on Python 3.5 and I have compiled the Python from source. This is step may not be necessary if you use the version that is installed (Python 3.4).

The idea for this project is to read the temperature and humidity reading from UDOO Arduino side, transfer the data to Linux side and forward the dat…