SiteWhere用户指南
本指南旨在帮助新用户安装和配置SiteWhere实例。它还为配置SiteWhere提供的许多功能提供参考。
安装 - 在本地机器或云中安装SiteWhere
全局配置 - 配置所有租户共有的SiteWhere的全局方面
有效的SiteWhere配置基于标准的Spring beans XML文件,嵌入式部分使用特定于SiteWhere的模式。下面的XML是部分配置文件,说明了一些主要功能。
SiteWhere配置文件通常包含登录凭证或其他不应与其他用户共享的信息。此外,在某些情况下,系统的设置是特定于环境的(生产与分段与开发)以及为每个系统维护单独的配置都会产生额外的工作。使用Spring属性占位符可以将敏感数据移动到外部属性文件中并在运行时注入。
SiteWhere可以使用MongoDB或Apache HBase进行底层数据存储。租户数据存储必须使用与全局配置中指定的数据库类型相同的数据库类型。
在MongoDB和HBase安装中,如果SiteWhere不存在,SiteWhere将自动创建底层数据库。之后,每次SiteWhere服务器启动时,它都会检查数据库中是否有数据,并且如果配置了数据初始化程序,将提示使用示例数据填充数据库。SiteWhere有一个初始化程序,它将为用户和租户数据模型创建样本数据。可以通过将default-user-model-initializer添加到数据存储 区部分进行配置,如上面的数据存储示例所示。
SiteWhere使用Apache Log4j记录有关正在运行的系统的信息。日志记录输出由默认服务器分发的lib文件夹中的log4j.xml文件配置。对于在自己的应用程序服务器实例上运行SiteWhere的用户,可以在GitHub上找到默认的日志记录配置文件。该文件必须在服务器类路径中可用才能使用。
租户配置 - 使用他们自己的数据存储和处理管道配置单个租户
租户配置
每个租户都有自己的配置文件,它通过Spring上下文确认从全局配置继承。这允许全局定义的bean可以由个人租户配置访问。租户的Spring XML配置文件位于conf / sitewhere / tenants / xxx / sitewhere-tenant.xml中(其中xxx是租户ID)。每个租户都有自己的设备数据和可配置的处理管道。租户配置文件使用Spring bean和自定义模式(如全局配置),但使用针对租户特定功能的不同模式:
注意:Tenant配置在SiteWhere 1.5.0中更改为每个租户使用单独的文件夹。以前的版本使用每个租户的单个文件并共享所有资源。
租户数据存储
租户数据存储通过特定于租户的对象模型的实现来扩展全局数据存储的功能。这些包括设备管理,资产管理和进度管理。用户和租户在全球范围内进行管理。
租户数据存储必须与为全局数据存储配置的类型相对应。无法将MongoDB用作租户数据存储的全局数据存储和HBase,反之亦然。
缓存提供者
设备数据模型的许多元素不会经常更改,并且可以从缓存实现中受益。SiteWhere提供了一个服务提供者接口 IDeviceManagementCacheProvider ,它可以被实现为提供使用外部缓存提供者的缓存功能。请注意,删除缓存会导致性能明显下降,因为底层的服务提供者实现将加载数据存储中的所有数据。
设备通信
每个租户可能都有自己的设备连接要求,因此SiteWhere提供了一个功能强大且可扩展的设备通信子系统,可以根据每个租户进行定制。数据可以从许多来源获取,包括MQTT主题,通过AMQP的RabbitMQ队列,WebSockets,直接套接字连接和许多其他选项。可以使用命令目标(包括MQTT主题,Twilio SMS和许多其他选项)将命令发送回设备。有关更多信息,请参阅设备通信 文档。
每个租户对于如何处理设备数据以及如何与其他技术集成都有自己的要求。事件处理子系统允许定制入站事件处理的各个方面,包括入站事件的线程/排队和入站数据的定制处理步骤(例如事件存储,注册,度量标准等)。它还允许自定义出站事件处理(在事件持续发生后),包括线程/排队和自定义出站处理器逻辑(例如,通过Hazelcast进行广播,与Azure EventHub集成,在Apache Solr中进行索引等)。有关 更多信息,请参阅事件处理文档。
资产管理
SiteWhere包括一个资产管理子系统,它提供了一种标准化方式来引用来自许多不同来源的资产。SiteWhere资产参考现实世界中的项目,包括人员(人员资产),地点(位置资产)和事物(硬件资产)。还有一类名为设备资产的资产,它们是可用于设备规范的硬件资产。资产用于指定有关设备规格的信息,例如使资产唯一的名称,照片和属性。它们还用于设备分配,以指示与设备相关联的物理对象,例如与徽章相关联的人或与跟踪设备关联的汽车。
租户设备通信 - 配置租户与设备交互并与外部系统交互
租户设备通信
通信子系统配置SiteWhere与设备的通信方式。在入站侧,设备数据通过事件源被引入系统。入站数据转换成SiteWhere事件和传递到入站处理链由入站处理策略。在出站端(作为出站处理链的一部分),命令通过命令目标发送到外部设备。一出站命令路由器 使得其中的命令目的地将被用于递送命令有效负载的选择。
通信引擎
SiteWhere通信引擎处理与设备交互相关的所有功能。其职责包括:
注册新的或现有的设备
SiteWhere设备可以通过API调用手动创建,但通常最好让设备自行注册。在这种情况下,设备会向系统提供一个唯一的硬件ID和规格标记,然后创建一个可以开始接受事件的新设备记录。SiteWhere假定每个设备在系统中都有唯一的ID,因此可以独立寻址。在启动时传递的规格令牌指示设备正在使用的硬件类型,并引用系统中已存在的设备规格。设备在引导或连接到网络时发送注册事件,SiteWhere会创建新设备记录或找到现有设备记录。SiteWhere会向设备返回一条指示注册状态的响应消息。
从连接的设备收到事件
一旦向系统注册,设备就可以向SiteWhere报告任何数量或类型的事件,然后存储这些事件。事件类型包括位置更新,传感器测量和其他采集数据,或响应特殊事件的警报。设备还能够确认收到由SiteWhere发布的命令。事件通过入站事件管道传送到SiteWhere,该入站事件管道提供了引入处理传入数据的新功能的模块化方式。
向连接的设备传送命令
在SiteWhere中注册的每个设备都有一个与设备上运行的硬件类型相关的关联设备规范。每个设备规范都有一个可以针对具有该规范的设备执行的命令列表。SiteWhere允许为规范添加任意数量的命令,每个命令可以携带任意数量的参数。命令和参数可以通过管理用户界面或通过REST调用添加。当命令执行时,它们通过一条流水线传播,以预期的格式对它们进行编码,并通过预期的协议传递它们。
SiteWhere通信引擎中的数据流如下所示:
参考:http://documentation.sitewhere.io/architecture.html
详见:https://blog.csdn.net/orchidofocean/article/details/79668974
管理应用程序 - 使用包含的HTML5管理应用程序来配置SiteWhere实例
参考:http://documentation.sitewhere.io/userguide.html