Part of the ReefTech Project Ecosystem
Control your Aqua Medic pumps from Home Assistant via the Gizwits cloud API.
Your device is not supported? Please contact me.
β Supported Β |Β π§ͺ Untested (may work) Β |Β β Not yet supported
The DC Runner return pump and skimmer pump share the same firmware and Gizwits product key. They expose an identical datapoint set (verified against two independent real-device captures) and are handled by the same code path β the two rows above are the same device with different pump heads. In Home Assistant they both appear as model DC Runner; use the device alias to distinguish which pump is which.
The
8879684725β¦product key is a speculative simpler variant that has not (yet) been observed on real hardware; the code path is kept in place in case a device advertising this key shows up.
All these devices use the Gizwits IoT platform (same backend as the official Aqua Medic app). Support for additional devices may be added in future releases.
The integration is now officially in HACS. Simply search for Aqua Medic in the Integrations tab and install it.
Or use the direct installation button:
Then restart Home Assistant.
| Entity | Description |
|---|---|
| Power | Main on/off |
| Wave type | Pulse mode (off) / Tide mode (on) |
| Feeding mode | Activates feeding pause |
| Timer | Enables program mode |
| 0-10V control mode | When on, disables the Flow rate slider (pump driven by external 0-10V signal) |
| Entity | Options |
|---|---|
| Wave mode | Classic wave Β· Sine wave Β· Random wave Β· Constant flow |
| Linkage | Independent Β· Master Β· Slave |
| Entity | Range | Description |
|---|---|---|
| Flow rate | 0β100 % | Motor flow (disabled in 0-10V mode) |
| Frequency | 0β100 % | Wave frequency |
| Feeding duration | 1β60 min | Duration of feeding pause |
| Entity | Description |
|---|---|
| Overcurrent fault | Motor overcurrent / short circuit |
| Overvoltage fault | Motor overvoltage |
| Overtemperature fault | Motor temperature too high |
| Undervoltage fault | Motor undervoltage |
| Locked rotor fault | Motor jammed / blocked |
| No load fault | Pump running dry |
| UART communication fault | Module β mainboard communication error |
| Entity | Description |
|---|---|
| Refresh | Forces an immediate data refresh without waiting for the next poll interval |
β Confirmed against two real device captures (return pump + skimmer). The two variants share the same firmware β Home Assistant displays them both as model DC Runner; the exact pump role (return / skimmer) is only distinguishable from your device alias.
A legacy simpler variant with product key
8879684725β¦(singleFlowcontrol, no scheduler) is also handled by the integration but has not been confirmed on real hardware.
| Entity | Description |
|---|---|
| Power | Main on/off |
| Feeding mode | Activates feeding pause |
| Timer | Enables the timer / schedule program |
| 0-10V control mode | When on, disables the speed slider (pump driven by external 0-10V signal) |
| Entity | Options |
|---|---|
| Timer mode | Stop Β· Auto Β· Feeding |
| Entity | Range | Description |
|---|---|---|
| Motor speed | 30β100 % | Pump speed (minimum 30 % β below this the motor may stall; disabled in 0-10V mode) |
| Feeding duration | 1β60 min | Duration of the feeding pause |
| Timer speed | 0β100 % | Speed used by the scheduled program |
| Timer feeding time | 1β60 min | Feeding duration used by the scheduled program |
| Entity | Description |
|---|---|
| Overcurrent fault | Motor overcurrent / short circuit |
| Overvoltage fault | Motor overvoltage |
| Overtemperature fault | Motor temperature too high |
| Undervoltage fault | Motor undervoltage |
| Locked rotor fault | Motor jammed / blocked |
| No load fault | Pump running dry |
| UART communication fault | Module β mainboard communication error |
| Entity | Description |
|---|---|
| Refresh | Forces an immediate data refresh |
About 0-10V control: every DC Runner controller has a physical 0-10V input for an external aquarium controller (Apex, GHL, β¦). It is a hardware port, not a cloud value, so it does not appear as a device attribute β the 0-10V control mode switch is a local Home Assistant flag that disables the speed slider while the pump is driven externally. Per Aqua Medic's manual, in 0-10V mode the pump must run at β₯ 60 %.
Go to Settings β Devices & Services β Add Integration β Aqua Medic.
| Field | Description |
|---|---|
| Your Aqua Medic app account e-mail | |
| Password | Your Aqua Medic app password |
| Gizwits server | Region server β select Europe for EU users |
| Refresh interval | How often device state is polled (5β300 s, default 30 s) |
The correct server is pre-selected automatically based on your Home Assistant language.
After setup, options (refresh interval) can be changed via Settings β Devices & Services β Aqua Medic β Configure.
A Gizwits cloud simulator (scripts/gizwits_simulator.py) lets you test the integration without real hardware or cloud access. It is configured via scripts/gizwits_sim_config.json:
| Key | Description |
|---|---|
username / password |
Credentials the integration must use to log in |
virtual_ip |
IP the simulator binds to (127.0.0.1 skips virtual-IP setup) |
interface |
Network interface for the virtual IP (optional; if omitted, the default-route interface is auto-detected, falling back to eth0; can be overridden with -i/--interface) |
port |
Listening port (default 8080) |
devices |
List of { "type": ..., "count": N }; available types: smartdrift, dc_runner (legacy speculative variant), dc_runner_return (DC Runner series return pump), dc_skimmer (DC Runner series skimmer pump β same firmware as dc_runner_return) |
Run it with sudo python3 scripts/gizwits_simulator.py (root is required to add the virtual IP).
To make the Simulator region appear in the config flow, create the local flag file (git-ignored, never commit it):
cp custom_components/aquamedic/simulator_enabled.example custom_components/aquamedic/.simulator_enabledRestart Home Assistant, add the integration and select Simulator; you will then be asked for the simulator host URL (default http://localhost:8080) and the credentials from the config file.
MIT β see LICENSE.



