Home Assistant từ lâu đã khẳng định vị thế là một nền tảng trung tâm xuất sắc, kết nối mọi thiết bị thông minh trong ngôi nhà của bạn. Không chỉ mạnh mẽ về mặt phần mềm, nó còn sở hữu những tích hợp tưởng chừng đơn giản nhưng lại vô cùng tiềm năng. Một trong số đó là tích hợp IMAP tích hợp sẵn, một công cụ thường bị bỏ qua nhưng lại cho phép bạn liên kết Home Assistant với email và phản ứng linh hoạt với các tin nhắn đến. Về cơ bản, đây là một cách cơ bản để biến hộp thư email của bạn thành một API, mở ra khả năng tự động hóa các phản hồi cho các sự kiện hoặc kích hoạt cụ thể dựa trên nội dung email.
Việc thiết lập tích hợp IMAP trên Home Assistant khá dễ dàng và có thể thực hiện trực tiếp từ giao diện người dùng (UI). Nếu bạn đã bật xác thực hai yếu tố (2FA) cho tài khoản Gmail, bạn sẽ cần sử dụng “mật khẩu ứng dụng” (app password) để đăng nhập từ Home Assistant. Quá trình này sẽ được hướng dẫn chi tiết trong phần thiết lập tích hợp. Sau khi hoàn tất, bạn đã sẵn sàng khám phá thế giới tự động hóa email.
Xử Lý Email Để Phát Hiện Các Kích Hoạt Tiềm Năng
Thiết Lập Tích Hợp IMAP Của Chúng Ta
Để đảm bảo tích hợp IMAP có thể “đọc” được tất cả chi tiết và nội dung của mỗi email, chúng ta cần cấu hình một vài cài đặt quan trọng. Trong giao diện Home Assistant, truy cập tích hợp IMAP và nhấp vào nút Cấu hình (Configure) bên cạnh tài khoản email của bạn. Tại đây, hãy kích hoạt cả hai tùy chọn Nội dung email (Body text) và Tiêu đề tin nhắn (Message headers). Việc này sẽ cho phép Home Assistant xử lý toàn bộ thông tin từ một email nhận được, cung cấp dữ liệu cần thiết để kích hoạt các sự kiện cụ thể.
Cấu hình cài đặt tích hợp IMAP trong Home Assistant
Hiện tại, mỗi khi một email được nhận, một sự kiệ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
uid
text
(Nội dung văn bản)server
username
search
folder
(Thư mục)sender
(Người gửi)date
(Ngày)subject
(Tiêu đề – lặp lại)initial
Delivered-To header
Return-Path header
Received header
Received-last header
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 như “sender” (người gửi), “subject” (tiêu đề) và “text” (nội dung) chính là những gì chúng ta sẽ tận dụng. Các sự kiện tạm thời này mang theo những mảnh thông tin này, và bạn có thể làm được rất nhiều điều. Ví dụ, khi một hóa đơn đến, bạn có thể trích xuất thông tin từ hóa đơn đó, xử lý qua Home Assistant và đưa các giá trị liên quan đến hóa đơn đó vào một sensor khác. Tiếp theo, chúng ta sẽ xây dựng một tự động hóa để thông báo về việc giao gói hàng qua loa.
Thông Báo Giao Hàng Bằng IMAP Home Assistant
Không Bao Giờ Bỏ Lỡ Gói Hàng Nào Nữa
Với nhiều dịch vụ giao hàng, bạn có thể sẽ nhận được email thông báo khi một gói hàng đã được giao. Tuy nhiên, không phải lúc nào tôi cũng kiểm tra email ngay lập tức, và đôi khi tôi không để ý email trong một thời gian dài sau khi nhận được. Trong khi đó, các đơn vị vận chuyển thường gọi điện khi có gói hàng sắp đến, nhưng đôi khi họ chỉ để gói hàng ở sảnh căn hộ của tôi. Để 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, chuyển thành chữ thường và kiểm tra xem có chứa từ “delivered” (đã giao) hay không.
- Nếu phù hợp, thông báo việc giao gói 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.
Tự động hóa thông báo gói hàng đã giao dựa trên email trong Home Assistant
Chúng ta sử dụng cờ "initial: true"
trong sự kiện imap_content
để đảm bảo 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 TTS (Text-to-Speech) để phát thông báo trên loa, nơi nó tách tên người gửi email dựa trên ký tự “@”.
"Đơn hàng từ {{ trigger.event.data.sender.split('@')[0] }} của bạn đã đến."
Nếu chúng ta lấy ví dụ [email protected]
, dòng mã trên sẽ tách địa chỉ email của tôi thành một mảng gồm hai phần: ["adam", "xda-developers.com"]
. Tham chiếu vị trí [0]
có nghĩa là chỉ đọc phần “adam”, và áp dụng khái niệm này cho các địa chỉ email khác cho phép bạn lấy nửa đầu của email người gửi. Điều này không chỉ giới hạn ở gói hàng; bạn có thể cấu hình để thông báo nếu có người cụ thể gửi email cho bạn.
Nhìn lại, 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]
thay vì [0]
. Lý do là 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 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 “Đơn hàng từ Amazon.co.uk của bạn đã đến.” Tôi đơn giản là chưa kịp thay đổi 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 Home Assistant
Lưu Trữ Dữ Liệu Hóa Đơn Vào Các Cảm Biến (Sensors)
Một ứng dụng tuyệt vời khác của tích hợp IMAP là để theo dõi các hóa đơn định kỳ. Đối với trường hợp này, chúng ta sẽ sử dụng một template sensor
(cảm biến mẫu) để ghi lại các hóa đơn nhận được từ một người gửi cụ thể. Tính năng này có thể được mở rộng để sử dụng nhiều thuộc tính (attributes) cho các loại hóa đơn khác nhau, hoặc bạn có thể sử dụng các sensor hoàn toàn riêng biệt. Nó cũng có thể được phát triển để tổng hợp tất cả các hóa đơn được thu thập 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àm cơ sở cho một tự động hóa. Điều này cho phép dữ liệu tĩnh được lưu trong một template và có thể được tham chiếu trong tương lai.
Home Assistant template theo dõi hóa đơn
Để làm điều này, 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 hóa đơn thường chứa hai giá trị tiền: 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ỡ kỳ hạn 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 không thực hiện ở đây vì mục đích thử nghiệm (vì tôi đang tự gửi email bản sao hóa đơn để kiểm tra), bạn cũng nên giới hạn các thông số người gửi chỉ từ nhà cung cấp mà 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) }}
Đâ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 được hay không. Nó tìm kiếm một giá trị dưới dạng [số_thập_phân].[số_thập_phân]
và lấy ví dụ đầu tiên của nó. Sau đó, nó chuyển đổi giá trị này sang kiểu 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. Bạn có thể mở rộng điều này trong tương lai để tìm kiếm người gửi cụ thể và sắp xếp dựa trên người gửi, đồng thời bạn cũng 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 sensor riêng biệt cho các loại hóa đơn này, chẳng hạn như bills_electricity
(hóa đơn điện), bills_broadband
(hóa đơn internet), v.v. Tùy thuộc vào cách nào phù hợp với bạn, nhưng bạn có thể kiểm soát nó và cách bạn lưu trữ dữ liệu.
IMAP Là Một Công Cụ Mạnh Mẽ Bị Lãng Quên
Email Vẫn Rất Quan Trọng Trong Thế Giới Số
Giao diện email Thunderbird với trang XDA
IMAP là một trong những công cụ tuyệt vời và bị tận dụng thấp nhất trong toàn bộ hệ sinh thái nhà thông minh. Theo số liệu của Home Assistant (tại thời điểm viết bài), chỉ có 1522 cài đặt đang hoạt động sử dụng tích hợp này, một con số rất nhỏ so với ngay cả tích hợp thứ 30 cũng có hơn 67.000 cài đặt. IMAP đã bị bỏ qua phần lớn là do 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, 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ách tương tự như khi bạn tự động hóa bất cứ điều gì khác trong Home Assistant, nhưng với email làm yếu tố kích hoạt.
Nếu bạn có bất kỳ dịch vụ nào gửi các 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 việc theo dõi 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 tích hợp này. Nó có thể cạnh tranh với nhiều công cụ có khả năng giám sát email của bạn theo cùng một cách, hoặc bạn có thể sử dụng nó như một cách để kiểm soát 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ừ UPS để biết liệu nhà bạn có bị mất điện hay không, vì vậy hãy để trí tưởng tượng của bạn bay xa.
Hãy Chia Sẻ Kinh Nghiệm Của Bạn!
Bạn đã từng sử dụng tích hợp IMAP của Home Assistant chưa? Bạn có những ý tưởng tự động hóa độc đáo nào khác với email? Hãy để lại bình luận bên dưới và chia sẻ kinh nghiệm của bạn cùng cộng đồng camnangcongnghe.net!