Skip to content

corekill/poolcomfort-galaxywind

Repository files navigation

Pool Comfort / Galaxywind — local Home Assistant integration (HACS)

Pool Comfort / Galaxywind pool heat pump – Home Assistant local integration

hacs_badge Validate License: MIT Python Ko-fi

Home Assistant custom component for Pool Comfort, Galaxywind and GWCD swimming pool heat pumps. Install via HACS, control your pool heat pump locally — no cloud, no vendor account needed.

Local UDP client and Home Assistant integration for Pool Comfort / Galaxywind / GWCD pool heat pumps. Reverse-engineered from the com.gwcd.htc_en_oem Android app — works fully offline against the heat pump on UDP 1194. No cloud, no vendor account.

Tested on a Pool Comfort unit; captures from other Galaxywind / GWCD pumps that speak the same protocol are welcome. If you have a pool heat pump that uses the Pool Comfort or Galaxywind mobile app, this integration should work.


Install

Via HACS (recommended)

Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

  1. Click the button above (or in HACS go to ⋮ → Custom repositories, paste https://github.com/corekill/poolcomfort-galaxywind, category Integration).
  2. Find Pool Comfort / Galaxywind heat pump in HACS and Download.
  3. Restart Home Assistant.
  4. Add the integration:

Open your Home Assistant instance and start setting up a new integration.

You'll be asked for the heat pump IP and the device password (default 123456). The serial number is detected automatically.

Manual install

  1. Copy custom_components/poolcomfort/ into your Home Assistant config/custom_components/.
  2. Restart Home Assistant.
  3. Use the Add integration button above.

What you get

  • Climate entity — target temperature, HVAC mode (off / auto / heat / cool), current water temperature.
  • Sensors — water inlet temperature, water outlet temperature, ambient temperature, serial number, device status and raw state block diagnostics.
  • Binary diagnostic sensors — compressor, high/low fan speed, circulation pump, four-way valve, pressure/flow switches and related working details.
  • Local-only — all traffic stays on your LAN over UDP 1194. No cloud account, no internet dependency.
  • Polling — 30 s by default. The integration maintains a single persistent UDP session with keepalive pings, so only one session slot is used on the pump.

Supported hardware

Any heat pump that pairs with the Pool Comfort / Galaxywind / GWCD com.gwcd.htc_en_oem Android app should work — these include OEM-rebranded units (Pool Comfort, Galaxywind, GWCD, several Chinese pool heat pump brands). Confirmed:

  • Pool Comfort (one unit, FW shipped 2023-ish)

If yours works (or doesn't), please open an issue with a small PCAP and the model number — see docs/capture-mikrotik.md.


Repo layout

Path What it is
poolcomfort_local/ Pure-Python library: discovery, login, query, set commands
custom_components/poolcomfort/ Home Assistant custom component
scripts/ PCAP analysis: dump frames, extract auth challenge-response pairs
docs/ Reverse-engineering notes (protocol, capture HOWTO)
tests/ pytest test vectors backed by real captures

Library / CLI

The Home Assistant component is built on a standalone library you can use directly:

python -m venv .venv
. .venv/bin/activate
pip install -e .

# Discover by serial, query state
python -m poolcomfort_local.cli --serial <serial> --password 123456 status

# Or by IP
python -m poolcomfort_local.cli --host <ip> --password 123456 status
python -m poolcomfort_local.cli --host <ip> --password 123456 diagnostics

# Control
python -m poolcomfort_local.cli --host <ip> --password 123456 power on
python -m poolcomfort_local.cli --host <ip> --password 123456 set-temp 28
python -m poolcomfort_local.cli --host <ip> --password 123456 set-mode 2

Set-temp and set-mode require the pump to be powered on; the CLI checks first unless --assume-on is passed.

PCAP analysis (needs scapy):

pip install -e '.[pcap]'
python scripts/pcap_dump.py capture.pcap --pump <ip>
python scripts/pcap_auth_pairs.py capture.pcap --pump <ip>

Protocol — what's known

  • UDP 8818 — LAN discovery
  • UDP 1194 — control session
  • Device type 0x000d — pool heat pump
  • Login: MD5(nonce + challenge + MD5(password)), two-step handshake
  • Per-attribute byte order matters: target temp is BE u16, mode and power are first-byte / LE u16 — see docs/protocol.md.
  • After every SET, the pump expects an immediate query and ACK on its 0b0a notify, otherwise the session goes stale within ~2 s.

Full notes in docs/protocol.md.


Status / known limits

  • Working details bitfield is decoded from the same pump_info / fault2 logic used by the Android app. The current mapping is verified on one Pool Comfort unit and kept alongside raw diagnostic words for easier validation on other OEM models.
  • Session keepalive — the firmware kills idle sessions within seconds. The integration keeps the session alive with periodic pings and automatically reconnects if needed. Failed reconnects use exponential backoff so a flaky or wedged pump is not flooded with half-open login sessions.
  • One physical unit tested. More captures from other devices would help.

Contributing

PCAPs from other heat pumps, parsed attributes, and protocol findings are very welcome. Please do not commit captures with router credentials, public IPs, or unrelated LAN traffic — see CONTRIBUTING.md.


Credits

Built from reverse-engineering the com.gwcd.htc_en_oem Android app and MikroTik LAN captures. Galaxywind / GWCD / Pool Comfort are trademarks of their respective owners; this project is not affiliated with or endorsed by any of them.

If this integration saved you time or works well for you, consider buying me a coffee.

License

MIT — see LICENSE.

About

Local Home Assistant (HACS) integration for Pool Comfort / Galaxywind / GWCD pool heat pumps. Works offline over LAN UDP — no cloud, no vendor account. Reverse-engineered from the Android app.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages