什么样的硬件可以接入物联网平台?

目前平台提供设备连接和通信的SDK。理论上,只要您的硬件环境有TCP/IP协议栈,就可以封装我们的SDK或通过开源MQTT客户端库,接入物联网平台。

物联网平台和消息队列(MQ)都是用于消息通信的产品,它们有什么区别?

物联网平台是专门针对物联网场景设备通信开发的产品,而MQ是针对服务端异步通信场景开发的。两者最大的区别在风险控制能力。

因为在物联网场景中,厂家生产的设备大部分都不是自己用,而是给用户使用,那就意味着设备被破解的概率大大增加。所以,风险控制至关重要。物联网平台具有设备认证环节。每个设备都会在物联网平台注册一个唯一标识。在物联网平台上,您可以对每个设备进行管理,包括授权,禁用等管理。一旦某个设备被破解,就可以将风险控制到只损失单个设备,不会波及整个系统。而MQ没有这样的风险控制机制。

设备与平台建立连接的实现方法有哪些?

平台目前提供C、java、python三种语言的SDK开发包,SDK中包含设备与平台建立连接的方法和常用的设备端接口调用方法。 如果我们提供的SDK不能满足您的开发需求,可使用开源的MQTT协议客户端库实现设备平台连接,并结合设备影子和设备端开放接口自行实现设备端业务逻辑。 Eclipse Paho客户端库 Paho官网: http://www.eclipse.org/paho/ 官网客户端库mqtt.org: https://github.com/mqtt/mqtt.github.io/wiki/libraries

使用MQTT协议连接,不同的设备可以使用相同的clientID连接服务器吗?

clientID需为平台全局唯一。如果不同的设备使用相同的clientID同时连接物联网平台,那么先连接的那个设备会被强制断开。

建立连接时clientid如何填写?

设备与平台建立连接时,平台会利用设备使用MQTT进行连接时设置clientid识别设备的身份。 clientid格式规范为“IotDevice@{项目编码projectCode}@{产品编码productCode}@{设备编码deviceCode}”(示例IotDevice@iotol9592xu@9lnemo8m@device4wh3w4zl) 只有设备端连接时使用正确的clientid,平台才能正确识别设备的在线状态,如果连接时不设置clientid或格式不符合规范,虽然设备可以与平台建立连接,但是可能出现平台显示的设备在线状态不准确的情况出现,开发时请特别注意。 注:下一个版本会优化该策略。

物联网平台支持哪些QoS Level?

目前,在MQTT协议下支持的QoS Level包括0和1。需要注意的是0代表最多一次,指最多发布成功一次,不保证发布和订阅成功;1代表至少一次,同一条消息可能被发布多次,需用户做去重处理。对于可靠性要求高的场景建议使用qos1,一般场景建议使用qos0并结合异步查询超时判定是否成功。

设备影子与物模型的关系

物联网平台对设备影子和物模型进行了自动适配,用户在物模型中定义的功能属性如果在设备影子的上报状态中存在,会自动将影子中的上报值映射到该属性,在设备详情的“运行状态”中显示,对应的设备影子中存在而物模型中未定义的功能属性则不会再“运行状态”中显示,功能属性中已定义但在设备影子上报值中不存在的,“运行状态”中会显示该属性,但属性值为空。

产品下存在设备时,修改产品对已注册设备有何影响?

产品下已经注册了设备时,如修改产品的属性、标签、Topic类,已注册的全部设备在平台的配置会被同步更新,即设备的拥有的功能属性、标签、Topic会被更新,此种情况下已经存在的设备、APP应用可能会出现错误,因此设备和应用开发完毕后建议不要再对产品进行修改,如果修改,需同步修改设备端、应用端相关逻辑。

设备影子的应用场景

帮助文档中已经对设备影子的应用场景进行了讲解,虽然设备影子几乎可以解决大部分物联网设备应用需求,但是对于没有远程控制需求的应用场景,使用通用数据上行接口(iot/{projectCode}/{productCode}/{IotDeviceCode}/event)可以获得更高的开发效率和传输性能。

如何使用通用接口进行设备开发

设备端通用接口是平台提供的两个通用上线行接口,用户可以使用这两个接口进行设备数据上报和控制指令接收,数据格式可以自行定义。

MQTT协议Pub消息payload是什么格式?

设备消息数据为透传/自定义格式,支持任何自定义数据格式数据。

网关设备开发如何进行开发

针对于网关设备,平台目前提供了专门的拓扑关系接口、子设备状态上报接口 拓扑关系接口:设备可以通过向该接口发布请求消息获得网关关联的子设备列表,进而代理子设备进行数据上报和接收控制指令; 子设备状态上报接口:利用网关接入的设备本身不能直接与平台进行连接,而是通过网关代理接入平台,需要网关获取设备的状态并上报给平台,因此需要网关保证设备状态的准确性同步给平台。

子设备异常在线

假设子设备1在网关2上绑定着,正在正常上报(update),此时解绑子设备1,网关2可能还缓存这子设备1的主题权限,还在继续上报,可能导致触发子设备1上线。若网关3在线时,绑定子设备1到网关3,网关3可能还不具备子设备1的权限。以上这两种情况,暂时都需要重新断开和连接网关2和网关3,子设备1主题权限才会生效,否则可能引起异常上报,异常在线,无法发布/订阅子设备权限等问题。