epanet-twin

Reference implementation: hydraulic twin service di atas engine open-source EPANET (WebAssembly) dan NATS JetStream. Halaman ini menampilkan output run terakhir dari pipeline — bukti bahwa arsitekturnya benar-benar jalan, bukan sekadar diagram.

[SINTETIS] Data ini dihasilkan oleh replay simulator — bukan data SCADA sungguhan, bukan dari jaringan PDAM riil.

Arsitektur pipeline

.inp (topologi jaringan) → generateReplayData (data SCADA sintetis, sumber terpisah) → runReplay (solver step-based, injeksi boundary condition) → NATS JetStream (subject hydraulic.<site>.state). Solver dijalankan di Node.js server-side — bukan Cloudflare Workers, karena Workers tidak bisa menjangkau jaringan OT tempat data SCADA sungguhan berada.

Visualisasi jaringan — siklus real-time

Warna node = tekanan (data solver asli). Lebar pipa = aliran. Animasi siklus 4 langkah (08:00 → 11:00 WIB).

08:00 WIB
< 10m Kritis 10-20m Waspada > 20m Aman Reservoir J1: 46.9m J2: 48.0m R1: 0m head
09:00 WIB
< 10m Kritis 10-20m Waspada > 20m Aman Reservoir J1: 49.2m J2: 53.1m R1: 0m head
10:00 WIB
< 10m Kritis 10-20m Waspada > 20m Aman Reservoir J1: 48.0m J2: 50.4m R1: 0m head
11:00 WIB
< 10m Kritis 10-20m Waspada > 20m Aman Reservoir J1: 49.7m J2: 54.2m R1: 0m head
08:00
09:00
10:00
11:00

Output run terakhir

Timestamp (WIB) Tekanan node Aliran pipa
2026-07-31T08:00:00+07:00 J1=46.93m, J2=48.00m, R1=0.00m P1=90.00 L/s, P2=40.00 L/s
2026-07-31T09:00:00+07:00 J1=49.15m, J2=53.06m, R1=0.00m P1=45.00 L/s, P2=20.00 L/s
2026-07-31T10:00:00+07:00 J1=47.97m, J2=50.37m, R1=0.00m P1=72.00 L/s, P2=32.00 L/s
2026-07-31T11:00:00+07:00 J1=49.67m, J2=54.25m, R1=0.00m P1=27.00 L/s, P2=12.00 L/s