动作节点
操作节点根据传入的消息执行各种操作。
数学函数节点
自 YiCONNECT 版本 3.4.2 起 |
---|
规则节点应用数学函数并将结果保存到消息或数据库中。请参阅下表支持的功能:
功能 | 参数数量 | 描述 | 参考 |
---|---|---|---|
添加 | 2 | x + y | |
子系统 | 2 | 坐标 | |
多特 | 2 | x * y | |
DIV | 2 | x / y | |
罪 | 1 | 返回角度的三角正弦值。 | 数学正弦 |
新加坡国立大学 | 1 | 返回双精度值的双曲正弦值。x 的双曲正弦定义为 ( e x - e * -x )/2,其中e*是欧拉数。 | 数学正弦 |
COS | 1 | 返回角度的三角余弦值。 | 数学cos |
委员会 | 1 | 返回双精度值的双曲余弦。x 的双曲余弦定义为 ( ex + e -x )/2,其中e是欧拉数。^^ | 数学科什 |
谭 | 1 | 返回角度的三角正切值。 | 数学坦 |
TANH | 1 | 返回双精度值的双曲正切。 | 正切函数 |
亚科斯 | 1 | 返回值的反余弦值;返回的角度范围为0.0到 pi 。 | 数学库 |
亚信 | 1 | 返回一个值的反正弦值;返回的角度在-pi/2到pi/2范围内。 | 数学阿辛 |
晒黑 | 1 | 返回值的反正切值;返回的角度在 -pi/2 到 pi/2 范围内。 | 玛塔坦 |
阿塔恩2 | 2 | 返回直角坐标 (x, y) 到极坐标 (r, theta) 转换得到的角度 theta。 | 数学atan2 |
经验值 | 1 | 返回值e * x ,其中e*是自然对数的底数。 | 数学表达式 |
EXPM1 | 1 | 返回e x -1。请注意,对于接近 0 的 x 值,expm1(x) + 1 的精确总和比 exp(x) 更接近e x的真实结果。 | 数学.expm1 |
平方根RT | 1 | 返回双精度值的正确舍入正平方根。 | 数学开方 |
CBRT | 1 | 返回双精度值的立方根。 | 数学cbrt |
获取_EXP | 1 | 返回用于表示双精度数的无偏指数。 | Math.getExponent |
海波特 | 2 | 返回 sqrt(x2 +y2),没有中间溢出或下溢。 | Math.getExponent |
日志 | 1 | 返回双精度值的自然对数(以 e 为底)。 | 数学日志 |
日志10 | 1 | 返回双精度值的以 10 为底的对数。 | 数学.log10 |
日志1P | 1 | 返回参数与 1 之和的自然对数。请注意,对于较小的值 x,log1p(x) 的结果比 log( 的浮点计算更接近 ln(1 + x) 的真实结果1.0+x)。 | 数学.log1p |
CEIL | 1 | 返回大于或等于参数且等于数学整数的最小(最接近负无穷大)双精度值。 | 数学细胞 |
地面 | 1 | 返回小于或等于参数且等于数学整数的最大(最接近正无穷大)双精度值。 | 数学底板 |
FLOOR_DIV | 2 | 返回小于或等于代数商的最大(最接近正无穷大)长整型值。 | 数学.floorDiv |
楼层_MOD | 2 | 返回长参数的下取整模数。 | 数学.floorMod |
ABS | 1 | 返回双精度值的绝对值。 | 数学abs |
最小 | 2 | 返回两个双精度值中较小的一个。 | 数学最小值 |
最大限度 | 2 | 返回两个双精度值中较大的一个。 | 数学最大值 |
战俘 | 2 | 返回第一个参数的第二个参数次方的值。 | 数学pow |
签名 | 1 | 返回参数的正负号函数;如果参数为零,则为零;如果参数大于零,则为 1.0;如果参数小于零,则为 -1.0。 | 数学符号 |
RAD | 1 | 将以度为单位的角度转换为以弧度为单位的近似相等的角度。 | 数学转弧度 |
二甘醇 | 1 | 将以弧度为单位的角度转换为以度为单位的近似等效角度。 | 数学到学位 |
风俗 | 1-16 | 使用此函数指定复杂的数学表达式。例如,使用 (x - 32) / 1.8) 将华氏温度转换为摄氏度 | 指数4j |
您可以使用 5 种类型的参数:
- 持续的;
- 来自消息体的值;
- 来自消息元数据的值;
- 属于消息发起者(设备、资产等)的属性值。值应该是数字类型或可转换为浮点数的字符串;
- 属于消息发起者(设备、资产等)的最新时间序列的值。值应该是数字类型或可转换为浮点数的字符串;
此规则节点的主要用例是从数据库中获取一个或多个值,并根据消息中的数据修改它们。例如,您可以totalWaterConsumption
根据deltaWaterConsumption
设备报告的情况增加。
script
替代用例是用更轻量级和高性能的实现替换简单的 JS节点。例如,您可以使用 CUSTOM 运算和表达式: (x - 32) / 1.8) 将华氏温度转换为摄氏度 ( C = (F * - 32) / 1.8 )* 。
执行在消息发起者(例如设备)和服务器节点的范围内同步。如果不同规则链中有规则节点,它们将在服务器节点范围内同步处理来自同一发起者的消息。
该函数的结果可以被添加到消息主体或元数据中。您还可以将结果作为属性或时间序列保存到数据库中。
创建报警节点
自 YiCONNECT 2.0 版本以来 |
---|
该节点尝试加载最新的警报,并为消息发起者配置了 警报类型 。如果存在未清除的警报,则更新该警报,否则创建新的警报。
节点配置:
- 警报详细信息生成器脚本
- 警报类型 - 表示警报类型的任何字符串
- 警报严重性 - {严重 | 专业| 次要| 警告| 不定}
- is Propagate - 警报是否应传播到所有父级相关实体。
注意:从 YiCONNECT 版本 2.3.0 开始,规则节点能够:
注意:从 YiCONNECT 版本 2.4.3 开始,规则节点能够:
用于生成警报详细信息 JsonNode 的警报详细信息生成器脚本。它对于在警报内存储附加参数非常有用。例如,您可以保存原始消息负载或元数据中的属性名称/值对。
警报详细信息生成器脚本应返回详细信息对象。
- 消息有效负载可以通过属性访问
msg
。例如msg.temperature
- 可以通过属性访问消息元数据
metadata
。例如metadata.customerName
- 消息类型可以通过属性访问
msgType
。例如msgType
可选: 可以通过 访问之前的警报详细信息metadata.prevAlarmDetails
。如果先前的警报不存在,则该字段将不会出现在元数据中。 请注意, 这 metadata.prevAlarmDetails
是一个原始字符串字段,需要使用以下构造将其转换为对象:
var details = {};
if (metadata.prevAlarmDetails) {
details = JSON.parse(metadata.prevAlarmDetails);
}
警报详细信息构建器脚本功能可以使用测试 JavaScript 功能进行验证。
详细信息生成器函数示例
该函数获取count
先前警报的属性并递增它。还将入temperature
站消息有效负载中的属性放入警报详细信息中。
var details = {temperature: msg.temperature, count: 1};
if (metadata.prevAlarmDetails) {
var prevDetails = JSON.parse(metadata.prevAlarmDetails);
if(prevDetails.count) {
details.count = prevDetails.count + 1;
}
}
return details;
使用这些属性创建/更新警报:
- 警报详细信息 - 从警报详细信息生成器脚本返回的对象
- 警报状态 - 如果有 新警报 -> ACTIVE_UNACK 。如果 现有警报 -> 未更改
- 严重性 - 节点配置中的值
- 传播 - 来自节点配置的值
- 警报类型 - 节点配置中的值
- 闹钟开始时间 - 如果有 新闹钟 -> 当前系统时间 。如果 现有警报 -> 未更改
- 闹钟结束时间-当前系统时间
出站消息将具有以下结构:
- 消息类型 - 警报
- 发起者 - 与入站消息相同的发起者
- 负载 - 创建/更新的新警报的 JSON 表示
- 元数据 - 原始消息元数据中的所有字段
创建新警报后,出站消息将在元数据中包含附加属性 - isNewAlarm值为 真 。消息将通过Created链传递。
现有警报更新后,出站消息将在元数据中包含附加属性 - isExistingAlarm值为 真 。消息将通过更新链传递。
以下是出站消息有效负载的示例
{
"tenantId":{
"entityType":"TENANT",
"id":"22cd8888-5dac-11e8-bbab-ad47060c9bbb"
},
"type":"High Temperature Alarm",
"originator":{
"entityType":"DEVICE",
"id":"11cd8777-5dac-11e8-bbab-ad55560c9ccc"
},
"severity":"CRITICAL",
"status":"ACTIVE_UNACK",
"startTs":1526985698000,
"endTs":1526985698000,
"ackTs":0,
"clearTs":0,
"details":{
"temperature":70,
"ts":1526985696000
},
"propagate":true,
"id":"33cd8999-5dac-11e8-bbab-ad47060c9431",
"createdTime":1526985698000,
"name":"High Temperature Alarm"
}
有关 YiCONNECT 中警报的更多详细信息,请参阅本教程
清除报警节点
自 YiCONNECT 2.0 版本以来 |
---|
该节点加载最新的警报,并为消息发起者配置了 警报类型 ,并清除警报(如果存在)。
节点配置:
- 警报详细信息生成器脚本
- 警报类型 - 表示警报类型的任何字符串
注意:从 YiCONNECT 版本 2.3.0 开始,规则节点能够使用带有消息元数据字段的模式来获取警报类型:
用于更新警报详细信息 JsonNode 的警报详细信息生成器脚本。它对于在警报内存储附加参数非常有用。例如,您可以保存原始消息负载或元数据中的属性名称/值对。
警报详细信息生成器脚本应返回详细信息对象。
- 消息有效负载可以通过属性访问
msg
。例如msg.temperature
- 可以通过属性访问消息元数据
metadata
。例如metadata.customerName
- 消息类型可以通过属性访问
msgType
。例如msgType
- 当前警报详细信息可通过 访问
metadata.prevAlarmDetails
。
请注意, 这 metadata.prevAlarmDetails
是一个原始字符串字段,需要使用以下构造将其转换为对象:
var details = {};
if (metadata.prevAlarmDetails) {
details = JSON.parse(metadata.prevAlarmDetails);
}
警报详细信息构建器脚本功能可以使用测试 JavaScript 功能进行验证。
详细信息生成器函数示例
该函数获取count
先前警报的属性并递增它。还将入temperature
站消息有效负载中的属性放入警报详细信息中。
var details = {temperature: msg.temperature, count: 1};
if (metadata.prevAlarmDetails) {
var prevDetails = JSON.parse(metadata.prevAlarmDetails);
if(prevDetails.count) {
details.count = prevDetails.count + 1;
}
}
return details;
该节点更新当前警报:
- 如果已确认,则将警报状态更改为CEARED_ACK,否则更改为CLEARED_UNACK
- 将清除时间设置为当前系统时间
- 使用从警报详细信息生成器脚本返回的新对象更新警报详细信息
如果警报不存在或已清除警报,则原始消息将通过False链传递到下一个节点。
否则新消息将通过Cleared链传递。
出站消息将具有以下结构:
- 消息类型 - 警报
- 发起者 - 与入站消息相同的发起者
- 有效负载 - 已清除警报的 JSON 表示形式
- 元数据 - 原始消息元数据中的所有字段。此外,还将添加元数据内的附加属性 -> isClearedAlarm ,其值为 true 。
以下是出站消息有效负载的示例
{
"tenantId":{
"entityType":"TENANT",
"id":"22cd8888-5dac-11e8-bbab-ad47060c9bbb"
},
"type":"High Temperature Alarm",
"originator":{
"entityType":"DEVICE",
"id":"11cd8777-5dac-11e8-bbab-ad55560c9ccc"
},
"severity":"CRITICAL",
"status":"CLEARED_UNACK",
"startTs":1526985698000,
"endTs":1526985698000,
"ackTs":0,
"clearTs":1526985712000,
"details":{
"temperature":70,
"ts":1526985696000
},
"propagate":true,
"id":"33cd8999-5dac-11e8-bbab-ad47060c9431",
"createdTime":1526985698000,
"name":"High Temperature Alarm"
}
有关 YiCONNECT 中警报的更多详细信息,请参阅本教程
延迟(已弃用)
自 YiCONNECT 2.1 版起 |
---|
将传入消息延迟可配置的时间。换句话说,节点接收消息,将其保留一段设定的时间,然后将其发送到下一个规则节点以采取进一步的操作。
配置
- 周期值 :告诉节点延迟多长时间的数字。例如,如果您在这里输入 5,则表示您希望节点等待 5 个单位时间。
- 周期时间单位 :您用于延迟周期的时间单位。可用值有:秒、分钟、小时。因此,当与周期值配对时,如果您为周期值选择 5,为周期时间单位选择秒,则节点将等待 5 秒。
- 最大挂起消息数 :限制节点一次可以延迟的消息数量。例如,如果设置像 1000 这样的数字,则意味着该节点一次最多可以延迟 1000 条消息。一旦达到此限制,任何新传入的消息都将通过失败连接类型进行路由,直到有可用空间。
注意 :周期值和周期时间单位字段支持模板化。
输出
- 成功 :如果消息延迟成功。
- 失败 :如果达到最大挂起消息数或在消息处理过程中发生意外错误。
注意 :传入消息在处理过程中不会被修改。
使用示例:等待外部长时间运行的任务
考虑以下场景:我们有一个启动长时间运行任务的外部 API。收到初始请求后,API 立即响应,表明任务已开始。但是,我们需要确保任务已完成,然后才能进行进一步处理。
带延迟节点的解决方案:
- 启动任务 :我们的规则链从 REST API 调用节点开始,该节点向外部 API 发出请求以启动长时间运行的任务。
- 立即接收响应 :外部API快速返回响应,确认任务已启动。
- 等待完成 :收到初始响应后,我们没有立即继续,而是将延迟节点引入到规则链中。该节点配置为引入 30 秒的等待,为外部任务完成提供时间。
- 继续处理 :延迟结束后,处理将恢复,可能涉及另一个 REST API 调用来检查长时间运行的任务的状态或检索结果,然后根据任务的完成状态继续执行规则链中的后续步骤。
通过这种方式使用延迟节点,我们可以处理由于外部依赖而无法立即处理的场景,从而确保消息处理更顺畅、更准确。
弃用
由于该节点临时将延迟消息存储在内存中(因此,当消息在处理时,它不是持久性的),因此如果 YiCONNECT 重新启动或节点配置更改,这些消息可能会丢失:这些操作会触发节点初始化,在此期间旧节点状态(保存当前延迟的消息)被清除并创建新的空消息。
笔记
顺序处理策略的使用:请注意,该节点确认传入消息,这将触发队列中下一条消息的处理。
生成器节点
自 YiCONNECT 2.0 版本以来 |
---|
生成具有可配置周期的消息。JavaScript 函数用于消息生成。
节点配置:
- 消息生成频率(以秒为单位)
- 消息发起者
- 将生成实际消息的 JavaScript 函数。
JavaScript 函数接收 3 个输入参数:
prevMsg
- 是先前生成的消息有效负载。prevMetadata
- 是先前生成的消息元数据。prevMsgType
- 是先前生成的消息类型。
脚本应返回以下结构:
{
msg: new payload,
metadata: new metadata,
msgType: new msgType
}
结果对象中的所有字段都是可选的,如果未指定,将从先前生成的消息中获取。
来自该节点的出站消息将是使用配置的 JavaScript 函数构造的新消息。
JavaScript 生成器功能可以使用测试 JavaScript 功能进行验证。
该节点可用于规则链调试目的。
日志节点
自 YiCONNECT 2.0 版本以来 |
---|
使用配置的 JavaScript 函数将传入消息转换为字符串,并将最终值记录到 YiCONNECT 日志文件中。
INFO日志级别用于记录日志。
JavaScript 函数接收 3 个输入参数
metadata
- 是消息元数据。msg
- 是消息有效负载。msgType
- 是消息类型。
脚本应返回字符串值。
JavaScript 转换功能可以使用Test JavaScript 函数进行验证。
RPC调用回复节点
自 YiCONNECT 2.0 版本以来 |
---|
向 RPC 调用发起者发送响应。所有传入的 RPC 请求都作为消息通过规则链传递。此外,所有 RPC 请求都有请求 ID 字段。它用于映射请求和响应。消息发起者必须是设备实体,因为 RPC 响应是向消息发起者发起的。
节点配置有特殊的请求ID字段映射。如果未指定映射,则默认使用requestId元数据字段。
RPC 请求可以通过不同的传输方式接收:
- MQTT
- HTTP协议
- 联合行动计划
消息负载示例:
{
"method":"setGpio",
"params":{
"pin":"23",
"value":1
}
}
在以下情况下,消息将通过故障链路由:
- 入站消息发起者不是设备实体
- 消息元数据中不存在请求 ID
- 入站消息负载为空
有关 RPC 在 YiCONNECT 中如何工作的更多详细信息,请阅读RPC 功能文章。
RPC调用请求节点
自 YiCONNECT 2.0 版本以来 |
---|
将 RPC 请求发送到设备并将响应路由到下一个规则节点。消息发起者必须是设备实体,因为 RPC 请求只能向设备发起。
节点配置有Timeout字段,用于指定等待设备响应的超时时间。
消息有效负载必须具有正确的 RPC 请求格式。它必须包含方法和参数字段。例子:
{
"method":"setGpio",
"params":{
"pin":"23",
"value":1
}
}
如果 Message Payload 包含requestId字段,则其值用于标识对设备的 RPC 请求。否则将生成随机 requestId。
出站消息将具有与入站消息相同的发起者和元数据。来自设备的响应将被添加到消息有效负载中。
在以下情况下,消息将通过故障链路由:
- 入站消息发起者不是设备实体
- 入站消息缺少方法或参数字段
- 如果节点在配置的超时期间未收到响应
否则消息将通过成功链路由。
有关 RPC 在 YiCONNECT 中如何工作的更多详细信息,请阅读RPC 功能文章。
保存属性节点
自 YiCONNECT 2.0 版本以来 |
---|
将传入消息有效负载的属性存储到数据库,并将它们与消息发起者标识的实体相关联。配置范围用于标识属性范围。
支持的范围类型:
- 客户端属性
- 共享属性
- 服务器属性
需要具有POST_ATTRIBUTES_REQUEST消息类型的消息。如果消息类型不是POST_ATTRIBUTES_REQUEST ,消息将通过故障链路由。
当通过现有 API(HTTP / MQTT / CoAP / 等)上传属性时,具有正确负载和类型的消息将被传递到根规则链的输入节点。
如果需要触发规则链内的属性保存,则应配置规则链以将消息负载转换为预期格式并将消息类型设置为 POST_ATTRIBUTES_REQUEST 。可以使用脚本转换节点来完成。
预期消息有效负载示例:
{
"firmware_version":"1.0.1",
"serial_number":"SN-001"
}
属性保存成功后,原始Message将通过Success链传递到下一个节点,否则使用Failure链。
保存时间序列节点
自 YiCONNECT 2.0 版本以来 |
---|
将传入消息有效负载中的时间序列数据存储到数据库,并将它们与消息发起者标识的实体关联。配置的TTL秒用于时间序列数据过期。0值意味着数据永远不会过期。
此外,如果“跳过最新持久性” 标志设置为 true ,您可以禁用更新最新时间序列数据(ts_kv_latest 表)的传入键的值。这对于高负载用例可能有助于减少数据库的压力。请注意,当用例不需要在仪表板上进行高级过滤时,可以启用此功能。为了获得最新值,可以使用 limit 1 和 DESC 顺序来获取历史数据。
需要具有POST_TELEMETRY_REQUEST消息类型的消息。如果消息类型不是POST_TELEMETRY_REQUEST ,消息将通过故障链路由。
当通过现有 API(HTTP / MQTT / CoAP / 等)发布时间序列数据时,具有正确负载和类型的消息将被传递到根规则链的输入节点。
如果需要触发规则链内的时间序列数据保存,则应将规则链配置为将消息有效负载转换 为预期格式并将消息类型设置为 POST_TELEMETRY_REQUEST 。可以使用脚本转换节点来完成。
消息元数据必须包含ts字段。该字段标识已发布遥测数据的时间戳(以毫秒为单位)。
此外,如果消息元数据包含TTL字段,则其值用于时间序列数据过期,否则 使用节点配置中的TTL 。
从 YiCONNECT 版本 3.3.3 开始, 您可以启用“useServerTs”参数来使用消息处理的时间戳,而不是消息中的时间戳。如果您合并来自多个源(设备、资产等)的消息,则对于各种顺序处理很有用。
在顺序处理的情况下,平台保证消息按照提交到队列的顺序进行处理。然而,由多个设备/服务器发起的消息的时间戳可能在它们被推送到队列之前很长时间不同步。如果新记录的时间戳早于前一条记录,则数据库层进行了某些优化,以忽略“属性”和“最新值”表的更新。
因此,为了确保所有消息都得到正确处理,应该为顺序消息处理场景启用此参数。
预期消息有效负载示例:
{
"values":{
"key1":"value1",
"key2":"value2"
}
}
时间序列数据保存成功后,原始消息将通过成功链传递到下一个节点,否则使用失败链。
保存到自定义表
自 YiCONNECT 版本 2.3.1 起 |
---|
节点将来自传入消息有效负载的数据存储到 Cassandra 数据库到应具有 cs_tb_ 前缀的预定义自定义表中,以避免数据插入到公共 YiCONNECT 表中。
请注意,该规则节点只能用于 Cassandra DB 。
配置:
管理员应设置不带前缀的自定义表名称: cs_tb_ 。
管理员可以配置消息字段名称和表列名称之间的映射。如果映射键为 $entityId ,即由消息发起者标识,则将消息发起者 id 写入相应的列名(映射值)。
如果消息数据中不存在指定的消息字段或者不是 JSON Primitive,则出站消息将通过Failure链进行路由,否则,消息将通过Success链进行路由。
注意 :请确保您没有在配置中使用元数据键 - 只能使用数据键。
分配给客户节点
自 YiCONNECT 2.2 版起 |
---|
将消息发起者实体分配给Customer。
允许使用以下消息发起者类型: Asset 、 Device 、 Entity View 、 Dashboard 。
按客户名称模式查找目标客户,然后将发起者实体分配给该客户。
如果新客户不存在,则创建新客户,并且如果不存在则创建新客户设置为 true 。
配置:
- 客户名称模式 - 可以设置直接客户名称或可以使用模式,该模式将使用消息元数据解析为真实的客户名称。
- 如果不存在则创建新客户 - 如果选中,将在不存在时创建新客户。
- 客户缓存过期时间 - 指定允许存储找到的客户记录的最大时间间隔(秒)。0 值意味着记录永远不会过期。
在以下情况下,消息将通过故障链路由:
- 当不支持发起者实体类型时。
- 目标客户不存在并且未选中 “如果不存在则创建客户” 。
在其他情况下,消息将通过成功链路由。
从客户节点取消分配
自 YiCONNECT 2.2 版起 |
---|
从Customer取消分配消息发起者实体。
允许使用以下消息发起者类型: Asset 、 Device 、 Entity View 、 Dashboard 。
按客户名称模式查找目标客户,然后取消分配该客户的发起者实体。
配置:
- 客户名称模式 - 可以设置直接客户名称或可以使用模式,该模式将使用消息元数据解析为真实的客户名称。
- 客户缓存过期时间 - 指定允许存储找到的客户记录的最大时间间隔(秒)。0 值意味着记录永远不会过期。
在以下情况下,消息将通过故障链路由:
- 当不支持发起者实体类型时。
- 目标客户不存在。
在其他情况下,消息将通过成功链路由。
创建关系节点
自 YiCONNECT 版本 2.2.1 起 |
---|
按类型和方向创建从选定实体到消息发起者的关系。
允许使用以下消息发起者类型: Asset 、 Device 、 Entity View 、 Customer 、 Tenant 、 Dashboard 。
通过元数据关键模式查找目标实体,然后在发起者实体和目标实体之间创建关系。
如果选择实体类型 资产 ,设备或客户 规则节点将创建新实体(如果不存在)并选中复选框: 创建新实体(如果不存在) 。
注意: 如果选择实体类型资产或 设备, 则需要设置两种模式:
- 实体名称模式;
- 实体类型模式。
否则,仅应设置名称模式。
配置:
- 方向 - 允许以下类型: From 、 To 。
- 关系类型 - 与消息发起者实体的定向连接的类型。可以从下拉列表中选择默认类型 “包含” 和“管理” 。
- 名称模式和 类型模式 - 可以设置直接实体名称/类型,也可以使用模式,这将使用消息元数据解析为真实的实体名称/类型。
- 实体缓存过期时间 - 指定允许存储找到的目标实体记录的最大时间间隔(以秒为单位)。0 值意味着记录永远不会过期。
在以下情况下,消息将通过故障链路由:
- 当不支持发起者实体类型时。
- 目标实体不存在。
在其他情况下,消息将通过成功链路由。
注意: 从 YiCONNECT 版本 2.3 开始,规则节点能够:
删除关系节点
自 YiCONNECT 版本 2.2.1 起 |
---|
按类型和方向删除选定实体与消息发起者的关系。
允许使用以下消息发起者类型: Asset 、 Device 、 Entity View 、 Customer 、 Tenant 、 Dashboard 。
通过实体名称模式查找目标实体,然后删除发起者实体与该实体之间的关系。
配置:
- 方向 - 允许以下类型: From 、 To 。
- 关系类型 - 与消息发起者实体的定向连接的类型。可以从下拉列表中选择默认类型 “包含” 和“管理” 。
- 名称模式 - 可以设置直接实体名称或可以使用模式,该模式将使用消息元数据解析为真实实体名称。
- 实体缓存过期时间 - 指定允许存储找到的目标实体记录的最大时间间隔(以秒为单位)。0 值意味着记录永远不会过期。
在以下情况下,消息将通过故障链路由:
- 当不支持发起者实体类型时。
- 目标实体不存在。
在其他情况下,消息将通过成功链路由。
注意: 从 YiCONNECT 版本 2.3 开始,规则节点能够通过禁用规则节点配置中的以下复选框,删除从传入消息的发起者到指定实体或基于方向和类型的实体列表的关系:
GPS 地理围栏事件节点
自 YiCONNECT 版本 2.3.1 起 |
---|
通过基于 GPS 的参数生成传入消息。从传入消息数据或元数据中提取纬度和经度,并根据配置参数(地理围栏)返回不同的事件。
规则节点默认从消息元数据中获取周界信息。如果未选中 从消息元数据获取边界信息 ,则应配置其他信息。
从消息元数据中获取周界信息
根据周长类型,有两种区域定义选项:多边形和圆形
传入消息的元数据必须包括具有名称边界的密钥和以下数据结构:
- 多边形
[[latitude1,longitude1],[latitude2,longitude2], ... ,[latitudeN,longitudeN]]
- 圆圈
{"latitude":"value1","longitude":"value2","radius":"value3","radiusUnit":"KILOMETER"}
键 “纬度” 和 “经度” 是该点的坐标。
“半径” 键- 它是从坐标点到圆的距离。
这些键的所有值都是双精度浮点数据类型。
“radiusUnit” 键需要 METER 、 KILOMETER 、 FOOT 、 MILE 、NAUTICAL_MILE列表中的特定值(必须大写字母)。
从节点配置中获取周界信息
根据周长类型,有两种区域定义选项:
- 多边形
- 圆圈
事件类型
地理围栏规则节点管理 4 种类型的事件:
- 输入 — 每当传入消息的纬度和经度第一次属于所需的周边区域时进行报告;
- 左 — 当传入消息的纬度和经度第一次不属于所需的周界区域时进行报告;
- 内部和外部事件用于报告当前状态。
管理员可以配置报告内部或外部事件的持续时间阈值。例如,每当最小内部时间设置为 1 分钟时,消息发起者在进入该区域 60 秒后将被视为在周界内。最短外部时间定义了消息发起者也被视为在边界之外的时间。
在以下情况下将使用故障链:
- 传入消息在数据或元数据中没有配置的纬度或经度键。
- 缺少周长定义;
推送至云端
自 YiCONNECT 3.3 版本起 |
---|
将消息从边缘推送到云端。该节点仅在边缘使用,将消息从边缘推送到云端。一旦消息到达该节点,它将被转换为云事件并保存到本地数据库。Node 不会直接将消息推送到云端,而是将事件存储在云端队列中。支持下一个发起者类型:
- 设备
- 资产
- 实体视图
- 仪表板
- 租户
- 客户
- 边缘
节点还支持以下消息类型:
- POST_TELEMETRY_REQUEST
- POST_ATTRIBUTES_REQUEST
- ATTRIBUTES_UPDATED
- ATTRIBUTES_DELETED
- 警报
如果成功存储边缘事件到数据库消息,将通过成功路由进行路由。
在以下情况下,消息将通过故障链路由:
- 节点无法将边缘事件保存到数据库
- 到达了不受支持的发起者类型
- 到达了不支持的消息类型
推到边缘
自 YiCONNECT 3.3 版本起 |
---|
将消息从云端推送到边缘。消息发起者必须被分配给特定的边缘或者消息发起者是EDGE实体本身。该节点仅在云实例上使用,将消息从云推送到边缘。一旦消息到达该节点,它将被转换为边缘事件并保存到数据库中。Node 不会直接将消息推送到边缘,而是将事件存储在边缘队列中。支持下一个发起者类型:
- 设备
- 资产
- 实体视图
- 仪表板
- 租户
- 客户
- 边缘
节点还支持以下消息类型:
- POST_TELEMETRY_REQUEST
- POST_ATTRIBUTES_REQUEST
- ATTRIBUTES_UPDATED
- ATTRIBUTES_DELETED
- 警报
如果成功存储边缘事件到数据库消息,将通过成功路由进行路由。
在以下情况下,消息将通过故障链路由:
- 节点无法将边缘事件保存到数据库
- 到达了不受支持的发起者类型
- 到达了不支持的消息类型