Sommaire
Introduction
Un rougequeue, un merle, une mésange, un pinson… Combien d'espèces chantent réellement autour de votre maison ? La plupart d'entre nous seraient bien incapables de le dire.
BirdNET répond à cette question. Développé par l'université Cornell et l'institut Chemnitz, cet algorithme d'identification analyse en continu les sons captés par un micro et reconnaît les espèces à leur chant. Associé à Home Assistant, il transforme votre domotique en une mine d'or naturaliste : la dernière espèce détectée, sa photo, l'heure, l'indice de confiance, et le journal des espèces entendues depuis minuit.
Cet article décrit le montage complet : un Raspberry Pi équipé d'un micro posé au jardin, qui publie ses détections en MQTT, et une intégration dédiée installée via HACS côté Home Assistant.
Prérequis :
- Un Raspberry Pi 4 (ou 5) avec une carte SD et une alimentation
- Un micro USB, idéalement déporté par une rallonge
- Un broker MQTT fonctionnel dans Home Assistant (add-on Mosquitto)
- HACS installé pour la partie Home Assistant

Quelle version de BirdNET choisir ?
Trois types de BirdNET existent :
- BirdNET-Pi est une distribution complète pour Raspberry Pi : analyse en temps réel, interface web, base de données des détections, spectrogrammes et extraits audio conservés. C'est la solution retenue dans cet article.
- BirdNET-Go est une réécriture en Go, plus légère, capable d'utiliser un flux audio distant — comme l'audio d'une caméra. Elle existe sous forme d'add-on Home Assistant, ce qui évite complètement le Raspberry Pi dédié.
- L'application mobile BirdNET sur les téléphones, très pratique en balade, mais qui ne remonte évidemment rien dans votre domotique.
Le choix dépend surtout de votre installation.
Si un micro ou une caméra se trouve déjà à portée de votre serveur Home Assistant, l'add-on BirdNET-Go est le chemin le plus court.
Si le jardin est loin de la baie technique, le Pi autonome dehors reste la solution la plus simple.
Le matériel
Le Raspberry Pi 4 fait très bien l'affaire. Un modèle 3B+ fonctionne également, l'analyse étant simplement plus lente.
Pour le micro, inutile de viser du matériel professionnel. Un petit micro USB à moins de dix euros donne déjà de très bons résultats. Un micro-cravate relié à une carte son USB constitue l'autre option courante, avec l'avantage d'un câble de deux mètres qui permet d'éloigner la capsule.
Deux points font vraiment la différence sur la qualité des détections :
- Déporter le micro du Pi avec une rallonge USB. Collée au boîtier, la capsule capte les parasites électroniques de la carte.
- Protéger l'ensemble de la pluie sans enfermer le micro : un boîtier étanche dont seule la capsule dépasse, orientée vers le bas.

Étape 1 : installer BirdNET-Pi
Le dépôt maintenu par Nachtzuster est celui qui reçoit les mises à jour.
Préparer le système
Installez Raspberry Pi OS avec Pi Imager, puis mettez la machine à jour :
sudo apt-get update
sudo apt-get upgrade
Vérifier la locale de l'OS
Cette étape évite bien des ennuis avec les noms d'oiseaux accentués, entre BirdNET et Home Assistant. Lancez sudo raspi-config, puis Localisation Options → Locale, et choisissez une locale en UTF-8 (par exemple fr_FR.UTF-8) plutôt que la variante ISO-8859. Redémarrez ensuite.
Lancer l'installation
Dans le terminal du Raspberry pi, lancer l'installation :
curl -s https://raw.githubusercontent.com/Nachtzuster/BirdNET-Pi/main/newinstaller.sh | bash
L'installation est longue : comptez un bon moment, et redémarrez à la fin. L'interface web est alors disponible à l'adresse du Pi, sous la forme http://192.168.1.xx.
Avec xx l'ip attribuée par votre box.
Pensez à fixer cette adresse IP dans votre box.
Vous pouvez d'or et déjà accéder à BirdNET depuis l'adresse ip en tapant l'adresse dans votre navigateur.

Dans les réglages (Tools / Settings), renseignez votre latitude et votre longitude, BirdNET s'en sert, avec la semaine de l'année, pour pondérer les espèces plausibles à cet endroit et à cette saison. Le seuil de confiance par défaut de 0,7 constitue un bon compromis pour démarrer.
piDepuis 2022, Raspberry Pi OS demande de créer un utilisateur à l'installation. Les chemins de ce tutoriel utilisent
/home/pi/, mais adaptez-les au nom que vous avez choisi. En cas de doute, la commande whoami vous le rappelle.Étape 2 : publier les détections en MQTT
C'est ici que se joue la liaison avec Home Assistant. BirdNET-Pi embarque Apprise, une bibliothèque de notifications qui sait parler MQTT nativement : aucun script à écrire, aucun service à créer.
Dans l'interface web, ouvrez Tools → Settings → Notifications et activez-les.
Renseignez l'URL de votre broker au format Apprise :
mqtt://utilisateur:motdepasse@192.168.1.XXX:1883/birdnet/detection
Remplacez l'utilisateur, le mot de passe et l'adresse par ceux de votre broker Mosquitto. Le dernier segment est le topic, que vous retrouverez côté Home Assistant.
Dans le corps du message, collez ce modèle JSON :
{
"common_name": "$comname",
"scientific_name": "$sciname",
"confidence_score": "$confidence",
"link": "$listenurl",
"date": "$date",
"time": "$time",
"week": "$week",
"latitude": "$latitude",
"longitude": "$longitude",
"minimum_confidence": "$cutoff",
"sigmoid_sensitivity": "$sens",
"overlap": "$overlap",
"image": "$flickrimage"
}
Cochez enfin l'option qui déclenche une notification à chaque détection, et pas seulement pour les nouvelles espèces du jour.
Vous devriez avoir une configuration comme cela :

$flickrimage fournit l'URL de la photo de l'espèce, que la carte affichera. Selon les versions, l'image provient de Flickr — qui demande alors une clé d'API — ou directement de Wikimedia Commons, sans rien à configurer.Vérifier que ça sort bien
Depuis une machine du réseau, écoutez le topic :
mosquitto_sub -h 192.168.1.XXX -u utilisateur -P motdepasse -t 'birdnet/#' -v
À la prochaine détection, le JSON doit s'afficher. Si rien ne vient, patientez : par temps calme, un oiseau peut se faire attendre.
Les premières versions de ce tutoriel passaient par un script Python et le client
paho-mqtt, avec un service systemd. Cette approche fonctionne toujours, mais elle est devenue inutile. Surtout, ne cumulez pas les deux! Apprise et un script maison qui publient sur le même topic produisent des doublons et des messages d'erreur difficiles à interpréter.Étape 3 : l'intégration BirdNET dans Home Assistant
Il est tout à fait possible de traiter ces messages avec un capteur template à déclencheur et un empilement de cartes. C'était d'ailleurs la méthode du fil d'origine, et elle est décrite plus bas.
Mais une intégration dédiée existe désormais, développée par un membre de la communauté à partir de ce même fil. Elle s'installe par HACS, se configure entièrement dans l'interface, et embarque sa propre carte Lovelace.
Installation
En mode automatique, le plus simple est de cliquer sur le bouton :
En alternative manuelle :
- ouvrez HACS → Intégrations → menu ⋮ → Dépôt personnalisé
- Collez l'URL du dépôt, catégorie Intégration
- Installez BirdNET, puis redémarrez Home Assistant
- Paramètres → Appareils et services → Ajouter une intégration → BirdNET
Configuration
Quatre champs, tous modifiables ensuite par le bouton Configurer :
| Champ | Défaut | Rôle |
|---|---|---|
| Topic MQTT | birdnet/detection |
Le topic renseigné à l'étape précédente |
| Confiance minimale | 70 % | En dessous, la détection est écartée |
| Espèces ignorées | — | Nom commun ou scientifique |
| URL BirdNET | — | BirdNET-Go uniquement, à laisser vide pour BirdNET-Pi |
L'intégration crée alors plusieurs entités, dont la principale porte tout le détail en attributs : photo, lien d'écoute, fiabilité, journal du jour. S'y ajoutent des compteurs de détections et d'espèces, une entité image et une entité event qui se déclenche une fois par détection retenue — parfaite pour les automatisations.
La carte Lovelace
Elle est livrée avec l'intégration et s'enregistre toute seule dans les ressources Lovelace. Rien à déclarer, elle apparaît directement dans le sélecteur de cartes et suit votre thème.
type: custom:birdnet-card
entity: sensor.birdnet_last_detection

La photo de l'espèce sert de fond, avec le nom commun, le nom latin, l'heure et la fiabilité en incrustation.
En dessous, le journal du jour affiche une ligne par espèce : heure, nom cliquable, nombre de détections et meilleure fiabilité.
Un bouton d'écoute apparaît en haut à droite lorsque l'extrait audio est disponible. Il rejoue les quelques secondes sur lesquelles BirdNET a fondé son identification — le vrai plaisir d'enfin pouvoir associer le sifflement entendu tout l'après-midi à un rougegorge ou à un autre oiseau.
http:// sur une adresse privée.Un éditeur visuel donne accès à toutes les options. Les principales :
type: custom:birdnet-card
entity: sensor.birdnet_last_detection
layout: hero# hero | compact | minimal
aspect_ratio: "16:9"
show_audio: true# bouton d'écoute
show_log: true# journal du jour
log_min_confidence: 70
max_rows: 10
emphasis: confidence# confidence | count
sort: auto# auto | time | count | confidence
tap_action: url # url | wikipedia | more-info | none
Trois mises en page sont disponibles : hero avec la grande photo, compact avec une vignette pour les tableaux de bord denses, et minimal réduite à une seule bande de 80 pixels.
La carte se mesure elle-même et s'adapte à la largeur de sa colonne : au-delà de 520 pixels, le journal passe sur deux colonnes.
Ci-dessous les cartes compactes et minimales :

Le cadrage 16:9 par défaut en rogne alors un quart de la hauteur : réglez
aspect_ratio: "4:3" pour ne rien perdre.Recevoir une notification pour une espèce précise
L'entité event fournit un déclencheur propre. Cet exemple prévient sur mobile, photo à l'appui, quand une chouette hulotte se manifeste :
triggers:
- trigger: state
entity_id: event.birdnet_detection
conditions:
- condition: template
value_template: "{{ trigger.to_state.attributes.common_name == 'Chouette hulotte' }}"
actions:
- action: notify.mobile_app
data:
title: "{{ trigger.to_state.attributes.common_name }}"
message: >-
{{ trigger.to_state.attributes.confidence }} % à
{{ trigger.to_state.attributes.time }}
data:
image: "{{ trigger.to_state.attributes.image }}"
La méthode YAML, sans intégration
Pour ceux qui préfèrent rester en configuration manuelle, voici l'approche d'origine du fil de discussion. Elle repose sur un capteur template à déclencheur, qui empile les détections dans un attribut.
template:
- trigger:
- platform: mqtt
topic: "birdnet/detection"
sensor:
- name: "BirdNET Events"
unique_id: birdnet_events
state: "{{ trigger.payload_json.common_name }}"
icon: mdi:bird
attributes:
scientific_name: "{{ trigger.payload_json.scientific_name }}"
confidence_score: "{{ trigger.payload_json.confidence_score }}"
link: "{{ trigger.payload_json.link }}"
time: "{{ trigger.payload_json.time }}"
image: "{{ trigger.payload_json.image }}"
bird_events: >
{% set current = state_attr('sensor.birdnet_events', 'bird_events') %}
{% set current_list = current if current is iterable and current is not string else [] %}
{% set new_event = {
"name": trigger.payload_json.common_name,
"confidence": (trigger.payload_json.confidence_score | float * 100) | round(0),
"time": trigger.payload_json.time[:5]
} %}
{{ ([new_event] + current_list)[:20] }}
L'affichage se construit ensuite avec une carte markdown, éventuellement combinée à stack-in-card et mushroom.
bird_events au même format. Vous pouvez donc tester avant de basculer — un fichier MIGRATION.md accompagne le dépôt.En cas de souci
Rien ne remonte dans Home Assistant. Vérifiez d'abord que le message sort du Pi avec mosquitto_sub. S'il n'y a rien sur le topic, le problème est côté BirdNET ; s'il y a des messages mais aucune entité, il est côté Home Assistant.
Utilisez l'adresse IP, jamais le nom en .local. La résolution mDNS est capricieuse et provoque des erreurs de connexion difficiles à diagnostiquer.
Les détections sont filtrées. Le seuil de confiance s'applique deux fois : dans BirdNET puis dans l'intégration. Abaissez celui de l'intégration pour vérifier. BirdNET-Go publie d'ailleurs en dessous de son propre seuil, ce qui rend ce second filtre nécessaire.
Attention au volume de données. Une installation bien placée dépasse facilement le millier de détections quotidiennes, et les extraits audio remplissent vite une carte SD. Prévoyez de les basculer sur un NAS, ou de purger régulièrement.
Conclusion
Il y a toujours une petite excitation à consulter son tableau de bord et à découvrir qu'un grimpereau ou un pic vert fréquentent votre jardin depuis toujours, sans que vous l'ayez jamais remarqué. Au-delà de la prouesse technique de BirdNET, ce projet change réellement le regard qu'on porte sur son environnement immédiat — et l'oreille finit par reconnaître les chants sans l'aide de la machine.
De plus rien de mieux qu'associer les images et le son pour éveiller la curiosité des enfants et des plus grands sur le monde qui nous entoure.
Le dispositif reste modeste : un Raspberry Pi, un micro à dix euros et un peu de configuration. Le reste appartient aux oiseaux.
Merci à la communauté
Une question ?
N'hésitez pas à venir poser vos questions sur le forum HACF.
Et vous, quelles espèces avez-vous découvertes autour de chez vous ? Partagez vos détections et vos montages dans les commentaires.