Publicado en Home-Assistant

Implementar control de alarma en Home Assistant


Home Assistant (HASS.io) ofrece la posibilidad de montar un sistema de alarma inteligente con el componente alarm_control_panel su documentació oficial Manual Alarm Control Panel – Home Assistant

Estados de alarma

  • armed_home: Alarma activada pero con presencia en la casa.
  • armed_away: Alarma activada y nadie en casa.
  • armed_night: Modo nocturno.
  • triggered: Lanzar alarma

Tiempos

  • pending_time: tiempo antes de cambiar hacia otro estado de alarma, en armed_away es el tiempo que otorga para salir de la estancia.
  • delay_time: tiempo antes de disparar la alarma, en armed_away es el tiempo otorgado para desbloquear la alarma.
  • trigger_time: duración en segundos de la alarma sonando.

Definición del panel de Alarma

Ejemplo de definición de una alarma con las siguientes características: código para armar y desarmar la alarma 1234, especifica tiempo para armar la alarma y salir de la vivienda 60 segundos, al llegar a la vivienda 30 segundos para desbloquear la alarma, al iniciar la alarma dar 10 segundos antes de lanzar la alarma general.

  • Código para armar y desarmar la alarma 1234
  • Tiempo para armar la alarma y salir de la instancia: 60 segundos
  • Tiempo para desarmar la alarma 30 segundos
  • Marguen antes de iniciar la alarma 10 segundos
alarm_control_panel:
  - platform: manual
    name: Home Alarm
    code: 1234
    disarmed:
      trigger_time: 0
    armed_home:
      pending_time: 0
      delay_time: 0
    armed_away:
      pending_time: 60
      delay_time: 30
    triggered:
      pending_time: 10
    disarm_after_trigger: false

Definición de sensores para las puertas y etc…

Para integrar los sensores que detectan la apertura de las puertas, ventanas, detección de movimiento, presencia en la instancia etc… se puede controlar con un sensor binario 0 cerrado, 1 abierto

binary_sensor:
  - platform: mqtt
      name: Entrance door
      state_topic: /home/entrance/door
      payload_on: "1"
      payload_off: "0"
      device_class: door

En la propiedad device_class se puede especificar el tipo del sensor: door, window, motion, garage_door, presence, para obtener más tipos consultar la documentación oficial de Binary Sensor – Home Assistant

Lo más cómodo es separar los tipos de sensores por grupos, puertas, ventanas, detectores, así con solo obtener el estado del grupo se simplifica la acción a comprobar.

  • has_windows_opened: grupo de sensores de tipo window, para las ventanas
  • has_door_opened: grupo de sensores de tipo door, garage_door, para las puertas de acceso
  • has_motion_detected: grupo de sensores de detección de movimiento definidos como motion
has_windows_opened:
    entities:
      - binary_sensor.dinning_room_window
      - binary_sensor.kitchen_window
      - binary_sensor.bathroom_window
      - binary_sensor.main_bedroom_window

has_door_opened:
    entities:
      - binary_sensor.entrance_door
      - binary_sensor.back_door

has_motion_detected:
    entities:
      - binary_sensor.dinning_room_motion
      - binary_sensor.kitchen_motion
      - binary_sensor.garage_motion
      - binary_sensor.garden_motion

Programar el sistema de Alarma Inteligente

Para programar el sistema de Alarma lo haremos con las Automatizaciones que ofrece Home Assistant, es donde indicaremos que salte la alarma al detectar que se abre una puerta, ventana o detecte presencia en una instancia de la vivienda. Como también la acción a realizar al lanzar la alarma.

Automatización de Alarma en modo sin presencia

Domotizar la casa, cuando la alarma está armada en modo sin presencia en la casa amerd_away, al abrir una puerta, ventana o detectar movimiento que inicie la alarma

- alias: 'Alarm onDetectSensor hasArmedAway alarmTrigger'
  trigger:
    - platform: state
      entity_id: group.has_door_opened
      to: 'on'
    - platform: state
      entity_id: group.has_motion_detected
      to: 'on'
    - platform: state
      entity_id: group.has_windows_opened
      to: 'on'          
  condition:
    - condition: state
      entity_id: alarm_control_panel.home_alarm
      state: armed_away
  action:
    - service: alarm_control_panel.alarm_trigger
      entity_id: alarm_control_panel.home_alarm

Automatización de Alarma en modo en casa

Cuando la alarma está armada en modo en casa (armed_home) solo debe iniciar la alarma en caso de apertura de puertas o ventanas, ya que estando en casa se debe permitir moverse por las instancias, los sensores de detección de movimiento se excluyen

- alias: 'Alarm onDetectSensor hasArmedHome alarmTrigger'
  trigger:
    - platform: state
      entity_id: group.has_door_opened
      to: 'on'
    - platform: state
      entity_id: group.has_windows_opened
      to: 'on'          
  condition:
    - condition: state
      entity_id: alarm_control_panel.home_alarm
      state: armed_home
  action:
    - service: alarm_control_panel.alarm_trigger
      entity_id: alarm_control_panel.home_alarm

Comprobar sensores previamente a la activación de la alarma

Con las automatizaciones anteriores solo se lanza la alarma cuando la alarma está activada y un sensor ha cambiado de estado de cerrado a abierto.

Pero puede darse el caso que durante la activación de la alarma dejamos la puerta o una ventana abierta

#Al al ponerse en armed_away comprobar si la puerta está abierta lanzar alarma
- alias: 'Alarm onSetAlarmMode hasSensorsOn alarmTrigger'
  trigger:
    - platform: state
      entity_id: alarm_control_panel.home_alarm
      to: armed_away
    - platform: state
      entity_id: alarm_control_panel.home_alarm
      to: armed_home
  condition:
    condition: or
    conditions:
      - condition: state
        entity_id: group.has_door_opened
        state: 'on'
      - condition: state
        entity_id: group.has_windows_opened
        state: 'on'
  action:
    - service: alarm_control_panel.alarm_trigger
      entity_id: alarm_control_panel.home_alarm