1. AddressSpace Hierarchy
Root Node:
Objects/NG-Gateway
Hierarchy Structure:
Objects/NG-Gateway/{channel}/{device}/{point}
Where:
{channel}useschannel_nameas browse name{device}usesdevice_name{point}usespoint_key
2. NodeId Rules
Each point Variable uses String NodeId:
text
ns=1;s={channel}.{device}.{point_key}Each component will be sanitized:
- Allowed:
[A-Za-z0-9._-] - Other characters replaced by
-
Important: Do not change sanitize strategy arbitrarily
Once changed, NodeId/mapping saved on client side will become invalid (Breaking change).
3. DataType and AccessLevel Mapping
- Variable
DataTypemapped from pointdata_type AccessLevelmapped from pointaccess_mode:- Read → CURRENT_READ
- Write → CURRENT_WRITE
- ReadWrite → READ|WRITE
4. Expose "Subscribed Points" Only
Current implementation intentionally avoids "Exposing all gateway points":
- Nodes are created on demand when processing Telemetry/Attributes (lazy)
- Runtime delta (Point add/delete/modify) only updates "Points already existing in local cache"
This means:
- Unsubscribed/Unrouted data points will not suddenly appear in OPC UA Server
- You need to create AppSubscription first and ensure data enters this App
