示例-对象状态

Z 参数, 常在PC端、APP上作为对象状态使用。

  • Z=0 停止/关机
  • Z=1 运行/开机
  • Z=2,3,4…… 其他/离线

案例1-终端有上报数据的写法

[
    ["Z1","","开关机状态","STA","$AprusID-1","L1_3_4877","","",{"expire_time": "1h","default_value": 2}],
    ["Z", "","设备状态",  "STA","$AprusID-1","L1_3_4877","isnull(Z1)?2:(Z1==1?1:(Z1==0?0:2))","",{"expire_time": "1h"}]
]

说明:

Z参数配置:

  1. 当适配器 L1_3_4877 有上报,会触发表达式1 "isnull(Z1)?2:(Z1==1?1:(Z1==0?0:2))",对Z 值 赋值更新;
  2. 当表达式1中 Z1 值有更新,Z也会被触发更新;
  3. 如适配器未上报过数据,Z 是空值,因为没有触发赋值

案例2-终端有无报数据均可的写法

[
    ["Z1","","开关机状态","STA","$AprusID-1","L1_3_4877","","",{"expire_time": "1h","default_value": 2}],
    ["Z", "","设备状态",  "AGT",{"event":"timer_event","block":"agent","type":"one_minute_event"},"uniqueid","isnull(Z1)?2:(Z1==1?1:(Z1==0?0:2))","",{"expire_time": "1h"}]
]

说明:

Z参数配置,每1分钟(one_minute_event) ,会触发表达式1 "isnull(Z1)?2:(Z1==1?1:(Z1==0?0:2))",对Z 值赋值更新; 同样如 表达式1中 Z1 有更新也会触发对Z 值赋值更新;

案例3-设备状态最全判断

Z值如下:

  • 0 停机 (适配器在线,按采集数据判断为停机)
  • 1 开机 (适配器在线,按采集数据判断为开机)
  • 2 数据中断 (适配器在线,但采集不到数据)
  • 3 离线 (适配器不在线)
  • 4 未知 (未知)

映射表如下:

[
    ["Z1", "", "开关机状态","STA", "$AprusID-1","L1_3","","",{"expire_time": "1m","default_value": 4}],
    ["csq","", "CSQ",       "STA", "$AprusID-1","csq", "","",{"expire_time": "1m","default_value": 4}],
    ["Z",  "", "设备状态",  "AGT",{"event":"timer_event","block":"agent","type":"one_minute_event"},"uniqueid","(isnull(csq)?3 : (isnull(Z1)? 2 : Z1))","",{"expire_time": "1m"}]
]

说明:

  1. 适配器csq 30s上报一次。可以认为是适配器在线并有上报状态
  2. 示例中,适配器L1_3 就是设备开关机状态(0-停机、1-开机,无其他状态)
  3. L1_3 未上报,超过1m即1分钟,Z1数值被清空(不是空字符串,空值可通过isnull判断),空字符串可通过Z1=="" 判断

附录:Key及LogicExpr1触发说明

[FV/Code, LabelEn, LabelLocal, Category, Channel, Key, LogicExpr1, LogicExpr2,PublicParams]

当适配器 Key 有上报或 LogicExpr1 表达式中有参数更新,则FV才会触发FV更新

文档更新时间: 2024-06-07 09:48   作者:技术支持