Home Assistant

Home Assistant: ⚠️ Alert! – Báo động!

Hass Flooding Home Alert

Báo động bằng cách liên tục gửi tin nhắn/thông báo đến điện thoại, máy tính

12 phút để đọc hết nội dung

Trước đây, ta đã thiết lập một số platform thông báo từ Hass đến thiết bị cá nhân (SmartPhone, máy tính bảng v.v..), bên cạnh đó ta cũng cài đặt một số automation để Hass tự động gửi thông báo khi một sự kiện hay điều kiện xảy ra. Thông thường chỉ thông báo là đủ để bạn và các thành viên khác nắm bắt được tình hình và phản ứng phù hợp, tuy nhiên, trong một số tình huống khẩn cấp/đặc biệt thì thông báo lặp đi lặp lại là cần thiết để đảm bảo thu hút được sự chú ý của người nhận.
Các tình huống đó có thể là:

  1. Liên quan đến cháy, rò rỉ khí độc, khí dễ cháy, ngập nước
  2. Liên quan đến an ninh như cửa không được đóng lại vào buổi đêm, một camera giám sát ở vị trí quan trọng bị mất tín hiệu v.v..
  3. Một thiết bị điện bị lỗi khi hoạt động, có thể dẫn đến hỏng thiết bị hoặc chập cháy
  4. và nhiều tình huống khác như một thiết bị sắp hết pin, nhiệt độ trong phòng liên tục cao quá mức mong muốn v.v..
! Cảnh báo

Với các tình huống khẩn cấp như hoả hoạn, bạn không bao giờ được sử dụng Home Assistant làm hệ thống phát hiện, cảnh báo và phản ứng chínhduy nhất!

Một hệ thống báo cháy, báo khói độc lập hoặc kết hợp được chứng nhận các tiêu chuẩn an toàn bởi các tổ chức phòng cháy chữa cháy có thẩm quyền là bắt buộc.
Bạn phải tuân theo quy định và hướng dẫn sở tại về phòng cháy chữa cháy hay các tình huống thảm hoạ khác!

Home Assistant có thể tự động phản ứng với các tình huống này (nếu được cấu hình để làm việc đó), trong một số trường hợp, sự can thiệp của người dùng là không thể tránh được. Bên cạnh đó, là người quản trị hệ thống Hass, bạn chắc chắn muốn được thông báo về sự cố hay tình huống bất thường ngay khi nó xảy ra và chừng nào nó chưa được giải quyết.

Cách 🚨 Alert – báo động trong Home Assistant hoạt động gần tương tự như báo khói cổ điển: khi tình huống xảy ra, Home Assistant sẽ liên tục gửi thông báo đến các thiết bị định trước cho đến khi nào tình huống chấm dứt để đảm bảo tối đa hoá khả năng bạn nhận được và đọc được thông báo.

Cấu hình Alert trong Hass

Cấu hình mẫu của integration Alert trong Hass như sau:

alert:
  garage_door:
    name: Garage is open
    entity_id: binary_sensor.garage_door
    state: 'on'
    repeat: 10
    can_acknowledge: true
    skip_first: true
    notifiers:
      - telegram_me
      - mobile_app_konnected_phone
    title: 'Cửa garage Alert'
    done_message: 'Cửa garage đã đóng'

Trong đó:

  • garage_door: tên – entity của alert được cấu hình
  • name: tên của alert, cũng chính là nội dung – message thông báo được gửi đi
  • entity_id:state: là entity và trạng thái sẽ kích hoạt alert
  • repeat: số phút giữa các lần gửi thông báo lặp lại khi alert vẫn đang kích hoạt. Xem thêm repeat ở dưới.
  • notifier: các service – dịch vụ dưới domain notify được sử dụng để gửi thông báo. Xem thêm notifier ở dưới.

Các tuỳ chọn khác:

  • skip_first: bỏ qua thông báo đầu tiên khi điều kiện kích hoạt vừa xảy ra
  • can_acknowledge: cho phép dừng việc tiếp tục gửi thông báo bằng cách turn_off alert. Việc dừng chỉ có tác dụng trong lần kích hoạt này.
  • done_message: nội dung thông báo gửi đi khi alert ngừng kích hoạt (hỗ trợ templating)
  • title: tiêu đề của thông báo từ alert, một số notifier như mobile_app hỗ trợ dữ liệu này (hỗ trợ templating)
Giải thích giá trị các tuỳ chọn trong ví dụ trên và cách hoạt động

Trong ví dụ trên ta kiểm tra cảm biến binary_sensor.garage_door – cửa gara, nếu ở trạng thái state: ‘on’ – mở thì alert sẽ được kích hoạt. Tuy nhiên, cửa gara hoàn toàn có thể được mở để xe ra vào, khoảng thời gian thông thường ở đây là 10 phút. Tuỳ chọn skip_first: true sẽ ngăn Hass gửi thông báo ngay khi cửa mở.

Sau 10 phút, nếu cửa gara vẫn mở, thông báo sẽ được gửi đi và lặp lại mỗi 10 phút. Alert sẽ ngừng (idle) cho đến khi cảm biến chuyển sang trạng thái khác ‘on’ (tức ở trạng thái ‘off’ hay ‘unknown’).

Tuỳ chọn repeat

Tuỳ chọn repeat có thể được cấu hình ở dạng danh sách như sau:

alert:
  garage_door:
    name: Basement Flood
    skip_first: false
    repeat:
    - 10
    - 20
    - 60

Khi này, thông báo thứ 2 sẽ được gửi đi sau thông báo đầu tiên 10 phút. Sau đó 20 phút, thông báo thứ 3 sẽ được gửi đi. Sau đó, mỗi 60 phút (1 giờ), thông báo sẽ được gửi.

Notifier

Notifier chỉ hỗ trợ các dịch vụ thuộc integration notify. Bạn có thể tìm thấy các dịch vụ này trong mục Công cụ nhà phát triển > Dịch vụ. Ví dụ, nếu dịch vụ thông báo đến ứng dụng Home Assistant trên điện thoại bạn là notify.mobile_app_me thì khai báo trong notifier sẽ là mobile_app_me.

Với các dịch vụ gửi thông báo có service riêng như telegram.send_message, bạn cần khai báo thêm chúng vào notify để sử dụng được. Ví dụ:

notify:
  - name: telegram_konnected
    platform: telegram
    chat_id:
    - 333425079
    - 332325023
    - 316388657

Sau đó khai báo trong danh sách notifier với tên telegram_konnected.

Alert với các điều kiện phức tạp

Căn bản thì integration alert chỉ cho phép kích hoạt khi entity theo dõi có state đúng với khai báo và không hỗ trợ template. Vì vậy, để kích hoạt alert với các điều kiện phức tạp hơn như kích hoạt với nhiều entity hay với state tuỳ chỉnh, bạn có thể sử dụng alert kích hoạt bởi các template sensor hoặc input.___ như các ví dụ bên dưới.

Alert khi một trong các cửa đang mở

Ví dụ bạn có một số cảm biến đóng mở cửa dạng binary_sensor với state: on là cửa đang mở. Các binary_sensor này đều có thuộc tính attributes.device_class là ‘door’.

Chúng tôi khuyến khích các bạn khai báo device_class đúng với loại thiết bị mà sensor được gắn vào để dễ dàng quản lý, xem thêm device_class. Một số sensor được tự động nhận dạng sẽ có sẵn thuộc tính này do thiết bị/addon như zigbee2mqtt khai báo sẵn, nếu không có, bạn có thể tự đặt trong cấu hình sensor hoặc mục Customize.

Trước tiên ta cần tạo ra thêm một sensor để hiển thị trạng thái ‘on’ nếu có bất cứ cửa nào trong số này đang mở trong khoảng thời gian từ 23 giờ đến 5 giờ sáng. Cấu hình như bên dưới:

sensor:
  - platform: uptime
    unit_of_measurement: minutes
  - platform: template
    sensors:
      door_stays_open_after_23h:
        friendly_name: 'Cửa mở sau 23g và trước 6g'
        entity_id: sensor.uptime
        value_template: >
          {% set open_door = states.binary_sensor|selectattr('state','eq','on')|selectattr('attributes.device_class','eq','door')|list|count %}
          {% if open_door == 0 -%}
          off
          {% elif now().hour < 6 or now().hour > 22 -%}
          on
          {% endif %}

Trong đó:

  • {% set open_door = states.binary_sensor|selectattr('state','eq','on')|selectattr('attributes.device_class','eq','door')|list|count %} gán giá trị cho biến open_door bằng số lượng các cảm biến có state là ‘on’ và thuộc tính attributes.device_class là ‘door’.
  • now().hour < 6 or now().hour > 22 giờ hiện tại nằm giữa khoảng 23 đến 5 giờ.

Cấu hình alert mẫu:

alert:
  open_door_after_23h:
    name: Cửa đang mở sau 23 giờ
    done_message: 'Tất cả cửa đã được đóng'
    entity_id: sensor.door_stays_open_after_23h
    state: 'on'
    repeat:
    - 10
    - 20
    can_acknowledge: true
    skip_first: false
    title: >
      ⚠️ 
      {%- set open_door = states.binary_sensor|selectattr('state','eq','on')|selectattr('attributes.device_class','eq','door')|list -%}
      {% for door in open_door -%}
      {{door.name}}|
      {% endfor %}
    notifiers:
      - telegram_me
      - mobile_app_konnected_phone
Hass iOS Alert

Thông báo đến điện thoại khi alert được kích hoạt.

Hass Lovelace Alert

Bạn cũng có thể gửi một thông báo dạng actionable để tạm vô hiệu hoá Alert nếu đang mở cửa có chủ đích. Hoặc đơn giản hơn là đưa Alert lên giao diện Web để có thể tạm thời vô hiệu hoá nếu muốn.

Alert khi cửa sổ vẫn mở sau khi điều hoà không khí đã hoạt động

Trạng thái của điều hoà sẽ được xác định bởi trạng thái của switch.air_conditioner. Trạng thái mở của cửa được xác định bởi cảm biến binary_sensor.window.

Cấu hình binary_sensor để kích hoạt alert như sau:

binary_sensor:
  - platform: template
    sensors:
      window_and_air_conditioner:
        friendly_name: Cửa sổ vẫn mở khi điều hoà hoạt động
        value_template: '{{ is_state(''binary_sensor.window'',''on'') and is_state(''switch.air_conditioner'',''on'') }}'

Cấu hình Alert tương ứng:

alert:
  window_open_while_ac_on:
    name: Cửa sổ vẫn đang mở khi điều hoà hoạt động
    done_message: 'Cửa sổ đã được đóng hoặc điều hoà đã tắt'
    entity_id: binary_sensor.window_and_air_conditioner
    state: 'on'
    repeat:
    - 10
    - 30
    can_acknowledge: true
    skip_first: true
    title: '⚠️ Điều hoà'
    notifiers:
      - telegram_me
      - mobile_app_konnected_phone
! Lưu ý về quản lý cấu hình

Tương tự như các integration được cấu hình bằng YAML khác, nếu bạn có nhiều alert, tức phần alert rất dài, hãy chuyển nó sang file riêng (ví dụ alerts.yaml) rồi include – gộp nó vào trong file cấu hình chính configuration.yaml bằng cách khai báo:

alert: !include alerts.yaml

Cảm ơn bạn đã xem bài viết này!

konnectED Team.

Lên Đầu
  • Đăng ký
Bạn quên mất mật khẩu? Vui lòng nhập tên đăng nhập và địa chỉ email đã đăng ký. Bạn sẽ nhận được liên kết tạo mật khẩu mới qua email (bạn nhớ kiểm tra hộp spam trong trường hợp email đi lạc).