Home Assistant là một nền tảng tuyệt vời, hoạt động như một trung tâm điều khiển tập trung để kết nối tất cả các thiết bị nhà thông minh của bạn. Mặc dù mạnh mẽ về phần mềm, một tích hợp thường bị bỏ qua là tính năng IMAP được tích hợp sẵn. Đây là một cách để liên kết Home Assistant với email của bạn và tự động phản ứng với 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), 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ể.
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 đã bật xác thực hai yếu tố (2FA) trê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. Tích hợp này sẽ cung cấp hướng dẫn chi tiết để bạn cài đặt mật khẩu đó. Sau khi hoàn tất thiết lập, hệ thống của bạn đã sẵn sàng hoạt động.
Xử Lý Email Để Tìm Kiếm Các Yếu Tố Kích Hoạt
Cấu Hình Tích Hợp IMAP
Đầu tiên, chúng ta cần đảm bảo tích hợp IMAP có thể đọc 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 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 bạn xử lý tất cả thông tin từ email nhận được và sử dụng chúng để kích hoạt các sự kiện cụ thể.
Cài đặt cấu hình tích hợp IMAP trong giao diện người dùng Home Assistant, hiển thị các tùy chọn bật "Body text" và "Message headers".
Hiện tại, mỗi khi một email được nhận, 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
- entry_id
- uid
- text
- server
- username
- search
- folder
- sender
- date
- subject
- initial
- Delivered-To header
- Return-Path header
- Received header
- Received-last header
Hầu hết các chi tiết này có lẽ không quá quan trọng cho việc kích hoạt tự động hóa, nhưng “sender” (người gửi), “subject” (chủ đề), và “text” (nội dung) là những yếu tố chúng ta sẽ tận dụng. Các sự kiện tạm thời này mang theo những thông tin quan trọng, 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ể lấy thông tin từ hóa đơn đó, xử lý nó qua Home Assistant và trích xuất 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.
Thông Báo Giao Hàng Qua Email Với Tích Hợp IMAP Của Home Assistant
Không Bao Giờ Bỏ Lỡ Giao Hàng Trở Lại
Với nhiều dịch vụ giao hàng, bạn có thể sẽ nhận được một email thông báo khi gói hàng đã được giao. Tôi không phải lúc nào cũng kiểm tra email, và khi tôi đang dùng máy tính, tôi sẽ không thấy email ngay lập tức sau khi nhận được. Hầu hết thời gian, các đơn vị vận chuyển sẽ gọi điện khi có gói hàng đến, 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 chủ đề của email bằng cách chuyển nó thành chữ thường và kiểm tra xem nó có chứa từ “delivered” (đã giao) hay không.
- Nếu khớp, thông báo việc giao hàng qua thiết bị phát media trong phòng khách của tôi, sử dụng phần trước dấu “@” trong địa chỉ email làm tên của người gửi.
Giao diện tự động hóa Home Assistant hiển thị các bước để thông báo giao hàng qua email, bao gồm kích hoạt sự kiện IMAP và hành động Text-to-Speech (TTS).
Chúng ta sử dụng cờ "initial: true"
trong sự kiện imap_content
để chỉ kích hoạt tự động hóa đố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 chúng ta hay không như một điều kiện để tiếp tục. Cuối cùng, tôi sử dụng Text-to-Speech (TTS) để phát thông báo trên loa của mình, nơi nó tách tên người gửi email dựa trên ký tự “@”.
"Gói hàng của {{ trigger.event.data.sender.split('@')[0] }} đã đến nơi."
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à trừu tượng hóa khái niệm đó và áp dụng nó cho các địa chỉ email khác có nghĩa là bạn có thể lấy nửa đầu của email người gửi. Nó không chỉ áp dụng cho gói hàng; bạn có thể cấu hình điều này để thông báo cho bạn nếu ai đó gửi email cụ thể 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ụ, ở Ireland, các thông báo giao hàng Amazon của tôi đến từ “[email protected]”. Sẽ hợp lý hơn khi tham chiếu [1]
cho thông báo, để nó nói “Gói hàng Amazon.co.uk của bạn đã đến nơi”. Tôi chỉ đơ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 Với Tích Hợp IMAP Của Home Assistant
Lưu Trữ Dữ Liệu 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 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. Nó cũng có thể được nâng cao để tổng hợp tất cả các hóa đơn đã thu thập trong tháng, mặc dù minh họa này chỉ nhằm cho thấy 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 dữ liệu tĩnh được lưu trong một template mà 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 của mình để 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ị giá: giá trị đầu tiên luôn là số tiền hóa đơn, giá trị thứ hai là phí phạt chậm nếu thanh toán bị bỏ lỡ. 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 điều đó ở đây cho mục đích thử nghiệm (vì tôi đang gửi email bản sao của hóa đơn cho chính mình để kiểm tra), bạn cũng sẽ muố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, template của tôi để có được kết quả trên trông như sau:
Mã YAML của cảm biến template trong Home Assistant để theo dõi hóa đơn, sử dụng biểu thức chính quy (regex) để trích xuất giá trị từ nội dung email.
- 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 phiên bản đầu tiên của nó. Sau đó, nó chuyển đổi nó thành một số thực (float) và lưu vào trạng thái 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 nó 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 cảm biến riêng biệt cho từng loại hóa đơn, ví dụ như bills_electricity
, bills_broadband
, v.v. Điều này hoàn toàn phụ thuộc vào cách bạn muốn tổ chức và lưu trữ dữ liệu.
IMAP Là Một Công Cụ Mạnh Mẽ
Email Vẫn Rất Quan Trọng
IMAP là một trong những công cụ tuyệt vời và bị đánh giá thấp nhất trong toàn bộ hệ sinh thái nhà thông minh. Chỉ có 1522 lượt 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ỏ bé 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ị bỏ qua, 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ợ tất cả các loại dịch vụ. Tuy nhiên, rất nhiều công cụ chỉ hoạt động qua email, và bạn có thể tự động hóa mọi thứ mình muốn theo cách tương tự như khi bạn tự động hóa bất kỳ thứ gì khác trong Home Assistant, nhưng với email là yếu tố kích hoạt.
Giao diện ứng dụng email Thunderbird với trang web XDA Developers hiển thị ở nền, minh họa tầm quan trọng của email trong hệ sinh thái công nghệ.
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 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ó thể 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 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 email. 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ó mất điện hay không. Vì vậy, hãy để trí tưởng tượng của bạn bay xa và khám phá tiềm năng của IMAP.
Hãy thử nghiệm tích hợp IMAP trong Home Assistant ngay hôm nay và chia sẻ những ý tưởng tự động hóa độc đáo của bạn trong phần bình luận bên dưới nhé!