Image default
Máy Tính

Tự xây dựng Dashboard nhà thông minh chuyên nghiệp với Home Assistant, Grafana, InfluxDB

Trong thế giới nhà thông minh (smart home) ngày càng phát triển, việc giám sát và trực quan hóa dữ liệu từ các thiết bị là yếu tố then chốt để hiểu rõ hơn về ngôi nhà của bạn và tối ưu hóa hoạt động. Có rất nhiều lựa chọn để thực hiện điều này, từ các công cụ như Prometheus hay Home Assistant với vô số tích hợp, cho đến Grafana, InfluxDB, hoặc kết hợp tất cả. Với vai trò là một người đam mê công nghệ và mong muốn kiểm soát tối đa hệ thống nhà thông minh của mình, 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. Mặc dù quá trình này đòi hỏi không ít công sức ban đầu, nhưng kết quả cuối cùng hoàn toàn xứng đáng với một dashboard trực quan, hiển thị dữ liệu thời gian thực mọi lúc.

Hệ thống của tôi được triển khai trên TrueNAS, sử dụng các image Docker chính thức cho tất cả các ứng dụng này. Tôi đã cài đặt Telegraf trên máy Mac để thu thập dữ liệu và đưa vào InfluxDB. Sau đó, tất cả dữ liệu này được đọc từ InfluxDB và hiển thị trên Grafana, với các truy vấn được viết bằng InfluxQL. Kết quả là một bảng điều khiển (dashboard) tuyệt đẹp, cung cấp các biểu đồ thời gian thực về nhiều khía cạnh khác nhau của ngôi nhà thông minh, giúp tôi dễ dàng theo dõi và quản lý.

Thiết lập InfluxDB và Telegraf: Thử thách lớn nhất

Những thay đổi quan trọng trong InfluxDB 2.0

Không nghi ngờ gì nữa, việc thiết lập InfluxDB là phần khó khăn nhất trong toàn bộ quá trình, đặc biệt là với những thay đổi trong cách thức hoạt động của InfluxDB từ phiên bản 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ỉ cho phép một định dạng cụ thể – đó là định dạng Telegraf. Thay đổi này được lý giải là nhằm giảm thiểu số lượng định dạng mà InfluxDB cần hỗ trợ, đồng nghĩa với việc bạn không còn có thể sử dụng Graphite hoặc SNMP một cách trực tiếp. Mặc dù đây là một thay đổi tốt về mặt dài hạn, 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 cài đặt, bạn sẽ nhận được một mã API token. Hãy đảm bảo lưu trữ mã này ở một nơi an toàn, vì đây là một mã cực kỳ quan trọng mà bạn sẽ sử dụng rất nhiều lần sau này.

Việc cài đặt container và cấu hình tổ chức (organization) cùng tài khoản của tôi diễn ra khá dễ dàng. Tuy nhiên, việc tìm cách để Telegraf hoạt động mới là phần tôi gặp nhiều khó khăn nhất. Trong trường hợp của tôi, sau khi thêm một thiết bị Telegraf vào InfluxDB, nó đã cung cấp cho tôi mã 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 như sau:

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 tôi sử dụng wget để tải file cấu hình về và kiểm tra, tôi nhận ra rằng nó đang cố gắng chia sẻ dữ liệu đến 192.168.1.1, vốn là địa chỉ gateway mặc định của tôi, rõ ràng là không chính xác. Tôi đã phải sửa đổi cấu hình để thêm chức năng thu thập thông tin CPU và thay đổi địa chỉ IP thành 192.168.1.5. Sau đó, tôi chạy lại lệnh nhưng trỏ đến file cấu hình cục bộ mà tôi đã tải về và chỉnh sửa. Lần này, mọi thứ hoạt động trơn tru và 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à bạn có thể thu thập dữ liệu, hãy tham khảo 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 chỉ cần 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 chia sẻ tự động với máy chủ InfluxDB. Bạn hoàn toàn có thể kiểm tra dữ liệu và tạo dashboard ngay trong InfluxDB nếu muốn, nhưng cá nhân tôi thích chuyển mọi thứ sang Grafana để trực quan hóa toàn diện hơn.

Tích hợp Home Assistant với InfluxDB

Bước tiếp theo, tôi thiết lập Home Assistant để xuất dữ liệu của nó sang InfluxDB. Tích hợp InfluxDB của Home Assistant là một tích hợp legacy, nghĩa là nó chỉ được kiểm soát thông qua một file YAML. Bạn sẽ cần chỉnh sửa 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 cụ thể về cách thực hiện và những gì bạn cần thêm tùy thuộc vào thiết lập của mình tại đây. Các bước cần thực hiện để chỉnh sửa file này sẽ khác nhau tùy thuộc vào cách bạn chạy Home Assistant (ví dụ: chạy trên Raspberry Pi, Docker, hoặc máy ảo).

Một khi bạn đã cấu hình mọi thứ và có thể thấy dữ liệu của mình xuất hiện trong InfluxDB, bạn đã sẵn sàng chuyển sang Grafana để tạo các dashboard chuyên nghiệp.

Cài đặt Grafana: Thu thập mọi dữ liệu về một nơi

Đưa tất cả dữ liệu của bạn vào Grafana

Thêm InfluxDB vào GrafanaThêm InfluxDB vào Grafana

Việc cài đặt và chạy Grafana tương đối dễ dàng hơn, vì bạn chỉ cần trỏ nó đến InfluxDB. Trong giao diện Grafana, bạn 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ỉ mà bạn sử dụng để truy cập InfluxDB (ví dụ: IP của máy chủ 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: Mã API token mà bạn đã nhận được khi thiết lập InfluxDB.

Tất cả các trường khác có thể bỏ qua. Sau đó, nhấp vào Save & test (Lưu và 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 của mình.

Tạo Dashboard đầu tiên: Trực quan hóa dữ liệu đẹp mắt

Xây dựng các biểu đồ hiển thị đẹp mắt

Dashboard Grafana, hiển thị mức sử dụng CPU và lưu trữ của Mac, cùng nhiệt độ và độ ẩm phòng ngủ/phòng khách.Dashboard Grafana, hiển thị mức sử dụng CPU và lưu trữ của Mac, cùng nhiệt độ và độ ẩm phòng ngủ/phòng khách.

Có rất nhiều template dashboard Grafana có sẵn để bạn tham khảo và tùy chỉnh. Tuy nhiên, chúng ta sẽ bắt đầu bằng cách tạo một vài biểu đồ cơ bản để bạn làm quen với cách xây dựng dashboard riêng của mình. Để bắt đầu, hãy chuyển đến tab Explore (Khám phá) ở bên trái.

Grafana sử dụng một công cụ xây dựng truy vấn (query builder) khi bạn sử 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 tự viết tất cả các truy vấn. Chúng ta sẽ tạo biểu đồ phần trăm lưu trữ mà 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 của tôi thông qua Telegraf, chuyển đến InfluxDB và sau đó được Grafana đọc.

Trình xây dựng truy vấn GrafanaTrình xây dựng truy vấn Grafana

Trong công cụ xây dựng truy vấn, bạn có thể chọn những gì bạn muốn đọc, từ đâu và thêm các điều kiện lọc. Trong trường hợp này, việc này tương đối đơn giản, vì tôi chỉ cần đọc trường “% remaining” (phần trăm còn lại), vì máy Mac của tôi là thiết bị duy nhất báo cáo. Nếu tôi có các thiết bị khác báo cáo, tôi cũng sẽ cần chỉ định thiết bị đó.

Truy vấn này hiện tại đã hoạt động, vì vậy ở phía trên, nhấp vào Add và thêm nó vào một dashboard mới. Nếu được hỏi, hãy đặt tên cho dashboard của bạn. Bạn sẽ thấy một trang với biểu đồ ở góc trên bên trái. Bây giờ chúng ta sẽ chỉnh sửa biểu đồ vừa được thêm vào bằng cách di chuột qua nó, nhấp vào menu ba chấm ở góc trên bên phải và chọn Edit (Chỉnh sửa).

Grafana chỉnh sửa biểu đồGrafana chỉnh sửa biểu đồ

Hiện tại, tất cả những gì biểu đồ hiển thị là các giá trị đọc chính xác tại các thời điểm cụ thể về dung lượng lưu trữ còn lại trên máy Mac của tôi. Nó không thực sự đẹp mắt, nhưng chúng ta sẽ thay đổi điều đó. Ở góc trên bên phải, nhấp vào Time series (Chuỗi thời gian) và bạn sẽ thấy rất nhiều tùy chọn khác. Thay đổi nó thành Gauge (Đồng hồ đo), và nó trông đã tốt hơn đáng kể.

Với thay đổi này, bạn có thể đặt một tiêu đề và đây đã là một biểu đồ hoàn toàn có thể sử dụng trên dashboard của bạn. Tuy nhiên, chúng ta sẽ thực hiện một thay đổi nhỏ để nó trông đẹp mắt 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à thay đổi giá trị phần trăm. Tôi đã thay đổi nó thành 10%, 20% và 30%.

Grafana tạo biểu đồ gaugeGrafana tạo biểu đồ gauge

Thiết lập này hoạt động, nhưng có một vấn đề: màu sắc có lẽ nên được hoán đổi, phải không? Biểu đồ 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 bởi vị trí mà chúng ta nằm trong ngưỡng.

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 sẽ có cảm giác tự nhiên hơn.

Lợi ích của việc trực quan hóa dữ liệu nhà thông minh

Theo dõi mọi thứ chỉ trong nháy mắt

Biểu đồ gauge hoàn chỉnh trong GrafanaBiểu đồ gauge hoàn chỉnh trong Grafana

Mặc dù đây chỉ là một biểu đồ khá cơ bản, nhưng có vô số dashboard khác đượ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. Gần đây, tôi đã đầu tư rất nhiều vào Home Assistant, mua thêm một số cảm biến và đặt hàng trực tuyến nhiều thiết bị khác. Tôi có thể đưa tất cả dữ liệu vào InfluxDB và đọc nó ra bằng Grafana để tạo các dashboard của riêng mình, và chúng trông thực sự tuyệt vời. Hiện tại, tôi có một dashboard phức tạp hơn một biểu đồ đơn lẻ, mặc dù nó vẫn đang trong quá trình mở rộng.

Cá nhân tôi sẽ nghiêng về việc sử dụng dashboard của Home Assistant cho hầu hết các trực quan hóa cơ bản, nhưng 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 để thiết lập và vận hành một khi bạn đã làm quen. Chắc chắn, các dịch vụ khác nhau có thể hơi khó tính ban đầu, 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 dữ liệu từ đó, và 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. Trong khi Home Assistant có thể tạo biểu đồ dữ liệu cho bạn, Grafana cung cấp nhiều tùy chọn hơn đáng kể.

Tuy nhiên, dù bằng cách nào, 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ể xem mọi thứ ở một nơi duy nhất và có thể thiết lập cảnh báo thông qua Home Assistant nếu có điều gì đó không ổn. Hiện tại, tôi nhận được thông báo nếu độ ẩm quá cao, và 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 “lỗ thỏ” (rabbit hole) đầy thú vị để khám phá, nhưng nó có thể mang lại những phần thưởng vô cùng xứng đáng một khi bạn bắt đầu.

Bạn đã từng tự xây dựng hệ thống giám sát nhà thông minh của riêng mình chưa? Hãy chia sẻ kinh nghiệm và các công cụ yêu thích của bạn trong phần bình luận bên dưới nhé!

Related posts

HiFile: Trình Quản Lý Tệp Tin Đa Nền Tảng Liệu Có Đánh Bại Finder và File Explorer?

Administrator

Mẹo tối ưu Mac để tăng năng suất làm việc và hiệu quả không ngờ

Administrator

Tại Sao AnyDesk Là Lựa Chọn Hàng Đầu Của Tôi So Với TeamViewer và Chrome Remote Desktop

Administrator