主要内容为网关创建、网关绑定设备自动注入、网关绑定设备数据上报、网关绑定设备数据订阅,单个设备数据上报。关联点为mqtt上报订阅主题等。
在正常的步骤中,服务只需要连接网关即可完成数据上报、订阅的操作,而不是连接每一个设备去进行上报。
一、网关创建
1、登陆thingsboard租户管理员。
2、点击菜单:“实体”-> “设备”,创建新设备。
3、输入名称、勾选是否网关,进入下一步
4、勾选“添加凭据”,类型选择MQTT Basic
。
5、输入ID、用户名、密码。
二、绑定设备自动注入
本步骤称为初始化,建议做成方法,在每次启动程序都调用此方法。初始化也是自动注入\创建设备的过程,如果设备已存在,将只进行初始化步骤。
1、连接mqtt网关,id、用户名、密码为创建网关时自己填写的数据。
2、编写自己的业务代码,拿到所有需要管理的设备名。
3、初始化设备,订阅主题:v1/gateway/connect
4、例如,你将带设备名的设备列表保存在deviceCredentials中,以下为举例:
1 | for (String name : deviceCredentials) { |
msg对应json: {"device":"设备名xxx"}
5、publish之后,设备将完成初始化,未创建的设备将自动完成创建,并关联到你的网关,方便后续的数据上报和订阅。
三、绑定设备数据上报
1、订阅主题为:v1/gateway/telemetry
2、假如上报key:online,value:1
,以下为举例:
1 | for (String name : deviceCredentials) { |
msg对应json:
1 | { |
3、你可以通过以上方式,批量上报设备遥测,只需要连接你的网关即可,不需要对每个设备进行连接。
四、绑定设备数据订阅
此方式就是双向rpc响应!
1、订阅主题为:v1/gateway/rpc
2、假如你使用MqttClient与网关建立连接,你只需要订阅即可得到rpc数据回传。mqttClient.subscribe("v1/gateway/rpc");
3、对此,我们创建一个回调类来得到回传的数据:
1 | public class MqttMessageHandler implements MqttCallback { |
五、单个设备数据上报
单个设备上报,没有任何关联性要求,不需要绑定你的网关。
1、创建mqtt连接,用户名为设备的访问令牌,你可以在thingsboard中选择设备-> 复制访问令牌,密码为空。
2、订阅主题:v1/devices/me/telemetry
3、内容:{ "online": 0 }
到此就完成了单个设备的数据上报,同时,此种方式无法获得回传数据,建议在测试或临时需要时使用,正式的方式还是推荐通过网关进行设备控制。