1. Trang chủ
  2. » Luận Văn - Báo Cáo

(Đồ án hcmute) hệ thống nhà thông minh

139 8 0

Đ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 VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH ĐIỆN TỬ - TRUYỀN THÔNG HỆ THỐNG NHÀ THƠNG MINH GVHD: NGUYỄN ĐÌNH PHÚ SVTH : TƠN TRẦN GIA HƯNG MSSV: 15141026 SVTH : NGUYỄN THANH TRỌNG MSSV: 15141076 SKL 0 Tp Hồ Chí Minh, tháng 07/2019 an LỜI CAM ĐOAN LỜI CAM ĐOAN Chúng xin cam đoan cơng trình nghiên cứu riêng chúng tơi Các số liệu sử dụng đề tài có nguồn gốc rõ ràng dựa số tài liệu trước Các kết nghiên cứu đề tài tự tìm hiểu, phân tích cách trung thực, khách quan phù hợp với thực tiễn Nếu không nêu trên, xin chịu trách nhiệm hồn tồn đề tài Nhóm thực đề tài Tôn Trần Gia Hưng Nguyễn Thanh Trọng BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an i LỜI CẢM ƠN LỜI CẢM ƠN Lời nhóm sinh viên thực đề tài xin gửi lời cám ơn chân thành tới thầy cô giáo trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh nói chung thầy giáo khoa Điện – Điện tử nói riêng tận tình giảng dạy, truyền đạt cho kiến thức, kinh nghiệm quý báu suốt thời gian qua Đặc biệt xin gửi lời cảm ơn sâu sắc đến thầy Nguyễn Đình Phú định hướng, hướng dẫn tận tình tạo điều kiện tốt cho suốt q trình chúng tơi thực đề tài Sau xin gửi lời cảm ơn tới anh, chị, bạn giúp đỡ, chia sẻ kinh nghiệm, đóng góp ý kiến cho chúng tơi để hồn thành tốt đề tài Trong trình thực đề tài khơng tránh khỏi thiếu xót Rất mong nhận góp ý q thầy bạn để đề tài hồn thiện Nhóm thực đề tài xin chân thành cảm ơn! Nhóm thực đề tài Tôn Trần Gia Hưng Nguyễn Thanh Trọng BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an ii TĨM TẮT TĨM TẮT “Hệ thống nhà thơng minh” đề tài mà qua năm để tài lựa chọn hầu hết sinh viên ngành kỹ thuật Khi nói đến nhà thơng minh người người ta thường nghĩ đến thiết bị nhà bật tắt dễ dàng remote điều khiển tivi, hay remote điều khiển điều khiển quạt Với đề tài nghiên cứu trước đa số hệ thống nhà thông minh thường giao tiếp với thiết bị, cảm biến, cho phép bật tắt hẹn cảnh báo Đối với hệ thống nhà thông minh có cải tiến vượt bật tích hợp đa nhiều hệ thống khác có thị trường Từ tìm tịi diễn đàn cơng nghệ giúp nhóm tìm hệ thống mang tên HomeAssistant Với hệ thống tảng tự động hóa dựa mã nguồn mở chạy Python, khiến việc triển khai mở rộng trở nên dễ dàng hết Có thể nói HomeAssistant chạy thiết bị, dịch vụ chạy python, mà tiện ích Raspberry Pi Các tính HomeAssistant là: Giám sát: HomeAssistant theo dõi tình trạng tất thiết bị nhà bạn thay cho cho bạn, miễn thiết bị nằm danh sách HomeAssistant hỗ trợ Điều khiển tất thiết bị từ giao diện nhất, thân thiện với điện thoại Đặc biệt, tảng không lưu trữ liệu người dùng máy chủ, đảm bảo tính riêng tư cao Tự động hóa: cho phép thiết lập quy tắc tiên tiến để kiểm sốt thiết bị biến ngơi nhà bạn thành thiên đường sống đáng mơ ước Từ tính HomeAssistant kết hợp với kiến thức thiết kế mạch lập trình hệ thống để tạo nên xử lý trung tâm với sensors, devices thiết bị thông minh thị trường kết hợp lại với tạo nên hệ thống tự động chuyên nghiệp mà hệ thống nhà thông minh hàng đầu cạnh tranh tính Với ưu điểm kể ta tùy biến thiết bị thông minh kết hợp HomeAssistant để tạo thành hệ thống riêng với độ tự động hóa cao Đó “hệ thống nhà thơng minh” BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an iii MỤC LỤC MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN .ii TÓM TẮT iii MỤC LỤC iv DANH MỤC HÌNH vii DANH MỤC BẢNG viii CHƯƠNG 1: TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ: 1.3 NỘI DUNG NGHIÊN CỨU: 1.2 1.4 1.5 MỤC TIÊU: GIỚI HẠN: BỐ CỤC: CHƯƠNG 2: 2.1 CƠ SỞ LÝ THUYẾT GIAO THỨC MQTT: Khái quát giao thức MQTT: Ưu điểm giao thức MQTT: 2.2 2.3 Publish subscribe giao thức MQTT: GIỚI THIỆU IC NGUỒN LD1117 VÀ MIC29302: IC LD1117: LM2696: CÁC LOẠI CẢM BIẾN THÔNG DỤNG: Cảm biến nhiệt độ, độ ẩm DHT11: PIR sensor: 10 Cảm biến hồng ngoại: 12 Cảm biến từ NC: 13 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an iv MỤC LỤC: 2.4 2.5 Công tơ điện tử đa pzem-004t: 15 BỘ XỬ LÝ TRUNG TÂM: 16 Module Wifi ESP8266: 16 Raspberry Pi Module B+: 18 CÁC MODULE KHÁC: 19 Relay: 20 Module RC522: 21 Khóa chốt điện: 22 CHƯƠNG 3: 3.1 3.2 TÍNH TỐN VÀ THIẾT KẾ 23 CÁC YÊU CẦU THIẾT KẾ: 23 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG: 24 Thiết kế sơ đồ khối: 24 Thiết kế khối cảm biến: 25 Thiết kế hệ thống điều khiển: 35 Thiết kế hệ thống cửa vào: 35 Thiết kế khối xử lý trung tâm: 37 Thiết kế khối server xử lý trung tâm: 38 Thiết kế khối camera: 40 Thiết kế khối ngoại vi mở rộng: 43 3.3 Thiết kế khối nguồn: 53 SƠ ĐỒ NGUYÊN LÝ TOÀN MẠCH: 54 Sơ đồ nguyên lý hệ thống cảm biến: 55 Sơ đồ nguyên lý hệ thống điều khiển: 56 Sơ đồ nguyên lý hệ thống cửa vào: 56 CHƯƠNG 4: 4.1 THI CÔNG HỆ THỐNG 57 THI CÔNG BẢNG MẠCH KẾT NỐI 57 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an v MỤC LỤC Linh kiện sử dụng mạch: 57 Vẽ mạch in: 58 Kết sau thi công mạch in Altium: 60 Kết sau hàn linh kiện vào board: 61 4.2 Chạy thử: 63 5.1 Lưu đồ giải thuật hệ thống: 66 CHƯƠNG 5: LẬP TRÌNH HỆ THỐNG 66 Lưu đồ giải thuật hệ thống cảm biến: 66 Lưu đồ giải thuật hệ thống điều khiển: 67 5.2 Lưu đồ giải thuật hệ thống cửa vào: 69 Viết chương trình hệ thống: 70 Viết chương trình hệ thống cảm biến: 70 Viết chương trình hệ thống điều khiển: 74 5.3 Viết chương trình hệ thống cửa vào: 78 Viết chương trình cho server: 86 Cài hệ điều hành cho server Raspberry Pi B+: 86 Cài đặt HomeAssistant: 92 Cấu hình giao diện HomeAssistant ngoại vi: 102 CHƯƠNG 6: KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ 103 6.1 KẾT QUẢ 103 6.3 ĐÁNH GIÁ 108 6.2 NHẬN XÉT 108 CHƯƠNG 7: 7.1 7.2 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 109 KẾT LUẬN: 109 HƯỚNG PHÁT TRIỂN: 110 BỘ MÔN ĐIỆN TỬ CƠNG NGHIỆP-Y SINH an vi DANH SÁCH HÌNH DANH SÁCH HÌNH HÌNH 2- Mơ hình MQTT HÌNH 2- Sơ đồ bên IC LD1117 HÌNH 2- Sơ đồ chân IC LD1117 HÌNH 2- Ứng dụng LM1117 HÌNH 2- Ứng dụng LM1117 HÌNH 2- LM2596 HÌNH 2- Cảm biến nhiệt độ, độ ẩm DHT11 HÌNH 2- Cảm biến thân nhiệt chuyển động PIR 10 HÌNH 2- Nguyên lý PIR sensor 11 HÌNH 2- 10 Tín hiệu phát vật chuyển động PIRs 11 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an vii C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an DANH SÁCH BẢNG DANH SÁCH BẢNG Bảng 2.4.1 Thông số kỹ thuật ESP-12F 17 Bảng 2.4.2 Các chế độ bootup ESP-12F 17 Bảng 2.4.3 Bảng so sánh dòng raspberry 18 Bảng 2.5.1 Các thông số relay 5V 20 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn viii C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an DANH SÁCH CÁC TỪ VIẾT TẮT DANH SÁCH CÁC TỪ VIẾT TẮT GA: Google Assistant UART: Universal Asynchronous Receiver – Transmitter MQTT: Message Queuing Telemetry Transport IoT: Internet of things I2C: Inter-Intergrated Circuit SPI: Serial Peripheral Interface M2M: Machine to Machine PIR: Passive InfraRed NC: normally closed NO: normally opened TTL: Transistor-transistor logic NTC: Negative temperature coefficient BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn v C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC trigger: platform: state entity_id: input_boolean.radio_vn to: 'on' action: service: script.turn_on entity_id: script.play_radiovn #zing - alias: play zing_mp3 by select music_type trigger: platform: state entity_id: input_select.zing_mp3 condition: condition: state entity_id: input_boolean.zing_mp3 state: 'on' action: service: script.turn_on entity_id: script.play_zing_mp3 - alias: play zing_mp3 by turn on trigger: platform: state entity_id: input_boolean.zing_mp3 to: 'on' action: service: script.turn_on entity_id: script.play_zing_mp3 - alias: play zing_mp3 by trigger repeat or shuffle trigger: platform: state entity_id: - input_boolean.zing_repeat - input_boolean.zing_shuffle condition: condition: state entity_id: input_boolean.zing_mp3 state: 'on' action: service: script.turn_on entity_id: script.play_zing_mp3 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 114 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC Code configuration.yaml # Configure a default setup of Home Assistant (frontend, api, etc) default_config: # Uncomment this if you are using SSL/TLS, running in Docker container, etc # http: # base_url: example.duckdns.org:8123 #broadlink mp1 switch: - platform: broadlink_mp1 host: 192.168.1.71 mac: '78:0F:77:59:5B:CD' type: mp11 friendly_name: 'S1' - platform: broadlink_mp1 host: 192.168.1.71 mac: '78:0F:77:59:5B:CD' type: mp12 friendly_name: 'S2' - platform: broadlink_mp1 host: 192.168.1.71 mac: '78:0F:77:59:5B:CD' type: mp13 friendly_name: 'S3' - platform: broadlink_mp1 host: 192.168.1.71 mac: '78:0F:77:59:5B:CD' type: mp14 friendly_name: 'S4' - platform: broadlink host: 192.168.1.138 mac: 'c8:f7:42:16:90:f4' timeout: 15 switches: # Will work on most Phillips TVs: fans: friendly_name: "FANS" command_on: 'JgAyACoOKQ4OKikPKQ4OKg0qDioOKg0qDiop7SkPKQ4OKikOKg4NKg4qDioNKg4qDikqAA0FAA AAAAAA' command_off: 'JgAyACoOKQ4OKikPKQ4OKg0qDioOKg0qDiop7SkPKQ4OKikOKg4NKg4qDioNKg4qDikqAA0FAA AAAAAA' fans_mode: friendly_name: "Fans mode" command_on: 'JgCcACoOKQ4OKioNKg4OKg0qKg4OKQ4qDioNAAEJKQ4qDg4qKQ4qDg4pDiopDg4qDioNKg4AAQ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 115 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC oqDikODiopDioODioNKioODSoOKg4qDgABCCkOKg4NKioOKQ8NKg4qKQ4OKg4qDSoOAAEKKQ8pD g4qKQ4qDg4pDiopDw0qDioNKg4AAQgqDioODSoqDikODioOKSoODioNKg8pDgANBQAAAAAAAAAA AAAAAA' # Sensors sensor: # # - Weather prediction platform: yr Lich platform: time_date display_options: - 'date_time' weather_forecast: # Text to speech tts: - platform: google_translate #exlab tts_fpt: api_key: '24bebb117ee34bb6883b8788a092ede8' speed: '2' url: 'https://pi97.duckdns.org' radio_vn: name: Radio VN entities: - input_boolean.radio_vn - input_select.radio_vn input_boolean: radio_vn: name: Play radio icon: mdi:radio #zing zing_mp3: name: Play Zing MP3 icon: mdi:music-box zing_repeat: name: Repeat icon: mdi:repeat zing_shuffle: name: Shuffle icon: mdi:shuffle-variant input_select: radio_vn: name: Channel BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 116 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC options: - VOV1 - VOV2 - VOV3 - VOVGT-HN - VOVGT-HCM initial: VOV3 icon: mdi:format-list-checkbox zing_mp3: name: Music type options: - Pop - Country - Rock - Dance - R&B - Rap - Soundtrack - Nhac tre - Tru tinh - Que huong - Cach mang - Rock Viet - Rap Viet - Dance Viet initial: Pop icon: mdi:format-list-checkbox # Weather Map weather: - platform: openweathermap api_key: 4a98ff9f8133920f01a7487a71aeb34f # Speedtest speedtestdotnet: scan_interval: minutes: 30 monitored_conditions: - ping - download - upload android_ip_webcam: - host: 192.168.1.131 port: 8080 # Neu không thiet lap username va password thi bo qua #username: user_da_thiet_lap #password: password_da_thiet_lap scan_interval: sensors: - audio_connections - battery_level BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 117 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC - battery_temp - battery_voltage - light - motion - pressure - proximity - sound - video_connections switches: - exposure_lock - ffc - focus - gps_active - night_vision - overlay - torch - whitebalance_lock - video_recording zing_mp3: name: Zing MP3 control: hidden entities: - input_boolean.zing_mp3 - input_select.zing_mp3 - input_boolean.zing_repeat - input_boolean.zing_shuffle ios: push: categories: - name: Alarm identifier: 'alarm' actions: - identifier: 'SOUND_ALARM' title: 'Sound Alarm' activationMode: 'background' authenticationRequired: true destructive: true behavior: 'default' - identifier: 'SILENCE_ALARM' title: 'Silence Alarm' activationMode: 'background' authenticationRequired: true destructive: false behavior: 'textInput' textInputButtonTitle: 'Silencio!' textInputPlaceholder: 'Placeholder' group: !include groups.yaml automation: !include automations.yaml BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 118 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC script: !include scripts.yaml Code configuration.yaml (1) # Configure a default setup of Home Assistant (frontend, api, etc) default_config: # Uncomment this if you are using SSL/TLS, running in Docker container, etc # http: # base_url: example.duckdns.org:8123 # Sensors duckdns: domain: doantotnghiep.duckdns.org access_token: a803eebf-fde8-48a5-8aa2-f7e55ab191c4 mqtt: broker: core-mosquitto username: hassio password: 123456 switch: - platform: mqtt name: "Đèn" state_topic: "l_per" command_topic: "l_per" payload_on: "1" payload_off: "0" qos: - platform: mqtt name: "Đèn phòng khách" state_topic: "l_liv" command_topic: "l_liv" payload_on: "1" payload_off: "0" qos: - platform: mqtt name: "Đèn nhà bếp" state_topic: "l_kit" command_topic: "l_kit" payload_on: "1" payload_off: "0" qos: - platform: mqtt name: "Đèn phòng ngủ" state_topic: "l_bed" command_topic: "l_bed" payload_on: "1" payload_off: "0" qos: input_datetime: device_on: name: "Hẹn BẬT thiết bị" has_time: true BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 119 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC initial: '00:00' device_off: name: "Hẹn TẮT thiết bị" has_time: true initial: '00:05' sensor: # Weather prediction - platform: yr - platform: mqtt name: "Nhiệt độ" state_topic: "temp" unit_of_measurement: '°C' - platform: mqtt name: "Độ ẩm" state_topic: "humi" unit_of_measurement: '%' - platform: mqtt name: "Điện áp" state_topic: "voltage" unit_of_measurement: 'V' - platform: mqtt name: "Dòng điện" state_topic: "current" unit_of_measurement: 'A' - platform: mqtt name: "Công suất tại" state_topic: "power" unit_of_measurement: 'W' - platform: mqtt name: "Điện tiêu thụ" state_topic: "energy" unit_of_measurement: 'Wh' - platform: mqtt name: "Tiền điện" state_topic: "money" unit_of_measurement: 'VND' - platform: mqtt name: "Hưng" state_topic: "hung" - platform: mqtt name: "Trọng" state_topic: "trong" - platform: mqtt name: "Cha" state_topic: "cha" - platform: mqtt name: "Mẹ" state_topic: "me" - platform: mqtt BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 120 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC name: "" state_topic: "inroom" unit_of_measurement: 'người phòng' - platform: time_date display_options: - 'time' - 'date' - 'date_time' # Text to speech tts: - platform: google_translate group: !include groups.yaml automation: !include automations.yaml script: !include scripts.yaml Code group: default_view: name: Home view: yes icon: mdi:home entities: - group.radio_vn - group.zing_mp3 Code scripts.yaml play_radiovn: sequence: - service: radio_vn.play data: entity_id: media_player.room_player list channel: VOV1, VOV2, VOV3, VOVGT-HN, VOVGT-HCM data_template: entity_id: media_player.room_player channel: > {{ states.input_select.radio_vn.state }} play_zing_mp3: sequence: - service: zing_mp3.play data: entity_id: media_player.room_player music_type: Pop BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 121 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC # optional, default: 'Pop' #list music_type: Pop, Country, Rock, Dance, R&B, Rap, Soundtrack, Nhac tre, Tru tinh, Que huong, Cach mang, Rock Viet, Rap Viet, Dance Viet repeat: on # optional, default: 'off' shuffle: on # optional, default: 'off' data_template: entity_id: media_player.room_player music_type: > {{ states.input_select.zing_mp3.state }} repeat: > {{ states.input_boolean.zing_repeat.state }} shuffle: > {{ states.input_boolean.zing_shuffle.state }} Code Automation.yaml - id: device_on trigger: platform: template value_template: "{{ states('sensor.time') == (states.input_datetime.device_on.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}" action: service: switch.turn_on entity_id: switch.den - id: device_off trigger: platform: template value_template: "{{ states('sensor.time') == (states.input_datetime.device_off.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}" action: service: switch.turn_off entity_id: switch.den Code Automation.yaml (1) - alias: play radio by select channel trigger: platform: state entity_id: input_select.radio_vn condition: condition: state entity_id: input_boolean.radio_vn state: 'on' action: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 122 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC service: script.turn_on entity_id: script.play_radiovn - alias: play radio by turn on trigger: platform: state entity_id: input_boolean.radio_vn to: 'on' action: service: script.turn_on entity_id: script.play_radiovn #zing - alias: play zing_mp3 by select music_type trigger: platform: state entity_id: input_select.zing_mp3 condition: condition: state entity_id: input_boolean.zing_mp3 state: 'on' action: service: script.turn_on entity_id: script.play_zing_mp3 - alias: play zing_mp3 by turn on trigger: platform: state entity_id: input_boolean.zing_mp3 to: 'on' action: service: script.turn_on entity_id: script.play_zing_mp3 - alias: play zing_mp3 by trigger repeat or shuffle trigger: platform: state entity_id: - input_boolean.zing_repeat - input_boolean.zing_shuffle condition: condition: state entity_id: input_boolean.zing_mp3 state: 'on' action: service: script.turn_on entity_id: script.play_zing_mp3 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 123 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC Custom_component: Radio_vn.py ##=== Play radio VN by exlab ===# ##=== version 1.0 07/02/2019 ===# ##==================# ##Config in configuration.yaml file for Home Assistant ##radio_vn: ## ##Code in script ##play_radiovn: ## sequence: ## - service: radio_vn.play ## data: ## entity_id: media_player.room_player ## channel: 'VOV2' # optional, default: 'VOV3' #list channel: VOV1, VOV2, VOV3, VOVGT-HN, VOVGT-HCM # Declare variables DOMAIN = 'radio_vn' SERVICE_RADIO_PLAY = 'play' # data service CONF_PLAYER_ID = 'entity_id' CONF_CHANNEL= 'channel' # const data url = {'VOV1':'https://vov.vn/RadioPlayer.vov?c=vov1', 'VOV2':'https://vov.vn/RadioPlayer.vov?c=vov2', 'VOV3':'https://vov.vn/RadioPlayer.vov?c=vov3', 'VOVGTHN':'https://vov.vn/RadioPlayer.vov?c=vovgt', 'VOVGTHCM':'https://vov.vn/RadioPlayer.vov?c=vovgtsg'} prefix_url = 'https://5a6872aace0ce.streamlock.net/' match_text = 'MakeRadio' import requests def get_link_radio(_channel): res = requests.get(url.get(_channel)).text i = res.find(match_text) ii = res.find(';',i) ext_url = (res[i:ii].split(',')[1].replace("'","").strip()) radio_link = prefix_url + ext_url return radio_link def setup(hass, config): def play_radio(data_call): BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 124 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC # Get data service media_id = data_call.data.get(CONF_PLAYER_ID) channel = str(data_call.data.get(CONF_CHANNEL, 'VOV3')) # get link of radio uri = get_link_radio(channel) # service data for 'CALL SERVICE' in Home Assistant service_data = {'entity_id': media_id, 'media_content_id': uri, 'media_content_type': 'music'} # Call service from Home Assistant hass.services.call('media_player', 'play_media', service_data) hass.services.register(DOMAIN, SERVICE_RADIO_PLAY, play_radio) return True tts_fpt.py # encoding: utf-8 ##=== Text to Speech use open API: FPT Speech Synthesis ===# ##=== exlab, Jan 03, 2019 ===# ##=== version 1.0 ===# ##=== version 1.1 Jan 10, 2019 ===# ##==================# ##Config in configuration.yaml file for Home Assistant ##tts_fpt: ## api_key: 'your_api_key' ## speed: '2' # speed = -3,-2,-1,0,1,2,3 ## url: 'https://your_domain.duckdns.org' ##Code in automation ##- alias: Example text2speech by fpt_api ## trigger: ## platform: state ## entity_id: switch.light ## to: 'on' ## action: ## service: tts_fpt.say ## data: ## entity_id: media_player.room_player ## message: 'Đèn vừa bật sáng.' ## voice_type: 'nu_mien_bac' # voice_type = nam_mien_bac, nu_mien_bac, nu_mien_nam, nu_hue ##==================# # Declare variables DOMAIN = 'tts_fpt' SERVICE_FPT_TTS = 'say' # config CONF_API_KEY = 'api_key' CONF_SPEED = 'speed' CONF_URL_HASS = 'url' # data service CONF_PLAYER_ID = 'entity_id' BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 125 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC CONF_MESSAGE = 'message' CONF_VOICE_TYPE = 'voice_type' # audio file CONF_FILE_PATH = '/config/www/tts/TTS_FPT.mp3' CON_AUDIO_PATH = '/local/tts/TTS_FPT.mp3' import requests, json, os, time def setup(hass, config): def tts_handler(data_call): # Get config openfpt_api = str(config[DOMAIN][CONF_API_KEY]) speed_read = str(config[DOMAIN][CONF_SPEED]) url_hass = str(config[DOMAIN][CONF_URL_HASS]) # Get data service media_id = data_call.data.get(CONF_PLAYER_ID) text_message = str(data_call.data.get(CONF_MESSAGE)[0:2000]) voice_type = data_call.data.get(CONF_VOICE_TYPE) # List voice of FPT Speech Synthesis voice_list = {'nam_mien_bac': 'male', 'nu_mien_bac': 'female', 'nu_mien_nam': 'hatieumai','nu_hue': 'ngoclam'} voice_type = voice_list.get(voice_type) # HTTP Request url = 'http://api.openfpt.vn/text2speech/v4' # Header Parameters header_parameters = {'api_key': openfpt_api, 'speed': speed_read, 'prosody': '1', 'voice': voice_type} text_message = text_message.encode('utf-8') # Get url of audio file url_mp3 = requests.post(url, data = text_message, headers = header_parameters).json()['async'] # time sleep in seconds time_sleep = 0.5 # time_wait = 10 seconds/time_sleep time_wait = 20 tcount = # check status request res_response = requests.get(url_mp3) res_status = res_response.status_code # Wait for hass request FPT Speech Synthesis to complete while (res_status == 404 and tcount < time_wait): time.sleep(time_sleep) res_response = requests.get(url_mp3) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 126 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an PHỤ LỤC res_status = res_response.status_code tcount += # if error => msgbox_error if tcount == time_wait: msgbox_error = "Đã xảy lỗi Vui lòng kiểm tra lại." msgbox_error = msgbox_error.encode('utf-8') url_error = requests.post(url, data = msgbox_error, headers = header_parameters).json()['async'] res_response = requests.get(url_error) # Delete if File exist if os.path.exists(CONF_FILE_PATH): os.remove(CONF_FILE_PATH) # Download audio file audio_file = open(CONF_FILE_PATH, 'wb') audio_file.write(res_response.content) audio_file.close() ## Play audio file on media player ## # media_content_id url_audio = url_hass + CON_AUDIO_PATH # service data for 'CALL SERVICE' in Home Assistant service_data = {'entity_id': media_id, 'media_content_id': url_audio, 'media_content_type': 'music'} # Call service from Home Assistant hass.services.call('media_player', 'play_media', service_data) hass.services.register(DOMAIN, SERVICE_FPT_TTS, tts_handler) return True BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn 127 C.vT.Bg.Jy.Lj.Tai lieu Luan vT.Bg.Jy.Lj van Luan an.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj Do an.Tai lieu Luan van Luan an Do an.Tai lieu Luan van Luan an Do an Stt.010.Mssv.BKD002ac.email.ninhd.vT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.LjvT.Bg.Jy.Lj.dtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn.Stt.010.Mssv.BKD002ac.email.ninhddtt@edu.gmail.com.vn.bkc19134.hmu.edu.vn

Ngày đăng: 24/07/2023, 00:13

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN