IoT-百度天工物接入
阿新 • • 發佈:2019-01-01
MQTT(Message Queuing Telemetry Transport)是一個客戶端服務端架構的釋出/訂閱模式的訊息傳輸協議。它的設計思想是輕巧、開放、簡單、規範,易於實現。這些特點使得它對很多場景來說都是很好的選擇,特別是對於受限的環境比如機器和機器通訊(M2M)以及物聯網環境(IoT)。
支援MQTT底層傳輸協議的相關裝置有:
- 客戶端--使用它連線服務端
- 服務端--全託管的雲服務,幫助建立裝置與雲端之間安全可靠的雙向連線,以支撐海量裝置的資料收集、監控、故障預測等各種物聯網場景
客戶端
使用MQTT的程式或裝置(推薦使用MQTT.fx,MQTT.fx是目前主流的MQTT客戶端,可以快速驗證是否可以與IoT Hub服務交流釋出或訂閱訊息)。
- 釋出應用訊息給其他相關的客戶端
- 訂閱以請求接受相關的應用訊息
- 取消訂閱以移除接受應用訊息的請求
- 從服務端斷開連線
服務端
全託管的雲服務,幫助建立裝置與雲端之間安全可靠的雙向連線,以支撐海量裝置的資料收集、監控、故障預測等各種物聯網場景。
- 接受來自客戶端的網路連線
- 接受客戶端釋出的應用訊息
- 處理客戶端的訂閱和取消訂閱請求
- 轉發應用訊息給符合條件的客戶端訂閱
使用百度天工物接入來測試
第一步,建立例項,百度物接入需要先建立一個例項(endpoint),一個例項表示一個完整的物接入服務。登陸物接入控制檯,點選“建立例項”,填寫需要建立IoT Hub服務的例項名稱。建立好例項後,物接入預設提供三種地址:
- tcp://*:1883,埠1883,不支援傳輸資料加密
- ssl://*:1884,埠1884,支援SSL/TLS加密傳輸
- wss://*:8884,埠8884,支援websockets連線方式
第二步,建立策略,輸入策略名稱,主題,選擇策略所支援的許可權:釋出訊息、訂閱訊息
第三步,建立身份,輸入身份名稱,然後選擇之前配置的策略
第四步,建立裝置,輸入裝置名稱,然後選擇之前建立的身份及策略,最後建立成功時返回一個裝置的登陸密碼,這個密碼在客戶端登陸時需要用到。 - 到這裡整個物接入的服務端基本建立完成了,下面我們來看小客戶端程式碼,這裡使用python程式碼,需要注意的是這裡的username、password、topic幾個配置均來自於前面的服務端配置。
import paho.mqtt.client as mqtt import sys import uuid broker = 'pos.mqtt.iot.gz.baidubce.com' port = 1883 username = 'pos/ccid-0001' password = 'AWFjb7rUy1n9MZM2xd77ZGAw0cNbx4N6I5kQHMKxs/ag=' clientid = 'test_mqtt_python_' + str(uuid.uuid4()) topic = 'topic01' def on_connect(client, userdata, rc): print('Connected. Client id is: ' + clientid) client.subscribe(topic) print('Subscribed to topic: ' + topic) client.publish(topic, 'Message from Baidu IoT demo') print('MQTT message published.') def on_message(client, userdata, msg): msg = str(msg.payload).encode('utf-8') print('MQTT message received: ' + msg) if msg == 'exit': sys.exit() client = mqtt.Client(clientid) client.on_connect = on_connect client.on_message = on_message client.username_pw_set(username, password) print('Connecting to broker: ' + broker) client.connect(broker, port) client.loop_forever()