Difference between revisions of "Sending data to Senfi/zh-cn"
From Senfi Docs
(Created page with "=== 设计/创建测量 ===") |
(Updating to match new version of source page) |
||
(32 intermediate revisions by one other user not shown) | |||
Line 14: | Line 14: | ||
=== 设计/创建测量 === | === 设计/创建测量 === | ||
− | + | 成功集成的关键是拥有精心设计的[[Measurement/zh-cn|测量]]。 因此,如果您不熟悉测量/参数/标签的概念,请先阅读[[Concepts/zh-cn#测量,参数,标签|本节]]。 | |
− | # | + | # 在设计代表系统的测量时,请记下要捕获的参数。 |
− | # | + | # 确定要使用的一组标签。确保有一个标签组合,可以唯一地标识输出这些参数的单元/仪器/设备。 |
− | # | + | # 登录[https://ems.senfi.io/cms 内容管理系统]。 |
− | # | + | # 转到测量选项卡。 |
− | # | + | # 单击 '''+''' 按钮添加新测量。 |
− | # | + | # 给测量起一个描述性的名字。这将显示给仪表板的用户。 |
− | # | + | # 指定。[[Measurement/zh-cn#测量码|测量码]]. |
− | # | + | # 添加[[Measurement/zh-cn#标签|标签]]。 |
− | # | + | # 添加参数并指定每个参数的类型。 |
− | # | + | # 完成后保存。 |
− | === | + | === 发布到消息队列遥测传输 === |
− | + | 典型的集成遵循此模式: | |
− | + | 外部系统 --> 您的应用程式 --> Senfi 消息队列遥测传输端点 | |
− | + | 您可以让正在监视的外部系统将当前值推送到您的应用程序,或者您的应用程序可以轮询外部系统的当前值。无论哪种方式,一旦您的应用程序有了其测量值,就可以准备将其发送到Senfi的消息队列遥测传输端点。 | |
− | ==== | + | ==== 消息队列遥测传输端点 ==== |
− | ; | + | ; 主机: mqtt.senfi.io |
− | ; | + | ; 接口: 1883 |
− | ; | + | ; 用户名: ''<您的integration key>'' |
− | ; | + | ; 密码: ''<您的integration secret>'' |
− | ; | + | ; 消息队列遥测传输主题: ingestor/1/0/live/text/array/ems/''<您的integration key>/<您的测量码>'' |
− | ==== | + | ==== 讯息格式 ==== |
− | + | 消息正文应采用有效的[https://www.json.org/ JSON]格式。 | |
− | + | 单一的测量 | |
{ | { | ||
"data": [ | "data": [ | ||
Line 59: | Line 59: | ||
} | } | ||
− | + | 多个测量 | |
{ | { | ||
"data": [ | "data": [ | ||
Line 82: | Line 82: | ||
] | ] | ||
} | } | ||
− | + | 您必须标明测量所属的[[Site/zh-cn|站点]]。因此,您需要在消息队列遥测传输消息中包括站点ID(<tt>site_id</tt>)。 如果您的测量还有其他标签,则也必须在消息中发送它们。 | |
− | <div class="important"> | + | <div class="important">注意:'''所有'''标记和参数必须在您的消息正文中发送,否则它们将被视为无效数据并被丢弃。</div> |
− | ==== | + | ==== 参数数据类型 ==== |
− | Senfi | + | Senfi 支持以下的数据类型 |
− | * | + | * 浮点数 |
− | * | + | * 整数 |
− | * | + | * 布尔值 |
− | * | + | * 字符串 |
− | + | ;'''浮点数''' | |
− | ;''' | + | :仅接受有效的JSON数字。 |
− | : | ||
:* <tt>0</tt> | :* <tt>0</tt> | ||
Line 98: | Line 97: | ||
:* <tt>1.0e+10</tt> | :* <tt>1.0e+10</tt> | ||
− | : | + | :无效的例子: |
:* <tt>1.0.0</tt> | :* <tt>1.0.0</tt> | ||
:* <tt>"1.0"</tt> | :* <tt>"1.0"</tt> | ||
− | ;''' | + | ;'''整数''' |
− | : | + | :仅接受有效的JSON数字。十进制值将被截断。 |
:* <tt>0</tt> | :* <tt>0</tt> | ||
Line 110: | Line 109: | ||
:* <tt>1e10</tt> | :* <tt>1e10</tt> | ||
− | : | + | :无效的例子: |
− | :* | + | :* 与'''浮点数'''相同 |
− | ;''' | + | ;'''布尔值''' |
− | : | + | :仅接受JSON布尔值。 |
:* true | :* true | ||
:* false | :* false | ||
− | : | + | :无效的例子: |
:* "true" | :* "true" | ||
:* "FALSE" | :* "FALSE" | ||
Line 123: | Line 122: | ||
:* "1" | :* "1" | ||
− | ;''' | + | ;'''字符串''' |
− | : | + | :可接受任何有效的JSON字符串。 |
− | ==== | + | ==== 应用样本 ==== |
− | + | 您可以查看[https://github.com/gelement-com/mqtt-ingestor-sample 此GitHub存储库]中的示例应用程序,该示例应用程序将数据发送到Senfi的消息队列遥测传输端点。 | |
− | ==== | + | ==== 发布策略 ==== |
− | + | 您可以选择定期(例如每秒)将数据发布到Senfi,也可以仅在参数有所更改时才发布。实际上,我们建议您定期发布数据,这样一来系统才能够告知数据是何时停止输入的。 | |
− | + | 此外,您可以选择批量发送测量值到Senfi。例如,收集50个测量,然后将其发布到单个消息中。此方法对于快速变化的参数很有效,但是请注意,<tt>tm_source</tt> 应该表示测量进行采样的时间,而不是发送的时间。 | |
− | <span class="right">[[Adding_a_rule| | + | |
+ | |||
+ | <span class="right">[[Adding_a_rule/zh-cn|下一页:添加规则]]</span> |
Latest revision as of 12:22, 26 August 2020
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 应该表示测量进行采样的时间,而不是发送的时间。