Extensible OPC UA Client
Jan Schlachter, Alexander Franjic, Christoph Wolf, Marius Reddig, Christopher Besch, Marwin Glaser
• 12th Sep 2024
Extensible
OPC UA Client
Working Title: Magnesia
Requirements
Graphical OPC UA Client
Extensible / Open Source
Cross-Platform C++
Live Demo
Linux
macOS
Windows
GUI Overview
Activities as Tabs
AddActivity
Settings
DataViewer
About
DataViewer uses Panels
User Docs
Activity Development
Settings Activity
Edit Settings
Manage Certificates and Keys
SettingsManager
Settings grouped in Domains
Domains defined by (Activity) developer
Define new Settings
Update Settings
Retrieve Settings
Reset Settings
Setting Types
Bool
String
Int
Double
Enum
HistoricServerConnection
Certificate
KeySetting
ApplicationCertificate
Layout
StorageManager
Declared in StorageManager
Defined in SQLStorageManager
Migrations
Store Data
Retrieve Data
Retrieve All
Notice Change
Cascade Deletion
e.g. Certificate → ApplicationCertificate → HistoricServerConnection → HistoricServerConnectionSetting
Certificate Activity
Create/View ApplicationCertificates
Create
View
DataViewer
Panel Development
TreeView
AttributeView
NodeView
ReferenceView
LogView
Router
Open Activity without knowing it
URL Handler
Open URL
Extensibility
Easy to develop/add new
Activities
Panels
Settings
State of the art CMake build system
Build and Dependencies
C++20
CMake
Dependencies in all major Linux Distros (including Debian)
gcc 12.2.0 / clang 14.0.6 or newer
cmake 3.25.0 or newer
Qt 6.4.2 or newer
open62541pp 0.13.0 (via CMake's FETCHCONTENT)
Nix Flake
CI
Implemented in Shell Scripts
Runs locally
Independent of GitLab
Code Docs
Process / Tooling
Full meetings weekly
Where are we?
What needs to happen?
Actual work alone / in pairs
So much Git!
Pflichtenheft Phase
24 pages
LaTeX
Graphics with draw.io
Git
59 Merge-Requests (MRs)
In German
Design Phase
33 pages
LaTeX
Graphics in TikZ, draw.io, Inkscape, qt-creator
Git
51 MRs
Human approval process
In English
Implementation / QA Phase
11k lines of code (+5k blank and comments)
Neovim, VSCodium, CLion
Git
101 MRs
Human approval process
CI
In English
Presentation
22 slides
Reveal.js
Git (directly on main)
In English
Challenges
Different Levels of Skill
C++ new for 4/6
Qt new for 5/6
OPC UA new for 6/6
Solution: Review Process
Did we make it?
33/34 must-have criteria from Pflichtenheft
OPC UA doesn't allow subscribing Node references
3/13 nice-to-have criteria
Implemented according to Design:
Storage/Settings
Activity System
Layout System
...
Redesigned in implementation phase:
OPC UA abstraction
Lessons Learned
Git
, C++, Qt, OPC UA
Communication
Splitting work with different skill levels
Lift as You Climb
Magnesia PSE
Magnesia PSE