1. 云端准备工作
1.1. 注册并登录IoT
注册并登录百度物接入平台,完成实名认证后方可使用。
1.2. 创建计费套餐
目前百度天工物平台需要需要创建计费套餐才可使用,计费方式如下:
免费量在学习阶段足够使用了,接下来讲述如何开通。
开通后界面如下:
2. 云端操作 — 创建云端设备
2.1. 创建项目
物接入服务需要先创建一个项目,每个项目会为您对应一个接入点(endpoint)。一个项目表示一个完整的物接入服务,通过项目可以将不同项目的设备进行隔离和管理。
当前每个账户能创建 100 个项目,含 1 个设备型项目和 99 个数据型项目。
点击创建项目:
填写信息之后提交:
创建项目后,在项目列表页可以看到物接入默认提供的三类地址,选择不同的地址,意味着可以通过不同的方式连接到百度智能云物接入:
tcp://yourendpoint.mqtt.iot.gz.baiduce.com:1883
,端口1883,不支持传输数据加密,可以通过MQTT.fx客户端连接。ssl://yourendpoint.mqtt.iot.gz.baiduce.com:1884
,端口1884,支持SSL/TLS加密传输,MQTT.fx客户端连接,参考配置MQTT客户端。wss://yourendpoint.mqtt.iot.gz.baidubce.com:8884
,端口8884,支持 Websockets 方式连接,同样包含 SSL 加密,参考Websockets Client。
本实验我们先使用第一个不加密方式连接测试,然后使用加密方式连接测试。
2.2. 获取对接信息
成功创建物接入项目(设备型项目)后,点击项目名称,进入配置物接入设备型项目页面,创建影子并获取连接信息。
2.2.1. 创建物模型
点击项目名称进入后,选择「物模型」,进入物模型列表页面,点击「新建物模型」。填写名称、属性等信息后,点击创建即可。
物模型用来表示一类(或同一型号的一批)设备。可为设备定义一套属性模板,在创建物影子时可以引用该模板,实现业务的快速部署。
2.2.2. 创建物影子
在左侧选择「物影子」,进入物影子列表页面,点击「新建物影子」。输入名称,并选择需要的物模型(这里我们选择了刚才创建的 SmartStreetLight ),点击创建即可完成,此时会弹出连接信息:
物影子与真实设备一一对应,是设备在云端体现。通过一组 json,反映设备最后一次上报的状态信息。
2.2.3. 获取连接信息
物影子创建完成时,会弹出连接信息,建议下载保存备用:
2.3. 查看主题(Topic)列表
MQTT 消息的收发是基于主题的。
设备型项目的主题是由系统定义的,可点击相应影子的卡片,通过以下页面查看,可根据实际需求选择主题。每个消息均需为 json 格式。
至此,即可通过获取到的连接信息,建立设备与影子之间的连接,进行数据的上报与反控下发。
详细的信息可以参考官方文档:物影子操作——使用开源MQTT客户端。
3. 使用mqtt.fx作为客户端测试不加密传输(mqtt)
配置 MQTT 的应用客户端,可以快速验证是否可以实现与物接入服务交流发送或者接收消息。
3.0. 前提条件
参考我的另一篇博客,下载并安装MQTT.fx客户端(1.7.1版本)。
注意: MQTT.fx 1.7.0版本对带有 $ 的 主题(Topic)处理存在 bug,请避免使用此版本进行测试。
3.1. 添加配置文件
- 打开MQTT.fx,单击“设置”图标:
- 单击弹出的对话框的左下角的“添加”图标,新增一个配置文件,按照下面的设置填写相应字段:
Profile Name
:Test Baidu TiangongBroker Address
:8sdmjix.mqtt.iot.bj.baidubce.comBroker Port
:1883Client ID
:随机生成(点击generate按钮)
- 选择“User Credentials”选项卡,并且按以下字段填写:
- User Name: 8sdmjix/SmartStreetLight001
- Password: xbcpwb5t9rqt9su5
- 单击“OK”按钮保存设置。
3.2. 连接服务器
选择“Test Baidu Tiangong”,然后单击“Connect”按钮,连接成功之后如图:
3.3. 客户端订阅消息
成功连接后,即可开始订阅消息。
打开 Subscribe 标签,填写主题 topic,例如:
其中SmartStreetLight001自行替换为你测试时使用的物影子名称
$baidu/iot/shadow/SmartStreetLight001/update/accepted
$baidu/iot/shadow/SmartStreetLight001/update/rejected
这两个是分别被用作 update 被接受和拒绝时返回信息,选择默认的QoS 0,点击“Subscribe”进行订阅操作,订阅成功之后如图:
3.4. 客户端发布消息
打开Publish标签,填写主题topic,例如:
$baidu/iot/shadow/SmartStreetLight001/update
其中SmartStreetLight001自行替换为你测试时使用的物影子名称。
消息质量选择默认的QoS 0,输入框中填写以下有效信息:
{
"reported": {
"Lightness": 100,
"led_status": true
}
}
其中Lightness和led_status及其值,均可自行替换为创建物模型时所指定的属性值,点击“Publish”进行发布操作。
发布之后,因为我们订阅了主题$baidu/iot/shadow/SmartStreetLight001/update
,所以可以在订阅一栏中看到服务器发布回来的信息:
发布之后,在天工物接入平台也可以看到刚刚使用mqtt.fx客户端发布的消息:
4. 使用mqtt.fx作为客户端测试加密传输(mqtts)
配置 MQTT 的应用客户端,可以快速验证是否可以实现与物接入服务交流发送或者接收消息。
4.0. 前提条件
参考我的另一篇博客,下载并安装MQTT.fx客户端(1.7.1版本)。
注意: MQTT.fx 1.7.0版本对带有 $ 的 主题(Topic)处理存在 bug,请避免使用此版本进行测试。
4.1. 添加配置文件
- 打开MQTT.fx,单击“设置”图标:
- 单击弹出的对话框的左下角的“添加”图标,新增一个配置文件,按照下面的设置填写相应字段:
Profile Name
:Test Baidu TiangongBroker Address
:8sdmjix.mqtt.iot.bj.baidubce.comBroker Port
:1884Client ID
:随机生成(点击generate按钮)
- 选择“User Credentials”选项卡,并且按以下字段填写:
- User Name: 8sdmjix/SmartStreetLight001
- Password: xbcpwb5t9rqt9su5
- 选择“SSL/TLS”选项卡,勾上“Enable SSL/TLS”,并选择“CA signed server certificate”:
- 单击“OK”按钮保存设置。
4.2. 连接服务器
选择“Test Baidu Tiangong”,然后单击“Connect”按钮,连接成功之后如图:
4.3. 客户端订阅消息
成功连接后,即可开始订阅消息。
打开 Subscribe 标签,填写主题 topic,例如:
其中SmartStreetLight001自行替换为你测试时使用的物影子名称
$baidu/iot/shadow/SmartStreetLight001/update/accepted
$baidu/iot/shadow/SmartStreetLight001/update/rejected
这两个是分别被用作 update 被接受和拒绝时返回信息,选择默认的QoS 0,点击“Subscribe”进行订阅操作,订阅成功之后如图:
4.4. 客户端发布消息
打开Publish标签,填写主题topic,例如:
$baidu/iot/shadow/SmartStreetLight001/update
其中SmartStreetLight001自行替换为你测试时使用的物影子名称。
消息质量选择默认的QoS 0,输入框中填写以下有效信息:
{
"reported": {
"Lightness": 100,
"led_status": true
}
}
其中Lightness和led_status及其值,均可自行替换为创建物模型时所指定的属性值,点击“Publish”进行发布操作。
发布之后,因为我们订阅了主题$baidu/iot/shadow/SmartStreetLight001/update
,所以可以在订阅一栏中看到服务器发布回来的信息:
发布之后,在天工物接入平台也可以看到刚刚使用mqtt.fx客户端发布的消息: