[Backlogmanager] [FIWARE-JIRA] (HELP-17693) [fiware-stackoverflow] How to change values from writable basic Datatypes on an OPC UA Server with FIWARE OPC UA AGENT

Gabriele De Luca (JIRA) jira-help-desk at jira.fiware.org
Mon May 31 07:31:00 CEST 2021


     [ https://jira.fiware.org/browse/HELP-17693?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gabriele De Luca reopened HELP-17693:
-------------------------------------

> [fiware-stackoverflow] How to change values from writable basic Datatypes on an OPC UA Server with FIWARE OPC UA AGENT
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: HELP-17693
>                 URL: https://jira.fiware.org/browse/HELP-17693
>             Project: Help-Desk
>          Issue Type: Monitor
>          Components: FIWARE-TECH-HELP
>            Reporter: Backlog Manager
>            Assignee: Gabriele De Luca
>              Labels: fiware, fiware-orion, opc-ua
>
> Created question in FIWARE Q/A platform on 04-05-2021 at 08:05
> {color: red}Please, ANSWER this question AT{color} https://stackoverflow.com/questions/67381102/how-to-change-values-from-writable-basic-datatypes-on-an-opc-ua-server-with-fiwa
> +Question:+
> How to change values from writable basic Datatypes on an OPC UA Server with FIWARE OPC UA AGENT
> +Description:+
> GOAL
> Change writable values on the OPC UA Server by using the Fiware OPC UA Agent.
> My test implementation
> Adding the Parameter to the "command" and "contextSubscription" sections in the config.json file.
> Start a new test environment with OpcUa Agent, Orion Context broker and mongodb.
> Expectet behavior
> The value on the server is updated when a request is sent to the Context Broker.
> Current behaviour
> The value of the parameter is read out correctly but with an incorrect data type (string instead of integer).
> The value of the parameter is not updated when a request is sent to the Orion Context Broker.
> additional informations
> config.json
>      {
>       "logLevel" : "DEBUG",
>       "contextBroker" : {
>         "host" : "orion",
>         "port" : 1026
>       },
>       "server" : {
>         "port" : 4001,
>         "baseRoot" : "/"
>       },
>       "deviceRegistry" : {
>         "type" : "memory"
>       },
>       "mongodb" : {
>         "host" : "iotmongo",
>         "port" : "27017",
>         "db" : "iotagent",
>         "retries" : 5,
>         "retryTime" : 5
>       },
>       "providerUrl" : "http://iotopcua:4001",
>       "pollingExpiration" : "200000",
>       "pollingDaemonFrequency" : "20000",
>       "deviceRegistrationDuration" : "P1M",
>       "defaultType" : null,
>       "browseServerOptions" : null,
>       "service" : "test",
>       "subservice" : "/test",  
>       "types" : {
>         "g_communication" : {
>           "service" : "test",
>           "subservice" : "/test",
>           "active" : [{
>             "name" : "7:PLC1_7:G_Communication_7:fo_smartControllerActive_b",
>             "type" : "Boolean"
>           } ],
>           "lazy" : [ ],
>           "commands" : [{
>             "name" : "7:PLC1_7:G_Communication_7:fi_heartbeat_i",
>             "type" : "Command"  
>             }]
>         }
>       },
>       "contexts" : [ {
>             "id" : "plant",
>             "type" : "g_communication",
>             "service" : "test",
>             "subservice" : "/test",
>             "polling" : null,
>             "mappings" : [{
>               "ocb_id" : "7:PLC1_7:G_Communication_7:fo_smartControllerActive_b",
>               "opcua_id" : "ns=7;s=G_Communication.fo_smartControllerActive_b",
>               "object_id" : null,
>               "inputArguments" : []
>             } ]
>       }],
>       "contextSubscriptions" : [{ 
>             "id" : "plant",
>             "type" : "g_communication",
>             "mappings" : [{
>               "ocb_id" : "7:PLC1_7:G_Communication_7:fi_heartbeat_i",
>               "opcua_id" : "ns=7;s=G_Communication.fi_heartbeat_i",
>               "object_id" : "ns=7;s=G_Communication",
>               "inputArguments" : [{
>                  "type": "Number"
>               }]
>             }]
>         }]
>     }
> List Entities
> curl 'http://localhost:1026/v2/entities/plant/' -H 'fiware-service: test' -H 'fiwate-servicepath: /test' | python -m json.tool
>  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
>                                 Dload  Upload   Total   Spent    Left  Speed
> 100   684  100   684    0     0  13751      0 --:--:-- --:--:-- --:--:-- 13959
> {
>    "7:PLC1_7:G_Communication_7:fi_heartbeat_i": {
>        "metadata": {
>            "ServerTimestamp": {
>                "type": "ISO8601",
>                "value": "null"
>            },
>            "SourceTimestamp": {
>                "type": "ISO8601",
>                "value": "null"
>            }
>        },
>        "type": "string",
>        "value": "4"
>    },
>    "7:PLC1_7:G_Communication_7:fi_heartbeat_i_info": {
>        "metadata": {},
>        "type": "commandResult",
>        "value": " "
>    },
>    "7:PLC1_7:G_Communication_7:fi_heartbeat_i_status": {
>        "metadata": {},
>        "type": "commandStatus",
>        "value": "UNKNOWN"
>    },
>    "7:PLC1_7:G_Communication_7:fo_smartControllerActive_b": {
>        "metadata": {
>            "ServerTimestamp": {
>                "type": "ISO8601",
>                "value": "2021-05-04T07:38:01.150Z"
>            },
>            "SourceTimestamp": {
>                "type": "ISO8601",
>                "value": "2021-05-04T07:37:59.934Z"
>            }
>        },
>        "type": "Boolean",
>        "value": false
>    },
>    "id": "plant",
>    "type": "g_communication"
> }
> Registrations
> curl 'http://localhost:1026/v2/registrations'  -H 'fiware-service: test' -H 'fiwate-servicepath: /test' | python -m json.tool
>   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
>                                  Dload  Upload   Total   Spent    Left  Speed
> 100   320  100   320    0     0  46049      0 --:--:-- --:--:-- --:--:-- 53333
> [
>     {
>         "dataProvided": {
>             "attrs": [
>                 "7:PLC1_7:G_Communication_7:fi_heartbeat_i"
>             ],
>             "entities": [
>                 {
>                     "id": "plant",
>                     "type": "g_communication"
>                 }
>             ]
>         },
>         "expires": "2021-06-03T07:37:38.00Z",
>         "id": "6090f9c254b918756abf1a7d",
>         "provider": {
>             "http": {
>                 "url": "http://iotopcua:4001"
>             },
>             "legacyForwarding": true,
>             "supportedForwardingMode": "all"
>         },
>         "status": "active"
>     }
> ]
> Test communication with iotopcua
>  curl "http://iotopcua:4001/version"
> {"libVersion":"2.12.0-next","port":4001,"baseRoot":"/"}
> Request for update
> curl -X PUT \
>   'http://localhost:1026/v2/entities/plant/attrs/7:PLC1_7:G_Communication_7:fi_heartbeat_i?type=g_communication' \
>   -H 'content-type: application/json' \
>   -H 'fiware-service: test' \
>   -H 'fiware-servicepath: /test' \
>   -d '{
>   "value": 2
>   }'
> Log OCB
> from=0.0.0.0 | srv=test | subsrv=/test | comp=Orion | op=logMsg.h[1844]:lmTransactionStart | msg=Starting transaction from 0.0.0.0:54232/v2/entities/plant/attrs/7:PLC1_7:G_Communication_7:fi_heartbeat_i
> from=0.0.0.0 | srv=test | subsrv=/test | comp=Orion | op=rest.cpp[874]:servicePathSplit | msg=Service Path 0: '/test'
> from=0.0.0.0 | srv=test | subsrv=/test | comp=Orion | op=connectionOperations.cpp[244]:collectionCount | msg=Database Operation Successful (count: { _id.id: "plant", _id.type: "g_communication", _id.servicePath: "/test" })
> from=0.0.0.0 | srv=test | subsrv=/test | comp=Orion | op=connectionOperations.cpp[94]:collectionQuery | msg=Database Operation Successful (query: { _id.id: "plant", _id.type: "g_communication", _id.servicePath: "/test" })
> from=0.0.0.0 | srv=test | subsrv=/test | comp=Orion | op=connectionOperations.cpp[182]:collectionRangedQuery | msg=Database Operation Successful (query: { query: { $or: [ { contextRegistration.entities.id: "plant", contextRegistration.entities.type: "g_communication" }, { contextRegistration.entities.id: ".*", contextRegistration.entities.isPattern: "true", contextRegistration.entities.type: { $in: [ "g_communication" ] } }, { contextRegistration.entities.id: ".*", contextRegistration.entities.isPattern: "true", contextRegistration.entities.type: { $exists: false } } ], expiration: { $gt: 1620114947 }, contextRegistration.attrs.name: { $in: [ "7:PLC1_7:G_Communication_7:fi_heartbeat_i" ] }, servicePath: "/test" }, orderby: { _id: 1 } })
> from=0.0.0.0 | srv=test | subsrv=/test | comp=Orion | op=logMsg.h[1844]:lmTransactionStart | msg=Starting transaction to http://iotopcua:4001//updateContext
> from=0.0.0.0 | srv=test | subsrv=/test | comp=Orion | op=httpRequestSend.cpp[550]:httpRequestSendWithCurl | msg=Sending message 4 to HTTP server: sending message of 458 bytes to HTTP server
> from=10.1.17.1 | srv=test | subsrv=/test | comp=Orion | op=logMsg.h[1844]:lmTransactionStart | msg=Starting transaction from 10.1.17.1:58162/v1/updateContext
> from=10.1.17.1 | srv=test | subsrv=/test | comp=Orion | op=rest.cpp[874]:servicePathSplit | msg=Service Path 0: '/test'
> from=10.1.17.1 | srv=test | subsrv=/test | comp=Orion | op=connectionOperations.cpp[94]:collectionQuery | msg=Database Operation Successful (query: { _id.id: "plant", _id.type: "g_communication", _id.servicePath: "/test" })
> from=10.1.17.1 | srv=test | subsrv=/test | comp=Orion | op=connectionOperations.cpp[454]:collectionUpdate | msg=Database Operation Successful (update: <{ _id.id: "plant", _id.type: "g_communication", _id.servicePath: "/test" }, { $set: { attrs.7:PLC1_7:G_Communication_7:fi_heartbeat_i_status: { value: "PENDING", type: "commandStatus", mdNames: [], creDate: 1620113858, modDate: 1620114947 }, modDate: 1620114947, lastCorrelator: "2324ca1e-acae-11eb-a4f7-226cad26e2cc" }, $unset: { location: 1, expDate: 1 } }>)
> from=10.1.17.1 | srv=test | subsrv=/test | comp=Orion | op=logMsg.h[1874]:lmTransactionEnd | msg=Transaction ended
> from=0.0.0.0 | srv=test | subsrv=/test | comp=Orion | op=httpRequestSend.cpp[570]:httpRequestSendWithCurl | msg=Notification Successfully Sent to http://iotopcua:4001//updateContext
> from=0.0.0.0 | srv=test | subsrv=/test | comp=Orion | op=httpRequestSend.cpp[579]:httpRequestSendWithCurl | msg=Notification response OK, http code: 200
> from=0.0.0.0 | srv=test | subsrv=/test | comp=Orion | op=logMsg.h[1874]:lmTransactionEnd | msg=Transaction ended
> Log OPCUA Client
> time=2021-05-04T07:55:47.191Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.GenericMiddlewares | msg=Request for path [//updateContext] from [iotopcua:4001]
> time=2021-05-04T07:55:47.191Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.GenericMiddlewares | msg=Body:
> {
>     "contextElements": [
>         {
>             "type": "g_communication",
>             "isPattern": "false",
>             "id": "plant",
>             "attributes": [
>                 {
>                     "name": "7:PLC1_7:G_Communication_7:fi_heartbeat_i",
>                     "type": "Number",
>                     "value": 2
>                 }
>             ]
>         }
>     ],
>     "updateAction": "UPDATE"
> }
> time=2021-05-04T07:55:47.193Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.ContextServer | msg=Handling update from [iotopcua:4001]
> time=2021-05-04T07:55:47.193Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.ContextServer | msg=[object Object]
> time=2021-05-04T07:55:47.194Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.InMemoryGroupRegister | msg=Looking for device params ["service","subservice","type"]
> time=2021-05-04T07:55:47.194Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.DeviceService | msg=deviceData after merge with conf: {"id":"plant","name":"plant","type":"g_communication","active":[{"name":"7:PLC1_7:G_Communication_7:fo_smartControllerActive_b","type":"Boolean","object_id":"7:PLC1_7:G_Communication_7:fo_smartControllerActive_b"}],"service":"test","subservice":"/test","polling":null,"endpoint":"opc.tcp://109.68.106.155:48050","registrationId":"6090f9c254b918756abf1a7d","creationDate":1620113858802}
> time=2021-05-04T07:55:47.194Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.DeviceService | msg=deviceData before merge with conf: {"id":"plant","name":"plant","type":"g_communication","active":[{"name":"7:PLC1_7:G_Communication_7:fo_smartControllerActive_b","type":"Boolean","object_id":"7:PLC1_7:G_Communication_7:fo_smartControllerActive_b"}],"lazy":[],"commands":[{"name":"7:PLC1_7:G_Communication_7:fi_heartbeat_i","type":"Command","object_id":"7:PLC1_7:G_Communication_7:fi_heartbeat_i"}],"service":"test","subservice":"/test","polling":null,"endpoint":"opc.tcp://109.68.106.155:48050","registrationId":"6090f9c254b918756abf1a7d","creationDate":1620113858802,"internalAttributes":null,"staticAttributes":[],"subscriptions":[]}
> time=2021-05-04T07:55:47.195Z | lvl=INFO | corr=n/a | trans=n/a | op=Index.CommandContextHandler | comp=iotAgent-OPCUA | srv=test | subsrv=/test | msg=method to call =[{"objectId":"ns=7;s=G_Communication","methodId":"ns=7;s=G_Communication.fi_heartbeat_i","inputArguments":[{"type":"Number"}]}]
> time=2021-05-04T07:55:47.879Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.NGSIService | msg=executeWithDeviceInfo entityName plant type undefined apikey undefined attributes [{"name":"7:PLC1_7:G_Communication_7:fi_heartbeat_i_status","type":"commandStatus","value":"PENDING"}] deviceInformation {"id":"plant","name":"plant","type":"g_communication","active":[{"name":"7:PLC1_7:G_Communication_7:fo_smartControllerActive_b","type":"Boolean","object_id":"7:PLC1_7:G_Communication_7:fo_smartControllerActive_b"}],"lazy":[],"commands":[{"name":"7:PLC1_7:G_Communication_7:fi_heartbeat_i","type":"Command","object_id":"7:PLC1_7:G_Communication_7:fi_heartbeat_i"}],"service":"test","subservice":"/test","polling":null,"endpoint":"opc.tcp://109.68.106.155:48050","registrationId":"6090f9c254b918756abf1a7d","creationDate":1620113858802,"internalAttributes":null,"staticAttributes":[],"subscriptions":[]}
> time=2021-05-04T07:55:47.879Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.NGSIService | msg=error {"name":"DEVICE_GROUP_NOT_FOUND","message":"Couldn\t find device group","code":404} in get group device
> time=2021-05-04T07:55:47.880Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.NGSIService | msg=typeInformation {"id":"plant","name":"plant","type":"g_communication","active":[{"name":"7:PLC1_7:G_Communication_7:fo_smartControllerActive_b","type":"Boolean","object_id":"7:PLC1_7:G_Communication_7:fo_smartControllerActive_b"}],"lazy":[],"commands":[{"name":"7:PLC1_7:G_Communication_7:fi_heartbeat_i","type":"Command","object_id":"7:PLC1_7:G_Communication_7:fi_heartbeat_i"}],"service":"test","subservice":"/test","polling":null,"endpoint":"opc.tcp://109.68.106.155:48050","registrationId":"6090f9c254b918756abf1a7d","creationDate":1620113858802,"internalAttributes":null,"staticAttributes":[],"subscriptions":[]}
> time=2021-05-04T07:55:47.880Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.NGSIService | msg=Updating device value in the Context Broker at [http://orion:1026/v1/updateContext]
> time=2021-05-04T07:55:47.880Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.NGSIService | msg=Using the following request:
> {
>     "url": "http://orion:1026/v1/updateContext",
>     "method": "POST",
>     "headers": {
>         "fiware-service": "test",
>         "fiware-servicepath": "/test"
>     },
>     "json": {
>         "contextElements": [
>             {
>                 "type": "g_communication",
>                 "isPattern": "false",
>                 "id": "plant",
>                 "attributes": [
>                     {
>                         "name": "7:PLC1_7:G_Communication_7:fi_heartbeat_i_status",
>                         "type": "commandStatus",
>                         "value": "PENDING"
>                     }
>                 ]
>             }
>         ],
>         "updateAction": "UPDATE"
>     }
> }
> time=2021-05-04T07:55:47.886Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.NGSIService | msg=Received the following request from the CB:
> {
>     "contextResponses": [
>         {
>             "contextElement": {
>                 "type": "g_communication",
>                 "isPattern": "false",
>                 "id": "plant",
>                 "attributes": [
>                     {
>                         "name": "7:PLC1_7:G_Communication_7:fi_heartbeat_i_status",
>                         "type": "commandStatus",
>                         "value": ""
>                     }
>                 ]
>             },
>             "statusCode": {
>                 "code": "200",
>                 "reasonPhrase": "OK"
>             }
>         }
>     ]
> }
> time=2021-05-04T07:55:47.886Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.NGSIService | msg=Value updated successfully
> time=2021-05-04T07:55:47.886Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.ContextServer | msg=Update action from [iotopcua:4001] handled successfully.
> time=2021-05-04T07:55:47.886Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.ContextServer | msg=Generated update response: {"contextResponses":[{"contextElement":{"attributes":[{"name":"7:PLC1_7:G_Communication_7:fi_heartbeat_i","type":"Number","value":""}],"id":"plant","isPattern":false,"type":"g_communication"},"statusCode":{"code":200,"reasonPhrase":"OK"}}]}
> time=2021-05-04T07:55:47.887Z | lvl=DEBUG | corr=n/a | trans=n/a | op=IoTAgentNGSI.DomainControl | msg=response-time: 697



--
This message was sent by Atlassian JIRA
(v6.4.1#64016)


More information about the Backlogmanager mailing list

You can get more information about our cookies and privacy policies clicking on the following links: Privacy policy   Cookies policy