Báo cáo BTL IOT Giám sát lượng nước toàn thành phố A. ĐẶT VẤN ĐỀ I. Thực trạng hiện nay Hiện nay, vấn đề quản lý nước trong thành phố gặp khá nhiều khó khăn vì phải thực hiện thủ công, ghi chép bằng tay. Ghi chép lượng nước hàng tháng thủ công dẫn đến việc trực hóa thống kê và sao lưu có nhiều bất cập và gần như là không thể đối với dữ liệu lớn. Đặc biệt, khả năng truy vết lịch sử sử dụng nước theo năm để dự đoán lượng nước trong tương lai hay phục vụ nghiên cứu gần như là nhiệm vụ bất khả thi. Hơn nữa, nó còn tốn kém chi phí nguồn lực. Ví dụ: Báo cáo kết quả giám sát thực hiện luật Thủ đô, UB Pháp luật của Quốc hội cho biết, năm 2020, dân số Hà Nội khoảng 10.5 triệu người. Trung bình 4 ngườihộ. Vậy chúng ta có 2.625.000 hộ. Hàng tháng sẽ có 2.625.000 bản ghi tiền điện (số lượng bản ghi sẽ nhiều và gia tăng sẽ rất nhanh). Giả sử mỗi nhân viên chịu trách nhiệm ghi 1.000 bản ghi mỗi tháng, ta sẽ có 2.625 nhân viên. Mức lương cơ bản mỗi nhân viên giả sử là 4 triệutháng, vậy mỗi tháng ta sẽ mất 10,5 tỉtháng để trả lương (một con số lớn). Và với số lượng 2.625.000 bản ghi tháng thì việc sao lưu và thống kê đã là cả 1 bài toán về công sức và việc ghi chép phải cực kì tỉ mỉ vì dễ dẫn đến sai xót với số lượng bản ghi lớn như vậy. II. Đề xuất ý tưởng Từ những khó khăn và nhược điểm của hệ thống hiện nay, nhóm chúng em đã nghiên cứu, bàn bạc và đi đến thống nhất đưa ra một hệ thống tự động, IOT có thể khắc phục toàn bộ những khó khăn trên. Giảm bớt công sức con người với độ chính xác cao, ổn định. Hơn nữa, nó có khả năng mở rộng với quy mô. Đặc biệt có hệ thống web, app an toàn, bảo mật, dễ sử dụng để dễ dàng quản lý và theo dõi. Các thành phần chức năng của hệ thống: • Hiển thị lượng nước từng hộ gia đình theo giờ, tháng, năm • Kiểm soát từng gia đình • Kiểm soát lượng nước toàn thành phố theo tháng, năm • Lưu lại lịch sử các năm để truy vết dữ liệu • Trực quan hóa dữ liệu bằng biểu đồ để phân tích, dự báo lượng nước trong tương lai.
Trang 1A ĐẶT VẤN ĐỀ
I Thực trạng hiện nay
Hiện nay, vấn đề quản lý nước trong thành phố gặp khá nhiều khó khăn vì phải thực hiện thủ công,ghi chép bằng tay Ghi chép lượng nước hàng tháng thủ công dẫn đến việc trực hóa thống kê và saolưu có nhiều bất cập và gần như là không thể đối với dữ liệu lớn Đặc biệt, khả năng truy vết lịch sử
sử dụng nước theo năm để dự đoán lượng nước trong tương lai hay phục vụ nghiên cứu gần như lànhiệm vụ bất khả thi Hơn nữa, nó còn tốn kém chi phí nguồn lực
Ví dụ: Báo cáo kết quả giám sát thực hiện luật Thủ đô, UB Pháp luật của Quốc hội cho biết, năm
2020, dân số Hà Nội khoảng 10.5 triệu người Trung bình 4 người/hộ Vậy chúng ta có 2.625.000 hộ.Hàng tháng sẽ có 2.625.000 bản ghi tiền điện (số lượng bản ghi sẽ nhiều và gia tăng sẽ rất nhanh) Giả
sử mỗi nhân viên chịu trách nhiệm ghi 1.000 bản ghi mỗi tháng, ta sẽ có 2.625 nhân viên Mức lương
cơ bản mỗi nhân viên giả sử là 4 triệu/tháng, vậy mỗi tháng ta sẽ mất 10,5 tỉ/tháng để trả lương (mộtcon số lớn) Và với số lượng 2.625.000 bản ghi/ tháng thì việc sao lưu và thống kê đã là cả 1 bài toán
về công sức và việc ghi chép phải cực kì tỉ mỉ vì dễ dẫn đến sai xót với số lượng bản ghi lớn như vậy
II Đề xuất ý tưởng
Từ những khó khăn và nhược điểm của hệ thống hiện nay, nhóm chúng em đã nghiên cứu, bàn bạc và
đi đến thống nhất đưa ra một hệ thống tự động, IOT có thể khắc phục toàn bộ những khó khăn trên.Giảm bớt công sức con người với độ chính xác cao, ổn định Hơn nữa, nó có khả năng mở rộng vớiquy mô Đặc biệt có hệ thống web, app an toàn, bảo mật, dễ sử dụng để dễ dàng quản lý và theo dõi.Các thành phần chức năng của hệ thống:
Hiển thị lượng nước từng hộ gia đình theo giờ, tháng, năm
Kiểm soát từng gia đình
Kiểm soát lượng nước toàn thành phố theo tháng, năm
Lưu lại lịch sử các năm để truy vết dữ liệu
Trực quan hóa dữ liệu bằng biểu đồ để phân tích, dự báo lượng nước trong tương lai
B THIẾT KẾ HỆ THỐNG
I Sơ đồ thiết kế tổng quan
Trang 2Giao tiếp giữa Device sensor, Server và MQTT Broker bằng giao thức MQTT Protocol.
II Phân tích chi tiết các thành phần hệ thống
1 Các device, sensor
Mỗi một thiết bị sẽ được gắn 1 vi xử lý ESP32, các sensor đo lưu lượng nước sẽ được gắn vào cácchân tương ứng trên ESP32 Từ đó ta sẽ thu thập dữ liệu về lượng nước được sử dụng Thiết bị đượckết nối mạng 24/7 thông qua wifi, ESP32 liên tục thu thập dữ liệu và gửi lên Server qua các topicbằng giao thức MQTT
Về sensor đo lượng nước YF-S201 DN15:
Có 3 chân, trong đó:
o Màu đỏ cho Vcc
o Màu đen cho GND
o Màu vàng cho đầu ra xung
Công thức tính toán cảm biến lưu lượng nước: mỗi lít nước chảy, cảm biến sẽ tạo ra 450xung
Mỗi xung sẽ có 1/450 lít nước chảy ra
V_ total= N * 1/450 lít với N là số xung phát hiện
Trang 3a Sơ đồ giao tiếp giữa esp32 và server
Đầu tiên, thiết bị sẽ gửi id kèm theo password lên server để đăng ký tham gia vào hệ thống Server sẽgửi lại cho thiết bị một token để sử dụng trong một khoảng thời gian Mỗi khi thiết bị gửi dữliệu ,server sẽ kiểm tra tính hợp lệ của token (thời hạn sử dụng) Nếu token hết hạn, thiết bị sẽ gửi yêucầu lấy token mới lên cho server
Thiết bị liên tục thu thập dữ liệu từ sensor Và cứ sau một khoảng thời gian (1 tiếng), nó sẽ gửi dữ liệulượng nước truy cập lên cho server Gói tin gửi lên sẽ có id, token và dữ liệu
Thiết bị sau khi đăng ký tham gia vào hệ thống sẽ phải liên tục gửi gói tin keep alive lên server đểserver biết nó vẫn đang hoạt động (1 phút gửi 1 lần) Nếu quá thời gian cho phép mà server khôngnhận được gói tin keep alive từ thiết bị, server sẽ coi như thiết bị đang ngừng hoạt động và khôngnhận các gói tin collect data
b Các task cần thực hiện trên esp32
Task thu thập dữ liệu lượng nước
Thực hiện nhiệm vụ đo lưu lượng nước từ các sensor
Task keep_alive
Thực hiện gửi gói tin keepAlive lên cho server, để server nhận biết được thiết bị vẫn đang hoạtđộng
Task gửi dữ liệu
Sau một tiếng thì thiết bị sẽ gửi dữ liệu đo được từ các sensor lên cho server lưu trữ vào
database
Task get token:
Thực hiện lấy token để thiết bị gửi gói tin lên cho server
Trang 42 Server
Triển khai hai service là HTTP serivce và Mqtt Serivce
HTTP serivce: cung cấp 1 số API
Trang 53 Admin và User
Hệ thống có 2 tác nhân chính, một là người dùng (chính là người sử dụng nước trong hộ gia đình), hai
là admin (người quản trị nước trong thành phố)
Admin có đầy đủ các chức năng : thêm xóa sửa user, thêm thiết bị cho user, phân quyền user, xemtổng lượng nước của thành phố theo năm và theo tháng của từng user
User có thể đăng nhập bằng web hoặc app và có thể xem được chi tiết thông tin thiết bị của mình(video có demo)
Trang 6MQTT hoạt động theo mô hình Client (Publisher/Subscriber) – Server (Broker).
b Kiến trúc và cơ chế hoạt động của MQTT
Thành phần chính của MQTT là Client (Publisher/Subscriber), Server (Broker), Sessions ,Subscriptions và Topics
MQTT Client (Publisher/Subscriber): Clients sẽ subscribe một hoặc nhiều topics để gửi vànhận thông điệp từ những topic tương ứng
MQTT Server (Broker): Broker nhận những thông tin subscribe (Subscriptions) từ client,nhận thông điệp, chuyển những thông điệp đến các Subscriber tương ứng dựa trênSubscriptions từ client
Topic: Có thể coi Topic là một hàng đợi các thông điệp, và có sẵn khuôn mẫu dành choSubscriber hoặc Publisher Một cách logic thì các topic cho phép Client trao đổi thông tin vớinhững ngữ nghĩa đã được định nghĩa sẵn Ví dụ: Dữ liệu cảm biến nhiệt độ của một tòa nhà
Session: Một session được định nghĩa là kết nối từ client đến server Tất cả các giao tiếp giữaclient và server đều là 1 phần của session
Subscription: Không giống như session, subscription về mặt logic là kết nối từ client đếntopic Khi đã subscribe một topic, Client có thể nhận/gửi thông điệp (message) với topic đó
c Quality of Service -QoS
QoS là một thỏa thuận giữa bên gửi và bên nhận trong việc đảm bảo phân phối message Có 3 cấp độQoS trong MQTT khi publish/subscribe
Trang 7 QoS0 Broker/Client sẽ gửi dữ liệu đúng một lần, quá trình gửi được xác nhận bởi giao thứcTCP/IP
QoS1 Phía server nhận message được xác định bởi một message PUBACK Nếu có lỗi, haymessage xác nhận không nhận được sau một khoảng thời gian nhất định thì sẽ gửi lại message
và thiết lập bit DUP tron header của message Vì vậy message được gửi tới server ít nhất mộtlần Nếu client không nhận được message PUBACK hoặc trong một khoảng thời gian đượcđịnh nghĩa hoặc có lỗi xảy ra thì client sẽ gửi lại message PUBLISH với DUP đã được thiếtlập Khi nhận một message lặp lại từ phía client, server sẽ publish các message đến cácsubscriber và gửi một message PUBACK khác
QoS2: Message bị lặp lại không chuyển đến ứng dụng Đây là mức độ cao nhất khi phân phốimessage, message lặp lại không được chấp nhận Khi QoS = 2, một message có một message
ID trong phần header của nó Nếu có lỗi hoặc sau một khoảng thời gian, luồng protocol sẽthực hiện lại kết quả của message xác nhận cuối cùng hoặc PUBLISH hoặc PUBREL Vì vậyđảm bảo message đến subscriber đúng một lần
2 Spring mvc
Spring framework là nền tảng mã nguồn mở phổ biến để xây dựng các ứng dụng Những tính năng cốtlõi của Spring có thể được sử dụng để phát các ứng dụng Java Destop, ứng dụng mobile, Java Webmột cách đơn giản Trong bài tập lớn này sẽ sử dụng Spring framework để xây dựng ứng dụng phíaserver, cung cấp cơ chế thuận tiện để triển khai các dịnh vụ chức năng của hệ thống
Flow trong Spring MVC framework
Bất kỳ request nào tới ứng dụng web đều được gửi tới Front Controller(Dispatcher servlet)
Dispatcher servlet sử dụng Handler Mapping để biết được controller nào sẽ xử lý rquest đó
Thực thi các logic được xác định trong controller và trả về đối tượng ModelAndView
Dựa trên các giá trị trong ModelAndView, Dispatcher servlet sẽ gửi các yêu cầu đến ViewResolver, View Resolver sẽ tìm kiếm dựa trên các config file view mà Controller trả về
Cuối cùng Dispatcher servlet sẽ tìm kiếm đến file view đã được View Resolver xác định trước
đó và gửi kết quả cho người dùng
Triển khai theo mô hình front-end back-end riêng Client gửi request tới server qua API và sẽ sử dụngRestController để xử lý và trả về dữ liệu JSON
Trang 8Spring triển khai 2 gói dịch vụ Nó phục vụ 2 luồng khác nhau của máy chủ Bao gồm HTTPservice(Cung cấp API cho front-end) và Mqtt service(đăng ký topic và xử lý message).
3 Vue.js
Vue.js là một framework linh động dùng để xây dựng giao diện người dùng (user interfaces) Khác
với các framework nguyên khối (monolithic), Vue được thiết kế từ đầu theo hướng cho phép vàkhuyến khích việc phát triển ứng dụng theo từng bước Khi phát triển lớp giao diện (view layer),người dùng chỉ cần dùng thư viện lõi (core library) của Vue, vốn rất dễ học và tích hợp với các thưviện hoặc dự án có sẵn Cùng lúc đó, nếu kết hợp với những kĩ thuật hiện đại như SFC (single filecomponents) và các thư viện hỗ trợ, Vue cũng đáp ứng được dễ dàng nhu cầu xây dựng những ứngdụng một trang (SPA - Single-Page Applications) với độ phức tạp cao hơn nhiều
4 MySQL
MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ mã nguồn mở (RDBMS) dựa trên ngôn ngữ
truy vấn có cấu trúc ( SQL) được phát triển, phân phối và hỗ trợ bởi tập đoàn Oracle MySQL chạytrên hầu hết tất cả các nền tảng, bao gồm cả Linux , UNIX và Windows MySQL thường được kết hợpvới các ứng dụng web
5 Apache Tomcat
Apache Tomcat là một web server HTTP được phát triển bởi Apache Software
Foundation, hỗ trợ mạnh cho ứng dụng Java thay vì website tĩnh Do đó, nó có thể
chạy nhiều bản Java chuyên biệt như Java Servlet, JavaServer Pages (JSP), Java EL, và WebSocket
Bạn hoàn toàn có thể sử dụng Apache Tomcat với nhiều ngôn ngữ lập trình khác như PHP,
Python, Perl,… Nhờ sự giúp đỡ của module Apache phù hợp, chẳng hạn mod_php, mod_python,mod_perl,…
6 React Native
React Native là một framework do công ty công nghệ nổi tiếng Facebook phát triển nhằm mục đíchgiải quyết bài toán hiệu năng của Hybrid và bài toán chi phí khi mà phải viết nhiều loại ngôn ngữnative cho từng nền tảng di động
Ở hệ thống này, chúng em triển khai ứng dụng Android chủ yếu cung cấp cho người dùng theo dõilượng nước theo chu kỳ thời gian (1 tiếng/lần) hoặc real-time (khi ấn vào refresh) Từ đó để giám sátlượng nước, phát hiện bất thường, tính toán số tiền cũng như sự gian lận (nếu có) của bên cung cấpnước
Trang 11C TRIỂN KHAI (DEMO)
I Demo các thành phần chức năng của hệ thống
Demo IOT - Hê thống cấp nước thông minh cho thành phố
II Minh họa code
Trang 12 TaskCollectData
Trang 13 Task gửi dữ liệu
o Trước khi dữ liệu, thiết bị cần được active trên hệ thống:
o Sau đó kiểu tra xem token còn hạn không, nếu còn thì gửi dũ liệu
Trang 14 Task GetToken và KeepAlive
Trang 15III Kết quả, hình ảnh sản phẩm
Trang 161 Admin
1 Admin
Trang chủ :
Trang 17Chỉ có Admin có các chức năng thêm người dùng, thêm thiết bị cho người dùng (có phân quyền chouser)
Sau khi tạo tài khoản cho user, admin có thể thêm thiết bị gắn với user đó
Sau khi tạo thiết bị thành công thì server sẽ create token để active thiết bị
Admin có thể theo dõi tổng user và các thiết bị của user
Trang 18Admin có thể xem lượng nước của từng thiết bị của mỗi user theo năm và theo tháng:
Theo năm: (có thể select chọn năm, video có demo)
Trang 19Hệ thống có đầy đủ chức năng thêm xóa sửa user, device, profile (có video demo):
b.
Trang 202 User
D TEAMWORK – CÔNG VIỆC NHÓM
Phan Thành Đạt 20173001 Thuyết trình, viết báo cáo, tìm hiểu phần cứng sensor,
viết app điện thoại, bảo mật hệ thống, thiết kế hệ thốngHoàng Văn Chương 20172984 Làm slide, viết báo cáo, viết web hiển thị, thiết kế cơ sở
dữ liệu, thiết kế hệ thốngTrần Văn Định 20173017 Làm slide, viết báo cáo, tìm hiểu phần cứng ESP32, viết
Server, thiết kế cơ sở dữ liệu, thiết kế hệ thốngChử Việt Hoàng 20173135 Làm slide, viết báo cáo, tìm hiểu ESP32, code ESP 32,
thiết kế cơ sở dữ liệu, thiết kế hệ thống