Skip to content

Releases: beolink/ha-intellipool

v1.15.0 – Opt-in reporting

Choose a tag to compare

@beolink beolink released this 19 Oct 22:40

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

Choose a tag to compare

@beolink beolink released this 19 Oct 22:33

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

Choose a tag to compare

@beolink beolink released this 19 Oct 22:22

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

Choose a tag to compare

@beolink beolink released this 16 Sep 18:21

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 loaded or setup_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

Choose a tag to compare

@beolink beolink released this 09 Sep 22:44

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 accepts firmware as a reported extra. The payload the
    integration sends is unchanged.

Full changelog: v1.12.0...v1.12.1

v1.12.0 – Anonymous usage statistics

Choose a tag to compare

@beolink beolink released this 09 Sep 21:15

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

Choose a tag to compare

@beolink beolink released this 06 Sep 11:34

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 via translation_key. Swedish ships as a translation.
  • README rewritten in English with an explicit "unofficial, not affiliated with
    Pentair" disclaimer.

Correctness

  • iot_class corrected to cloud_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

Choose a tag to compare

@beolink beolink released this 11 Jul 21:35

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, argument days (dygn bakåt, standard 7)
  • Hämtar GET /pool/ajaxHistoric/getJsonValues per dygn (timupplösning), skriver mean/min/max per 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

Choose a tag to compare

@beolink beolink released this 11 Jul 17:50

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)

Choose a tag to compare

@beolink beolink released this 11 Jul 17:11

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.