IoT-百度天工物接入
程序员文章站
2022-06-04 09:59:47
...
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()
上一篇: 单片机仿真循环点亮那盏灯
下一篇: 晚上做了个梦
推荐阅读