Fiware 具有不同协议的物联网设备能否使用物联网代理来;“谈话”;彼此之间?

Fiware 具有不同协议的物联网设备能否使用物联网代理来;“谈话”;彼此之间?,fiware,fiware-orion,Fiware,Fiware Orion,我在玩FIWARE Orion、物联网代理JSON和物联网代理OPC UA。我想知道,既然所有物联网代理都与Orion连接,并将不同的物联网协议映射到NGSI中,那么使用不同协议的设备是否可以在不添加任何附加应用逻辑的情况下相互通信 让我们考虑一个MQTT设备A和一个OPC UA服务器B,例如,可以: B向Orion上下文代理报告其测量值,A订阅该属性。比如 B-->物联网代理OPC UA-->猎户座-->物联网代理JSON-->MOSQUITO-->A (我试图注册上下文提供程序。但是,B实体

我在玩FIWARE Orion、物联网代理JSON和物联网代理OPC UA。我想知道,既然所有物联网代理都与Orion连接,并将不同的物联网协议映射到NGSI中,那么使用不同协议的设备是否可以在不添加任何附加应用逻辑的情况下相互通信

让我们考虑一个MQTT设备A和一个OPC UA服务器B,例如,可以:

  • B向Orion上下文代理报告其测量值,A订阅该属性。比如 B-->物联网代理OPC UA-->猎户座-->物联网代理JSON-->MOSQUITO-->A (我试图注册上下文提供程序。但是,B实体属性(
    orion:1026/v2/B/attrs/XXX
    )的url显然不起作用,因为orion将向一个不存在的
    orion:1026/v2/B/attrs/XXX/op/query
    )发送POST),并且提供的属性没有在IoT代理JSON上设置……我觉得我走的方向完全错了)

  • A和B访问同一实体,并在Orion中向该实体报告其测量结果。由于A和B都需要各自的物联网代理,并且由于重复的原因,无法在每个代理处配置相同的实体


  • 这是一个超级坏的主意,试图搞乱一个实体与几个协议的设备…非常感谢你回答我的疑问提前

    每个NGSI实体都应该映射到现实世界中有状态的东西。在您的情况下,您的数据模型应该基于,并且您应该有一个单独的基于OPC UA的设备实体和另一个单独的JSON设备实体。这些是系统中的低级别实体,它将保存物联网设备的读数,还将保存其他数据(如电池电量或文档链接等)

    如果您想对第二个聚合实体的状态进行建模,那么您也可以这样做—只需更改设备中的上下文,并将值和元数据插入另一个实体

    curl --location --request POST 'http://localhost:1027/v2/subscriptions/' \
    --header 'Content-Type: application/json' \
    --header 'fiware-service: openiot' \
    --data-raw '{
      "description": "Notify Subscription Listener of Lamp context changes",
      "subject": {
        "entities": [
          {
            "idPattern": "Lamp.*"
          }
        ],
        "condition": {
          "attrs": ["luminosity"]
        }
      },
      "notification": {
        "http": {
          "url": "http://tutorial:3000/device/subscription/luminosity"
        },
        "attrs": ["luminosity", "controlledAsset", "supportedUnits"]
      },
      "throttling": 5
    }'
    
    可以找到从侦听端点执行工作的示例代码(
    /device/subscription/luminosity
    )-这是一个教程,仍在进行中,因此目前缺少完整的文档

    功能阴影设备测量(要求、分辨率){
    常量attrib=req.params.attrib;
    异步函数copyAttributeData(设备、索引){
    等待upsertDeviceEntityAsLD(设备);
    if(设备[attrib]){
    等待upsertLinkedAttributeDataAsLD(设备“受控资产”属性);
    }
    }
    请求正文数据格式(copyAttributeData);
    res.status(204.send();
    }
    
    这里的要点是,您可以(也应该)考虑不同级别的数据实体-

    • 我有一个温度计装置-它正在发送温度读数。它有一个
      温度
      属性
    • 我有一个建筑-里面有一个温度计,建筑有一个
      温度
      属性和
      元数据。由链接回设备提供

    根据您的用例,您可能只需要在一个层考虑实体,或者您可能需要同时使用这两个。

    HI,非常感谢您的建议!我认为不同层次的实体思维应该是我质疑的方向!是否有关于此
    元数据的示例或教程。由
    功能提供?这是NGSI v2还是NGSI LD?在您的示例中,如果我查询Building about
    temperature
    属性,并且响应显示设备的实际值,是否可能?教程尚未完成-我尚未编写注释。可以找到您正在查找的代码。NGSI-v2的等效物在会议期间被涵盖,可能添加一个图表(显示a、B等)将非常清晰。