Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Makefile Add firmware builder helper to Makefile for node-wifi-mqtt-homie Apr 16, 2017
README.rst Add temperature compensation feature (#11) Apr 5, 2017


ESP8266 beehive scale based on Homie


You might want to read this document on our documentation space, all inline links will be working there.


A beehive monitoring sensor node based on a ESP8266 module and a custom made PCB. Telemetry data is transmitted using WiFi/MQTT. The standard firmware is based on the `ESP8266 framework for Homie`_, its most recent version is available at `node-wifi-mqtt-homie.ino`_. However, the PCB (`ESP8266-BeeScale.fzz`_) can be used with any firmware.

Open Hive ESP8266 BeeScale

Platform and supported peripherals

  • AI-THINKER ESP8266-07 module with an ESP8266_ MCU
  • HX711_ ADC weigh scale breakout board
  • DS18B20_ digital thermometer
.. seealso::

    - `ESP8266 Stockwaage – erste Eindrücke`_
    - https://www.imker-nettetal.de/category/stockwaage/
    - Nodes with identical hardware: :ref:`node-wifi-http` and :ref:`node-wifi-mqtt`


There's also an alternative firmware :ref:`node-wifi-mqtt-homie-battery`.


The PCB can be downloaded in Fritzing format from `ESP8266-BeeScale.fzz`_.

ESP8266 BeeScale PCB - schematics - top view

PCB - Schematics Top view

ESP8266 BeeScale PCB - top view

PCB - Top view.

ESP8266 BeeScale PCB - bottom view

PCB - Bottom view.


Clone git repository

# Get hold of the source code repository including all dependencies
git clone --recursive https://github.com/hiveeyes/arduino

# Select this firmware
cd node-wifi-mqtt-homie


Have a look at the source code `node-wifi-mqtt-homie.ino`_ and adapt setting variables according to your environment.

Configure load cell calibration settings:

// Use sketch BeeScale-Calibration to get these values
const float offset = 85107.00;    // Offset load cell
const float cell_divider = 22.27; // Load cell divider


The build system is based on `makeESPArduino`_, a Makefile for ESP8286 Arduino projects.

Setup SDK:

mkdir ~/sdk; cd ~/sdk
git clone https://github.com/esp8266/Arduino esp8266-arduino

# Download appropriate Espressif SDK
cd esp8266-arduino/tools

Build firmware:

# Announce path to SDK
export ESP_ROOT=~/sdk/esp8266-arduino

# Run Makefile

Enable more verbose output:

export VERBOSE=true

Upload to MCU

make upload


The Homie firmware offers different ways of runtime configuration.


When starting the ESP8266 device with Homie firmware, it will come up in configuration mode and spawn a secure WiFi access point named Homie-xxxxxxxxxxxx, like Homie-c631f278df44. Connect to it.

Configure the device by uploading the JSON configuration file to the HTTP JSON API at

# 1. Clone real configuration from blueprint
cp example.config.json config.json

# 2. Edit configuration file
sublime config.json

# 3. Configure device
curl -X PUT --header "Content-Type: application/json" -d @config.json
.. seealso::

    `Connecting to the AP and configuring the device <https://homie-esp8266.readme.io/docs/getting-started#section-connecting-to-the-ap-and-configuring-the-device>`_


The configuration file config.json can also be uploaded to the device's SPIFFS filesystem as /homie/config.json.

`makeESPArduino`_ also has the upload_fs target, so:

# 1. Clone real configuration from blueprint
cp example.config.json data/homie/config.json

# 2. Edit configuration file
sublime data/homie/config.json

# 3. Configure device
make upload_fs
.. seealso::

    - `The data/homie folder`_
    - `How to upload files to the ESP8266 SPIFFS file system`_
    - `How to build a file system with makeEspArduino`_

User interface

When installing the UI bundle "ui_bundle.gz", the configuration UI will be served directly from the device:

# 1. Download ui_bundle.gz
wget --directory-prefix=data/homie http://setup.homie-esp8266.marvinroger.fr/ui_bundle.gz

# 2. Configure device
make upload_fs


  • Improve documentation at all
  • Document how to determine calibration values (i.e. "Use sketch BeeScale-Calibration to get these values"). Would it be possible to build it into the main firmware and run it conditionally somehow?
  • Document how to determine scale's temperature compensation values.