Files
lmxopcua/docs/drivers/Historian.Wonderware.md
T
Joseph Doherty 60a1e7e669 docs(historian): fix-wave docs and stale comments
- Historian.md: Empty samples always Bad (writer/updater/read clamp),
  long-name refusal, 5 s bootstrap failure cache, AtTime after now, info-bit
  masking, HistoryUpdate does NOT type-check (M-1 decision), DeleteRaw
  needs both bounds, reverse Raw paging, the historian/historization metric
  prefixes, and provisioning numeric-only lines qualified as Gateway.
- CLAUDE.md numeric-only lines qualified as Gateway backend.
- Stale 'sole historian' lines in DriverLifecycle, ServiceHosting and the
  retired Wonderware stub; Client.CLI exit-code contract.
- ServerHistorianOptions: Endpoint/Backend XML docs untangled, Validate()
  indented; Program.cs comments are backend-neutral; T10 week-test day count.

Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
2026-10-09 14:33:30 -04:00

2.7 KiB

Wonderware Historian Backend — RETIRED

This backend has been retired. The bespoke Wonderware TCP/ArchestrA historian sidecar (OtOpcUaWonderwareHistorian) and its Driver.Historian.Wonderware* projects — plus the vestigial Historian.Wonderware driver type — were removed. HistorianGateway is now the default historian backend for OtOpcUa (read, alarm-write, and continuous historization); a plain SQL Server backend is the alternative (ServerHistorian:Backend=SqlServer, see Historian.md).

What replaced it

OtOpcUa now consumes the ZB.MOM.WW.HistorianGateway sidecar through the Gitea-feed ZB.MOM.WW.HistorianGateway.Client gRPC package (historian_gateway.v1), behind the IHistorianGatewayClient seam in ZB.MOM.WW.OtOpcUa.Driver.Historian.Gateway:

  • HistoryRead → GatewayHistorianDataSource over the ServerHistorian appsettings section.
  • Alarm history → GatewayAlarmHistorianWriter (the gateway SendEvent path) behind the durable LocalDbStoreAndForwardSink; alarm-history ReadEvents needs the gateway running RuntimeDb:EventReadsEnabled=true.
  • Continuous historization → a crash-safe FasterLog outbox + ContinuousHistorizationRecorder draining to the gateway's WriteLiveValues (ContinuousHistorization section); needs the gateway running RuntimeDb:Enabled=true.
  • Tag provisioning → AddressSpaceApplier fires a non-blocking IHistorianProvisioning EnsureTags hook for added historized tags.

The gateway API key must carry the scopes historian:read, historian:write, historian:tags:write.

Where to read now

  • ../Historian.md — the full historian guide (read path, alarm path, continuous historization, config keys, migration note).
  • README.md — driver / back-end overview.
  • ../ServiceHosting.md — deployment (the historian backend is the external HistorianGateway, not an installed sidecar).

Migration

Deployments that carried the old ServerHistorian Wonderware keys must rename them:

Old (Wonderware) key New (gateway) key
ServerHistorian:Host + :Port ServerHistorian:Endpoint (https://host:5222)
ServerHistorian:SharedSecret ServerHistorian:ApiKey (supply via env ServerHistorian__ApiKey)
ServerHistorian:ServerCertThumbprint ServerHistorian:CaCertificatePath (+ UseTls / AllowUntrustedServerCertificate)

The AlarmHistorian section's old Wonderware connection keys (Host/Port/UseTls/ServerCertThumbprint/SharedSecret) were pruned — remove them; the SQLite store-and-forward knobs are retained and the downstream connection is now sourced from ServerHistorian.