[HASS] Webhook

Trong thí dụ này, chúng ta kích hoạt automation bằng Webhook.

Với các ứng dụng khác (eg. Telegram), webhook là cơ chế ứng dụng gọi đến một trang web đã được thiết kế trước để lấy data trả về từ trang web, khi một sự kiện nào đó xảy ra.

Với Hass, địa chỉ trang web đó là

https://xxxx.duckdns.org:8123/api/webhook/webhook_id

Trong đó, xxxx.duckdns.org là domain trang Hass cá nhân và webhook_id là giá trị tự đặt ra khi khai báo webhook trong Hass

Điểm khác biệt là chúng ta không thể thiết kế trang webhook mà chỉ có thể khai báo trong configuration.yaml

Thí dụ sau đây phát nhạc trên loa Google Home khi trang webhook được mở (trong khoảng 23h đến 4h):

  alias: Music Alert
  trigger:
    platform: webhook
    webhook_id: music_alert
  condition:
    condition: time
    after: '23:00'
    before: '4:00'
  action:
    service: media_player.play_media
    data:
      entity_id: media_player.office_speaker
      media_content_id: url_music.mp3
      media_content_type: music
  • media_content_id là địa chi file nhạc, địa chỉ download trực tiếp. Nếu tử Dropbox thì lấy địa chỉ chia sẻ file, thay đối dl=0 thành dl=1. Nếu từ Google Drive thì phải sửa đường link chia sẻ, từ
https://drive.google.com/file/d/FILE_ID/edit?usp=sharing

thành

https://drive.google.com/uc?export=download&id=FILE_ID

Ngoài ra, có thể lưu file trên Hass và truy cập theo đường dẫn

https://xxxx.duckdns.org:8123/local/tên_file

bằng cách lưu file trong thư mục /config/www và trong phần homeassistant: thêm dòng

whitelist_external_dirs: "/config/www"

Một cách khác đơn giản hơn để phát âm thanh là dùng tts.google_say

  action:  
    service: tts.google_say
    data:
      message: Hi Every body! Motion delected

Vì trang webhook được mở theo phương thức POST nên không thể gõ trực tiếp trên thanh địa chỉ trình duyệt (phương thức GET) mà phải test trên https://apitester.com/ hay dùng curl

curl -d "" https://xxxx.duckdns.org:8123/api/webhook/music_alert

Dòng lệnh sau đây chạy trong mạng nội bộ:

curl -k -d "" https://hass.local:8123/api/webhook/music_alert

Một ứng dụng của webhook như trên là khi camera phát hiện chuyển động thì mở trang webhook để phát báo động. Tất nhiên khi đó phải mở trang webhook theo phương thức POST.

Có thể bọc trang webhook vào trang web khác để nhờ mở theo phương thức POST

<html>
<body onload="document.forms[0].submit();">
<form method="POST" action="https://xxxx.duckdns.org:8123/api/webhook/music_alert"></form>
</body>
</html>

Comments Off on [HASS] Webhook

Filed under Software

Comments are closed.