
Tuyển tập Hội nghị Khoa học thường niên năm 2024. ISBN: 978-604-82-8175-5
300
XÂY DỰNG HỆ THỐNG THU THẬP DỮ LIỆU
CHUỖI THỜI GIAN
Lê Trung Dũng
Trường Đại học Thủy lợi, email: dung_lt@tlu.edu.vn
1. GIỚI THIỆU CHUNG
Hiện nay việc thu thập dữ liệu chuỗi thời
gian thường phải dùng hệ thống server trên
nền tảng điện toán đám mây để lưu trữ và
giám sát dữ liệu. Ngoài ra người dùng cũng
có thể tự xây dựng hệ thống server trong nhà
cùng với các thiết bị IoT.
Tuy nhiên, khi sử dụng nền tảng điện toán
đám mây, hệ thống có thể phải đối mặt với
nguy cơ rò rỉ dữ liệu qua môi trường Internet.
Có nhiều dự án mã nguồn mở cho phép
người dùng tự phát triển thiết bị điều khiển
giám sát nhà thông minh, như Thinger.io [1],
openHAB [2], hay Home Assistant [3]. Tuy
nhiên khi dữ liệu phát triển nhanh chóng, hệ
thống có nhu cầu sủ dụng hệ thống lưu trữ dữ
liệu lớn. Điều này sẽ gặp khó khăn với các hệ
thống trên. Ngoài ra, khi phát triển hệ thống
này, người dùng gặp khó khăn khi hệ thống
địa chỉ IP thường xuyên thay đổi. Điều này
dẫn tới việc điều khiển từ xa qua Internet gặp
khó khăn khi xác định địa chỉ IP động của
ngôi nhà.
Bài báo đưa ra giải pháp thường xuyên cập
nhật địa chỉ IP vào địa chỉ tên miền đã được
xác định thông qua dịch vụ miễn phí của
Duck Duck DNS [4]. Đồng thời với giải pháp
tự xây dựng máy chủ chứa dữ liệu chuỗi thời
gian, tác giả đã xây dựng thành công hệ
thống điều khiển giám sát và lưu trữ dữ liệu
lớn dựa trên nền tảng mã nguồn mở. Ngoài
ra, hệ thống không sử dụng dịch vụ điện toán
đám mây, đảm bảo tính riêng tư và bảo mật
trên môi trường Internet.
2. HỆ THỐNG LƯU TRỮ DỮ LIỆU CHUỖI
THỜI GIAN THỰC
Hệ thống sử dụng InfluxDB [5], cơ sở dữ
liệu nguồn mở phổ biến nhất dành cho các
nhà phát triển quản lý dữ liệu chuỗi thời gian.
InfluxDB có thể cài đặt ở mọi môi trường, từ
các thiết bị IoT, máy tính, hay các thiết bị
biên (edge computing).
2.1. Tổng quan cấu trúc của hệ thống
Hình 1 mô tả tổng quan cấu trúc của hệ
thống. Trong đó hệ thống được triển khai trên
3 phần: hệ thống cơ sở dữ liệu chuỗi thời
gian; hệ thống cảm biến thông minh; hệ
thống giao diện giám sát. Các thành phần này
đều không nằm trên cùng một mạng máy tính
cục bộ. Mọi kết nối đều được thực thi qua
môi trường Internet. Người dùng có thể truy
cập, giám sát các thông số của hệ thống
thông qua môi trường Internet. Hệ thống
không dùng nền tảng điện toán đám mây nên
có thể tránh được nguy cơ rò rỉ dữ liệu thông
qua dịch vụ của nhà cung cấp.
Hình 1. Tổng quan cấu trúc của hệ thống

Tuyển tập Hội nghị Khoa học thường niên năm 2024. ISBN: 978-604-82-8175-5
301
2.2. Cảm biến
Hệ thống cho phép giám sát, tự động thu
thập dữ liệu chuỗi thời gian như cảm biến
nhiệt độ, độ ẩm... từ các thiết bị IoT nhỏ gọn
như ESP8266 và cảm biến DHT11. Dữ liệu
sẽ được gửi về máy chủ thông qua tên miền
được cấp bởi dịch vụ miễn phí.
2.3. Cơ sở dữ liệu
Máy chủ lưu trữ dữ liệu được triển khai
trên máy tính chạy hệ điều hành Linux và hệ
thống cơ sở dữ liệu chuỗi thời gian. Điều này
cho phép hệ thống có thể triển khai trên nền
tảng dữ liệu lớn. Không gian nhớ có thể mở
rộng theo quy mô của bài toán mà không bị
giới hạn bởi cấu hình của thiết bị.
2.4. Giao diện giám sát
Giao diện giám sát được triển khai trên hệ
điều hành Home Assistant với tiện ích bổ sung
InfluxDB và phần cứng Raspberry Pi 4B.
3. KẾT QUẢ NGHIÊN CỨU
Hệ thống được xây dựng dựa trên thiết bị
IoT để thu thập dữ liệu và gửi về máy chủ.
Trong đó, máy chủ được cài đặt hệ điều hành
Ubuntu 22.04 LTS, và hệ thống cơ sở dữ liệu
InfluxDB. Hệ thống máy chủ web dùng để
hiển thị, giám sát dữ liệu được thực thi trên
máy tính nhúng Raspberry Pi 4B, 4GB Ram
với hệ điều hành Home Assistant.
3.1. Nút cảm biến
Cảm biến đo nhiệt độ, độ ẩm được thực thi
trên DHT11 và ESP8266Wifi có kích thước
nhỏ gọn. Lập trình trên bộ công cụ Adruino
IDE. Cảm biến tự động gửi dữ liệu về máy chủ
tại địa chỉ www.smarthomedhtl.duckdns.org
như hình 2 mô tả.
Hình 2. Giám sát dữ liệu trên ESP8266
Ngoài khả năng gửi dữ liệu về hệ thống
lưu trữ cơ sở dữ liệu chuỗi thời gian, cảm
biến được thực thi trên thiết bị IoT là
ESP8266 có thể được giám sát trực tiếp các
thông số thông qua WebServer triển khai trên
địa chỉ IP của thiết bị. Hình 2 mô tả các
thông số của cảm biến trên địa chỉ IP của
ESP8266 là 192.168.0.106.
3.2. Duck DNS
Duck DNS là một dịch vụ miễn phí dùng
để trỏ DNS (tên miền phụ của duckdns.org)
đến một IP bất kì. Do vậy, nếu triển khai dịch
vụ này trên máy chủ thì máy chủ thu thập dữ
liệu có thể nhận dữ liệu từ cảm biến mà không
gặp trở ngại về việc địa chỉ IP của hệ thống
thay đổi. Hệ thống sẽ tự động cập nhật tên
miền đã đăng ký với địa chỉ IP của máy chủ.
Sau đây là đoạn mã lệnh giúp cho hệ
thống Duck DNS cập nhật địa chỉ IP một
cách tự động.
Tạo file duck.sh tại đường dẫn
~/duckdns/duck.sh và chứa nội dung:
echo url="https://www.duckdns.org/update?
domains=smarthomedhtl&token=1800957a-
172b-4a2c-b829-1c3a67d1728c&ip=" | curl -k -o
~/duckdns/duck.log -K -
Cập nhật địa chỉ IP trỏ tới bởi tên miền
http://homedhtl.duckdns.org bằng cách:
+ Chỉnh sửa dịch vụ cron bằng lệnh
crontab -e
+ Đưa nội dung sau vào phần cuối để
Duck DNS cập nhật địa IP sau mỗi 5 phút:
*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1
3.3. Home Assistant
Home Assistant được cài đặt trên phần
cứng IoT Raspberry pi 4B [6]. Phiên bản
Home Assistant: Home Assistant 2023.5.4.
Hình 3. Màn hình đăng nhập Home Assistant

Tuyển tập Hội nghị Khoa học thường niên năm 2024. ISBN: 978-604-82-8175-5
302
Trên Hình 3, giao diện mô tả màn hình
đăng nhập hệ thống, Home Assistant, yêu cầu
đăng nhập theo tài khoản và mật khẩu của hệ
thống. Điều này giúp đảm bảo tính bảo mật
của hệ thống điều khiển và giám sát nhà
thông minh.
3.4. Kết nối máy chủ dữ liệu
Trên hệ điều hành Home Assistant có hệ
thống quản lý và cài đặt các tiện ích bổ sung.
Trong đó có tiện ích InfluxDB, tiện ích này
giúp cho việc kết nối máy chủ dữ liệu và
giám sát dữ liệu một cách dễ dàng.
Hình 4. Kết nối máy chủ InfluxDB
Hình 4 mô tả cách khai báo cấu hình để truy
cập dữ liệu chuỗi thời gian trên máy chủ được
tại địa chỉ http://smarthomedhtl.duckdns.org.
Trên đó hệ thống sẽ phải khai báo Token để
đảm bảo vấn đề bảo mật.
Hình 5. Giao diện giám sát dữ liệu
Hình 5 mô tả giao diện giám sát dữ liệu
nhiệt độ và độ ẩm. Giao diện này hoàn toàn
có thể mô tả dữ liệu trong một khoảng thời
gian dài theo yêu cầu của người dùng. Điều
này không thể có được nếu không triển khai
hệ thống lưu trữ dữ liệu như InfluxDB.
4. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
4.1. Kết luận
Bài báo đã tự xây dựng được hệ thống
giám sát từ xa dựa trên hệ thống cơ sở dữ liệu
chuỗi thời gian. Hệ thống máy chủ có thể tự
cấu hình để cập nhật địa chỉ IP với tên miền
đã đăng ký với dịch vụ miễn phí DuckDNS.
Máy chủ dữ liệu được phát triển trên hệ
thống cơ sở dữ liệu chuỗi thời gian InfluxDB,
có thể mở rộng cấu hình một cách dễ dàng
theo công nghệ dữ liệu lớn.
Ngoài ra, bài báo xây dựng hệ thống giao
diện giám sát dựa trên tiện ích mở rộng
InfluxDB trên hệ điều hành Home Assistant
và thiết bị nhúng Raspberry Pi 4B, điều này
giúp cho việc triển khai giao diện một cách
nhanh chóng.
Hệ thống hoàn toàn được triển khai trên
nền tảng mã nguồn mở, tự phát triển, không
dựa vào bất cứ dịch vụ điện toán đám mây
nào, điều này giúp cho việc tự chủ hệ thống,
giảm nguy cơ rò rỉ dữ liệu từ phía nhà cung
cấp dịch vụ.
4.2. Hướng phát triển của đề tài
Hệ thống có thể tiếp tục được mở rộng và
triển khai trên diện rộng với nhiều hệ thống
cơ sở dữ liệu hơn và nhiều loại cảm biến từ
nhiều vị trí địa lý khác nhau.
5. TÀI LIỆU THAM KHẢO
[1] Thinger.io, 2023. [Trực tuyến]. Available:
https://thinger.io/.
[2] openHAB, 2023. [Trực tuyến]. Available:
https://www.openhab.org/.
[3] Home Assistant, 2023. [Trực tuyến].
Available: https://www.home-assistant.io/.
[4] Duck DNS, 2023. [Trực tuyến]. Available:
https://www.duckdns.org/.
[5] Influxdata, 2024. [Trực tuyến]. Available:
https://www.influxdata.com/.
[6] Raspberry Pi, 2023. [Trực tuyến]. Available:
https://www.raspberrypi.com/.