The BirdNET-PI is a realtime acoustic bird classification system for the Raspberry Pi 5, 4B, 400, 3B+, and 0W2.
BirdNET-Pi is built on the BirdNET framework by @kahst using pre-built TensorFlow Lite binaries by @PINTO0309. It is able to recognize bird sounds from a USB microphone or sound card in near realtime and share its data with the rest of the world.
In 2024, @Nachtzuster forked and began building on @mcguirepr89's original implementation to further update and improve BirdNET-Pi.
To install BirdNET-Pi and start identifying birds and sharing the results with the world (i.e. Bird Weather), follow these slightly outdated installation instructions on the BirdNET-PI website.
Make sure to:
- flash your SD Card with the latest Raspberry Pi OS (Bookworm), and then
- install the software on your Raspberry Pi using the following command that uses the @Nachtzuster fork of BirdNET-Pi:
curl -s https://raw.githubusercontent.com/Nachtzuster/BirdNET-Pi/main/newinstaller.sh | bash
BirdWeather is a pioneering visualization platform that harnesses the BirdNET artificial neural network to monitor bird vocalizations globally through 2000 active audio stations (and growing).
The living library of bird vocalizations can be found on BirdWeather's Live Map.
After creating an account on BirdWeather you receive a BirdWeather ID. Once that’s done - you can create and manage your station.
To connect BirdNET-PI with BirdWeather, configure your BirdWeather ID under "Basic Settings" of your BirdNET-PI. Also make sure that the Latitude and Longitude match what is in your BirdNET-Pi configuration.
The BirdNET-PI uses Apprise to send notifications. You can send these notifications to multiple destinations, including Telegram. For more detailed instructions, see Apprise documentation for using Telegram.
Do you want to follow detections with multiple people? Our suggestion is to create a public Telegram Group to collect BirdNET-Pi notifications. To achieve this, add your Telegram Bot to this group and use the chatid of the group when configuring the Apprise notification via Telegram on your BirdNET-Pi.
Designed for environmental monitoring, Enviro+ for Raspberry Pi lets you measure air quality (pollutant gases and particulates), temperature, pressure, humidity, light, and noise level. When combined with a particulate matter sensor, it's great for monitoring air quality just outside your house (more information below), or without the particulate sensor you can use it to monitor indoor conditions.
Follow the installation instructions to allow Python scripts to read the sensor data from the Enviro+.
Make sure Python is installed on the Raspberry Pi including python3-numpy. The Enviro+ installer script might stall (i.e. require building numpy) when this package (wheel) is not installed.
Sensors:
- BME280 temperature/pressure/humidity sensor (NB: Temperature must be calibrated/corrected)
- PMS5003 particulate sensor
The folder /enviroplus/client contains a Python script and a unit configuration file to run this script as a Systemd service on the Raspberry Pi.
The folder /enviroplus/server contains a PHP script that is able to receive and return data from the Enviro+ export script. This PHP script uses a MySQL database to store the Enviro+ metrics.
First, copy or symlink the contents of /enviroplus/client to $HOME/enviroplus on the Raspberry Pi:
sudo ln -s enviroplus/client ~/enviroplus
Then, install as a Systemd service:
sudo cp enviroplus-export.service /etc/systemd/system
sudo chmod 644 /etc/systemd/system/enviroplus-export.service
sudo systemctl daemon-reload
Then, enable and start the enviroplus-export service:
sudo systemctl enable --now enviroplus-export
Check the status of the service:
sudo systemctl status enviroplus-export
If the service is running correctly, the output should resemble the following:
● enviroplus-export.service - Enviroplus Export
Loaded: loaded (/etc/systemd/system/enviroplus-export.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-12-05 15:46:38 CET; 4s ago
Main PID: 6785 (start.sh)
Tasks: 2 (limit: 1599)
CPU: 423ms
CGroup: /system.slice/enviroplus-export.service
├─6785 /bin/bash /home/ccu/enviroplus/start.sh
└─6786 python3 enviroplus-export.py
Dec 05 15:46:38 birdpi systemd[1]: Started Enviroplus Export.
The data can be visualized using this sketch.
The current version of the BirdNET-Pi at CCU is connected to the BirdWeather's Live Map. All data recorded in this service is available though the BirdWeather Data Explorer.
To access this data with software, we can use the public BirdWeather GraphQL API.
The current version of the CCU Enviro+ Export Service is a simple mechanism to collect Enviro+ metrics from the sensors connected to the Raspberry Pi. The data is uploaded to a service hosted on the internet. This data can then be visualised.
A versatile idea to collect the metrics from BirdNET-PI and Enviro+ would be pushing sensor metrics for analysis and visualization from Raspberry Pi to a Prometheus server allowing this data to be visualized with Grafana OSS. Prometheus an open-source systems monitoring and alerting toolkit originally built at SoundCloud.
Options for communication between the Raspberry Pi and the services with:
- Ethernet (LAN) connection access to internet
- WiFi connection with access to internet
- LoRaWAN connection with access to an internet gateway (e.g. ThingsNetwork)
- Prometheus (pulls data from data providers)
- Grafana OSS
- Prometheus Push Gateway on the internet (https://github.com/prometheus/pushgateway) - acts as a data provider for Prometheus. This service receives Enviro+ metrics from the Raspberry Pi over the internet (article).
- The Things Network - a global collaborative Internet of Things ecosystem that creates networks, devices and solutions using LoRaWAN (article).
- Custom data export script (Python)
- Uses Python Enviro+ library for reading sensors
- Send sensor metrics to intermediate service (e.g. Prometheus Push Gateway or The Things Network)
- Run the script as a service on the Raspberry Pi, similar to how this is solved in EnviroPlus exporter.