dohertj2 dohertj2
  • Joined on 2026-02-20
dohertj2 pushed to main at dohertj2/scadaproj 2026-10-12 08:38:53 -04:00
aa7093b53b docs(index): OtOpcUa batch #679–#680 — historian aggregate parity, Gateway Average/Count refused
dohertj2 pushed to master at dohertj2/lmxopcua 2026-10-12 08:38:38 -04:00
8ebee2ac40 docs(historian): warn that QuestDB first()/last() ordering is implementation behaviour (#680 F1 review)
d266ff83f4 Merge fix/680-startend-race: single-scan Start/End/Delta (QuestDB/SqlServer), null-tolerant bucket readers (#680 live gate F1)
2ceed561ad fix(historian): live-gate 8 F1 — per-sample counts and picks from one table version (#680 follow-up)
11f792538e Merge feat/680-per-sample: per-sample aggregates SDK/Part 13 parity — Count Good-only + in-range zero, raw Start/End, Delta status, end-of-data Partial (#680)
b5e3e5108c docs(historian): #680 lane B review — QuestDB data-range lookups are partition scans, both-direction gate, all-Bad Count 0x80000401, outage-last parity test, CLAUDE.md per-sample bullet
Compare 12 commits »
dohertj2 closed issue dohertj2/lmxopcua#679 2026-10-12 08:38:37 -04:00
Gateway historian: Count and Average mapped to AVEVA modes with different semantics (Counter delta, time-weighted average)
dohertj2 commented on issue dohertj2/lmxopcua#680 2026-10-12 08:38:37 -04:00
Time-weighted aggregates: forward differences from the SDK AggregateCalculator (TimeAverage/Total status, Total at start of data, Partial on truncated)

Fixed — merged f6a26286 (time-weighted lane), 11f79253 (per-sample lane), d266ff83 (live-gate fix). Part 13 is treated as authoritative; the SDK AggregateCalculator (1.5.378,…

dohertj2 closed issue dohertj2/lmxopcua#680 2026-10-12 08:38:37 -04:00
Time-weighted aggregates: forward differences from the SDK AggregateCalculator (TimeAverage/Total status, Total at start of data, Partial on truncated)
dohertj2 commented on issue dohertj2/lmxopcua#679 2026-10-12 08:38:36 -04:00
Gateway historian: Count and Average mapped to AVEVA modes with different semantics (Counter delta, time-weighted average)

Fixed — fb5ec80f (merged 19a4c093).

AVEVA's 15 retrieval modes include no arithmetic mean and no sample count, so the Gateway backend no longer returns a different statistic under the…

dohertj2 opened issue dohertj2/lmxopcua#683 2026-10-11 16:38:14 -04:00
Historian processed reads: bound the data-range lookup cost on QuestDB; trim the SqlServer Start/End query
dohertj2 opened issue dohertj2/lmxopcua#684 2026-10-11 16:38:14 -04:00
Historian aggregates: Average/Minimum/Maximum include Uncertain samples (Part 13 / SDK use Good only)
dohertj2 commented on issue dohertj2/lmxopcua#616 2026-10-11 15:29:49 -04:00
S7: Timer/Counter numbering and BCD decode need a real S7-300/400 CPU

Evaluated adalbertuschris/PLC_Sim as a substitute for a real CPU (2026-10-11) — not usable.

Reviewed its S7comm handler (`Packets/S7PacketGenerat…

dohertj2 opened issue dohertj2/lmxopcua#681 2026-10-11 15:23:24 -04:00
Gateway historian: compute per-sample aggregates (Average, Count, Start/End, Delta, PercentGood...) from raw reads
dohertj2 opened issue dohertj2/lmxopcua#682 2026-10-11 15:23:24 -04:00
Advertise only the aggregates the configured historian backend serves (HistoryServerCapabilities/AggregateFunctions)
dohertj2 pushed to main at dohertj2/scadaproj 2026-10-11 13:20:49 -04:00
17cb91a315 docs(index): OtOpcUa follow-up batch #674-#678 (fast OpcUaClient recovery, reverse history reads, HistoryUpdate Primary-only, role overlays)
dohertj2 commented on issue dohertj2/lmxopcua#677 2026-10-11 13:20:33 -04:00
Time-weighted aggregates (#671) follow-ups: reverse anchoring, Partial bit, integral unit, AggregateConfiguration, CLI list

Items 1, 2, 4, 5 and the offline part of 3 done — merged to master (945ec2c0; client list in 3067146b).

  1. Reverse processed reads (all aggregates, SqlServer + QuestDB) now follow the…
dohertj2 commented on issue dohertj2/lmxopcua#676 2026-10-11 13:20:32 -04:00
OpcUaClient session loss (#670) follow-ups: TCP-stall proxy test, ReconnectPeriod field, recovery latency, drop observability

Done — merged to master (50c09e21, live-gate fix 6d5c1c76).

  1. In-place blip test: new TcpStallProxy + OpcUaClientDriverStallWireTests (in-process server): stall → one `BadNoCommunic…
dohertj2 closed issue dohertj2/lmxopcua#676 2026-10-11 13:20:32 -04:00
OpcUaClient session loss (#670) follow-ups: TCP-stall proxy test, ReconnectPeriod field, recovery latency, drop observability
dohertj2 commented on issue dohertj2/lmxopcua#678 2026-10-11 13:20:32 -04:00
Small follow-ups from the #667-#673 batch (retention cancel path, #672 tests, FOCAS flake, cosmetics, rig cert)

Done — merged to master (1375f934 + 69190b14; client items in 3067146b/045a21da).

  1. Retention cancel path: new tests — a real mid-command SqlClient cancel while the purge's DELETE…
dohertj2 closed issue dohertj2/lmxopcua#678 2026-10-11 13:20:32 -04:00
Small follow-ups from the #667-#673 batch (retention cancel path, #672 tests, FOCAS flake, cosmetics, rig cert)
dohertj2 commented on issue dohertj2/lmxopcua#675 2026-10-11 13:20:32 -04:00
HistoryRead paging (#669) follow-ups: reverse capped read, events end-only, Gateway year-9999 bound

Items 1 and 2 done — merged to master (8e6ac4b3, review follow-ups 7594120a).

  • Reverse event reads (StartTime > EndTime) now return events newest-first and page with continuation…
dohertj2 commented on issue dohertj2/lmxopcua#674 2026-10-11 13:20:31 -04:00
Part 11 modified-value history (#668) follow-ups: QuestDB TTL exposure, schema-v2 posture, cross-node ordering

Done — merged to master (e59ab693, review follow-ups 029a9162; client item in 3067146b/045a21da).

  1. QuestDB TTL vs far-future timestamps — not a threat at the default config. Spike…
dohertj2 closed issue dohertj2/lmxopcua#674 2026-10-11 13:20:31 -04:00
Part 11 modified-value history (#668) follow-ups: QuestDB TTL exposure, schema-v2 posture, cross-node ordering