Control your Bestway Lay-Z-Spa hot tub and pool filter pump directly from Homey. The app supports both generations of Bestway cloud infrastructure and keeps the device state in sync automatically.
Connects via your Bestway Smart Hub account (email + password).
| API Product Name | Device |
|---|---|
Airjet |
Basic AirJet spa (e.g. Miami, Monaco) |
Airjet_V01 |
V01 AirJet spa (e.g. Helsinki, Paris) |
Hydrojet |
HydroJet spa |
Hydrojet_Pro |
HydroJet Pro spa (e.g. Dominica HydroJet™ Energy Plus) |
Unknown product names fall back to the HydroJet Pro mapping with a warning in the Troubleshooting panel.
Connects via a share code generated in the Bestway Smart Hub app — no account credentials required.
| Product Series | Device |
|---|---|
AIRJET |
Airjet V02 |
ULTRAFIT_AIRJET |
Ultrafit Airjet V02 |
HYDROJET |
Hydrojet V02 |
HYDROJET_PRO |
Hydrojet Pro V02 |
Connects via your Bestway Smart Hub account (email + password). For standalone Bestway pool filter pumps (separate from the spa).
- Power — Turn the spa on and off
- Target temperature — Set the desired water temperature (20–40 °C, 1 °C steps)
- AirJet Low / High — Set bubble massage intensity (Low or High; mutually exclusive)
- HydroJet — Toggle water jet massage on/off (HydroJet models only)
- Filter — Run or stop the filter pump independently
- Heating — Toggle the heater on/off independently
- Panel Lock — Toggle the physical keypad lock (writable on basic Airjet and all V02 models; read-only on Airjet_V01, HydroJet and HydroJet Pro)
- Current water temperature — Live reading from the device sensor
- Target temperature reached — Indicator when the set temperature has been reached; V02 uses the dedicated
heater_state=4signal for accuracy - Error alarm — Generic alarm flag when any fault code is active
- Error details — Human-readable description of active error codes (V01: E01–E31)
- Power — Turn the filter pump on and off
- Timer — Set a run duration of 0–24 hours
- Filter change required — Indicator when the filter cartridge needs replacing
Lay-Z-Spa Triggers (When…)
- Target temperature reached (token: current temperature in °C)
- Spa error occurred (token: error message)
Lay-Z-Spa Conditions (And…)
- Heating is / is not active
- Filter is / is not running
- Spa has / has no error
- Water temperature is above / not above
[x]°C - Water temperature is below / not below
[x]°C - Target temperature is / is not reached
- AirJet is / is not active
- Panel lock is / is not active
Lay-Z-Spa Actions (Then…)
- Set AirJet level (Off / Low / High)
- Turn HydroJet on or off (HydroJet models only)
- Turn heating on or off
- Turn filter on or off
Pool Filter Pump Triggers (When…)
- Filter pump error occurred (token: error message)
- Filter cartridge change required
Pool Filter Pump Conditions (And…)
- Filter pump has / has no error
- Filter change is / is not required
- Heat the spa to target temperature before you arrive home
- Send a notification when the target temperature is reached
- Turn off the filter at night and back on in the morning
- Alert when a spa error code is detected
- Remind you when the pool filter cartridge needs replacing
- Open the Homey app → Devices → + → search for Lay-Z-Spa
- Select Lay-Z-Spa or Pool Filter Pump
- Sign in with your Bestway Smart Hub account (email + password)
- Select your device from the list — offline devices are marked (offline)
- The device is added and starts syncing automatically
Login is attempted on EU, US and Global regions automatically — no manual region selection needed.
- Open the Homey app → Devices → + → search for Lay-Z-Spa
- Select Lay-Z-Spa (Connect / V02)
- Open the Bestway Smart Hub app on your phone
- Go to your spa → ··· → Share Device and copy the share code (
RW_Share_…) - Paste the code into Homey and tap Connect
- Select your spa from the list
The share code is tried on both EU and US endpoints automatically.
If your Bestway password changes: Device → Settings → Repair, then enter your new email and password.
If the connection is permanently lost (e.g. share code revoked): Device → Settings → Repair, then enter a new share code from the Bestway Smart Hub app.
| Setting | Description |
|---|---|
| Poll interval | How often the app fetches status from the cloud (10–300 s, default 30 s / 60 s). |
| Server region | Gizwits API region (EU / US / Global). Set automatically during pairing. |
| Setting | Description |
|---|---|
| Poll interval | How often the app fetches status from the cloud (10–300 s, default 60 s). |
A read-only panel in the device settings shows live diagnostic data. Available on all drivers.
V01 (Lay-Z-Spa & Pool Filter Pump)
| Field | Content |
|---|---|
| Last sync | Timestamp of the last API call |
| Status | OK ✓ or Error: <message> |
| Device model | product_name as reported by the Gizwits API |
| Active region | The region currently used for API calls |
| Active error codes | Raw E-codes with non-zero values |
| Raw device attributes | All raw key/value pairs from the API response |
| MCU / Wi-Fi firmware | Firmware versions fetched from the API |
V02
| Field | Content |
|---|---|
| Last sync | Timestamp of the last shadow fetch |
| Status | OK ✓ or Error: <message> |
| Active region | The region currently used for API calls |
| Firmware version | Firmware version from the device shadow |
| Raw device state | All raw key/value pairs from the shadow response |
| Code | Meaning |
|---|---|
| E01 | Flow sensor error (paddle stuck) |
| E02 | Insufficient water flow |
| E03 | Water temperature too low (< 4 °C) |
| E04 | Water temperature too high (> 48 °C) |
| E05 | Temperature sensor error |
| E06 | Pump test failed |
| E08 | Thermal cutoff triggered (> 55 °C) |
| E32 | Target temperature reached (not a fault — shown as "Temp reached" indicator) |
| Code | Meaning |
|---|---|
| E01 | Flow sensor error (paddle stuck) |
| E02 | Insufficient water flow |
| E05 | Temperature sensor error |
| E06 | Pump test failed |
| E08 | Thermal cutoff triggered (> 55 °C) |
- Backend: Bestway / Gizwits V01 REST API
- Regions: EU (
euapi.gizwits.com), US (usapi.gizwits.com), Global (api.gizwits.com) - Authentication: Token-based with automatic refresh before expiry; force re-auth on error 9004
- Offline detection: Error 9042 marks device unavailable immediately (no backoff wait)
- Polling: Configurable interval with exponential backoff on failure (doubles per failure, max 5 min)
- Control retry: Failed commands are retried once after 2 seconds
- Backend: Bestway SmartHub cloud (AWS IoT device shadows)
- Regions: EU (
smarthub-eu.bestwaycorp.com), US (smarthub-us.bestwaycorp.com) - Authentication: Credential-free visitor token tied to a persistent visitor ID
- Encryption: Control commands AES-256-CBC encrypted (key derived per-request from HMAC sign)
- Polling: Configurable interval with exponential backoff on failure (doubles per failure, max 5 min)
- Control retry: Failed commands are retried once with token refresh
- Homey SDK: v3, Homey ≥ 12.0.0
- Flow triggers: Rising-edge detection — fires only on
false → truetransitions
Pull requests welcome. V01 API mapping based on analysis of the ha-bestway Home Assistant integration.
Bugs and feature requests: GitHub Issues