From 0672ea5ffa59a3389c5d67bb151ebc86849dc354 Mon Sep 17 00:00:00 2001 From: grabowski Date: Mon, 10 Aug 2026 17:44:36 +0700 Subject: [PATCH] feat: Oct-2024 flood replay, simulation hooks, and static replay data - header button 'Replay Oct 2024 flood': animates the real Sep 15 - Oct 12 2024 P.1 hourly series (~45 s) through the flood-zone display; zones flood blue as the river climbs to the 5.30 m record and recede as it falls; click again to stop; restores live state when done - replay reads a pre-extracted 15 kB static snapshot (static/flood-2024-p1.json, 335 frames) instead of pulling the 4.6 MB all-time history on every click; falls back to the history API if the snapshot is missing - demo hooks for testing/presentations: ?demo_level=4.4 pins a simulated P.1 level, ?demo_rise=1 animates rising water to 5.30 m; both label the outlook line as SIMULATION with the real level alongside --- src/static/dashboard.html | 76 ++++++++++++++++++++++++++++++++++- src/static/flood-2024-p1.json | 1 + 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 src/static/flood-2024-p1.json diff --git a/src/static/dashboard.html b/src/static/dashboard.html index 6b0de96..89fc5be 100644 --- a/src/static/dashboard.html +++ b/src/static/dashboard.html @@ -182,6 +182,7 @@
LIVE DATA
+
@@ -732,6 +733,61 @@ return ``; } + async function replayFlood2024() { + const button = $('replay-2024'); + if (state.replayTimer) { // stop a running replay + window.clearInterval(state.replayTimer); + state.replayTimer = null; + state.p1Now = state.p1RealNow; + restyleFloodZones(); + button.textContent = '▶ Replay Oct 2024 flood'; + $('p1-peak').textContent = state.p1PeakText || ''; + return; + } + button.textContent = 'Loading 2024 data…'; + try { + // pre-extracted static snapshot (15 kB); fall back to the live history API + let frames; + const staticResponse = await fetch('/static/flood-2024-p1.json'); + if (staticResponse.ok) { + frames = await staticResponse.json(); + } else { + const response = await fetch('/measurements/history/P.1?hours=876000&limit=100000'); + if (!response.ok) throw new Error(`HTTP ${response.status}`); + const rows = await response.json(); + frames = rows.filter((row) => { + const t = row.timestamp; + return t >= '2024-09-15' && t <= '2024-10-12' && row.water_level != null; + }); + } + if (frames.length < 10) throw new Error('no 2024 data in history'); + state.p1RealNow = state.p1Now; + state.p1PeakText = $('p1-peak').textContent; + state.zonesUserHidden = false; + await showFloodZones(false); + button.textContent = '⏹ Stop replay'; + let i = 0; + state.replayTimer = window.setInterval(() => { + const frame = frames[Math.min(i, frames.length - 1)]; + state.p1Now = Number(frame.water_level); + const when = new Date(frame.timestamp).toLocaleString([], { day: 'numeric', month: 'short', hour: '2-digit' }); + $('p1-peak').textContent = `⏪ 2024 flood replay · ${when} · P.1 at ${state.p1Now.toFixed(2)} m`; + restyleFloodZones(); + i += 1; // 1 h per frame (~45 s total) + if (i >= frames.length + 25) { // hold the last frame briefly + window.clearInterval(state.replayTimer); + state.replayTimer = null; + state.p1Now = state.p1RealNow; + restyleFloodZones(); + button.textContent = '▶ Replay Oct 2024 flood'; + $('p1-peak').textContent = state.p1PeakText || ''; + } + }, 120); + } catch (error) { + button.textContent = `Replay unavailable: ${error.message}`; + } + } + async function loadCustomMarkers() { try { const response = await fetch('/static/custom-markers.json'); @@ -773,8 +829,25 @@ const row = p1rows.reduce((best, r) => r.horizon_hours > best.horizon_hours ? r : best); state.p1Stages = row.stages; state.p1Now = row.current_level == null ? null : Number(row.current_level); + // Demo hooks: ?demo_level=4.4 pins a simulated P.1 level; ?demo_rise=1 animates + // the water from the real level up to the 2024 record (5.30 m). + const params = new URLSearchParams(location.search); + const demoLevel = Number(params.get('demo_level')); + const simulated = Number.isFinite(demoLevel) && demoLevel > 0; + if (simulated) state.p1Now = demoLevel; + if (params.has('demo_rise') && !state.demoRiseTimer) { + let level = state.p1Now ?? 2.2; + state.demoRiseTimer = window.setInterval(() => { + level = Math.min(level + 0.05, 5.30); + state.p1Now = level; + $('p1-peak').textContent = `⚠ SIMULATION: rising water · P.1 at ${level.toFixed(2)} m (real: ${Number(row.current_level).toFixed(2)} m)`; + restyleFloodZones(); + if (level >= 5.30) window.clearInterval(state.demoRiseTimer); + }, 700); + } restyleFloodZones(); - $('p1-peak').textContent = `Now ${Number(row.current_level).toFixed(2)} m · predicted peak next ${row.horizon_hours} h: ${Number(row.predicted_max_level).toFixed(2)} m`; + $('p1-peak').textContent = (simulated ? `⚠ SIMULATION: P.1 at ${demoLevel.toFixed(2)} m (real: ${Number(row.current_level).toFixed(2)} m)` : + `Now ${Number(row.current_level).toFixed(2)} m`) + ` · predicted peak next ${row.horizon_hours} h: ${Number(row.predicted_max_level).toFixed(2)} m`; const strip = $('p1-stages'); strip.replaceChildren(); row.stages.forEach((s) => { @@ -835,6 +908,7 @@ $('refresh-button').addEventListener('click', loadDashboard); $('zones-toggle').addEventListener('click', toggleFloodZones); + $('replay-2024').addEventListener('click', replayFlood2024); $('history-range').addEventListener('change', () => { if (state.selectedStation) loadHistory(state.selectedStation); }); loadDashboard(); window.setInterval(loadDashboard, 5 * 60 * 1000); diff --git a/src/static/flood-2024-p1.json b/src/static/flood-2024-p1.json new file mode 100644 index 0000000..8c5b558 --- /dev/null +++ b/src/static/flood-2024-p1.json @@ -0,0 +1 @@ +[{"timestamp": "2024-09-15T01:00:00", "water_level": 1.81}, {"timestamp": "2024-09-15T02:00:00", "water_level": 1.81}, {"timestamp": "2024-09-15T03:00:00", "water_level": 1.8}, {"timestamp": "2024-09-15T04:00:00", "water_level": 1.8}, {"timestamp": "2024-09-15T05:00:00", "water_level": 1.79}, {"timestamp": "2024-09-15T06:00:00", "water_level": 1.78}, {"timestamp": "2024-09-15T07:00:00", "water_level": 1.78}, {"timestamp": "2024-09-15T08:00:00", "water_level": 1.78}, {"timestamp": "2024-09-15T09:00:00", "water_level": 1.77}, {"timestamp": "2024-09-15T10:00:00", "water_level": 1.77}, {"timestamp": "2024-09-15T11:00:00", "water_level": 1.77}, {"timestamp": "2024-09-15T12:00:00", "water_level": 1.76}, {"timestamp": "2024-09-15T13:00:00", "water_level": 1.76}, {"timestamp": "2024-09-15T14:00:00", "water_level": 1.75}, {"timestamp": "2024-09-15T15:00:00", "water_level": 1.75}, {"timestamp": "2024-09-15T16:00:00", "water_level": 1.74}, {"timestamp": "2024-09-15T17:00:00", "water_level": 1.73}, {"timestamp": "2024-09-15T18:00:00", "water_level": 1.73}, {"timestamp": "2024-09-15T19:00:00", "water_level": 1.75}, {"timestamp": "2024-09-15T20:00:00", "water_level": 1.77}, {"timestamp": "2024-09-15T21:00:00", "water_level": 1.82}, {"timestamp": "2024-09-15T22:00:00", "water_level": 1.84}, {"timestamp": "2024-09-15T23:00:00", "water_level": 1.85}, {"timestamp": "2024-09-16T00:00:00", "water_level": 1.83}, {"timestamp": "2024-09-17T01:00:00", "water_level": 1.71}, {"timestamp": "2024-09-17T02:00:00", "water_level": 1.71}, {"timestamp": "2024-09-17T03:00:00", "water_level": 1.72}, {"timestamp": "2024-09-17T04:00:00", "water_level": 1.72}, {"timestamp": "2024-09-17T05:00:00", "water_level": 1.73}, {"timestamp": "2024-09-17T06:00:00", "water_level": 1.73}, {"timestamp": "2024-09-17T07:00:00", "water_level": 1.74}, {"timestamp": "2024-09-17T08:00:00", "water_level": 1.75}, {"timestamp": "2024-09-17T09:00:00", "water_level": 1.75}, {"timestamp": "2024-09-17T10:00:00", "water_level": 1.75}, {"timestamp": "2024-09-17T11:00:00", "water_level": 1.76}, {"timestamp": "2024-09-17T12:00:00", "water_level": 1.76}, {"timestamp": "2024-09-17T13:00:00", "water_level": 1.76}, {"timestamp": "2024-09-17T14:00:00", "water_level": 1.77}, {"timestamp": "2024-09-17T15:00:00", "water_level": 1.76}, {"timestamp": "2024-09-17T16:00:00", "water_level": 1.76}, {"timestamp": "2024-09-17T17:00:00", "water_level": 1.76}, {"timestamp": "2024-09-17T18:00:00", "water_level": 1.76}, {"timestamp": "2024-09-17T19:00:00", "water_level": 1.76}, {"timestamp": "2024-09-17T20:00:00", "water_level": 1.76}, {"timestamp": "2024-09-17T21:00:00", "water_level": 1.76}, {"timestamp": "2024-09-17T22:00:00", "water_level": 1.76}, {"timestamp": "2024-09-17T23:00:00", "water_level": 1.76}, {"timestamp": "2024-09-18T00:00:00", "water_level": 1.76}, {"timestamp": "2024-09-19T01:00:00", "water_level": 1.72}, {"timestamp": "2024-09-19T02:00:00", "water_level": 1.71}, {"timestamp": "2024-09-19T03:00:00", "water_level": 1.71}, {"timestamp": "2024-09-19T04:00:00", "water_level": 1.7}, {"timestamp": "2024-09-19T05:00:00", "water_level": 1.7}, {"timestamp": "2024-09-19T06:00:00", "water_level": 1.69}, {"timestamp": "2024-09-19T07:00:00", "water_level": 1.68}, {"timestamp": "2024-09-19T08:00:00", "water_level": 1.67}, {"timestamp": "2024-09-19T09:00:00", "water_level": 1.66}, {"timestamp": "2024-09-19T10:00:00", "water_level": 1.66}, {"timestamp": "2024-09-19T11:00:00", "water_level": 1.66}, {"timestamp": "2024-09-19T12:00:00", "water_level": 1.66}, {"timestamp": "2024-09-19T13:00:00", "water_level": 1.66}, {"timestamp": "2024-09-19T14:00:00", "water_level": 1.66}, {"timestamp": "2024-09-19T15:00:00", "water_level": 1.66}, {"timestamp": "2024-09-19T16:00:00", "water_level": 1.66}, {"timestamp": "2024-09-19T17:00:00", "water_level": 1.66}, {"timestamp": "2024-09-19T18:00:00", "water_level": 1.65}, {"timestamp": "2024-09-19T19:00:00", "water_level": 1.65}, {"timestamp": "2024-09-19T20:00:00", "water_level": 1.64}, {"timestamp": "2024-09-19T21:00:00", "water_level": 1.64}, {"timestamp": "2024-09-19T22:00:00", "water_level": 1.63}, {"timestamp": "2024-09-19T23:00:00", "water_level": 1.63}, {"timestamp": "2024-09-20T00:00:00", "water_level": 1.63}, {"timestamp": "2024-09-21T01:00:00", "water_level": 1.74}, {"timestamp": "2024-09-21T02:00:00", "water_level": 1.75}, {"timestamp": "2024-09-21T03:00:00", "water_level": 1.75}, {"timestamp": "2024-09-21T04:00:00", "water_level": 1.75}, {"timestamp": "2024-09-21T05:00:00", "water_level": 1.74}, {"timestamp": "2024-09-21T06:00:00", "water_level": 1.74}, {"timestamp": "2024-09-21T07:00:00", "water_level": 1.74}, {"timestamp": "2024-09-21T08:00:00", "water_level": 1.73}, {"timestamp": "2024-09-21T09:00:00", "water_level": 1.72}, {"timestamp": "2024-09-21T10:00:00", "water_level": 1.71}, {"timestamp": "2024-09-21T11:00:00", "water_level": 1.71}, {"timestamp": "2024-09-21T12:00:00", "water_level": 1.71}, {"timestamp": "2024-09-21T13:00:00", "water_level": 1.71}, {"timestamp": "2024-09-21T14:00:00", "water_level": 1.71}, {"timestamp": "2024-09-21T15:00:00", "water_level": 1.71}, {"timestamp": "2024-09-21T16:00:00", "water_level": 1.71}, {"timestamp": "2024-09-21T17:00:00", "water_level": 1.71}, {"timestamp": "2024-09-21T18:00:00", "water_level": 1.71}, {"timestamp": "2024-09-21T19:00:00", "water_level": 1.71}, {"timestamp": "2024-09-21T20:00:00", "water_level": 1.71}, {"timestamp": "2024-09-21T21:00:00", "water_level": 1.74}, {"timestamp": "2024-09-21T22:00:00", "water_level": 1.76}, {"timestamp": "2024-09-21T23:00:00", "water_level": 1.77}, {"timestamp": "2024-09-22T00:00:00", "water_level": 1.77}, {"timestamp": "2024-09-23T01:00:00", "water_level": 2.13}, {"timestamp": "2024-09-23T02:00:00", "water_level": 2.14}, {"timestamp": "2024-09-23T03:00:00", "water_level": 2.13}, {"timestamp": "2024-09-23T04:00:00", "water_level": 2.12}, {"timestamp": "2024-09-23T05:00:00", "water_level": 2.12}, {"timestamp": "2024-09-23T06:00:00", "water_level": 2.16}, {"timestamp": "2024-09-23T07:00:00", "water_level": 2.21}, {"timestamp": "2024-09-23T08:00:00", "water_level": 2.25}, {"timestamp": "2024-09-23T09:00:00", "water_level": 2.28}, {"timestamp": "2024-09-23T10:00:00", "water_level": 2.27}, {"timestamp": "2024-09-23T11:00:00", "water_level": 2.27}, {"timestamp": "2024-09-23T12:00:00", "water_level": 2.27}, {"timestamp": "2024-09-23T13:00:00", "water_level": 2.3}, {"timestamp": "2024-09-23T14:00:00", "water_level": 2.37}, {"timestamp": "2024-09-23T15:00:00", "water_level": 2.46}, {"timestamp": "2024-09-23T16:00:00", "water_level": 2.54}, {"timestamp": "2024-09-23T17:00:00", "water_level": 2.63}, {"timestamp": "2024-09-23T18:00:00", "water_level": 2.67}, {"timestamp": "2024-09-23T19:00:00", "water_level": 2.69}, {"timestamp": "2024-09-23T20:00:00", "water_level": 2.7}, {"timestamp": "2024-09-23T21:00:00", "water_level": 2.71}, {"timestamp": "2024-09-23T22:00:00", "water_level": 2.73}, {"timestamp": "2024-09-23T23:00:00", "water_level": 2.76}, {"timestamp": "2024-09-24T00:00:00", "water_level": 2.82}, {"timestamp": "2024-09-25T01:00:00", "water_level": 4.35}, {"timestamp": "2024-09-25T02:00:00", "water_level": 4.39}, {"timestamp": "2024-09-25T03:00:00", "water_level": 4.41}, {"timestamp": "2024-09-25T04:00:00", "water_level": 4.43}, {"timestamp": "2024-09-25T05:00:00", "water_level": 4.45}, {"timestamp": "2024-09-25T06:00:00", "water_level": 4.45}, {"timestamp": "2024-09-25T07:00:00", "water_level": 4.45}, {"timestamp": "2024-09-25T08:00:00", "water_level": 4.45}, {"timestamp": "2024-09-25T09:00:00", "water_level": 4.45}, {"timestamp": "2024-09-25T10:00:00", "water_level": 4.45}, {"timestamp": "2024-09-25T11:00:00", "water_level": 4.46}, {"timestamp": "2024-09-25T12:00:00", "water_level": 4.48}, {"timestamp": "2024-09-25T13:00:00", "water_level": 4.5}, {"timestamp": "2024-09-25T14:00:00", "water_level": 4.53}, {"timestamp": "2024-09-25T15:00:00", "water_level": 4.57}, {"timestamp": "2024-09-25T16:00:00", "water_level": 4.61}, {"timestamp": "2024-09-25T17:00:00", "water_level": 4.66}, {"timestamp": "2024-09-25T18:00:00", "water_level": 4.7}, {"timestamp": "2024-09-25T19:00:00", "water_level": 4.75}, {"timestamp": "2024-09-25T20:00:00", "water_level": 4.79}, {"timestamp": "2024-09-25T21:00:00", "water_level": 4.83}, {"timestamp": "2024-09-25T22:00:00", "water_level": 4.86}, {"timestamp": "2024-09-25T23:00:00", "water_level": 4.89}, {"timestamp": "2024-09-26T00:00:00", "water_level": 4.9}, {"timestamp": "2024-09-27T01:00:00", "water_level": 4.25}, {"timestamp": "2024-09-27T02:00:00", "water_level": 4.23}, {"timestamp": "2024-09-27T03:00:00", "water_level": 4.21}, {"timestamp": "2024-09-27T04:00:00", "water_level": 4.21}, {"timestamp": "2024-09-27T05:00:00", "water_level": 4.19}, {"timestamp": "2024-09-27T06:00:00", "water_level": 4.19}, {"timestamp": "2024-09-27T07:00:00", "water_level": 4.19}, {"timestamp": "2024-09-27T08:00:00", "water_level": 4.22}, {"timestamp": "2024-09-27T09:00:00", "water_level": 4.23}, {"timestamp": "2024-09-27T10:00:00", "water_level": 4.23}, {"timestamp": "2024-09-27T11:00:00", "water_level": 4.23}, {"timestamp": "2024-09-27T12:00:00", "water_level": 4.24}, {"timestamp": "2024-09-27T13:00:00", "water_level": 4.24}, {"timestamp": "2024-09-27T14:00:00", "water_level": 4.24}, {"timestamp": "2024-09-27T15:00:00", "water_level": 4.24}, {"timestamp": "2024-09-27T16:00:00", "water_level": 4.23}, {"timestamp": "2024-09-27T17:00:00", "water_level": 4.23}, {"timestamp": "2024-09-27T18:00:00", "water_level": 4.22}, {"timestamp": "2024-09-27T19:00:00", "water_level": 4.21}, {"timestamp": "2024-09-27T20:00:00", "water_level": 4.2}, {"timestamp": "2024-09-27T21:00:00", "water_level": 4.18}, {"timestamp": "2024-09-27T22:00:00", "water_level": 4.16}, {"timestamp": "2024-09-27T23:00:00", "water_level": 4.14}, {"timestamp": "2024-09-28T00:00:00", "water_level": 4.12}, {"timestamp": "2024-09-29T01:00:00", "water_level": 3.24}, {"timestamp": "2024-09-29T02:00:00", "water_level": 3.22}, {"timestamp": "2024-09-29T03:00:00", "water_level": 3.19}, {"timestamp": "2024-09-29T04:00:00", "water_level": 3.16}, {"timestamp": "2024-09-29T05:00:00", "water_level": 3.13}, {"timestamp": "2024-09-29T06:00:00", "water_level": 3.1}, {"timestamp": "2024-09-29T07:00:00", "water_level": 3.09}, {"timestamp": "2024-09-29T08:00:00", "water_level": 3.06}, {"timestamp": "2024-09-29T09:00:00", "water_level": 3.05}, {"timestamp": "2024-09-29T10:00:00", "water_level": 3.05}, {"timestamp": "2024-09-29T11:00:00", "water_level": 3.05}, {"timestamp": "2024-09-29T12:00:00", "water_level": 3.06}, {"timestamp": "2024-09-29T13:00:00", "water_level": 3.06}, {"timestamp": "2024-09-29T14:00:00", "water_level": 3.06}, {"timestamp": "2024-09-29T15:00:00", "water_level": 3.06}, {"timestamp": "2024-09-29T16:00:00", "water_level": 3.05}, {"timestamp": "2024-09-29T17:00:00", "water_level": 3.04}, {"timestamp": "2024-09-29T18:00:00", "water_level": 3.04}, {"timestamp": "2024-09-29T19:00:00", "water_level": 3.05}, {"timestamp": "2024-09-29T20:00:00", "water_level": 3.09}, {"timestamp": "2024-09-29T21:00:00", "water_level": 3.13}, {"timestamp": "2024-09-29T22:00:00", "water_level": 3.17}, {"timestamp": "2024-09-29T23:00:00", "water_level": 3.22}, {"timestamp": "2024-09-30T00:00:00", "water_level": 3.27}, {"timestamp": "2024-10-01T01:00:00", "water_level": 3.26}, {"timestamp": "2024-10-01T02:00:00", "water_level": 3.26}, {"timestamp": "2024-10-01T03:00:00", "water_level": 3.26}, {"timestamp": "2024-10-01T04:00:00", "water_level": 3.25}, {"timestamp": "2024-10-01T05:00:00", "water_level": 3.23}, {"timestamp": "2024-10-01T06:00:00", "water_level": 3.2}, {"timestamp": "2024-10-01T07:00:00", "water_level": 3.15}, {"timestamp": "2024-10-01T08:00:00", "water_level": 3.09}, {"timestamp": "2024-10-01T09:00:00", "water_level": 3.0}, {"timestamp": "2024-10-01T10:00:00", "water_level": 2.94}, {"timestamp": "2024-10-01T11:00:00", "water_level": 2.87}, {"timestamp": "2024-10-01T12:00:00", "water_level": 2.79}, {"timestamp": "2024-10-01T13:00:00", "water_level": 2.77}, {"timestamp": "2024-10-01T14:00:00", "water_level": 2.65}, {"timestamp": "2024-10-01T15:00:00", "water_level": 2.59}, {"timestamp": "2024-10-01T16:00:00", "water_level": 2.55}, {"timestamp": "2024-10-01T17:00:00", "water_level": 2.5}, {"timestamp": "2024-10-01T18:00:00", "water_level": 2.48}, {"timestamp": "2024-10-01T19:00:00", "water_level": 2.45}, {"timestamp": "2024-10-01T20:00:00", "water_level": 2.44}, {"timestamp": "2024-10-01T21:00:00", "water_level": 2.43}, {"timestamp": "2024-10-01T22:00:00", "water_level": 2.44}, {"timestamp": "2024-10-01T23:00:00", "water_level": 2.49}, {"timestamp": "2024-10-02T00:00:00", "water_level": 2.52}, {"timestamp": "2024-10-03T01:00:00", "water_level": 3.18}, {"timestamp": "2024-10-03T02:00:00", "water_level": 3.19}, {"timestamp": "2024-10-03T03:00:00", "water_level": 3.2}, {"timestamp": "2024-10-03T04:00:00", "water_level": 3.23}, {"timestamp": "2024-10-03T05:00:00", "water_level": 3.28}, {"timestamp": "2024-10-03T06:00:00", "water_level": 3.36}, {"timestamp": "2024-10-03T07:00:00", "water_level": 3.46}, {"timestamp": "2024-10-03T08:00:00", "water_level": 3.61}, {"timestamp": "2024-10-03T09:00:00", "water_level": 3.73}, {"timestamp": "2024-10-03T10:00:00", "water_level": 3.83}, {"timestamp": "2024-10-03T11:00:00", "water_level": 3.91}, {"timestamp": "2024-10-03T12:00:00", "water_level": 3.94}, {"timestamp": "2024-10-03T13:00:00", "water_level": 3.98}, {"timestamp": "2024-10-03T14:00:00", "water_level": 4.02}, {"timestamp": "2024-10-03T15:00:00", "water_level": 4.07}, {"timestamp": "2024-10-03T16:00:00", "water_level": 4.15}, {"timestamp": "2024-10-03T17:00:00", "water_level": 4.23}, {"timestamp": "2024-10-03T18:00:00", "water_level": 4.33}, {"timestamp": "2024-10-03T19:00:00", "water_level": 4.45}, {"timestamp": "2024-10-03T20:00:00", "water_level": 4.55}, {"timestamp": "2024-10-03T21:00:00", "water_level": 4.63}, {"timestamp": "2024-10-03T22:00:00", "water_level": 4.7}, {"timestamp": "2024-10-03T23:00:00", "water_level": 4.75}, {"timestamp": "2024-10-04T00:00:00", "water_level": 4.78}, {"timestamp": "2024-10-05T01:00:00", "water_level": 5.23}, {"timestamp": "2024-10-05T02:00:00", "water_level": 5.25}, {"timestamp": "2024-10-05T03:00:00", "water_level": 5.25}, {"timestamp": "2024-10-05T04:00:00", "water_level": 5.25}, {"timestamp": "2024-10-05T05:00:00", "water_level": 5.25}, {"timestamp": "2024-10-05T06:00:00", "water_level": 5.27}, {"timestamp": "2024-10-05T07:00:00", "water_level": 5.28}, {"timestamp": "2024-10-05T08:00:00", "water_level": 5.28}, {"timestamp": "2024-10-05T09:00:00", "water_level": 5.28}, {"timestamp": "2024-10-05T10:00:00", "water_level": 5.28}, {"timestamp": "2024-10-05T11:00:00", "water_level": 5.29}, {"timestamp": "2024-10-05T12:00:00", "water_level": 5.3}, {"timestamp": "2024-10-05T13:00:00", "water_level": 5.3}, {"timestamp": "2024-10-05T14:00:00", "water_level": 5.29}, {"timestamp": "2024-10-05T15:00:00", "water_level": 5.29}, {"timestamp": "2024-10-05T16:00:00", "water_level": 5.29}, {"timestamp": "2024-10-05T17:00:00", "water_level": 5.29}, {"timestamp": "2024-10-05T18:00:00", "water_level": 5.29}, {"timestamp": "2024-10-05T19:00:00", "water_level": 5.28}, {"timestamp": "2024-10-05T20:00:00", "water_level": 5.28}, {"timestamp": "2024-10-05T21:00:00", "water_level": 5.28}, {"timestamp": "2024-10-05T22:00:00", "water_level": 5.27}, {"timestamp": "2024-10-05T23:00:00", "water_level": 5.26}, {"timestamp": "2024-10-06T00:00:00", "water_level": 5.23}, {"timestamp": "2024-10-07T01:00:00", "water_level": 4.23}, {"timestamp": "2024-10-07T02:00:00", "water_level": 4.18}, {"timestamp": "2024-10-07T03:00:00", "water_level": 4.13}, {"timestamp": "2024-10-07T04:00:00", "water_level": 4.09}, {"timestamp": "2024-10-07T05:00:00", "water_level": 4.04}, {"timestamp": "2024-10-07T06:00:00", "water_level": 4.0}, {"timestamp": "2024-10-07T07:00:00", "water_level": 3.95}, {"timestamp": "2024-10-07T08:00:00", "water_level": 3.93}, {"timestamp": "2024-10-07T09:00:00", "water_level": 3.89}, {"timestamp": "2024-10-07T10:00:00", "water_level": 3.85}, {"timestamp": "2024-10-07T11:00:00", "water_level": 3.81}, {"timestamp": "2024-10-07T12:00:00", "water_level": 3.77}, {"timestamp": "2024-10-07T13:00:00", "water_level": 3.73}, {"timestamp": "2024-10-07T14:00:00", "water_level": 3.69}, {"timestamp": "2024-10-07T15:00:00", "water_level": 3.67}, {"timestamp": "2024-10-07T16:00:00", "water_level": 3.63}, {"timestamp": "2024-10-07T17:00:00", "water_level": 3.6}, {"timestamp": "2024-10-07T18:00:00", "water_level": 3.57}, {"timestamp": "2024-10-07T19:00:00", "water_level": 3.53}, {"timestamp": "2024-10-07T20:00:00", "water_level": 3.5}, {"timestamp": "2024-10-07T21:00:00", "water_level": 3.47}, {"timestamp": "2024-10-07T22:00:00", "water_level": 3.45}, {"timestamp": "2024-10-07T23:00:00", "water_level": 3.43}, {"timestamp": "2024-10-08T00:00:00", "water_level": 3.41}, {"timestamp": "2024-10-09T01:00:00", "water_level": 2.93}, {"timestamp": "2024-10-09T02:00:00", "water_level": 2.91}, {"timestamp": "2024-10-09T03:00:00", "water_level": 2.89}, {"timestamp": "2024-10-09T04:00:00", "water_level": 2.87}, {"timestamp": "2024-10-09T05:00:00", "water_level": 2.85}, {"timestamp": "2024-10-09T06:00:00", "water_level": 2.84}, {"timestamp": "2024-10-09T07:00:00", "water_level": 2.83}, {"timestamp": "2024-10-09T08:00:00", "water_level": 2.81}, {"timestamp": "2024-10-09T09:00:00", "water_level": 2.8}, {"timestamp": "2024-10-09T10:00:00", "water_level": 2.79}, {"timestamp": "2024-10-09T11:00:00", "water_level": 2.78}, {"timestamp": "2024-10-09T12:00:00", "water_level": 2.77}, {"timestamp": "2024-10-09T13:00:00", "water_level": 2.77}, {"timestamp": "2024-10-09T14:00:00", "water_level": 2.76}, {"timestamp": "2024-10-09T15:00:00", "water_level": 2.74}, {"timestamp": "2024-10-09T16:00:00", "water_level": 2.73}, {"timestamp": "2024-10-09T17:00:00", "water_level": 2.72}, {"timestamp": "2024-10-09T18:00:00", "water_level": 2.71}, {"timestamp": "2024-10-09T19:00:00", "water_level": 2.7}, {"timestamp": "2024-10-09T20:00:00", "water_level": 2.69}, {"timestamp": "2024-10-09T21:00:00", "water_level": 2.67}, {"timestamp": "2024-10-09T22:00:00", "water_level": 2.65}, {"timestamp": "2024-10-09T23:00:00", "water_level": 2.64}, {"timestamp": "2024-10-10T00:00:00", "water_level": 2.63}, {"timestamp": "2024-10-11T01:00:00", "water_level": 2.42}, {"timestamp": "2024-10-11T02:00:00", "water_level": 2.41}, {"timestamp": "2024-10-11T03:00:00", "water_level": 2.4}, {"timestamp": "2024-10-11T04:00:00", "water_level": 2.39}, {"timestamp": "2024-10-11T05:00:00", "water_level": 2.38}, {"timestamp": "2024-10-11T06:00:00", "water_level": 2.37}, {"timestamp": "2024-10-11T07:00:00", "water_level": 2.37}, {"timestamp": "2024-10-11T08:00:00", "water_level": 2.37}, {"timestamp": "2024-10-11T09:00:00", "water_level": 2.37}, {"timestamp": "2024-10-11T10:00:00", "water_level": 2.37}, {"timestamp": "2024-10-11T11:00:00", "water_level": 2.37}, {"timestamp": "2024-10-11T12:00:00", "water_level": 2.37}, {"timestamp": "2024-10-11T13:00:00", "water_level": 2.36}, {"timestamp": "2024-10-11T14:00:00", "water_level": 2.36}, {"timestamp": "2024-10-11T15:00:00", "water_level": 2.36}, {"timestamp": "2024-10-11T16:00:00", "water_level": 2.36}, {"timestamp": "2024-10-11T17:00:00", "water_level": 2.36}, {"timestamp": "2024-10-11T18:00:00", "water_level": 2.35}, {"timestamp": "2024-10-11T19:00:00", "water_level": 2.35}, {"timestamp": "2024-10-11T20:00:00", "water_level": 2.35}, {"timestamp": "2024-10-11T21:00:00", "water_level": 2.34}, {"timestamp": "2024-10-11T22:00:00", "water_level": 2.34}, {"timestamp": "2024-10-11T23:00:00", "water_level": 2.33}] \ No newline at end of file