Como criar uma listagem com as últimas notificações enviadas para os utilizadores

Alguns de vocês talvez já tenham pensado nisto mas não sabiam como o fazer. Mostrar as últimas notificações no frontend do HA pode ser útil para saber se uma determinada automação funcionou ou não e a que horas.

O segredo está nos componente file e command_line, e também no comando tail.

Cria um ficheiro de texto na raiz da configuração (na mesma pasta que o ficheiro configuration.yaml) com o nome notifications.txt. De seguida adiciona o seguinte na entrada notify:

notify:
  - name: Save to File
    platform: file
    filename: notifications.txt

Depois é necessário criar as entradas que vão ler as notificações quando elas foram gravadas. Na entrada sensor: adiciona o seguinte:

sensor:
#### 10
  - platform: command_line
    name: "notificação 10"
    command: "tail -n 10 /config/notifications.txt | sed '2,10d' $1"
#### 09
  - platform: command_line
    name: "notificação 09"
    command: "tail -n 9 /config/notifications.txt | sed '2,9d' $1"
#### 08
  - platform: command_line
    name: "notificação 08"
    command: "tail -n 8 /config/notifications.txt | sed '2,8d' $1"
#### 07
  - platform: command_line
    name: "notificação 7"
    command: "tail -n 07 /config/notifications.txt | sed '2,7d' $1"
#### 06
  - platform: command_line
    name: "notificação 06"
    command: "tail -n 6 /config/notifications.txt | sed '2,6d' $1"
#### 05
  - platform: command_line
    name: "notificação 05"
    command: "tail -n 5 /config/notifications.txt | sed '2,5d' $1"
#### 04
  - platform: command_line
    name: "notificação 04"
    command: "tail -n 4 /config/notifications.txt | sed '2,4d' $1"
#### 03
  - platform: command_line
    name: "notificação 03"
    command: "tail -n 3 /config/notifications.txt | sed '2,3d' $1"
#### 02
  - platform: command_line
    name: "notificação 02"
    command: "tail -n 2 /config/notifications.txt | sed '2,2d' $1"
#### 01
  - platform: command_line
    name: "notificação 01"
    command: "tail -n 1 /config/notifications.txt | sed '2,1d' $1"

Cria um grupo para juntar todas as entradas num só cartão.

group:
#### NOTIFICATION LIST
  grp_last_notifications:
    name: Últimas Notificações
    control: hidden
    entities:
      - sensor.notificacao_01
      - sensor.notificacao_02
      - sensor.notificacao_03
      - sensor.notificacao_04
      - sensor.notificacao_05
      - sensor.notificacao_06
      - sensor.notificacao_07
      - sensor.notificacao_08
      - sensor.notificacao_09
      - sensor.notificacao_10

E depois adiciona este grupo a uma página nova (ou a outra que queiras):

#### NOTIFICAÇÕES
tab_notificacoes:
  name: Notificações
  view: yes
  icon: mdi:bell-ring
  entities:
    - group.grp_last_notifications

Para que fique tudo mais bonito, adiciona estas entradas ao ficheiro customize.yaml

 customize:
#### LISTA DE NOTIFICAÇÕES
  sensor.notificacao_01:
    icon: mdi:bell-ring
    friendly_name: '01'
  sensor.notificacao_02:
    icon: mdi:bell
    friendly_name: '02'
  sensor.notificacao_03:
    icon: mdi:bell
    friendly_name: '03'
  sensor.notificacao_04:
    icon: mdi:bell
    friendly_name: '04'
  sensor.notificacao_05:
    icon: mdi:bell
    friendly_name: '05'
  sensor.notificacao_06:
    icon: mdi:bell
    friendly_name: '06'
  sensor.notificacao_07:
    icon: mdi:bell
    friendly_name: '07'
  sensor.notificacao_08:
    icon: mdi:bell
    friendly_name: '08'
  sensor.notificacao_09:
    icon: mdi:bell
    friendly_name: '09'
  sensor.notificacao_10:
    icon: mdi:bell
    friendly_name: '10'

Por último, e muito importante, temos que dizer ao sistema o que queremos gravar no ficheiro. Para isso deverás adicionar este script:

#### NOTIFY SAVE TO FILE
notify_save_to_file:
  sequence:
    - service: notify.save_to_file
      data_template:
        message: '{{ message }}'

E adicionar uma nova acção às automações que queres que fiquem registadas no ficheiro. Por exemplo:

...
action:
  - service: mqtt.publish
    data_template:
      topic: 'home/indoor/sensor/MAID-EM-01/kwh_at_1st_day_month'
      retain: true
      payload_template: '{{ states.sensor.consumo_acumulado_kwh.state }}'
  - service: mqtt.publish
    data_template:
      topic: 'home/indoor/sensor/MAID-EM-01/kwh_at_1st_day_month_time'
      retain: true
      payload_template: '{{ now() }}'
  - service: script.notify_save_to_file
    data:
      message: '{{ as_timestamp (now()) | timestamp_custom("%d/%b/%Y %T") }} - kWh Mensais - GRAVADO'

Eu utilizo a função {{ as_timestamp (now()) | timestamp_custom("%d/%b/%Y %T") }} para que fique registada a data e a hora da ocorrência.

O resultado final é este:

8 Likes

2 mensagens foram unidas em um tópico existente: Como criar uma lista com as últimas notificações enviadas para os utilizadores

Para comentar este tópico, por favor utilizem o tópico abaixo


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade