docs: Galaxy alias tags + relay converter (Uns.md, CLAUDE.md)

This commit is contained in:
Joseph Doherty
2026-06-11 21:39:12 -04:00
parent 4af27ea173
commit 2a30d7185a
2 changed files with 49 additions and 0 deletions
+9
View File
@@ -45,6 +45,15 @@ Galaxy objects have two names:
Example: browsing `TestMachine_001/DelmiaReceiver/DownloadPath` translates to MXAccess reference `DelmiaReceiver_001.DownloadPath`.
**Alias tags** (`GalaxyMxGateway`-backed equipment `Tag`s) are a lighter
alternative to relay virtual tags: they store the Galaxy reference as
`TagConfig.FullName` (`tag_name.AttributeName`) and surface it under a UNS name
via a direct driver subscription, delivering native MX quality/timestamp with no
Roslyn script. They are authored on the equipment page's **Tags** tab via the
"Add alias (browse Galaxy)" button. A relay→alias converter runs per-equipment
(Tags-tab toolbar) or fleet-wide at `/uns/convert-relays` (FleetAdmin-gated),
with a dry-run preview before applying.
### Data Type Mapping
Galaxy `mx_data_type` values map to OPC UA types (Boolean, Int32, Float, Double, String, DateTime, etc.). Array attributes use ValueRank=1 with ArrayDimensions from the Galaxy attribute definition. The driver-side mapping lives in `src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/Browse/DataTypeMap.cs`.
+40
View File
@@ -95,6 +95,46 @@ Add and edit virtual tags on the equipment page's **Virtual Tags** tab; the
data type is chosen from the standard OPC UA type list and the Monaco script
editor is available inline.
### Alias tags
An **alias tag** surfaces a Galaxy attribute under a friendly UNS name without
requiring a Roslyn script. It is an ordinary equipment `Tag` bound to the
`GalaxyMxGateway` driver; the Galaxy reference is stored in `TagConfig` as
`{"FullName":"tag_name.AttributeName"}`. Because the value comes from a direct
driver subscription — not a script relay — quality and timestamp are native MX,
and there is no Roslyn overhead.
**Adding an alias:** on the equipment **Tags** tab, click **Add alias (browse
Galaxy)**. A live Galaxy browse picker opens; navigate to the attribute you
want. After selecting it, set the tag **Name**, **DataType**, and **AccessLevel**
(default: read-only; opt in to write-through at your own discretion — writes go
through the Galaxy driver's security). The button is disabled when the
equipment's cluster has no `GalaxyMxGateway` driver instance.
In the Tags list, alias tags show an **alias** badge and their Source as
`galaxy:<tag_name.AttributeName>`. There is no new entity type or schema
migration — the alias is just a `Tag` row with `DriverType = GalaxyMxGateway`
and the `FullName` field in its JSON config.
**Relay → alias converter:** if you have existing "relay" virtual tags whose
scripts are nothing but `return ctx.GetTag("X").Value;`, a converter can
rewrite them as alias tags automatically:
- **Per-equipment** — a toolbar action on the Tags tab opens a dry-run preview
(lists what will be converted and what will be skipped), then a confirm-apply
step.
- **Fleet-wide** — `/uns/convert-relays` (FleetAdmin-gated) runs the same
dry-run + apply across all equipment in the fleet.
The converter skips and reports items it cannot safely migrate:
- virtual tags whose body is not a pure single-value relay
- virtual tags that are historized
- equipment whose cluster has no Galaxy gateway
- relay references containing `{{equip}}` tokens that cannot be resolved
The converter edits the **draft config only** — deploy normally afterward to
activate the changes.
## Bulk import
**Import equipment CSV** (toolbar) bulk-creates equipment across many lines