Thingsboard,一个非常强大的开源物联网平台,apache2.0的license,可以直接商用。

    • 租户 - 您可以将租户视为独立的业务实体:拥有或生产设备和资产的个人或组织;租户可能有多个租户管理员用户和数百万个客户;
    • 客户 - 客户也是一个独立的企业实体,购买或使用租户下的Device、Assets、Organization;客户可能有多个用户以及数百万个Device和Assets;
    • 用户 - 用户能够浏览仪表板和管理实体;
    • 设备 - 可以通过RPC命令处理Iot设备中的对象遥测数据。例如sensors(传感器), actuators(执行器), switches(开关);
    • 资产 - Device与Assets相关联的抽象Iot对象。例如factory(工厂), field(字段), vehicle(车辆);
    • 警报 - 提示Device和Assets以及Entity发生的事件;
    • 面板 - 通过Dashboards查看数据以及控制指定设备;
    • 规则节点 - 通过消怎处理实体生命周期事件的单元;
    • 规则链 - 规则节点的逻辑单元;

    实体支持如下:

    • 属性 - 与实体相关联的静态和半静态键值对。例如序列号,型号,固件版本;
    • 遥测数据 - 可用于存储,查询和可视化的时间序列数据点。例如温度,湿度,电池电量;
    • 关系 - 与其他实体的定向连接。例如包含,管理,拥有,生产.

    设备属性
    服务端属性:服务端提交,客户端不可见,例如设备上下线消息
    客户端属性:客户端提供,例如传感器软件的固件版本,硬件规格
    共享属性:服务端提交,客户端可见

    ThingsBoard提供与遥测数据操作相关的API:

    • 采集 使用MQTT, CoAP或者HTTP协议采集设备数据。
    • 存储 在Cassandra(高效、可扩展、能容错的NoSQL数据库)中存储时序数据。
    • 查询 查询最新时序数据值,或查询特定时间段内的所有数据。
    • 订阅 使用websockets订阅数据更新(用于可视化或实时分析)。
    • 可视化 使用可配置和可配置的小部件以及仪表盘可视化时序数据。
    • 过滤和分析 使用灵活的规则引擎过滤和分析数据(/docs/user-guide/rule-engine/)。
    • 事件警报 根据采集的数据触发事件警报。
    • 数据传输 过规则引擎节点实现与外部数据交互(例如Kafka或RabbitMQ规则节点)。

    Alarm生命周期
    alarm在应用程中是一个具有有生命周期功能,可以清除和确认应用中的每一个alarm。默认情况下alarm是处于活动和待确认状态。
    Alarm的创建,类型和传播
    alarm发起者应负责触发警报的相关实体。默认情况下,警报会传播到所有相关实体(仅父级关系)。通过创建时间,创建者和类型来标识alarm。同一类型和不能有两个活动的alarm。
    Alarm级别
    alarm支持级别如下:危急(CRITICAL), 重要(MAJOR), 次要(MINOR), 警告(WARNING,) 不确定(INDETERMINATE)
    Alarm更新
    alarm实体可以通过外部应用程序或ThingsBoard规则进行更新。警报会同时跟踪清除和确认时间以及最新更改作为结束时间。
    设备连接状态

    • Connect event - 设备连接到ThingsBoard时触发。基于MQTT的会话传输和HTTP请求传输同时连接事件将在每一个HTTP请求上触发。
    • Disconnect event - 设备与ThingsBoard断开连接时触发。基于MQTT的会话传输和HTTP请求传输同时连接事件将在每一个HTTP请求上触发。
    • Activity event - 通过属性(attribute update)或者rpc命令推送遥测数据。
    • Inactivity event - 当设备指定时间内不活动时触发。请注意,即使没有从设备断开连接事件,也可能触发此事件。通常表示一段时间没有触发任何活动事件。
    • 设备状态服务负责维护以下服务端属性属性:
    • active - 表示当前设备状态为true或false;
    • lastConnectTime - 表示设备最后一次连接到ThingsBoard的时间,自1970年1月1日格林尼治标准时间00:00:00以来的毫秒数
    • lastDisconnectTime - 表示设备与ThingsBoard断开连接的最后时间,自1970年1月1日格林威治标准时间00:00:00以来的毫秒数
    • lastActivityTime - 表示设备上次推送遥测,属性更新或rpc命令的时间,自1970年1月1日格林威治标准时间00:00:00以来的毫秒数
    • inactivityAlarmTime - 表示上一次触发不活动事件的时间,自1970年1月1日格林尼治标准时间00:00:00以来的毫秒数

    配置
    设备状态服务将全局配置参数用于不活动超时,参数(state.defaultInactivityTimeoutInSec)在thingsboard.yml中定义默认为10秒。
    用户可以通过设置服务器端属性”inactivityTimeout”来覆盖单个设备的此参数(值以毫秒为单位)。
    设备状态服务使用全局配置参数来检测不活动事件,参数(state.defaultStateCheckIntervalInSec)在thingsboard.yml中定义默认为10秒。
    默认可能是600秒,需要确认
    实体视图
    从v2.2开始Thingsboard实体视图功能可以使用,它与SQL数据库的视图类似,Thingsboard EV限制了基础表向外公开数据的可见程度同时还限制了设备、资产遥测属性客户公开的可见程度。
    Tenant管理员可以为每一个设备或创建多个视图(EV)并为之分配给不同的客户。
    支持说明如下:

    • 允许同时将指定设备或资产数据共享给多个客户,由于ThingsBoard安全模型的限制以前的实体视图(EV)无法实现。
    • 允许指定的用户查看采集的数据(例如:传感器数据),但隐藏调试信息例如电量、系统错误等。
    • 设备即服务(DaaS)模型,表示设备在不同时间段收集的数据属于不同的客户。

    我的理解,例如一些公共设备,我可以不分配给客户,建立视图关联后,把视图分配给客户,这样就可以把一个设备分配给多个客户使用。

    RPC
    ThingsBoard允许你从服务器端应用程序向设备发送远程RPC调用,你也可以将命令发送到设备并接收命令执行的结果。同样,您可以执行来自设备的请求,在后端应用进行某些计算或服务器端逻辑处理然后将结果反馈到设备。

    API限制
    各种UI组件都使用REST API调用,并且可能使用一些代表客户用户或租户用户启动的自动脚本。限制租户或客户的API调用数量至关重要,以避免由于自定义窗口小部件或脚本中的错误而导致服务器超载。
    所述rest.limits.tenant.enabled参数或TB_SERVER_REST_LIMITS_TENANT_ENABLED环境属性启用/禁用租户级限制。
    该rest.limits.tenant.configuration参数或TB_SERVER_REST_LIMITS_TENANT_CONFIGURATION的REST API调用的环境性能配置最高金额。例如,值“ 100:1,2000:60”表示每秒不超过100个请求,每分钟不超过2000个请求。
    server: … rest: limits: tenant: enabled: “${TB_SERVER_REST_LIMITS_TENANT_ENABLED:false}” configuration: “${TB_SERVER_REST_LIMITS_TENANT_CONFIGURATION:100:1,2000:60}” customer: enabled: “${TB_SERVER_REST_LIMITS_CUSTOMER_ENABLED:false}” configuration: “${TB_SERVER_REST_LIMITS_CUSTOMER_CONFIGURATION:50:1,1000:60}”
    Websocket限制
    Websocket用于将有关新遥测值的实时通知从设备传递到仪表板。
    数据库速率限制
    传输速度限制 针对租户