Bonjour à tous
Ce projet documente la mise en place d’un babyphone domotique complet sous Home Assistant, incluant : surveillance sonore via une caméra RTSP, intégration Lovelace, automatisations intelligentes, indicateurs de fiabilité, et tableau de bord ergonomique.
Matériel utilisé
- Caméra compatible RTSP (ex : Reolink RLC, Imou, TP-Link Tapo)
- Home Assistant OS (sur Intel NUC ou autre système stable)
- Ampoule Zigbee RGB (veilleuse)
- Intégration WebRTC pour affichage en direct
- Intégration
ffmpeg_noise
pour détection sonore
À noter : une caméra d’entrée de gamme suffit, tant qu’elle fournit un flux RTSP avec audio. Pas besoin de modèle 4K ou motorisé.
Capteur de bruit avec ffmpeg_noise
Dans le fichier configuration.yaml
:
binary_sensor:
- platform: ffmpeg_noise
name: Bruit bébé
input: rtsp://user:motdepasse@192.168.X.X:554/flux_sub
peak: -20
duration: 2
reset: 5
initial_state: true
extra_arguments: "-analyzeduration 1000000 -probesize 1000000"
Ce capteur détecte un son d’au moins 2 secondes, de niveau > -20 dB, et reste actif pendant 5 secondes avant de revenir à off.
Entités personnalisées
Ajoutées dans configuration.yaml
:
input_boolean:
mode_babyphone:
name: Mode Babyphone
icon: mdi:baby
input_text:
babyphone_derniere_verification:
name: Dernier redémarrage auto capteur
max: 50
input_number:
babyphone_peak_sensitivity:
name: Sensibilité du bruit (peak)
min: -60
max: -5
step: 1
unit_of_measurement: dB
icon: mdi:volume-high
counter:
babyphone_relances:
name: Nombre de relances auto aujourd'hui
icon: mdi:restart
Automatisations principales
Cette automatisation permet de relancer automatiquement le capteur en cas de blocage ou de bug, notamment lorsque le capteur reste figé à l’état « off » pendant une période prolongée.
Dansautomations.yaml
:
alias: Babyphone - Surveillance capteur bloqué
trigger:
- platform: state
entity_id: binary_sensor.bruit_bebe
to: "off"
for:
minutes: 15
condition:
- condition: state
entity_id: input_boolean.mode_babyphone
state: "on"
action:
- service: homeassistant.update_entity
target:
entity_id: binary_sensor.bruit_bebe
- delay: "00:00:05"
- service: homeassistant.update_entity
target:
entity_id: binary_sensor.bruit_bebe
- service: notify.notify
data:
title: Babyphone - Surveillance automatique
message: Le capteur a été relancé automatiquement.
- service: input_text.set_value
target:
entity_id: input_text.babyphone_derniere_verification
data:
value: "{{ now().strftime('%d/%m/%Y à %H:%M:%S') }}"
- service: counter.increment
target:
entity_id: counter.babyphone_relances
mode: single
Automatisation : Allumage de la veilleuse si bruit détecté
alias: Babyphone - Allumage veilleuse si bruit détecté
trigger:
- platform: state
entity_id: binary_sensor.bruit_bebe
from: "off"
to: "on"
condition:
- condition: state
entity_id: input_boolean.mode_babyphone
state: "on"
action:
- service: light.turn_on
target:
entity_id: light.ampoule_bebe
data:
brightness_pct: 20
rgb_color: [173, 216, 230] # bleu clair, non agressif pour un bébé
- delay: "00:05:00"
- service: light.turn_off
target:
entity_id: light.ampoule_bebe
mode: restart
Dashboard Lovelace - Vue Babyphone
Pour l’affichage en direct de la caméra, l’intégration WebRTC Camera doit être installée via HACS ou les ressources Lovelace. Elle permet un affichage fluide du flux RTSP directement dans le tableau de bord sans passer par des services cloud ou des redirections compliquées.
Affichage adapté pour téléphone, avec :
- Caméra en direct (flux
sub
pour réduire CPU) - État du capteur sonore
- Carte conditionnelle si bruit détecté
- Contrôle veilleuse Zigbee
- Historique des bruits (12h)
- Bouton on/off mode babyphone
- Bouton relance manuelle du capteur
- Affichage heure dernière relance auto
- Nombre de relances du jour
- Slider de sensibilité (visuel)
Surcouche de sécurité
- Notification systématique si relance auto effectuée
- Affichage de l’heure de dernière relance
- Compteur de relances à la journée pour diagnostiquer une instabilité
- Capteur configuré pour ne pas se déclencher à la moindre voix lointaine
Annexes & compléments utiles
Carte Lovelace - Vue caméra WebRTC
type: custom:webrtc-camera
url: rtsp://user:password@192.168.X.X:554/flux_sub
muted: false
title: 🎥 Vue en direct
Carte Lovelace - État du capteur
type: custom:mushroom-template-card
entity: binary_sensor.bruit_bebe
primary: >
{% if is_state('binary_sensor.bruit_bebe', 'on') %}
🔊 Bruit détecté !
{% else %}
🔇 Aucun bruit
{% endif %}
icon: mdi:microphone
icon_color: >
{% if is_state('binary_sensor.bruit_bebe', 'on') %}
red
{% else %}
grey
{% endif %}
Automatisation complémentaire - Notification si bruit détecté
Cette automatisation envoie une alerte sur le téléphone (via l’app mobile Home Assistant) lorsqu’un bruit est détecté dans la chambre, si le mode babyphone est actif.
alias: Babyphone - Notification bruit détecté
trigger:
- platform: state
entity_id: binary_sensor.bruit_bebe
from: "off"
to: "on"
condition:
- condition: state
entity_id: input_boolean.mode_babyphone
state: "on"
action:
- service: notify.notify
data:
title: "👶 Bruit détecté !"
message: "Un bruit a été détecté dans la chambre."
mode: single
Carte test - Forcer la relance du capteur
type: custom:mushroom-entity-card
entity: binary_sensor.bruit_bebe
name: 🔁 Relancer capteur bruit
tap_action:
action: call-service
service: homeassistant.update_entity
data:
entity_id: binary_sensor.bruit_bebe
Limitations connues de ffmpeg_noise
- Peut se figer (d’où l’automatisation de relance)
- Dépend fortement de la stabilité du flux RTSP (Wi-Fi ≠ Ethernet)
- Certains flux RTSP n’intègrent pas d’audio actif par défaut (nécessite activation dans l’interface de la caméra)
Idées d’évolutions futures
- Activation automatique du mode babyphone via un mode nuit intelligent (horaire, luminosité…)
- Ajout d’un capteur de mouvement pour ignorer les bruits si un parent est présent
- Création d’un historique exportable (CSV/Google Sheets)
Ce projet peut être intégré dans une installation domotique plus large et adapté à tout parent souhaitant un babyphone fiable, réactif et personnalisé sous Home Assistant.
J’espère pouvoir vous aider avec mon projet,
Bonne journée à vous,