Babyphone domotique Home Assistant

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.


:house: 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

:information_source: À 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é.


:gear: 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.


:counterclockwise_arrows_button: 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

:bar_chart: 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.
Dans automations.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

:light_bulb: 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

:framed_picture: 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)

:shield: 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

:paperclip: Annexes & compléments utiles

:puzzle_piece: 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

:level_slider: 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 %}

:megaphone: 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

:test_tube: 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

:warning: 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)

:light_bulb: 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,

Super merci beaucoup pour ce projet. Je l’ai mis en place hier, pour l’instant j’en ai pas eu besoin avec la redondance de mon babyphone actuel (non connecté mais très pénible à utiliser), tout semble fonctionner. À voir à l’usage.

Ma fille étant un grand bébé maintenant et ne voulant pas un babyphone trop sensible au moindre petit pleur de la nuit, j’ai personellement préféré ajouter un compteur du nombre de passage à l’état détecté dans les deux dernières minutes et utilisé ce compteur > 3 comme déclencheur des automatisations. Ainsi un simple chouinement lors d’un micro réveil ne déclenche pas l’alarme.

J’ai utilisé l’intégration history stats trackant les passages à l’état “détecté” du capteur Bruit Bébé, avec les templates suivants pour start et end (je le mets ici car j’ai eu un peu de mal à le configurer, attention à ne pas mettre de guillemet) :

start –> {{ now() - timedelta(minutes=2) }}

end –> {{ now() }}

Je vois dans les entités personnalisées une pour pouvoir varier la sensibilité du bruit détecté mais de ce que j’ai compris cela ne peut pas être utilisé avec l’intégration de ffmpeg_noise, dommage ça serait bien pratique.