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à:
- Liên quan đến cháy, rò rỉ khí độc, khí dễ cháy, ngập nước
- 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..
- 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
- 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ính và duy 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!
Dù 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ìnhname:
tên của alert, cũng chính là nội dung – message thông báo được gửi đientity_id:
vàstate:
là entity và trạng thái sẽ kích hoạt alertrepeat:
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 racan_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
Thông báo đến điện thoại khi alert được kích hoạt.
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
Nguồn/Tham khảo:
Cảm ơn bạn đã xem bài viết này!
konnectED Team.