【问题标题】:Orion mosquitto JSON dataOrion mosquitto JSON 数据
【发布时间】:2022-11-12 00:29:40
【问题描述】:

我对 Orion Context Broker 有一些问题。我正在使用树莓派将 JSON 数据发布到作为 docker 容器运行的 mosquitto 代理。我可以从发布者那里接收数据,代理应该将数据传递给 Orion 上下文代理。我创建了一个这样的实体:

curl localhost:1026/v2/entities -s -S -H 'Content-Type: application/json' -d @- <<EOF
{
  "id": "SensTemp",
  "type": "Sensor",
  "temperature": {
     "value": 28,
     "type": "Float"
   }
 }
EOF

我可以使用 curl 命令手动更新温度值而不会出现任何问题。问题是我的 mosquitto 容器中的数据没有进入 Orion Context Broker。这是我的码头集装箱:

version: "3.3"
services:

          mongo-db:
            image: mongo:3.6
            hostname: mongo-db
            container_name: db-mongo
            expose:
             - "27017"
            ports:
             - "27017:27017"
            networks:
             - default
            command: --bind_ip_all --smallfiles

          orion:
             image: fiware/orion
             ports:
                 - "1026:1026"
             networks:
                 - default
             depends_on:
                 - mongo-db
             command: -dbhost mongo-db -logLevel DEBUG
             healthcheck:
                   test: ["CMD", "curl", "-f", "http://0.0.0.0:1026/version"]
                   interval: 1m
                   timeout: 10s
                   retries: 3

          mqtt:
            image: eclipse-mosquitto:latest
            container_name: mqtt
            ports:
              - "1883:1883"
              - "9001:9001"
            expose:
              - "1883"
              - "9001"
            volumes:
              - /opt/mosquitto/var/run:/var/run

这是我的树莓派发布者收到的数据的证明:

如何设置 Orion 以从我的 mosquitto 容器中获取数据?

【问题讨论】:

  • 是的,每个容器都可以工作,我能够通过 mqtt 发布者发送数据。 mosquitto 容器接收到数据(从wireshark 照片中可以看到),就是这样。数据应该去 Orion Context Broker 并且实体应该改变温度的值......但是 Orion 不使用数据......也许我在创建实体时犯了一些错误?或者我应该怎么做才能让 Orion 从 Mosquitto 容器中获取数据?我应该让你知道,我的笔记本电脑上有 mosquitto orion 和 mongo,发布的数据来自树莓派。如果有人可以帮助我吗?
  • 您在哪里配置 Orion 以连接到 MQTT 代理?您告诉它订阅哪些主题?
  • 至于主题,当我从我的覆盆子发布消息时,主题的名称是“无”。所以也许我在创建实体时也应该输入主题的名称?我知道如果我想创建订阅,会提到该主题...
  • 如何配置 Orion?
  • 我可以告诉 IOT 代理处理我的 mosquitto 容器中的数据吗?据我所知,我只需要在 IOT 代理中创建一个服务......其余的将自动进行......但我也应该创建一个实体吗?也是订阅?和设备的注册?从树莓派传来的数据是 {"temperature":10} JSON 格式,如图所示。

标签: docker mosquitto fiware-orion


【解决方案1】:

何时创建设备,您是否指明了传输?

例如

 "device_id":   "streetLight001",
 "entity_name": "urn:ngsi-ld:StreetLight:001",
 "entity_type": "StreetLight",
 "protocol":    "PDI-IoTA-UltraLight",
 "transport":   "MQTT",
 "timezone":    "America/Bogota",

【讨论】:

  • 呃……不,所以也许这就是问题所在?我只将“id”、“type”和“temperature”表示为值“float”......我今天将更改实体的设置!我会告诉你进展如何!谢谢你的建议! !!!!!!
  • 另外,我应该使用该协议吗?那是代理协议?那我也应该实现一个物联网代理吗?
  • 我试图创建一个这样的实体: curl localhost:1026/v2/entities -s -S -H 'Content-Type: application/json' -d @- <<EOF > { > "id": "SensTemp", >“类型”:“传感器”,>“值”:{>“温度”:24.9,>“类型”:“浮动”>},>“传输”:“MQTT”,>“时区”:“欧洲/瓦伦西亚" > } > EOF {"error":"BadRequest","description":"上下文属性无法识别的属性"}
  • 它给了我一个错误......除了“传输”之外,我应该在实体创建中实现什么?
  • 我这样创建我的实体.....我定义了属性{“devices”:[{“device_id”:“streetLight001”,“timezone”:“America/Bogota”,“attributes”:[{“object_id”: “luminaireSupplyVoltage”、“name”:“luminaireSupplyVoltage”、“type”:“Float”}、{“object_id”:“powerSupplyCurrent”、“name”:“powerSupplyCurrent”、“type”:“Float”}、{“object_id ": "powerState", "name":"powerState", "type":"Text"} ], "static_attributes": [ {"name":"refStore", "type": "Relationship","value": “瓮:ngsi-ld:公园:001”} ] } ] }
【解决方案2】:

当您创建设备时,您是否指明了传输和属性(请参见此图)? entity creation with atributes

【讨论】:

  • 谢谢你的例子!!!我会努力实现的!但是,我仍然认为我需要告诉 Orion 和接收 JSON 数据的 Mosquitto 容器将其传递给 Orion ......
  • 这看起来应该是对您的原始答案的编辑,而不是第二个答案。
  • 我正在努力解决问题,即使我的教授也不知道如何帮助我...... :)
  • 这是我的linkedinlinkedin.com/in/faber-hernan-aristizabal-gomez-00860bb加我,我们可以谈谈
【解决方案3】:

问题解决了!问题出在代理中,我使用的是 Ultralight IOT 代理而不是 JSON 代理。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
相关资源
最近更新 更多