Ứng dụng chatbot để điều khiển nhà thông minh

91 152 0
Ứng dụng chatbot để điều khiển nhà thông minh

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC & ĐÀO TẠO TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: ỨNG DỤNG CHATBOT VÀO ĐIỀU KHIỂN NHÀ THÔNG MINH GVHD: TS Nguyễn Mạnh Hùng SVTH: Nguyễn Minh Hùng MSSV: 14141139 Tp Hồ Chí Minh - 06/2018 BỘ GIÁO DỤC & ĐÀO TẠO TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: ỨNG DỤNG CHATBOT VÀO ĐIỀU KHIỂN NHÀ THÔNG MINH GVHD: TS Nguyễn Mạnh Hùng SVTH: Nguyễn Minh Hùng Tp Hồ Chí Minh - 06/2018 i MSSV: 14141139 TRƢỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o -Tp HCM, ngày 28 tháng 06 năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Chuyên ngành: Hệ đào tạo: Khóa: Nguyễn Minh Hùng Kỹ thuật Điện Tử Truyền Thông Đại học quy 2014 MSSV: 14141139 Mã ngành: 14141 Mã hệ: Lớp: 14141DT3B I TÊN ĐỀ TÀI: ỨNG DỤNG CHATBOT VÀO ĐIỀU KHIỂN NHÀ THÔNG MINH II NHIỆM VỤ Các số liệu ban đầu: - chatbot đƣợc tạo tảng Dialogflow - kit raspberry Pi3 B - Mạch dimmer điều khiển độ sáng bóng đèn - Module Relay 5V kênh điều khiển đóng/mở đèn, quạt - động servo MG90S điều khiển đóng/mở cửa - Module cảm biến nhiệt độ, độ ẩm DHT11 Nội dung thực hiện: - Tìm hiểu tảng Dialogflow tạo chatbot dựa tảng - Tìm hiểu kit Raspberry Pi ngơn ngữ lập trình Python - Tạo webhook để nhận liệu từ Dialogflow, xử lí liệu để trả lại đồng thời điều khiển thiết bị nhà - Thiết kế thi công mạch điều khiển dimmer - Tìm hiểu cách điều khiển động servo, cảm biến nhiệt độ, độ ẩm DHT11 - Thi công mơ hình nhà thơng minh, kết nối module lại với III NGÀY GIAO NHIỆM VỤ: 16/03/2018 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 28/06/2018 V HỌ VÀ TÊN CÁN BỘ HƢỚNG DẪN: TS Nguyễn Mạnh Hùng CÁN BỘ HƢỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ii TRƢỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o -Tp HCM, ngày 28 tháng 06 năm 2018 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Minh Hùng Lớp: 14141DT3B MSSV: 14141139 Tên đề tài: Ứng dụng chatbot điều khiển nhà thông minh Tuần/ngày Nội dung Tuần Gặp GVHD để nghe phổ biến yêu cầu làm đồ án, (16/03 - 23/03) tiến hành chọn đồ án Tuần GVHD tiến hành xét duyệt đề tài Tuần Viết tóm tắt yêu cầu đề tài chọn: đề tài làm gì, nội dung thiết kế, thông số giới hạn đề tài Tuần Tiến hành thiết kế sơ đồ khối, giải thích chức khối Tuần - Tìm hiểu khái niệm liên quan đến đề tài nhƣ API, webhook - Thực hiên thiết kế Dialogflow Tuần - Cài đặt gói thƣ viện cần thiết cho Raspberry - Thực tạo webhook xử lí liệu nhận đƣợc Tuần Tuần Tuần - Thực code phần back-end để hồn thiện u cầu xử lí trả liệu cho Dialogflow, điều khiển phần cứng - Sử dụng ngrok để public server online iii Xác nhận GVHD Tuần 10 - Thiết kế sơ đồ nguyên lí mạch dimmer - Tiến hành vẽ PCB, chọn linh kiện - Tiến hành thi công mạch - Kiểm tra mạch thi cơng Tuần 11 - Thi cơng mơ hình đồ án Tuần 12 - Kiểm tra, đánh giá mô hình Tuần 13 - Viết báo cáo nội dung làm Tuần 14 - Hoàn thiện báo cáo gởi cho GVHD để xem xét góp ý lần cuối trƣớc in báo cáo Tuần 15 Tiến hành làm silde báo cáo nhiệm vụ liên quan đến đồ án tốt nghiệp GV HƢỚNG DẪN (Ký ghi rõ họ tên) iv LỜI CAM ĐOAN -  - Tôi xin cam đoan cơng trình nghiên cứu riêng tơi đƣợc hƣớng dẫn khoa học Ts Nguyễn Mạnh Hùng Các nội dung nghiên cứu, kết đề tài tự thực dựa vào số tài liệu trƣớc khơng chép từ tài liệu hay cơng trình có trƣớc Những thơng tin phục vụ cho đề tài đƣợc tác giả thu thập từ nguồn khác có ghi rõ phần tài liệu tham khảo Tôi xin chịu trách nhiệm cơng trình nghiên cứu riêng mình! Sinh viên thực Nguyễn Minh Hùng v LỜI CẢM ƠN -  - Trong thời gian làm đồ án tốt môn học, em nhận đƣợc nhiều giúp đỡ, đóng góp ý kiến bảo nhiệt tình thầy cơ, gia đình bạn bè Em xin gửi lời cảm ơn chân thành đến Ts Nguyễn Mạnh Hùng, giảng viên Bộ môn Điện Tử Công Nghiệp – Y Sinh - Trƣờng ĐH Sƣ Phạm Kỹ Thuật TP.HCM, ngƣời tận tình hƣớng dẫn, bảo em suốt trình làm đồ án Em xin chân thành cảm ơn thầy cô giáo trƣờng ĐH Sƣ Phạm Kỹ Thuật TP.HCM nói chung, thầy Bộ mơn Điện Tử Cơng Nghiệp – Y Sinh nói riêng dạy dỗ cho em kiến thức môn đại cƣơng nhƣ mơn chun ngành, giúp em có đƣợc sở lý thuyết vững vàng tạo điều kiện giúp đỡ em suốt trình học tập Cuối cùng, em xin chân thành cảm ơn gia đình bạn bè, tạo điều kiện, quan tâm, giúp đỡ, động viên em suốt trình học tập hồn thành đồ án mơn học Sinh viên thực Nguyễn Minh Hùng vi MỤC LỤC Trang bìa i Nhiệm vụ đồ án ii Lịch trình iii Cam đoan v Lời cảm ơn vi Mục lục vii Liệt kê hình vẽ xi Liệt kê bảng vẽ xiv Tóm tắt xv Chƣơng TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ .1 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN .2 1.5 BỐ CỤC Chƣơng CƠ SỞ LÝ THUYẾT .4 2.1 TỔNG QUAN VỀ CHATBOT .4 2.1.1 Khái niệm chatbot 2.1.2 Phân loại chatbot .4 2.1.3 Xử lý ngôn ngữ tự nhiên (Natural Language Processing) 2.2 TỔNG QUAN VỀ API 2.2.1 Khái niệm API 2.2.2 Mơ hình API 2.2.3 Các tác vụ thực qua API 2.3 WEBHOOK 2.3.1 Khái niệm Webhook .7 2.3.2 Hoạt động Webhook .7 2.4 TỔNG QUAN VỀ DIALOGFLOW .8 2.4.1 Giới thiệu Dialogflow 2.4.2 Cấu trúc Dialogflow a Agent 10 vii b Intent 10 c Entities 15 d Fulfillment 17 e Integrations 17 2.5 RASPBERRY PI 18 2.5.1 Giới thiệu Board Raspberry Pi 18 2.5.2 Phần cứng Raspberry Pi 18 a Nguồn cung cấp 20 b Các cổng giao tiếp .20 c Các chân giao tiếp GPIO kit 22 2.5.3 2.6 Hệ điều hành Raspbian cho kit Raspberry Pi .23 ĐỘNG CƠ SERVO .24 2.6.1 Giới thiệu động servo .24 2.6.2 Nguyên lý hoạt động động servo .25 2.7 CẢM BIẾN NHIỆT ĐỘ DHT11 27 2.8 MODULE RELAY CHANNEL 5V 27 2.9 MOSFET .28 2.9.1 Cấu tạo Mosfet 29 2.9.2 Nguyên lí hoạt động 30 Chƣơng TÍNH TỐN VÀ THIẾT KẾ 31 3.1 GIỚI THIỆU 31 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 31 3.2.1 Thiết kế sơ đồ khối hệ thống 31 a Sơ đồ khối hệ thống 31 b Sơ đồ mơ hình hệ thống 32 3.2.2 Tính tốn thiết kế mạch 32 a Thiết kế khối Dialogflow 33 b Thiết kế khối điều khiển raspberry .33 c Thiết kế khối điều khiển động lực .33 d Thiết kế khối nguồn 35 Chƣơng THI CÔNG HỆ THỐNG .36 4.1 GIỚI THIỆU 36 viii 4.2 THIẾT KẾ DIALOGFLOW 36 4.2.1 Lƣu đồ giải thuật 36 4.2.2 Thiết kế cho yêu cầu điều khiển ON-OFF 37 a Tạo Agent 37 b Tạo entities 38 c Tạo Intent 39 d Fulfillment 42 e Integrations 43 4.2.3 Mở rộng cho điều khiển ON-OFF 44 a Thêm entities 44 b Thêm intent 45 4.2.4 Kết hoàn chỉnh Dialogflow .46 a Intents 46 b Entities 46 4.3 LẬP TRÌNH TRÊN RASPBERRY PI .46 4.3.1 Giới thiệu ngơn ngữ lập trình Python 46 a Lịch sử Python 47 b Các phiên Python phát hành 47 c Đặc điểm ngơn ngữ lập trình Python 48 4.3.2 Giới thiệu phần mềm lập trình Python IDLE 49 4.3.3 Lƣu đồ giải thuật 50 4.3.4 Viết chƣơng trình hệ thống 51 4.3.5 Public server lên internet ngrok 52 4.4 THI CÔNG MẠCH ĐIỀU KHIỂN DIMMER 53 4.4.1 Sơ đồ mạch PCB Dimmer 54 4.4.2 Thi công mạch 55 4.5 ĐÓNG GÓI VÀ THI CƠNG MƠ HÌNH 56 4.5.1 Đóng gói điều khiển 56 4.5.2 Thi công mô hình 57 4.6 KẾT QUẢ VẬN HÀNH HỆ THỐNG 61 4.7 TÀI LIỆU HƢỚNG DẪN, THAO TÁC .63 4.7.1 Tài liệu hƣớng dẫn sử dụng 63 ix CHƢƠNG THI CÔNG HỆ THỐNG 4.6 KẾT QUẢ VẬN HÀNH HỆ THỐNG Sau ngƣời dùng nhập “Turn on led 2” đèn mở, đồng thời chatbot trả lời lại cho ngƣời dùng Hình 4.39: Điều khiển thiết bị thơng qua giao diện Hình 4.40: Kết sau nhận yêu cầu điều khiển BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61 CHƢƠNG THI CÔNG HỆ THỐNG Tƣơng tự ngƣời dùng yêu cầu mở cửa Hình 4.41: u cầu điều khiển đóng mở cửa Hình 4.42: Thực mở cửa BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 62 CHƢƠNG THI CƠNG HỆ THỐNG Và trả lời thơng tin nhiệt độ, độ ẩm đƣợc ngƣời dùng yêu cầu Hình 4.43: Truy vấn thông tin nhiệt độ TÀI LIỆU HƢỚNG DẪN, THAO TÁC 4.7 4.7.1 Tài liệu hƣớng dẫn sử dụng - Bƣớc 1: Cấp nguồn cho hệ thống, hệ thống hoạt động sử dụng nguồn 220V AC - Bƣớc 2: Sau khởi động hệ thống, tiến hành mở ứng dụng chatbot trò chuyện với chatbot thơng qua text message - Bƣớc 3: Trò chuyện yêu cầu điều khiển thiết bị chatbot 4.7.2 Quy trình thao tác Để giúp ngƣời sử dụng dễ dàng thao tác, dƣới lƣu đồ quy trình vận hành hệ thống: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 63 CHƢƠNG THI CƠNG HỆ THỐNG Hình 4.44: Lƣu đồ hƣớng dẫn sử dụng BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 64 CHƢƠNG KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Chƣơng KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Để thực yêu cầu đề tài, nhóm em tập trung ghiên cứu hồn thiện đề tài đƣợc giao Q trình nghiên cứu đƣợc thực 15 tuần, trình nhóm em khơng biết đƣợc nhiều kiến thức mà ơn lại nhiều kiến thức cũ quên Dƣới kiến thức mà chúng em học đƣợc 5.1 DIALOGFLOW 5.1.1 Dialogflow Biết đƣợc cách sử dụng khai thác sức mạnh Dialogflow cung cấp cho ngƣời lập trình để tạo chatbot thông minh Biết đƣợc ý nghĩa phần Dialogflow nhƣ:  Agent  Intents  Contexts  Events  Training Phrases  Action and parameters  Responses  Fulfillment  Entities  Integrations  Training  History  Analytics  Prebuilt Agents 5.1.2 Các khái niệm liên quan BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 65 CHƢƠNG KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hiểu đƣợc khái niệm nhƣ API, webhook, định dạng file Json cách trích xuất liệu từ định dạng file Json để phục vụ cho yêu cầu đề tài 5.2 RASPBERRY PI 5.2.1 Raspberry Pi Biết cách cài đặt hệ điều hành cho raspberry, thiết lập IP tĩnh cho mạng Lan để điều khiển raspberry qua VNC raspberry pi khơng có kết nối mạng Thực cài đặt, cập nhật gói (package) cần thiết cho raspberry Sử dụng ngơn ngữ Python để lập trình, cài đặt thƣ viện Python cần thiết để lập trình phục vụ đề tài Biết cách sử dụng hàm thƣ viện nhƣ: GPIO.setwarnings() GPIO.setmode() GPIO.setup() GPIO.PWM() Hiểu đƣợc điện áp cấp từ Raspberry Pi nhƣ ý nghĩa chân Raspberry, chẳng hạn nhƣ chân Raspberry đọc đƣợc Input tín hiệu Digital, khơng có chân đọc Analog nhƣ Arduino Cũng nhƣ tìm hiểu chuẩn giao tiếp Raspberry 5.2.2 Công cụ ngrok Biết cách sử dụng ngrok để public server, thực xem xét quản lí tác vụ thực server 5.3 PHẦN CỨNG 5.3.1 Mạch điều khiển dimmer Tìm hiểu ngun lí dimmer từ thực hành làm mạch mô dimmer để điều khiển thiết bị Từ đó, ơn lại kiến thức linh kiện nhƣ Triac, Mosfet Biết cách sử dụng phần mềm Altium Designer để vẽ mạch PBC phục vụ cho đề tài BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 66 CHƢƠNG KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Biết cách hoàn thiện mạch điện tử qua nhiều công đoạn khác 5.3.2 Động Servo Tìm hiểu ngun lí điều khiển động servo PWM để từ thực yêu cầu điều khiển góc quay để đóng mở cửa 5.3.3 Module Relay kênh 5V Hiểu đƣợc cách hoạt động module Relay, tính tốn đƣợc dòng cần thiết để kích hoạt Relay Từ thực tác vụ điều khiển thiết bị 5.3.4 Module cảm biến DHT11 Biết cách sử dụng module cảm biến nhiệt độ, độ ẩm DHT11 để cung cấp liệu nhiệt độ, độ ẩm cho đề tài 5.4 NHẬN XÉT VÀ ĐÁNH GIÁ Nhóm thực đề tài hồn thành yêu cầu đề tài đặt ra, đồ án nghiên cứu có ƣu điểm nhƣ:  Đề tài có tính thực tế cao, đặc biệt năm gần việc ứng dụng lĩnh vực liên quan đến AI, Machine Learning vào lĩnh vực đời sống ngày nhiều đem lại hiệu cao  Chi phí xây dựng hệ thống khơng cao, tƣơng đối dễ sử dụng vận hành Qúa trình bảo trì hệ thống đơn giản  Giao diện chatbot dễ sử dụng, đặc biệt tích hợp với tảng nhắn tin nhƣ Facebook message, Skype, Slack, để tăng tính thiết thực, gần gũi với ngƣời dùng  Hệ thống điều khiển thời gian thực, có yêu cầu điều khiển ngƣời dùng điều khiển thiết bị nhà  Dựa lịch sử chat, ngƣời dùng xem xét lịch sử đóng mở thiết bị nhà Tuy nhiên, hệ thống có hạn chế nhƣ: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67 CHƢƠNG KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ  Hệ thống điều khiển thông qua internet nên yêu cầu phải có đƣờng truyền mạng ổn định trì lâu dày  Tính bảo mật hệ thống khơng cao, có link trò chuyện trò chuyện đƣợc với chatbot  Hệ thống sử dụng API Dialogflow google để lập trình, google ngƣng cung cấp API hệ thống khơng hoạt động  Sử dụng ngrok cho địa url khác nên lần thay đổi cần phải cung cấp địa webhook phần fulfillment Dialogflow  Độ trễ hệ thống phụ thuộc vào tốc độ độ ổn định đƣờng truyền BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68 CHƢƠNG KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN Chƣơng KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 6.1 KẾT LUẬN Từ yêu cầu đặt chƣơng 1, nhóm thực đề tài nhận xét hệ thống hoạt động ổn định đáp ứng yêu cầu đề tài đặt Đó hệ thống thơng qua việc trò chuyện với chatbot để điều khiển thiết bị nhà với giao diện đơn giản, dễ sử dụng trò chuyện với ngƣời dùng Mơ hình thiết kế nhà thơng minh đơn giản, dễ nhìn giúp dễ dàng hình dung hình ảnh ngơi nhà ngồi thực tế Việc bố trí module nhƣ thiết bị hợp lí Tính an tồn hệ thống đƣợc đảm bảo, an toàn cho ngƣời sử dụng Tuy nhiên, hệ thống có hạn chế phụ thuộc vào đƣờng truyền internet, tính bảo mật chƣa đƣợc cao, chatbot trò chuyện với ngƣời dùng câu trò chuyện đơn giản, khơng thơng minh u cầu ngƣời dùng phức tạp, khó hiểu HƢỚNG PHÁT TRIỂN 6.2 Tích hợp chatbot vào tảng nhắn tin để thân thiện tiện lợi cho ngƣời dùng Đồng thời, ngồi việc trò chuyện đơn giản với ngƣời dùng tích hợp thêm nhiều API khác để chatbot thông minh trả lời đƣợc hết đoạn thoại ngƣời dùng nhƣ ngƣời thật Đó API thời tiết, API đọc báo, API mua sắm, vv đặc biệt tích hợp API simsimi ứng dụng chatbot nhắn tin tiếng Từ đó, chatbot đƣợc xem nhƣ trợ lí ngơi nhà, trò chuyện, hỗ trợ mua sắm, cung cấp thơng tin, báo chí cho ngƣời dùng Có thể tích hợp thêm API Voice để chatbot giao tiếp với ngƣời dùng lời nói thay nhắn tin text thơng thƣờng Có thể linh hoạt mở rộng thêm nhiều thiết bị cần điều khiển nhà, dự án khác BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 69 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO [1] Trần Thu Hà, “Giáo trình điện tử bản”, NXB ĐH Quốc Gia Tp.HCM, 2013 [2] Hồng Ngọc Văn, “Giáo trình thực hành điện tử công suất”, Trƣờng ĐH Sƣ Phạm Kỹ Thuật Tp.HCM, 2015 [3] Matt Richardson and Shawn Wallace, “Getting Started with Raspberry Pi”, Pushlished by O’Reilly Media, Inc., 2012 [4] Cao Văn Tiến Nguyễn Văn Nghĩa, “Điều khiển thiết bị qua internet dùng raspberry pi thông qua wifi”, Trƣờng ĐH SPKT Tp.HCM, 2016 [5] Nick Quinlan, “What’s a webhook”, www.sendgrid.com, 2014 [6] Sachin Kumar, “How to create a chatbot using Dialogflow Enterprise Edition and Dialogflow API V2”, 2018 [7] Jestin Cubetech, “Safe and simple AC pwm dimmer for Arduino/ Raspberry pi”, 2013 [8] Tài liệu website Dialogflow: https://dialogflow.com/docs/getting-started [9] Trang chủ Raspberry : https://www.raspberrypi.org [10] Website datasheet linh kiện: alldatasheet.com BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 70 PHỤ LỤC PHỤ LỤC #!/usr/bin/env python import urllib import json import os import RPi.GPIO as GPIO import Adafruit_DHT GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(16, GPIO.OUT) GPIO.setup(23, GPIO.OUT) GPIO.setup(24, GPIO.OUT) GPIO.setup(25, GPIO.OUT) GPIO.setup(18, GPIO.OUT) pwm = GPIO.PWM(18, 500) pwm.start(100) GPIO.setup(13, GPIO.OUT) pwm1 = GPIO.PWM(13, 50) from flask import Flask from flask import request from flask import make_response # Flask app should start in global layout app = Flask( name ) @app.route('/webhook', methods=['POST']) def webhook(): req = request.get_json(silent=True, force=True) print("Request:") print(json.dumps(req, indent=4)) res = makeWebhookResult(req) res = json.dumps(res, indent=4) print(res) #t = str(res["speech"]) r = make_response(res) #t= str(r.decode('utf-8')) print("*") print (r) #print ("*") r.headers['Content-Type'] = 'application/json' return r def makeWebhookResult(req): #if req.get("queryResult").get("action") != "on-off": # return {} #if req.get("queryResult").get("action") != "on-off.condition": # return {} sp1="" sp2="" sp3="" BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 71 PHỤ LỤC sp4="" sp5="" sp6="" sp7="" sp8="" sp9="" sp10="" sp11="" sp12="" sp13="" sp14="" result = req.get("queryResult") parameters = result.get("parameters") val = parameters.get("on-off") val2 = parameters.get("led") val3 = parameters.get("status") val4 = parameters.get("percentage") val5 = parameters.get("status-door") val6 = parameters.get("temperature") val7 = parameters.get("unit-temperature") val8 = parameters.get("humidity") val9 = parameters.get("room") val10 = parameters.get("hot-cold") if req.get("queryResult").get("action") == "on-off": if len(val)==len(val2): for i in range (0, len(val)): for j in range (0, len(val2)): if i == j: if val[i] =="on": if val2[j] == "all": GPIO.output(16, GPIO.HIGH) GPIO.output(23, GPIO.HIGH) GPIO.output(24, GPIO.HIGH) GPIO.output(25, GPIO.HIGH) sp11 = "turn on all" if val2[j] == "led 1": GPIO.output(16, GPIO.HIGH) sp1 = val[i] + " " + val2[j] if val2[j] == "led 2": GPIO.output(23, GPIO.HIGH) sp2 = val[i] + " " + val2[j] if val2[j] == "led 3": GPIO.output(24, GPIO.HIGH) sp3 = val[i] + " " + val2[j] if val2[j] == "fan": GPIO.output(25, GPIO.HIGH) sp4 = val[i] + " " + val2[j] if val[i] =="off": if val2[j] == "all": GPIO.output(16, GPIO.LOW) GPIO.output(23, GPIO.LOW) GPIO.output(24, GPIO.LOW) GPIO.output(25, GPIO.LOW) sp12 = "turn off all" if val2[j] == "led 1": GPIO.output(16, GPIO.LOW) sp5 = val[i] + " " + val2[j] if val2[j] == "led 2": GPIO.output(23, GPIO.LOW) sp6 = val[i] + " " + val2[j] if val2[j] == "led 3": BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 72 PHỤ LỤC GPIO.output(24, GPIO.LOW) sp7 = val[i] + " " + val2[j] if val2[j] == "fan": GPIO.output(25, GPIO.LOW) sp8 = val[i] + " " + val2[j] else: for i in range (0,len(val)): for j in range (0, len(val2)): if val[i] =="on": if val2[j] == "led 1": GPIO.output(16, GPIO.HIGH) sp1 = val[i] + " " + val2[j] if val2[j] == "led 2": GPIO.output(23, GPIO.HIGH) sp2 = val[i] + " " + val2[j] if val2[j] == "led 3": GPIO.output(24, GPIO.HIGH) sp3 = val[i] + " " + val2[j] if val2[j] == "fan": GPIO.output(25, GPIO.HIGH) sp4 = val[i] + " " + val2[j] if val[i] =="off": if val2[j] == "led 1": GPIO.output(16, GPIO.LOW) sp5 = val[i] + " " + val2[j] if val2[j] == "led 2": GPIO.output(23, GPIO.LOW) sp6 = val[i] + " " + val2[j] if val2[j] == "led 3": GPIO.output(24, GPIO.LOW) sp7 = val[i] + " " + val2[j] if val2[j] == "fan": GPIO.output(25, GPIO.LOW) sp8 = val[i] + " " + val2[j] speech = "OKK, " + sp1 + " " + sp2 + " " + sp3 + " " + sp4 + " " + sp5 + " " + sp6 + " " + sp7 + " " + sp8 + " " + sp11 + " " + sp12 elif req.get("queryResult").get("action") == "on-off:condition": if val3 =="light": if val9 == "room 1": GPIO.output(16, GPIO.HIGH) if val9 == "room 2": GPIO.output(23, GPIO.HIGH) if val9 == "room 3": GPIO.output(24, GPIO.HIGH) #if val2 == "room 4": #GPIO.output(25, GPIO.HIGH) if val3 =="dark": if val9 == "room 1": GPIO.output(16, GPIO.LOW) if val9 == "room 2": GPIO.output(23, GPIO.LOW) if val9 == "room 3": GPIO.output(24, GPIO.LOW) #if val2 == "room 4": #GPIO.output(25, GPIO.LOW) speech = "OKK, " + val3 + " " + val9 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 73 PHỤ LỤC elif req.get("queryResult").get("action") == "action.dimmer": a="" for i in val4: if i =="%": break a=a+i #print a dc = 100.0 - float(a) pwm.ChangeDutyCycle(dc) speech = "OK, dimmer " + a + "%" elif req.get("queryResult").get("action") == "action.door": if val5 == "open": pwm1.start(5) if val5 == "close": pwm1.start(10) speech = "OK, " + val5 + " door" elif req.get("queryResult").get("action") == "action.temperature": if val6 == "temperature": if val7 == "C": humidity, temperature = Adafruit_DHT.read_retry(11, 27) sp9 = "temperature is " + str(temperature) + " C" if val7 == "F": humidity, temperature = Adafruit_DHT.read_retry(11, 27) temperature1 = temperature*1.8 + 32 sp10 = "temperature is " + str(temperature1) + " F" speech = sp9 + " " + sp10 elif req.get("queryResult").get("action") == "action.humidity": if val8 == "humidity": humidity, temperature = Adafruit_DHT.read_retry(11, 27) speech = "the humidity is " + str(humidity) + "%" elif req.get("queryResult").get("action") == "action.dht11": if val6 == "temperature" and val8 == "humidity": humidity, temperature = Adafruit_DHT.read_retry(11, 27) speech = " The temperature is " + str(temperature) + " C and the humidity is " + str(humidity) + "%" elif req.get("queryResult").get("action") == "action.fan": if val10 == "hot": GPIO.output(25, GPIO.HIGH) sp13 = "i turn on fan" if val10 == "cold": GPIO.output(25, GPIO.LOW) sp14 = "i turn off fan" speech = "OK, " + sp13 + " " + sp14 else: return {} print("Response:") print(speech) return { "fulfillmentText": speech, #"fulfillmentMessages": speech , #"data": {}, #"contextOut": [], #"source": "BankRates" } if name == ' main ': port = int(os.getenv('PORT', 5000)) print("Starting app on port %d" %(port)) app.run(debug=True, port=port, host='0.0.0.0') BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 74 PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 75 ... định chọn chatbot làm đối tƣợng nghiên cứu ứng dụng cụ thể vào điều khiển nhà thông minh Nhà thông minh đƣợc thiết kế sử dụng Raspberry Pi cho việc điều khiển giám sát thiết bị nhà thông qua... với chatbot nhƣ trợ lí ảo giúp ngƣời dùng quản lí điều khiển hoạt động ngơi nhà Vì lý đó, nhóm sinh viên định thực đề tài Ứng dụng chatbot vào điều khiển nhà thông minh 1.2 MỤC TIÊU Tạo đƣợc chatbot. .. dễ dàng tiện lợi Nhà thông minh đƣợc thiết kế sử dụng Raspberry Pi cho việc điều khiển giám sát thiết bị nhà thông qua việc giao tiếp với chatbot Ngoài việc điều khiển thiết bị nhà app android

Ngày đăng: 21/05/2019, 15:27

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan