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

Đồ án xây dựng nghiên cứu triển khai và phát triển hệ thống smarthome IOT

58 528 4

Đ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

Khi thế giới dần tiến vào kỷ nguyên Internet of Things (IoT), sử dụng các thiết bị thông minh như smartphone, tablet để kết nối, điều khiển mọi vật dụng thì mô hình nhà thông minh sẽ là xu hướng nhà ở mà tất cả mọi người đều muốn sở hữu

TĨM TẮT Đề tài mà em trình bày báo cáo đồng thời dự án em ấp ủ thực thực tế tháng năm 2016 Mục tiêu dự án phát triển hệ thống Smarthome theo hướng Open source hồn tồn Ai tự tay thiết lập nhà thơng minh theo thói quen sử dụng ý thích dựa tảng tự động hóa có sẵn Đưa khái niệm Smarthome đến gần với người hơn, xây dựng cộng đồng người sử dụng Smarthome để học hỏi, chia sẻ giúp đỡ lẫn Thực trạng Smarthome Việt Nam thời điểm hồn tồn Close source, hãng cung cấp người dùng lựa chọn Không thể tùy biến phát triển theo nhu cầu riêng, sinh nhiều bất cập Hơn nữa, giá trị đích thực Smarthome khơng nằm điều khiển thơng minh mà kịch tự động Với thống Smarthome Close source, người dùng tạo kịch tự động cho riêng Tại thời điểm mạng Internet có tảng tự động hóa mã nguồn mở Smarthome gồm: OpenHAB viết Java, Home Assistant viết Python Trong Home Assistant bật nhờ sử dụng Python cung cấp cho người mã nguồn mở có khả tùy biến sâu Từ em định lựa chọn tảng mã nguồn mở làm dự án xây dựng phát triển nhà thông minh Việt Nam Dự án em triển khai từ thời điểm năm 2016 Cho đến trải qua chặng đường năm phát triển, dự án đã thu thành định Cụ thể, dự án tạo cú hích lớn vào thị trường Smarthome vốn ảm đạm Việt Nam Từ xu hướng Smarthome Open source Việt Nam thức khởi động Tạo dựng cộng đồng người sử dụng điều định tồn phát triển dự án Bằng tất nỗ lực thân em nói riêng ủng hộ thành viên cộng đồng nói chung Đến sau 20 tháng thức vào hoạt động, cộng đồng Smarthome Facebook thuộc dự án em vượt lên tất để trở thành cộng đồng Smarthome lớn Việt Nam Với 15.000 thành viên, tương tác đạt 40.000 bình luận/ tháng Tỉ lệ thành viên hoạt động thường xuyên nhóm đạt 90% tương đương 13.500 thành viên Nội dung báo cáo gồm chương: CHƯƠNG TỔNG QUAN CHƯƠNG CƠ SỞ LÝ THUYẾT VỀ PYTHON VÀ SQLITE CHƯƠNG PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG CHƯƠNG XÂY DỰNG CHƯƠNG TRÌNH Chương phần tổng quan, giới thiệu qua tính cấp thiết đề tài, lý lựa chọn đề tài, mục tiêu, nhiệm vụ kết đạt đồ án Chương hai trình bày kiến thức lập trình Python, tảng mã nguồn mở Home Assistant hệ sở liệu mà tảng mở sử dụng Chương ba trình bày phân tích thiết kế hệ thống với hỗ trợ công cụ lập trình Cloud9 IDE Chương bốn xây dựng chương trình gồm: xây dựng hệ thống, kết đạt phương hướng phát triển LỜI CAM ĐOAN Em xin cam đoan đồ án cơng trình nghiên cứu riêng em hướng dẫn thầy giáo Lương Hồng Anh – giảng viên Trường Đại học Cơng nghệ Giao thông vận tải Các nội dung nghiên cứu, kết đề tài trung thực, không chép tài liệu chưa công bố nội dung đâu Các nguồn trích dẫn có thích rõ ràng, có tính kế thừa, phát triển từ tài liệu, website Em xin chân thành chịu trách nhiệm lời cam đoan Hà Nội, ngày 30 tháng 08 năm 2019 Sinh viên thực Nguyễn Ngọc Sơn LỜI CẢM ƠN Sau trình học tập nghiên cứu trường Đại học Công nghệ Giao thông vận tải, hỗ trợ giúp đỡ từ quý thầy cô Trước tiên, em xin phép gửi lời cảm ơn chân thành đến thầy giáo Lương Hồng Anh – người tận tình hướng dẫn, khuyến khích, bảo tạo điều kiện tốt cho em từ bắt đầu hồn thành đồ án Em xin chân thành cảm ơn Ban giám hiệu nhà trường thầy cô khoa Công nghệ thông tin cung cấp kiến thức, đào tạo tận tình tạo điều kiện tốt cho em suốt trình học tập nghiên cứu Trường Em xin gửi lời cảm ơn đến thành viên lớp 66DCTM22, người bên em, học tập rèn luyện động viên em q trình hồn thành đồ án Cuối cùng, em xin gửi lời cảm ơn đến gia đình, bạn bè tạo điều kiện để em hồn thành tốt đồ án tốt nghiệp Trong q trình hồn thành đồ án có nhiều sai sót, em mong nhận lời nhận xét, góp ý, bảo từ thầy để hồn thiện đồ án tốt Em xin chân thành cảm ơn! Hà Nội, ngày 30 tháng 08 năm 2019 Sinh viên thực Nguyễn Ngọc Sơn DANH MỤC HÌNH ẢNH BẢNG THUẬT NGỮ VIẾT TẮT Ký hiệu IEEE PHP HTML Viết tắt Giải thích Institute of Electrical and Electronics Engineers Personal Home Page Hyper Text Language Là ngơn ngữ mơ hình hóa thống nhất, dùng để đặc tả, trực quan hóa tư liệu hóa phần mềm hướng đối tượn Là ngơn ngữ lập trình kịch hay loại mã lệnh chủ yếu dùng để phát triển ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng qt Markup Là ngơn ngữ thiết kế để tạo nên trang web NAS Network Storage SQL Structured Language Query Là hệ quản trị sở liệu tự nguồn mở phổ biến giới JS Javascript Là ngơn ngữ lập trình kịch dựa đối tượng phát triển từ ý niêm nguyên mẫu HTTP Hyper Text Protoco CSDL Cơ sở liệu CSS ACID Attached Thiết bị lưu trữ gắn vào mạng Transfer Là năm giao thức chuẩn mạng Internet Là tập hợp thơng tin có cấu trúc Dữ liệu trì dạng tập hợp tập tin hệ điều hành hay lưu trữ hệ quản trị cớ sở liệu Cascading Style Sheet Được dùng để miêu tả cách trình bày tài liệu viết ngơn ngữ HTML Atomicity, Consistency, Đây bốn thuộc tính quan trọng IoT Isolation, Durability hệ quản trị sở liệu Internet of Things Là mạng lưới vạn vật kết nối Internet mạng lưới thiết bị kết nối Internet liên mạng, thiết bị, phương tiện vận tải, phòng ốc trang thiết bị khác nhúng với phận điện tử, phần mềm, cảm biến… MQTT Message Queue Đây giao thức truyền thông điệp (message) theo mơ hình publish/subscribe Telemetry Transport (xuất – theo dõi), sử dụng băng thông thấp, độ tin cậy cao có khả hoạt động điều kiện đường truyền không ổn định SCADA Là hệ thống điều khiển giám sát thu thập liệu Nhằm hỗ trợ người trình giám sát điều khiển từ xa Supervisory Control And Data Acquisition CHƯƠNG I: TỔNG QUAN 1.1 LÝ DO CHỌN ĐỀ TÀI Khi giới dần tiến vào kỷ nguyên Internet of Things (IoT), sử dụng thiết bị thông minh smartphone, tablet để kết nối, điều khiển vật dụng mơ hình nhà thơng minh xu hướng nhà mà tất người muốn sở hữu Về bản, hệ thống nhà thông minh cho phép điều khiển thiết bị nhà đèn chiếu sáng, rèm cửa, điều hòa nhiệt độ, ti vi, giàn âm thanh, bình nóng lạnh… cách tự động tập trung, nhằm tạo tiện nghi, thoải mái, tiết kiệm lượng an ninh Trên phạm vi tồn cầu, nhà thơng minh xem lĩnh vực có dư địa phát triển lớn Các đại gia công nghệ Microsoft, Apple, Google, Samsung… tỏ sốt sắng với xu hướng loạt vụ thâu tóm Google mua lại Nest (hãng sản xuất điều khiển nhiệt độ thông minh thiết bị báo khói), Samsung mắt hệ thống nhà thơng minh khép kín thiết bị hãng, Apple giới thiệu tảng phát triển ứng dụng nhà thông minh HomeKit Trở lại thời điểm cách khoảng 10 năm, nước ta nhà thơng minh khái niệm mẻ Khi ấy, chi phí để đầu tư hệ thống nhà thông minh lớn, vượt khả nhiều người Hơn thiết bị lắp đặt triển khai nhà q trình xây dựng Còn với nhà hồn thiện thiết bị chưa có khả tương thích với hệ thống điện có sẵn, phải thiết kế lại hầu hết hệ thống điện Chi tiết khiến nhiều người dù có tiền ngại lắp đặt phải đục đường thi công lại đường điện cần thiết Hai công ty Việt Nam đứng đầu thị trường nước thời điểm đầu BKAV LUMI Cả hai công ty sử dụng công nghệ truyền dẫn không dây Zigbee cho thiết bị Cơng nghệ ZigBee xây dựng dựa tiêu chuẩn 802.15.4 tổ chức IEEE (Institute of Electrical and Electronics Engineers) Tiêu chuẩn 802.15.4 sử dụng tín hiệu radio có tần sóng ngắn, cấu trúc 802.15.4 có tầng tầng vật lý tầng MAC (medicum Access Control) Công nghệ ZigBee dùng sóng radio có tầng Hơn ZigBee thiết lập tầng khác nhờ mà thiết bị nhà sản xuất dù khác tiêu chuẩn kết nối với vận hành vùng bảo mật hệ thống Cụ thể với BKAV công ty xây dựng hệ thống Bkav Smarthome Đây hệ thống nhà thơng minh hồn chỉnh nhờ kết nối tất thiết bị điện nhà vào hệ thống điều khiển theo kịch lập trình sẵn Hệ thống trung tâm trang bị hệ điều hành Bkav HomeOS có tính ổn định mở rộng tích hợp cao, cho phép kết nối tất thiết bị điện (thiết bị chiếu sáng, bình nóng lạnh, rèm cửa…); thiết bị an ninh; camera thành hệ thống đồng - điều mà phần lớn giải pháp nhà thông minh Việt Nam chưa làm (đa số giải pháp nhà thông minh thị trường phải lắp đặt hệ thống camera, hệ thống an ninh độc lập) Các thiết bị điện thông minh Bkav Smarthome thiết kế sang trọng Về tính năng, nhà thơng minh Bkav điều khiển trực tiếp thơng qua thiết bị gắn tường điện thoại thông minh, máy tính bảng, có chức điều khiển giọng nói (tiếng Việt), tích hợp kịch ngữ cảnh tự thay đổi kịch theo thời gian, hồn cảnh phù hợp với thói quen người sử dụng Tuy nhiên, Bkav smarthome sử dụng công nghệ truyền dẫn không dây Zigbee Singapore, nên giá bán cao so với mặt chung Cụ thể, Bkav smarthome hệ chào bán với mức giá từ 30 – 70 triệu đồng, Bkav Smarthome Luxury khoảng từ 250 - 300 triệu đồng Với Lumi, nhà thông minh họ thuộc phân khúc trung cấp thị trường thấp so với định vị phân khúc BKAV Lumi Smarthome sản xuất cung cấp thiết bị thông minh chiết áp cảm ứng, cảm biến, điều khiển hồng ngoại, công tắc cảm ứng, điều khiển trung tâm Nhà thông minh Lumi điều khiển thiết bị điện thơng qua smartphone/máy tính bảng, điều khiển giọng nói (Sản phẩm mắt năm 2017 nhận dạng giọng nói tiếng Việt) Tùy vào số lượng thiết bị, số phòng, số tầng ngơi nhà, gia đình trải nghiệm nhà thông minh Lumi với giá từ 25 – 60 triệu cho hộ chung cư, từ 65 - 250 triệu cho biệt thự Cho đến thời điểm tại, hai cơng ty nói sử dụng công nghệ Zigbee cho sản phẩm Cơng nghệ có ưu điểm truyền liệu ổn định, tiêu thụ lượng cực thấp Tuy nhiên lại có nhược điểm giá thành phẩm thiết bị cao Các thiết bị có khả tương thích với hệ thống điện có sẵn thấp Trước viễn cảnh em đặt đầu, hệ thống nhà thơng minh Việt Nam cần phải có khả tương thích với hệ thống điện có độ tương thích cao với hệ thống điện có sẵn nhà Giá thành phải rẻ hết mức để hầu hết người đam mê tiếp cận Và điều đặc biệt quan trọng thiết lập tùy biến Automation ( kịch bản, ngữ cảnh) Đây điểm đáng hệ thống Smarthome cần phải có Smarthome khơng đơn tắt bật từ xa, phải tự động hóa Ví dụ, làm gần tới nhà Bình nước nóng bật hay máy lạnh mở trước Bên cạnh hệ thống phải liên kết với trợ lý ảo Google home, Amazon Alexa hay Apple Siri để điều khiển gia lệnh giọng nói 1.2 Mục tiêu đề tài • • • Nghiên cứu xây dựng, thiết kế hệ thống có khả kết nối điều thiết bị Smarthome sở tảng mã nguồn mở Từ điều khiển thiết bị điện thoại máy tính hay gia lệnh điều khiển giọng nói Thiết kế giao diện người dùng thân thiện trực quan Triển khai sử dụng chương trình thực tế 1.3 Giới hạn phạm vi đề tài • • • Trong phạm vi đề tài em nghiên cứu vấn đề: Nghiên cứu xây dựng phát triển HUB có khả kết nối nhiều thiết bị với nhau, tạo hệ thống điều khiển liên kết chặt chẽ HUB xây dựng ngơn ngữ lập trình Python 3.x 1.4 Kết dự kiến đạt • • • Hệ thống HUB có khả tương thích cao với nhiều thiết bị Smarthome nay, cho phép tùy chỉnh tạo Automation để nhà trở nên thông minh tiện ích HUB chạy máy tính Raspberry Pi, chi phí tiết kiệm vận hành ổn định khơng tiêu tốn nhiều điện Hoàn thành báo cáo chi tiết đồ án tốt nghiệp 10 min: name: Đang tải severity: green: red: 1800 yellow: 1400 type: gauge - entity: sensor.luong_dien_tieu_thu_trong_ngay max: 0.5 min: name: Hôm severity: green: red: 20 yellow: 12 type: gauge - entity: sensor.luong_dien_tieu_thu_hom_qua max: 0.5 min: name: Hôm qua severity: green: red: 20 yellow: 12 type: gauge type: horizontal-stack type: vertical-stack - columns: entities: - entity: binary_sensor.smoke_sensor_158d0002153a20 - entity: binary_sensor.motion_sensor_158d000257a805 - entity: binary_sensor.door_window_sensor_158d000309c20f - entity: binary_sensor.water_leak_sensor_158d00023a69b6 title: Cảm biến an ninh type: glance - cards: - detail: entity: sensor.illumination_158d000257a805 graph: line hours_to_show: type: sensor - cards: - entity: sensor.temperature_158d000227abb5 44 max: 40 min: name: Nhiệt độ severity: green: red: 34 yellow: 29 type: gauge - entity: sensor.humidity_158d000227abb5 max: 100 min: name: Độ ẩm severity: green: red: 90 yellow: 85 type: gauge type: horizontal-stack type: vertical-stack - entity: light.gateway_light_7c49eb1935ba name: Đèn RGB type: light - entities: - sensor.so_du_tai_khoan_sos - sensor.processor_use - sensor.memory_use_percent - sensor.last_boot show_header_toggle: false title: Hệ thống type: entities - cards: - entity: switch.wall_plug_158d000243b99f image: /local/bed_1.png type: entity-button - entity: switch.plug_158d0002677e85 image: /local/bed_2.png type: entity-button type: horizontal-stack - entity: switch.b5 hold_action: action: more-info show_icon: true show_name: true 45 tap_action: action: toggle type: entity-button - entity: media_player.office_speaker type: media-control - camera_view: live entity: camera.cam2 type: picture-entity panel: false path: default_view theme: default title: Bảng điều khiển - badges: [] cards: - entities: - entity: automation.khoa_cong_tac - entity: automation.chong_trom type: entities title: Tự động hóa 3.2.15 Lập trình Stream video camera lên Home Assistant var LitElement = LitElement || Object.getPrototypeOf(customElements.get("home-assistant-main")); var html = LitElement.prototype.html; class CameraCard extends LitElement { static get properties() { return { hass: {}, _config: {} }; } shouldUpdate(changedProps) { if (changedProps.has("_config")) { return true; } const oldHass = changedProps.get("hass"); 46 if (oldHass) { return ( oldHass.states[this._config.entity] !== this.hass.states[this._config.entity] ); } return true; } getCardSize() { return 6; } setConfig(config) { this._config = config; } render() { if (!this._config || !this.hass) { return html``; } const stateObj = this.hass.states[this._config.entity]; if (!stateObj) { return html` ${this.renderStyle()} Entity not available: ${this._config.entity} `; } return html` ${this.renderStyle()} `; } renderStyle() { return html` warning { display: block; color: black; background-color: #fce588; padding: 8px; } more-info-camera { cursor: pointer; } `; } _moreInfo() { this._fireEvent(this, "hass-more-info", { entityId: this._config.entity }); } _fireEvent(node, type, detail, options) { options = options || {}; detail = detail === null || detail === undefined ? {} : detail; const event = new Event(type, { bubbles: options.bubbles === undefined ? true : options.bubbles, cancelable: Boolean(options.cancelable), composed: options.composed === undefined ? true : options.composed }); event.detail = detail; node.dispatchEvent(event); return event; } } 48 customElements.define("camera-card", CameraCard); 3.2.16 Lập trình thiết lập MQTT broker import asyncio from base64 import b64encode import binascii import logging from homeassistant.core import split_entity_id from import Helper BROADLINK_CONTROLLER = 'Broadlink' MQTT_CONTROLLER = 'MQTT' XIAOMI_CONTROLLER = 'Xiaomi' ENC_BASE64 = 'Base64' ENC_HEX = 'Hex' ENC_PRONTO = 'Pronto' ENC_RAW = 'Raw' BROADLINK_COMMANDS_ENCODING = [ ENC_BASE64, ENC_HEX, ENC_PRONTO] MQTT_COMMANDS_ENCODING = [ENC_RAW] class Controller(): def init (self, hass, controller, encoding, service, topic=None): if controller not in [ BROADLINK_CONTROLLER, XIAOMI_CONTROLLER, MQTT_CONTROLLER]: raise Exception("The controller is not supported.") if controller == BROADLINK_CONTROLLER: if encoding not in BROADLINK_COMMANDS_ENCODING: raise Exception("The encoding is not supported " "by the Broadlink controller.") if controller == XIAOMI_CONTROLLER: raise Exception("The Xiaomi IR controller " "is not yet supported.") 49 if controller == MQTT_CONTROLLER: if encoding not in MQTT_COMMANDS_ENCODING: raise Exception("The encoding is not supported " "by the mqtt controller.") if not topic: raise Exception("controller_command_topic must be " "specified for mqtt controllers.") self.hass = hass self._service_domain = split_entity_id(service)[0] self._service_name = split_entity_id(service)[1] self._command_topic = topic self._controller = controller self._encoding = encoding async def send(self, command): if self._controller == BROADLINK_CONTROLLER: if self._encoding == ENC_HEX: try: command = binascii.unhexlify(command) command = b64encode(command).decode('utf-8') except: raise Exception("Error while converting " "Hex to Base64 encoding") if self._encoding == ENC_PRONTO: try: command = command.replace(' ', '') command = bytearray.fromhex(command) command = Helper.pronto2lirc(command) command = Helper.lirc2broadlink(command) command = b64encode(command).decode('utf-8') except: raise Exception("Error while converting " "Pronto to Base64 encoding") service_data = { 'packet': command } await self.hass.services.async_call( 50 self._service_domain, self._service_name, service_data) if self._controller == MQTT_CONTROLLER: service_data = { 'topic': self._command_topic, 'payload': command } await self.hass.services.async_call( self._service_domain, self._service_name, service_data) CHƯƠNG IV XÂY DỰNG CHƯƠNG TRÌNH 4.1 GIAO DIỆN BẢNG ĐIỀU KHIỂN DARDBOARD 4.1.1 Giao diện máy tính 51 Hình 13:Giao diện dardboard trình duyệt Web máy tính Hình 14:Giao diện dardboard kích hoạt kịch tự động chống trộm 4.1.2 Giao diện điện thoại 52 Hình 15:Giao diện dardboard trình duyệt Web máy tính 4.1.3 Các giao diện tùy chỉnh 53 Hình 16:Giao diện tùy chỉnh dardboard Hình 17:Giao diện logbook 54 Hình 18:Giao diện chỉnh sửa code dardboard Hình 19:Giao diện history 55 Hình 20:Giao diện dardboard phân tách kịch tự động, Group Hình 21:Giao diện dardboard mục KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 56 NHỮNG CÔNG VIỆC LÀM ĐƯỢC - Khảo sát trạng lên phương án thiết kế thiết bị - Lập trình kết nối thiết bị tới HUB mã nguồn mở thơng qua giao thức MQTT - Lập trình thiết kế giao diện bảng điều khiển tất thiết bị điện - Thiết lập câu lệnh điều khiển giọng nói - Hồn thành mơ hình mơ nhà tầng vị trí khảo sát HẠN CHẾ - Phần lớn thiết bị hệ thống sử dụng kết nối Wifi, hạ tầng mạng wifi hộ gia đình cần phải đáp ứng tốt khả có nhiều client kết nối đến, - Do đặc tính kĩ thuật sóng wifi bị giảm tín hiệu bị tường ngăn hay cách tầng Từ phải trang bị hệ thống Wifi chuyên biệt chẳng hạn Mesh, tốn nhiều chi phí - Nhận dạng giọng nói đến từ nhà phát triển thứ Google Home, Alexa chưa hỗ trợ tốt cho trải nghiệm người dùng Việt Nam KẾT LUẬN - Nhờ cố gắng, nỗ lực thân với định hướng kịp thời từ thầy Lương Hoàng Anh em hoàn thành xong đề tài Tuy vậy,với thuận lợi khó khăn q trình làm việc, làm hồn thành khơng thể tránh khỏi sai sót TÀI LIỆU THAM KHẢO 57 [1] [2] [3] [4] [5] Dive into Python 3, tác giả Mark Pilgrim 2014 Test-Driven Development with Python, tác giả Harry Percival 2014 Autom ate the Boring Stuff with Python tác giả Al Sweigart 2015 Using SQLite tác giả O'Reilly Media http://mqtt.org/ 58 ... khiển giọng nói Bên cạnh nhà cần phải tích hợp hệ thống an ninh vào hệ thống : Hệ thống camera giám sát, hệ thống cảm biến chuyển động… Với hệ thống hoàn thành, chủ nhà phải công tác xa nhà,... dùng thân thiện trực quan Triển khai sử dụng chương trình thực tế 1.3 Giới hạn phạm vi đề tài • • • Trong phạm vi đề tài em nghiên cứu vấn đề: Nghiên cứu xây dựng phát triển HUB có khả kết nối... xây dựng hệ thống Bkav Smarthome Đây hệ thống nhà thơng minh hồn chỉnh nhờ kết nối tất thiết bị điện nhà vào hệ thống điều khiển theo kịch lập trình sẵn Hệ thống trung tâm trang bị hệ điều hành

Ngày đăng: 05/10/2019, 15:22

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    DANH MỤC HÌNH ẢNH

    BẢNG THUẬT NGỮ VIẾT TẮT

    CHƯƠNG I: TỔNG QUAN

    1.1. LÝ DO CHỌN ĐỀ TÀI

    1.2. Mục tiêu của đề tài

    1.3. Giới hạn và phạm vi của đề tài

    1.4. Kết quả dự kiến đạt được

    CHƯƠNG II. CƠ SỞ LÝ THUYẾT VỀ PYTHON VÀ SQLITE

    2.1.3. Cơ sở lý thuyết về hệ quản trị CSDL SQLite

    2.2. CÔNG CỤ SỬ DỤNG

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

TÀI LIỆU LIÊN QUAN

w