async def read(self, parameters): self.logger.debug("read") request = ua.ReadRequest() request.Parameters = parameters data = await self.protocol.send_request(request) response = struct_from_binary(ua.ReadResponse, data) self.logger.debug(response) response.ResponseHeader.ServiceResult.check() return response.Results
async def read_attributes(self, nodeids, attr): self.logger.info("read_attributes of several nodes") request = ua.ReadRequest() for nodeid in nodeids: rv = ua.ReadValueId() rv.NodeId = nodeid rv.AttributeId = attr request.Parameters.NodesToRead.append(rv) data = await self.protocol.send_request(request) response = struct_from_binary(ua.ReadResponse, data) response.ResponseHeader.ServiceResult.check() return response.Results
async def read(self, parameters): self.logger.debug("read") request = ua.ReadRequest() request.Parameters = parameters data = await self.protocol.send_request(request) response = struct_from_binary(ua.ReadResponse, data) self.logger.debug(response) response.ResponseHeader.ServiceResult.check() # cast to Enum attributes that need to for idx, rv in enumerate(parameters.NodesToRead): if rv.AttributeId == ua.AttributeIds.NodeClass: dv = response.Results[idx] if dv.StatusCode.is_good(): dv.Value.Value = ua.NodeClass(dv.Value.Value) elif rv.AttributeId == ua.AttributeIds.ValueRank: dv = response.Results[idx] if dv.StatusCode.is_good() and dv.Value.Value in (-3, -2, -1, 0, 1, 2, 3, 4): dv.Value.Value = ua.ValueRank(dv.Value.Value) return response.Results
async def test_service_fault(server, admin_client): request = ua.ReadRequest() request.TypeId = ua.FourByteNodeId(999) # bad type! with pytest.raises(ua.UaStatusCodeError): await admin_client.uaclient.protocol.send_request(request)