【MQTT】MQTT.fx連接OneNet平臺

今天心血來潮想通過MQTT協議連接中移物聯網OneNet。然後找了個MQTT客戶端——MQTT.fx。
MQTT.fx 是目前主流的mqtt客戶端,可以快速驗證是否可以與IoT Hub 服務交流發佈或訂閱消息。設備將當前所處的狀態作爲MQTT主題發送給IoT Hub,每個MQTT主題topic具有不同等級的名稱,如“小區/區域/車位閒置” 。MQTT代理服務器將接收到的主題topic發送給給所有訂閱的客戶端。

☛ 點擊下載MQTT.fx ☚
☞ 轉到中移物聯網OneNet ☜
1. 創建物聯網設備
  • 註冊–>登錄–>開發者中心–> 添加產品
    在這裏插入圖片描述
  • 添加設備

在這裏插入圖片描述
然後大概就是醬紫咯
在這裏插入圖片描述

2. MQTT.fx連接OneNet
  • 設置–>名稱–>服務器地址/端口–>產品的名稱或ID

服務地址
MQTTS 接入套件支持標準 MQTT V3.1.1 版本,支持TLS加密,接入服務地址如下

連接協議 證書 地址 端口
MQTTS 證書下載 183.230.40.16 8883

注意:要下載證書
設備安全認證
設備創建時,平臺爲每個設備分配了唯一的 key,設備登錄時需要使用 通過 key 計算出的訪問token 來進行訪問安全認證。
設備可通過MQTT connnect報文進行登錄,connect報文中三要素填寫方法如下:

參數 是否必須 參數說明 示例
clientId 設備名稱 A2-Area
username 平臺分配的產品ID 288XXX
password 填寫經過 key 計算的 token Trc9tlrmS18v**************************1BQt756wfPE=
  • 如何查看password
    注:需要經過處理才能在MQTT.fx 中使用在這裏插入圖片描述
    在這裏插入圖片描述
MQTT.fx中Password的處理
  • 直接上代碼吧
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:OneNet.py

import base64
import hmac
import time
from urllib.parse import quote

def token(name,access_key):
    version = '2018-10-31'
    res = id  
    et = str(int(time.time()) + 3600)
    method = 'sha1'
    key = base64.b64decode(access_key)
    # 計算sign
    org = et + '\n' + method + '\n' + res + '\n' + version
    sign_b = hmac.new(key=key, msg=org.encode(), digestmod=method)
    sign = base64.b64encode(sign_b.digest()).decode()
    sign = quote(sign, safe='')
    res = quote(res, safe='')
    token = 'version=%s&res=%s&et=%s&method=%s&sign=%s' % (version, res, et, method, sign)
    return token


if __name__ == '__main__':
    id = 'products/288XXX/devices/A2-Area'	#設備目錄,根據自己的目錄修改
    access_key = 'Trc9tlrmS18v**************************1BQt756wfPE='

    print(token(id,access_key))

運行,得到Password然後複製到MQtt.fx 中的Password即可。
在這裏插入圖片描述

  • MQTT.fx設置

在這裏插入圖片描述
插入證書
在這裏插入圖片描述

  • 連接

在這裏插入圖片描述
連接成功
在這裏插入圖片描述

消息的發佈/訂閱下週再繼續調試吧,18:36下班咯,拜!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章