Releases: pgoutsos/pumpsleeper
Releases · pgoutsos/pumpsleeper
Release list
v4.11
v4.10
Fixed
- SmartPump run times were ~1000× too long. The SmartPump (mode 3) reports run duration in milliseconds, but it was being read as seconds — so a 4.5-second run showed as 4528s, and estimated gallons were wildly inflated. Durations are now converted to seconds correctly, and estimated gallons are derived from the corrected value. Only the SmartPump is affected; the battery backup system and SO1000 are unchanged.
v4.9
Fixed
- Updates now actually restart the services. Previously an update would download the new files and update the version label, but the automatic service restart silently failed on most installs (the service user wasn't permitted to run
systemctl restart), so the old code kept running until a manual restart or reboot. The updater now verifies the restart and, if the privileged path isn't available, falls back to a no-sudo method that signals the running services so systemd respawns them with the new code — so updates take effect on their own. New installs also get an explicit permission rule for a clean restart. - Update status is honest about restarts. If an update installs but the services can't be restarted automatically, the Updates section now shows a clear warning telling you to restart (instead of reporting success while running old code).
v4.8
New
- Multiple email recipients. The Email "Send to" field now accepts more than one address, separated by a semicolon (e.g.
you@example.com; other@example.com). All addresses receive every notification, and the same applies to the settings-backup email. Commas also work as a separator.
v4.7 — PumpSpy SmartPump support
New
- PumpSpy SmartPump support (third device model). Added a
SmartPumpoption to the device selector in Settings. This variant reports pump activity on its own endpoints — pump runs viaPOST /pump_outlet_cyclesand config viaGET /pump_outlet_parameters/<deviceid>— which PumpSleeper previously didn't recognise, so its runs were logged as "unknown" transactions and never appeared on the dashboard. When SmartPump is selected, these endpoints are now decoded, recorded as pump runs, and published to MQTT / notifications like the other models. For BBS and SO1000 the endpoints still fall through untouched.
Notes
- SmartPump
cycleDurationis interpreted as seconds (not milliseconds like the SO1000);cycleCurrentis assumed to be milliamps but is unverified pending a live run with a non-zero current reading.
v4.6 — Compact layout
New
- Compact layout. A new two-column dashboard view optimised for at-a-glance monitoring. Toggle between Detailed and Compact using the pill in the header — your preference is saved to your account and restored on every load. Compact shows a status card (device online/offline, runs today, estimated gallons, longest run, last run detail), a full pump run history table, a device card (model, IP, signal strength with bar indicator, water sensor, mode), and a notifications card (email/ntfy on/off, last sent time). The "Today" toggle in the history header filters to today's runs client-side without a page reload. Long-run rows (>45 s) are highlighted in red.
Improved
- Notification last-sent timestamp. Every successful notification send (email or ntfy) now records a timestamp in the database, visible in the Compact layout's notifications card.
- Refresh indicator. The header briefly shows "↻ Refreshing…" while data is loading.
v4.5
Improved
- "Save Logs" now downloads a zip of all three log files. Previously the button downloaded a single text file from
journalctl, which missed almost everything useful — the service writes to flat files, not the journal. The zip now containsserver.log(proxy events, pump runs, real-event notifications),dashboard.log(test notification results, settings changes, API errors), andjournal.log(service start/stop, crashes). ANSI color codes are stripped from the flat logs. This makes it straightforward to diagnose notification issues: opendashboard.logand search forNOTIF.
v4.4
Fixed
- Ntfy notifications failed when the title contained emoji (e.g. the ⚠ high-water alert). The header-based ntfy API encodes header values as latin-1, which can't represent characters outside that range. Switched to the ntfy JSON body API, which is fully UTF-8 and handles emoji and any non-ASCII characters in both title and message.
v4.3
Fixed
- Gmail (and strict SMTP servers) rejected email notifications. The SMTP handshake was missing a second
EHLOafter the TLS upgrade (STARTTLS). The correct sequence isEHLO → STARTTLS → EHLO → LOGIN; skipping the post-TLS EHLO causes some servers to refuse login. Fixed in both the notification sender and the backup email sender.
v4.2
Fixed
- Proxy forwarding used the wrong pumpspy.com server. The proxy was hardcoded to
206.80.104.221, but the SO1000 device actually connects to173.241.229.38(verified via packet capture). Requests were going to a different backend with no session context for the device, sorht_parametersreturned a config that didn't trigger cycle mode and/rht_outlet_cycleswas never sent. The proxy now derives the target from the device's ownHostheader (www.pumpspy.com:8081) so it follows pumpspy.com regardless of IP changes. - Malformed proxy URL due to trailing space in Host header. The device sends
Host: www.pumpspy.com:8081with a trailing space; the proxy was concatenating it directly into the URL, producinghttp://www.pumpspy.com:8081 /pathwhich failed to parse. The Host value is now stripped before use.