You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FIWARE OPC UA IoT Agent对接Cygnus写入PostgreSQL无数据排查求助

解决方案

先明确你关心的两个基础问题

  1. Cygnus 不需要你手动预先创建数据库和表,只要配置正确、能正常接收Orion的通知,收到第一条数据时会自动创建对应的库表结构。
  2. OPC UA IoT Agent 不需要直接和Cygnus对接,数据流转逻辑是:IoT Agent上报数据到Orion → Orion通过配置的订阅规则,把上下文更新推送给Cygnus → Cygnus写入PostgreSQL,所以你缺失的核心配置是Orion的订阅规则。

具体排查与配置步骤

步骤1:给Orion配置向Cygnus推送数据的订阅

向Orion的1026端口发送如下订阅请求,监听所有实体的更新并推送给Cygnus:

curl -X POST 'http://localhost:1026/v2/subscriptions' \
-H 'Content-Type: application/json' \
-d '{
  "description": "推送所有实体更新到Cygnus",
  "subject": {
    "entities": [{"idPattern": ".*"}]
  },
  "notification": {
    "http": {
      "url": "http://cygnus:5055/notify"
    },
    "attrsFormat": "legacy"
  }
}'

注意:如果你在对接时使用了Fiware多租户配置,需要在请求头中加上对应的Fiware-Service和Fiware-ServicePath参数,否则订阅只会在默认租户下生效。attrsFormat必须设置为legacy才能适配当前版本Cygnus的解析要求。

步骤2:补充Cygnus缺失的必要配置

你当前的docker-compose.yml中Cygnus的环境变量缺少几个必填参数,在cygnus服务的environment块补充如下配置:

# 新增配置项
- CYGNUS_POSTGRESQL_DEFAULT_TTL=0
- CYGNUS_POSTGRESQL_DEFAULT_DATA_MODEL=db-by-service-path
- CYGNUS_HTTP_MAX_CONNECTIONS=100
- CYGNUS_HTTP_MAX_CONNECTIONS_PER_ROUTE=100

参数说明:

  • CYGNUS_POSTGRESQL_DEFAULT_DATA_MODEL 指定数据存储模型,db-by-service-path表示按租户服务路径拆分数据库,是最常用的配置
  • CYGNUS_POSTGRESQL_DEFAULT_TTL=0 表示数据永久存储,不会自动过期

修改配置后重启Cygnus服务生效:docker-compose restart cygnus

步骤3:验证全链路数据流转

等待OPC UA模拟服务器生成新的数值更新后,按以下顺序验证:

  1. 查看Orion日志,确认有发送通知到cygnus:5055的请求记录,没有报错
  2. 查看Cygnus日志,确认有收到Orion的通知请求,且没有PostgreSQL写入的报错信息
  3. 进入PostgreSQL容器执行以下命令查看数据:
    # 进入postgres命令行
    psql -U postgres
    # 查看所有数据库,默认会生成名为default_/的数据库(未配置多租户的情况)
    \l
    # 进入对应数据库
    \c "default_/"
    # 查看生成的表,表名和你OPC UA设备的实体ID对应
    \dt
    

配置完成后就能看到自动生成的表和对应的历史数据。


内容的提问来源于stack exchange,提问作者Navurt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:06:04