Violet + BADU Blue — Pool control for Homey

Control and monitor your PoolDigital Violet or BADU Blue pool controller straight
from Homey — live water chemistry, pump and equipment state, dosing, Flow automations, and
an optional water‑balance safety net that warns you before your water turns corrosive. All
local, no cloud account.

:warning: This is a Test (beta) release. It’s on the Homey App Store’s test channel and
runs well on my own pool, but it hasn’t been through full store certification yet — expect
the odd rough edge, and please report anything that looks off. That’s exactly why I’m
posting here.

:backhand_index_pointing_right: Install (Homey App Store):


What is this?

A local Homey Pro app for the Violet pool controller by PoolDigital (sold as BADU
Blue
by Speck Pumpen — same hardware). It talks to the controller’s on‑device API over
your LAN, so there’s no PoolDigital cloud login involved. Readings feed Insights and
Flow; an opt‑in control mode lets Homey command the equipment.

:bar_chart: What it shows

The device adapts to your installation — tiles appear only for hardware the controller
actually reports:

  • :thermometer: Water temperature, pH, Redox/ORP, free chlorine (if a probe is present)
  • :droplet: Filter pump (state, speed stage, runtime today)
  • :fire: Heater, :sun: solar, :leaf_fluttering_in_wind: eco mode (with runtimes)
  • :window: Cover (open/closed/moving), :light_bulb: light
  • :potable_water: Water refill, overflow tank state, water level
  • :test_tube: Dosing per channel — dosing now, dosed today (mL), estimated days of chemical left
  • :repeat_button: Backwash running
  • :stethoscope: Optional diagnostics — firmware, uptime, CPU temp, memory, last error

Plus tile alarms: water balance, dosing blocked, chemical low, backwash‑valve fault,
overflow dry‑run and overfill.

:test_tube: The LSI water‑balance safety net (the reason this app exists)

Most pool integrations show you pH and temperature. This one can also compute the
Langelier Saturation Index (LSI) — the industry measure of whether your water is
corrosive, scaling, or balanced — and warn you when it drifts.

Why care? Corrosive water attacks copper, heaters and heat exchangers and leaches
calcium from cement‑based finishes — permanent damage. Scaling water furs up tile,
plumbing and heater elements. Preventing copper corrosion in the heat exchanger is exactly
what pushed me to build this.

  • :counterclockwise_arrows_button: Live, not a one‑shot test. The LSI is recomputed every poll from your live pH and
    water temperature, plus the slow‑changing chemistry you enter once (calcium hardness,
    total alkalinity, cyanuric acid). You see the current balance and get alerted to drift.
  • :balance_scale: The balanced band is deliberately asymmetric: −0.3 … +0.5 (0 ideal) — a slightly
    positive value is safer, because a thin protective scale layer shields surfaces while
    corrosive water does irreversible harm.
  • The app classifies each reading (severe corrosive → corrosive → balanced → scaling →
    severe scaling) and fires an edge‑triggered LSI warning Flow card with lsi,
    classification, direction and severity tokens, plus an alarm_water_balance tile.
  • Uses the Carrier closed‑form LSI with a pH‑dependent cyanuric‑acid correction (stabilised
    pools handled correctly); accepts calcium/alkalinity in ppm, °dH or °f.

Honest caveat (DIN 19643): the LSI covers the calcium‑carbonate/CO₂ equilibrium and
metals like copper/iron and cement‑based materials — it is not a valid indicator for
stainless‑steel corrosion. That caveat is shown in‑app too.

Sources behind the band scheme and interpretation:

  • ANSI/PHTA/ICC‑11 (formerly APSP‑11), Water Quality in Public Pools and Spashttps://www.phta.org/
  • DIN 19643, Aufbereitung von Schwimm- und Badebeckenwasser (stainless‑steel caveat)
  • W. F. Langelier (1936), original definition
  • Orenda Technologies, Understanding the LSIUnderstanding LSI: The Langelier Saturation Index
  • Lovibond, Balanced Water (Langelier Index)

LSI is opt‑in — enable it and enter your chemistry values when you want it.

:video_game: Control & Flow (opt‑in)

Off by default. Enable Control (write) and you get control tiles + Flow actions:

  • Set pump mode — Auto/On/Off, duration, speed stage (tile ON auto‑reverts to Auto)
  • Set light mode / Set DMX scene (1–12) / Set all lights & DMX scenes
  • Set PV‑surplus mode
  • Set water chemistry (feeds the LSI from a Flow)

:gear: Setup

  1. Install the app, add the Pool device.
  2. Enter the controller’s host or IP (default violet.local). Tip: the Violet doesn’t
    advertise mDNS, so using the controller’s static IP is the most reliable.
  3. Tiles appear for your detected equipment.
  4. (Optional) turn on Compute LSI + enter chemistry; (optional) turn on Control.

:locked: A note on control security

Control is off by default. When enabled, writes use a controller account you provide, over
the Violet’s plain‑HTTP local API — so use a least‑privilege account on a trusted/
segmented network and rotate the write password before sharing configs. Reads need no
credentials.

:person_raising_hand: Feedback / testers welcome

This is a fresh release and I’d love feedback — especially from Violet/BADU Blue owners with
different equipment combinations (solar, DMX lighting, dosing channels, overflow tanks).
Bug reports, missing readings, and Flow‑card wishes all very welcome in this thread — or as a GitHub issue: GitHub - tnsturm/violet-homey-app · GitHub

:telescope: What’s next (roadmap)

This first release focuses on monitoring, the LSI safety net and basic control. Still
planned / in the works for coming versions:

  • :inbox_tray: Live alarm push — the controller’s own alarm/error notifications pushed straight into Homey as Flow triggers.
  • :cloud: PoolLab / LabCOM import — auto‑import your slow‑changing chemistry values (calcium hardness, alkalinity, CYA) from the PoolLab cloud instead of typing them; feeds the LSI automatically.
  • :compass: Water‑balance recommendations — advisory help on getting your source/tap water into a good LSI band, which values are the real levers, including CO₂ out‑gassing when you top up with fresh water.
  • :level_slider: Dosing & setpoints — adjust target pH/ORP and dosing settings from Homey.
  • :chart_increasing: More sensors — filter pressure and flow readings, plus a review of the auto‑detection.

No promises on timing — feedback in this thread will help me prioritise.

:robot: How this was built (entirely IDE‑free)

One meta note that might interest this community: this whole app was built without a
traditional IDE
— start to finish in Claude Code in the terminal, with GitHub. I didn’t
hand‑write the application code; my part was the domain knowledge, testing on the real
controller, and the decisions. It ran as a real engineering process (spec → plan → test‑first
→ automated security review) and, along the way, grew into its own self‑verifying agentic
development loop
.

I wrote the full story up as a separate thread — how it began, how Superpowers made
disciplined IDE‑free development work, and how the loop learned to run itself:
:backhand_index_pointing_right: [How I built a Homey app without an IDE — with Claude Code, SuperpowersSki, and an automated development loop - Developers - Homey Community Forum]

Full source and README (setup details, LSI math, security notes) are on GitHub:
:backhand_index_pointing_right: GitHub - tnsturm/violet-homey-app · GitHub

:package: Version

Current App Store version: 0.4.4 (Test/beta channel). Starting certification with Athom right now.


:germany: German version of this announcement (poolsteuerung.de): [Violet + BADU Blue in Homey Pro – neue App mit LSI Berechnung - PoolDigital Forum]

Homey App Store: https://homey.app/en-us/app/de.neunbft.violet/Violet-+-BADU-Blue-Pool-Control/

Update: Violet Pool Control 0.4.7 is now live on the Homey App Store :tada:

Athom has certified the app — it’s now publicly available, no test-channel link needed anymore: Violet Poolsteuerung | Homey

And the next update (0.6.2) is already submitted to the store: the app now reads your Violet’s configuration — new input tiles (e.g. filter pressure, flow) with your own names, units and decimals, temperature sensors with your configured names and smarter auto-selection, no more ghost tiles for features disabled in the Violet, plus a fix for canister-range values reported in hours.
0.6.2 is currently available in test channel:
Violet Poolsteuerung | Homey Test

Feedback and issue reports are very welcome!

Violet + BADU Blue — Quickstart Guide

This app brings your PoolDigital Violet or BADU Blue pool controller into
Homey over your local network — no cloud account, no PoolDigital login. Everything
below works the same for both; BADU Blue is Speck Pumpen’s badge of the same
PoolDigital hardware.

Requirements

  • A Homey Pro (local platform)
  • Your Violet/BADU Blue controller on the same network as Homey
  • Recommended: give the controller a static IP so Homey doesn’t lose it after a
    router reboot

Setting it up

  1. Install the app from the Homey App Store.
  2. Add a Pool device and enter the controller’s host or IP. Try violet.local
    first; if that doesn’t resolve on your network, use the controller’s IP address
    instead.
  3. The device shows up with tiles for whatever equipment your controller actually
    reports — no empty tiles for gear you don’t have.
  4. Reading values (temperature, pH, pump state, etc.) works immediately, without
    any password.

That’s it for monitoring. Two optional features go further — both are off until
you switch them on:

Optional: the water-balance safety net

Enable Compute LSI in the device settings and enter your calcium hardness,
total alkalinity and cyanuric acid (from your test kit or PoolLab). The app then
continuously works out whether your water is corrosive, balanced or
scaling, using live pH and temperature — not just the day you last tested.

Why it matters: corrosive water attacks copper and iron parts (especially the
heater), and scaling water deposits limescale on tiles and plumbing. You get a
Homey alarm and a Flow trigger the moment the balance drifts out of range, so you
can act before either type of damage sets in.

Optional: controlling the pool from Homey

Enable Control (write) in the device settings to command the pump, lights, DMX
scenes and PV-surplus mode from Homey tiles and Flow. This needs a
username/password for the controller — use a dedicated, least-privilege account,
since the Violet’s local API is plain HTTP (no encryption) on your LAN. Reading
values never needs a password, only writing commands does.

Showing/hiding equipment tiles

Every equipment group (heater, solar, cover, backwash, water refill, overflow
tank, dosing, …) has an Auto / Always show / Hide setting. Auto — the
default — shows a tile only when your controller actually reports that hardware,
so your device view stays focused on what you actually have installed.

Flow automation

Everything the app reads or does is available in Flow: triggers for LSI warnings,
dosing problems, backwash faults and overflow-tank faults; actions to set the
pump/light/DMX/PV-surplus mode and to update your water-chemistry values. Alarms
also show up automatically in the device’s alarm tiles.

Getting alarm push notifications from the Violet

The Violet can push its own alarms straight to Homey (separate from the app’s
built-in LSI/dosing alarms above), firing an “An alarm was received” Flow
trigger.

To set it up:

  1. In the Violet’s own notification settings, set the receiver to your Homey’s IP
    address, using the Alarm listener port shown in the device settings
    (default 22222).
  2. The Violet’s normal web interface can’t change its own receiving port — that
    needs an undocumented page. Open
    http://<violet-ip>/modifyParameter.htm?NOTIFY_http_baseport in a browser,
    enter the same port number there, and save. (The device settings screen in
    Homey also shows this as a hint right next to the port field.)

Note: this channel has no encryption or authentication on the Violet’s side, so
keep it LAN-only — never forward that port to the internet. It only ever feeds
Homey a notification; it can’t be used to control the pool.

Troubleshooting / FAQ

  • violet.local doesn’t resolve — the Violet doesn’t advertise itself via
    mDNS on every network. Use its IP address instead (and consider giving it a
    static one).
  • Some tiles are missing — that’s expected if your controller doesn’t report
    that equipment; check the feature-group settings above if you expected to see
    one.
  • pH/ORP/chlorine show - right after startup — the app only trusts those
    readings once the pump has circulated water for a bit (configurable “pump
    warm-up” setting), since a stagnant sensor isn’t representative.
  • BADU Blue vs. Violet — identical hardware, identical setup; everything in
    this guide applies to both.
  • Found a bug or have a feature idea? Reply in this topic.