发送数据到Senfi
From Senfi Docs
Senfi监视并存储您现有系统中的时间序列数据。目前,Senfi提供了消息队列遥测传输接口,以便接收您系统的数据。若要开始向Senfi发送数据,您需要执行以下操作:
- 在内容管理系统中创建integration key
- 在内容管理系统中设计和创建测量
- 编写程序以从您的系统中读取数据并将其发送到Senfi的消息队列遥测传输端点
Contents
创建integration key
- 登录内容管理系统。
- 转到开发人员>集成选项卡
- 单击 + 按钮添加一对新的integration key/secret。
- 记下integration key和secret的值
设计/创建测量
成功集成的关键是拥有精心设计的测量。 因此,如果您不熟悉测量/参数/标签的概念,请先阅读本节。
- 在设计代表系统的测量时,请记下要捕获的参数。
- 确定要使用的一组标签。确保有一个标签组合,可以唯一地标识输出这些参数的单元/仪器/设备。
- 登录内容管理系统。
- 转到测量选项卡。
- 单击 + 按钮添加新测量。
- 给测量起一个描述性的名字。这将显示给仪表板的用户。
- 指定。测量码.
- 添加标签。
- 添加参数并指定每个参数的类型。
- 完成后保存。
发布到消息队列遥测传输
典型的集成遵循此模式:
外部系统 --> 您的应用程式 --> Senfi 消息队列遥测传输端点
您可以让正在监视的外部系统将当前值推送到您的应用程序,或者您的应用程序可以轮询外部系统的当前值。无论哪种方式,一旦您的应用程序有了其测量值,就可以准备将其发送到Senfi的消息队列遥测传输端点。
消息队列遥测传输端点
- 主机
- mqtt.senfi.io
- 接口
- 1883
- 用户名
- <您的integration key>
- 密码
- <您的integration secret>
- 消息队列遥测传输主题
- ingestor/1/0/live/text/array/ems/<您的integration key>/<您的测量码>
讯息格式
消息正文应采用有效的JSON格式。
单一的测量
{ "data": [ { "tm_source": xxxxxxxxxx, "site_id" xxxxxxxx, "tag1": "xxxxxxxx", "tag2": "xxxxxxxx", "metric1": xxxxxxxxx, "metric2": xxxxxxxxx ... } }
多个测量
{ "data": [ { "tm_source": xxxxxxxxxx, "site_id" xxxxxxxx, "tag1": "xxxxxxxx", "tag2": "xxxxxxxx", "metric1": xxxxxxxxx, "metric2": xxxxxxxxx ... }, { "tm_source": xxxxxxxxxx, "site_id" xxxxxxxx, "tag1": "xxxxxxxx", "tag2": "xxxxxxxx", "metric1": xxxxxxxxx, "metric2": xxxxxxxxx, ... } ] }
您必须标明测量所属的站点。因此,您需要在消息队列遥测传输消息中包括站点ID(site_id)。 如果您的测量还有其他标签,则也必须在消息中发送它们。
注意:所有标记和参数必须在您的消息正文中发送,否则它们将被视为无效数据并被丢弃。
参数数据类型
Senfi 支持以下的数据类型
- 浮点数
- 整数
- 布尔值
- 字符串
- 浮点数
- 仅接受有效的JSON数字。
- 0
- 0.1
- 1.0e+10
- 无效的例子:
- 1.0.0
- "1.0"
- 整数
- 仅接受有效的JSON数字。十进制值将被截断。
- 0
- -15
- 1e10
- 无效的例子:
- 与浮点数相同
- 布尔值
- 仅接受JSON布尔值。
- true
- false
- 无效的例子:
- "true"
- "FALSE"
- 0
- "1"
- 字符串
- 可接受任何有效的JSON字符串。
应用样本
您可以查看此GitHub存储库中的示例应用程序,该示例应用程序将数据发送到Senfi的消息队列遥测传输端点。
发布策略
您可以选择定期(例如每秒)将数据发布到Senfi,也可以仅在参数有所更改时才发布。实际上,我们建议您定期发布数据,这样一来系统才能够告知数据是何时停止输入的。
此外,您可以选择批量发送测量值到Senfi。例如,收集50个测量,然后将其发布到单个消息中。此方法对于快速变化的参数很有效,但是请注意,tm_source 应该表示测量进行采样的时间,而不是发送的时间。