Nghiên cứu xây dựng Back-end cho giao diện IoT trong việc giám sát quy trình sản xuất điện từ năng lượng mặt trời.Nghiên cứu xây dựng Back-end cho giao diện IoT trong việc giám sát quy trình sản xuất điện từ năng lượng mặt trời.Nghiên cứu xây dựng Back-end cho giao diện IoT trong việc giám sát quy trình sản xuất điện từ năng lượng mặt trời.
CƠ SỞ LÝ THUYẾT
Khái niệm mạng cảm biến
Mạng cảm biến (Sensor Network) là hệ thống gồm nhiều thiết bị cảm biến phân bố trong một khu vực cụ thể, nhằm thu thập và truyền tải thông tin về môi trường Mục tiêu chính của mạng cảm biến là tự động hóa quá trình thu thập dữ liệu, gửi chúng về trạm cơ sở để xử lý, phân tích và hiển thị thông tin.
Hệ thống mạng cảm biến bao gồm nhiều nút cảm biến liên kết với nhau, hoạt động tự động để giám sát, đo lường và thu thập dữ liệu về các thông số vật lý, hóa học và môi trường Mạng cảm biến không chỉ giúp theo dõi hiệu quả mà còn cung cấp thông tin quan trọng để hiểu rõ hơn về môi trường và các biến động diễn ra trong khu vực được theo dõi.
Mạng cảm biến đóng vai trò quan trọng trong nhiều lĩnh vực của cuộc sống, đặc biệt là trong ứng phó và cứu trợ thiên tai Các nút cảm biến với cảm biến nhiệt độ và mô-đun GPS tạo ra "bản đồ nhiệt độ" hữu ích cho công tác phòng cháy chữa cháy, đặc biệt là trong các vụ cháy rừng Bên cạnh đó, mạng cảm biến còn được áp dụng trong giám sát môi trường, quản lý tòa nhà thông minh, quản lý thiết bị máy móc, nông nghiệp, cũng như thu thập thông tin và do thám trong lĩnh vực quân sự.
1.1.2: Kiến trúc mạng cảm biến
Kiến trúc của mạng cảm biến bao gồm:
• Nút quản lý và nhiệm vụ
Hình 2: Kiến trúc mạng cảm biến không dây
Nút cảm biến có chức năng quan sát và thu thập thông tin từ môi trường xung quanh, giúp theo dõi các mục tiêu cố định hoặc di động Chúng có thể được xây dựng bằng các vi điều khiển như ESP8266, ESP32, STM32, Arduino, hoặc các máy tính nhúng như Raspberry Pi, Intel Galileo, Jetson Nano Nhiều nút cảm biến gần nhau về mặt địa lý hoặc chức năng sẽ được nhóm lại thành các trường cảm biến, giúp giảm độ phức tạp trong cấu hình mạng, tiết kiệm năng lượng và băng thông, đồng thời tăng khả năng quản lý và mở rộng hệ thống cảm biến.
Các Sink là thiết bị quan trọng trong việc thu thập, xử lý và quản lý dữ liệu từ các nút cảm biến trong mạng Sau khi thực hiện phân tích, lọc và chuyển đổi dữ liệu thu thập, Sink sẽ cung cấp kết quả cần thiết cho các ứng dụng và hệ thống khác.
Gửi dữ liệu về nút quản lý và nhiệm vụ, hay còn gọi là hệ thống trung tâm, máy chủ, thông qua các giao thức truyền thông như Internet là một phần quan trọng trong việc đảm bảo kết nối và quản lý hiệu quả.
Nút quản lý và nhiệm vụ, hay máy chủ, là những hệ thống sở hữu bộ xử lý mạnh mẽ, có khả năng lưu trữ khối lượng lớn dữ liệu từ các nút cảm biến Chúng thực hiện việc xử lý và phân tích dữ liệu, từ đó đưa ra kết luận về môi trường mà mạng theo dõi.
1.1.3: Mạng cảm biến và IoT
Công nghệ IoT (Internet Of Things) là hệ thống thiết bị được trang bị cảm biến, cho phép thu thập, xử lý và trao đổi dữ liệu qua Internet hoặc các mạng truyền thông IoT kết nối các "Things" trong cả khái niệm vật lý và mạng lưới, dựa trên việc truyền tải và tương tác thông tin giữa các thiết bị.
Hình 3: Ứng dụng mạng cảm biến trong hệ thống IoT
Mạng cảm biến là thành phần thiết yếu trong hệ thống IoT, chịu trách nhiệm đo đạc và thu thập dữ liệu từ môi trường như nhiệt độ, độ ẩm, ánh sáng, tiếng ồn và chất lượng không khí Sau khi thu thập, dữ liệu được xử lý ngay tại nút cảm biến và truyền tải qua nhiều loại kết nối khác nhau, bao gồm mạng không dây như Wi-Fi, Zigbee, LoRa, cũng như mạng di động 3G, 4G, 5G và mạng có dây như cáp quang.
Mạng cảm biến không chỉ thu thập và truyền tải dữ liệu mà còn có khả năng điều khiển thiết bị dựa trên thông tin thu thập được, ví dụ như kích hoạt thiết bị làm mát khi cảm biến nhiệt độ phát hiện nhiệt độ tăng cao Quản lý năng lượng là một khía cạnh quan trọng mà mạng cảm biến đảm nhận, đặc biệt trong môi trường có tài nguyên năng lượng hạn chế.
Hệ thống IoT có thể được tối ưu hóa để tiết kiệm năng lượng và nâng cao hiệu suất truyền tải thông tin nhờ vào việc tận dụng thông tin từ mạng cảm biến Mạng cảm biến không chỉ giới hạn trong một lĩnh vực mà còn được ứng dụng rộng rãi trong nhiều lĩnh vực như quản lý sản xuất, quản lý năng lượng, logistics, y tế, giáo dục và nhiều lĩnh vực IoT khác.
Khái niệm Website
Website là tập hợp các trang web liên quan, được trình bày trên Internet qua một tên miền chung Mỗi trang web có thể chứa nhiều loại nội dung như văn bản, hình ảnh, video và các tài nguyên khác Các trang web thường được lưu trữ trên một hoặc nhiều máy chủ web, cho phép người dùng truy cập thông qua trình duyệt web.
Hình 4: Kiến trúc cơ bản của một Website
Trang web phục vụ nhiều mục đích khác nhau như chia sẻ thông tin, giáo dục, mua sắm trực tuyến, giải trí, và tạo không gian mạng xã hội Liên kết giữa các trang giúp người dùng dễ dàng điều hướng và tìm kiếm thông tin Tùy thuộc vào mục đích, một trang web có thể bao gồm nhiều trang và cung cấp các tính năng tương tác như ô tìm kiếm, biểu đồ, và form nhập liệu để nâng cao trải nghiệm người dùng.
Giao diện IoT, hay còn gọi là IoT Web Dashboard, đóng vai trò quan trọng trong hệ thống IoT, cho phép người dùng theo dõi và kiểm soát các thiết bị kết nối Được thiết kế dưới dạng trang web, giao diện này cung cấp cái nhìn tổng quan về trạng thái và hoạt động của thiết bị thông qua biểu đồ, số liệu và các yếu tố tương tác.
Hình 5: Giao diện IoT trong nông nghiệp thông minh
Web Dashboard trong nền tảng IoT giúp hiển thị dữ liệu thu thập từ cảm biến một cách trực quan, cả theo lịch sử và thời gian thực Người dùng có thể kết hợp các tập dữ liệu để tìm mối tương quan và lập trình hành động dựa trên các quy tắc đã được thiết lập, từ đó tối ưu hóa việc sử dụng dữ liệu.
Mô hình Client - Server là kiến trúc phần mềm bao gồm hai thành phần chính: Client (máy khách) và Server (máy chủ) Hai thành phần này tương tác để giao tiếp và truyền tải dữ liệu qua lại.
Hình 6: Mô hình Client - Server
Máy tính hoạt động như một Client, nghĩa là chúng không chia sẻ tài nguyên với các máy tính khác mà chỉ sử dụng tài nguyên từ máy chủ Một Client trong mô hình này có thể trở thành Server cho mô hình khác, tùy thuộc vào nhu cầu của người dùng.
Máy tính đóng vai trò là máy chủ, cung cấp tài nguyên và dịch vụ cho các máy khách trong hệ thống mạng Nó xử lý yêu cầu từ máy khách, thực hiện các tác vụ và trả về kết quả linh hoạt Máy chủ có khả năng cung cấp nhiều dịch vụ như lưu trữ dữ liệu, xử lý logic và xác thực người dùng, đồng thời thiết kế để chịu tải và xử lý nhiều yêu cầu đồng thời, đảm bảo hiệu suất và khả năng mở rộng Để giao tiếp giữa máy khách và máy chủ, cần có một giao thức nhất định, như HTTPS, TCP/IP, FTP Khi máy khách muốn lấy thông tin từ máy chủ, chúng phải tuân theo giao thức mà máy chủ quy định; nếu yêu cầu được chấp nhận, máy chủ sẽ thu thập thông tin và trả về kết quả cho máy khách.
Khái niệm Back-end
Back-end là phần quan trọng của hệ thống Web Server, đảm nhiệm việc xử lý logic và dữ liệu phía sau giao diện người dùng Được biết đến như phía máy chủ, Back-end quản lý các chức năng chính của Website Khi người dùng tương tác với Front-end, yêu cầu sẽ được gửi đến Back-end dưới định dạng HTTP, nơi Back-end sẽ xử lý và trả về phản hồi tương ứng.
1.3.2: Cơ chế hoạt động của Back-end
Khi Back-end xử lý một yêu cầu, nó thường sẽ tương tác với những thành phần trong Web Server như:
Máy chủ là một hệ thống máy tính cung cấp dịch vụ để đáp ứng yêu cầu từ các máy tính khác, thường là các máy tính phía trước (Front-end) thông qua mạng.
Ứng dụng Logic thực hiện các tác vụ mà người dùng yêu cầu, bao gồm xử lý dữ liệu, tương tác với cơ sở dữ liệu, xử lý logic và nhiều nhiệm vụ khác, giúp tối ưu hóa quy trình làm việc và nâng cao hiệu quả.
Cơ sở dữ liệu là hệ thống lưu trữ và quản lý thông tin, bao gồm dữ liệu người dùng, sản phẩm, giao dịch và nhiều loại dữ liệu khác Thông qua cơ sở dữ liệu, người dùng có thể dễ dàng truy xuất và quản lý các thông tin cần thiết cho hoạt động của hệ thống.
API, hay còn gọi là các giao diện lập trình ứng dụng, đóng vai trò quan trọng trong việc cho phép các thành phần của hệ thống tương tác, từ đó cung cấp thông tin và thực hiện các chức năng bổ sung hiệu quả.
Bảo mật đóng vai trò thiết yếu trong Back-end, giúp bảo vệ dữ liệu và chức năng của hệ thống khỏi các mối đe dọa và tấn công mạng.
1.3.3: Yêu cầu của Back-end trong hệ thống IoT
Back-end trong hệ thống IoT giữ vai trò quan trọng trong việc quản lý và xử lý dữ liệu từ các thiết bị kết nối Nó cần có khả năng xử lý khối lượng lớn dữ liệu theo thời gian thực và phân tích dữ liệu một cách chính xác để cung cấp thông tin hữu ích cho hệ thống.
Hình 7: Back-end của một hệ thống IoT được xây dựng bằng các dịch vụ của
Hệ thống IoT cần một Back-end có khả năng quản lý đăng ký và xác thực người dùng được ủy quyền, cho phép gửi, nhận và truy xuất dữ liệu Để đảm bảo an toàn cho dữ liệu truyền tải và lưu trữ, Back-end phải được triển khai các biện pháp bảo mật mạnh mẽ.
Yếu tố quản lý tài nguyên, đặc biệt là băng thông, dung lượng lưu trữ và xử lý tác vụ, là ưu tiên hàng đầu trong xây dựng hệ thống IoT đáp ứng nhu cầu sử dụng Mục tiêu phát triển chính của Back-end là tạo ra kiến trúc hệ thống IoT đáng tin cậy, đảm bảo thực hiện các chức năng ứng dụng một cách chính xác và hiệu quả.
KIẾN TRÚC BACK-END
Kiến trúc Back-end
Bài viết trình bày nghiên cứu xây dựng Back-end cho giao diện IoT nhằm giám sát quy trình sản xuất điện từ năng lượng mặt trời Kịch bản được đề xuất bao gồm kiến trúc Back-end cho hệ thống điện năng lượng mặt trời quy mô nhỏ, với ba nút cảm biến được lắp đặt trên ba hệ thống pin năng lượng mặt trời.
Hình 8: Kiến trúc hệ thống
Chúng ta sẽ tập trung vào việc phát triển Back-end cho giao diện IoT, nhằm giám sát quy trình sản xuất điện từ năng lượng mặt trời Hệ thống Back-end sẽ bao gồm các thành phần cần thiết để tối ưu hóa việc quản lý và theo dõi hiệu suất năng lượng.
3 phần chính: MQTT Broker, Web Server và Cơ sở dữ liệu.
Ngôn ngữ JavaScript và Node.js
JavaScript là ngôn ngữ lập trình quan trọng giúp tạo ra các trang web tương tác, từ việc làm mới bảng tin trên mạng xã hội đến việc hiển thị hình ảnh động và bản đồ tương tác Các chức năng của JavaScript không chỉ nâng cao trải nghiệm người dùng mà còn là một trong những công nghệ cốt lõi của World Wide Web.
JavaScript phía máy chủ là việc sử dụng ngôn ngữ này trong logic máy chủ Back-end, cho phép nó hoạt động trực tiếp trên máy chủ Các hàm JavaScript phía máy chủ có khả năng truy cập cơ sở dữ liệu, thực hiện các phép toán logic và phản hồi các tương tác từ máy khách Lợi ích lớn nhất của việc viết tập lệnh phía máy chủ là khả năng tùy chỉnh linh hoạt phản hồi của trang web dựa trên yêu cầu và quyền truy cập của người dùng, cũng như theo thông tin mà trang web cung cấp.
Node.js là môi trường runtime mã nguồn mở, đa nền tảng, cho phép chạy ứng dụng web bên ngoài trình duyệt Với mô hình hướng sự kiện không đồng bộ, Node.js là giải pháp lý tưởng cho các ứng dụng cần xử lý nhiều dữ liệu Nó cho phép lập trình viên sử dụng JavaScript để phát triển công cụ lập trình kịch bản phía máy chủ, đồng thời hỗ trợ tạo nội dung trang web động trước khi gửi đến trình duyệt của người dùng.
Giao thức MQTT
MQTT (Message Queuing Telemetry Transport) là giao thức nhắn tin nhẹ, được thiết kế cho việc giao tiếp hiệu quả giữa các thiết bị và hệ thống máy tính Được phát triển cho các ứng dụng IoT (Internet of Things), MQTT nhằm cung cấp một phương thức truyền thông đơn giản, tập trung vào việc truyền tải thông tin nhanh chóng và tiết kiệm băng thông cũng như năng lượng trong mạng IoT.
Hình 9: Mô hình giao thức MQTT
2.3.2: Các thành phần của MQTT
MQTT Broker là hệ thống Back-end quản lý việc truyền tải thông điệp giữa các máy khách khác nhau Nhiệm vụ chính của nó bao gồm nhận, lọc thông điệp, xác định máy khách đã đăng ký và gửi thông điệp đến các máy khách đó Ngoài ra, trình trung chuyển còn thực hiện nhiều tác vụ quan trọng khác.
• Ủy quyền và xác thực máy khách MQTT
• Chuyển thông điệp đến các hệ thống khác để phân tích thêm
• Xử lý các thông điệp bị bỏ lỡ và các phiên trên máy khách
Máy khách MQTT (MQTT Client) là thiết bị có thể là máy chủ hoặc bộ vi điều khiển, chạy thư viện MQTT Khi gửi thông điệp, nó hoạt động như bên gửi, và khi nhận thông điệp, nó trở thành bên nhận Tất cả các thiết bị giao tiếp qua MQTT trên mạng đều được gọi là thiết bị khách MQTT.
2.3.3: Cách thức hoạt động của MQTT
MQTT Publish cho phép xuất bản thông điệp chứa chủ đề (MQTT Topics) và dữ liệu (Message) dưới dạng byte Máy khách có thể xác định định dạng dữ liệu như văn bản, nhị phân, XML hoặc JSON Các máy khách đã đăng ký theo dõi chủ đề sẽ nhận được thông điệp, có thể là dữ liệu từ cảm biến, trạng thái thiết bị hoặc bất kỳ thông tin nào mà máy khách muốn chia sẻ.
Máy khách MQTT gửi thông điệp Subscribe đến trình truyền tải MQTT để nhận dữ liệu về các chủ đề mong muốn Thông điệp này bao gồm mã định danh duy nhất và danh sách đăng ký các chủ đề Khi nhận được thông điệp Subscribe, trình truyền tải MQTT sẽ ghi nhớ các chủ đề đã đăng ký và chuyển tiếp thông điệp tương ứng đến máy khách.
Bảo mật trong giao thức MQTT
Bảo mật trong giao thức MQTT được tổ chức thành nhiều lớp, mỗi lớp có chức năng ngăn chặn các loại tấn công khác nhau Do các thiết bị IoT thường có khả năng xử lý và dung lượng lưu trữ hạn chế, việc áp dụng các thuật toán mã hóa nặng có thể gặp khó khăn Vì lý do này, MQTT thường sử dụng các tiêu chuẩn bảo mật tiên tiến như SSL/TLS để đảm bảo an toàn trong quá trình truyền tải dữ liệu.
Sử dụng VPN (Mạng Riêng Ảo) là một giải pháp hiệu quả để đảm bảo kết nối an toàn và đáng tin cậy giữa khách hàng và MQTT Broker Việc này giúp mã hóa và bảo vệ thông tin truyền tải qua mạng, giảm thiểu nguy cơ tấn công và đánh cắp dữ liệu Tuy nhiên, cần lưu ý rằng VPN không hoàn toàn đảm bảo bảo mật thông tin, đặc biệt khi sử dụng VPN công cộng.
Khi sử dụng VPN, thông tin có thể bị đánh cắp nếu dịch vụ này bị tấn công Do đó, việc lựa chọn một nhà cung cấp VPN đáng tin cậy là rất quan trọng Người dùng nên kiểm tra kỹ lưỡng chính sách bảo mật của nhà cung cấp trước khi quyết định sử dụng dịch vụ để đảm bảo an toàn cho dữ liệu của mình.
Giao thức MQTT hoạt động dựa trên giao thức TCP (Transmission Control Protocol), nhưng theo mặc định, các kết nối TCP không được mã hóa Để bảo mật toàn bộ giao tiếp MQTT, nhiều MQTT Broker hỗ trợ sử dụng TLS (Transport Layer Security) hoặc SSL (Secure Sockets Layer) thay vì chỉ sử dụng TCP đơn giản.
Hình 10: Sơ đồ kiến trúc TLS
SSL là giao thức bảo mật mã hóa dữ liệu trước khi truyền, đảm bảo an toàn cho thông tin TLS, phiên bản nâng cấp của SSL, được phát triển để khắc phục những lỗ hổng bảo mật của SSL Cổng 8883 được sử dụng cho giao tiếp MQTT qua TLS, cung cấp kênh liên lạc an toàn, ngăn chặn việc đọc hoặc thay đổi nội dung bởi bên thứ ba.
2.4.3: Lớp ứng dụng Ở cấp độ truyền tải, thông tin liên lạc được mã hóa và danh tính được xác thực Giao thức MQTT cung cấp mã định danh khách hàng và thông tin xác thực tên người
Mật khẩu và các phương thức xác thực thiết bị ở cấp ứng dụng là yếu tố quan trọng trong giao thức MQTT Các thuộc tính này được cung cấp bởi giao thức và việc ủy quyền hay kiểm soát thông tin phụ thuộc vào quyền hạn mà MQTT Broker cấp cho người dùng.
Hệ quản trị cơ sở dữ liệu MySQL
MySQL là một hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến, cho phép lưu trữ, truy xuất và quản lý dữ liệu hiệu quả Hệ thống này hỗ trợ nhiều ngôn ngữ lập trình như PHP, Java, Python và C++, giúp các ứng dụng web và ứng dụng khác kết nối với cơ sở dữ liệu MySQL cung cấp các tính năng như tạo, sửa đổi và xóa cơ sở dữ liệu, truy vấn dữ liệu, quản lý người dùng và quyền truy cập, đồng thời đảm bảo tính toàn vẹn và an ninh cho dữ liệu.
2.5.2: Kiến trúc của hệ quản trị cơ sở dữ liệu MySQL
Hình 11: Kiến trúc hệ quản trị cơ sở dữ liệu MySQL
MySQL là hệ quản trị cơ sở dữ liệu quan hệ với kiến trúc ba tầng, bao gồm tầng khách hàng, tầng máy chủ và tầng lưu trữ.
Tầng khách hàng là nơi mà các ứng dụng và người dùng trực tiếp tương tác với hệ thống MySQL, bao gồm giao diện người dùng, ứng dụng và các phần mềm khác cần truy cập và tương tác với cơ sở dữ liệu.
Tầng máy chủ là nơi thực hiện xử lý và quản lý cơ sở dữ liệu MySQL, tiếp nhận yêu cầu từ tầng khách hàng và tương tác trực tiếp với cơ sở dữ liệu để thực hiện các thao tác cần thiết.
Tầng lưu trữ là phần quan trọng trong cơ sở dữ liệu MySQL, nơi dữ liệu được lưu trữ và quản lý Nó bao gồm các bảng, chỉ mục và các cơ chế lưu trữ khác, giúp tối ưu hóa hiệu suất và khả năng truy cập dữ liệu.
2.5.3: Phương thức hoạt động của MySQL
MySQL hoạt động theo mô hình Client - Server, bao gồm các thành phần chính: tầng khách hàng (client), tầng máy chủ (server), và tầng lưu trữ (storage) Người dùng và ứng dụng tương tác với MySQL thông qua Client, có thể là ứng dụng web, ứng dụng di động, hoặc bất kỳ chương trình nào gửi truy vấn SQL đến máy chủ MySQL.
Máy chủ MySQL tiếp nhận truy vấn từ tầng khách hàng và bắt đầu xử lý bằng cách phân tích cú pháp, xác định phương thức thực hiện và lựa chọn kế hoạch thực thi Sau đó, máy chủ tương tác với tầng lưu trữ để thực hiện các thao tác cơ sở dữ liệu, sử dụng chỉ mục và ràng buộc để tối ưu hóa hiệu suất và đảm bảo tính nhất quán của dữ liệu Kết quả truy vấn, bao gồm dữ liệu được truy xuất, thông báo lỗi hoặc thông tin khác, sẽ được gửi về tầng khách hàng MySQL sử dụng giao thức TCP/IP để đảm bảo truyền dữ liệu an toàn và đáng tin cậy giữa các thành phần của hệ thống.
XÂY DỰNG HỆ THỐNG BACK-END
Xây dựng MQTT Broker
HiveMQ Cloud là nền tảng MQTT Broker dựa trên công nghệ điện toán đám mây, giúp các công ty, tổ chức và cá nhân phát triển, triển khai và mở rộng quy mô hệ thống IoT một cách dễ dàng Người dùng không cần lo lắng về việc thiết lập, cập nhật hay bảo trì cơ sở hạ tầng, mang lại sự tiện lợi và hiệu quả cho các giải pháp IoT.
HiveMQ Cloud cung cấp bảo mật TLS/SSL để mã hóa bản tin, đồng thời cho phép người dùng quản lý và giám sát các dự án IoT một cách trực quan Hơn nữa, nền tảng này cũng hỗ trợ quyền truy cập vào API REST của MQTT Broker, giúp kích hoạt quy trình làm việc có lập trình hiệu quả.
Sau khi đăng ký tài khoản HiveMQ và tạo Cluster, HiveMQ Cloud cung cấp cho người dùng Cluster URL cùng Port để kết nối đến MQTT Broker
Để tạo Credentials, bạn cần truy cập vào Manage Cluster, nơi bạn sẽ thiết lập tài khoản xác thực với các quyền như Publish, Subscribe và xác định mức độ ưu tiên cho tài khoản đó.
Xây dựng cơ sở dữ liệu
XAMPP là bộ công cụ phần mềm mã nguồn mở, hỗ trợ phát triển và triển khai ứng dụng web trên môi trường nội bộ (Localhost) mà không cần hosting hay VPS Với máy chủ web Apache, XAMPP xử lý yêu cầu HTTP từ trình duyệt và phục vụ trang web tương ứng Ngoài ra, XAMPP còn hỗ trợ nhiều ngôn ngữ lập trình như PHP, Perl và Python, mang lại sự linh hoạt cho các nhà phát triển.
Phần mềm XAMPP tích hợp phpMyAdmin cho phép quản lý cơ sở dữ liệu MySQL qua giao diện web dễ sử dụng Ngoài ra, XAMPP còn hỗ trợ SSL/TLS, giúp nâng cao bảo mật trong quá trình truyền tải dữ liệu.
3.2.2: Tạo cơ sở dữ liệu
Trong kịch bản xây dựng Back-end cho hệ thống điện năng lượng mặt trời quy mô nhỏ, bao gồm 3 nút cảm biến trên 3 hệ thống pin năng lượng mặt trời, tôi đã tạo cơ sở dữ liệu mang tên “data_tieuluanmangcambien” Cơ sở dữ liệu này chứa bảng “solarpowerplant” với 9 cột tương ứng, giúp quản lý và theo dõi hiệu suất của hệ thống năng lượng mặt trời một cách hiệu quả.
• Cột “time” có kiểu dữ liệu timestamp dùng để lưu trữ giá trị thời gian
• Cột “name” có kiểu dữ liệu varchar dùng để lưu trữ tên của nút cảm biến
• Cột “temperature” có kiểu dữ liệu float dùng để lưu trữ giá trị nhiệt độ bề mặt tấm pin
• Cột “lux” có kiểu dữ liệu float dùng để lưu trữ giá trị cường độ ánh sáng mặt trời
• Cột “direction” có kiểu dữ liệu float dùng để lưu trữ giá trị hướng quay của tấm pin năng lượng mặt trời
• Cột “angle” có kiểu dữ liệu float dùng để lưu trữ giá trị góc nâng, hạ của tấm pin năng lượng mặt trời
• Cột “voltage” có kiểu dữ liệu float dùng để lưu trữ giá trị hiệu điện thế của tấm pin năng lượng mặt trời
• Cột “current” có kiểu dữ liệu float dùng để lưu trữ giá trị cường độ dòng điện của tấm pin năng lượng mặt trời
• Cột “power” có kiểu dữ liệu float dùng để lưu trữ giá trị công suất của tấm pin năng lượng mặt trời
Kết quả, ta xây dựng được cơ sở dữ liệu như sau:
Hình 14: Cơ sở dữ liệu hoàn chỉnh của hệ thống
Xây dựng Web Server
Web Server được xây dựng bằng Node.js Trong Web Server, em sử dụng các thư viện sau:
Express.js là một khung ứng dụng web Back-end mạnh mẽ, được sử dụng để phát triển các API RESTful với Node.js Khung này cho phép người dùng dễ dàng thiết lập các lớp trung gian để xử lý và trả về các yêu cầu HTTP một cách hiệu quả.
EJS, hay Embedded JavaScript, là một ngôn ngữ mẫu quan trọng trong phát triển ứng dụng web, cho phép tạo ra các trang web động Ngôn ngữ này kết hợp HTML với mã JavaScript, giúp lập trình viên dễ dàng tạo ra các mẫu động và tùy chỉnh nội dung trang web.
• MQTT.js: là một thư viện JavaScript dành cho MQTT, cung cấp khả năng kết nối với các MQTT Brokers và Publish/Subscribe các Topics MQTT
• MySQL.js: là một thư viện JavaScript dành cho MySQL MySQL.js cho phép người dùng kết nối và tương tác với cơ sở dữ liệu MySQL
Socket.IO là thư viện sự kiện cho ứng dụng web thời gian thực, cho phép giao tiếp hai chiều giữa máy khách và máy chủ Được phát triển dựa trên giao thức WebSockets, công nghệ này hỗ trợ kết nối TCP socket, mang lại khả năng truyền dữ liệu hiệu quả giữa Client và Server.
Hình 15: Web Server hoàn chỉnh của hệ thống
SẢN PHẨM THỰC TẾ, KIỂM THỬ
Sản phẩm thực tế
Hình 16: Sản phẩm thực tế.
Kiểm thử
The web server is configured to subscribe to the "datasensor" topic To verify the connection to the MQTT Broker, the MQTT Explorer software is utilized Once the connection is successfully established, a JSON message is sent, containing the data: {"name": 1, "temperature": 25, "lux": 100000}.
"direction": 90, "angle": 45, "voltage": 13.58, "current": 27.32, "power": 371} Topic được Publish thành công lên MQTT Broker như hình sau:
Hình 17: Gửi Topic lên MQTT Broker
Hình 18: Web Server nhận được Topic
Hình 19: Dữ liệu được lưu vào cơ sở dữ liệu MySQL
Như vậy, sau quá trình kiểm thử, Back-end của giao diện IoT đã hoạt động đúng như đã thiết kế và xây dựng.
Kết luận
Đề tài "Nghiên cứu xây dựng Back-end cho giao diện IoT trong việc giám sát quy trình sản xuất điện từ năng lượng mặt trời" đã triển khai thành công MQTT Broker, cơ sở dữ liệu và Web Server, đáp ứng đầy đủ yêu cầu Hệ thống Back-end được thiết kế cho một hệ thống điện năng lượng mặt trời quy mô nhỏ, bao gồm 3 nút cảm biến lắp đặt trên 3 hệ thống pin năng lượng mặt trời đã được xây dựng.
4.3.2: Những hạn chế còn tồn tại
• Web Server được đặt trên máy tính cá nhân, sử dụng XAMPP nên chỉ có thể truy cập và giao tiếp với hệ thống thông qua localhost
Do kiến thức về an ninh mạng còn hạn chế, hệ thống hiện tại chỉ áp dụng các giao thức bảo mật ở mức cơ bản và chưa thực sự chặt chẽ.
• Việc gửi và nhận dữ liệu liên tục thay vì chỉ nhận dữ liệu thay đổi rồi xử lý sẽ sử dụng một lượng lớn băng thông
Người dùng có thể triển khai Web Server trên các dịch vụ Web Hosting và đăng ký tên miền, giúp truy cập máy chủ từ mọi nơi và trên tất cả các thiết bị hỗ trợ.
Có thể mở rộng các hàm trong phần Back-end để tự động cấu hình hoặc lựa chọn cấu hình cho các nút cảm biến Đồng thời, hệ thống cũng có khả năng tự động điều khiển các cơ cấu chấp hành liên quan.
Build a system on Amazon Web Services (AWS) cloud computing, utilizing AWS IoT Core for the MQTT Broker, Amazon DynamoDB for the database, and Amazon Elastic Compute Cloud for the web server.