将数据发送到SiteWhere
SiteWhere旨在灵活地发送和接收来自设备和其他代理的数据。大多数流行的通信协议和编码都支持开箱即用,但系统的设计也很容易扩展。每个系统租户可以配置任意数量的协议,以便与设备进行通信。默认情况下,租户被配置为通过MQTT进行通信,支持多种编码以允许与多种类型的设备进行交互。
使用REST服务
无论如何在每个租户的基础上配置设备通信,核心SiteWhere服务器实例都会提供REST服务 这可以控制全局和特定于租户的数据。REST服务需要经过身份验证的用户和租户授权令牌来控制哪些功能可供特定用户使用。经过身份验证的用户(取决于权限)可以对所有系统实体执行创建/读取/更新/删除操作。可以直接从REST服务提交和查询各种类型的设备事件数据。让设备通过REST服务直接与SiteWhere交互是一种可接受的方法,尽管HTTP的开销限制了可伸缩性。其他协议,如MQTT和AMQP允许更高效的连接并提供双向通信。
详见:sitwhere REST Services 文档【译】
使用JSON接收设备数据
SiteWhere支持大多数协议的JSON有效负载,包括MQTT,AMQP,WebSockets和直接套接字连接。默认的SiteWhere租户配置连接到MQTT代理,并侦听SiteWhere / input / json主题上的JSON有效负载。租户配置文件中的以下部分启用了此功能:
<sw:mqtt-event-source sourceId="json" hostname="localhost" port="1883"
topic="SiteWhere/input/json">
<sw:json-device-request-decoder/>
</sw:mqtt-event-source>
JSON数据包格式
以下部分显示了结构化为与SiteWhere交互的JSON数据的示例。所有JSON数据包都共享一些通用信息,如下所示:
{
"hardwareId": "(unique hardware id)",
"type": "(indicator for request type)",
"request": {
...
}
}
领域 | 描述 |
---|
硬件ID | 硬件ID,用于标识租户内的设备。这通知系统哪个设备正在生成事件。 |
类型 | 设备的请求类型。这表明如何解释请求部分中的数据。 |
请求 | 请求内容特定于正在发送的数据包类型,如类型字段所示。 |