summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Raise default publishing interval from 100ms to 250msThomas Vanbesien9 hours1-1/+1
|
* Add custom log handler and expand demo node coverageThomas Vanbesien9 hours3-14/+94
| | | | | | | | | 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.
* Wire monitored property to OPC UA monitored itemsThomas Vanbesien10 hours3-5/+104
| | | | | | | 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.
* Add write support with automatic type coercion to OpcUaMonitoredNodeThomas Vanbesien12 hours3-9/+277
| | | | | | | | | 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.
* Display all 30 nodes across 3 pages with human-readable tooltipsThomas Vanbesien12 hours3-131/+163
| | | | | | 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.
* Implement OpcUaMonitoredNode attribute reading with OpcUaNodeInfo gadgetThomas Vanbesien13 hours3-13/+337
|
* Add nodeId and monitored properties to OpcUaMonitoredNodeThomas Vanbesien14 hours3-4/+61
|
* Rename classes to OpcUa* prefix, replace BobinkNode with OpcUaMonitoredNode ↵Thomas Vanbesien14 hours11-732/+152
| | | | | | | | | | boilerplate Rename BobinkAuth → OpcUaAuth, BobinkClient → OpcUaClient (C++ class names only; QML module URI and singleton name stay as Bobink). Remove BobinkNode (QQuickItem-based) and add OpcUaMonitoredNode skeleton using QObject + QQmlParserStatus, following Qt convention for non-visual QML types.
* Extract errorChanged lambda into named handleClientError slotThomas Vanbesien26 hours2-10/+14
|
* Fix open62541 backend plugin failing to load at runtimeThomas Vanbesien26 hours1-0/+10
| | | | | | | The QtOpcUa backend plugin has $ORIGIN-relative RUNPATH resolving to qtopcua-install/lib/, but libopen62541.so lives in a separate install prefix. Symlink the open62541 libs into the QtOpcUa lib dir so dlopen can find them.
* Refactor BobinkClient and clean up commentsThomas Vanbesien26 hours4-63/+84
| | | | | | | | | | - Format BobinkAuth.cpp to match GNU style used elsewhere - Replace brittle error name array with QMetaEnum in BobinkClient - Move QOpcUaPkiConfiguration include from header to .cpp - Replace m_discoveryInterval member with file-scope constant - Add doc comments to SecurityMode and SecurityPolicy enums - Comment endpoint selection strategy in handleEndpointsReceived - Add missing QML ids to connectionPage and serverListView
* Reorganize BobinkClient by domain and make s_instance privateThomas Vanbesien26 hours4-226/+233
| | | | | | | Group header and source by domain (Connection, Discovery, PKI) so properties, methods, and signal handlers live together. Move enums before constructor, move s_instance to private, and add a public instance() accessor used by BobinkNode.
* Install QtOpcUa to local prefix instead of system Qt directoryThomas Vanbesien26 hours3-14/+17
| | | | | | | Add QTOPCUA_INSTALL_DIR and CMAKE_INSTALL_PREFIX so QtOpcUa installs to build/deps/qtopcua-install/ rather than polluting ~/Qt/6.10.2/. Use QT_ADDITIONAL_PACKAGES_PREFIX_PATH so Qt's find_package resolves OpcUa from the local install.
* Update .gitignoreThomas Vanbesien30 hours1-0/+1
|
* Rename QML singleton to Bobink and simplify singleton lifecycleThomas Vanbesien31 hours9-121/+168
| | | | | | | | Replace QML_ELEMENT with QML_NAMED_ELEMENT(Bobink) so QML references use `Bobink` instead of `BobinkClient`. Remove instance()/create() factory in favor of inline s_instance set in the constructor. Import BobinkPlugin statically in demo, link demo to BobinkQtOpcUaplugin, and make library link dependencies PUBLIC. Add .qtcreator to gitignore.
* Log attribute reads to debug console and replace raw C++ types with Qt ↵Thomas Vanbesien36 hours5-36/+163
| | | | | | | | | | | | equivalents Connect QOpcUaNode::attributeRead signal to new handler that logs read results (value or error code) to the debug console via BobinkClient::statusMessage. Add nameFromAttribute() helper. Replace const char* arrays with QLatin1StringView, bare string literals with QStringLiteral, uint with quint32, int with qint32. Rename statusLog to debugLog in Main.qml for consistency.
* Add BobinkNode QML type and two-page demo for node monitoringThomas Vanbesien43 hours6-300/+816
| | | | | | | | | | | | | BobinkNode (QQuickItem) monitors a single OPC UA node with automatic lifecycle: monitoring starts/stops based on item visibility (StackView page switches, Loader, etc.). Properties: nodeId, value (r/w), status, sourceTimestamp, serverTimestamp. On-demand readAttribute() for metadata. writeError signal for failed writes. Demo restructured with StackView: connection page → two node pages demonstrating the visibility-based monitoring lifecycle.
* Rename targets, route messages to debug console, clean upThomas Vanbesien43 hours6-395/+622
| | | | | | | | - Rename CMake project and library target to BobinkQtOpcUa (URI stays Bobink) - Rename demo target to BobinkDemo, output binary to build/bin/ - Route all QML status/error messages to the in-app debug console - Remove discoveryInterval QML property, default to 30s internally - Add errorChanged handler, PKI file validation in applyPki()
* Add direct connect, auto-detect PKI, and rework demo flowThomas Vanbesien3 days3-14/+230
| | | | | | | | | | | - connectDirect(policy, mode): connect without endpoint discovery, for servers with no unencrypted endpoint. Sets user identity token policy matching the auth mode. - autoDetectPki(): scan own/certs/*.der and own/private/*.pem|crt, called automatically at startup. - Demo: discovery auto-starts, PKI section hidden behind toggle with auto-detected cert summary, direct connect appears on connect failure. File/folder dialogs for manual PKI override.
* Refactor and document: fix cert filenames, add Doxygen, improve demoThomas Vanbesien3 days8-75/+241
| | | | | | | | | | | | | | | | | | | Refactoring (issues 1,3,4,5,7,8,9,10 from review): - Replace hardcoded cert filenames with certFile/keyFile properties - Add 30s timeout to certificate trust QEventLoop - Cache servers() QVariantList instead of rebuilding per call - Validate URLs before passing to QtOpcUa - Use ComboBox valueRole for robust enum mapping - Add certificate trust dialog to demo - Remove unnecessary RowLayout wrapper - Remove debug output from BuildDeps.cmake Documentation: - Add Doxygen file blocks to all C++ files - Document AuthMode enum, toAuthenticationInformation(), key Q_INVOKABLE methods, certificateTrustRequested signal contract - Convert section banners to standard format - Add file/target comments to CMake and QML files
* Initial Bobink library: BobinkAuth, BobinkClient, and demo appThomas Vanbesien3 days15-0/+948
Implements the core OPC UA wrapper library with: - Build system with automatic dep building (open62541, QtOpcUa) - BobinkAuth: QML auth component (anonymous/userpass/certificate) - BobinkClient: QML singleton managing connection, LDS discovery, PKI configuration, endpoint selection, and certificate trust flow - Demo app for manual testing of the full connection flow