[ 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)
You can get more information about our cookies and privacy policies clicking on the following links: Privacy policy Cookies policy