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ị 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 vượt trội giúp nâng cao khả năng tự động hóa. Một trong những tích hợp thường bị bỏ qua nhưng lại cực kỳ tiềm năng là IMAP (Internet Message Access Protocol), cho phép bạn liên kết Home Assistant với hộp thư điện tử của mình và phản ứng một cách tự động với các tin nhắn đến. Về cơ bản, IMAP biến email của bạn thành một API, mở ra cánh cửa để tự động hóa các phản hồi dựa trên các sự kiện hoặc trigger cụ thể, mang lại sự tiện lợi và hiệu quả cao cho ngôi nhà thông minh.
Việc thiết lập tích hợp IMAP rất 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 sử dụng Gmail và đã bật xác thực hai yếu tố, bạn sẽ cần tạo một “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 để cài đặt mật khẩu này. Sau khi thiết lập xong, bạn đã sẵn sàng khám phá những khả năng tự động hóa vô tận.
Xử Lý Email Để Kích Hoạt Tự Động Hóa
Cấu Hình Ban Đầu Cho Tích Hợp
Cấu hình tích hợp IMAP trong Home Assistant, bật Body text và Message headers
Để IMAP có thể “đọc” và xử lý đầy đủ nội dung email, chúng ta cần cấu hình một chút. Hãy truy cập tích hợp IMAP trong Home Assistant, sau đó nhấp vào Configure (Cấu hình) bên cạnh địa chỉ email của bạn. Tại đây, hãy kích hoạt cả Body text (Nội dung văn bản) và Message headers (Tiêu đề tin nhắn). Thao tác này sẽ cho phép Home Assistant truy cập toàn bộ thông tin từ một email nhận được, từ đó bạn có thể sử dụng chúng để kích hoạt các sự kiện cụ thể.
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ó thể 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 trường 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 với chúng. Chẳng hạn, 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à 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 việc xây dựng một tự động hóa để thông báo giao hàng qua loa.
Tự Động Thông Báo Giao Hàng Bằng IMAP Của Home Assistant
Không Bỏ Lỡ Gói Hàng Nào Nữa!
Tự động hóa thông báo gói hàng đã giao dựa trên email trong Home Assistant
Với nhiều dịch vụ giao hàng, bạn có thể 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 tôi cũng kiểm tra email ngay lập tức, và khi đang làm việc trên máy tính, tôi có thể không để ý email mới trong một thời gian. Đôi khi, các đơn vị vận chuyển sẽ gọi điện khi gói hàng đang trên đường, nhưng cũng có lúc họ chỉ để gói hàng dưới sảnh căn hộ. Để giải quyết vấn đề này, tôi đã triển khai một thiết lập tự động hóa như 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ó sang 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, Home Assistant sẽ thông báo việc giao gói 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 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 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 điều kiện trùng khớp với mẫu đã định. Cuối cùng, tôi sử dụng chức năng TTS (Text-to-Speech) để phát thông báo qua loa, trong đó tên người gửi email được tách dựa trên ký tự ‘@’.
"Your {{ trigger.event.data.sender.split('@')[0] }} parcel has arrived."
Nếu chúng ta lấy [email protected]
làm ví dụ, cú pháp này sẽ tách địa chỉ email 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”. Áp dụng khái niệm này cho các địa chỉ email khác, 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 ở gói hàng; bạn có thể cấu hình để nhận thông báo nếu ai đó cụ thể 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 của người gửi có thể không mô tả rõ ràng. 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 của bạn từ Amazon.co.uk đã đến”. Tôi 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 Chi Tiêu Với IMAP Của Home Assistant
Lưu Dữ Liệu Vào Các Cảm Biến
Cấu hình cảm biến mẫu (template sensor) theo dõi hóa đơn bằng IMAP trong Home Assistant
Một ứng dụng tuyệt vời khác cho tích hợp IMAP là theo dõi hóa đơn. Đối với việc này, chúng ta sẽ sử dụng một cảm biến mẫu (template sensor) để lưu giữ thông tin về các hóa đơn nhận được từ một người gửi cụ thể. Thiết lập này có thể được mở rộng để sử dụng nhiều thuộc tính cho các loại hóa đơn khác nhau, hoặc bạn có thể sử dụng các cảm biến riêng biệt hoàn toàn. Nó cũng có thể được phát triển để tổng hợp tất cả các hóa đơn trong tháng, mặc dù ví 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 mẫu (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 mẫu có thể được tham chiếu trong tương lai.
Để 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 di động của mình. Các email này thường 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 thanh toán nếu bỏ lỡ hạn. Do đó, chúng ta muốn luô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 (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 mà bạn muốn kiểm tra. Tuy nhiên, mẫu của tôi để đạt được kết quả trên trông như sau:
- trigger: - trigger: 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 email đã nhận hay không. Nó tìm kiếm một giá trị có dạng [số].[số]
(ví dụ: 12.34), và lấy trường hợp đầu tiên tìm thấy. Sau đó, nó chuyển đổi giá trị này thành 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 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, ví dụ 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 có toàn quyền kiểm soát nó và cách bạn lưu trữ dữ liệu.
IMAP: Công Cụ Đắc Lực Thường Bị Bỏ Quên
Email Vẫn Quan Trọng Trong Tự Động Hóa
Giao diện ứng dụng email Thunderbird trên máy tính, thể hiện tầm quan trọng của email trong tự động hóa
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ó khoảng 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 này), con số này quá nhỏ bé so với tích hợp xếp thứ 30 cũng đã có hơn 67.000 cài đặt. IMAP đã 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, 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ư cách bạn tự động hóa bất cứ thứ 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 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 để đ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 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ừ một bộ lưu điện (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.
IMAP trong Home Assistant không chỉ là một tiện ích nhỏ mà còn là chìa khóa mở ra tiềm năng tự động hóa mạnh mẽ, biến hộp thư điện tử của bạn thành một trung tâm điều khiển thông minh. Đừng ngần ngại khám phá và áp dụng công cụ này để tối ưu hóa việc quản lý thông tin và các tác vụ quan trọng trong ngôi nhà của bạn. Hãy thử nghiệm và chia sẻ những ý tưởng sáng tạo của bạn trong phần bình luận bên dưới nhé!