Automation ideas: comfort, lighting, climate, routines¶
Lo que hace que la casa se sienta smart sin ser invasiva. Sutil > dramático. La diferencia entre "casa que ilumina lo que necesitás" vs "casa que te explica que es de tarde". Foundation: per-room occupancy (automation-patterns-curated) — sin eso, todo lo demás es frágil.
Categorías¶
Lighting¶
Circadian / adaptive lighting ★★★¶
Concept: lights ajustan brightness + color temp según hora del día. Warmer/dimmer at night, cooler/brighter at noon. Imita luz natural.
Implementation: integration Adaptive Lighting (HACS) — no escribir desde cero. Configurable per-room.
Crítico: override-respect. Si el humano cambió manualmente, no pisa por X minutos.
Wake-up gradual ★★¶
automation:
- alias: "Sunrise lights gradual"
trigger:
- platform: time
at: input_datetime.paulo_wakeup
condition:
- condition: state
entity_id: input_boolean.paulo_at_home
state: 'on'
action:
- service: light.turn_on
target: { entity_id: light.bedroom }
data:
brightness: 1
kelvin: 2200 # rojo profundo
- delay: '00:05:00'
# Ramp 30 min de 1% → 100%, 2200K → 5000K
- repeat:
count: 30
sequence:
- service: light.turn_on
target: { entity_id: light.bedroom }
data:
brightness_pct: "{{ repeat.index * 3 }}"
kelvin: "{{ 2200 + (repeat.index * 100) }}"
- delay: '00:01:00'
Bathroom mid-night ★★¶
Patron único: si te levantás de noche y entrás al baño, luz tenue rojiza (no white). No te despierta totalmente.
automation:
- alias: "Bathroom dim red at night"
trigger:
- platform: state
entity_id: binary_sensor.bathroom_motion
to: 'on'
condition:
- condition: time
after: '23:00:00'
before: '06:00:00'
action:
- service: light.turn_on
target: { entity_id: light.bathroom }
data:
brightness_pct: 15
rgb_color: [255, 50, 0]
Outdoor lights por sun ★★¶
Encender outdoor 30 min antes del sunset, apagar 30 min después del sunrise. Sin schedule fijo — sigue las estaciones.
Climate¶
Room-by-room targeting ★★¶
Climate por zona en base a occupancy. Sólo calefaccionar cuartos donde hay gente.
automation:
- alias: "Climate per room"
trigger:
- platform: state
entity_id: binary_sensor.office_occupied
action:
- service: climate.set_temperature
target: { entity_id: climate.office }
data:
temperature: >
{% if trigger.to_state.state == 'on' %}21{% else %}17{% endif %}
Window-open detection ★★¶
Si abrieron una ventana en cuarto con HVAC activo, pause el HVAC.
automation:
- alias: "Pause HVAC when window open"
trigger:
- platform: state
entity_id: binary_sensor.living_window
to: 'on'
for: '00:02:00' # ignora apertura brevísima
action:
- service: climate.turn_off
target: { entity_id: climate.living }
- service: notify.mobile_app_paulo
data: { message: "🪟 Ventana living abierta, HVAC pausado" }
Humidity-driven ventilation ★¶
Si baño humedad > 75% post-ducha → encender extractor.
automation:
- alias: "Bathroom humid extract"
trigger:
- platform: numeric_state
entity_id: sensor.bathroom_humidity
above: 75
action:
- service: fan.turn_on
target: { entity_id: fan.bathroom_extractor }
- alias: "Bathroom extract off"
trigger:
- platform: numeric_state
entity_id: sensor.bathroom_humidity
below: 55
for: '00:10:00'
action:
- service: fan.turn_off
target: { entity_id: fan.bathroom_extractor }
Routines¶
Morning routine personalizada ★★¶
automation:
- alias: "Paulo morning"
trigger:
- platform: state
entity_id: input_boolean.paulo_sleep_mode
from: 'on'
to: 'off'
action:
- service: light.turn_on
target: { entity_id: light.kitchen }
data: { brightness_pct: 70, kelvin: 4000 }
- service: media_player.play_media
target: { entity_id: media_player.kitchen_speaker }
data:
media_content_id: "spotify:user:paulo:playlist:morning"
media_content_type: playlist
- service: tts.cloud_say
data:
entity_id: media_player.kitchen_speaker
message: >
Buenos días Paulo. Hoy {{ states('sensor.outside_temp') }} grados,
{{ states('weather.home') }}.
Calendario: {{ state_attr('calendar.paulo', 'message') }}.
Goodnight routine ★★¶
automation:
- alias: "Goodnight scene"
trigger:
- platform: event
event_type: scene_activated # via Magic Cube / button / voice
event_data:
scene: goodnight
action:
# Lock all doors
- service: lock.lock
target: { entity_id: group.all_locks }
# Cerrar puerta de garage si abierta
- service: cover.close_cover
target: { entity_id: cover.garage }
# Verificar
- service: notify.mobile_app_paulo
data:
message: >
🌙 Goodnight.
{% if is_state('cover.garage', 'open') %}⚠️ Garage abierto!{% else %}✅ Garage cerrado{% endif %}
{% if is_state('group.all_locks', 'unlocked') %}⚠️ Puerta sin trabar!{% else %}✅ Todas trabadas{% endif %}
# Apagar luces gradual
- service: light.turn_off
target: { entity_id: group.all_lights }
data: { transition: 60 }
- service: input_boolean.turn_on
entity_id: input_boolean.paulo_sleep_mode
Coming home routine ★★¶
automation:
- alias: "Welcome home"
trigger:
- platform: state
entity_id: person.paulo
from: 'not_home'
to: 'home'
action:
- service: light.turn_on
target: { entity_id: group.welcome_lights }
- service: climate.set_temperature
target: { entity_id: climate.living }
data: { temperature: 21 }
- if:
- condition: numeric_state
entity_id: sun.sun
attribute: elevation
below: 0
then:
- service: cover.close_cover
target: { entity_id: group.blinds }
Movie night ★¶
script:
movie_night:
sequence:
- service: light.turn_off
target: { entity_id: group.living_main_lights }
- service: light.turn_on
target: { entity_id: light.tv_bias }
data: { brightness_pct: 30, rgb_color: [50, 50, 150] }
- service: cover.close_cover
target: { entity_id: cover.living_blinds }
- service: media_player.turn_on
target: { entity_id: media_player.tv }
- service: media_player.select_source
target: { entity_id: media_player.tv }
data: { source: 'HDMI 1' }
Presence quality-of-life¶
Last person leaves → away mode ★★★¶
automation:
- alias: "Last person leaves"
trigger:
- platform: state
entity_id: binary_sensor.house_occupied
from: 'on'
to: 'off'
for: '00:10:00' # delay para evitar false trigger
action:
- service: input_boolean.turn_on
entity_id: input_boolean.away_mode
- service: light.turn_off
target: { entity_id: group.all_lights }
- service: climate.set_temperature
target: { entity_id: group.thermostats }
data: { temperature: 16 } # eco mode
- service: switch.turn_off
target: { entity_id: group.non_essential_switches } # TV stand-by, etc.
- service: lock.lock
target: { entity_id: group.all_locks }
First person arrives → wake the house ★★¶
automation:
- alias: "First person arrives"
trigger:
- platform: state
entity_id: binary_sensor.house_occupied
from: 'off'
to: 'on'
action:
- service: input_boolean.turn_off
entity_id: input_boolean.away_mode
- service: climate.set_temperature
target: { entity_id: group.thermostats }
data: { temperature: 21 }
# No prender luces aún — el welcome individual lo hace
Comfort sutil (anti-jumpscare)¶
Una buena automation no anuncia su presencia. Reglas:
- Cuando entrás a un cuarto, la luz debe ya estar al nivel esperado (no transición visible "ah HA acaba de prenderla").
- TTS sólo si es alert o si vos invocaste explicit. Nunca "su cuarto está ahora a 21 grados" no-solicitado.
- Climate cambia gradual, no abruptamente.
- Notifications visuales > audibles si nadie está mirando phone — flash de bulb suave en kitchen, no announce voice.
Plan adopción¶
| Mes | Construir |
|---|---|
| 1 | Bathroom dim red mid-night. Outdoor sun. |
| 2 | Window-open detection. Humidity-driven ventilation. |
| 3 | Adaptive lighting (Adaptive Lighting integration). Morning routine. |
| 4 | Goodnight scene. Welcome home. Last/first person. |
| 6 | Wake-up gradual. Movie night. |
Relaciones¶
- Foundation: automation-patterns-curated (per-room occupancy).
- Conecta con: notification-strategy (sleep mode respeta no-disturb).
- Conecta con: multi-user-family-management (rutinas per-user).
Abierto / gaps¶
- Calendar integration profundo (vacaciones, holidays).
- Patrón "guest mode lighting" (más bright general, override defaults).
- Pet behavior consideration (no triggear "intrusion" por el perro).