Saltar a contenido

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.

trigger:
  - platform: sun
    event: sunset
    offset: '-00:30:00'

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

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).