Releases: ssbingo/ioBroker.pondpump
Release list
Release v0.12.4
Feedback: entering an actuator "off value" was practically impossible —
the free-text field re-parsed on every keystroke and parseActuatorValue
fell back to true for any partial input, so typing "false" snapped
straight back to "true".
- New reusable renderActuatorValueSelect() in PondpumpScheduler.tsx: a
dropdown true / false / number (with an inline number field), plus a
"leave untouched" option for the off-value. Used by the actuator window
on-value + off-value AND the "Set actuator" weather-rule value. Removed
the old parseActuatorValue/actuatorValueText free-text helpers. - +admin i18n "Number" / "leave untouched" (11 languages).
- Handbook DE+EN 10.2: the on-value/off-value dropdown explained, and a
note that theonfield in the schedule.actuators status datapoint is
the LIVE window status (window active now?), not the on/off value — the
point the user was confused by. That datapoint is correct as-is.
README + news (11 languages); handbook PDFs regenerated.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Release v0.12.3
Water temperature colours (thermometer in PumpVisual, readout in
PumpScheduler) now follow the koi temperature bands from the new research
instead of a neutral cold->warm gradient (graphics.tempColor):
<2 red · 2-4 orange · 4-8 blue (winter rest) · 8-13 amber (the cold
"Aeromonas window": pathogens active, immune system not) · 13-17 teal ·
17-23 light green · 23-26 green (growth optimum) · 26-28 light green ·
28-30 orange · >=30 red.
Per-actuator wheel colours: the Scheduler widget's "Actuators" settings now
give every actuator its own on/off colour picker (stored per actuator in
actuatorColors), replacing the single global pair from v0.12.2. The
wheel's darker gradient shade is still derived automatically.
Research + handbook:
- New doc/research/wassertemperaturen-im-koiteich.md (faithful transcription
of the 14-page koi-temperature study, with the source list T1-T93). - The German handbook now carries BOTH research papers as Anhang 1 & 2,
appended at build time by scripts/build-handbook-pdf.mjs (single source of
truth in doc/research/) — DE manual PDF now 41 pages. The English handbook
gets an appendix note pointing to them. Widget/handbook thermometer text
updated to the koi-comfort colour meaning.
README + news (11 languages).
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Release v0.12.2
Feedback: let the actuator status impeller colour be chosen in the widget
settings, separately for the on and off state.
- PumpScheduler settings "Actuators" section: two colour pickers
actColorOn / actColorOff (defaults #a6e77d light green / #6b7669 muted
green-grey — matching the previous look). The wheel's darker gradient
shade is derived automatically via graphics.darken(). - renderActuators picks the per-state colour; the off wheel no longer
greyscales (so the chosen off colour shows), just a light dim. - +widget i18n act_color_on / act_color_off (11 languages).
Handbook DE+EN 9.4 note; PDFs regenerated. README + news (11 languages).
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Release v0.12.1
Feedback: make each actuator individually show/hideable in the widget
settings.
- New "Actuators" settings section in PumpScheduler with a custom field
(actuatorVisibilityField) that reads the selected pump's actuator
windows from the instance config (native.schedules[pid].plans) and
renders a checkbox per actuator (icon + name). - Hidden actuators are stored per widget in
hiddenActuators(JSON array
of stable keys: the target OID, else "#"); the widget filters
them out with the same key derivation. All shown by default. - Self-contained editor translation helper (tr) using the widget's own
i18n JSONs — avoids depending on @iobroker/gui-components in the widget
bundle. +widget i18n group_actuators / actuators_visibility /
no_actuators (11 languages).
Handbook DE+EN 9.4 note; PDFs regenerated. README + news (11 languages).
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Release v0.12.0
Feedback: actuator schedule windows (waterfall, stream, aerator, …) can
now be named and given an icon, and are shown in the PumpScheduler widget.
- schedule.ts (mirrored): PumpSchedule +actuatorName/actuatorIcon;
new describeActuators(plans, nowMin, astro) → [{name, icon, target, on}]
(name falls back to "Aktor N"), unit-tested (124 passing). - Admin scheduler editor: actuator windows gained a Name field
(placeholder "Actuator N") and an emoji Icon picker (waterfall, stream,
aerator/oxygen pump, air, spray, UV, light, feeder, plant, heater,
chiller, …). +admin i18n "Actuator name"/"Icon" (11 languages). - Backend: new read-only pumps..schedule.actuators JSON state
(role "json"), published each tick from describeActuators. - PumpScheduler widget: lists each actuator ABOVE the telemetry, one row
as "icon — name — wheel"; the wheel is a small light-green impeller that
spins (optionally animated) while on and stands still (dimmed) while off. - graphics.tsx: renderImpeller now takes an endColor and uses a unique
gradient id per colour pair — fixes a latent id collision so the hero
(blue) and actuator (green) impellers on one card keep their own colour.
Handbook DE+EN 9.4 note; PDFs regenerated. README + news (11 languages).
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Release v0.11.1
Feedback from live testing:
- PumpVisual: the water thermometer was far too large. Replaced with a
slim, modern, colour-coded design (capped size, no overlap with the
values row). - PumpScheduler: now always shows the water temperature next to power/
speed, and a small (optionally animated) impeller in the hero (new
"animate" setting). Added the shared graphics module (graphics.tsx)
with the impeller + thermometer + tempColor, used by both widgets;
moved spinDuration() into PumpWidgetBase. - Robustness (fixes the "widget shows nothing" report): the base widget
now reads each state's current value FIRST and subscribes per state,
instead of one array subscribe. A pump whose newer schedule.* states
don't exist yet (older backend) no longer blanks the whole widget —
telemetry, name and controls render regardless. (The schedule.* status
fields still need the v0.11.0+ backend, and the badge correctly shows
"manual/off" until scheduling is enabled for the pump.)
Handbook DE+EN 9.4 note (small impeller); PDFs regenerated. README + news
(11 languages).
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Release v0.11.0
New "Scheduler status" vis-2 widget (PumpScheduler):
- Shows what the built-in scheduler is doing per pump and why: current
output + target power, status badge (active/manual/fail-safe), reason
chips (curve/window/base + night protection/weather boost/frost hold),
active window, next change, sunrise/sunset, water temperature, live
power/rpm, and a control bar (on/off, quick power, SFC). - Fed by new read-only pumps..schedule.* status states the scheduler
publishes each tick (controlled/targetPower/sfc/source/raised/
nightProtection/hold/failSafe/window/nextChangeTs). Registered in
vite.config.ts + io-package.json; i18n for all 11 languages; preview SVG.
Pure core (schedule.ts, mirrored to src-admin): decideTarget now also
returns source/raised/nightProtected/hold for the status states and the
widget (covered by new unit tests, 123 passing).
PumpVisual: when telemetry.waterTemperature has a value, the impeller
shifts left and a filled, colour-coded thermometer with the reading
appears on the right; unchanged without a value. Shared common helper
pumpDeviceName().
Docs: handbook DE+EN chapter 9.4 (scheduler widget) + 9.2 thermometer
note; PDFs regenerated. README + news (11 languages).
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Release v0.10.1
Bugfix. Previously telemetry.waterTemperature was mirrored ONLY from the
pump's on-device sensor (waterTempSensor = temperature/temperature2), so
when the curve was driven by an EXTERNAL object (e.g. a Homematic water
sensor picked via the object magnifier) the state stayed empty (null) —
even though that external sensor correctly drove the power curve.
- runScheduler now mirrors the effective curve source's raw value into
telemetry.waterTemperature (external OIDs included), and logs a debug
line when the source has no finite value. The scheduler already
subscribes to curve.source (collectSourceOids), so the state stays
fresh on every source change. - The poll loop's on-device-sensor mirror is now the FALLBACK only —
it runs when no enabled curve source is configured, so the two writers
never conflict. - objects.ts: updated the waterTemperature doc comment; unit stays "°C"
(confirmed correct in source and esbuild output "\xB0C"; the "°C" seen
in a running object is an admin round-trip re-encoding, not adapter code
— it self-corrects on the next adapter start via extendObject). - Handbook DE+EN: note that waterTemperature reflects the effective curve
source (external sensor included); PDFs regenerated.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Release v0.10.0
Logging/Debugging (per the project's verbindliches Logging standard):
- decideTarget gained an optional
trace: string[]output that records a
human-readable step at every decision branch (base from curve/window,
Q_min floor, night protection, each matching weather rule, actuator
windows, the Q_max ceiling, final power/SFC). Covered by new unit tests.
Mirrored to src-admin/src/schedule.ts. - runScheduler now logs, per tick and per pump at debug level: the raw
source values, the full input snapshot (raw/smoothed/mapped water temp
with tau & hysteresis, resolved sunrise/sunset, day/night, priority &
min/max power), the decision trace, the ramp/hold resolution, the
"unchanged -> nothing sent" cases and the next re-evaluation time. - setupAstro/recomputeAstro log the resolved location mode, system coords
and per-pump coordinates + sun times; onMessage logs the geocode query
and its result/failure. Secrets are never logged.
Docs:
- doc/forum-tester-thread.md rewritten for V0.10.0, covering everything
since V0.5.0 (max power per pump, astro windows, location + interactive
map, night protection, actuator windows, clearer scheduler settings,
detailed debugging). - Handbook (DE+EN): new "reading the scheduler decision log" section;
PDFs regenerated.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Release v0.9.1
LocationPicker now listens for Leaflet "tileerror" and overlays a clear
message when the OSM tiles fail to load (typically the admin CSP blocking
the external tile host). The location stays fully settable via marker
click/drag, the coordinate fields and the address search. +1 i18n key
x 11 languages.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com