Cái duyên của bản thân với IoT
- Từ thời sinh viên 11 năm trước, lọ mọ với Arduino: điều khiển thiết bị điện bật/tắt qua bluetooth, qua web: với kiến trúc cực thô sơ của 1 sinh viên xây dựng thích lập trình – đọc ghi file/text trên webserver (https://www.youtube.com/watch?v=Hc2v2WDbe7s)
- Rồi sau khi ra trường, ngành xây dựng manh nha chuyển đổi số:
- BIM: dấn thân vào mảng lập trình phần mềm cho xây dựng trong những năm đầu đi làm.
- Nhận ra BIM chỉ là một phần trong bức tranh lớn hơn: số hóa quy trình, số hóa dữ liệu, và xa hơn nữa là kết nối dữ liệu vận hành thực tế vào hệ thống phần mềm
- Digital Twin: bản sao số – tiếp xúc và làm một số dự án 3D tích hợp các thiết bị IoT.
- Nhận thấy hiện tại Digital Twin chưa phát triển được ở Việt Nam.
- Chuyển hướng làm phần mềm chuyển đổi số cho Doanh nghiệp: HRM, Tài sản, Quy trình tạm ứng/thanh toán, Bảo trì, Vận hành nội bộ..
- Duyên với IoT quay lại: làm 1 dự án theo dõi chỉ số điện/nước/gas cho 1 nhà máy: Sensor -(RS485)-> Gateway -> Broker -> Cloud -> Web.
- Làm mọi công đoạn từ thiết lập gateway, lập trình, cài đặt hệ thống: nhận ra IoT không phải chỉ là cảm biến hay thiết bị, mà là cả 1 hạ tầng phục vụ nó phía sau.
- Bây giờ: chuyển đổi số là xu hướng bắt buộc, IoT là một trong các trụ cột công nghệ chính cần làm chủ. Thực tế là hiếm có một thiết bị nào bây giờ mà không kết nối internet.
- Bản thân may mắn có đủ bộ kĩ năng thực tế lẫn kiến thức ngành: xây dựng, IT, 1 ít của lập trình nhúng -> triển khai end to end.
=> Đòi hỏi 1 hạ tầng đằng sau, là xương sống để các thiết bị IoT kết nối và truyền tải, xử lý dữ liệu.
– Sau đây là bài viết dài liên quan đến kĩ thuật của dự án mà bản thân đã thực hiện, cũng là đồ án tốt nghiệp VB2 CNTT:
IoT Infrastructure Platform – Nền tảng hạ tầng cho hệ thống Internet of Things
Trong các hệ thống IoT, dữ liệu thường được sinh ra liên tục từ nhiều thiết bị phân tán: cảm biến môi trường, thiết bị giám sát nhà máy, hệ thống năng lượng, tòa nhà thông minh, thiết bị nông nghiệp hoặc các trạm quan trắc từ xa.
Vấn đề không chỉ là “thiết bị gửi dữ liệu lên server”, mà là làm sao để xây dựng một nền tảng có thể:
- quản lý thiết bị theo project;
- định danh gateway và sensor;
- tiếp nhận dữ liệu liên tục;
- xử lý message bất đồng bộ;
- lưu trữ dữ liệu time-series;
- theo dõi trạng thái online/offline;
- truy vấn dữ liệu theo thời gian;
- hiển thị dashboard trực quan cho người vận hành.
Từ bài toán đó => xây dựng một **IoT Infrastructure Platform** => mục tiêu mô phỏng một nền tảng IoT end-to-end từ thiết bị đến dashboard.
Hệ thống được thiết kế theo mô hình **Gateway–Sensor**. Gateway là thiết bị kết nối trực tiếp đến nền tảng thông qua MQTT, còn sensor nằm dưới gateway. Gateway sẽ gửi heartbeat định kỳ để báo trạng thái hoạt động, đồng thời gửi telemetry payload gồm dữ liệu của chính gateway và các sensor trực thuộc.
Luồng xử lý chính của hệ thống:
Gateway / Simulator → MQTT Broker → MQTT-Kafka Bridge → Kafka → Database Service → InfluxDB → API → Web Dashboard
Trong kiến trúc này:
- MQTT Broker: đóng vai trò tiếp nhận kết nối từ gateway, xác thực thiết bị và nhận dữ liệu heartbeat/telemetry.
- MQTT-Kafka Bridge: đóng vai trò subscribe dữ liệu từ broker, validate payload và publish dữ liệu sang Kafka.
- Kafka: được dùng làm tầng trung gian để tách lớp tiếp nhận dữ liệu khỏi lớp xử lý phía sau, giúp hệ thống dễ mở rộng hơn khi lượng message tăng.
→ Từ đây có thể tạo thêm nhiều service để đọc dữ liệu từ Kafka, phục vụ nhiều mục đích khác nhau.
Ví dụ: Đọc dữ liệu từ Kafka để lưu trữ iot data, phục vụ query data cho web dashboard:
- Database Service: consume dữ liệu từ Kafka, kiểm tra message, tách dữ liệu gateway và sensor, sau đó ghi vào cơ sở dữ liệu time-series.
- InfluxDB: được sử dụng để lưu trữ telemetry theo thời gian, phù hợp với các dạng dữ liệu cảm biến sinh liên tục.
- API Service: cung cấp các endpoint phục vụ dashboard, bao gồm trạng thái thiết bị, latest telemetry và dữ liệu telemetry theo khoảng thời gian.
- Web Dashboard: giúp người dùng quản lý project, gateway, sensor, theo dõi trạng thái online/offline và xem biểu đồ dữ liệu theo thời gian.
Về mặt ứng dụng, nền tảng này có thể là phần lõi cho nhiều hệ thống IoT khác nhau, ví dụ:
- giám sát nhiệt độ, độ ẩm, ánh sáng trong nhà kính;
- theo dõi thiết bị trong nhà máy;
- quan trắc môi trường;
- giám sát điện năng hoặc thiết bị năng lượng;
- hệ thống smart building;
- dashboard vận hành cho các cụm thiết bị phân tán.
Điểm tập trung khi thiết kế hệ thống là xây dựng một pipeline rõ ràng, có thể mở rộng và dễ quan sát. Dữ liệu đi qua từng lớp với trách nhiệm riêng: thiết bị gửi dữ liệu, broker nhận dữ liệu, Kafka điều phối message.
→ Với mục đích lưu trữ và trực quan hóa dữ liệu: worker xử lý và lưu trữ, API phục vụ truy vấn, dashboard hiển thị cho người dùng cuối.
Hiện tại hệ thống đang ở mức nền tảng demo, nhưng có thể tiếp tục phát triển thêm nhiều hướng thực tế hơn như:
- rule engine để cảnh báo khi dữ liệu vượt ngưỡng;
- realtime notification;
- TLS/mTLS cho MQTT;
- dashboard vận hành nâng cao;
- phân tích dữ liệu lịch sử;
- predictive maintenance;
- và nhiều ngữ cảnh, ứng dụng khác…
Với tôi, đây là một bài toán thú vị vì nó kết hợp nhiều mảng quan trọng trong backend engineering: thiết kế kiến trúc, message-driven system, time-series data, device management, API design và dashboard visualization.
#IoT #IoTPlatform #SystemDesign #BackendEngineering #Kafka #MQTT #InfluxDB #DotNet #Angular #DataPipeline #SoftwareArchitecture
