今天心血來潮想通過MQTT協定連接配接中移物聯網OneNet。然後找了個MQTT用戶端——MQTT.fx。
MQTT.fx 是目前主流的mqtt用戶端,可以快速驗證是否可以與IoT Hub 服務交流釋出或訂閱消息。裝置将目前所處的狀态作為MQTT主題發送給IoT Hub,每個MQTT主題topic具有不同等級的名稱,如“小區/區域/車位閑置” 。MQTT代理伺服器将接收到的主題topic發送給給所有訂閱的用戶端。
☛ 點選下載下傳MQTT.fx ☚
☞ 轉到中移物聯網OneNet ☜
1. 建立物聯網裝置
- 注冊–>登入–>開發者中心–> 添加産品
【MQTT】MQTT.fx連接配接OneNet平台 - 添加裝置
然後大概就是醬紫咯
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】MQTT.fx連接配接OneNet平台 ![]()
【MQTT】MQTT.fx連接配接OneNet平台
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下班咯,拜!!!!