Viva,
A versão inicial do “yet another take on alarm system” não teve mais desenvolvimento, mas dada a popularidade da mesma, foi criado um fork que se encontra aqui:
Tive alguma luta não tanto pela instalação, mas pelo conceito de como configurar e depois como ativar o alarme ou fazer acções quando houvesse um evento. Este custom-alarm é fantástico e vão perceber isso pela facilidade de configuração do mesmo, especialmente na escolha dos sensores em âmbito nos vários cenários(e.g. Home ou Away).
Acredito que há outras formas de fazer as automações e muita margem para melhoria tanto no que tenho feito como no tutorial, portanto se me faltar algo, avisem pf!
Instruções de instalação:
- Download da última versão no repositório acima
- Copiar o alarm.yaml para a raiz do HA
- Copiar a pasta bwalarm para a pasta custom_components
No configuration.yaml inserir
alarm_control_panel: !include alarm.yaml
Nota: Garantir que não existem outros componentes de alarme que possam causar conflitos
Depois de um restart, já devem conseguir aceder via http://vosso_url/alarm
O módulo é 100% customizável por via de interface, pelo que não precisam de editar o ficheiro “alarm.yaml”. Podem fazer tudo via interface e as alteraçõe serão escritas neste ficheiro.
O componente tem pré-definidas 3 zonas (Away, Home e Perimeter). Eu estou a usar apenas Away e Home e são estas que irei partilhar aqui no tutorial para simplificar.
**Instruções de configuração do componente**
SENSORES
É tão simples como aceder ao link "Sensores, marcado a vermelho e para cada uma das zonas, escolher os sensores que queremos que sirvam como trigger para o alarme. Por exemplo, para o “Home Mode”, apenas escolhi sensores de exterior. Também é aqui que podem escolher como “Delayed”, o que significa que é dado um periodo de X segundos até o alarme disparar. Útil para garagem/porta de entrada.
CAMERAS
Caso pretendam ter as cameras neste componente basta indicar “enable Cameras Panel” e selecionar as cameras que estão configuradas no HA.
Outras configurações
Devem activar o MQTT e devem validar configurações genéricas na parte “Alarm” (e…g alterar pass de administração, panic code, …) e na secção design também dá para fazer modificações interessantes.
Depois da configuração, devem ficar com 2 botões apenas:
A componente do Alarm ficou finalizada com as instruções acima, mas agora é importante perceber ao certo como ativar o alarme, e o que fazer quando o alarme dispara. Diria que esta é a parte que está menos clara na documentação do módulo, portanto daqui para a frente vou mostrar o que foi a minha integração, apenas como exemplo e não como regra de melhoras práticas
Começando pelo resultado final. O objetivo é ter o seguinte:
Através do menu acima podemos definir uma hora para ligar o alarme em “home mode”, mas nos input_booleans abaixo podemos ativar de imediato o modo “AWAY” ou “HOME”
Configuração necessária:
Inputs que permitem a qualquer momento armar o alarme em cada zona:
input_boolean:
alarme_exterior:
name: Alarme Armado - HOME
initial: off
alarme_total:
name: Alarme Armado - AWAY
initial: off
Automações que vão permitir ligar o alarme à hora que indiquei no interface. no exemplo acima, por exemplo indica que o alarme exterior irá ligar Às 01:45:
- alias: 'Activate perimeter alarm on a specific time'
trigger:
platform: time_pattern
minutes: '/1'
seconds: '0'
initial_state: 'on'
condition:
condition: and
conditions:
- condition: template
value_template: '{{ now().strftime("%H:%M") == states.sensor.alarm_time.state }}'
action:
service: homeassistant.turn_on
entity_id: input_boolean.alarme_exterior
Interação com o componente de alarme. Sempre que clicar no input_boolean definido acima, vai ativar o alarme na zona pretendida. Importante assegurar que passam o código do alarme no campo Data, onde eu tenho “1234”.
Automação:
- alias: 'Ativa alarme automatico - HOME'
trigger:
platform: state
entity_id: input_boolean.alarme_exterior
to: 'on'
action:
- service: alarm_control_panel.alarm_arm_home
data: {"entity_id":"alarm_control_panel.house","code":"1234"}
- alias: 'Ativa alarme automatico - TOTAL'
trigger:
platform: state
entity_id: input_boolean.alarme_total
to: 'on'
action:
- service: alarm_control_panel.alarm_arm_away
data: {"entity_id":"alarm_control_panel.house","code":"1234"}
Automação similar, mas que desativa o alarme:
- alias: 'Desativa auto alarm - TOTAL'
trigger:
platform: state
entity_id: input_boolean.alarme_exterior
to: 'off'
action:
- service: alarm_control_panel.alarm_disarm
data: {"entity_id":"alarm_control_panel.house","code":"1234"}
- alias: 'Desativa auto alarm - HOME'
trigger:
platform: state
entity_id: input_boolean.alarme_total
to: 'off'
action:
- service: alarm_control_panel.alarm_disarm
data: {"entity_id":"alarm_control_panel.house","code":"1234"}
O que fazer quando o alarme dispara?
No meu caso, como pretendo ter acções diferentes caso esteja em casa ou fora de casa, defini duas automações que têm triggers diferentes e executam depois diferentes scripts.
- alias: Alarm has been triggered while away
trigger:
platform: state
entity_id: alarm_control_panel.house
from: 'armed_away'
to: 'triggered'
action:
- service: script.turn_on
entity_id: script.alarm_trigger_away
- alias: Alarm has been triggered while home
trigger:
platform: state
entity_id: alarm_control_panel.house
from: 'armed_home'
to: 'triggered'
action:
- service: script.turn_on
entity_id: script.alarm_trigger_home
Para não tornar o post ainda mais longo, fica o exemplo do script de trigger_away que é o mais completo.
Este script agora deve ser adaptado à vossa medida. Aqui uso a Alexa para fazer “barulho”, a gateway xiaomi, acendo luzes e envio notificação para telemóvel. A parte mais trabalhosa e que aconselho usarem foi encontrar qual o sensor que causou o disparo do alarme que é o código que conseguem ver, por exemlo no serviço telegram_bot_send_messagem.
alarm_trigger_away:
sequence:
- service: media_player.alexa_tts
entity_id: media_player.my_echo_dot_id_echo_dot
data_template:
message: >
Alarm has been triggered... Alarm has been triggered.. Alarm has been triggered..
- service: xiaomi_aqara.play_ringtone
data:
gw_mac: F00000000000
ringtone_id: 1
ringtone_vol: 10
- service: homeassistant.turn_on
entity_id: group.all_lights
- service: telegram_bot.send_message
data:
title: "Alarme ativado - AWAY {{ as_timestamp (now()) | timestamp_custom('%d/%b/%Y %T') }}"
message: Sensores - {{ states[states.alarm_control_panel.house.attributes.changed_by.split(".")[0]][ states.alarm_control_panel.house.attributes.changed_by.split(".")[1]].name }}
- delay: 00:02:00
- service: homeassistant.turn_off
entity_id: group.all_lights
Quem tiver Android, pode usar uma aplicação específica que ativa o alarme por MQTT.
No caso de IOS, tenho integração com o HomeKit e ele reconhece logo o alarme e coloca estas opções disponíveis e também alerta sempre que ativo/desativo o alarme e avisa também quando o mesmo dispara: