Commit Graph
49 Commits
Author SHA1 Message Date
rootandClaude Opus 5.5 cbf507fa18 feat: heat pump statistics per day in the Historia tab
CI / Check (gateway, backend, frontend) (push) Successful in 1m24s
GET /api/stats?range=7d|30d computes compressor, CWU, CO and heater hours,
compressor starts and temperatures per Europe/Warsaw day from the raw
heat_pump polls. Hours hold each poll for at most 600 s so gaps add nothing;
starts are 0 -> >0 transitions and are a lower bound at 300 s polling.
Historia gets a Wykresy | Statystyki switch (shared SubView helper, also
used by Energia) with totals tiles, a daily chart and a cycling hint.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 16:59:42 +02:00
rootandClaude Opus 5.5 e5e13cedb5 docs: ADR-013 battery settings from the app, spec F8, register notes
CI / Check (gateway, backend, frontend) (push) Successful in 1m27s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 15:51:47 +02:00
rootandClaude Opus 5.5 a01c507a6e feat(gateway): read the Deye battery settings into electricity.deye_settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 14:49:38 +02:00
rootandClaude Opus 5.5 8146296061 feat(backend): serve the Raspberry Pi BME280 reading at /api/pi-sensor
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 14:07:37 +02:00
rootandClaude Opus 5.5 355dd76555 feat(backend): let a preset take the user's own values
POST /api/presets/{id} accepts optional values per setpoint of the preset,
checked against the gateway's limits before anything is sent, so Wyjazd
can use temperatures other than the defaults.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 13:54:45 +02:00
rootandClaude Opus 5.5 7e50d1203b feat(gateway): show the verified value and restore a setpoint on request
GET /commands showed the last poll for up to 5 minutes after a write.
It now shows the value read back after our own write or restore when
that is newer than the poll. POST /commands/restore runs a pending
restore at once through the normal path (conflict check, read-back,
audit with the requester, rate limit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 13:34:34 +02:00
rootandClaude Opus 5.5 b3038aeef7 feat(gateway): hold a lowering change until a chosen end without renewals
A command may carry "until" (ISO-8601 with offset). The change is stored
as a restore with leaseUntil = due = until, so it survives a restart and
runs at its end. Held changes must lower the value below both the current
value and the original, end in the future and within 30 days; otherwise
they are rejected without a write. Renewals now only extend a lease.
ADR-012 amends ADR-011 for held changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 13:22:02 +02:00
root 604ef4e6d9 Merge PR #71: feat(energy): device details panels for Deye, Fronius and the house meter
CI / Check (gateway, backend, frontend) (push) Successful in 1m15s
2026-10-24 12:50:10 +02:00
root bad67b9538 Merge PR #72: feat(commands): setpoint changes are leases the backend renews 2026-10-24 12:46:08 +02:00
rootandClaude Opus 5.5 ba8631b3c2 docs: ADR-011 setpoint leases, spec F3 limits decided, roadmap M4
CI / Check (gateway, backend, frontend) (push) Successful in 1m15s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 12:40:36 +02:00
rootandClaude Opus 5.5 35b3f8e1e0 feat(web): open device details from the energy screen
CI / Check (gateway, backend, frontend) (push) Successful in 1m17s
A "Urządzenia" card lists the Deye, Fronius and house meter as rows with
a "Szczegóły ›" chevron, 56 px high. Tapping one opens a bottom sheet on
a phone (a dialog on wide screens) with the grouped values; it closes by
button, backdrop or Escape and returns focus to the row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 12:38:45 +02:00
rootandClaude Opus 5.5 9f33f5a94c feat(meter): write per-phase energy counters as house_meter_phases
CI / Check (gateway, backend, frontend) (push) Successful in 1m17s
One extra FC4 request per poll; PRAD2 is unchanged and still written when
the extra request fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 12:36:22 +02:00
rootandClaude Opus 5.5 e65cb5837f docs(roadmap): meter and BME280 run in the gateway since v1.2.1
CI / Check (gateway, backend, frontend) (push) Successful in 1m15s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 12:18:46 +02:00
rootandClaude Opus 5.5 c34a9da0d7 docs(roadmap): the new gateway runs on the Pi with the inverters; D7 fixed
CI / Check (gateway, backend, frontend) (push) Successful in 1m12s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 11:25:28 +02:00
rootandClaude Opus 5.5 b2b946d4bc docs: one readme per part, ADR-010, release and update instead of deploy
CI / Check (gateway, backend, frontend) (push) Successful in 2m2s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 10:14:54 +02:00
rootandClaude Opus 5.5 d4a9f2fa25 docs(adr): open the web UI to Krosno only, without a login for now
CI / Backend tests (Maven / Java 21) (push) Successful in 1m35s
The user chose to defer the login: Traefik admits only Krosno and clears
a client's Remote-User. A later ADR picks the login before access from
outside.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 09:22:48 +02:00
rootandClaude Opus 5.5 f7c36ab1f6 feat(web): rewrite the UI in React with an animated installation picture
CI / Backend tests (Maven / Java 21) (push) Successful in 1m37s
The plain-JS UI was too weak to grow into the reference dashboard. The new
UI (React, TypeScript, Vite, Tailwind, Recharts) follows research/ui/: a
side bar on large screens, tabs on a phone, and an SVG picture of the
installation whose pipes flow, compressor turns and tanks glow while the
matching pump runs. Energy flows are animated the same way.

Maven builds and tests the UI (frontend-maven-plugin, Node per project),
so check.sh and CI need only Java. The fixes of the web review (stale and
missing readings, silent inverters, outages, Warsaw time, timeouts,
out-of-order answers, restore values) carry over; tests read the API
contract examples. The CSP now allows the self-hosted font.

Supersedes fix/web-review. ADR-008 records the new UI stack.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 08:39:17 +02:00
rootandClaude Opus 5.5 377349cf0e docs(roadmap): M4 pieces on master, wiring waits with #42
CI / Backend tests (Maven / Java 21) (push) Successful in 1m7s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 05:03:45 +02:00
root ef3662df1b Merge PR #47: docs(frisko): add vendor app and map findings for the RX910-SE21 2026-10-24 04:48:24 +02:00
rootandClaude Sonnet 5.5 e56c1cdad6 docs(frisko): add vendor app and map findings for the RX910-SE21
CI / Backend tests (Maven / Java 21) (push) Successful in 1m5s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 04:44:18 +02:00
rootandClaude Opus 5.5 d8a9716192 docs(roadmap): M1 code merged except Main; M3 backend and UI started
CI / Backend tests (Maven / Java 21) (push) Successful in 1m5s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 04:37:05 +02:00
rootandClaude Opus 5.5 51a68f0d44 feat(backend): add the backend project with the API contract
CI / Backend tests (Maven / Java 21) (push) Successful in 50s
The phone API and the web UI are built in parallel, so they need one
contract first: view records, the history allowlist, the gateway and
history ports, and example JSON. ADR-008 records the stack (proposed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:30:35 +02:00
rootandClaude Opus 5.5 b0c4961cda docs(roadmap): close M0, plan M1 as PR-sized steps
CI / Backend tests (Maven / Java 21) (push) Successful in 44s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:19:18 +02:00
rootandClaude Opus 5.5 1e43d9d7fb docs(roadmap): first deploy v1.0.0 verified; add D8
CI / Backend tests (Maven / Java 21) (push) Successful in 44s
The deploy script ran on the Pi: healthy restart, a Modbus read and an
Influx write within 20 s, the next poll on time. The first write split
into two points 1 ms apart, which the baseline already does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:14:06 +02:00
rootandClaude Opus 5.5 dc5efc07e1 docs(roadmap): M0 progress; backend image moves to M3
CI / Backend tests (Maven / Java 21) (push) Successful in 44s
The backend does not exist yet, so CI has no image to build; it comes
with the backend in M3. The deploy item stays open until the script has
run once on the Pi.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 23:50:32 +02:00
rootandClaude Opus 5.5 6a293ee15e docs: BME280 through the kernel IIO driver (approved)
CI / Backend tests (Maven / Java 21) (push) Successful in 44s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U8EHjVrf5ffw1Vjn5bPGJu
2026-10-23 23:40:32 +02:00
rootandClaude Opus 5.5 408bba73ac docs: ADR-007 gateway stack, JDK first with our own Modbus core
CI / Backend tests (Maven / Java 21) (push) Successful in 41s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U8EHjVrf5ffw1Vjn5bPGJu
2026-10-23 23:38:59 +02:00
rootandClaude Opus 5.5 c73059eef7 docs: C4 setpoint restored to 8
CI / Backend tests (Maven / Java 21) (push) Successful in 40s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U8EHjVrf5ffw1Vjn5bPGJu
2026-10-23 23:25:46 +02:00
rootandClaude Opus 5.5 3839668348 docs: settings backup and first verified write (C3, C4)
CI / Backend tests (Maven / Java 21) (push) Successful in 41s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U8EHjVrf5ffw1Vjn5bPGJu
2026-10-23 23:23:29 +02:00
rootandClaude Opus 5.5 0286c4c18d docs: BME280 moves into the gateway too; Pi OS stays as is
CI / Backend tests (Maven / Java 21) (push) Successful in 43s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U8EHjVrf5ffw1Vjn5bPGJu
2026-10-23 23:21:25 +02:00
rootandClaude Opus 5.5 656b581812 docs: gateway collects all devices into Influx; first result is our own UI
CI / Backend tests (Maven / Java 21) (push) Successful in 41s
- ADR-006: gateway writes readings to InfluxDB with a buffer; backend reads them
- S6: commands only from the backend (token and firewall)
- M1 gateway reads heat pump, Deye, Fronius and the house meter (moved from
  rpi-measurements); D7 subnet fix first
- M3 read-only backend and web UI with pump and energy; Grafana step dropped

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U8EHjVrf5ffw1Vjn5bPGJu
2026-10-23 23:18:31 +02:00
rootandClaude Opus 5.5 162a25eceb docs: ADR-006 thin gateway on the Pi, backend in Kraków; energy earlier
CI / Backend tests (Maven / Java 21) (push) Successful in 44s
- ADR-006 supersedes ADR-002: the Pi gateway owns device links, checks commands
  and runs timed restores; the backend runs in Docker in Kraków
- restore value is read from the controller before the first write
- roadmap: energy view moves to M4 (my father wants it), setpoints to M5

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U8EHjVrf5ffw1Vjn5bPGJu
2026-10-23 23:11:05 +02:00
rootandClaude Opus 5.5 225648db81 docs: correct D7, DNS errors were one outage; note subnet overlap
CI / Backend tests (Maven / Java 21) (push) Successful in 42s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U8EHjVrf5ffw1Vjn5bPGJu
2026-10-23 22:53:20 +02:00
rootandClaude Opus 5.5 365d0b124a docs: consolidate goal and scope, move controller knowledge, add storage ADR
CI / Backend tests (Maven / Java 21) (push) Successful in 41s
- spec: goal covers heat pump first, energy second; explicit in/out scope
- docs/frisko/rx910-se21.md: controller facts moved out of the roadmap
- roadmap: M6 energy, M7 native decision, C6 energy feasibility done
- ADR-005: InfluxDB plus one local file, no other database

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U8EHjVrf5ffw1Vjn5bPGJu
2026-10-23 22:49:47 +02:00
rootandClaude Opus 5.5 1676b46b33 docs: identify the Deye hybrid inverter
CI / Backend tests (Maven / Java 21) (push) Successful in 42s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U8EHjVrf5ffw1Vjn5bPGJu
2026-10-23 22:20:34 +02:00
rootandClaude Opus 5.5 9f795485ee docs: energy sources in Krosno (meter, Fronius, second inverter)
CI / Backend tests (Maven / Java 21) (push) Successful in 42s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 22:12:58 +02:00
rootandClaude Opus 5.5 4642408039 docs: heat pump protection limits and CWU history
CI / Backend tests (Maven / Java 21) (push) Successful in 42s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:53:32 +02:00
rootandClaude Opus 5.5 a59a5494ff docs: user-chosen boost duration; CWU limit 50 °C
CI / Backend tests (Maven / Java 21) (push) Successful in 42s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:50:11 +02:00
rootandClaude Opus 5.5 7bbda72e59 docs: free setpoint choice within limits plus presets
CI / Backend tests (Maven / Java 21) (push) Successful in 40s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:47:44 +02:00
rootandClaude Opus 5.5 26f7b30abe docs: live pump state as part of F1 and M1
CI / Backend tests (Maven / Java 21) (push) Successful in 42s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:47:11 +02:00
rootandClaude Opus 5.5 13bc0955f0 docs: limit first commands to four setpoints (boost, away)
CI / Backend tests (Maven / Java 21) (push) Successful in 40s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:45:36 +02:00
rootandClaude Opus 5.5 d230d86250 docs: boost via economy temperature as the first command
CI / Backend tests (Maven / Java 21) (push) Successful in 40s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:39:52 +02:00
rootandClaude Opus 5.5 484186e2dc docs: solar collector and observed CWU heating pattern
CI / Backend tests (Maven / Java 21) (push) Successful in 39s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:34:19 +02:00
rootandClaude Opus 5.5 fe8257b96c docs: first command is a hot-water (CWU) override
CI / Backend tests (Maven / Java 21) (push) Successful in 41s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:32:42 +02:00
rootandClaude Opus 5.5 2544421c72 docs: schedule override as first command; weekly program selector
CI / Backend tests (Maven / Java 21) (push) Successful in 43s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:30:08 +02:00
rootandClaude Opus 5.5 17d326fd5f docs: record MK01 single-client gateway and feasibility checks
CI / Backend tests (Maven / Java 21) (push) Successful in 42s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:27:26 +02:00
rootandClaude Opus 5.5 c309916736 docs: add specification, repository rules and Frisko sources
CI / Backend tests (Maven / Java 21) (push) Successful in 41s
Restart from the version running on the Pi (e345063) with written goals and rules:
- docs/spec.md: goal, principles, architecture, requirements
- docs/roadmap.md: bottom-up milestones M0-M6, baseline defects, controller facts
- docs/decisions/: ADR-001..004 (evolve baseline, backend on Pi, single Modbus
  owner, web UI first)
- CONTRIBUTING.md and CLAUDE.md: workflow, safety and context-size rules
- research/frisko/: RX910-SE21 register map, phone-app XML maps and APK,
  MR208-PC+ reference docs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:13:05 +02:00
root ecc4f19076 removed unnessery files
CI / Frontend build (Node 18) (push) Failing after 20s
CI / Backend tests (Maven / Java 21) (push) Successful in 1m22s
2026-02-11 23:12:49 +01:00
root 2664e7e52f changes
CI / Backend tests (Maven / Java 21) (push) Has been cancelled
CI / Frontend build (Node 18) (push) Has been cancelled
2026-02-11 23:11:29 +01:00