Khi nói đến việc theo dõi và quản lý ngôi nhà thông minh của bạn, vô số lựa chọn đã sẵn sàng, từ những công cụ quen thuộc như Prometheus hay Home Assistant với hàng loạt tích hợp, cho đến Grafana hay InfluxDB, hoặc thậm chí là sự kết hợp linh hoạt của tất cả. Với vai trò là một chuyên gia công nghệ tại dancongnghe.net, chúng tôi hiểu rằng việc xây dựng một hệ thống giám sát hiệu quả và trực quan là chìa khóa để tối ưu trải nghiệm nhà thông minh. Gần đây, chúng tôi đã dành thời gian thiết lập một cấu hình mạnh mẽ sử dụng InfluxDB, Home Assistant và Grafana để giám sát ngôi nhà thông minh của mình, và dù quá trình này đòi hỏi không ít công sức, thành quả đạt được hoàn toàn xứng đáng.
Hệ thống được triển khai trên TrueNAS, sử dụng các ảnh chính thức (official images) cho tất cả các ứng dụng. Chúng tôi đã cài đặt Telegraf trên máy Mac để thu thập dữ liệu và đẩy vào InfluxDB. Tất cả dữ liệu sau đó được đọc từ InfluxDB vào Grafana, nơi chúng tôi viết các truy vấn bằng InfluxQL để tạo ra những dashboard đẹp mắt, hiển thị biểu đồ theo thời gian thực về các khía cạnh khác nhau của ngôi nhà thông minh. Giải pháp này không chỉ cung cấp cái nhìn sâu sắc mà còn khẳng định khả năng tự động hóa và quản lý ngôi nhà thông minh một cách chuyên nghiệp.
Thiết Lập InfluxDB và Telegraf: Những Thách Thức Ban Đầu
InfluxDB 2.0 và Những Thay Đổi Quan Trọng
Không nghi ngờ gì nữa, thiết lập InfluxDB là phần phức tạp nhất của toàn bộ quá trình, đặc biệt với những thay đổi đáng kể trong phiên bản InfluxDB 2.0. Về cơ bản, InfluxDB đã chuyển từ việc chấp nhận nhiều định dạng dữ liệu khác nhau sang chỉ hỗ trợ một định dạng cụ thể, với lý do là để tối thiểu hóa những gì InfluxDB cần hỗ trợ. Hiện tại, nó chỉ hỗ trợ dữ liệu theo định dạng của Telegraf, đồng nghĩa với việc bạn không thể sử dụng các công cụ như Graphite hay SNMP như trước. Đây là một thay đổi tích cực về lâu dài, nhưng nó cũng khiến nhiều thông tin hướng dẫn trực tuyến trở nên lỗi thời. Trong quá trình thiết lập, bạn sẽ được cung cấp một API token. Hãy đảm bảo lưu trữ nó ở một nơi an toàn, vì đây là một token cực kỳ quan trọng và sẽ được sử dụng nhiều lần sau này.
Việc cài đặt container và cấu hình tổ chức (organization) cũng như tài khoản khá đơn giản. Tuy nhiên, phần chúng tôi gặp nhiều khó khăn nhất là tìm cách để Telegraf hoạt động. Trong trường hợp của chúng tôi, sau khi thêm một thiết bị Telegraf vào InfluxDB, nó cung cấp API token và một lệnh để chạy trong terminal nhằm bắt đầu chia sẻ dữ liệu. Lệnh đó có dạng:
telegraf --config http://192.168.1.5:30115/api/v2/telegrafs/0e9f980bb8fdd000
Tuy nhiên, lệnh này đã không hoạt động như mong đợi. Sau khi sử dụng wget
để tải file cấu hình và kiểm tra, chúng tôi nhận thấy nó đang chia sẻ dữ liệu đến 192.168.1.1
, tức là gateway mặc định của mạng, điều này rõ ràng là không chính xác. Chúng tôi đã sửa đổi cấu hình để bổ sung việc thu thập thông tin CPU và thay đổi địa chỉ IP thành 192.168.1.5
. Sau đó, chúng tôi chạy lại lệnh nhưng trỏ đến cấu hình cục bộ đã tải xuống và sửa đổi. Lần này, mọi thứ hoạt động trơn tru, và chúng tôi đã bắt đầu thu thập dữ liệu từ máy Mac của mình.
Nếu bạn muốn xem danh sách các plugin mà Telegraf có thể thu thập dữ liệu, hãy kiểm tra kho GitHub chính thức của Telegraf. Mỗi plugin đều có một cấu hình mặc định mà bạn có thể sao chép và dán nội dung vào file cấu hình Telegraf tổng thể của mình. Dữ liệu đó sau đó sẽ được tự động chia sẻ với máy chủ InfluxDB của bạn. Bạn có thể kiểm tra dữ liệu và tạo dashboard ngay trong InfluxDB nếu muốn, nhưng mục tiêu của chúng tôi là chuyển mọi thứ sang Grafana để có khả năng trực quan hóa mạnh mẽ hơn.
Tích Hợp Home Assistant với InfluxDB
Tiếp theo, chúng tôi thiết lập Home Assistant để xuất dữ liệu của nó sang InfluxDB. Tích hợp của Home Assistant với InfluxDB hiện tại là một tích hợp cũ (legacy integration), nghĩa là nó chỉ được kiểm soát thông qua một file YAML. Bạn sẽ cần sửa đổi file configuration.yaml
của Home Assistant và thêm cấu hình cho InfluxDB2. Bạn có thể tìm thấy hướng dẫn chi tiết về cách thực hiện và những gì cần thêm tùy thuộc vào thiết lập của bạn tại đây. Các bước cần thiết để sửa đổi file này sẽ khác nhau tùy thuộc vào cách bạn chạy Home Assistant (ví dụ: trên Raspberry Pi, trong Docker, v.v.).
Sau khi bạn đã cấu hình mọi thứ và có thể thấy dữ liệu của mình hiển thị trong InfluxDB, bạn đã sẵn sàng chuyển sang thiết lập Grafana để trực quan hóa toàn diện hệ thống giám sát nhà thông minh của mình.
Cài Đặt và Kết Nối Grafana với InfluxDB
Kéo Tất Cả Dữ Liệu Của Bạn Về Một Nơi
Thiết lập Grafana để chạy tương đối dễ dàng hơn, bạn chỉ cần trỏ nó đến InfluxDB. Trong giao diện Grafana, hãy truy cập vào mục Data sources (Nguồn dữ liệu), tìm kiếm InfluxDB, thêm nó và sau đó điền các chi tiết kết nối cho InfluxQL. Các thông tin bạn cần cung cấp bao gồm:
- URL: Địa chỉ bạn sử dụng để truy cập InfluxDB.
- Database: Tên của tổ chức (organization) bạn đã tạo trong InfluxDB.
- Username: Tên người dùng của bạn.
- Password: Đây chính là API token mà bạn đã nhận được khi thiết lập InfluxDB.
Bạn có thể bỏ qua tất cả các mục khác, sau đó nhấp vào Save & test (Lưu & kiểm tra). Nếu kết nối thành công, bạn đã sẵn sàng bắt đầu tạo các biểu đồ trực quan hóa dữ liệu giám sát nhà thông minh của mình.
Giao diện Grafana khi thêm nguồn dữ liệu InfluxDB, minh họa bước kết nối hệ thống giám sát nhà thông minh.
Tạo Dashboard Trực Quan Đầu Tiên Trong Grafana
Biến Dữ Liệu Thô Thành Hình Ảnh Đẹp Mắt
Có rất nhiều mẫu dashboard khác nhau cho Grafana để bạn tự tạo, nhưng chúng ta sẽ bắt đầu với một số biểu đồ cơ bản để bạn có thể làm quen với việc tạo dashboard của riêng mình. Để bắt đầu, hãy chuyển đến thẻ Explore (Khám phá) ở bên trái.
Grafana sử dụng một bộ công cụ xây dựng truy vấn (query builder) khi bạn dùng InfluxQL, cho phép bạn chỉ cần nhấp và chọn các đối tượng mà bạn muốn đọc dữ liệu, thay vì phải biết cách viết tất cả các truy vấn bằng tay. Chúng ta sẽ tạo biểu đồ phần trăm lưu trữ mà chúng tôi đang sử dụng trong dashboard hiện tại của mình, biểu đồ này lấy dữ liệu từ máy Mac thông qua Telegraf, đẩy vào InfluxDB, sau đó được Grafana đọc.
Dashboard Grafana trực quan hiển thị dữ liệu CPU, lưu trữ của Mac, cùng nhiệt độ và độ ẩm phòng ngủ/phòng khách trong hệ thống giám sát nhà thông minh.
Trong bộ công cụ xây dựng truy vấn, bạn có thể chọn những gì muốn đọc, từ đâu và thêm các điều kiện lọc. Trong trường hợp này, khá đơn giản, vì chúng tôi chỉ cần đọc trường “% remaining” (phần trăm còn lại), do máy Mac là thiết bị duy nhất báo cáo. Nếu chúng tôi có các thiết bị khác báo cáo, chúng tôi cũng cần chỉ định thiết bị đó.
Giao diện Query Builder của Grafana, giúp người dùng dễ dàng xây dựng truy vấn InfluxQL để trực quan hóa dữ liệu giám sát nhà thông minh.
Truy vấn này hiện tại sẽ hoạt động, vì vậy ở phía trên cùng, hãy nhấp vào Add (Thêm) và thêm nó vào một dashboard mới. Đặt tên cho dashboard nếu được yêu cầu, và bạn sẽ thấy một trang với biểu đồ ở phía trên bên trái. Bây giờ chúng ta sẽ sửa đổi biểu đồ đã được thêm bằng cách di chuột qua nó, nhấp vào menu ba chấm ở phía trên bên phải và chọn Edit (Chỉnh sửa).
Tùy Chỉnh Biểu Đồ Gauge Để Hiển Thị Dữ Liệu Hiệu Quả
Hiện tại, tất cả những gì nó hiển thị là các giá trị đọc chính xác được thu thập tại những thời điểm cụ thể về dung lượng lưu trữ còn lại trên máy Mac của chúng tôi. Nó không thực sự đẹp mắt, nhưng chúng ta sẽ thay đổi điều đó. Ở phía trên bên phải, nhấp vào Time series (Chuỗi thời gian) và bạn sẽ thấy hàng loạt tùy chọn khác. Thay đổi nó thành Gauge (Đồng hồ đo), và ngay lập tức giao diện sẽ trông tốt hơn đáng kể.
Với các bước này, bạn đã có thể đặt một tiêu đề và đây sẽ là một biểu đồ hoàn toàn có thể sử dụng được trên dashboard của mình. Tuy nhiên, chúng ta sẽ thực hiện một thay đổi nhỏ để nó trông còn đẹp hơn nữa. Cuộn xuống menu bên phải và tìm đến mục thresholds (ngưỡng). Thay đổi nó từ Absolute (Tuyệt đối) sang Percentage (Phần trăm), và điều chỉnh giá trị phần trăm. Chúng tôi đã thay đổi thành 10%, 20% và 30%.
Giao diện chỉnh sửa biểu đồ trong Grafana, cho phép tùy chỉnh các tham số hiển thị dữ liệu thu thập từ thiết bị nhà thông minh.
Điều này hoạt động, nhưng có một vấn đề: các màu sắc có lẽ nên được hoán đổi, phải không? Nó hoạt động bằng cách đọc các màu chúng ta đã gán cho nó, và màu chủ đạo của đồng hồ đo được chọn dựa trên ngưỡng mà giá trị đang nằm trong.
May mắn thay, đây là một cách sửa chữa khá dễ dàng! Nhấp vào biểu tượng màu sắc bên cạnh mỗi phần trăm, và chỉ cần hoán đổi thứ tự của chúng. Đồng hồ đo của bạn bây giờ sẽ có màu xanh lá cây (giả sử bạn đang ở trên ngưỡng 30%), và các màu sắc đại diện cho các phần trăm bây giờ sẽ mang lại cảm giác tự nhiên hơn.
Hướng dẫn tạo biểu đồ Gauge trong Grafana, minh họa cách thiết lập ngưỡng và màu sắc để giám sát các chỉ số quan trọng trong nhà thông minh.
Trực Quan Hóa Dữ Liệu: Giá Trị Thực Tiễn Cho Nhà Thông Minh
Xem Mọi Thứ Chỉ Trong Nháy Mắt
Mặc dù đây chỉ là một biểu đồ khá cơ bản, nhưng có vô số dashboard khác nhau được thiết kế để chấp nhận mọi loại dữ liệu đầu vào nhằm trực quan hóa ngôi nhà thông minh của bạn. Cá nhân chúng tôi đang rất say mê Home Assistant gần đây, đã sắm thêm một số cảm biến và đặt hàng trực tuyến thêm nhiều thiết bị khác. Chúng tôi có thể đẩy tất cả dữ liệu vào InfluxDB và đọc ra bằng Grafana để tạo các dashboard tùy chỉnh, và chúng trông thật tuyệt vời. Mặc dù dashboard của chúng tôi hiện tại vẫn còn đơn giản hơn một biểu đồ đơn lẻ, chúng tôi đang trong quá trình mở rộng nó.
Biểu đồ Gauge hoàn chỉnh trong Grafana, hiển thị trực quan phần trăm lưu trữ của thiết bị, là một phần của dashboard giám sát nhà thông minh.
Cá nhân chúng tôi sẽ thiên về sử dụng dashboard của Home Assistant cho hầu hết các tác vụ trực quan hóa cơ bản. Tuy nhiên, sức mạnh mà Grafana mang lại gần như không thể sánh bằng. Có quá nhiều điều bạn có thể làm với nó, và đây là một hệ thống đáng giá để thiết lập và vận hành một khi bạn đã làm chủ được. Chắc chắn, các dịch vụ khác nhau có thể hơi khó tính, nhưng bạn sẽ có được rất nhiều quyền kiểm soát. Bạn thậm chí có thể thiết lập một khóa API trong Grafana để Home Assistant có thể đọc từ đó, sau đó thêm các biểu đồ của bạn dưới dạng đối tượng camera trong Home Assistant để hiển thị trên dashboard của bạn. Mặc dù Home Assistant có thể biểu đồ hóa dữ liệu cho bạn, Grafana cung cấp nhiều tùy chọn hơn đáng kể.
Dù lựa chọn của bạn là gì, chúng tôi thực sự khuyên bạn nên thiết lập một dịch vụ trực quan hóa nào đó cho ngôi nhà thông minh của mình. Bạn có thể nhìn thấy mọi thứ ở một nơi, và bạn có thể thiết lập cảnh báo thông qua các công cụ như Home Assistant nếu có điều gì đó không ổn. Hiện tại, chúng tôi nhận được thông báo nếu độ ẩm quá cao, và chúng tôi có thể mua một máy hút ẩm tích hợp Home Assistant nếu muốn tự động hóa hoàn toàn quá trình này.
Nhà thông minh là một hố thỏ (rabbit hole) đầy thú vị, và nó có thể mang lại rất nhiều giá trị khi bạn bắt đầu khám phá. Hệ thống giám sát nhà thông minh với InfluxDB, Home Assistant và Grafana là một bước tiến vượt trội để bạn kiểm soát và tối ưu hóa không gian sống của mình.
Lời kết: Hy vọng bài viết này đã cung cấp cho bạn cái nhìn sâu sắc và hướng dẫn chi tiết để kiến tạo một hệ thống giám sát nhà thông minh mạnh mẽ. Bạn đã thử nghiệm giải pháp nào để giám sát ngôi nhà thông minh của mình? Hãy chia sẻ ý kiến và kinh nghiệm của bạn với dancongnghe.net trong phần bình luận bên dưới!