# HA Alarme - Yet another take on alarm system (fork solução original)

**URL:** <https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650>\
**Category:** Tutoriais\
**Created:** [24 Junho , 2019 23:29 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650 "2019-06-24T23:29:29Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![mfrodrigues](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/m/e480ec/32.png) [@mfrodrigues](https://forum.cpha.pt/u/mfrodrigues)\
**Post date:** [24 Junho , 2019 23:29 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/1 "2019-06-24T23:29:29Z")

</div>

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:

[https://github.com/akasma74/Hass-Custom-Alarm](https://github.com/akasma74/Hass-Custom-Alarm)

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

```auto
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**

 ![image](https://forum.cpha.pt/uploads/default/original/2X/e/e4ec6963883b319d572b0386314e1260b1e8a139.png)

É 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**

 ![image](https://forum.cpha.pt/uploads/default/original/2X/0/04376c17952e3e8acd75559f4971e8c4eba4952b.png)

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:

 ![image](https://forum.cpha.pt/uploads/default/original/2X/d/d415efeb8c736e2949ff9335dc85e74f3c10b715.png)

> 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:

 ![image](https://forum.cpha.pt/uploads/default/original/2X/3/3d1d04b2a0ad802ebef18bb49a2fd84b34d8d4a1.png)

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:

```auto
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:

```auto
- 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:

```auto
- 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:

```auto
- 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.

```auto
- 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.

```auto
   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:  
[center]

 ![image](https://forum.cpha.pt/uploads/default/original/2X/b/ba86c1cf8f8c521685604385f75d9a074d64c268.jpeg)[/center]

---

<div class="post-metadata">

**Author:** ![j\_assuncao](https://forum.cpha.pt/user_avatar/forum.cpha.pt/j_assuncao/32/3_2.png) [@j\_assuncao](https://forum.cpha.pt/u/j_assuncao)\
**Post date:** [25 Junho , 2019 07:37 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/2 "2019-06-25T07:37:28Z")

</div>

Excelente tutorial, obrigado @mfrodrigues!

---

<div class="post-metadata">

**Author:** ![maxcalavera](https://forum.cpha.pt/user_avatar/forum.cpha.pt/maxcalavera/32/1039_2.png) [@maxcalavera](https://forum.cpha.pt/u/maxcalavera)\
**Post date:** [25 Junho , 2019 10:34 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/3 "2019-06-25T10:34:13Z")

</div>

Obrigado pela partilha. Vai ser útil quando acabar de colocar os sensores em casa.

---

<div class="post-metadata">

**Author:** ![RodolfoVieira](https://forum.cpha.pt/user_avatar/forum.cpha.pt/rodolfovieira/32/14633_2.png) [@RodolfoVieira](https://forum.cpha.pt/u/RodolfoVieira)\
**Post date:** [25 Junho , 2019 10:38 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/4 "2019-06-25T10:38:39Z")

</div>

Bom trabalho 💪⭐⭐⭐⭐⭐.  
Top

---

<div class="post-metadata">

**Author:** ![Luis\_Belo](https://forum.cpha.pt/user_avatar/forum.cpha.pt/luis_belo/32/28_2.png) [@Luis\_Belo](https://forum.cpha.pt/u/Luis_Belo)\
**Post date:** [25 Junho , 2019 13:55 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/5 "2019-06-25T13:55:40Z")

</div>

Excelente… Mais uma dor de cabeça para mim 🤣🤣🤣🤣  
Obrigado

---

<div class="post-metadata">

**Author:** ![Luis\_Belo](https://forum.cpha.pt/user_avatar/forum.cpha.pt/luis_belo/32/28_2.png) [@Luis\_Belo](https://forum.cpha.pt/u/Luis_Belo)\
**Post date:** [25 Junho , 2019 18:40 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/6 "2019-06-25T18:40:44Z")

</div>

@mfrodrigues,

Já ando de volta disto e após fazer os passos iniciais…

 ![Nova%20Imagem%20de%20Mapa%20de%20Bits](https://forum.cpha.pt/uploads/default/original/2X/5/5b509c7929f275c117947a71a988071bbc1395a9.jpeg)

O que achas que pode ser?  
Obrigado.

---

<div class="post-metadata">

**Author:** ![mfrodrigues](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/m/e480ec/32.png) [@mfrodrigues](https://forum.cpha.pt/u/mfrodrigues)\
**Post date:** [25 Junho , 2019 18:59 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/7 "2019-06-25T18:59:34Z")

</div>

> [@Luis\_Belo](#):
>
> O que achas que pode ser?

Infelizmente o erro assim é muito genérico, mas felizmente o output é colocado no log do home assistant. Podes colocar aqui o erro em concreto?

Dentro da pasta /custom\_components/bwalarm tens o ficheiro alarm\_control\_panel.py, certo?

E o alarm.yaml está na raiz, ao lado da pasta custom\_components certo?

E na configuração do home-assistant tens apenas um “alarm\_control\_panel” definido, certo?

---

<div class="post-metadata">

**Author:** ![Luis\_Belo](https://forum.cpha.pt/user_avatar/forum.cpha.pt/luis_belo/32/28_2.png) [@Luis\_Belo](https://forum.cpha.pt/u/Luis_Belo)\
**Post date:** [25 Junho , 2019 20:04 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/8 "2019-06-25T20:04:36Z")

</div>

Afirmativo todas as questões…

Vamos a LOGs:

```auto
2019-06-25 21:01:08 ERROR (MainThread) [homeassistant.components.alarm_control_panel] Error while setting up platform bwalarm
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 126, in _async_setup_platform
    SLOW_SETUP_MAX_WAIT)
  File "/usr/local/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/config/custom_components/bwalarm/alarm_control_panel.py", line 410, in async_setup_platform
    alarm = BWAlarm(hass, config, mqtt)
  File "/config/custom_components/bwalarm/alarm_control_panel.py", line 431, in __init__
    self.init_variables()
  File "/config/custom_components/bwalarm/alarm_control_panel.py", line 570, in init_variables
    arm_states_dict = self._config[CONF_STATES]
KeyError: 'states'

```

---

<div class="post-metadata">

**Author:** ![mfrodrigues](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/m/e480ec/32.png) [@mfrodrigues](https://forum.cpha.pt/u/mfrodrigues)\
**Post date:** [25 Junho , 2019 20:31 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/9 "2019-06-25T20:31:33Z")

</div>

Curioso que eu não tenho este erro, mas é um issue conhecido e já existe resolução no branch de devel.

Podes ver aqui o issue e resolução do mesmo: (na prática é substituir o componente por uma versão mais recente).

[https://github.com/akasma74/Hass-Custom-Alarm/issues/16](https://github.com/akasma74/Hass-Custom-Alarm/issues/16)

> [@Luis\_Belo](#):
>
> KeyError: ‘states’

---

<div class="post-metadata">

**Author:** ![Luis\_Belo](https://forum.cpha.pt/user_avatar/forum.cpha.pt/luis_belo/32/28_2.png) [@Luis\_Belo](https://forum.cpha.pt/u/Luis_Belo)\
**Post date:** [25 Junho , 2019 21:02 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/10 "2019-06-25T21:02:29Z")

</div>

Igual… Actualizei para este: [https://github.com/akasma74/Hass-Custom-Alarm/releases/tag/v1.6.0b](https://github.com/akasma74/Hass-Custom-Alarm/releases/tag/v1.6.0b)

Fiz clear cache e

```auto
2019-06-25 22:01:06 ERROR (MainThread) [homeassistant.components.alarm_control_panel] Error while setting up platform bwalarm
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 126, in _async_setup_platform
    SLOW_SETUP_MAX_WAIT)
  File "/usr/local/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/config/custom_components/bwalarm/alarm_control_panel.py", line 410, in async_setup_platform
    alarm = BWAlarm(hass, config, mqtt)
  File "/config/custom_components/bwalarm/alarm_control_panel.py", line 431, in __init__
    self.init_variables()
  File "/config/custom_components/bwalarm/alarm_control_panel.py", line 570, in init_variables
    arm_states_dict = self._config[CONF_STATES]
KeyError: 'states'

```

---

<div class="post-metadata">

**Author:** ![mfrodrigues](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/m/e480ec/32.png) [@mfrodrigues](https://forum.cpha.pt/u/mfrodrigues)\
**Post date:** [25 Junho , 2019 21:17 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/11 "2019-06-25T21:17:25Z")

</div>

Esse é a versão 1.6.0b que penso ter 3 dias, mas o ficheiro que ele refere no issue é mais recente.. Penso que tem apenas 2 dias.

E efetivamente comparei os dois e são ligeiramente diferentes e neste segundo que te envio é onde ele lida precisamente com a falta dessa chave de “states” que está a originar o erro.

[https://raw.githubusercontent.com/akasma74/Hass-Custom-Alarm/dev/custom\_components/bwalarm/alarm\_control\_panel.py](https://raw.githubusercontent.com/akasma74/Hass-Custom-Alarm/dev/custom_components/bwalarm/alarm_control_panel.py)

![image](https://forum.cpha.pt/uploads/default/original/2X/2/258256d57c346fdaedf5bda01b3dc01f1f34389d.png)

---

<div class="post-metadata">

**Author:** ![Luis\_Belo](https://forum.cpha.pt/user_avatar/forum.cpha.pt/luis_belo/32/28_2.png) [@Luis\_Belo](https://forum.cpha.pt/u/Luis_Belo)\
**Post date:** [26 Junho , 2019 05:21 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/12 "2019-06-26T05:21:28Z")

</div>

Já deu… Obrigado.  
Agora há está questão… Quando seleciono os sensores… Ele não os fixa.

[https://dl.dropboxusercontent.com/s/qa4epqm57tcrmmd/ScreenRec\_20190626\_061901.mp4?dl=0](https://dl.dropboxusercontent.com/s/qa4epqm57tcrmmd/ScreenRec_20190626_061901.mp4?dl=0)

---

<div class="post-metadata">

**Author:** ![mfrodrigues](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/m/e480ec/32.png) [@mfrodrigues](https://forum.cpha.pt/u/mfrodrigues)\
**Post date:** [26 Junho , 2019 06:15 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/13 "2019-06-26T06:15:30Z")

</div>

Não consigo ver o video mas percebo o que dizes. Só me ocorre que possa ser o javascript.

Coloca pf isto no configuration.yaml

```auto
frontend:
  javascript_version: latest

```

Ele guarda tudo no alarm.yaml. Estás a conseguir guardar outras coisas tipo configuracoes e afins e é “apenas” os sensores que nao guarda?

No browser se abrires o log de javascript sabes se aparece algum erro?

E no log do HA surge algum erro?

---

<div class="post-metadata">

**Author:** ![mfrodrigues](https://forum.cpha.pt/letter_avatar_proxy/v4/letter/m/e480ec/32.png) [@mfrodrigues](https://forum.cpha.pt/u/mfrodrigues)\
**Post date:** [28 Junho , 2019 19:22 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/14 "2019-06-28T19:22:32Z")

</div>

@Luis_Belo, este problema é exactamente igual ao que um user reportou aqui e parece ter a ver com cache.

[https://github.com/akasma74/Hass-Custom-Alarm/issues/2](https://github.com/akasma74/Hass-Custom-Alarm/issues/2)

O setup pode não ser fácil, mas depois de ficar OK vale a pena 🙂

---

<div class="post-metadata">

**Author:** ![rukako](https://forum.cpha.pt/user_avatar/forum.cpha.pt/rukako/32/4063_2.png) [@rukako](https://forum.cpha.pt/u/rukako)\
**Post date:** [3 Fevereiro , 2020 17:02 UTC](https://forum.cpha.pt/t/ha-alarme-yet-another-take-on-alarm-system-fork-solucao-original/2650/15 "2020-02-03T17:02:11Z")

</div>

@mfrodrigues como e que consegues defenir o tempo para activar no painel final?
