Hi, I have a python3 application running where I use REST API to communicate with the RTM. I’ve got everything working except for writing variables which are a struct variable. Reading variables (including structs) does work, so does writing non-struct variables. For writing variables i use a POST method: r = requests.put(url=url, headers=headers, data=json.dumps(payload), verify=False) While I debug and run, the arguments would end up with these values: url: ‘https://192.168.100.125/_pxc_api/api/variables/’ headers: {‘Authorization’: ‘Bearer 64ef2acc6444b9ee’} data: ‘{“variables”: [{“path”: “Arp.Plc.Eclr/test”, “value”: {“i1”: 0, “i2”: 33}}]}’ The request method will answer with this response: {‘Server’: ‘nginx’, ‘Date’: ‘Thu, 19 Dec 2019 14:14:36 GMT’, ‘Content-Type’: ‘application/json’, ‘Content-Length’: ‘198’, ‘Connection’: ‘keep-alive’, ‘Status’: ‘200 OK’, ‘Cache-Control’: ‘no-cache’} b’{“apiVersion”:“1.2.0.0”,“projectCRC”:323846263,“userAuthenticationRequired”:true,“variables”:[{“path”:“Arp.Plc.Eclr/test”,“value”:{“i1”:0,“i2”:0},“uri”:“/_pxc_api/api/variables/Arp.Plc.Eclr/test”}]}’ The response says ok, but the values have not updated The following is the value of the data argument for a non-struct integer variable which does work: ‘{“variables”: [{“path”: “Arp.Plc.Eclr/alive”, “value”: 33}]}’ Is it possible to update struct variables that way?
Hello jannes,
> I think you will have to do something like this. > Take the Variable link as a PathPrefix and the Path as the Stuct element. > > { "sessionID": "%OptionalSessionID%", "pathPrefix": "Arp.Plc.Eclr/Instance.Program.testStruct", "variables": [ { "path": "i1", "value": "%ConstantValue1%", }, { "path": "i2", "value": "%ConstantValueN%", "valueType": "Constant" } ] } > > I dont find any hints of key:value pairs for struct in the documentation. > The thing that comes to my mind is: > ->how to handle multi layer nested types efficiently?I will see if we have this planed as a feature at the moment.
kind regards,
Oliver