Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!
battybirdnet-pi is a realtime acoustic bat & bird classification system for the Raspberry Pi 4/5 built on BattyBirdNET-Analyzer.
Features of the addon :
- Robust base image provided by linuxserver
- Working docker system thanks to https://github.com/gdraheim/docker-systemctl-replacement
- Uses HA pulseaudio server
- Uses HA tmpfs to store temporary files in ram and avoid disk wear
- Exposes all config files to /config to allow remanence and easy access
- Allows to modify the location of the stored bird songs (preferably to an external hdd)
- Supports ingress, to allow secure remote access without exposing ports
Install, then start the addon a first time Webui can be found by two ways :
- Ingress from HA (no password but some functions don't work)
- Direct access with http://homeassistant:port, port being the one defined in the birdnet.conf. The username when asked for a password is
birdnet
, the password is the one that you can define in the birdnet.con (blank by default). This is different than the password from the addon options, which is the one that must be used to access the web terminal
Web terminal access : uesrname pi
, password : as defined in the addon options
You'll need a microphone : either use one connected to HA or the audio stream of a rstp camera.
Options can be configured through three ways :
- Addon options
BIRDSONGS_FOLDER: folder to store birdsongs file # It should be an ssd if you want to avoid clogging of analysis
MQTT_DISABLED : if true, disables automatic mqtt publishing. Only valid if there is a local broker already available
LIVESTREAM_BOOT_ENABLED: start livestream from boot, or from settings
PROCESSED_FOLDER_ENABLED : if enabled, you need to set in the birdnet.conf (or the setting of birdnet) the number of last wav files that will be saved in the temporary folder "/tmp/Processed" within the tmpfs (so no disk wear) in case you want to retrieve them. This amount can be adapted from the addon options
TZ: Etc/UTC specify a timezone to use, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
pi_password: set the user password to access the web terminal
localdisks: sda1 #put the hardware name of your drive to mount separated by commas, or its label. ex. sda1, sdb1, MYNAS...
networkdisks: "//SERVER/SHARE" # optional, list of smb servers to mount, separated by commas
cifsusername: "username" # optional, smb username, same for all smb shares
cifspassword: "password" # optional, smb password
cifsdomain: "domain" # optional, allow setting the domain for the smb share
-
Config.yaml Additional variables can be configured using the config.yaml file found in /config/db21ed7f_battybirdnet-pi/config.yaml using the Filebrowser addon
-
Config_env.yaml Additional environment variables can be configured there
The installation of this add-on is pretty straightforward and not different in comparison to installing any other add-on.
- Add my add-ons repository to your home assistant instance (in supervisor addons store at top right, or click button below if you have configured my HA)
- Install this add-on.
- Click the
Save
button to store your configuration. - Set the add-on options to your preferences
- Start the add-on.
- Check the logs of the add-on to see if everything went well.
- Open the webUI and adapt the software options
You can use apprise to send notifications with mqtt, then act on those using HomeAssistant Further informations : https://wander.ingstar.com/projects/birdnetpi.html
If mqtt is installed, the addon automatically updates the birdnet topic with each detected species
Option 1 : Install let's encrypt addon, generate certificates. They are by default certfile.pem and keyfile.pem stored in /ssl. Just enable ssl from the addon option and it will work.
Option 2 : enable port 80, define your battybirdnet-pi URL as https. Certificate will be automatically generated by caddy
Using alsamixer in the Terminal tab, make sure that the sound level is high enough but not too high (not in the red part) https://github.com/mcguirepr89/BirdNET-Pi/wiki/Adjusting-your-sound-card
Adding ferrite beads lead in my case to worst noise
Based on my test, only adapters using KT0210 (such as Ugreen's) work. I couldn't get adapters based on ALC to be detected.
Recommended microphones (full discussion here):
- Clippy EM272 (https://www.veldshop.nl/en/smart-clippy-em272z1-mono-omni-microphone.html) + ugreen aux to usb connector : best sensitivity with lavalier tech
- Boya By-LM40 : best quality/price
- Hyperx Quadcast : best sensitivity with cardioid tech
Conclusion, using mic from Dahua is good enough, EM272 is optimal, but Boya by-lm40 is a very good compromise as birndet model analysis the 0-15000Hz range
Denoise (Full discussion here)
Denoise is frowned upon by serious researchers. However it does seem to significantly increase quality of detection ! Here is how to do it in HA :
- Using Portainer addon, go in the hassio_audio container, and modify the file /etc/pulse/system.pa to add the line
load-module module-echo-cancel
- Go in the Terminal addon, and type
ha audio restart
- Select the echo cancelled device as input device in the addon options
Should be avoided as the model uses the whole 0-15khz range
Not yet available
Create an issue on github