Hivemonitor ESP32 Firmware

Firmware for running Hivemonitor on ESP32 microcontrollers.

Complemetary hivemonitor repositories:

Architecture

hivemonitor architecture drawing

Operating modes

Setup mode

Both types of devices acting as sending and gateway have a operating and setup mode. By using the on-board switch labeled "MODE" the esp32 will boot up in setup mode and be available as a WiFi hotspot named ESP-AP-*. View setup section below.

Sender device

Devices acting as sensor have weight, temperature and humidity sensors connected that will be read and broadcasted using ESP-NOW peer-to-peer protocol.

Gateway device

Device acting as receiver will be simultaneously be listening for messages broadcasted to it's MAC address using ESP-NOW & connected to WiFi to send MQTT messages to a broker.

Installation

Clone repository and navigate into folder:

git clone https://github.com/kevinmidboe/hivemonitor-esp32-firmware
cd hivemonitor-esp32-firmware

TL;DR

Flash microcontroller:

wget https://raw.githubusercontent.com/glenn20/micropython-espnow-images/main/20230427-v1.20.0-espnow-2-gcc4c716f6/firmware-esp32-GENERIC.bin > firmware-esp32-espnow.bin
make flash file=firmware-esp32-espnow.bin device=/dev/tty.usbserial-02899247

Upload source code:

make sender device=/dev/tty.usbserial-02899247
# or
make gateway device=/dev/tty.usbserial-02899247

Flashing firmware

The current supported flashing tool for micropython firmware is esptool.py. You can find this tool here: https://github.com/espressif/esptool/, or install it using pip:

pip install esptool

Download firmware from supported firmware linked below or compile required micropython with libraries listed below:

  • espnow
  • usocket
  • umqtt.simple

Plug esp32 into computers USB and find it's connected TTY port with:

ls -l /dev/tty.*

Erase the existing firmware and then deploy the new firmware using:

make flash device=/dev/tty.usbserial-02899247

Uploading application source files

For uploading source files we can use adafruit ampy CLI found at https://github.com/espressif/esptool, or installed with pip:

pip install adafruit-ampy

Upload all files for ESP32 that will be acting as a gateway by running:

make gateway

Upload all files for ESP32 that will be acting as a sensor reader & sender by running:

make sender

Setup

After uploading source files, use the on-board MODE switch to side marked "Setup" device to boot board into setup mode. Inputs will b based on if device is setup as sender or gateway.

After setting mode switch and resetting the controller will be discoverable as a WiFi access point serving a configuration page.

  1. Connect to WiFi network prefixed with ESP-AP-
  2. Open browser to http://192.168.0.4

Below shows screenshots of gateway device in setup mode:

Hive monitor setup site, 3 pages

🎉 Setup completed!
When both a sender and gateway is setup MQTT messages should start reaching broker.

ESP32

Deep sleep

asdf

Networking

There are two WiFi interfaces, STA mode is workstation mode (ESP32 is connected to the router)AP mode provides access services (other devices connected to ESP32).

The ESP32 does not have two antennas, but we can run two interfaces STA & AP. The drawback of this is that since we only have one antenna we need to make sure the sending and receiving devices are both broadcasting on same channel. In a sitation where your WiFi access point might be brodcasting on channel e.g. 6 the ESP32 connects over WiFi on this channel. The ESP32 sending sensor data therefor needs to be broadcasting data over ESP-NOW on same channel.

Firmware sources

mpy version espnow mqtt* socket source
v1.20 github.com/glenn20/micropython-espnow/20230427-v1.20.0-espnow/firmware.bin
v1.19 github.com/glenn20/micropython-espnow/20220709-v1.19.1-espnow/firmware.bin
Description
No description provided
Readme MIT 44 KiB
Languages
Python 60.5%
HTML 25.4%
Makefile 8.3%
CSS 5.8%