<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BobinkQtOpcUa/src/OpcUaMonitoredNode.cpp, branch master</title>
<subtitle>High-level C++/QML library for making OPC UA applications with Qt Quick</subtitle>
<id>http://git.tvcloud.fr/BobinkQtOpcUa/atom/src/OpcUaMonitoredNode.cpp?h=master</id>
<link rel='self' href='http://git.tvcloud.fr/BobinkQtOpcUa/atom/src/OpcUaMonitoredNode.cpp?h=master'/>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/'/>
<updated>2026-04-01T09:54:12Z</updated>
<entry>
<title>Check all unchecked return values and guard error paths</title>
<updated>2026-04-01T09:54:12Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-04-01T09:54:12Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=ed9025f03aa6fcbf720f4e022f3594c85de0a385'/>
<id>urn:sha1:ed9025f03aa6fcbf720f4e022f3594c85de0a385</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Suppress duplicate valueChanged after writeValue</title>
<updated>2026-03-24T15:14:11Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-24T15:14:11Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=6816fc573608cf9a5783caeabd47b8dbe1ac5ac5'/>
<id>urn:sha1:6816fc573608cf9a5783caeabd47b8dbe1ac5ac5</id>
<content type='text'>
Add m_pendingWrite flag to skip the write-path valueAttributeUpdated
emission and let only the monitored item deliver the authoritative
server value. Mirrors the existing m_pendingRangeWrite pattern.
</content>
</entry>
<entry>
<title>Refactor Main.qml into separate components and add comments</title>
<updated>2026-03-23T13:55:32Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-23T13:55:32Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=5ff9705937ffc1647587e1b228effd30c8a0e309'/>
<id>urn:sha1:5ff9705937ffc1647587e1b228effd30c8a0e309</id>
<content type='text'>
Extract ConnectionPage, CertTrustDialog, and DebugConsole from Main.qml
into their own QML files. Add inline comments to
OpcUaMonitoredNode::handleValueUpdated explaining the range write guard,
value store, and timestamp update.
</content>
</entry>
<entry>
<title>Add ValueRank and ArrayDimensions to OpcUaNodeInfo</title>
<updated>2026-02-24T15:51:15Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-24T15:51:15Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=75d77c39924629eaebf6b721a541407e19ced762'/>
<id>urn:sha1:75d77c39924629eaebf6b721a541407e19ced762</id>
<content type='text'>
Read both attributes at node setup alongside the existing metadata.
ValueRank is mapped to human-readable names (Scalar, OneDimension, etc.)
and ArrayDimensions is formatted as a comma-separated size list.
Both are shown in the demo tooltip.
</content>
</entry>
<entry>
<title>Fix writeValueAtRange sending scalar for single-element range writes</title>
<updated>2026-02-24T15:51:06Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-24T15:51:06Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=0a3a5c241e0de6587f0c19fd3ef73024fa1d4b52'/>
<id>urn:sha1:0a3a5c241e0de6587f0c19fd3ef73024fa1d4b52</id>
<content type='text'>
OPC UA requires an array value when using an index range, even for a
single element.  Strict servers reject a scalar with BadIndexRangeNoData.
Wrap the coerced value in a QVariantList when it isn't one already.
</content>
</entry>
<entry>
<title>Add writeValueAtRange for index-range array writes</title>
<updated>2026-02-23T16:35:34Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-23T16:35:34Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=4ac860baa81f30e3e1fc9aaa42a3f0bb0537543a'/>
<id>urn:sha1:4ac860baa81f30e3e1fc9aaa42a3f0bb0537543a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add custom log handler and expand demo node coverage</title>
<updated>2026-02-20T15:11:45Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-20T15:11:45Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=c3ea69c02a5c877fa86ccbeee5c4efa11ae2ee5c'/>
<id>urn:sha1:c3ea69c02a5c877fa86ccbeee5c4efa11ae2ee5c</id>
<content type='text'>
Replace default Qt message pattern with a custom handler that matches
open62541 server log format: timestamps with UTC offset, colored
type/category tags padded to 20 chars, and shortened category names.

Add sbyte, byte, datetime, guid, and bytestring node types to all
three demo pages. Add Guid type coercion to writeValue.
</content>
</entry>
<entry>
<title>Wire monitored property to OPC UA monitored items</title>
<updated>2026-02-20T13:50:39Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-20T13:50:39Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=6c142a234673e442561b2c050b727aa4400177d8'/>
<id>urn:sha1:6c142a234673e442561b2c050b727aa4400177d8</id>
<content type='text'>
The monitored bool now calls enableMonitoring/disableMonitoring on
the Value attribute. Adds publishingInterval property (default 100ms).
Value is no longer read at init — delivered by the monitored item.
Empty 4th demo page to verify monitoring stops when navigating away.
</content>
</entry>
<entry>
<title>Add write support with automatic type coercion to OpcUaMonitoredNode</title>
<updated>2026-02-20T12:06:24Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-20T11:59:07Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=47227acd25c59a1d4b2961c0e1b1eb879e68adec'/>
<id>urn:sha1:47227acd25c59a1d4b2961c0e1b1eb879e68adec</id>
<content type='text'>
writeValue() Q_INVOKABLE coerces QML JS types to the exact C++ type
expected by the OPC UA node (auto-detected from DataType attribute via
opcUaDataTypeToQOpcUaType). Handles all scalar types, booleans, and
comma-separated array input. Adds writable property derived from
AccessLevel bits. Demo shows inline TextField + Write button for
writable nodes, "(READ-ONLY)" for others.
</content>
</entry>
<entry>
<title>Display all 30 nodes across 3 pages with human-readable tooltips</title>
<updated>2026-02-20T11:32:56Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-20T11:32:56Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkQtOpcUa/commit/?id=263a055f9b9460e4da747c7e56372e963f72fe68'/>
<id>urn:sha1:263a055f9b9460e4da747c7e56372e963f72fe68</id>
<content type='text'>
NodePage rewritten with Repeater/ItemDelegate showing 10 nodes per page
(RW Scalars, RO Scalars, RW Arrays). DataType resolved via namespace0Id
helpers, AccessLevel decoded from bitmask to readable flags.
</content>
</entry>
</feed>
