Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 84 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
84
Dung lượng
9,73 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HCM TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN NGÔ HUỲNH NGỌC PHÚ DỰ BÁO MƢA TRONG TƢƠNG LAI GẦN TẠI KHU VỰC RUỘNG MUỐI NINH DIÊM SỬ DỤNG MẠNG CẢM BIẾN MÔI TRƢỜNG LUẬN VĂN THẠC SĨ NGÀNH KHOA HỌC MÁY TÍNH Mã số: 60480101 NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS TS VŨ THANH NGUYÊN TP HỒ CHÍ MINH – NĂM 2017 LỜI CẢM ƠN Luận văn đƣợc triển khai ứng dụng Hợp tác xã muối 1/5 Ninh Diêm, TX Ninh Hòa, tỉnh Khánh Hòa Để hồn thành đƣợc luận văn nhận đƣợc nhiều động viên, giúp đỡ nhiều cá nhân tập thể Trƣớc hết, tơi xin bày tỏ lòng biết ơn sâu sắc đến PGS TS Vũ Thanh Nguyên hƣớng dẫn tơi thực luận văn Xin bày tỏ lòng biết ơn chân thành tới Thầy giáo, Cô giáo, ngƣời đem lại cho kiến thức bổ trợ, vơ có ích năm học vừa qua Tôi xin gửi lời cám ơn chân thành tới Ban Giám hiệu, Phòng Sau đại học, trƣờng Đại học công nghệ thông tin, Đại học Quốc gia TP Hồ Chí Minh tạo điều kiện cho tơi q trình học tập Cuối tơi xin gửi lời cám ơn đến gia đình, đặc biệt em Ngô Huỳnh Ngọc Khánh, ngƣời bên cạnh hỗ trợ, động viên khuyến khích tơi trình thực đề tài TP Hồ Chí Minh, ngày … tháng … năm … Ngơ Huỳnh Ngọc Phú LỜI CAM ĐOAN Tên Ngô Huỳnh Ngọc Phú, học viên cao học K9 chuyên ngành Khoa học máy tính, khóa 2014-2017 Tơi xin cam đoan luận văn thạc sĩ „„Dự báo mưa tương lai gần khu vực ruộng muối Ninh Diêm sử dụng mạng cảm biến mơi trường‟‟ cơng trình nghiên cứu riêng tôi, số liệu nghiên cứu thu đƣợc từ thực nghiệm không chép Học viên Ngô Huỳnh Ngọc Phú MỤC LỤC DANH MỤC CHỮ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC HÌNH VẼ, ĐỒ THỊ LỜI MỞ ĐẦU Chƣơng TỔNG QUAN TÌNH HÌNH 10 1.1 Tổng quan tình hình nghiên cứu 10 1.2 Mục tiêu, đối tƣợng phạm vi nghiên cứu 11 1.3 Nội dung phƣơng pháp nghiên cứu 11 Chƣơng ĐÁNH GIÁ MẠNG CẢM BIẾN KHÔNG DÂY 13 2.1 Tổng quan mạng cảm biến không dây 13 2.1.1 Khái niệm 13 2.1.2 Đặc điểm 14 2.1.3 Kĩ thuật truyền tin, khoảng cách thu phát 16 2.1.4 Mô hình mạng 16 2.2 Ƣu điểm 18 2.3 Nhƣợc điểm 18 Chƣơng MẠNG CẢM BIẾN KHÔNG DÂY SỬ DỤNG NRF24L01 19 3.1 Ứng dụng mạng cảm biến không dây thực tế 19 3.2 Vấn đề cần quan tâm triển khai mạng cảm biến không dây 20 3.3 Mạng 2.4GHz sử dụng NRF24L01 với mức lƣợng thấp 21 3.3.1 Tìm hiểu module NRF24L01 21 3.3.2 Các thành phần mạng 24 3.3.3 Giới thiệu số cảm biến thƣơng mại 31 3.3.4 Mơ hình truyền thơng mạng cảm biến 33 Trang 3.3.5 Đặc điểm mạng cảm biến sử dụng NRF24L01 35 3.3.6 Định tuyến mạng 36 3.3.7 Hạn chế mạng 41 Chƣơng MẠNG NƠ-RON NHÂN TẠO 42 4.1 Giới thiệu mạng nơ-ron nhân tạo 42 4.1.1 Các khái niệm 42 4.1.2 Mơ hình mạng nơ-ron nhân tạo 44 4.1.3 Phân loại mạng nơ-ron nhân tạo 47 4.2 Sử dụng mạng nơ-ron nhân tạo 48 Chƣơng DỰ BÁO MƢA TẠI KHU VỰC RUỘNG MUỐI NINH DIÊM 49 5.1 Điều kiện địa lý, tự nhiên, khí tƣợng khu vực Ninh Diêm 49 5.1.1 Vị trí địa lý 49 5.1.2 Địa hình 49 5.1.3 Đặc điểm khí hậu 49 5.1.4 Quy trình khai thác muối 49 5.1.5 Vị trí đặt cảm biến 50 5.2 Mơ hình mạng khu vực ruộng muối Ninh Diêm 52 5.2.1 Mơ hình mạng 52 5.2.2 Sơ đồ khối hệ thống khu vực 52 5.2.3 Giao thức truyền tin Sensor Unit Gateway 53 5.2.4 Giao thức truyền tin Gateway server trung tâm 53 5.2.5 Node gateway 55 5.2.6 Thiết kế phần mềm 56 5.2.6.1 Chu trình hoạt động node cảm biến 56 5.2.6.2 Chu trình hoạt động gateway 58 Trang 5.2.7 Khả mở rộng 61 5.3 Kĩ thuật thu thập liệu 61 5.3.1 Thu thập liệu 61 5.3.2 Lƣu trữ liệu 63 5.4 Khai thác liệu 67 5.5 Kiểm tra liệu giải thuật khác 72 Chƣơng KẾT LUẬN VÀ KHUYẾN NGHỊ 74 TÀI LIỆU THAM KHẢO 75 BẢNG PHỤ LỤC 77 Trang DANH MỤC CHỮ VIẾT TẮT ANN CSDL HĐH SU TB Mạng nơ-ron nhân tạo Cơ sở liệu Hệ điều hành Sensor Unit Trung bình Trang DANH MỤC CÁC BẢNG 3.1 Thông số kĩ thuật module NRF24L01 22 3.2 Bảng kết nối chân NRF24L01 vi điều khiển 25 3.3 Thông số kĩ thuật cảm biến áp suất BMP180 27 3.4 Bảng kết nối chân cảm biến BMP180 với vi điều khiển 27 3.5 Thơng số kĩ thuật cảm biến nhiệt độ - độ ẩm SHT10 28 3.6 Bảng kết nối chân cảm biến SHT10 với vi điều khiển 28 3.7 Bảng phân tầng liệu mạng cảm biến 34 3.8 Cấu trúc gói tin 40 5.1 Giao tiếp truyền nhận liệu cảm biến vi điều khiển 57 5.2 Bảng lƣu trữ liệu thô 63 5.3 Bảng lƣu trữ liệu làm giàu 64 5.4 Kết kiểm tra độ xác dự đoán mƣa, 20 input 69 5.5 Kết kiểm tra độ xác dự đốn mƣa, input 70 Trang DANH MỤC HÌNH VẼ, ĐỒ THỊ 3.1 Hình ảnh module NRF24L01 22 3.2 Các luồng liệu NRF24L01 24 3.3 Sơ đồ nối chân NRF24L01 vi điều khiển 25 3.4 Ảnh thực tế kết nối module NRF24L01 vi điều khiển 25 3.5 Sơ đồ khối tổng quan Sensor Unit 26 3.6 Cảm biến nhiệt độ - độ ẩm SHT10 áp suất BMP180 26 3.7 Sơ đồ nối chân BMP180 vi điều khiển 27 3.8 Sơ đồ nối chân SHT10 vi điều khiển 29 3.9 Cảm biến nhiệt độ & độ ẩm – áp suất sau lắp hoàn chỉnh 29 3.10 Cảm biến mƣa 29 3.11 Sơ đồ nối chân cảm biến mƣa vi điều khiển 30 3.12 Sơ đồ nối chân cảm biến vận tốc gió vi điều khiển 31 3.13 Bộ cảm biến RainWise 32 3.14 Bộ cảm biến Davis VantageView 32 3.15 Bộ cảm biến Ambient Weather 33 3.16 Bộ cảm biến AcuRite 33 4.1 Cấu trúc nơ-ron 42 4.2 Mạng nơ-ron lớp: Input – Hidden – Output 45 4.3 Mạng nơ-ron dẫn tiến lớp 47 4.4 Mạng nơ-ron dẫn tiến đa lớp 48 5.1 Vị trí lắp đặt cảm biến địa điểm 51 5.2 Hai vị trí đặt cảm biến 51 5.3 Mơ hình chung hệ thống dự báo mƣa tƣơng lai gần 52 5.4 Sơ đồ khối liên kết mạng từ cảm biến đến gateway 53 5.5 Mơ hình node gateway 55 5.6 Board mạch Raspberry Pi chạy Linux đƣợc chọn làm gateway 56 5.7 Cấu trúc vi điều khiển Atmega328 mạch Arduino 57 5.8 Lƣu đồ hoạt động node cảm biến 58 5.9 Lƣu đồ hoạt động node gateway 61 5.10 Theo dõi liệu thông qua OpenHAB 62 Trang 5.11 Dữ liệu cảm biến gửi lên Wunderground 63 5.12 Hệ số tƣơng quan Pearson yếu tố với khả xảy mƣa 65 5.13 So sánh độ xác input 20 input 66 5.14 Mơ hình mạng nơ-ron huấn luyện 68 5.15 Số lớp ẩn ảnh hƣởng đến độ xác dự báo tập test 70 5.16 Khảo sát chi tiết độ xác tập huấn luyện 12 lớp ẩn, 200 epoch 71 5.17 Giao diện chƣơng trình dự báo 71 5.18 Độ xác liệu kiểm tra thuật giải khác 73 Trang DỰ BÁO MƢA TẠI KHU VỰC RUỘNG MUỐI NINH DIÊM Cách xác định dòng liệu cần thiết cho máy học đƣợc thực nhƣ sau: Bƣớc 1: Lấy dòng liệu đƣợc cập nhật nhất, thời điểm T Bƣớc 2: 2.1 Chọn dòng liệu có thời gian gần với T, cách T-3 2.2 Chọn dòng liệu có thời gian gần với T, cách T-5 2.3 Chọn dòng liệu có thời gian gần với T, cách T-6 Bƣớc 3: Chèn thêm dòng liệu vào bảng LEARN (5.1) Dữ liệu sau đƣợc ghi nhận đƣợc tách riêng để làm liệu cho q trình học Dữ liệu học đƣợc tính tốn theo công thức (5.1) Đặc điểm liệu thô liệu đƣợc ghi nhận nhiều thời điểm khác Các liệu đƣợc gom nhóm lại theo khoảng thời gian: phút, phút Trong khoảng thời gian này, dòng liệu đƣợc lựa chọn làm đại diện 5.4 Khai thác liệu Mục tiêu: Xác định trạng thái mƣa giờ, giờ, khu vực dựa liệu nhiệt độ, độ ẩm, áp suất, vận tốc gió thu thập đƣợc từ mạng cảm biến đặt khu vực Thuật toán khai thác liệu dựa mơ hình mạng nơ-ron nhân tạo Số đầu vào (input layer): 20 Số lớp ẩn (hidden layer): Số đầu (output layer): Hàm kích hoạt: Sigmod (hidden-output), ReLU (input-hidden, hiddenhidden) Chƣơng trình mạng nơ-ron đƣợc viết sử dụng ngôn ngữ Python, framework Keras Đây framework hỗ trợ việc thiết lập nhanh mơ hình mạng nơ-ron mà không cần nhiều thời gian khâu viết chƣơng trình Chƣơng trình nhận vào cấu trúc model sinh mã code tƣơng ứng để thực thi thuật tốn máy học Mơ hình mạng nơ-ron đƣợc thiết kế nhƣ sau: Trang 67 DỰ BÁO MƢA TẠI KHU VỰC RUỘNG MUỐI NINH DIÊM 5.14 Mơ hình mạng nơ-ron huấn luyện Cấu trúc model mạng nơ-ron đƣợc xây dựng ngôn ngữ Python framework Keras: # create model dim = 20 model = Sequential() model.add(Dense(dim*2, input_dim=dim, init='normal', activation='relu')) model.add(Dense(dim, init='normal', activation='relu')) model.add(Dense(dim, init='normal', activation='relu')) model.add(Dense(dim, init='normal', activation='relu')) model.add(Dense(1, init='normal', activation='sigmoid')) # Compile model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) Mạng nơ-ron sử dụng mạng nơ-ron dẫn tiến liên tục đa lớp (MLP) Các trọng số khởi tạo ban đầu hidden layer cho trình huấn luyện lấy ngẫu Trang 68 DỰ BÁO MƢA TẠI KHU VỰC RUỘNG MUỐI NINH DIÊM nhiên theo phân phối chuẩn (normal) Số lƣợng hidden layer đƣợc lựa chọn mang tính thực nghiệm Bốn hidden layer với hàm kích hoạt ReLU Vì đặc tính phân lớp có mƣa khơng mƣa nên hàm kích hoạt sigmoid đƣợc lựa chọn hàm trả giá trị đầu ứng với đoạn [0,1] Trạng thái mƣa đƣợc dự báo có giá trị output trả lớn 0,5 Sai số q trình học đƣợc tính dựa hàm binary_crossentropy Keras Bộ tối ƣu hóa trọng số adam đƣợc sử dụng Độ xác giá trị accuracy đƣợc lựa chọn làm tham số tham khảo cho trình tối ƣu Bộ liệu cho trình huấn luyện đƣợc lấy từ liệu Wunderground sân bay Cam Ranh từ tháng 10/2013 đến tháng 11/2016 Dữ liệu đƣợc thu thập định kì 30 phút/lần, tổng số dòng liệu khai thác: 53.801 dòng Ngồi ra, tỉ lệ phần trăm liệu thu thập thực tế ruộng muối đƣợc đƣa vào huấn luyện Vì tỉ lệ thời điểm có mƣa liệu huấn luyện liệu kiểm tra thấp (chỉ đạt mức 3-4%) nên tập kiểm tra đƣợc chọn tập liệu có xảy trạng thái mƣa khu vực ruộng muối 3.400 dòng liệu khoảng thời gian từ tháng 11/2016 đến tháng 01/2017 5.4 Kết kiểm tra độ xác dự đốn mƣa, 20 input Dữ liệu học Dữ liệu khứ Dữ liệu khứ Dữ liệu kiểm tra giờ 100% liệu thu thập 4,3% 4,7% 2,5% 70% liệu thu thập 41,1% 24,1% 23,6% 50% liệu thu thập 66,3% 41,6% 23,9% 30% liệu thu thập Dữ liệu khứ 50% liệu thu thập Thực kiểm tra tƣơng tự, nhƣng với yếu tố đầu vào nhiệt độ, độ ẩm, áp suất, tốc độ gió, kết thu đƣợc nhƣ sau: Trang 69 DỰ BÁO MƢA TẠI KHU VỰC RUỘNG MUỐI NINH DIÊM 5.5 Kết kiểm tra độ xác dự đốn mƣa, input Dữ liệu học Dữ liệu khứ Dữ liệu khứ Dữ liệu kiểm tra giờ 100% liệu thu thập 10,1% 0,2% 0,1% 70% liệu thu thập 47,0% 1,0% 1,3% 50% liệu thu thập 69,7% 41,4% 47,3% 30% liệu thu thập Dữ liệu khứ 50% liệu thu thập Thay đổi thơng số mơ hình Việc điều chỉnh tham số mơ hình có ý nghĩa việc nâng cao độ xác dự báo nhƣ kiểm tra khả hoạt động mô hình tham số khác Việc gia tăng số lớp ẩn mơ hình học có ảnh hƣởng trực tiếp đến độ xác mơ hình 100 90 80 70 % 60 50 40 30 20 10 15 Số lớp ẩn Độ xác 5.15 Số lớp ẩn ảnh hƣởng đến độ xác dự báo tập test Trang 70 20 DỰ BÁO MƢA TẠI KHU VỰC RUỘNG MUỐI NINH DIÊM 0.15 0.959 0.145 0.957 0.14 Loss 0.953 0.13 0.125 0.951 0.12 0.949 0.115 0.947 0.11 0.945 50 100 150 Accuracy 0.955 0.135 200 Epoch Loss Accuracy Log (Loss) Log (Accuracy) 5.16 Khảo sát chi tiết độ xác tập huấn luyện 12 lớp ẩn, 200 epoch Bộ cảnh báo phía ngƣời dùng (frontend) đƣợc xây dựng ngôn ngữ NodeJS xem đƣợc trình duyệt tất thiết bị di động Chƣơng trình kết nối với hệ thống máy học sử dụng mạng nơ-ron (backend) thông qua REST API Dữ liệu liên tục đƣợc gửi lên API backend để kiểm tra khả xảy mƣa 5.17 Giao diện chƣơng trình dự báo Trang 71 DỰ BÁO MƢA TẠI KHU VỰC RUỘNG MUỐI NINH DIÊM Ngoài ra, ngƣời sử dụng đăng kí nhận thơng báo mƣa qua hệ thống tin nhắn SMS Với cách làm này, ngƣời dùng khơng thành thạo máy tính tiếp cận thơng tin dự báo nhanh Dựa kết dự báo trả thông qua tin nhắn, diêm dân chủ động đƣa định phù hợp 5.5 Kiểm tra liệu giải thuật khác Bài toán đặt xử lý liệu theo phƣơng pháp phân lớp nhị phân, số thuật giải có khả đáp ứng yêu cầu nhƣ sau: Nhóm thuật giải tuyến tính: Logistic Regression: thuật giải giả sử tham số đầu vào phân bổ theo phân phối Gaussian, sử dụng để phân lớp nhị phân Linear Discriminant Analysis: kĩ thuật thống kê đƣợc sử dụng cho tốn phân lớp (nhị phân, đa phân lớp) Nhóm thuật giải phi tuyến: k – Nearest Neighbors: sử dụng độ đo khoảng cách để tìm k nhóm có đặc điểm giống Giá trị liệu đƣợc tính tốn khoảng cách với k nhóm để phân lớp liệu Naive Bayes: thuật giải tính tốn xác suất xác suất có điều kiện phân lớp ứng với giá trị đầu vào Giá trị xác suất đƣợc ƣớc tính cho liệu ứng với giá trị đầu vào với giả sử giá trị biến cố độc lập với Classification and Regression Trees: phân lớp liệu học dƣới dạng nhị phân Giá trị phân chia đƣợc cho hàm chi phí nhỏ Support Vector Machines: thuật giải tìm đƣờng thẳng phân chia liệu thành lớp khác SVM đƣợc phát triển cho toán phân chia đa lớp Trang 72 DỰ BÁO MƢA TẠI KHU VỰC RUỘNG MUỐI NINH DIÊM 100 90 80 70 60 50 40 30 20 10 LR LDA kNN NB CRT SVM Accuracy 5.18 Độ xác liệu kiểm tra thuật giải khác Trang 73 KẾT LUẬN VÀ KHUYẾN NGHỊ Chƣơng KẾT LUẬN VÀ KHUYẾN NGHỊ Thời tiết thay đổi ngày nhanh theo hƣớng cực đoan trƣớc Đây hậu tiêu cực từ tác động thái ngƣời đến môi trƣờng tự nhiên Trong thời gian tới, tác động diễn biến phức tạp khó lƣờng trƣớc Luận văn theo hƣớng thu thập khai thác liệu khu vực để dự báo thay đổi môi trƣờng, cụ thể khả xảy mƣa tƣơng lai gần Đây hƣớng dựa phát triển mạnh mẽ lực tính tốn máy tính giá thành rẻ loại cảm biến Việc kết hợp thu thập liệu thực tế với mô hình khí tƣợng, radar giúp nâng cao độ xác nhƣ cá nhân hóa thơng tin dự báo đến ngƣời sử dụng Số lƣợng node cảm biến lắp đặt thực tế luận văn chƣa nhiều, song bƣớc thử nghiệm cần thiết để kiểm nghiệm khả hoạt động thiết bị nhƣ tình xảy Trên sở đó, việc triển khai quy mơ rộng, số lƣợng node lớn trở nên dễ dàng nhiều cần phát triển mơ hình theo chiều rộng Ngồi việc dự báo mƣa ruộng muối, mơ hình phần cứng phần mềm luận văn đƣợc tùy chỉnh cho phù hợp với nhu cầu dự báo khác Chẳng hạn, việc dự báo mực nƣớc hồ thủy điện khai thác cảm biến lƣợng mƣa, cảm biến độ ẩm đất… nhằm thu thập liệu khả hấp thụ nƣớc mƣa nhƣ dự đoán lƣợng mƣa tới Nhờ đó, việc đóng xả hồ thủy điện thực tế hơn, cảnh báo cho ngƣời dân sớm để chủ động di chuyển, di dời tài sản cần thiết Hi vọng rằng, với phát triển nhanh chóng trí tuệ nhân tạo, mơ hình khai thác liệu phục vụ đời sống ngƣời ngày hồn thiện hơn, xác Vì ngƣời nhân tố định cho phát triển xã hội Trang 74 TÀI LIỆU THAM KHẢO [1] Ruiz-Garcia, Luis, Loredana Lunadei, Pilar Barreiro, and Ignacio Robla (2009) “A review of wireless sensor technologies and applications in agriculture and food industry: state of the art and current trends”, sensors 9, no 6: 4728-4750 [2] Villegas, Miguel Angel Erazo, Seok Yee Tang, and Yi Qian (2006) “Wireless Sensor Network Communication Architecture for Wide-Area Large Scale Soil Moisture Estimation and Wetlands Monitoring”, University of Puerto Rico at Mayaguez WALSAIP RESEARCH PROJECT [3] Intanagonwiwat, C., Govindan, R., & Estrin, D (2000, August) “Directed diffusion: a scalable and robust communication paradigm for sensor networks”.Proceedings of the 6th annual international conference on Mobile computing and networking (pp 56-67) ACM [4] Basha, E A., Ravela, S., & Rus, D (2008, November) “Model-based monitoring for early warning flood detection”.Proceedings of the 6th ACM conference on Embedded network sensor systems (pp 295-308) ACM [5] Ingsrisawang, L., Ingsriswang, S., Somchit, S., Aungsuratana, P., & Khantiyanan, W (2008, May) “Machine learning techniques for short-term rain forecasting system in the northeastern part of Thailand” Proceedings of World Academy of Science, Engineering and Technology (Vol 31, No 248253) [6] Sudha, M., & Valarmathi, B (2014) “Rainfall Forecast Analysis using Rough Set Attribute Reduction and Data Mining Methods” AGRIS on-line Papers in Economics and Informatics, 6(4), 145 [7] Kung, H Y., Hua, J S., & Chen, C T (2006) “Drought forecast model and framework using wireless sensor networks” Journal of information science and engineering, 22(4), 751-769 [8] Yesilbudak, M., Sagiroglu, S., & Colak, I (2013) “A new approach to very short term wind speed prediction using k-nearest neighbor classification Energy Conversion and Management”, 69, 77-86 Trang 75 [9] Joseph, J., & Ratheesh, T K (2013) Rainfall prediction using data mining techniques International Journal of Computer Applications, 83(8) [10] Zainudin, S., Jasim, D S., & Bakar, A A (2016) Comparative Analysis of Data Mining Techniques for Malaysian Rainfall Prediction International Journal on Advanced Science, Engineering and Information Technology, 6(6), 1148-1153 Trang 76 BẢNG PHỤ LỤC 1.Chƣơng trình nhận liệu từ gateway, gửi sang chƣơng trình cập nhật CSDL gửi đồng thời lên Wunderground import paho.mqtt.client as mqtt import string import urllib import requests as req import gearman import time from rain import * from dewpoint import * wind_speed = wind_reset = rain_state = rain_reset = def sendToQueue(temp, hum, atmos, wspeed): global rain_state data = [] gm_client = gearman.GearmanClient(['210.211.118.44:4730']) timestamp = int(time.time()) data.insert(len(data), str(timestamp)) data.insert(len(data), str(temp)) data.insert(len(data), str(hum)) data.insert(len(data), str(atmos)) data.insert(len(data), str(wspeed)) data.insert(len(data), str(rain_state)) data = ','.join(data) result = gm_client.submit_job("wrow_nh", background=True) Trang 77 data, def send_wunderground(temp, hum, atmos, wspeed, dewpointf): rainfall_inch = get_rainfall_inch() params = {"dewptf": dewpointf, "rainin": rainfall_inch, "tempf": temp, "humidity": hum, "baromin": atmos} id = {"ID": "ININHHIP2", "PASSWORD": "gj0b7uan"} url = "https://weatherstation.wunderground.com/weatherstation/updat eweatherstation.php?action=updateraw&dateutc=now&%s&%s" % (urllib.urlencode(params), urllib.urlencode(id)) res = req.get(url) def submit_temphumatmos(data): global wind_speed temp, hum, atmos = data.split(',') tempf = float(temp) * 1.8 + 32 tempc = float(temp) hum = float(hum) atmos_inch = int(atmos) / 100.0 * 0.0295301 atmos_hpa = int(atmos) / 100.0 wspeed = wind_speed wspeed_kmh = wind_speed * 1.609344 dewpointf = get_dewpoint_f(tempc, hum) send_wunderground(tempf, hum, atmos_inch, wspeed, dewpointf) sendToQueue(tempc, hum, atmos_hpa, wspeed_kmh) def on_connect(client, userdata, rc): print 'connected' client.subscribe('openhab/iotnet01/nrf24/10/0/V_TEMP') client.subscribe('openhab/iotnet01/nrf24/30/0/V_WIND') client.subscribe('openhab/iotnet01/nrf24/15/0/V_RAIN') def on_message(client, userdata, msg): global wind_reset, wind_speed, rain_reset, rain_state if "RAIN" in msg.topic: rain_state = Trang 78 rain_reset = add_rain() elif "WIND" in msg.topic: wind = int(msg.payload) wind_kmh = wind * 0.101736 wind_speed = wind_kmh / 1.609344 else: wind_reset = wind_reset + if wind_reset > 20: wind_reset = wind_speed = rain_reset = rain_reset + if rain_reset > 60: rain_reset = rain_state = submit_temphumatmos(msg.payload) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("210.211.118.44", 1883, 60) client.loop_forever() Chƣơng trình cập nhật liệu vào CSDL Chƣơng trình máy học sử dụng mạng nơ-ron nhân tạo from keras.models import Sequential from keras.layers import Dense import numpy seed = numpy.random.seed(seed) Trang 80 dataset = numpy.loadtxt("data/data.csv", delimiter=",") datasetTest = numpy.loadtxt("data/test.csv", delimiter=",") # split into input (X) and output (Y) variables dim = 20 decision = 20 X = dataset[:,0:dim] Y = dataset[:,decision] Xt = datasetTest[:,0:dim] Yt = datasetTest[:,decision] len = len(Xt) mid = int(0.1 * len) Xt_learn = Xt[0:mid] Yt_learn = Yt[0:mid] Xt_test = Xt[mid:len] Yt_test = Yt[mid:len] X_combine = numpy.concatenate([X, Xt_learn]) Y_combine = numpy.concatenate([Y, Yt_learn]) model = Sequential() model.add(Dense(dim*2, input_dim=dim, init='normal', activation='relu')) model.add(Dense(dim, init='normal', activation='relu')) model.add(Dense(dim, init='normal', activation='relu')) model.add(Dense(dim, init='normal', activation='relu')) model.add(Dense(1, init='normal', activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'] ) model.fit(X_combine, Y_combine, nb_epoch=50, batch_size=500) scores = model.evaluate(Xt, Yt) output = model.predict(Xt) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100)) Trang 81 ... Nếu dựa vào thông tin dự báo diện tích rộng độ xác dự báo khu vực cụ thể nâng cao Dựa thông tin dự báo khu vực kết hợp với dự báo vùng hẹp, dự báo cho tƣơng lai gần đƣợc đƣa Giải Trang vấn đề dự. .. checksum Trang 18 MẠNG CẢM BIẾN KHÔNG DÂY SỬ DỤNG NRF24L01 Chƣơng MẠNG CẢM BIẾN KHÔNG DÂY SỬ DỤNG NRF24L01 3.1 Ứng dụng mạng cảm biến không dây thực tế Mạng cảm biến không dây tập hợp cảm biến đƣợc kết... tính, khóa 2014-2017 Tơi xin cam đoan luận văn thạc sĩ „ Dự báo mưa tương lai gần khu vực ruộng muối Ninh Diêm sử dụng mạng cảm biến mơi trường ‟ cơng trình nghiên cứu riêng tôi, số liệu nghiên