Difference between revisions of "Sending data to Senfi/zh-cn"

From Senfi Docs
Jump to: navigation, search
(Updating to match new version of source page)
 
(30 intermediate revisions by one other user not shown)
Line 14: Line 14:
 
=== 设计/创建测量 ===
 
=== 设计/创建测量 ===
  
成功集成的关键是拥有精心设计的[[Measurement|测量]]。 因此,如果您不熟悉测量/参数/标签的概念,请先阅读[[Concepts#Measurement.2C_Metric.2C_Tag|本节]]。
+
成功集成的关键是拥有精心设计的[[Measurement/zh-cn|测量]]。 因此,如果您不熟悉测量/参数/标签的概念,请先阅读[[Concepts/zh-cn#测量,参数,标签|本节]]。
  
# When you are designing a measurement to represent your system, note down the metrics you want to capture.
+
# 在设计代表系统的测量时,请记下要捕获的参数。
# Decide on a set of tags to use. Make sure that there is a combination of tags that will uniquely identify the unit/device/equipment that outputs those metrics.
+
# 确定要使用的一组标签。确保有一个标签组合,可以唯一地标识输出这些参数的单元/仪器/设备。
# Login to the [https://ems.senfi.io/cms CMS].
+
# 登录[https://ems.senfi.io/cms 内容管理系统]
# Go to the Measurement tab.
+
# 转到测量选项卡。
# Click the '''+''' button to add a new measurement.
+
# 单击 '''+''' 按钮添加新测量。
# Give the measurement a descriptive name. This will be shown to users of the dashboard.
+
# 给测量起一个描述性的名字。这将显示给仪表板的用户。
# Specify a [[Measurement#Measurement_Code|measurement code]].
+
# 指定。[[Measurement/zh-cn#测量码|测量码]].
# Add [[Measurement#Tags|tags]].
+
# 添加[[Measurement/zh-cn#标签|标签]]
# Add metrics and specify the type of each metric.
+
# 添加参数并指定每个参数的类型。
# Save when done.
+
# 完成后保存。
  
=== Publish to MQTT ===
+
=== 发布到消息队列遥测传输 ===
  
A typical integration follows this pattern:
+
典型的集成遵循此模式:
  
  External system --> Your application --> Senfi MQTT endpoint
+
  外部系统 --> 您的应用程式 --> Senfi 消息队列遥测传输端点
  
Either the external system you are monitoring pushes to your application, or your application polls the external system for its current values. Either way, once your application has the values of its measurement, you can prepare to send it to Senfi's MQTT endpoint.
+
您可以让正在监视的外部系统将当前值推送到您的应用程序,或者您的应用程序可以轮询外部系统的当前值。无论哪种方式,一旦您的应用程序有了其测量值,就可以准备将其发送到Senfi的消息队列遥测传输端点。
  
==== MQTT Endpoint ====
+
==== 消息队列遥测传输端点 ====
; Host: mqtt.senfi.io
+
; 主机: mqtt.senfi.io
; Port: 1883
+
; 接口: 1883
; Username: ''<Your integration key>''
+
; 用户名: ''<您的integration key>''
; Password: ''<Your integration secret>''
+
; 密码: ''<您的integration secret>''
; MQTT topic: ingestor/1/0/live/text/array/ems/''<your integration key>/<your measurement code>''
+
; 消息队列遥测传输主题: ingestor/1/0/live/text/array/ems/''<您的integration key>/<您的测量码>''
  
==== Message Format ====
+
==== 讯息格式 ====
The message body should be in valid [https://www.json.org/ JSON] format.
+
消息正文应采用有效的[https://www.json.org/ JSON]格式。
  
Single measurement
+
单一的测量
 
   {
 
   {
 
     "data": [
 
     "data": [
Line 59: Line 59:
 
   }
 
   }
  
Multiple measurements
+
多个测量
 
   {
 
   {
 
     "data": [
 
     "data": [
Line 82: Line 82:
 
     ]
 
     ]
 
   }
 
   }
You must indicate which [[Site]] the measurement is meant for. Hence, you need to include the site ID (<tt>site_id</tt>) in your MQTT message. If your measurement has other tags, you must send them in the message as well.
+
您必须标明测量所属的[[Site/zh-cn|站点]]。因此,您需要在消息队列遥测传输消息中包括站点ID(<tt>site_id</tt>)。 如果您的测量还有其他标签,则也必须在消息中发送它们。
<div class="important">Note: '''All''' tags and metrics must be sent in your message body, or they will be treated as invalid data and discarded.</div>
+
<div class="important">注意:'''所有'''标记和参数必须在您的消息正文中发送,否则它们将被视为无效数据并被丢弃。</div>
==== Metric Data Types ====
+
==== 参数数据类型 ====
Senfi supports the following data types
+
Senfi 支持以下的数据类型
* Float
+
* 浮点数
* Integer
+
* 整数
* Boolean
+
* 布尔值
* String
+
* 字符串
<div class="important">Note: '''null''' values is not valid for all data types. Sending a '''null''' or invalid value will cause the record to be rejected</div>
+
;'''浮点数'''
;'''Float'''
+
:仅接受有效的JSON数字。
:Only valid JSON Number is accepted.
 
  
 
:* <tt>0</tt>
 
:* <tt>0</tt>
Line 98: Line 97:
 
:* <tt>1.0e+10</tt>
 
:* <tt>1.0e+10</tt>
  
:Invalid examples:
+
:无效的例子:
  
 
:* <tt>1.0.0</tt>
 
:* <tt>1.0.0</tt>
 
:* <tt>"1.0"</tt>
 
:* <tt>"1.0"</tt>
  
;'''Integer'''
+
;'''整数'''
:Only valid JSON Number is accepted. Decimal values are truncated.
+
:仅接受有效的JSON数字。十进制值将被截断。
  
 
:* <tt>0</tt>
 
:* <tt>0</tt>
Line 110: Line 109:
 
:* <tt>1e10</tt>
 
:* <tt>1e10</tt>
  
:Invalid examples:
+
:无效的例子:
:* Same as '''Float'''
+
:* '''浮点数'''相同
  
;'''Boolean'''
+
;'''布尔值'''
:Only JSON Boolean is accepted.
+
:仅接受JSON布尔值。
 
:* true
 
:* true
 
:* false
 
:* false
:Invalid examples:
+
:无效的例子:
 
:* "true"
 
:* "true"
 
:* "FALSE"
 
:* "FALSE"
Line 123: Line 122:
 
:* "1"
 
:* "1"
  
;'''String'''
+
;'''字符串'''
:Any valid JSON String is accepted.
+
:可接受任何有效的JSON字符串。
  
==== Sample Application ====
+
==== 应用样本 ====
You can take a look at [https://github.com/gelement-com/mqtt-ingestor-sample this GitHub repository] for a sample application to send data to Senfi's MQTT endpoint.
+
您可以查看[https://github.com/gelement-com/mqtt-ingestor-sample 此GitHub存储库]中的示例应用程序,该示例应用程序将数据发送到Senfi的消息队列遥测传输端点。
  
==== Publishing Strategy ====
+
==== 发布策略 ====
You can either choose to publish data to Senfi regularly (eg. every second), or only do so upon change in the metrics. In practice, it is recommended that you publish regularly. This is so that the system is able to tell when data has stopped coming in.
+
您可以选择定期(例如每秒)将数据发布到Senfi,也可以仅在参数有所更改时才发布。实际上,我们建议您定期发布数据,这样一来系统才能够告知数据是何时停止输入的。
  
In addition, you can choose to batch the sending of measurements to Senfi. For example, collect 50 measurements and then publish it in a single message. This may be useful if you have fast changing metrics. However, note that <tt>tm_source</tt> should represent when the measurement is sampled and not when it is sent.
+
此外,您可以选择批量发送测量值到Senfi。例如,收集50个测量,然后将其发布到单个消息中。此方法对于快速变化的参数很有效,但是请注意,<tt>tm_source</tt> 应该表示测量进行采样的时间,而不是发送的时间。
<span class="right">[[Adding_a_rule|Next: Adding a rule]]</span>
+
 
 +
 
 +
<span class="right">[[Adding_a_rule/zh-cn|下一页:添加规则]]</span>

Latest revision as of 12:22, 26 August 2020

Senfi监视并存储您现有系统中的时间序列数据。目前,Senfi提供了消息队列遥测传输接口,以便接收您系统的数据。若要开始向Senfi发送数据,您需要执行以下操作:

  1. 在内容管理系统中创建integration key
  2. 在内容管理系统中设计和创建测量
  3. 编写程序以从您的系统中读取数据并将其发送到Senfi的消息队列遥测传输端点

创建integration key

  1. 登录内容管理系统
  2. 转到开发人员>集成选项卡
  3. 单击 + 按钮添加一对新的integration key/secret。
  4. 记下integration keysecret的值

设计/创建测量

成功集成的关键是拥有精心设计的测量。 因此,如果您不熟悉测量/参数/标签的概念,请先阅读本节

  1. 在设计代表系统的测量时,请记下要捕获的参数。
  2. 确定要使用的一组标签。确保有一个标签组合,可以唯一地标识输出这些参数的单元/仪器/设备。
  3. 登录内容管理系统
  4. 转到测量选项卡。
  5. 单击 + 按钮添加新测量。
  6. 给测量起一个描述性的名字。这将显示给仪表板的用户。
  7. 指定。测量码.
  8. 添加标签
  9. 添加参数并指定每个参数的类型。
  10. 完成后保存。

发布到消息队列遥测传输

典型的集成遵循此模式:

  外部系统 --> 您的应用程式 --> 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 应该表示测量进行采样的时间,而不是发送的时间。


下一页:添加规则