diff --git a/devices/clients/opcua_connection.py b/devices/clients/opcua_connection.py index 85afdfa08ef2849b8434d95bbd5c38e467a91b6c..f6915250da6dfe25cfe07b75722b3f6e170a4ca0 100644 --- a/devices/clients/opcua_connection.py +++ b/devices/clients/opcua_connection.py @@ -215,16 +215,15 @@ class ProtocolAttribute: """ write_RW function """ - # set_data_value(opcua.ua.uatypes.Variant(value = value.tolist(), varianttype=opcua.ua.VariantType.Int32)) if self.dim_y != 0: - v = numpy.concatenate(value) - self.node.set_data_value(opcua.ua.uatypes.Variant(value=v.tolist(), varianttype=self.ua_type)) - + # flatten array, convert to python array + value = numpy.concatenate(value).tolist() elif self.dim_x != 1: - self.node.set_data_value(opcua.ua.uatypes.Variant(value=value.tolist(), varianttype=self.ua_type)) - else: - self.node.set_data_value(opcua.ua.uatypes.Variant(value=value, varianttype=self.ua_type)) + # make sure it is a python array + value = value.tolist() if type(value) == numpy.ndarray else value + + self.node.set_data_value(opcua.ua.uatypes.Variant(value=value, varianttype=self.ua_type))