Skip to content
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
品牌标识

AIRIOT智慧系统搭建平台经验交流

K

kzz

@kzz
关于
帖子
主题
群组
粉丝
关注

帖子

最新 最佳 有争议的

  • 可视化数据源中,对报警表做 恢复时间为空 判断时,页面报错。
    K kzz

    我这个components模块已经是最新的了吧

    image.png082b9513-e3e5-41a5-9b82-7a38838bd831-image.png


  • 设备表驱动。 db-driver,不能根据设备id关联数据点的值
    K kzz

    @Zhang书书 ok,确实是这样


  • 可视化数据源中,对报警表做 恢复时间为空 判断时,页面报错。
    K kzz

    请求:
    d92ca238-6113-4c85-870d-7341b454fc44-image.png 2b5bab65-f903-4fc4-b38f-1ae075438120-image.png

    分组随便选,汇总个数。
    c3cb141c-1884-49da-8deb-b5d10d1e015c-image.png 5fa40f95-eb11-4e26-999d-61d3dcd5bd7a-image.png 5c7933f8-7970-4ae0-a82c-8de9d2a9b938-image.png

    版本:
    a311888e-563b-444f-bc58-b7cac365c7e7-image.png 0750e39d-0e51-44d9-bf74-770fe0ba1655-image.png 92c8036b-7ae9-4c6e-b3bb-864db9a5fc94-image.png


  • 设备表驱动。 db-driver,不能根据设备id关联数据点的值
    K kzz

    @Zhang书书 只能远程

    kale邀请您进行远程控制
    ToDesk设备代码:988 014 971
    临时密码:gjp9jtj8
    点击链接直接进行远程控制:
    https://wechat.todesk.com/invite-page?id=hJQ9Rvsw7heBSTkkn-ejF


  • 可视化数据源中,对报警表做 恢复时间为空 判断时,页面报错。
    K kzz

    可视化,数据源中对报警表做 恢复时间为空 判断时,页面报错。
    sql语句报错

    0563199f-1a6b-4cca-a75f-2faefd5e7e06-image.png
    2943a00b-e7a4-48c3-92a5-39760df0c8ae-image.png


  • 设备表驱动。 db-driver,不能根据设备id关联数据点的值
    K kzz

    这样的

    image.png

    image.png


  • 设备表驱动。 db-driver,不能根据设备id关联数据点的值
    K kzz

    设备表驱动。
    db-driver数据库驱动,不能自动根据设备id去过滤值
    我在驱动配置里面设置了对的id字段

    ae3d81d7-1398-4045-a543-6ee4f77ce54f-image.png
    61c3a0c7-5d2c-4f4f-8fc3-456ba58c349e-image.png
    点位
    b47de385-dcac-49f6-8388-578865fbac79-image.png

    配置好对应设备编号
    5fd9b54c-0d3d-4ab8-b6f6-913b26099b67-image.png

    D1308设备下的数据点值,没有和设备编号有关联。
    0b42a520-5400-4876-91a9-9f07026e6558-image.png
    12af7b96-b26b-485e-ad21-d55d0986e7b4-image.png

    驱动版本
    66e7d650-5596-411b-b9ec-90b12bb1b57c-image.png


  • 【记录一下】获取报警时长计算
    K kzz

    这个帖子是笔记,防止我自己忘记。
    我的项目是6488246bd7c5cfb28a4405c1,如果你能看懂就可以操作,
    如果看不懂,请在他人协助下完成以下操作。

    获取报警恢复耗时计算。
    报警恢复时间/时长统计。报警持续时间统计。

    这是说明:
    
    一个报警事件 = 从异常开始,到异常恢复的整个连续过程
    
    无论中间触发多少次提醒,只要属于同一异常持续过程,就只算 一次报警。
    
    查询通过以下规则进行“报警压缩”:
    
    按 ruleid + desc + table + tableData 分组
    
    如果时间间隔未超过 1.2 × interval,则认为仍属于同一次报警
    
    如果前一条已恢复,则视为新报警
    
    超过 1.2 × interval,则视为新报警
    

    方法一:直接运行sql语句查询报警数据表。
    直接查询报警数据表,查询出每次报警恢复耗时。

    /* ============================================================
       报警压缩 + 自动计算恢复时间 + 计算恢复时长(单位:秒)
    
       逻辑说明:
       1. 按 ruleid + desc + table + tableData 分组
       2. 判断是否为新报警段:
            - 第一条数据
            - 前一条已经物理恢复
            - 时间间隔 > 1.2 × interval(interval 单位:秒)
       3. 通过窗口累计求和生成分段ID
       4. 每段聚合出:
            - 报警开始时间 start_time
            - 报警结束时间 end_time
            - 记录条数 alarm_count
       5. 计算最终恢复时间
       6. 计算恢复持续时长(秒)
    
       注意:
       interval 字段单位为 秒
       ============================================================ */
    
    WITH base AS (
    
        /* ========================================================
           取同组内上一条报警时间和恢复时间
           ======================================================== */
        SELECT *,
            LAG("time") OVER (
                PARTITION BY ruleid, "desc", "table", "tableData"
                ORDER BY "time"
            ) AS prev_time,
    
            LAG("recoveryTime") OVER (
                PARTITION BY ruleid, "desc", "table", "tableData"
                ORDER BY "time"
            ) AS prev_recovery
    
        FROM "6488246bd7c5cfb28a4405c1".warning
    ),
    
    /* ============================================================
       判断是否为新报警段
       ============================================================ */
    mark AS (
        SELECT *,
    
            CASE
                WHEN prev_time IS NULL THEN 1
    
                WHEN prev_recovery IS NOT NULL
                     AND prev_recovery <= "time"
                     THEN 1
    
                WHEN EXTRACT(EPOCH FROM ("time" - prev_time))
                     > ("interval" * 1.2)
                     THEN 1
    
                ELSE 0
            END AS is_new_group
    
        FROM base
    ),
    
    /* ============================================================
       生成报警分段ID
       ============================================================ */
    grp AS (
        SELECT *,
            SUM(is_new_group) OVER (
                PARTITION BY ruleid, "desc", "table", "tableData"
                ORDER BY "time"
            ) AS grp_id
        FROM mark
    ),
    
    /* ============================================================
       按分段ID进行聚合
       ============================================================ */
    agg AS (
        SELECT
            ruleid,
            "desc",
            "table",
            "tableData",
            grp_id,
    
            MIN("time") AS start_time,
            MAX("time") AS end_time,
    
            /* 段内最大恢复时间 */
            MAX("recoveryTime") AS max_recovery,
    
            COUNT(*) AS alarm_count
    
        FROM grp
        GROUP BY
            ruleid, "desc", "table", "tableData", grp_id
    ),
    
    /* ============================================================
       计算最终恢复时间
       ============================================================ */
    final_result AS (
        SELECT
            ruleid,
            "desc",
            "table",
            "tableData",
            grp_id,
            start_time,
            end_time,
            alarm_count,
    
            /* 有恢复时间就用恢复时间,否则用 end_time */
            COALESCE(max_recovery, end_time) AS final_recovery_time
    
        FROM agg
    )
    
    /* ============================================================
       最终输出
       ============================================================ */
    SELECT
        ruleid,
        "desc",
        "table",
        "tableData",
        grp_id,
    
        start_time,
        end_time,
        alarm_count,
    
        final_recovery_time,
    
        /* 恢复持续时长(单位:秒) */
        CAST(
            EXTRACT(EPOCH FROM (final_recovery_time - start_time))
        AS BIGINT) AS recovery_seconds
    
    FROM final_result
    
    ORDER BY
        ruleid,
        "desc",
        "table",
        "tableData",
        start_time;
    

    方法二、
    如果报警数据归档了,又想查询全部报警数据,需要创建两个视图来实现。
    方法二第一步:

    /* 创建全部报警数据视图 */
    CREATE OR REPLACE VIEW "6488246bd7c5cfb28a4405c1".warning_all AS
    
    SELECT
        id::text                     AS id,
        level,
        uid,
        type,
        status,
        processed,
        "desc",
        audio,
        interval,
        ruleid,
        remark,
        "table",
        "tableData",
        fields,
        "recoveryFields",
        "time",
        "recoveryTime",
        "confirmTime",
        "handleTime",
        other,
        "warnTag",
        "timesOfPlay",
        handle,
        alert,
        "handleUser",
        "confirmUser",
        "warnMode",
        "broadcastContent",
        "broadcastVoice",
        "audioAlert",
        "i18nProp"
    FROM "6488246bd7c5cfb28a4405c1".warning
    
    UNION ALL
    
    SELECT
        id::text                     AS id,
        level,
        uid,
        type,
        status,
        processed,
        "desc",
        audio,
        interval,
        ruleid,
        remark,
        "table",
        "tableData",
        fields,
        "recoveryFields",
        "time",
        "recoveryTime",
        "confirmTime",
        "handleTime",
        other,
        "warnTag",
        "timesOfPlay",
        handle,
        alert,
        "handleUser",
        "confirmUser",
        "warnMode",
        "broadcastContent",
        "broadcastVoice",
        "audioAlert",
        "i18nProp"
    FROM "6488246bd7c5cfb28a4405c1".warning_archive;
    

    方法二第二步:

    /* 创建报警恢复时间统计视图 */
    CREATE OR REPLACE VIEW "6488246bd7c5cfb28a4405c1".warning_recovery_view AS
    
    WITH base AS (
        /* ========================================================
           取同组内上一条报警时间和恢复时间
           LAG() 返回当前行的前一条数据
           ======================================================== */
        SELECT *,
            LAG("time") OVER (
                PARTITION BY ruleid, "desc", "table", "tableData"
                ORDER BY "time"
            ) AS prev_time,
    
            LAG("recoveryTime") OVER (
                PARTITION BY ruleid, "desc", "table", "tableData"
                ORDER BY "time"
            ) AS prev_recovery
    
        FROM "6488246bd7c5cfb28a4405c1".warning_all
    ),
    
    mark AS (
        /* ========================================================
           判断是否为新报警段
           is_new_group = 1 表示当前记录是新报警段起始
           ======================================================== */
        SELECT *,
            CASE
                /* 第一条记录必定是新段 */
                WHEN prev_time IS NULL THEN 1
    
                /* 前一条已恢复,并且恢复时间早于当前报警时间 */
                WHEN prev_recovery IS NOT NULL
                     AND prev_recovery <= "time"
                     THEN 1
    
                /* 与上一条时间间隔超过 1.2 × interval */
                WHEN EXTRACT(EPOCH FROM ("time" - prev_time))
                     > ("interval" * 1.2)
                     THEN 1
    
                /* 否则属于同一报警段 */
                ELSE 0
            END AS is_new_group
        FROM base
    ),
    
    grp AS (
        /* ========================================================
           生成报警分段ID
           SUM(is_new_group) 累加,得到 grp_id,表示连续报警段
           ======================================================== */
        SELECT *,
            SUM(is_new_group) OVER (
                PARTITION BY ruleid, "desc", "table", "tableData"
                ORDER BY "time"
            ) AS grp_id
        FROM mark
    ),
    
    agg AS (
        /* ========================================================
           按分段ID聚合报警信息
           ======================================================== */
        SELECT
            ruleid,
            "desc",
            "table",
            "tableData",
            grp_id,
    
            /* 本段报警起始时间 */
            MIN("time") AS start_time,
    
            /* 本段报警最后触发时间 */
            MAX("time") AS end_time,
    
            /* 段内最大恢复时间,可能为批量确认 */
            MAX("recoveryTime") AS max_recovery,
    
            /* 本段记录条数 */
            COUNT(*) AS alarm_count
    
        FROM grp
        GROUP BY
            ruleid, "desc", "table", "tableData", grp_id
    )
    
    SELECT
        ruleid,
        "desc",
        "table",
        "tableData",
        grp_id,
    
        start_time,        -- 报警开始时间
        end_time,          -- 报警最后触发时间
        alarm_count,       -- 本段记录条数
    
        /* ========================================================
           最终恢复时间:
           - 有恢复时间使用 max_recovery
           - 无恢复时间(单条或多条)使用 end_time
           ======================================================== */
        COALESCE(max_recovery, end_time) AS final_recovery_time,
    
        /* ========================================================
           恢复持续时长(秒)
           final_recovery_time - start_time
           ======================================================== */
        CAST(
            EXTRACT(EPOCH FROM (COALESCE(max_recovery, end_time) - start_time))
        AS BIGINT) AS recovery_seconds
    
    FROM agg
    
    ORDER BY
        ruleid,
        "desc",
        "table",
        "tableData",
        start_time;
    

  • 角色管理里面,数据表记录权限取消不掉
    K kzz

    @核桃酥 在 角色管理里面,数据表记录权限取消不掉 中说:

    有外网地址吗?@kzz

    没有,只能远程。
    我的识别码:1610391542
    m183cr
    使用向日葵即可对我发起远程协助
    向日葵下载地址:http://url.oray.com/tGJdas/


  • 角色管理里面,数据表记录权限取消不掉
    K kzz

    @核桃酥 在 角色管理里面,数据表记录权限取消不掉 中说:

    你是在表记录选择里面,取消选中的一个表记录,点击确认,然后点击外层的保存后,在编辑这个角色,刚刚取消的那个选中状态 又变成选择了吗?

    是这样的,而且相关用户登录之后,确实还能看到表记录。


  • 角色管理里面,数据表记录权限取消不掉
    K kzz

    角色管理里面,表管理的数据表记录,权限可以添加但是不能取消,取消之后还在。
    (只发现这个,其他权限没有测试。)

    ff0bb02b-6094-4849-b395-b4f3c0d4566e-image.png

    58556ea1-d7c2-40e7-beda-dc65e01cc7a2-image.png

    a79db808-eb8c-4ea4-8028-b9d9103208d0-image.png


  • 设备表怎么关联部门
    K kzz

    ok,有效果

    image.png


  • 设备表怎么关联部门
    K kzz

    设备表怎么关联部门,使用关联字段也不行,字段名定义为什么,关联之后报警表的所属部门还是空的(主要目的)


  • 设备驱动提示,根据驱动id及实例组id查询设备数据失败
    K kzz

    最近换了授权文件之后导致的。没有在项目内上传。
    在项目内上传的驱动授权文件 后 问题解决了
    谢谢


  • 设备驱动提示,根据驱动id及实例组id查询设备数据失败
    K kzz

    设备驱动的授权显示,驱动授权无效,机器码不匹配,其他授权都是正常的,就设备驱动授权,上传也是显示ok,,但使用起来报错,可以帮忙看一下吗
    机器码没有变化,其他模块,和modbus驱动正常,只是部分驱动7a556e92fed851c3af659daac79d2a4.png 报错。

    04af45e3-c1c6-49ad-a270-33f1504d43ef-image.png 8f4198282e6f2fd389710606c643743.png ed3087b56bd93ad3ea9ece7734e0eba.png


  • 3.0平台服务报错
    K kzz

    windows空间版的


  • 3.0平台服务报错
    K kzz

    更新了一部分服务。
    有些服务官网没有,这个也没有
    image.png


  • 3.0平台服务报错
    K kzz

    @Zhang书书 这样的,一样的
    image.png


  • 3.0平台服务报错
    K kzz

    3.0平台服务报错,怎么解决,现在也不能更新官网没有安装包

    0b643d6f-24fc-4bd8-a78c-342c698c8bbd-image.png
    39346669-cc0e-4822-875e-b9b02d1b03ad-image.png
    63ca203b-2ec5-4c8a-8a0e-a6ff3f30678b-image.png


  • data-service-driver 数据接口服务异常
    K kzz

    经过测试发现,问题原因。
    如果接口设置了参数变量和默认值。需要在表配置中增加 请求参数。
    如果接口参考使用了固定值则表配置中不用填写 请求参数。
    其他无影响。
    image.png
    image.png

  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组