首先是需要在平台上注册MQTT账户,然后使用MQTT账户连接MQTT服务才有权限连接。
因为目前平台MQTT只用于向用户推送数据数据,所以平台只对用户开放订阅权限。
目前平台开放的用户层级从高到低依此是 公司用户 --> 应用用户 --> 产品用户 。
与此对应的MQTT topic结构也是manage-iot-hub/{companyId}/{applicationId}/{productKey}/{eventId}/{dataTypeId}/{deviceName}
。其中manage-iot-hub
是固定前缀,companyId
代表公司ID,applicationId
代表应用ID,productKey
代表产品KEY,eventId
代表数据类型,dataTypeId
代表数据类型,deviceName
代表设备名。具体使用规则参考topic 规则。
按照用户层级所能管理、获取的设备数据规则,对应的用户权限只能订阅自己所在层级下的设备数据,公司用户只能订阅所属公司下设备的数据,应用用户只能订阅所属应用下设备的数据,产品用户只能订阅所属产品下设备的数据。下面是3种层级权限账户类型的举例说明:
公司用户只能订阅到对应的公司topic规则下的设备数据,例如你的公司账户登陆后在通讯管理中看到的ACL主题
是manage-iot-hub/18/#
,那你只能订阅到公司id为18下的设备数据,允许订阅的topic可以是manage-iot-hub/18/#
、manage-iot-hub/18/3074/#
、 manage-iot-hub/18/3074/xOtSGlrmmc0/#
等,但如果你设置的是类似manage-iot-hub/17/#
、manage-iot-hub/+/3074/#
等包含不属于当前用户层级的topic则是不被允许的。
应用用户只能订阅到对应的应用topic规则下的设备数据,例如你的应用账户登陆后在通讯管理中看到的ACL主题
是manage-iot-hub/18/3074/#
,那你只能订阅到公司id为18、应用id为3074下的设备数据,允许订阅的topic可以是manage-iot-hub/18/3074/#
、 manage-iot-hub/18/3074/xOtSGlrmmc0/#
等,但如果你设置的是类似manage-iot-hub/18/#
、manage-iot-hub/+/3074/#
等包含不属于当前用户层级的topic则是不被允许的。
产品用户只能订阅到对应的产品topic规则下的设备数据,例如你的产品账户登陆后在通讯管理中看到的ACL主题
是manage-iot-hub/18/3074/xOtSGlrmmc0/#
,那你只能订阅到公司id为18、应用id为3074,产品key为xOtSGlrmmc0
下的设备数据,允许订阅的topic可以是 manage-iot-hub/18/3074/xOtSGlrmmc0/#
、manage-iot-hub/18/3074/xOtSGlrmmc0/1/#
等,但如果你设置的是类似manage-iot-hub/18/#
、manage-iot-hub/+/3074/#
等包含不属于当前用户层级的topic则是不被允许的。