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

Báo cáo bài tập nhóm chuyên Đề iot

13 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Báo Cáo Bài Tập Nhóm Chuyên Đề IoT
Tác giả Dé Tan Tai, Bui Tuan Anh, Đỗ Việt Cường
Người hướng dẫn Cao Văn Kiên
Trường học Industrial University Of Hochiminh City
Thể loại report
Năm xuất bản 2024
Thành phố TP.Hà Chí Minh
Định dạng
Số trang 13
Dung lượng 774,77 KB

Nội dung

Yêu cầu đề bài Mức độ 3 10 điểm: Có topic đề gửi từng dữ liệu nhiệt độ, độ ẩm, trạng thái 3 LED lên server; Topic dé gửi toàn bộ thông tin lên server theo định dạng json và form-urlenco

Trang 1

BO CONG THUONG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HỎ CHÍ MINH

KHOA CÔNG NGHỆ ĐIỆN TỬ

0F HOCHIMINH CITY

A

INDUSTRIAL

BAO CAO BAI TAP NHOM

Chuyén dé IOT

Giảng viên hướng dẫn : Cao Văn Kiên

Nhóm thực hiện : Nhóm 3

Lớp học phần : DHIOT1I7B

TP.Hà Chí Minh, ngày 4 tháng 10 năm 2024

Trang 2

II Yêu cầu đề bài

Mức độ 3 (10 điểm): Có topic đề gửi từng dữ liệu nhiệt độ, độ ẩm, trạng thái 3 LED lên server; Topic dé gửi toàn bộ thông tin lên server theo định dạng json và form-urlencoded;

Có topic đọc từng dữ liệu nhiệt độ, độ am, giá trị trạng thái 3 LED từ server theo định

đạng Json và form-urlencoded Có hỗ trợ topic đọc toàn bộ dữ liệu từ server theo ca 2

định dạng Dữ liệu gửi lên được lưu vào CSDL phải có thông tin _id, thời gian, tên thiết

bị gửi lên

Lưu ý: Topic gửi từng đữ liệu lên cũng phải kích hoạt chế độ Subscribe của topic đọc

toàn bộ đữ liệu Tương ty topic gin toàn bộ dữ liệu cũng kích hoạt chế độ Subscribe của

từng topic đơn lẻ Gửi lên topic json có thê subscribe ở topic form-urlencoded và ngược

lại

IV Code

pymongo

fastapi

pydantic

time

uvicorn

)

myclient

Trang 3

mycol = mydb["Sensor Data"™]

LED1:

LED2:

LED3:

Dion anelowy

("/reset_data")

(8

C C result = mycol ({})

C C return {"status"™: "success", "deleted count": result.deleted count,

"message": "Tất cả đữ liệu đã được xóa."}

app ("/update_posti")

async deft (ND: =

( ), Device: ( In

current_ time — ("SH:3M:%S")

dem = mycol Oo meas

or hoe ==

C€ C€C " 1d"; dem,

C€ €C "Date time": current time,

C C "Device": Device,

Œ € "ND": ND,

Trang 4

"DA"; DA,

"LEDI": LED1,

"LED2": LED2,

"LED3": LED3

return {"status": "URL Successfully", "data": data}

app ("/data_json")

sync def (item:

C current_time = ("$H:$%M:3S")

dem = mycol Oo meas

or hoe ==

"1d"; dem,

"Date_time": current_time,

"Device": item.Device,

"ND"; item.ND,

"DA": item.DA,

"LEDi": item.LED1,

"LED2": item LED2,

"LED3": item.LED3

return {"status": "JSON_Successfully", "data": data}

a

C

IC

C

IC

C

IC

C

IC

C

IC

C

IC

C

IC ORO

app ("/data_nd_json")

sync def (item:

€ current time — ("$H:$%M:3S")

dem = mycol Oo meas

or hoe ==

C€ C€C " 1d"; dem,

C€ €C "Date time": current time,

C C "ND"; item.ND,

i

mycol (data)

l9

l9

l9

l9

l9

l9

l9

l9

@ qaqaqqaqaqgaana return {"status": "ND_ Successfully", "data": data}

("/data_da_json")

Trang 5

€ current time — ("$H:$%M:3S")

dem = mycol Oo meas

or hoe ==

C€ C€C " 1d"; dem,

C€ €C "Date time": current time,

C€ C "DA": item.DA,

i

l9

l9

l9

l9

l9

l9

l9

C mycol (data)

l9 qaqqqaqaaqaana return {"status": "DA Successfully", "data": data}

app ("/data_ledi_json")

sync def (item:

C current_time = ("$H:$%M:3S")

dem = mycol Oo meas

or hoe ==

C€ C€C " 1d"; dem,

C€ €C "Date time": current time,

€ C "TED1": item.LEDI,

i

mycol (data)

return {"status": "LED1 Successfully", "data": data}

a

C

IC

C

IC

C

IC

C

IC

C ORO

app ("/data_led2_json")

sync def (item:

C current_time = ("$H:$%M:3S")

dem = mycol ({}) +

or hoe ==

C€ C€C " 1d"; dem,

Cc €C "Dạte time": current time,

C C "TED2": item.LED2,

i

mycol (data)

l9

l9

l9

l9

l9

l9

l9

l9

@ qaqqgaqaqgaaqaana return {"status": "LED2 Successfully", "data": data}

app ("/data_led3_json")

asyne def (item:

C C current_time = ("SH:3M:%S")

dem = mycol Oo meas

or hoe ==

C€ C€C " 1d"; dem,

C€ €C "Date time": current time,

Trang 6

(data)

C C return {"status": "LED3 Successfully", "data": data}

app ("/data nd_url")

syne def (ND:

C current_time = ("$H:$%M:3S")

dem = mycol ({}) +

or hoe ==

C€ C€C " 1d"; dem,

C€ €C "Date time": current time,

Œ € "ND"; ND,

i

mycol (data)

l9

l9

l9

l9

l9

l9

l9

l9

@ ÒẰ return {"status": "ND_ Successfully", "data": data}

app ("/data_da_url")

syne def (DA:

C current_time = ("$H:$%M:3S")

dem = mycol Oo meas

or hoe ==

C€ C€C " 1d"; dem,

C€ €C "Date time": current time,

C C "DA": DA,

i

mycol (data)

return {"status": "DA Successfully", "data": data}

a

C

IC

C

IC

C

IC

C

IC

C 9

app ("/data_ledi_ur1")

syne def (LED1:

€ current time — ("$H:$%M:3S")

C dem = mycol Oo meas

C data — {

Cc Cc "_id": dem,

CC C "Date_time": current time,

Œ CŒC "LED1": LED1,

€ }

C mycol (data)

C

IC

C

IC

C

IC

C

Ic

Trang 7

app ("/data led2_url")

syne def (LED2:

23M:%35")

Ce as

C current_time = ("$

dem = mycol

or hoe ==

cc "id":

C C "Date_time":

C C "LED2": LED2,

i

mycol

dem,

current_time,

(data)

"LED2_ Successfully",

a

C

IC

C

IC

C

IC

C

IC

C Ò

return {"status": "data":

app ("/data_led3_url")

syne def (LED3:

23M:%35")

Ce as

C current_time = is

dem = mycol

data — {

© © TW iglD;

C C "Date_time":

C C "LED3": LED3,

i

mycol

dem,

current_time,

(data)

ey

@

@

@

@

@

@

@

@

C qaqgqaaqaqaqgaana return {"status": "LED3_Successfully", "data":

ia name HT ác

(app, host="0.0.0.0",

C C uvicorn port=

Code Publish:

import paho.mgtt.client as mqtt

import json

from urllib import parse

from random import randint

Bo ha na

import Adafruit_DHT C

data }

data }

Trang 8

DHT PIN = ie

"192.168.2.103"

"raspberry"

QTT_PASSWORD = "1234"

QTT_TOPTC_JSON = "send_json_i_all"

QTT_TOPIC_URL = "send url 1 all"

client = mgtt

(username=MOTT_ USERNAME, password=MQTT_PASSWORD)

(MOTT_BROKER, MỌTT PORT,

(datal, data2, ledi_status, led2 status, led3 status,

ie "ND"; datal, C

ie "DA"; data2, C

ie "TED1"; ledi_status,

ie "LED2"; led2_status,

io "TED3": led3_status,

io "Device": device C C

i

ot ype_json = json (data)

("JSON:", type_json)

client (MQTT_TOPIC_JSON, type_json)

(datal, data2, ledi_status, led2_status, led3_status, device): type_url = parse ({

C 'ND': datal,

C 'DAT: data2,

C 'LED1I': ledi_status,

C 'LED2': led2_status,

C 'LED3': led3_status,

C 'Device': device

iS

iS

iS

i

Trang 9

client (MOTT TOPIC_URL, type_url)

(datal):

data = {"ND": datal}

type_json = json (data)

("Gửi ND:", type json)

client (MQTT_TOPIC_JSON, type_json)

(data2):

data = {"DA": data2}

type_json = json (data)

("Gửi DA:", type_json)

client (MQTT_TOPIC_JSON, type_json)

(ledi_status):

data = {"LED1": ledi_status}

type_json = json (data)

("Gửi LED1:", type_json)

client (MQTT_TOPIC_JSON, type_json)

(led2_status):

data = {"LED2": led2_status}

type_json = json (data)

("Gửi LED2:", type_json)

client (MQTT_TOPIC_JSON, type_json)

(led3_status):

data = {"LED3": led3_status}

type_json = json (data)

("GWi LED3:", type_json)

client (MQTT_TOPIC_JSON, type_json)

(datal):

type_url = parse ({'ND': datai})

("Gửi ND URL:", type_url)

client (MOTT TOPIC_URL, type_url)

Trang 10

parse

DA URL:",

type_url

("Gửi

client

({'DA': data2})

type_url) (MOTT_TOPIC_URL, type_url)

(ledi_status):

type_url

("Gửi

client

parse

LED1 URL:",

(MOTT_TOPIC_URL,

({'LED1':

type_url) type_url) ledi_status})

(led2_status):

type_url

("Gửi

client

parse

LED2 URL:"

({'LED2': led2 status})

, type_url) (MOTT_TOPIC_URL, type_url)

(led3_status):

type_url

("Gửi

client

parse

cc

Cc C humidity,

_PTN)

if humidity is not

ie

ledi_status

led2_status

led3_status

device_name

iS

iS

iS

iS

CCCCC

CC C C C choice

nhập tên biến để gửi JSON

C CC CCC if choice ==

An

LED3 URL:",

(MQOTT_TOPIC_URL,

temperature

= randint (0,

({'TLED3':

type_url)

led3_status})

type_url)

Adafruit_DHT (DHT_SENSOR,

and temperature is not

b randint (0, ) randint (0, )

"Raspberry" €

("Nhập 1 để gửi JSON, 2 để gửi URL-encoded, hoặc

hodc URL: ")

Mi

Trang 11

led3_status, device_name)

C Cc Cc eC C elif choice == '2':

CCC CCCCE

1s (temperature, humidity, ledi_status, led2_status, led3_status, device_name)

©°) [oe ©°) [oe elif choice == 'ND_json':

cc (temperature)

elif choice == 'DA_json':

cc (humidity)

elif choice == 'LED1_json':

ome (1ed1_ status)

elif choice == 'LED2_json':

ome (1egd2_ status)

elif choice == 'LED3_json':

CC (led3_status)

elif choice == 'ND_url':

Cc € (temperature)

elif choice == 'DA_url':

cc (humidity)

elif choice == 'LED1_url':

ome (ledi_status)

elif choice == 'LED2_url':

ome (led2_status)

elif choice 'TED3_ url':

CC (led3_ status)

else:

ome eccc ("Lựa chọn không hợp lệ! Hãy nhập i1, 2 hoặc tên biến như ND_json, DA Json, ND uri, LED1 url.")

eccc ("Không đọc được đữ liệu từ cảm biến DHT11!")

qaqqaqaaqaqaaaagaaaanaadnaaaanaananana aqagaaaqgaanaaanaaaanaanaaanaaaaanal

qaqqaqaaqaqaaaagaaaanaadnaaaanaananana qaqqaqaaqaqaaaagaaaanaadnaaaanaananana

C

IC

C

IC

C

IC

C

IC

C

IC

C

IC

C

IC

C

IC

C

IC

C

IC

C

IC

Code Subscribe:

Trang 12

from gpiozero import

Bo ha na

"192.168.2.103"

QTT_PASSWORD =

QTT_TOPIC_READ

(client,

fields =

try:

ec

ec

ec

fields

if fields

("Dữ liệu mới nhận:",

"raspberry"

LU eee a

= "read url all"

userdata, message):

message.payload QO

BS (fields)

fields)

('LED1') ==

C C ledi.on()

cc

else:

("LED1 bat")

C C ledi Q)

Ce

if fields

("LED1 tắt")

(TTED2')

C C led2.on()

cc

else:

(“LED2 bật")

C C led2 Q)

Ce

if fields

("LED2 tắt")

('LED3')

€ € led3.on()

cc

else:

("LED3 bật")

€ € leds Q)

€ €

Trang 13

cc ("Dữ liệu không hợp lệ:", fields)

(client, userdata, flags, rc):

if re ==

cc ("Kết nếi thành công, result:

1Ö (MOTT_ TOPTC READ)

else:

CC ("Kết nối thất bại với mã lỗễi:", re)

(client, userdata, rc):

("Mất kết nếi, đang cế gắng kết nối lại

eclient_id = 'tbii3'

= mgtt (client_id)

-on_connect =

.on_disconnect =

.on_message =

(username=MOTT_ USERNAME, password=MQTT_PASSWORD)

(MOTT BROKER, MOTT PORT,

V Video minh ching & link sever

- Link Video Youtube : https://youtu.be/Ghi73 Wdtail

Ngày đăng: 02/01/2025, 22:00