diff --git a/devices/clients/opcua_client.py b/devices/clients/opcua_client.py
index dc85a6f4fe645fdb9b7c47e46e2e78a42bbcf41f..0167ad95e113e0880ab607c24ef9f54b45b58d11 100644
--- a/devices/clients/opcua_client.py
+++ b/devices/clients/opcua_client.py
@@ -197,16 +197,16 @@ class ProtocolAttribute:
         """
         Read_R function
         """
-        value = numpy.array(self.node.get_value())
+        value = self.node.get_value()
 
         if self.dim_y + self.dim_x == 1:
             # scalar
             return value
         elif self.dim_y != 0:
-            value = numpy.array(numpy.split(value, indices_or_sections=self.dim_y))
-        elif self.dim_y + self.dim_x == 1:
-            value = [numpy.array(value)]
+            # 2D array
+            value = numpy.array(numpy.split(numpy.array(value), indices_or_sections=self.dim_y))
         else:
+            # 1D array
             value = numpy.array(value)
 
         return value