Monitoring beehives with lots of technologies.
Sensors => Node (Arduino) => Air => MQTT => Storage (InfluxDB, CouchDB) => Monitor
- Arduino node reads sensor data and writes to serial port
- Raspberry or $something_else publishes data to MQTT
- Retrieve data from MQTT and write to storage
- InfluxDB (for monitoring and real-time joy)
- CouchDB (for doing long term sciency things)
- Grafana shows dashboard with data from InfluxDB
The sensors are attached to the Arduino. A ino-script retrieves the data and sends them to the serial port.
Find *.ino files in ./arduino
- SainSmart Sensor Shield http://www.sainsmart.com/sainsmart-sensor-shield-v5-4-arduino-apc220-bluetooth-analog-module-servo-motor-1.html
- install arduino IDE
- download library (in IDE): Adafruit_Sensors
Humidity & Temperature
- Hardware: DHT22
- download library (in IDE): Adafruit_DHT
Serial to MQTT
The data from the sensors are written to the serial port, they noe need to be published to a message broker. MQTT is the best way to let interested parties know that something interesting has happened.
This part will be replaced by "WiFi Module - ESP8266" and the data can be send directly from the Sensor Node (Arduino) to the Message Broker (MQTT).
script/read_serial_write_mqtt.pyon Raspberry Pi and edit config values
- optional: install supervisor to always run the script with
apt-get install supervisor(http://supervisord.org/installing.html)
- add conf file to supervisord
> cat /etc/supervisor/conf.d/read_serial_write_mqtt.conf [program:read_serial_write_mqtt] command=/home/user/read_serial_write_mqtt.py autostart=true autorestart=true user=alarm directory=/home/user
Edit config values in script
serial_device="/dev/ttyUSB0" serial_baudrate=115200 mqtt_hostname="192.168.33.56" mqtt_port=1883
If option with supervisor
supervisorctl reread or
supervisorctl restart read_serial_write_mqtt
If not, just run the script by calling it
MQTT to InfluxDB
This script needs to run on a server which is always running and connected to the internet. Best is to let it be managed by supervisord.
apt-get install pip
pip install -r requirements.txt
mqtt_subscribe = "/#" mqtt_host = "192.168.33.56" mqtt_port=1883 influxdb_host="192.168.33.56" influxdb_port=8086 influxdb_user="root" influxdb_password="" influxdb_database="test" influxdb_ssl=True influxdb_verify_ssl=True