From eb5db977fee2952f01274492a9710889d0e9c6ab Mon Sep 17 00:00:00 2001
From: Jan David Mol <mol@astron.nl>
Date: Wed, 19 May 2021 16:50:05 +0200
Subject: [PATCH] L2SS-182: Fix writing of string arrays, which aren't sent as
 numpy arrays

---
 devices/clients/opcua_connection.py | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/devices/clients/opcua_connection.py b/devices/clients/opcua_connection.py
index 85afdfa08..f6915250d 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))
 
 
 
-- 
GitLab