1. 程式人生 > >IoT-百度天工物接入

IoT-百度天工物接入

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()