Version of the custom_component
v1.7.0-beta1 according to HACS, Home Assitant says 1.6.2
Bestway device
Airjet
Describe the bug
All spa controls regularly switch between unavailable and available - currently on a five minute cycle. Spa can't be controlled while entities are unavailable. The diagnostic entity "Connected" shows connected the whole time, even when the spa controls are unavailable.
For example, at 10:19:30AM the following entities became unavailable: Spa Thermostat, Spa Power, Spa Filter, Spa Bubbles, Spa Locked. Then, at 10:24:40AM, the entities all become available again (showing in the logbook as "turned off").
This screenshot demonstrates how regularly the entities are cycling:

I've tried resetting the spa and re-adding it, using a new Bestway account, deleting the custom component and downloading it again... Not sure what else to try.
This has been a problem for months, but initially I just adjusted my automations to account for the issue... Would be good to resolve it though!
Logs
Starting with spa unavailable
- 2025-04-30 12:03:21.227 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:03:21.228 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:03:21.228 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 0.974 seconds (success: True)
- 2025-04-30 12:03:52.261 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:03:52.261 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:03:52.261 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 1.007 seconds (success: True)
- 2025-04-30 12:04:23.231 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:04:23.231 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:04:23.231 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 0.978 seconds (success: True)
12:04:54PM Becomes available
- 2025-04-30 12:04:54.236 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:04:54.237 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:04:54.237 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 0.984 seconds (success: True)
- 2025-04-30 12:05:25.233 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:05:25.233 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:05:25.233 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 0.980 seconds (success: True)
- 2025-04-30 12:05:56.240 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:05:56.240 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:05:56.240 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 0.986 seconds (success: True)
- 2025-04-30 12:06:27.218 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:06:27.218 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:06:27.218 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 0.964 seconds (success: True)
- 2025-04-30 12:06:58.237 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:06:58.237 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:06:58.237 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 0.984 seconds (success: True)
- 2025-04-30 12:07:29.233 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:07:29.233 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:07:29.233 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 0.979 seconds (success: True)
- 2025-04-30 12:08:00.245 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:08:00.245 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:08:00.246 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 0.992 seconds (success: True)
- 2025-04-30 12:08:31.285 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:08:31.285 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:08:31.285 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 1.030 seconds (success: True)
- 2025-04-30 12:09:02.320 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:09:02.320 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
2025-04-30 12:09:02.320 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 1.066 seconds (success: True)
12:09:33PM Becomes unavailable
- 2025-04-30 12:09:33.258 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:09:33.258 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:09:33.258 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 1.005 seconds (success: True)
- 2025-04-30 12:10:04.240 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
- 2025-04-30 12:10:04.240 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
2025-04-30 12:10:04.240 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 0.987 seconds (success: True)
- 2025-04-30 12:10:35.283 DEBUG (MainThread) [custom_components.bestway.bestway.api] Device list refreshed: {"devices": [{"protoc": 3, "ws_port": 8080, "port_s": 8883, "gw_did": null, "host": "usm2m.gizwits.com", "sleep_duration": 3600, "port": 1883, "mcu_soft_version": "P210D102", "product_key": "********************************", "state_last_timestamp": 1745978833, "role": "owner", "is_sandbox": false, "type": "normal", "product_name": "Airjet", "is_disabled": false, "mcu_hard_version": "P210D100", "wifi_soft_version": "0402003A", "dev_alias": "Spa", "mesh_id": null, "is_online": true, "dev_label": [], "wss_port": 8880, "remark": "21", "did": "", "mac": "", "passcode": "", "wifi_hard_version": "00ESP826", "is_low_power": false}]}
- 2025-04-30 12:10:35.572 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
2025-04-30 12:10:35.572 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
- 2025-04-30 12:10:35.572 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 1.318 seconds (success: True)
- 2025-04-30 12:11:06.240 DEBUG (MainThread) [custom_components.bestway.bestway.api] New data received for device 0ntjhzV1Yc9AWbqoQfu1gZ
And so on... doesn't become available again until 12:14:43PM
Version of the custom_component
v1.7.0-beta1 according to HACS, Home Assitant says 1.6.2
Bestway device
Airjet
Describe the bug
All spa controls regularly switch between unavailable and available - currently on a five minute cycle. Spa can't be controlled while entities are unavailable. The diagnostic entity "Connected" shows connected the whole time, even when the spa controls are unavailable.
For example, at 10:19:30AM the following entities became unavailable: Spa Thermostat, Spa Power, Spa Filter, Spa Bubbles, Spa Locked. Then, at 10:24:40AM, the entities all become available again (showing in the logbook as "turned off").
This screenshot demonstrates how regularly the entities are cycling:
I've tried resetting the spa and re-adding it, using a new Bestway account, deleting the custom component and downloading it again... Not sure what else to try.
This has been a problem for months, but initially I just adjusted my automations to account for the issue... Would be good to resolve it though!
Logs
Starting with spa unavailable
12:04:54PM Becomes available
2025-04-30 12:09:02.320 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 1.066 seconds (success: True)
12:09:33PM Becomes unavailable
2025-04-30 12:10:04.240 DEBUG (MainThread) [custom_components.bestway.coordinator] Finished fetching Bestway API data in 0.987 seconds (success: True)
2025-04-30 12:10:35.572 DEBUG (MainThread) [custom_components.bestway.bestway.api] Status for device type 'Airjet' returned: {"system_err2": 0, "wave_appm_min": 59940, "heat_timer_min": 0, "heat_power": 0, "earth": 0, "wave_timer_min": 59940, "system_err6": 0, "system_err7": 0, "system_err4": 0, "system_err5": 0, "heat_temp_reach": 0, "system_err3": 0, "system_err1": 0, "system_err8": 0, "system_err9": 0, "filter_timer_min": 0, "heat_appm_min": 0, "power": 0, "temp_set_unit": "\u6444\u6c0f", "filter_appm_min": 0, "temp_now": 27, "wave_power": 0, "locked": 0, "filter_power": 0, "temp_set": 37}
And so on... doesn't become available again until 12:14:43PM