Home Assistant là một nền tảng quản lý trung tâm tuyệt vời để kết nối tất cả các thiết bị thông minh trong ngôi nhà của bạn, và sự mạnh mẽ của nó còn thể hiện ở khía cạnh phần mềm. Một tích hợp mà thường bị bỏ qua là tích hợp IMAP được tích hợp sẵn, một cách để liên kết Home Assistant với email của bạn và phản ứng phù hợp với các tin nhắn đến. Đây là một phương pháp cơ bản nhưng hiệu quả để biến email của bạn thành một API, cho phép bạn tự động hóa các phản hồi dựa trên các sự kiện hoặc yếu tố kích hoạt cụ thể.
Việc thiết lập tích hợp IMAP khá đơn giản và có thể thực hiện trực tiếp từ giao diện người dùng (UI) 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 sử dụng “mật khẩu ứng dụng” (app password) để đăng nhập từ Home Assistant. Tích hợp sẽ cung cấp hướng dẫn chi tiết về cách tạo và sử dụng mật khẩu này. Một khi đã thiết lập xong, bạn đã sẵn sàng khám phá thế giới tự động hóa email.
Thiết Lập Và Xử Lý Email Với Tích Hợp IMAP Trong Home Assistant
Để tận dụng tối đa khả năng của tích hợp IMAP, việc cấu hình ban đầu là rất quan trọng. Sau khi thiết lập, bạn có thể biến Home Assistant thành một công cụ phân tích và phản ứng thông minh với mọi email đến.
Cấu hình tích hợp IMAP ban đầu
Trước tiên, chúng ta cần đảm bảo tích hợp IMAP có thể “nhìn thấy” tất cả các chi tiết của mỗi email và nội dung của nó. Hãy truy cập vào tích hợp IMAP trong Home Assistant, sau đó nhấn 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 bạn xử lý tất cả thông tin từ một email đã nhận và sử dụng nó để kích hoạt các sự kiện cụ thể, mở ra cánh cửa cho nhiều kịch bản tự động hóa phức tạp.
Nắm Bắt Dữ Liệu Email Với Sự Kiện “imap_content”
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, mang theo thông tin của email gần đây 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
(Là email mới hoàn toàn)Delivered-To header
(Tiêu đề đã gửi đến)Return-Path header
(Tiêu đề đường dẫn trả về)Received header
(Tiêu đề đã nhận)Received-last header
(Tiêu đề đã nhận gần nhất)
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” (người gửi), “subject” (tiêu đề), và “text” (nội dung) chính là những gì chúng ta sẽ khai thác. Các sự kiện tạm thời này mang theo những thông tin quan trọng này, và bạn có thể làm được rất nhiều điều với chúng. 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 cảm biến khác. Chúng ta sẽ bắt đầu bằng việc xây dựng một tự động hóa để thông báo giao hàng qua loa.
Cài đặt tích hợp IMAP trong Home Assistant UI
Tự Động Hóa Thông Báo Giao Hàng Qua Email Với Home Assistant IMAP
Một trong những ứng dụng thực tế và hữu ích nhất của tích hợp IMAP là tự động thông báo khi gói hàng của bạn đã được giao. Điều này giúp bạn không bỏ lỡ bất kỳ kiện hàng quan trọng nào, ngay cả khi bạn không thường xuyên kiểm tra email.
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 thường sẽ nhận được email thông báo khi gói hàng đã được giao. Tuy nhiên, không phải lúc nào bạn cũng kiểm tra email ngay lập tức. Để giải quyết vấn đề này, một thiết lập tự động hóa có thể được triển khai như sau:
- Email thông báo giao hàng đến, kích hoạt sự kiện
imap_content
. - Hệ thống quét tiêu đề của email, chuyển đổi nó sang chữ thường và kiểm tra xem có chứa từ “delivered” (đã giao) hoặc các từ khóa tương tự (ví dụ: “đã giao hàng”, “thành công”) hay không.
- Nếu có sự trùng khớp, Home Assistant sẽ thông báo về việc giao gói hàng qua loa trong phòng khách của bạn, sử dụng phần trước ký tự “@” trong địa chỉ email làm tên của 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ỉ được kích hoạt với các email hoàn toàn mới, tránh việc xử lý lặp lại. Khi một email đến, chúng ta kiểm tra điều kiện phù hợp với mẫu đã đặt. 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, trong đó tên người gửi được phân tách từ địa chỉ email dựa trên ký tự “@”.
"Gói 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]
, biểu thức này sẽ tách địa chỉ email thành một mảng gồm hai phần: ["adam", "xda-developers.com"]
. Việc tham chiếu vị trí [0]
có nghĩa là chỉ đọc “adam”. Áp dụng khái niệm này cho các địa chỉ email khác giúp bạn có thể lấy được nửa đầu của email người gửi. Ứng dụng 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ể nào đó gửi email cho bạn.
Suy nghĩ 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]
. Điều này là do nhiều địa chỉ email người gửi có thể không quá mô tả. Ví dụ, tại Ireland, các thông báo giao hàng của Amazon đến từ “[email protected]”. Sẽ có ý nghĩa 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 chưa có thời gian để 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ố kịch bản.
Luồng tự động hóa thông báo giao hàng qua email trong Home Assistant
Theo Dõi Hóa Đơn Định Kỳ Bằng Home Assistant IMAP và Template Sensor
Ngoài việc thông báo giao hàng, tích hợp IMAP trong Home Assistant còn có thể được ứng dụng một cách mạnh mẽ để theo dõi các hóa đơn định kỳ, giúp bạn quản lý tài chính cá nhân hoặc gia đình một cách hiệu quả hơn.
Lưu Trữ Thông Tin Hóa Đơn Vào Cảm Biến
Một ứng dụng tuyệt vời khác của tích hợp IMAP là theo dõi hóa đơn. Để làm điều này, chúng ta sẽ sử dụng một cảm biến mẫu (template sensor) thay vì chỉ một tự động hóa đơn thuần. Cảm biến này sẽ theo dõi các hóa đơn nhận được từ một người gửi cụ thể. Bạn có thể mở rộng tính năng này để sử dụng nhiều thuộc tính cho các loại hóa đơn khác nhau, hoặc thậm chí 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 nâng cao để tính tổng các hóa đơn đã thu thập trong tháng, mặc dù ví dụ này chỉ nhằm minh họa cách bạn có thể triển khai IMAP như một phần của mẫu cảm biến thay vì là nền tảng của một tự động hóa. Điều này cho phép dữ liệu tĩnh được lưu trong một mẫu có thể được tham chiếu trong tương lai.
Đối với ví dụ 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 này thường chứa hai giá trị tiền: giá trị đầu tiên luôn là số tiền hóa đơn, và giá trị thứ hai là phí phạt trả chậm nếu thanh toán bị bỏ lỡ. Do đó, chúng ta luôn muốn trích xuất 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 (do tôi đang tự gửi một bản sao email hóa đơn để 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 mà bạn muốn kiểm tra. Tuy nhiên, mẫu cảm biến của tôi để đạt được kết quả trên trông như thế này:
- 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 mẫu đơn giản kiểm tra xem có cần cập nhật giá trị dựa trên một email đã nhận hay không. Nó tìm kiếm một giá trị dưới dạng [số_nguyên].[số_thập_phân]
(ví dụ: 123.45) và lấy lần xuất hiện đầu tiên của nó. Sau đó, nó chuyển đổi giá trị đó thành kiểu số thực (float) và lưu vào trạng thái (state) của cảm biến. 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ữ liệu dựa trên người gửi, và 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 cảm biến riêng biệt cho từng loại hóa đơn, ví dụ 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ó toàn quyền kiểm soát nó và cách bạn lưu trữ dữ liệu.
Code template sensor theo dõi hóa đơn trong Home Assistant
IMAP: Công Cụ Tự Động Hóa Đầy Tiềm Năng Bị Bỏ Quên
Mặc dù có khả năng mạnh mẽ, tích hợp IMAP trong Home Assistant lại thường bị đánh giá thấp và ít được sử dụng bởi cộng đồng người dùng. Tuy nhiên, tiềm năng của nó trong việc biến email thành một phần không thể thiếu của hệ thống nhà thông minh là rất lớn.
Email Vẫn Giữ Vai Trò Quan Trọng Trong Tự Động Hóa Smart Home
IMAP là một trong những công cụ tuyệt vời nhưng bị bỏ quên nhiều 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 lượt 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 việc tích hợp đứng thứ 30 cũng đã có hơn 67.000 lượt cài đặt. Nó bị lu mờ phần lớn là 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ụ khác nhau. Tuy nhiên, vẫn có rất nhiều công cụ và dịch vụ 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 một cách mà bạn tự động hóa bất cứ điều gì khác trong Home Assistant, mặc dù với email là 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 hóa đơn, nó đã rất tuyệt vời, và tôi đang trong quá trình phát triển một số công cụ theo dõi hóa đơn và các công cụ khác thông qua nó. IMAP 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 (bộ lưu điện) để 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.
Biểu tượng ứng dụng email Thunderbird, minh họa vai trò của email
Với khả năng biến email thành một nguồn dữ liệu mạnh mẽ để kích hoạt các hành động tự động, tích hợp IMAP mở ra một cánh cửa mới cho việc cá nhân hóa và tối ưu hóa ngôi nhà thông minh của bạn. Từ việc nhận thông báo gói hàng đến theo dõi hóa đơn, và thậm chí là các kịch bản phức tạp hơn, Home Assistant IMAP xứng đáng được khám phá và tận dụng. Đừng ngần ngại thử nghiệm và biến email của bạn thành một phần không thể thiếu của hệ thống tự động hóa nhà thông minh trên Home Assistant. Hãy chia sẻ ý tưởng tự động hóa độc đáo của bạn với chúng tôi trong phần bình luận bên dưới!