Minimally invasive beekeeping with a Raspberry Pi
Extend Your Feelers

© Lead Image © writerfantast, 123RF.com
Beekeepers can get to know their colonies better without continuously disturbing the industrious insects. Using a Raspberry Pi and various sensors, two hobby beekeepers monitor the temperature and humidity of their hives, with plans to monitor their weight.
The winters in Germany's Sauerland region are long, but above all, changeable. Sometimes it snows in October, and sometimes you experience a spring-like 15°C (59°F) over Christmas. The beekeepers in the area are prepared for this and prepare their bees for the winter in the early autumn after the last honey harvest by feeding several liters of sugar solution into the hives, depending on the size of the bee colony. When the outside temperatures drop, the response is prompt: Lock up, install mouse gratings in front of the entrance, and meet again in April.
Because beekeepers do not normally open the hives during the winter months, they cannot know if the population is thriving. Inspired by the Hiveeyes Project [1] and the Open Hive Monitoring System [2], we planned our own monitoring solution for our colonies. As hobby beekeepers, we first want to observe the temperature (see the "Test Setup" box) but, later, also connect our own hive scale.
Test Setup
A Raspberry Pi 2 Model B (RPi2B) with Raspbian Stretch (based on Debian 9) was used, to which we connected a temperature and humidity sensor (DHT11). We also experimented with a DS18B20 temperature sensor and an active speaker connected to the RPi2B via a 40-pin GPIO extension board and a breadboard.
Connecting the DHT11 Sensor
The DHT11 digital temperature and humidity sensor is available for a few dollars. It supplies the temperature in degrees Celsius and the relative humidity as a percentage. In the first trial, we connected the sensor directly to the RPi2B. The Python_DHT sensor library [3] helps with the readout. After installing the packages build-essential and python3-dev, we checked out the sensor library from the GitHub repository and installed it on the computer:
$ git clone https://github.com/jugend-programmiert/Python_DHT $ cd Python_DHT $ sudo python3 setup.py install
To use the library in your own Python scripts, you use import
. For example, Listing 1 reads sensor data and outputs it to the console. A test run on the console shows that the sensor and RPi2B are working together:
Listing 1
dht11_simple.py
01 import Python_DHT 02 03 sensor = Python_DHT.DHT11 04 pin = 4 05 humidity, temperature = Python_DHT.read_retry(sensor, pin) 06 print("dht temperature="+str(temperature)+",humidity="+str(humidity))
$ python3 dht11_simple.py dht temperature=17.0,humidity=49.0
After saving the script to /usr/local/bin
, the database and the collector were the next steps.
Setting Up the Database
The InfluxData package source [4] contributes both the InfluxDB database [5] and the Telegraf collector [6], which are added to /etc/apt/sources.list.d/influxdb.list
; then, we added the repository's GnuPG key:
$ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
After updating the package list (apt update
) and importing the influxdb and telegraf packages, we configured the database to start automatically at boot time, initialized the server, and started the command-line client:
$ sudo systemctl enable influxdb $ sudo systemctl start influxdb $ sudo influx Connected to http://localhost:8086 version 1.5.1 InfluxDB shell version: 1.5.1
When the client started, we created a new admin
account and a new database named telegraf
:
> CREATE USER admin WITH PASSWORD '****' WITH ALL PRIVILEGES > CREATE DATABASE telegraf > exit
In the InfluxDB configuration file /etc/influxdb/influxdb.conf
, you need to enable the web server under [http]
:
[http] enabled = true bind-address = ":8086"
After restarting the service by typing
systemctl restart influxdb
the Telegraf configuration continues.
Well Acquired
The telegraf
account must be a member of the gpio
group for the collector to read values from the GPIO pin:
usermod -a -G gpio telegraf
The /etc/telegraf/telegraf.conf
file contains the database information in the OUTPUT PLUGINS
section:
[[outputs.influxdb]] timeout = "5s" username = "admin" password = "****"
The INPUT PLUGINS
area also has a space for your Python script, which will run once a minute:
[[inputs.exec]] commands = ["python3 /usr/local/bin/dht11_simple.py"] interval ="60s" data_format = "influx"
If you want to check whether the communication between Telegraf and InfluxDB is working, you can launch the influx
client. Listing 2 shows how we query the telegraf
database on the test system.
Listing 2
Querying the Database
$ influx Connected to http://localhost:8086 version 1.5.1 InfluxDB shell version: 1.5.1 > show databases name: databases name ---- telegraf _internal > use telegraf Using database telegraf > show series key --- cpu,cpu=cpu-total,host=raspberrypi [...] dht,host=raspberrypi [...] system,host=raspberrypi > select * from dht; name: dht time host humidity temperature --------------------------- 1522242851000000000 raspberrypi 54 19 1522242911000000000 raspberrypi 54 19 1522242971000000000 raspberrypi 53 19 1522243031000000000 raspberrypi 53 19 [...]
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Direct Download
Read full article as PDF:
Price $2.95
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Find SysAdmin Jobs
News
-
LibreOffice 7.5 has Arrived and is Loaded with New Features and Improvements
The favorite office suite of the Linux community has a new release that includes some visual refreshing and new features across all modules.
-
The Next Major Release of Elementary OS Has Arrived
It's been over a year since the developers of elementary OS released version 6.1 (Jólnir) but they've finally made their latest release (Horus) available with a renewed focus on the user.
-
KDE Plasma 5.27 Beta Is Ready for Testing
The latest beta iteration of the KDE Plasma desktop is now available and includes some important additions and fixes.
-
Netrunner OS 23 Is Now Available
The latest version of this Linux distribution is now based on Debian Bullseye and is ready for installation and finally hits the KDE 5.20 branch of the desktop.
-
New Linux Distribution Built for Gamers
With a Gnome desktop that offers different layouts and a custom kernel, PikaOS is a great option for gamers of all types.
-
System76 Beefs Up Popular Pangolin Laptop
The darling of open-source-powered laptops and desktops will soon drop a new AMD Ryzen 7-powered version of their popular Pangolin laptop.
-
Nobara Project Is a Modified Version of Fedora with User-Friendly Fixes
If you're looking for a version of Fedora that includes third-party and proprietary packages, look no further than the Nobara Project.
-
Gnome 44 Now Has a Release Date
Gnome 44 will be officially released on March 22, 2023.
-
Nitrux 2.6 Available with Kernel 6.1 and a Major Change
The developers of Nitrux have officially released version 2.6 of their Linux distribution with plenty of new features to excite users.
-
Vanilla OS Initial Release Is Now Available
A stock GNOME experience with on-demand immutability finally sees its first production release.