Sensor Node STM8, Server C++ Raspberry pi, Webclient with d3js and websockets
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
web_react @ 8a88c0d added react submodule Dec 12, 2017
.gitmodules minor change save before update Jun 2, 2018

Gallery and Dashboard on website


Wireless Sensor Tag

  • HW: STM8 IoT Boards
  • Firmware: IoT STM8
  • 8 bit Ultra low power & ultralow cost STM8L
  • BME280 (Pressure, Temperature, Humidity), MAX44009 (Ambient Light) and Magnetic switches
  • Custom RF protocol for efficiency and simplicity of the sensors usecase

STM32 IoT Dongle

  • based on the STM32 bluepill
  • HW: Breadboard for easier RF and sensors modules integration STM32 IoT Boards
  • Firmware: stm32_rf_dongle subdirectory
  • RF Mesh repeater: (decrement time to live, recalculate new CRC)
  • Light intensity, color sensor, proximity and gesture (APDS9960)
  • RGB status (WS2812B)

Software running on the Raspberry pi

C++ RF Gateway

submodule rf_gateway

  • Serial port line buffer
  • Line parsing and sensor data extraction
  • Adjustment of BME280 measures with provided calibration
  • Publishing to the MQTT broquer

Python Database proxies

scripts in the submodule py_db_proxy

  • influx client
  • mongo client
  • json config and loggging

React D3js webapp

submodule web_react current status :

  • automatic nodes config retriaval
  • automatic dashboard construction (but still in text mode)
  • d3js still in a separate project, options beeing evaluated (nvd3 and vegas)


Configuration for the following software is available in the config subdirectory

  • Mosquitto : MQTT Broquer
  • OpenHAB2 : used only for Wemo switch and other connected devices
  • Node-red : High level sensor to action configuration
  • Influxdb : time series database
  • Mongodb : complex documents database
  • Grafana : dashboard for measurements exploration
  • React+d3js : customised webapp

Startup Launch on the Raspberry pi

to enable once

sudo systemctl enable openhab2
sudo systemctl enable influxdb

Others require manual startup added in

sudo nano /etc/rc.local

Debugging the rc.local log with adding the following lines

exec 2> /home/pi/share/rc.local.log   # send stderr from rc.local to a log file
exec 1>&2                             # send stdout to the same log file
set -x                                # tell sh to display commands before execution
sudo systemctl start grafana-server.service
/home/pi/IoT_Frameworks/raspi_mesh_server/iot_db/iot_db &
sleep 2 && /home/pi/IoT_Frameworks/raspi_mesh_server/rf_gateway/gateway &
#mongodb : for some reason, mongodb service do not attempt reconnection on startup, but works when started a bit later
sleep 15 && sudo systemctl start mongodb.service
sleep 5 && python /home/pi/IoT_Frameworks/raspi_mesh_server/py_db_proxy/ &
sleep 1 && python /home/pi/IoT_Frameworks/raspi_mesh_server/py_net_gateway/ &
sleep 5 && python /home/pi/IoT_Frameworks/raspi_mesh_server/py_net_gateway/ &

Another example

/home/pi/IoT_Frameworks/raspi_mesh_server/rf_gateway/gateway &

python /home/pi/IoT_Frameworks/raspi_mesh_server/py_net_gateway/ &

python /home/pi/IoT_Frameworks/raspi_mesh_server/py_net_gateway/ &

python /home/pi/IoT_Frameworks/raspi_mesh_server/ruler/ &

python /home/pi/IoT_Frameworks/raspi_mesh_server/py_net_gateway/ &

sleep 15 && python /home/pi/IoT_Frameworks/raspi_mesh_server/py_db_proxy/ &

Protocol helper

0x05 : Alive 0x07 : light 0x0A : bme280

0x06 : 6 - Living room 0x0F : 15- Workplace 0x1A : 26- Sleeping room 0x1D : 29 0x26 : 38- Rep test