Working with telemetry data
ThingsBoard provides a rich set of features related to telemetry data:
- collect data from devices using MQTT, CoAP or HTTP protocols.
- store timeseries data in Cassandra (efficient, scalable and fault-tolerant NoSQL database).
- query latest timeseries data values or all data within the specified time interval.
- subscribe to data updates using websockets (for visualization or real-time analytics).
- visualize timeseries data using configurable and highly customizable widgets and dashboards.
- filter and analyze data using flexible Rule Engine (/docs/user-guide/rule-engine/).
- generate alarms based on collected data.
- forward data to external systems using plugins (e.g. Kafka or RabbitMQ plugins).
ThingsBoard提供了一系列于遥测数据相关的功能:
- 采集:使用MQTT, CoAP or HTTP协议采集设备数据。
- 存储:在Cassandra(高效、可扩展、能容错的NoSQL数据库)中存储时序数据。
- 查询:查询最新时序数据值,或查询特定时间段内的所有数据。
- 订阅:使用websockets订阅数据更新(用于可视化或实时分析)。
- 可视化: 使用可配置和可配置的小部件以及仪表盘可视化时序数据。
- 过滤和分析: 使用灵活的规则引擎过滤和分析数据(/docs/user-guide/rule-engine/)。
- 事件告警:根据采集的数据触发事件告警。
- 数据传输: 使用插件将数据传输到外部系统(例如: Kafka or RabbitMQ plugins)。
设备遥测上传API
ThingsBoard provides an API to upload timeseries key-value data. Flexibility and simplicity of key-value format allow easy and seamless integration with almost any IoT device on the market. Telemetry upload API is specific for each supported network protocol. You can review API and examples in corresponding reference page:
- MQTT API reference
- CoAP API reference
- HTTP API reference
ThingsBoard提供了一个API来上传时序键值数据。键值格式的灵活性和简单性使得市场上几乎任何IoT设备都可以轻松,无缝地集成。
遥测插件
ThingsBoard consists of core services and pluggable modules called plugins. Telemetry plugin is responsible for persisting timeseries data to internal data storage; provides server-side API to query and subscribe for data updates. Since Telemetry plugin functionality is critical for data visualization purposes in dashboards, it is configured on the system level by a system administrator. Advanced users or platform developers can customize telemetry plugin functionality.
ThingsBoard由核心服务和可插入模块组成(插件)。遥测插件负责将时序数据保留到内部数据存储中;提供服务器端API来查询和订阅数据更新。由于遥测插件功能对于仪表板中的数据可视化非常重要,因此它是由系统管理员在系统级别上配置的。高级用户或平台开发人员可以定制遥测插件功能。
内部数据存储
ThingsBoard uses either Cassandra NoSQL database or SQL database to store all data. A device that is sending data to the server will receive confirmation about data delivery as soon as data is stored in DB. Modern MQTT clients allow temporary local storage of undelivered data. Thus, even if one of the ThingsBoard nodes goes down, the device will not lose the data and will be able to push it to other servers. Server side applications are also able to publish telemetry valued for different entities and entity types.
ThingsBoard使用了Cassandra NoSQL数据库或SQL数据库来存储所有数据。 当数据存储在DB中时传输数据的设备就会收到存储确认。现代MQTT客户端允许临时本地存储未传输的数据。因此,即使ThingsBoard某个节点出现故障,该设备也不会丢失数据,它会将数据推送到其他服务器上。 服务器端应用程序还能够发布对不同实体和实体类型的遥测值。
Although you can query the database directly, ThingsBoard provides set of RESTful and Websocket API that simplify this process and apply certain security policies:
尽管您可以直接查询数据库,但是ThingsBoard提供了一组RESTful和Websocket API来简化查询过程的同时也遵循了安全策略:
- Tenant Administrator user is able to fetch data for all entities that belong to the corresponding tenant.
- Customer user is able to fetch data only for entities that are assigned to the corresponding customer.
尽管您可以直接查询数据库,但是ThingsBoard提供了一组RESTful和Websocket API在简化查询过程的同时也遵循了特定的安全策略:
- 租户管理用户可以采集租户相关的所有数据。
- 用户只可以采集到用户相关的实体的数据。