色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

通過物聯網管理多臺MQTT設備-基于米爾T527開發板

米爾電子 ? 2024-05-10 08:01 ? 次閱讀

本篇測評由電子工程世界的優秀測評者“JerryZhen”提供。


本文將介紹基于米爾電子MYD-LT527開發板的網關方案測試。

一、系統概述

基于米爾-全志 T527設計一個簡易的物聯網網關,該網關能夠管理多臺MQTT設備,通過MQTT協議對設備進行讀寫操作,同時提供HTTP接口,允許用戶通過HTTP協議與網關進行交互,并對設備進行讀寫操作。

二、系統架構

  1. 網關服務:基于FastAPI框架構建的Web服務,提供HTTP接口。
  2. MQTT客戶端:負責與MQTT設備通信,管理設備連接、消息發布和訂閱。
  3. 設備管理:維護一個設備列表,記錄設備的基本信息和狀態。

數據存儲:使用內存或數據庫存儲設備數據,確保數據持久化。

三、組件設計

MQTT組件

  • 負責與MQTT broker建立連接。
  • 訂閱設備主題,接收設備發送的消息。

發布消息到設備,實現遠程控制。

設備管理組件

  • 維護一個設備列表,記錄設備的唯一標識符(如設備ID)、MQTT主題、連接狀態等信息。

提供設備增刪改查的方法。

HTTP組件

  • 基于FastAPI定義HTTP接口。
  • 接收用戶請求,調用MQTT組件和設備管理組件進行相應操作。

返回操作結果給用戶。

四、接口設計

設備列表

  • GET /devices:返回所有設備的列表。
  • POST /devices:添加新設備到網關。

DELETE /devices/{device_id}:從網關中刪除指定設備。

設備詳情

GET /devices/{device_id}:返回指定設備的詳細信息。

設備數據

  • GET /devices/{device_id}/data:獲取指定設備的最新數據。

POST /devices/{device_id}/data:發送數據到指定設備。

設備控制

POST /devices/{device_id}/control:發送控制命令到指定設備。

五、數據結構設計

設備信息

  • 設備ID (device_id):唯一標識設備的字符串。
  • MQTT主題 (mqtt_topic):設備在MQTT broker上的主題。
  • 連接狀態 (connection_status):表示設備是否在線的布爾值。

其他設備屬性(如名稱、描述等)。

設備數據

  • 設備ID (device_id):關聯設備信息的設備ID。
  • 時間戳 (timestamp):數據發送或接收的時間。

數據內容 (data):設備發送或接收的具體數據,可以是JSON格式或其他格式。

六、安全性考慮

  • 使用HTTPS協議提供安全的HTTP通信。
  • 實現用戶認證和授權機制,確保只有授權用戶可以訪問和操作設備。

對于敏感操作(如刪除設備),要求用戶進行二次確認或提供額外的安全措施。

七、部署與擴展

  • 使用Docker容器化部署網關服務,便于管理和擴展。

根據需要,可以水平擴展網關實例以處理更多的設備連接和請求。

八、實現步驟

  1. 安裝所需的Python庫:fastapi, uvicorn, paho-mqtt等。
  2. 創建FastAPI應用并定義路由。
  3. 實現MQTT組件,包括與MQTT broker的連接、訂閱、發布等功能。
  4. 實現設備管理組件,維護設備列表并提供增刪改查的方法。
  5. 實現HTTP組件,調用MQTT組件和設備管理組件處理用戶請求。
  6. 編寫測試代碼,驗證網關的各項功能是否正常工作。

部署網關服務并監控其運行狀態。

該設計方案僅僅是概述,具體實現細節可能需要根據實際需求和項目環境進行調整和優化。在實際開發中,還需要考慮異常處理、日志記錄、性能優化等方面的問題。基于上述設計方案,以下是一個簡化版的參考代碼,展示了如何使用FastAPI和paho-mqtt庫來創建一個物聯網網關。需要注意,示例中不包含完整的錯誤處理、用戶認證和授權機制,這些在實際生產環境中都是必不可少的。依賴的主要庫版本:

fastapi==0.108.0

paho-mqtt==1.6.1

網關模擬代碼gateway.py:

from fastapi import FastAPI, HTTPException, Body, status from paho.mqtt.client import Client as MQTTClientfrom typing import List, Dict, Any import asyncio import json app = FastAPI() mqtt_client = None device_data = {}
subtopic="gateway/device/#"
# MQTT回調函數 def on_message(client, userdata, msg): payload = msg.payload.decode() topic = msg.topic device_id = topic.split('/')[-1] device_data[device_id] = payload print(f"Received message from {device_id}: {payload}") # MQTT連接和訂閱 def mqtt_connect_and_subscribe(broker_url, broker_port): global mqtt_client mqtt_client = MQTTClient() mqtt_client.on_message = on_message mqtt_client.connect(broker_url, broker_port, 60) mqtt_client.subscribe(subtopic) mqtt_client.loop_start() # MQTT發布消息 async def mqtt_publish(topic: str, message: str): if mqtt_client is not None and mqtt_client.is_connected(): mqtt_client.publish(topic, message) else: print("MQTT client is not connected!") # 設備管理:添加設備 @app.post("/devices/", status_code=status.HTTP_201_CREATED) async def add_device(device_id: str): device_data[device_id] = None return {"message": f"Device {device_id} added"} # 設備管理:獲取設備列表 @app.get("/devices/") async def get_devices(): return list(device_data.keys()) # 設備管理:獲取設備數據 @app.get("/devices/{device_id}/data") async def get_device_data(device_id: str): if device_id not in device_data: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Device {device_id} not found") return device_data.get(device_id) # 設備管理:發送數據到設備 @app.post("/devices/{device_id}/data") async def send_data_to_device(device_id: str, data: Dict[str, Any] = Body(...)): topic = f"devices/{device_id}" message = json.dumps(data) await mqtt_publish(topic, message) return {"message": f"Data sent to {device_id}"} # 設備控制:發送控制命令到設備 @app.post("/devices/{device_id}/control") async def control_device(device_id: str, command: str): topic = f"devices/device/{device_id}" await mqtt_publish(topic, command) return {"message": f"Control command sent to {device_id}"} # FastAPI啟動事件 @app.on_event("startup") async def startup_event(): mqtt_connect_and_subscribe("127.0.0.1", 1883) # FastAPI關閉事件 @app.on_event("shutdown") async def shutdown_event(): if mqtt_client is not None: mqtt_client.loop_stop() mqtt_client.disconnect() # 運行FastAPI應用 if __name__ == "__main__": import uvicorn uvicorn.run(app,host="127.0.0.1",port=8000)


設備1模擬代碼 dev1.py:

import paho.mqtt.client as mqtt
# 連接成功回調def on_connect(client, userdata, flags, rc): print('Connected with result code '+str(rc)) client.subscribe('devices/1')
# 消息接收回調def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) client.publish('gateway/device/1',payload=f'echo {msg.payload}',qos=0)
client = mqtt.Client()
# 指定回調函數client.on_connect = on_connectclient.on_message = on_message
# 建立連接client.connect('127.0.0.1', 1883)# 發布消息client.publish('gateway/device/1',payload='Hello, I am device',qos=0)
client.loop_forever()

設備2模擬代碼 dev2.py

import paho.mqtt.client as mqtt# 連接成功回調def on_connect(client, userdata, flags, rc): print('Connected with result code '+str(rc)) client.subscribe('devices/2')# 消息接收回調def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) client.publish('gateway/device/2',payload=f'echo {msg.payload}',qos=0)client = mqtt.Client()# 指定回調函數client.on_connect = on_connectclient.on_message = on_message# 建立連接client.connect('127.0.0.1', 1883)# 發布消息client.publish('gateway/device/2',payload='Hello, I am device',qos=0)client.loop_forever()

運行網關代碼,打開網頁得到api接口:7c6c378a-0e60-11ef-9118-92fbcf53809c.jpg? 通過api分別添加設備1和設備2,7c950b10-0e60-11ef-9118-92fbcf53809c.jpg 在另外兩個控制臺中分別運行模擬設備1和模擬設備2的代碼通過網頁API向設備1發送數據7cb817c2-0e60-11ef-9118-92fbcf53809c.jpg 通過網頁API獲得設備回復的數據,設備代碼中只是簡單的把網關發過來的數據進行回傳7cdabd2c-0e60-11ef-9118-92fbcf53809c.jpg 我們在網關的后臺可以看到完整的數據流7cfb6b80-0e60-11ef-9118-92fbcf53809c.jpg 至此一個簡易的網關已經實現了,接下來將會嘗試實現樓宇里的最常見的bacnet設備進行通訊管理。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 物聯網
    +關注

    關注

    2909

    文章

    44557

    瀏覽量

    372758
  • 開發板
    +關注

    關注

    25

    文章

    5032

    瀏覽量

    97371
  • MQTT
    +關注

    關注

    5

    文章

    650

    瀏覽量

    22487
  • 全志T527
    +關注

    關注

    0

    文章

    15

    瀏覽量

    120
收藏 人收藏

    評論

    相關推薦

    如何用OpenCV進行手勢識別--基于米爾全志T527開發板

    本文將介紹基于米爾電子MYD-LT527開發板米爾基于全志T527開發板)的OpenCV手勢識
    的頭像 發表于 12-13 08:04 ?601次閱讀
    如何用OpenCV進行手勢識別--基于<b class='flag-5'>米爾</b>全志<b class='flag-5'>T527</b><b class='flag-5'>開發板</b>

    全志T527國產核心米爾配套開發板批量上市!

    2023年12月,米爾電子聯合戰略合作伙伴全志科技,率先業內發布了國產第一款T527核心開發板。這款高性能、高性價比、八核A55的國產核心
    發表于 02-23 18:33

    米爾全志T527開發板開箱驗機

    期盼已久的米爾全志T527開發終于到手了,我們打開看一下開發板箱都包含哪些寶貝。 比較細心的是電源還配了好幾種轉接插頭,方便插到不同類型的插座。
    發表于 03-07 10:40

    米爾全志T527開發板上電與連接WIFI

    米爾全志T527開發板上電前的準備工作: 1)T527開發板1塊,電源1個,開發套件里都有; 2
    發表于 03-07 11:16

    米爾-全志T527開發板評測試用-通過聯網管理多臺MQTT設備 摘自:優秀試用者JerryZhen

    、系統概述 基于米爾-全志 T527設計一個簡易的聯網網關,該網關能夠管理多臺
    發表于 06-11 15:47

    國產芯,米爾基于全志T527的商顯主板及工業微型控制器

    前段時間,給大家推薦過米粉派(MIFANS Pi)T527,它是由米爾電子推出的高性能T527開發板。而今天主要給大家推薦米粉派T527的兄
    發表于 06-14 17:26

    通過聯網管理多臺MQTT設備-基于全志T527開發板

    一、系統概述 基于米爾-全志 T527設計一個簡易的聯網網關,該網關能夠管理多臺
    發表于 06-21 14:20

    米爾T527系列加推工控和工控機,更多工業場景DEMO

    和MYD-LT527-GK-B微型工控機。MYD-LT527-GK工控由工業開發板和擴展底板組成,方便客戶使用米爾工業
    發表于 06-21 17:54

    米爾首發-全志T527開發板-國產8核A55-免費試用】米爾全志T527開發板開箱驗機

    期盼已久的米爾全志T527開發終于到手了,我們打開看一下開發板箱都包含哪些寶貝。 比較細心的是電源還配了好幾種轉接插頭,方便插到不同類型的插座。
    發表于 06-25 16:35

    米爾首發-全志T527開發板-國產8核A55-免費試用】米爾全志T527開發板上電與連接WIFI

    米爾全志T527開發板上電前的準備工作: 1)T527開發板1塊,電源1個,開發套件里都有; 2
    發表于 06-25 16:39

    米爾這款首發的國產核心批量上市了!全志T527

    2023年12月,米爾電子聯合戰略合作伙伴全志科技,率先業內發布了國產第一款T527核心開發板。這款高性能、高性價比、八核A55的國產核心
    的頭像 發表于 02-22 08:01 ?877次閱讀
    <b class='flag-5'>米爾</b>這款首發的國產核心<b class='flag-5'>板</b>批量上市了!全志<b class='flag-5'>T527</b>

    米粉派7折!米爾全志T527發布Linux系統

    米爾電子首發的全志高性能T527工業開發板——帶邊緣計算的米粉派(MIFANSPi)自推出市場以來,憑借易用性好、可靠性高、高性能、低門檻、高集成度、開源設計、支持二次開發、軟件資源豐
    的頭像 發表于 04-18 08:01 ?1134次閱讀
    米粉派7折!<b class='flag-5'>米爾</b>全志<b class='flag-5'>T527</b>發布Linux系統

    兩款新品!基于全志T527的商顯主板及工業微型控制器

    前段時間,給大家推薦過米粉派(MIFANSPi)T527,它是由米爾電子推出的高性能T527開發板。而今天主要給大家推薦米粉派T527的兄弟
    的頭像 發表于 06-13 08:01 ?851次閱讀
    兩款新品!基于全志<b class='flag-5'>T527</b>的商顯主板及工業微型控制器

    米爾T527系列加推工控和工控機,更多工業場景DEMO

    米爾首發基于全志T527系列核心以來,這款基于八核CPU的高性能國產核心得到廣大客戶的好評。這款產品支持Android13、Linux5.15操作系統,還將適配Ubuntu系統,
    的頭像 發表于 06-21 08:01 ?403次閱讀
    <b class='flag-5'>米爾</b><b class='flag-5'>T527</b>系列加推工控<b class='flag-5'>板</b>和工控機,更多工業場景DEMO

    FacenetPytorch人臉識別方案--基于米爾全志T527開發板

    本篇測評由電子工程世界的優秀測評者“小火苗”提供。本文將介紹基于米爾電子MYD-LT527開發板米爾基于全志T527
    的頭像 發表于 11-28 15:12 ?286次閱讀
    FacenetPytorch人臉識別方案--基于<b class='flag-5'>米爾</b>全志<b class='flag-5'>T527</b><b class='flag-5'>開發板</b>
    主站蜘蛛池模板: adc网址在线观看| 热久久国产欧美一区二区精品| 东北女人一级毛片| 影音先锋av天堂| 午夜福利32集云播| 全免费a级毛片免费看| 久久中文字幕无码A片不卡| 国产精品久久久久久免费播放| AV国产乱码一区二区三视频| 伊人网伊人网| 在线观看视频一区| 中文无码熟妇人妻AV在线| 亚洲国产在线观看免费视频| 天天干夜夜曰| 小黄飞二人转| 啊灬啊别停灬用力啊在线观看视频| 用快播看黄的网站| 一道本无吗d d在线播放| 亚洲熟妇无码乱子AV电影| 亚洲成年人影院| 亚洲欧美自拍明星换脸| 亚洲精品久久区二区三区蜜桃臀| 婷婷亚洲AV色香蕉蜜桃| 亚洲 欧美 国产 综合 播放| 亚洲免费大全| 7723日本高清完整版在线观看 | 久久久久久久免费| 久久在精品线影院精品国产| 恋夜秀场1234手机视频在线观看| 蜜桃传媒一区二区亚洲AV| 强奷乱码中文字幕熟女免费| 人人草影院| 亚洲精品久久久久久蜜臀 | 年轻的女教师2017韩国在线看 | 国产欧美日韩国产高清| 好紧的小嫩嫩17p| 女朋友的妈妈在线观看| 色婷婷国产精品视频一区二区| 亚洲AV无码国产精品色午夜情| 樱桃bt在线www| 久久毛片视频|