Saltar a contenido

Automation ideas: outdoor, garden, advanced

Patterns que extienden el smart home al patio, jardín, garage, y casos avanzados como integration con calendar / clima / external APIs. Estos asumen que la base (occupancy + notifications + safety) ya está sólida. Sin foundation, estos son ruido.

Outdoor / garden

Irrigation automática ★★★ (si tenés jardín)

Approach 1 — Simple schedule + weather override:

automation:
  - alias: "Daily irrigation"
    trigger:
      - platform: time
        at: '06:00:00'  # antes del calor
    condition:
      # Skip si llueve / llovió ayer / pronostico lluvia
      - condition: numeric_state
        entity_id: sensor.rain_last_24h_mm
        below: 5
      - condition: numeric_state
        entity_id: sensor.rain_forecast_next_24h_mm
        below: 3
      - condition: numeric_state
        entity_id: sensor.outdoor_temp
        above: 5  # no irrigar si congela
    action:
      - service: switch.turn_on
        entity_id: switch.irrigation_zone_1
      - delay: '00:15:00'
      - service: switch.turn_off
        entity_id: switch.irrigation_zone_1
      # Zone 2
      - service: switch.turn_on
        entity_id: switch.irrigation_zone_2
      # ...

Approach 2 — Moisture-driven con sensores en tierra:

Más sofisticado: irrigar solo cuando moisture < threshold, no por schedule. Sensors tipo Aqara T1 outdoor o ESPHome custom con capacitive moisture sensor.

automation:
  - alias: "Garden moisture-driven"
    trigger:
      - platform: numeric_state
        entity_id: sensor.garden_zone_1_moisture
        below: 35
        for: '02:00:00'
    condition:
      - condition: time
        after: '05:00:00'
        before: '08:00:00'
    action:
      - service: switch.turn_on
        entity_id: switch.irrigation_zone_1
      - wait_for_trigger:
          - platform: numeric_state
            entity_id: sensor.garden_zone_1_moisture
            above: 55
        timeout: '00:30:00'
      - service: switch.turn_off
        entity_id: switch.irrigation_zone_1

OpenSprinkler / Rachio: si querés controller dedicado con integration HA, OpenSprinkler local + HA integration. Rachio cloud-only (evitar).

Pool monitoring ★

Si tenés pileta: - Sensors pH + ORP + temp. - Alert si chemistry fuera de rango. - Cycle bomba automático según temp + tiempo del día.

Outdoor lights presence-aware ★★

Sensors PIR outdoor + lights → encender solo cuando alguien se acerca, no all-night.

automation:
  - alias: "Driveway motion lights"
    trigger:
      - platform: state
        entity_id: binary_sensor.driveway_motion
        to: 'on'
    condition:
      - condition: sun
        after: sunset
        after_offset: '-00:30:00'
    action:
      - service: light.turn_on
        target: { entity_id: light.driveway }
        data: { brightness_pct: 100 }
      - delay: '00:05:00'
      - service: light.turn_off
        target: { entity_id: light.driveway }

Garage door automation ★★

# Notify si queda abierto >10 min
- alias: "Garage left open"
  trigger:
    - platform: state
      entity_id: cover.garage_door
      to: 'open'
      for: '00:10:00'
  action:
    - service: notify.mobile_app_paulo
      data:
        message: "🚪 Garage abierto hace 10 min"
        data:
          actions:
            - action: CLOSE_GARAGE
              title: "Cerrar"

# Auto-close en goodnight scene si quedó abierto
# Ya cubierto en automation-ideas-comfort

Weather-reactive ★

  • Si forecast de tormenta fuerte → notificar para guardar cosas outdoor (paraguas, sillas).
  • Si temperature outdoor > 30°C → notify para regar plantas indoor también.
  • Si UV index > 7 → notify sun protection.

Advanced / integrations

Calendar-driven routines ★★★

HA tiene Local Calendar integration (no requiere Google Calendar).

automation:
  - alias: "Calendar event start: house mode"
    trigger:
      - platform: calendar
        event: start
        entity_id: calendar.familia
    action:
      - choose:
          - conditions:
              - condition: template
                value_template: "{{ 'meeting' in trigger.calendar_event.summary | lower }}"
            sequence:
              - service: input_boolean.turn_on
                entity_id: input_boolean.paulo_in_meeting
              - service: light.turn_on
                target: { entity_id: light.office_status }
                data: { rgb_color: [255, 0, 0] }
          - conditions:
              - condition: template
                value_template: "{{ 'gym' in trigger.calendar_event.summary | lower }}"
            sequence:
              - service: notify.mobile_app_paulo
                data: { message: "🏋️ Recordatorio: bolso, agua" }
          - conditions:
              - condition: template
                value_template: "{{ 'basura' in trigger.calendar_event.summary | lower }}"
            sequence:
              - service: tts.cloud_say
                data:
                  entity_id: media_player.kitchen_speaker
                  message: "Recordá sacar la basura"

Door bell con vision AI ★★

automation:
  - alias: "Doorbell ring with classification"
    trigger:
      - platform: state
        entity_id: binary_sensor.doorbell
        to: 'on'
    action:
      - service: camera.snapshot
        target: { entity_id: camera.doorbell }
        data: { filename: '/tmp/doorbell.jpg' }
      - service: ai_task.generate_data
        data:
          entity_id: ai_task.default
          task: |
            Doorbell rang. Imagen muestra el visitante.
            Clasificá: ¿familia, delivery, vecino conocido, desconocido?
            Si delivery, ¿hay paquete visible?
          attachments: ['/tmp/doorbell.jpg']
          structure:
            classification: string
            has_package: bool
            description: string
        response_variable: result
      - service: notify.mobile_app_paulo
        data:
          title: "🔔 Doorbell  {{ result.classification }}"
          message: "{{ result.description }}"
          data:
            image: '/tmp/doorbell.jpg'
            actions:
              - action: UNLOCK_FOR_FAMILY
                title: "Abrir (familia)"
              - action: IGNORE
                title: "Ignorar"

Este es el caso canónico de Q7 AI vision (ver q7-llm-runtime-strategy-v1 + cameras-frigate-strategy).

Vacation simulation ★★

automation:
  - alias: "Vacation random lighting"
    trigger:
      - platform: time_pattern
        minutes: '/30'
    condition:
      - condition: state
        entity_id: input_boolean.vacation_mode
        state: 'on'
      - condition: sun
        after: sunset
        before: '23:00:00'
    action:
      - service: light.toggle
        target:
          entity_id: >
            {{ ['light.living', 'light.kitchen', 'light.dormitorio']
               | random }}

Patrón "como si alguien estuviera en casa" sin pattern obvio.

Delivery anticipated ★

Si el calendar tiene "delivery expected" entry, AI Task podría: - Watch front door camera con thresholds más sensitive. - Notify "expected delivery — checking footage" cuando se detecta movement. - Save snapshots de delivery completion.

Music + context ★

# Música según context
- alias: "Music for context"
  trigger:
    - platform: state
      entity_id: input_boolean.cocinando
      to: 'on'
  action:
    - service: media_player.play_media
      target: { entity_id: media_player.kitchen_speaker }
      data:
        media_content_id: "spotify:user:paulo:playlist:cocina"
        media_content_type: playlist

Triggers para "cocinando": stove on + occupancy + horario meal.

Network monitoring + auto-recovery ★★

# Internet health check
template:
  - binary_sensor:
      - name: "Internet up"
        state: >
          {{ states('sensor.gateway_ping') | float < 200 }}

automation:
  - alias: "Internet down"
    trigger:
      - platform: state
        entity_id: binary_sensor.internet_up
        from: 'on'
        to: 'off'
        for: '00:05:00'
    action:
      - service: notify.telegram
        data: { message: "📡 Internet caído (5 min)" }
      # Optional: power cycle router via smart plug
      - service: switch.turn_off
        entity_id: switch.router_plug
      - delay: '00:00:30'
      - service: switch.turn_on
        entity_id: switch.router_plug

Device anomaly detection ★

Patron: usar Statistics integration de HA para detectar device behavior anormal.

sensor:
  - platform: statistics
    name: "Fridge daily power avg"
    entity_id: sensor.fridge_power
    state_characteristic: mean
    max_age:
      hours: 24

automation:
  - alias: "Fridge consuming abnormal"
    trigger:
      - platform: numeric_state
        entity_id: sensor.fridge_daily_power_avg
        above: 150  # avg histórico es ~100W
        for: '06:00:00'
    action:
      - service: notify.telegram
        data: { message: "🧊 Heladera consume más promedio. Coil sucio? Junta?" }

Notas operativas

Cuándo NO complicar

  • Si nunca usaste outdoor automations, empezá con driveway motion lights y garage left open. NO con irrigation moisture-driven Phase 1.
  • Si nunca usaste AI Task, empezá con doorbell classification y daily digest. NO con anomaly detection sofisticada.
  • Si nunca usaste calendar integration, empezá con basura reminder (estático weekday Tuesday). NO con event-driven complex.

Cuándo SI complicar

  • Tenés todos los Tier S de automation-patterns-curated funcionando.
  • Notification strategy implementada y los tiers no se confunden.
  • Failure modes catalogados con playbooks del agente activos.

Relaciones

Abierto / gaps

  • OpenSprinkler vs Rachio vs Hunter Hydrawise — comparativa específica.
  • Pool monitoring stack (sensors, controllers).
  • Smart blinds / motorized shades — integration patterns.
  • Patrón concreto de "watering recommendation" basado en weather + soil + plant type.