diff --git a/src/3rdparty/open62541/open62541.c b/src/3rdparty/open62541/open62541.c
index 008c3eb..e142ccb 100644
--- a/src/3rdparty/open62541/open62541.c
+++ b/src/3rdparty/open62541/open62541.c
@@ -53783,7 +53783,7 @@ UA_DateTime UA_DateTime_nowMonotonic(void) {
     return (mts.tv_sec * UA_DATETIME_SEC) + (mts.tv_nsec / 100);
 #elif !defined(CLOCK_MONOTONIC_RAW)
     struct timespec ts;
-    clock_gettime(CLOCK_MONOTONIC, &ts);
+    clock_gettime(CLOCK_REALTIME, &ts);
     return (ts.tv_sec * UA_DATETIME_SEC) + (ts.tv_nsec / 100);
 #else
     struct timespec ts;
diff --git a/src/3rdparty/open62541/open62541.h b/src/3rdparty/open62541/open62541.h
index cc9f0be..1398a9f 100644
--- a/src/3rdparty/open62541/open62541.h
+++ b/src/3rdparty/open62541/open62541.h
@@ -944,10 +944,12 @@ typedef uint64_t  uintmax_t;
 # define UA_RESTRICT __restrict
 #elif defined(__GNUC__)
 # define UA_RESTRICT __restrict__
-#else
-# define UA_RESTRICT restrict
+#else //GHS
+# define __restrict
+# define UA_RESTRICT
 #endif
 
+
 /**
  * Function attributes
  * ------------------- */
@@ -28808,7 +28810,7 @@ void UA_free(void* ptr); //de-allocate memory previously allocated with UA_mallo
 /* Stack-allocation of memory. Use C99 variable-length arrays if possible.
  * Otherwise revert to alloca. Note that alloca is not supported on some
  * plattforms. */
-# if defined(__GNUC__) || defined(__clang__)
+# if defined(__ghs__) || defined(__GNUC__) || defined(__clang__)
 #  define UA_STACKARRAY(TYPE, NAME, SIZE) TYPE NAME[SIZE]
 # else
 #  define UA_STACKARRAY(TYPE, NAME, SIZE) \
diff --git a/src/plugins/opcua/opcua.pro b/src/plugins/opcua/opcua.pro
index 1570e3d..c57b05c 100644
--- a/src/plugins/opcua/opcua.pro
+++ b/src/plugins/opcua/opcua.pro
@@ -2,11 +2,11 @@ TEMPLATE = subdirs
 
 QT_FOR_CONFIG += opcua-private
 
-!vxworks:!integrity {
+#!vxworks:!integrity {
     qtConfig(open62541)|qtConfig(system-open62541) {
         SUBDIRS += open62541
     }
-}
+#}
 
 qtConfig(uacpp) {
     SUBDIRS += uacpp
diff --git a/src/plugins/opcua/open62541/qopen62541valueconverter.cpp b/src/plugins/opcua/open62541/qopen62541valueconverter.cpp
index a49742a..ab82b38 100644
--- a/src/plugins/opcua/open62541/qopen62541valueconverter.cpp
+++ b/src/plugins/opcua/open62541/qopen62541valueconverter.cpp
@@ -272,11 +272,11 @@ const UA_DataType *toDataType(QOpcUa::Types valueType)
     }
 }
 
-template<typename TARGETTYPE, typename UATYPE>
-TARGETTYPE scalarToQt(const UATYPE *data)
-{
-    return *reinterpret_cast<const TARGETTYPE *>(data);
-}
+//template<typename TARGETTYPE, typename UATYPE>
+//TARGETTYPE scalarToQt(const UATYPE *data)
+//{
+//    return *reinterpret_cast<const TARGETTYPE *>(data);
+//}
 
 template<>
 QString scalarToQt<QString, UA_String>(const UA_String *data)
@@ -469,33 +469,28 @@ QVariant arrayToQVariant(const UA_Variant &var, QMetaType::Type type)
     return QVariant(); // Return empty QVariant for empty scalar variant
 }
 
-template<typename TARGETTYPE, typename QTTYPE>
-void scalarFromQt(const QTTYPE &value, TARGETTYPE *ptr)
-{
-    *ptr = static_cast<TARGETTYPE>(value);
-}
+//template<typename TARGETTYPE, typename QTTYPE>
+//void scalarFromQt(const QTTYPE &value, TARGETTYPE *ptr)
+//{
+//    *ptr = static_cast<TARGETTYPE>(value);
+//}
 
-template<>
-void scalarFromQt<UA_DateTime, QDateTime>(const QDateTime &value, UA_DateTime *ptr)
-{
-    // OPC-UA part 3, Table C.9
-    const QDateTime uaEpochStart(QDate(1601, 1, 1), QTime(0, 0), Qt::UTC);
+//template<>
+//void scalarFromQt<UA_DateTime, QDateTime>(const QDateTime &value, UA_DateTime *ptr)
+//{
+//    // OPC-UA part 3, Table C.9
+//    const QDateTime uaEpochStart(QDate(1601, 1, 1), QTime(0, 0), Qt::UTC);
 
-    *ptr = UA_DATETIME_MSEC * (value.toMSecsSinceEpoch() - uaEpochStart.toMSecsSinceEpoch());
-}
+//    *ptr = UA_DATETIME_MSEC * (value.toMSecsSinceEpoch() - uaEpochStart.toMSecsSinceEpoch());
+//}
+
+//template<>
+//void scalarFromQt<UA_String, QString>(const QString &value, UA_String *ptr)
+//{
+//    *ptr = UA_STRING_ALLOC(value.toUtf8().constData());
+//}
 
-template<>
-void scalarFromQt<UA_String, QString>(const QString &value, UA_String *ptr)
-{
-    *ptr = UA_STRING_ALLOC(value.toUtf8().constData());
-}
 
-template<>
-void scalarFromQt<UA_LocalizedText, QOpcUaLocalizedText>(const QOpcUaLocalizedText &value, UA_LocalizedText *ptr)
-{
-    scalarFromQt<UA_String, QString>(value.locale(), &(ptr->locale));
-    scalarFromQt<UA_String, QString>(value.text(), &(ptr->text));
-}
 
 template<>
 void scalarFromQt<UA_ByteString, QByteArray>(const QByteArray &value, UA_ByteString *ptr)
@@ -515,13 +510,6 @@ void scalarFromQt<UA_NodeId, QString>(const QString &value, UA_NodeId *ptr)
     *ptr = Open62541Utils::nodeIdFromQString(value);
 }
 
-template<>
-void scalarFromQt<UA_QualifiedName, QOpcUaQualifiedName>(const QOpcUaQualifiedName &value, UA_QualifiedName *ptr)
-{
-    ptr->namespaceIndex = value.namespaceIndex();
-    scalarFromQt<UA_String, QString>(value.name(), &(ptr->name));
-}
-
 template<>
 void scalarFromQt<UA_Guid, QUuid>(const QUuid &value, UA_Guid *ptr)
 {
@@ -597,13 +585,13 @@ void scalarFromQt<UA_ExtensionObject, QOpcUaExtensionObject>(const QOpcUaExtensi
     createExtensionObject(temp, encodingId, ptr, obj.encoding());
 }
 
-template<>
-void scalarFromQt<UA_ExpandedNodeId, QOpcUaExpandedNodeId>(const QOpcUaExpandedNodeId &value, UA_ExpandedNodeId *ptr)
-{
-    ptr->serverIndex = value.serverIndex();
-    scalarFromQt<UA_String, QString>(value.namespaceUri(), &ptr->namespaceUri);
-    ptr->nodeId = Open62541Utils::nodeIdFromQString(value.nodeId());
-}
+//template<>
+//void scalarFromQt<UA_ExpandedNodeId, QOpcUaExpandedNodeId>(const QOpcUaExpandedNodeId &value, UA_ExpandedNodeId *ptr)
+//{
+//    ptr->serverIndex = value.serverIndex();
+//    scalarFromQt<UA_String, QString>(value.namespaceUri(), &ptr->namespaceUri);
+//    ptr->nodeId = Open62541Utils::nodeIdFromQString(value.nodeId());
+//}
 
 template<>
 void scalarFromQt<UA_Argument, QOpcUaArgument>(const QOpcUaArgument &value, UA_Argument *ptr)
diff --git a/src/plugins/opcua/open62541/qopen62541valueconverter.h b/src/plugins/opcua/open62541/qopen62541valueconverter.h
index 1f2442c..5e6fe96 100644
--- a/src/plugins/opcua/open62541/qopen62541valueconverter.h
+++ b/src/plugins/opcua/open62541/qopen62541valueconverter.h
@@ -38,6 +38,7 @@
 #define QOPEN62541VALUECONVERTER_H
 
 #include "qopen62541.h"
+#include "qopen62541utils.h"
 #include <QtOpcUa/qopcuanode.h>
 #include <QtOpcUa/qopcuatype.h>
 #include <QtOpcUa/qopcuabinarydataencoding.h>
@@ -64,14 +65,64 @@ namespace QOpen62541ValueConverter {
     const UA_DataType *toDataType(QOpcUa::Types valueType);
     QOpcUa::Types qvariantTypeToQOpcUaType(QMetaType::Type type);
 
+//    template<typename TARGETTYPE, typename UATYPE>
+//    TARGETTYPE scalarToQt(const UATYPE *data);
+
     template<typename TARGETTYPE, typename UATYPE>
-    TARGETTYPE scalarToQt(const UATYPE *data);
+    TARGETTYPE scalarToQt(const UATYPE *data)
+    {
+        return *reinterpret_cast<const TARGETTYPE *>(data);
+    }
 
     template<typename TARGETTYPE, typename UATYPE>
     QVariant arrayToQVariant(const UA_Variant &var, QMetaType::Type type = QMetaType::UnknownType);
 
+//    template<typename TARGETTYPE, typename QTTYPE>
+//    void scalarFromQt(const QTTYPE &var, TARGETTYPE *ptr);
+
     template<typename TARGETTYPE, typename QTTYPE>
-    void scalarFromQt(const QTTYPE &var, TARGETTYPE *ptr);
+    void scalarFromQt(const QTTYPE &value, TARGETTYPE *ptr)
+    {
+        *ptr = static_cast<TARGETTYPE>(value);
+    }
+
+    template<>
+    void scalarFromQt<UA_String, QString>(const QString &value, UA_String *ptr)
+    {
+        *ptr = UA_STRING_ALLOC(value.toUtf8().constData());
+    }
+
+    template<>
+    void scalarFromQt<UA_LocalizedText, QOpcUaLocalizedText>(const QOpcUaLocalizedText &value, UA_LocalizedText *ptr)
+    {
+        scalarFromQt<UA_String, QString>(value.locale(), &(ptr->locale));
+        scalarFromQt<UA_String, QString>(value.text(), &(ptr->text));
+    }
+
+    template<>
+    void scalarFromQt<UA_DateTime, QDateTime>(const QDateTime &value, UA_DateTime *ptr)
+    {
+        // OPC-UA part 3, Table C.9
+        const QDateTime uaEpochStart(QDate(1601, 1, 1), QTime(0, 0), Qt::UTC);
+
+        *ptr = UA_DATETIME_MSEC * (value.toMSecsSinceEpoch() - uaEpochStart.toMSecsSinceEpoch());
+    }
+
+    template<>
+    void scalarFromQt<UA_QualifiedName, QOpcUaQualifiedName>(const QOpcUaQualifiedName &value, UA_QualifiedName *ptr)
+    {
+        ptr->namespaceIndex = value.namespaceIndex();
+        scalarFromQt<UA_String, QString>(value.name(), &(ptr->name));
+    }
+
+    template<>
+    void scalarFromQt<UA_ExpandedNodeId, QOpcUaExpandedNodeId>(const QOpcUaExpandedNodeId &value, UA_ExpandedNodeId *ptr)
+    {
+        ptr->serverIndex = value.serverIndex();
+        scalarFromQt<UA_String, QString>(value.namespaceUri(), &ptr->namespaceUri);
+        ptr->nodeId = Open62541Utils::nodeIdFromQString(value.nodeId());
+    }
+
 
     template<typename TARGETTYPE, typename QTTYPE>
     UA_Variant arrayFromQVariant(const QVariant &var, const UA_DataType *type);
