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))