- 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
2.7 KiB
Wonderware Historian Backend — RETIRED
This backend has been retired. The bespoke Wonderware TCP/ArchestrA historian sidecar (
OtOpcUaWonderwareHistorian) and itsDriver.Historian.Wonderware*projects — plus the vestigialHistorian.Wonderwaredriver 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 →
GatewayHistorianDataSourceover theServerHistorianappsettings section. - Alarm history →
GatewayAlarmHistorianWriter(the gatewaySendEventpath) behind the durableLocalDbStoreAndForwardSink; alarm-historyReadEventsneeds the gateway runningRuntimeDb:EventReadsEnabled=true. - Continuous historization → a crash-safe FasterLog outbox +
ContinuousHistorizationRecorderdraining to the gateway'sWriteLiveValues(ContinuousHistorizationsection); needs the gateway runningRuntimeDb:Enabled=true. - Tag provisioning →
AddressSpaceApplierfires a non-blockingIHistorianProvisioningEnsureTagshook 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.