Repository navigation
Releases: beolink/ha-intellipool
Release list
v1.15.0 – Opt-in reporting
Completes the consent change asked for in the HACS review.
Nothing is reported unless you ask for it
Setup now ends with two questions, both unticked: whether to send a daily
report at all, and whether your pool's own readings may ride along. Either can
be changed later under Configure.
Upgrading does not switch anyone off
Flipping the default alone would have silenced installations that were already
reporting. Instead, entry version 2 records what each entry was doing: one that
was reporting keeps reporting, one that had been switched off stays off, and
the switch is visible under Configure either way. Readings stay out until
they are agreed to. Only entries created from 1.15.0 onwards answer the
question in the config flow.
Notes
1.13.0 put the whole report behind consent but silenced existing installs;
1.14.0 gated only the readings. This release does both properly: consent is
required, and the upgrade path is explicit rather than silent.
Full changelog: v1.14.0...v1.15.0
v1.14.0 – Pool readings opt-in
Corrects the scope of the consent introduced in 1.13.0.
1.13.0 put the entire daily report behind consent, which silenced existing
installations. That was more than intended. The report itself carries versions,
installation type, country, a coarse location and which transport is in use;
only the pool's measured values are personal enough to ask about separately.
What changed
- Reporting works as it did before 1.13.0 and can still be switched off
entirely under Configure → Send anonymous statistics. - Your pool's readings are opt-in, on their own switch. Setup ends with
that question, with the box unticked, and without consent the readings are
left out of the payload rather than merely emptied.
If you installed 1.13.0 and reporting went quiet, this release brings it back,
without the readings unless you tick the box.
Full changelog: v1.13.0...v1.14.0
v1.13.0 – Opt-in statistics and an options flow fix
Addresses both points from the HACS review.
Statistics are now opt-in
Reporting is off unless you ask for it. Setup ends with a statistics step
whose box is unticked, and nothing is sent until you tick it.
This is a behaviour change for existing installations: an entry that never
answered the question reports nothing after this update, including every entry
created before the question existed. If you want to keep contributing, turn it
on under Settings → Devices & Services → Intellipool → Configure → Send
anonymous statistics.
The options flow no longer crashes
config_entry is a read-only property on OptionsFlow, and the integration
assigned to it, so picking Configure raised an AttributeError and none of
the options could be changed: not the scan interval, not the failsafe
threshold, not the statistics switch. The __init__ is gone and the inherited
property is used instead.
If Configure has never worked for you, this release fixes it.
Tests
Both flows are now walked end to end in a real Home Assistant: the options flow
opens and saves, and the config flow ends on the statistics step with the box
off and keeps it off when the form is accepted as presented.
Full changelog: v1.12.4...v1.13.0
v1.12.4: statistics report updates
Maintenance release. The integration itself works as before; only the optional anonymous daily report changes.
- The report says whether the integration is running. It carries the config entry's state by Home Assistant's own name, such as
loadedorsetup_retry, never the reason. Home Assistant logs a failed set-up under its own logger, so the error count alone could not show it. - Beolink integrations on the same Home Assistant are linked through
ha_id, a hash of Home Assistant's instance id that is worked out in the house, so the instance id itself never leaves it. The report also carries how many warnings and errors the integration logged since the previous report, never the messages. - Fixed: an entry removed or disabled while Home Assistant waited to set it up again kept reporting until the next restart. The reporter now checks before every report that its entry still exists and is enabled.
- Fixed: an entry unloaded while its first report was still on the wire could leave a daily timer behind that nothing could stop.
- The options text lists what the report sends. Reporting can still be switched off under Configure, which also erases what has already been sent.
Full changelog: v1.12.1...v1.12.4
v1.12.1 – Apache 2.0 licence
Maintenance release. No functional change to the integration itself.
- Licence changed from MIT to Apache License 2.0. The repository has a
single author, so no other contributor's consent was needed. - Internal: the shared statistics client now takes an optional display name for
its log line, and acceptsfirmwareas a reported extra. The payload the
integration sends is unchanged.
Full changelog: v1.12.0...v1.12.1
v1.12.0 – Anonymous usage statistics
Anonymous usage statistics
This release adds an optional daily report to stats.rnet.se,
so the project can see how many installations exist and which Home Assistant and
integration versions are actually in use.
It is on by default and can be turned off in
Settings → Devices & Services → Intellipool → Configure → Send anonymous usage statistics.
Turning it off also erases what has already been sent.
What is sent
One report per 24 hours (the first one 10 minutes after start):
- Integration version, Home Assistant version and installation type
- The country configured in Home Assistant, and an approximate position rounded
to about 11 km - Which transport is in use (cloud, official API or failsafe)
- The pool's own readings at reporting time: water and air temperature, pH, ORP,
salinity and pump speed
Readings are sampled once a day, never as a time series, so nothing in the report
shows when anyone is home.
What is never sent
No name, address, exact position, serial number, pool id or entity name. Your IP
address is not stored. The install id is random, generated per Home Assistant
instance, and cannot be traced back to you.
Full details: https://stats.rnet.se/integritet
Full changelog: v1.11.0...v1.12.0
v1.11.0 – English, i18n and HACS-ready
Prepares the integration for public use and HACS default inclusion.
International
- English is now the base language; entity names, select options and the
service are translated viatranslation_key. Swedish ships as a translation. - README rewritten in English with an explicit "unofficial, not affiliated with
Pentair" disclaimer.
Correctness
iot_classcorrected tocloud_polling.- Removed speculative zeroconf/DHCP discovery matchers. One of them matched the
ScreenLogic MAC prefix, which would have shown bogus "Intellipool discovered"
prompts to ScreenLogic owners. - Documented the raw-vs-display pool serial pitfall that can leave sensors empty.
HACS / Home Assistant validation
- Added LICENSE (MIT), brand icon,
after_dependencies: [recorder], sorted
manifest keys, removed HTML-like placeholders from translations. - CI now runs HACS Action, hassfest, unit tests and the real-HA pipeline test —
all green.
v1.9.0 – Historik-import
Historik-import 📈
Sista roadmap-punkten! Tjänsten intellipool.import_history bakåtfyller Home Assistants långtidsstatistik med timvärden, så äldre historik dyker upp på de befintliga sensorernas grafer.
Så funkar det
- Utvecklarverktyg → Åtgärder →
Intellipool: Importera historik, argumentdays(dygn bakåt, standard 7) - Hämtar
GET /pool/ajaxHistoric/getJsonValuesper dygn (timupplösning), skrivermean/min/maxper timme direkt på sensorn (source: recorder) - Kräver molnanslutning. Serier: vattentemp, lufttemp, pH, ORP, salt, pumpeffekt, pumpvarvtal, batteri, signal
Datakällan
Den riktiga tidsserien (inte poolLastValues, som bara är senaste-ögonblicksbild) upptäcktes i Historic-flikens JS. Svaret ger färdigberäknade min/max/avg per bucket — exakt vad HA:s statistik vill ha.
Testat
Ren värde-parser + ett riktigt HA-test som matar in timhistorik och verifierar att rätt timpunkter landar på vattentemp-statistiken. Endpointen är dessutom live-verifierad mot en riktig pool.
v1.8.0 – IntelliFlo, scheman, lägen & HA-verifiering
Fyra roadmap-punkter avklarade i den här omgången.
✅ Verifierat i skarp Home Assistant
Integrationen laddas i riktig HA (2026.2) och data flödar in i entiteterna — verifierat med pytest-homeassistant-custom-component. Hittade + fixade en riktig bugg (dhcp/zeroconf-import → service_info-helpers). API-klienterna använder nu HA:s delade session.
✅ Lägesväljare (select)
Filtreringsläge (Auto/På/Av/Timer/Chock) och Belysningsläge (På/Timer/Av). Visar verkligt live-läge via /pool/ajaxCommands/get.
✅ Schemastyrning (text)
Filtrerings-/belysnings-/aux-scheman som 24-teckens strängar (en/timme), skrivs via det byte-validerade setpoints-formuläret.
✅ IntelliFlo pumpvarvtal (number)
Varvtal för setpoint/elektrolys/värme/aux1/chock i rpm (20-steg, min/max från pumpens intervall). Byte-validerad skrivning.
Alla skriv-vägar (styrning, börvärden, scheman, IntelliFlo) är byte-validerade mot appens egen serialisering; belysningsstyrning är dessutom live-verifierad. CI kör nu både enhetstester och HA-pipelinetestet.
v1.5.0 – Full styrning + börvärden (live-verifierat)
Styrning och börvärden fungerar nu 🎉
Hela det inloggade styr-API:et kartlagt genom att inspektera appens JavaScript i en inloggad session, och live-verifierat mot en riktig INTP-1010B.
Controls — POST /pool/ajaxCommands/save
Läs-ändra-skriv från /get. Live-testat (tände/släckte belysningen → Command was sent).
| Entitet | Fält | Värden |
|---|---|---|
| Pump | filtration | 0=Auto 1=På 2=Av 3=Timer 4=Chock |
| Belysning | lighting | 0=På 1=Timer 2=Av |
| Uppvärmning | heating_regulation | 0=Auto 1=Av |
| pH-dosering | ph_regulation | 0=Auto 1=Av |
| ORP-dosering | orp_regulation | 0=Auto 1=Av |
| Aux 1 | aux1 | 0=På 1=Schema 2=Av |
Setpoints — POST /pool/ajaxSetpoints/save
Mål-temperatur, pH och ORP. Hela 33-fältsformuläret byggs om från /get, och kroppen är byte-identisk med appens egen serialisering (verifierat i test) — bara det ändrade börvärdet skiljer sig. Inga andra inställningar rörs.
Säkerhet
Pluginen läser alltid aktuellt tillstånd först och ändrar bara det efterfrågade fältet. Efter varje /save bekräftar enheten ordern asynkront (den når bara molnet utgående).
Testat
Styr- och börvärdeskroppar validerade mot fångad ground truth (tests/test_write_paths.py). Belysning live-verifierad mot riktig enhet.
Kartlagt men ej exponerat än: IntelliFlo-varvtal, scheman, historik.