开发者中心

处理I

ID-less通信概念

QuarkIoE的MQTT实现专门设计用于设备通信,因此尝试从客户端删除尽可能多的不必要的逻辑。

使用REST(或SmartREST)协议需要知道要更新的每个对象,报警和操作的ID。 因此,客户端需要保持这些ID的状态,例如,如果它创建一个报警它需要知道此报警的ID,以便以后可以清除。 使用MQTT实现,我们希望减少设备上执行此类操作并将逻辑移至服务器。

示例 1: 设备ID

要通过REST更新设备对象中的数据,您需要知道设备对象的ID。 此外,该ID对于需要与设备相关联的每个其他数据是必需的。 如作为测量值,报警或事件的源。 为了消除在设备上保留ID的必要性QuarkIoE提供了身份识别API,您可以在其中将外部ID(例如序列号)链接到对象,以便您随时查询ID。 因此,典型的设备启动看起来像这样:

REST接收设备ID

使用MQTT,我们自动将身份标识API与MQTT clientId一起使用。 这消除了将ID告知设备的必要性,并且因为客户端还发送该连接上的其他数据,我们可以将每个测量值,报警,事件...与正确的设备相关联。

MQTT自动解析ID
示例 2: 报警ID

当客户端使用REST API创建报警时,它需要确保它获取QuarkIoE生成的报警的ID作为应答。 客户端需要此ID以便稍后更新报警,例如,如果报警不再活跃,则更新为状态CLEARED。

REST处理报警

在QuarkIoE中,设备每种类型的报警处于活跃状态的只能有一个。 如果创建另一个具有相同类型的报警,将被去重。 因此,MQTT实现使用报警的类型作为标识符。 客户端只需要发送已解决的报警类型,服务器将找到正确的报警对象。

MQTT处理报警