Home Assistant y el bebé
Tenemos un nuevo miembro de la familia en casa y han surgido algunas necesidades que si no se resuelven de manera friki, no vale la pena resolverlas. A saber:
- Recordatorios de cuando a dormido o comido la bebé.
- Recordatorios de medicamentos.
- Reproducir ruidos blancos en las habitaciónes.
Ya he hablado en alguna ocasión que tengo Home Assistant en casa para todo lo de domotica, asi que vamos al grano con que automatizaciónes nuevas tenemos. Home assistant es gratuito y super flexible para cualquier tarea. Puede hacer lo que le pidas (algunas cosas mas o menos dificil de programar).
Recordatorios
Para los recordatorios, primero hace falta recolectar datos. Lo mejor que hay en el mundillo open source domótica para instalar en casa es BabyBuddy. Ofrece una interfaz para marcar comidas y siestas, etc, se puede instalar en Home Assistant como un Add-on, asi que es relativamente facil, y se puede integrar con Home Assistant con sensores que indican cuando y cuanto fueron los últimos eventos. Esto ultimo es lo que nos interesa para los recordatorios.
Necesitamos un recordatorio para cuando ha pasado mucho rato de la última comida y un recordatorio para última siesta.
Ultima comida
Para esto usamos una Automation con lo siguiente
alias: Send feed alert when treshold
description: ""
trigger:
- platform: state
entity_id:
- sensor.baby_last_feeding
attribute: start
condition: []
action:
- variables:
variableDelay: |
{% if now() > today_at("06:00") and now() < today_at("23:00") %}
{{timedelta(hours=2, minutes=00)}}
{% else %}
{{timedelta(hours=3, minutes=30)}}
{% endif %}
- delay: >-
{{ variableDelay | as_timedelta - (now() -
state_attr("sensor.baby_last_feeding", "start") | as_datetime) }}
- variables:
criticalLoudNotificationTime: >
{% if now() > today_at("06:00") and now() < today_at("23:00") %}1{%
else %}0{% endif %}
message: >-
El bebe comió {{states.sensor.baby_last_feeding.state}}ml hace
{{variableDelay}}h.
title: Baby feed updates
- action: notify.mobile_app_iphone
metadata: {}
data:
title: "{{title}}"
data:
push:
sound:
name: default
critical: |
{{ criticalLoudNotificationTime }}
volume: |
{{ criticalLoudNotificationTime }}
message: "{{ message }}"
- action: notify.mobile_app_iphone
data:
data:
push:
sound:
name: default
critical: |
{{ criticalLoudNotificationTime }}
volume: |
{{ criticalLoudNotificationTime }}
title: "{{title}}"
message: "{{ message }}"
mode: restart
Lo interesante aqui es variableDelay que nos indica cuanto vamos a esperar de la ultima comida dependiendo de noche o día 2 o 3 horas. Despues en delay seteamos cuando esperará la automatización antes de enviar la notificación al telefono. Esto el delay de 2h menos el tiempo que ya ha pasado desde el comienzo de la comida (teniendo en cuenta que el registro se hace normalmente al final de la comida).
Luego lo interesante de las noticaciónes (para configurar los moviles se instala la aplicación de home assistant en los teléfonos) es ponerlas en CRITICO. Con esto aunque el teléfono este en silencio suena a todo volumen igual. Por eso también hay un control para no poner en critico durante la noche.
Y con esto tenemos un aviso en el movil cuando ha pasado mucho rato desde la útlima comida.
Ultima siesta
En control de sueño es más sencillo en tanto que nos interesa el tiempo pasado desde que terminó la ultima siesta, que es el dato ya como viene desde babyBuddy, asi que solo hay que contar desde que se actualiza el último sueño y ya.
alias: sleep window alert
description: ""
trigger:
- platform: state
entity_id:
- sensor.baby_last_sleep
attribute: end
condition:
- condition: time
after: "06:00:00"
before: "21:00:00"
action:
- delay:
hours: 1
minutes: 15
seconds: 0
milliseconds: 0
- action: notify.mobile_app_iphone_giuseppe
metadata: {}
data:
message: Hace 1h 15m de su ultima siesta
title: Baby's sleep updates
data:
push:
sound:
name: default
critical: 1
volume: 1
- action: notify.mobile_app_iphone
data:
message: Hace 1h 15m de su ultima siesta
title: Baby's sleep updates
data:
push:
sound:
name: default
critical: 1
volume: 1
mode: restart
Maquina de ruido blanco
Pensé en hacerlo como un dispositivo independiente, pero luego pensé, tengo los altavoces de Google Home Mini, ya conectado en las habitaciónes para poner musica. Y estos estan conectados a Home Assistant, osea puedo mandar audio a los altavoces en atomatizaciónes.
Entonces, la solución fue, crear un dashboard en HA con una botonera que mande los diferentes sonidos a los altavoces. Muy simple. Aunque con un detalle. No hay una funcionalidad de repetir automaticamente un audio. Entonces para reproducir un ruido blanco toda noche es un problema. Si son cortos se pueden subir a la sección de MEDIA de home assistant sin problemas (o desde WINSCP porque la interfaz tiene problemas con ficheros grandes).
Para ficheros más grandes lo que hice fue duplicar el audio hasta hacerlos de 8 horas (500MB :’D ) y subirlo a mi servidor multimedia. Se puede a cualquier sitio que quede un link publico que home assistant pueda acceder para mandar.
Vamos a ver la configuración en el dashboard.
square: false
type: grid
cards:
- show_name: true
show_icon: true
type: button
tap_action:
action: perform-action
perform_action: media_player.play_media
target:
device_id: device_iddfdsfdsfdsfdsf
data:
media_content_id: >-
http://192.168.86.32:8096/Items/519b4933158279d75b48c58b702f74e3/Download?api_key=64cc4e7783d94186b857064dcc292d6b
media_content_type: audio/mp3
name: White Noise
entity: media_player.living_room_speaker
icon: mdi:sine-wave
- show_name: true
show_icon: true
type: button
tap_action:
action: perform-action
perform_action: media_player.play_media
target:
device_id: device_id324324324324
data:
media_content_id: http://192.168.22.33:8123/media/local/ocean-sounds-1.mp3
media_content_type: music
name: Ocean
entity: media_player.living_room_speaker
icon: mdi:waves
- show_name: true
show_icon: true
type: button
tap_action:
action: perform-action
perform_action: media_player.play_media
target:
device_id: device_iddfsfsfdsfdsfd
data:
media_content_type: music
media_content_id: http://192.168.22.33:8123/media/local/rain-sounds-1.mp3
entity: media_player.living_room_speaker
icon: mdi:grain
name: Rain
- show_name: true
show_icon: true
type: button
tap_action:
action: perform-action
perform_action: media_player.play_media
target:
device_id: device_idvdsvfdvfdvfd
data:
media_content_id: http://192.168.22.33:8123/media/local/hypno-baby-1.mp3
media_content_type: music
name: Lullaby
entity: media_player.living_room_speaker
icon: mdi:cradle
- show_name: true
show_icon: true
type: button
tap_action:
action: perform-action
perform_action: media_player.media_stop
target:
device_id: device_idvfsdvfsvfsvfd
entity_id: media_player.living_room_speaker
data: {}
name: Stop
entity: media_player.living_room_speaker
- show_name: true
show_icon: true
type: button
tap_action:
action: perform-action
perform_action: light.turn_on
target:
device_id: device_iddfdsfdsfds
data:
brightness_pct: 2
entity: number.wled_intensity_2
name: Dormir
icon: mdi:weather-night
hold_action:
action: toggle
- show_name: true
show_icon: true
type: button
tap_action:
action: perform-action
perform_action: light.turn_on
target:
device_id: device_idfdsfdsvfdsvs
data:
brightness_pct: 24
entity: number.wled_intensity_2
icon: mdi:human-baby-changing-table
hold_action:
action: toggle
name: Cambiar
- type: entity
entity: sensor.atc_dc39_temperature
name: T
columns: 3
title: TV Room
Y la botonera quedaría asi, accesible desde el movil.
Hay botones extras para control de luces y un visor de temperatura para la habitación.
Destacable la primera url es el white noise largo de 8h que viene de jellyfin y las otras URL son locales de HA de ficheros subidos a MEDIA.
Es más facil configurar en UI que como se ve aqui en YAML.
Eso es todo por ahora, pero creu que se vienen más automaticaciónes pronto. Estaría bien integrar el asistente de Voz de HA a ver, aunque no se puede activar desde los Home Minis.
Cualquier comentario o sugerencia se puede dejar en este thread del fediverso