Home Assistant là một trung tâm tuyệt vời để kết nối tất cả các thiết bị nhà thông minh của bạn, không chỉ mạnh mẽ về phần mềm mà còn ở khả năng tích hợp linh hoạt. Một tính năng thường bị bỏ quên nhưng vô cùng hữu ích là tích hợp IMAP (Internet Message Access Protocol) có sẵn. Đây là cách thông minh để liên kết Home Assistant với tài khoản email của bạn và tự động hóa các phản ứng dựa trên các tin nhắn đến. Về cơ bản, nó biến email của bạn thành một giao diện lập trình ứng dụng (API) đơn giản, cho phép bạn tự động hóa phản hồi cho các sự kiện hoặc yếu tố kích hoạt cụ thể, mở ra vô vàn khả năng cho ngôi nhà thông minh của bạn.
Việc thiết lập tích hợp IMAP khá dễ dàng và có thể thực hiện trực tiếp từ giao diện người dùng của Home Assistant. Nếu bạn đang sử dụng Gmail và đã bật xác thực hai yếu tố (2FA), bạn sẽ cần tạo “mật khẩu ứng dụng” để đăng nhập từ Home Assistant. Tích hợp sẽ cung cấp hướng dẫn chi tiết để bạn thực hiện bước này. Một khi đã hoàn tất cài đặt, bạn đã sẵn sàng khám phá thế giới tự động hóa email trong Home Assistant.
Xử lý email để tìm kiếm các sự kiện kích hoạt
Cấu hình tích hợp IMAP chuyên sâu
Trước tiên, chúng ta cần đảm bảo rằng tích hợp IMAP có thể truy cập đầy đủ thông tin chi tiết của mỗi email và nội dung của nó. Hãy điều hướng đến mục tích hợp IMAP trong Home Assistant, sau đó nhấp vào Cấu hình (Configure) bên cạnh địa chỉ email của bạn. Bật cả hai tùy chọn Nội dung thư (Body text) và Tiêu đề thư (Message headers). Điều này sẽ cho phép Home Assistant xử lý tất cả thông tin từ một email đã nhận và sử dụng chúng làm căn cứ để kích hoạt các sự kiện cụ thể.
Mỗi khi một email mới được nhận, một sự kiện có tên “imap_content” sẽ được kích hoạt. Đây là một sự kiện tạm thời chứa thông tin của email gần nhất, được chia thành các trường dữ liệu sau:
subject
(Tiêu đề)entry_id
(ID mục nhập)uid
(ID duy nhất)text
(Nội dung văn bản)server
(Máy chủ)username
(Tên người dùng)search
(Tìm kiếm)folder
(Thư mục)sender
(Người gửi)date
(Ngày)initial
(Ban đầu – xác định email mới)Delivered-To header
(Tiêu đề Delivered-To)Return-Path header
(Tiêu đề Return-Path)Received header
(Tiêu đề Received)Received-last header
(Tiêu đề Received cuối cùng)
Hầu hết các chi tiết này có thể không quá quan trọng cho việc kích hoạt tự động hóa, nhưng các trường sender
, subject
và text
là những thông tin chúng ta sẽ khai thác chính. Các sự kiện tạm thời này mang theo những thông tin này, và bạn có thể làm được rất nhiều điều. Chẳng hạn, khi nhận được một hóa đơn, bạn có thể trích xuất thông tin từ hóa đơn đó, xử lý nó qua Home Assistant và chuyển các giá trị liên quan đến hóa đơn sang một cảm biến khác. Chúng ta sẽ bắt đầu bằng cách xây dựng một tự động hóa để thông báo giao hàng qua loa.
Cấu hình tích hợp IMAP Home Assistant để xử lý email
Thông báo giao hàng tự động qua IMAP của Home Assistant
Không bao giờ bỏ lỡ gói hàng nữa
Với nhiều dịch vụ giao hàng, bạn có thể nhận được một email thông báo khi một gói hàng đã được giao. Không phải lúc nào tôi cũng để ý email, và khi ở trên máy tính, tôi có thể không thấy email ngay lập tức sau khi nhận được. Đa số thời gian, các đơn vị chuyển phát sẽ gọi cho tôi khi một gói hàng đang trên đường, nhưng đôi khi, họ chỉ để gói hàng của tôi ở sảnh chung cư. Để giải quyết vấn đề này, tôi đã triển khai thiết lập sau:
- Email đến, kích hoạt sự kiện
imap_content
. - Quét tiêu đề email bằng cách chuyển nó về chữ thường và kiểm tra xem nó có chứa từ “delivered” (đã giao) hay không.
- Nếu có sự trùng khớp, thông báo việc giao hàng qua thiết bị phát nhạc ở phòng khách của tôi, sử dụng phần trước ký tự ‘@’ trong địa chỉ email làm tên người gửi.
Chúng ta sử dụng cờ "initial: true"
trong sự kiện imap_content
để đảm bảo rằng tự động hóa chỉ kích hoạt đối với các email hoàn toàn mới. Khi một email đến, chúng ta kiểm tra xem nó có khớp với mẫu của mình như một điều kiện để tiếp tục hay không. Cuối cùng, tôi sử dụng chức năng chuyển văn bản thành giọng nói (TTS) để phát thông báo trên loa của mình, nơi nó sẽ tách địa chỉ email của người gửi dựa trên ký tự ‘@’.
"Your {{ trigger.event.data.sender.split('@')[0] }} parcel has arrived."
Nếu chúng ta sử dụng [email protected]
làm ví dụ, điều này sẽ tách địa chỉ email của tôi thành một mảng gồm hai mục: ["adam", "xda-developers.com"]
. Tham chiếu vị trí [0]
có nghĩa là chỉ đọc “adam”, và áp dụng khái niệm này cho các địa chỉ email khác có nghĩa là bạn có thể lấy nửa đầu email của người gửi. Điều này không chỉ giới hạn ở việc thông báo gói hàng; bạn có thể cấu hình nó để thông báo nếu một người cụ thể gửi email cho bạn.
Tự động hóa thông báo giao hàng qua Home Assistant IMAP dựa trên email
Xét về mặt thực tế, có lẽ sẽ tốt hơn nếu lấy nửa sau của địa chỉ email bằng cách tham chiếu [1]
. Điều này là do nhiều địa chỉ email của người gửi có thể không quá mô tả. Ví dụ, ở Ireland, thông báo giao hàng của Amazon của tôi đến từ “[email protected]”. Sẽ hợp lý hơn nếu tham chiếu [1]
cho thông báo, để nó nói “Gói hàng Amazon.co.uk của bạn đã đến.” Tôi đơn giản là chưa thay đổi nó cho đến bây giờ, nhưng việc sử dụng [0]
vẫn có thể phù hợp hơn với nhu cầu của bạn trong một số trường hợp.
Theo dõi hóa đơn bằng IMAP của Home Assistant
Lưu trữ thông tin hóa đơn vào các cảm biến
Một ứng dụng tuyệt vời khác cho tích hợp IMAP là để theo dõi các hóa đơn. Với mục đích này, chúng ta sẽ sử dụng một cảm biến template (template sensor) để theo dõi các hóa đơn nhận được từ một người gửi cụ thể. Điều này có thể được mở rộng để sử dụng nhiều thuộc tính cho các hóa đơn khác nhau, hoặc bạn có thể sử dụng các cảm biến hoàn toàn riêng biệt. Giải pháp này cũng có thể được phát triển để lập bảng kê tổng hợp tất cả các hóa đơn thu thập được trong tháng, mặc dù ví dụ này chỉ nhằm mục đích minh họa cách bạn có thể triển khai IMAP như một phần của template thay vì là cơ sở của một tự động hóa. Điều này cho phép lưu trữ dữ liệu tĩnh trong một template mà sau này có thể được tham chiếu.
Để thực hiện, tôi sẽ đọc các email đến để kiểm tra hóa đơn mới từ nhà cung cấp dịch vụ di động của tôi. Các email này chứa hai giá trị tiền tệ: giá trị đầu tiên luôn là số tiền hóa đơn, giá trị thứ hai là phí phạt trả chậm nếu bỏ lỡ thanh toán. Do đó, chúng ta luôn muốn lấy giá trị đầu tiên chứ không phải giá trị thứ hai. Ngoài ra, mặc dù tôi chưa thực hiện ở đây vì mục đích thử nghiệm (vì tôi đang tự gửi email hóa đơn cho mình để kiểm tra), bạn cũng nên giới hạn các tham số người gửi chỉ từ nhà cung cấp bạn muốn kiểm tra. Tuy nhiên, template của tôi để đạt được kết quả trên trông như sau:
- trigger:
- platform: event
event_type: "imap_content"
id: "bills"
sensor:
- name: bills
icon: mdi:receipt
state: >
{%- set val = trigger.event.data.text | regex_findall_index('\d+\.\d+', 0) %}
{{ val | float(0) }}
attributes:
gomo_bill: >
{%- set val = trigger.event.data.text | regex_findall_index('\d+\.\d+', 0) %}
{{ val | float(0) }}
Ví dụ template cảm biến để theo dõi hóa đơn qua tích hợp IMAP Home Assistant
Đây là một template đơn giản kiểm tra xem có cần cập nhật giá trị dựa trên email đã nhận hay không. Nó tìm kiếm một giá trị có dạng [số nguyên].[số thập phân] (ví dụ: 12.34
), và lấy thực thể đầu tiên của nó. Sau đó, nó chuyển đổi giá trị đó thành số thực (float) và lưu vào trạng thái (state). Logic tương tự cũng được sử dụng cho thuộc tính (attribute). Bạn có thể mở rộng điều này trong tương lai để tìm kiếm các người gửi cụ thể và sắp xếp theo người gửi, đồng thời có thể sử dụng trạng thái hiện tại làm giá trị được xử lý gần đây nhất.
Tuy nhiên, nếu muốn, bạn cũng có thể tạo các cảm biến riêng biệt cho từng loại hóa đơn, chẳng hạn như bills_electricity
, bills_broadband
, v.v. Tùy thuộc vào cách nào phù hợp với bạn, nhưng bạn hoàn toàn có thể kiểm soát cách thức và nơi bạn lưu trữ dữ liệu này.
IMAP là một công cụ mạnh mẽ tiềm năng
Email vẫn đóng vai trò quan trọng
IMAP là một trong những công cụ mạnh mẽ và bị đánh giá thấp nhất trong toàn bộ hệ sinh thái nhà thông minh. Chỉ có 1522 cài đặt đang hoạt động sử dụng nó theo số liệu của Home Assistant (tại thời điểm viết bài), con số này quá nhỏ so với ngay cả tích hợp thứ 30 cũng có hơn 67.000 cài đặt. Nó đã bị bỏ qua phần lớn nhờ vào các tích hợp xuất sắc mà cộng đồng đã xây dựng để hỗ trợ đủ loại dịch vụ. Tuy nhiên, rất nhiều công cụ vẫn chỉ hoạt động qua email, và bạn có thể tự động hóa bất cứ điều gì bạn muốn theo cùng cách bạn tự động hóa mọi thứ khác trong Home Assistant, nhưng với email là yếu tố kích hoạt.
Giao diện email Thunderbird – minh họa tầm quan trọng của email trong tự động hóa nhà thông minh
Nếu bạn có bất kỳ dịch vụ nào gửi email quan trọng mà bạn muốn theo dõi, đây có thể là một công cụ rất hữu ích. Đối với các hóa đơn, nó đã rất tuyệt vời, và tôi đang trong quá trình phát triển thêm một số công cụ theo dõi hóa đơn và các công cụ khác thông qua nó. Nó có thể cạnh tranh với nhiều công cụ có khả năng giám sát email theo cùng một cách, hoặc bạn có thể sử dụng nó như một cách để điều khiển ngôi nhà của mình và chia sẻ quyền truy cập với các thành viên trong gia đình bằng cách gửi email. Hơn nữa, bạn có thể cấu hình tích hợp SMTP để tự động phản hồi nữa. Tài liệu của Home Assistant thậm chí còn có một ví dụ tuyệt vời về việc sử dụng thông báo từ một bộ lưu điện (UPS) để biết liệu nhà bạn có bị mất điện hay không. Hãy để trí tưởng tượng của bạn bay xa và khám phá tiềm năng của IMAP!