using System; namespace ZB.MOM.WW.OtOpcUa.Driver.Historian.Wonderware.Backend { /// /// OPC-UA-free representation of a single historical data point. The sidecar serialises /// these onto the TCP wire (HistorianSampleDto) for the .NET 10 /// WonderwareHistorianClient, which maps quality and value into OPC UA /// DataValue on its side. Raw OPC DA quality byte is preserved so the client /// can reuse the same quality mapper it already uses for live reads. /// public sealed class HistorianSample { /// Gets or sets the historical data value. public object? Value { get; set; } /// Gets or sets the raw OPC DA quality byte from the historian SDK (low 8 bits of OpcQuality). public byte Quality { get; set; } /// Gets or sets the UTC timestamp of the historical sample. public DateTime TimestampUtc { get; set; } } /// /// Result of . When is /// null the aggregate is unavailable for that bucket — the client maps to BadNoData. /// public sealed class HistorianAggregateSample { /// Gets or sets the aggregate value, or null if unavailable. public double? Value { get; set; } /// Gets or sets the UTC timestamp of the aggregate sample. public DateTime TimestampUtc { get; set; } } }