使用PythonPaho框架開發原生MQTT接口

      網友投稿 1016 2022-05-29

      說明:閱讀該文檔之前需要對Mqtt有一定的了解,這里不對Mqtt知識作介紹,對Mqtt的了解請自行搜索學習。主要說明一下用一個簡單的Demo樣例,實現和IoT平臺的對接,上報數據,下發命令等

      一、注冊設備

      產品信息中的 協議類型 必須為MQTT

      設備管理—>新增真實設備—>選擇上面開發好的產品—>接入方式選擇 直連

      保存設備ID和密鑰,利用其構建clientID

      進入設備管理界面—>產品模型

      如果沒有產品模型,可以點擊右上角,從產品中心導入或者是本地導入

      注意:產品的協議類型必須為MQTT

      進入設備管理界面—>設備—>設備注冊—>創建

      保存設備ID和密鑰,利用其構建clientID

      注冊設備(密碼方式)

      https://support.huaweicloud.com/api-IoT/iot_06_0005.html

      二、IoT平臺提供的原生MQTT接口

      https://support.huaweicloud.com/api-IoT/iot_06_3002.html

      本篇文檔基于eclipse的paho框架,該框架網上資料較多,可自行百度搜索學習。

      Python

      庫: paho_mqtt-1.4.0-py3.7.egg-info

      (1) 主要是證書的配置,ca_certs就是證書的路徑

      (2) 其他參數的配置請參考源碼:)

      Python

      #?連接地址每個局點不一樣,比如開發中心是:iot-acc-dev.huaweicloud.com host?=?"xx.xx.xx.xx" port?=?8883 #?注冊直連設備的時候返回的設備ID deviceId?=?"9a57a-***-***-816b3e" #?注冊直連設備的時候返回的秘鑰 DeviceSecret?=?"cbd*******3abv" ca_certs?=?'../rootcert.pem' para?=?get_para.Getpara(deviceId,?DeviceSecret) paras?=?para.get_para() clientId?=?paras[0] username?=?paras[1] password?=?paras[2] mqtt?=?mqtt.Client(clientId,?clean_session=True) def?connect(): ????#?callback ????mqtt.on_connect?=?on_connect ????mqtt.on_disconnect?=?on_disconnect ????mqtt.on_publish?=?on_publish ????mqtt.on_message?=?on_message ????mqtt.username_pw_set(username,?password) ????mqtt.tls_set(ca_certs,?cert_reqs=ssl.CERT_NONE) ????mqtt.connect(host,?port,?60) ????mqtt.loop_forever()

      數據上報就是往平臺指定的topic上發布數據

      Python

      def?publish(): ????pubTopic?=?"/huawei/v1/devices/"?+?deviceId?+?"/data/json" ????payload?=?{ ????????"msgType":?"deviceReq", ????????"data":?[ ????????????{ ????????????????"serviceId":?"Storage", ????????????????"serviceData":?{ ????????????????????"storage":?"1" ????????????????} ????????????} ????????] ????} ????message?=?json.dumps(payload) ????mqtt.publish(pubTopic,?message,?1)

      命令接收就是訂閱平臺指定的topic,平臺往該topic發送命令時,設備端就能收到

      Python

      使用Python版Paho框架開發原生MQTT接口

      def?subscribe(): ????subtopic?=?"/huawei/v1/devices/"?+?deviceId?+?"/command/json" ????mqtt.subscribe(subtopic)def?on_message(client,?userdata,?msg): ????print("\n=====?The?command?is?received?from?the?platform?=====?\n",?msg.payload.decode("utf-8")) ????receiveMes=?json.loads(msg.payload.decode("utf-8")) ????mid?=?receiveMes['mid'] ????commandRsp(mid)

      應用服務器要需要調用“訂閱平臺業務數據”API訂閱“commandRsp”類型的通知后,才能接收到設備對控制命令的應答;

      先訂閱topic(/huawei/v1/devices/{deviceId}/command/{codecMode})接收到命令,然后往另外一個topic(/huawei/v1/devices/{deviceId}/data/{codecMode})發數據響應給平臺,就視為對這條命令的響應,但是要注意,數據上報和命令響應的topic雖然是相同的,但是他們上報的結構體是有區別的

      Python

      def?commandRsp(mid): ????RspTopic?=?"/huawei/v1/devices/"?+?deviceId?+?"/data/json" ????payload?=?{ ????????"msgType":?"deviceRsp", ????????"mid":?mid, ????????"errcode":?0, ????????"body":?{ ????????????"result":?0 ????????} ????} ????message?=?json.dumps(payload) ????mqtt.publish(RspTopic,?message,?1)

      生成 clientId, username, password

      class?Getpara(): ????def?__init__(self,?deviceId,?deviceSecret): ????????self.DeviceId?=?deviceId ????????self.DeviceSecret?=?deviceSecret????def?get_para(self): ????????ClientId?=?self.DeviceId ????????DeviceId?=?self.DeviceId ????????DeviceSecret?=?self.DeviceSecret ????????timestamp?=?time.strftime('%Y%m%d%H',?time.localtime(time.time())) ????????#?clientID參考API文檔拼裝 ????????clientId?=?"".join((ClientId,?"_0",?"_0",?"_",?timestamp)) ????????username?=?DeviceId ????????deviceSecret?=?DeviceSecret.encode('utf-8') ????????password?=?hmac.new(timestamp.encode('utf-8'),?deviceSecret,?????????????digestmod=hashlib.sha256).hexdigest() ????????return?clientId,?username,?password

      附件: 證書.zip 1.08KB 下載次數:8次

      IoT IoT MQTT

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:華為云發布安全生態“滄海行動”計劃,共建云原生安全新生態
      下一篇:Python只需要三十行代碼,打造一款簡單的人工語音對話
      相關文章
      亚洲国产精品综合久久网各| 国产AV无码专区亚洲AV男同| 亚洲色图.com| 亚洲成AV人片在| 国产亚洲欧洲精品| 亚洲国产综合无码一区| 国产国拍精品亚洲AV片| 亚洲综合精品香蕉久久网| 在线观看亚洲av每日更新| 亚洲综合精品香蕉久久网| 精品亚洲视频在线观看| 亚洲中文字幕不卡无码| 亚洲av中文无码乱人伦在线r▽| 国产亚洲综合色就色| 国产亚洲精品国产| 亚洲国产老鸭窝一区二区三区| 亚洲伊人久久大香线蕉苏妲己| 亚洲一区二区电影| 亚洲欧洲自拍拍偷综合| 亚洲一卡二卡三卡| 亚洲日韩中文字幕一区| 精品久久久久久亚洲综合网| 亚洲av麻豆aⅴ无码电影| 亚洲真人日本在线| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 亚洲美女视频免费| 亚洲国产人成在线观看| 中文无码亚洲精品字幕| 亚洲Av无码国产一区二区| 亚洲av高清在线观看一区二区 | 久久久久无码专区亚洲av| 亚洲日韩精品A∨片无码| 久久久无码精品亚洲日韩蜜桃| 亚洲视频在线一区二区三区| 亚洲xxxxxx| 国产成人精品久久亚洲高清不卡| 亚洲国产午夜福利在线播放| 亚洲精品国产精品乱码不卡√ | 亚洲日本VA午夜在线影院| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲熟妇无码八AV在线播放|