Coder Social home page Coder Social logo

gazoodle / gecko-home-assistant Goto Github PK

View Code? Open in Web Editor NEW
66.0 16.0 22.0 450 KB

Home Assistant integration for spas equipped with Gecko Alliance in.touch2 modules

License: MIT License

Python 100.00%
home-assistant hacs home-assistant-integration gecko spa hot-tub jacuzzi intouch2

gecko-home-assistant's Introduction

gecko-home-assistant

GitHub Release GitHub Activity License

hacs Project Maintenance

Component to integrate with Gecko Spas.

This component will set up the following platforms.

Platform Description
button Reconnect button.
binary_sensor Various on/off spa sensors.
sensor Text/Enum spa sensors.
switch Waterfalls
fan Spa pumps, fans.
light Spa lights
climate Spa water heater

Example screen shot

Screenshots

Installation (HACS)

The preferred method to install is to use HACS. This repo should be available in the default list, but this is currently in progress, so you might need to add https://github.com/gazoodle/gecko-home-assistant as a custom repo. See https://hacs.xyz/docs/faq/custom_repositories for details.

Installation (No HACS)

If you don't have/want HACS installed, you will need to manually install the integration

  1. Using the tool of choice open the directory (folder) for your HA configuration (where you find configuration.yaml).
  2. If you do not have a custom_components directory (folder) there, you need to create it.
  3. In the custom_components directory (folder) create a new folder called gecko.
  4. Download all the files from the custom_components/gecko/ directory (folder) in this repository.
  5. Place the files you downloaded in the new directory (folder) you created.
  6. Restart Home Assistant
  7. In the HA UI go to "Configuration" -> "Integrations" click "+" and search for "Gecko"

Using your HA configuration directory (folder) as a starting point you should now also have this:

custom_components/gecko/.translations/en.json
custom_components/gecko/__init__.py
custom_components/gecko/binary_sensor.py
custom_components/gecko/button.py
custom_components/gecko/climate.py
custom_components/gecko/config_flow.py
custom_components/gecko/const.py
custom_components/gecko/fan.py
custom_components/gecko/light.py
custom_components/gecko/manifest.json
custom_components/gecko/sensor.py
custom_components/gecko/spa_manager.py
custom_components/gecko/switch.py

Configuration is done in the UI


gecko-home-assistant's People

Contributors

brewston avatar ephemerist avatar gazoodle avatar ktibow avatar llamafilm avatar los93sol avatar rct avatar wrt54g avatar xela1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gecko-home-assistant's Issues

No 'version' key in the manifest file for custom integration 'gecko'

I noticed this in the logs today :

2021-03-10 17:07:07 WARNING (MainThread) [homeassistant.loader] No 'version' key in the manifest file for custom integration 'gecko'. This will not be allowed in a future version of Home Assistant. Please report this to the maintainer of 'gecko'

Set RGB lights to a specific setting

My hot tub supports about 8 different colours, and a setting to cycle through them all. My preferred colour is about 5 or 6 colours in, and the only way to get to it is by turning the lights on, and then off 5 or 6 times in quick succession. This is the same on either the panel, or through this API. I'm not sure if it's even possible, but it would be fantastic to go straight to my preferred colour rather than having to cycle through them! Have I missed anything in the API, or is there any way to do this I've not considered?

Configuration > Integrations > + "Gecko" doesn't show Gecko as an option

Installed Gecko @ 0.0.7via HACS on 30th Jan 2022.

Nothing shows up in the UI (Configuration > Integrations > + "Gecko" doesn't show Gecko as an option)

No errors or warnings related to gecko in logs.

System Health

version core-2021.12.10
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.9.7
os_name Linux
os_version 5.10.91
arch aarch64
timezone Europe/London
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 4941
Installed Version 1.19.0
Stage running
Available Repositories 965
Downloaded Repositories 3
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 7.2
update_channel stable
supervisor_version supervisor-2021.12.2
docker_version 20.10.9
disk_total 115.7 GB
disk_used 8.0 GB
healthy true
supported true
board odroid-n2
supervisor_api ok
version_api ok
installed_addons File editor (5.3.3), MariaDB (2.4.0), Let's Encrypt (4.12.0), Mosquitto broker (6.0.1), Check Home Assistant configuration (3.9.0), Terminal & SSH (9.3.0), eWeLink Smart Home (1.2.3), Node-RED (10.3.4)
Lovelace
dashboards 1
resources 0
views 2
mode storage

image

Deal with CI warnings

CI gives this report
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! ha-blueprint is being retired, it has way too many issues with it !
! please manually use hassfest and hacs in actions, ping @KTibow if you want help !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Opening this so that I can ask @KTibow to give appropriate pointers -- Thanks!

2 Speed pump

My "pump 1" has 2 speed options.
When I click on the pump in the official intouch.2 app, it turns on the pump in slow mode.
When I click on the pump again, it changes it to fast mode.
When I click the pump a 3rd time, it turns off.

It seems that the "pump 1" home assistant switch operates in a similar way. It's a little bit confusing though. When the switch is already on (pump running slow) and I go to toggle the switch off, it turns itself back on (pump running fast). Now that I understand this operation, I'm ok with this.

However, I'm wondering if we could expose a binary sensor that shows whether the pump is in slow/fast mode please? Or perhaps it would be best to have a 3 state switch of sorts?

Erratic current temperature and other entities (Geckolib STATP handling error)

Version of the custom_component

0.0.5 - manifest.json
0.0.1 - const.py

(Geckolib version 0.3.17)

Describe the bug

The current temperature reported through the Home Assistant climate device can show erratic changes due to a bug in GeckoLib's 0.3.17's handling of partial status updates. See gazoodle/geckolib#20.

(While this is a problem that needs to be resolved in Geckolib and therefore doesn't belong here, I'm opening this issue to help the Home Assistant users find and work around this issue until the problem in Geckolib is fixed.

Description

Splitting the discussion of this issue from #15 into a separate dedicated issue thread.

image

The red line (current temperature) keeps briefly returning to the original starting value, because there is a bug in the way partial status updates are applied. Old processed updates aren't being cleared out and keep being reprocessed. This was discovered by @maegibbons in gazoodle/geckolib#20

Working around this requires patching Geckolib's spa.py. Will try to add some instructions for patching below.


EDIT -- putting these instructions here for now, will integrate above later

Using a local copy of Geckolib

To use a local copy of Geckolib that will survive container updates.

  1. Put a copy of src/geckolib from the Geckolib repo under /config/geckolib,
  2. Remove the requirements line that mentions geckolib from custom_components/gecko/manifest.json.

Note to remember it is there when Geckolib gets updated (or the custom component gets integrated)


using an updated Geckolib from GitHub

Alternate that I haven't tested from Hass dev docs, Change manifest.json to point to a specific GitHub repo/branch:

See https://developers.home-assistant.io/docs/creating_integration_manifest#custom-requirements-during-development--testing

https://developers.home-assistant.io/docs/creating_integration_manifest#custom-requirements-during-development--testing

This would probably be more useful to anyone that isn't doing any hacking on Geckolib, but does introduce a dependency on GitHub.

Planning to buy a hot tub

Anything I need to ask specifically to the vendor in order for this to work ? Which types of Gecko equipment has this been tested on ? Would it be possible to share some views of the UI ?

Keeps disconnecting

Hi

Since this last update the integration keeps disconnecting and only reconnects once you press the reconnect button of the integration.

Never had this problem before and not sure if it’s something to do with my setup or a wider issue.

Many thanks for any help

Jamie

High CPU usage caused by integration

Version of the custom_component

Version: 0.1.2
Gecko Lib: 0.4.1

Configuration

inYT: 567 v5.0
Low-level Conf.: 8
Keypad: 109 v6.0

Describe the bug

When the integration is enabled CPU usage pegs a single core of my system to 100%. Verified disabling the integration brings system usage back in line.

Logs

Debug log

<!-- To enable debug logs check this https://www.home-assistant.io/components/logger/ -->
2022-03-16 15:02:50 INFO (MainThread) [custom_components.gecko]
-------------------------------------------------------------------
Gecko
Version: 0.1.2
Gecko Lib: 0.4.1
This is a custom integration!
If you have any issues with this you need to open an issue here:
https://github.com/gazoodle/gecko-home-assistant/issues
-------------------------------------------------------------------
2022-03-16 15:02:50 DEBUG (MainThread) [custom_components.gecko] Setup entry for UUID 85e308fd-e9e7-4cbd-bc2a-1f5274c52060, ID SPA04:91:62:ce:e4:9b, address None (None)
2022-03-16 15:02:50 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.SPA_MAN_ENTER, state GeckoSpaState.IDLE
2022-03-16 15:02:51 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_STARTED, state GeckoSpaState.LOCATING_SPAS
2022-03-16 15:02:51 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_DISCOVERED_SPA, state GeckoSpaState.LOCATING_SPAS
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_FINISHED, state GeckoSpaState.LOCATED_SPAS
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_STARTED, state GeckoSpaState.LOCATING_SPAS
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_DISCOVERED_SPA, state GeckoSpaState.LOCATING_SPAS
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_FINISHED, state GeckoSpaState.LOCATED_SPAS
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_HAS_STATUS_SENSOR, state GeckoSpaState.LOCATED_SPAS
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_HAS_RECONNECT_BUTTON, state GeckoSpaState.CONNECTING
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_STARTED, state GeckoSpaState.CONNECTING
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTING
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_GOT_FIRMWARE_VERSION, state GeckoSpaState.CONNECTING
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_HAS_PING_SENSOR, state GeckoSpaState.CONNECTING
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_GOT_CHANNEL, state GeckoSpaState.CONNECTING
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_GOT_CONFIG_FILES, state GeckoSpaState.CONNECTING
2022-03-16 15:02:55 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_INITIAL_DATA_BLOCK_REQUEST, state GeckoSpaState.CONNECTING
2022-03-16 15:02:59 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_SPA_COMPLETE, state GeckoSpaState.SPA_READY
2022-03-16 15:02:59 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_FACADE_IS_READY, state GeckoSpaState.CONNECTED
2022-03-16 15:02:59 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_FINISHED, state GeckoSpaState.CONNECTED
2022-03-16 15:02:59 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED
2022-03-16 15:03:01 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED
2022-03-16 15:03:02 DEBUG (MainThread) [custom_components.gecko.spa_manager] Load platforms ['binary_sensor', 'button', 'fan', 'sensor', 'switch', 'climate', 'light']
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Circulating Pump/SPA049162cee49b-CIRCULATING PUMP
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Ozone/SPA049162cee49b-OZONE
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Smart Winter Mode:Active/SPA049162cee49b-SMART WINTER MODE:ACTIVE
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Filter Status:Clean/SPA049162cee49b-FILTER STATUS:CLEAN
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Filter Status:Purge/SPA049162cee49b-FILTER STATUS:PURGE
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Reconnect/SPA049162cee49b-RECONNECT
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Pump 2/SPA049162cee49b-P2
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Pump 1/SPA049162cee49b-P1
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Status/SPA049162cee49b-STATUS
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Last Ping/SPA049162cee49b-PING
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Smart Winter Mode:Risk/SPA049162cee49b-SMART WINTER MODE:RISK
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Rinse filter due/SPA049162cee49b-RinseFilter
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Clean filter due/SPA049162cee49b-CleanFilter
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Change water due/SPA049162cee49b-ChangeWater
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Check Spa due/SPA049162cee49b-CheckSpa
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Economy Mode/SPA049162cee49b-EconActive
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Heater/SPA049162cee49b-HEAT
2022-03-16 15:03:02 INFO (MainThread) [custom_components.gecko.entity] Setup entity Lights/SPA049162cee49b-LI
2022-03-16 15:03:03 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED
2022-03-16 15:03:05 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED
2022-03-16 15:03:07 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED
2022-03-16 15:03:09 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED
2022-03-16 15:03:11 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED
2022-03-16 15:03:13 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED
2022-03-16 15:03:15 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED
2022-03-16 15:03:18 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED
2022-03-16 15:03:20 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED
2022-03-16 15:03:22 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED

Radio 1% does not update

Version of the custom_component

v0.1.8
inYT 380 v3.0
by Gecko Alliance
Firmware: SpaPack:v33.00 Config:61 Log:61

Describe the bug

The radio quality is 100% when the integration starts or when the reconnect is pressed. The radio quality will after a while go to 1% and stay there until the integration is restarted or reconnect is pressed.

Allow pointing at static IP

Is your feature request related to a problem? Please describe.
My HA system sits in a docker container on a different VLAN from all my IoT devices. Thus, the automatic detection won't work.

Describe the solution you'd like
I'd love to see both the upstream library, and this module support adding the integration - then the integration can either search for tubs, and/or allow for a static IP address to be used.

Describe alternatives you've considered
I'm not sure what alternative I'd be able to get away with. At best, I might be able to write a python proxy that would also run on the container network that just pipes the requests to the correct IP address.

Additional context
None.

Thanks for both the Library and the Module.

Gecko unit is not responsive

Hello folks

Not probably the right forum for that, but am I the only one to experience some instabilities with the gecko unit ?
Every 5 to 6 days, I have to power-cycle it, even the native IOS app doesn't work when the unit looks to be frozen, not only HA.

Let me know, thanks !

Johan

Setup errors

First of all this is a pretty great integration, thank you very much Gazoodle! I am seeing my spa in Home Assistant and can control the heater, blower and lights! My issue is I have no control over the jet pumps and am posting my error logs in hopes of someone being able to help. My particular spa is a Hydropool Spa with 2 jet pumps. Pump #1 has 2 settings, hi and low we'll call them, and pump #2 is either on or off. I'm not very savvy when it comes to Home Assistant but I can follow directions and tutorials fairly well, any help is greatly appreciated!! Thanks!!

2022-04-15 11:15:29 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration gecko which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2022-04-15 11:15:32 WARNING (Recorder) [homeassistant.components.recorder.util] The system could not validate that the sqlite3 database at //config/home-assistant_v2.db was shutdown cleanly
2022-04-15 11:16:03 ERROR (MainThread) [homeassistant.setup] Setup failed for button: Integration not found.
2022-04-15 11:16:03 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry My Spa for fan
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 293, in async_setup
result = await component.async_setup_entry(hass, self) # type: ignore
File "/usr/src/homeassistant/homeassistant/components/fan/init.py", line 209, in async_setup_entry
return await hass.data[DOMAIN].async_setup_entry(entry)
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 149, in async_setup_entry
platform = await async_prepare_setup_platform(
File "/usr/src/homeassistant/homeassistant/setup.py", line 328, in async_prepare_setup_platform
platform = integration.get_platform(domain)
File "/usr/src/homeassistant/homeassistant/loader.py", line 498, in get_platform
cache[full_name] = self._import_platform(platform_name)
File "/usr/src/homeassistant/homeassistant/loader.py", line 503, in _import_platform
return importlib.import_module(f"{self.pkg_path}.{platform_name}")
File "/usr/local/lib/python3.8/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1014, in _gcd_import
File "", line 991, in _find_and_load
File "", line 975, in _find_and_load_unlocked
File "", line 671, in _load_unlocked
File "", line 779, in exec_module
File "", line 916, in get_code
File "", line 846, in source_to_code
File "", line 219, in _call_with_frames_removed
File "/config/custom_components/gecko/fan.py", line 1
Fan platform for Gecko.
^
SyntaxError: invalid syntax
2022-04-15 11:16:03 WARNING (MainThread) [geckolib.driver.protocol.unhandled] No handler for b'RMREQ\x01\x00\x00\x01\x02\x1e\x00\x01\x03<\x00\x01\x04b\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' from ('192.168.32.68', 10022, b'SPA80:1f:12:65:f3:28', b'IOS7aca5272-9d53-4c96-b43d-df43cc457e34') found, message ignored

Entity implements deprecated device_state_attributes

Version of the custom_component

v0.0.7

Configuration

NA

Describe the bug

Entity implements deprecated device_state_atribute

Debug log

Entity climate.hot_tub_heater (<class 'custom_components.gecko.climate.GeckoClimate'>) implements device_state_attributes. Please report it to the custom component author.
Entity light.hot_tub_lights (<class 'custom_components.gecko.light.GeckoLight'>) implements device_state_attributes. Please report it to the custom component author.
Entity fan.hot_tub_pump_1 (<class 'custom_components.gecko.fan.GeckoFan'>) implements device_state_attributes. Please report it to the custom component author.
Entity fan.hot_tub_pump_2 (<class 'custom_components.gecko.fan.GeckoFan'>) implements device_state_attributes. Please report it to the custom component author.

Do you want me to add an all-in-one GitHub action?

Is your feature request related to a problem? Please describe.
Right now, I see that you're using an integration blueprint. It has some pretty good CI, but I can add an all-in-one GitHub action, which has a bit more stuff (actually format instead of just checking, also run isort as well as black, also run wemake-python-styleguide).

Describe the solution you'd like
If you want, I can add some advanced CI to your repo in a PR. Let me know if you want that.

  • Do you want to enable auto-formatting on push with comment amending?
  • Do you want packaged or independent (I recommend packaged because I can send updates)?

Describe alternatives you've considered
Keep it as it is.

Additional context
https://github.com/KTibow/ha-blueprint

Warnings in Home Assistant logs if other apps access the Gecko controller

Version of the custom_component

0.0.5 - manifest.json
(geckolib 0.3.17)

Configuration

NA

Describe the bug

Numerous warnings may be generated in the Home Assistant log by the Gecko integration (actually Geckolib) if other applications access the Gecko unit while Home Assistant is running.

To reproduce, run the mobile app (tested with iOS) or the GeckoShell while Home Assistant is running and observe the Home Assistant log.

This is likely an issue that needs to be resolved in Geckolib, since it looks like anything connected may receive responses to commands that any connected app sends. Currently Geckolib outputs a warning if there isn't a handler for a response (because the response appears to be unsolicited from that app's perspective.)

Debug log


2021-06-13 12:31:32 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 10 -
ignored
2021-06-13 12:31:32 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 11 -
ignored
2021-06-13 12:31:32 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 12 -
ignored
2021-06-13 12:31:32 WARNING (Thread-6) [geckolib.driver.spastruct] Retry status block request
2021-06-13 12:31:43 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 6 - ignored
2021-06-13 12:31:43 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 7 - ignored
2021-06-13 12:31:43 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 8 - ignored
2021-06-13 12:31:43 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 9 - ignored
2021-06-13 12:31:43 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 10 -
ignored
2021-06-13 12:31:43 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 11 -
ignored
2021-06-13 12:31:43 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 12 -
ignored
2021-06-13 12:31:43 WARNING (Thread-6) [geckolib.driver.spastruct] Retry status block request
2021-06-13 12:31:53 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 9 - ignored
2021-06-13 12:31:54 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 10 -
ignored
2021-06-13 12:31:54 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 11 -
ignored
2021-06-13 12:31:54 WARNING (Thread-6) [geckolib.driver.spastruct] Out-of-sequence status block segment 12 -
ignored
2021-06-13 12:31:54 WARNING (Thread-6) [geckolib.driver.spastruct] Retry status block request


Add your logs here.

Thermostat not full compatible with Google

Hi, first, thank for this really nice addon.

When i add this climate sensor on google home i can't change temperature or ask to google current temperature. Climate sensor look standard but i dont know what is option google not like. Im sorry i speak english little bit. I know i can add Gecko direct to google home but i cant use because work only in english language.... Thank you :)
Screenshot_20210311-234056
Screenshot_20210311-234115

Missing button, fan & sensor entities on 0.1.0

Version of the custom_component

0.1.0

Configuration

HA core-2022.3.4 running on Debian

Describe the bug

I just upgraded and got the following alert :

Missing entities :

The following integrations and platforms could not be set up:

gecko.button
gecko.fan
gecko.sensor

My pump and Hot Tub: Smart Winter Mode: Risk entities are both now showing 'Unavailable' (Not sure what uses the button)

Debug log


-------------------------------------------------------------------
Gecko
Version: 0.1.0
Gecko Lib: 0.4.0
This is a custom integration!
If you have any issues with this you need to open an issue here:
https://github.com/gazoodle/gecko-home-assistant/issues
-------------------------------------------------------------------

2022-03-15 17:01:05 DEBUG (MainThread) [custom_components.gecko] Setup entry for UUID 6102cecf-128c-4efa-a137-24fe470a14ee, ID SPA04:91:62:d3:66:b8, address None (None)
2022-03-15 17:01:06 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.SPA_MAN_ENTER, state GeckoSpaState.IDLE
2022-03-15 17:01:06 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_STARTED, state GeckoSpaState.LOCATING_SPAS
2022-03-15 17:01:06 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_DISCOVERED_SPA, state GeckoSpaState.LOCATING_SPAS
2022-03-15 17:01:06 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_FINISHED, state GeckoSpaState.IDLE
2022-03-15 17:01:06 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_HAS_STATUS_SENSOR, state GeckoSpaState.IDLE
2022-03-15 17:01:06 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_HAS_RECONNECT_BUTTON, state GeckoSpaState.CONNECTING
2022-03-15 17:01:06 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_STARTED, state GeckoSpaState.CONNECTING
2022-03-15 17:01:07 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTING
2022-03-15 17:01:08 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_GOT_FIRMWARE_VERSION, state GeckoSpaState.CONNECTING
2022-03-15 17:01:08 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_HAS_PING_SENSOR, state GeckoSpaState.CONNECTING
2022-03-15 17:01:08 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_GOT_CHANNEL, state GeckoSpaState.CONNECTING
2022-03-15 17:01:09 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_GOT_CONFIG_FILES, state GeckoSpaState.CONNECTING
2022-03-15 17:01:09 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_INITIAL_DATA_BLOCK_REQUEST, state GeckoSpaState.CONNECTING
2022-03-15 17:01:12 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_SPA_COMPLETE, state GeckoSpaState.SPA_READY
2022-03-15 17:01:12 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_FACADE_IS_READY, state GeckoSpaState.CONNECTED
2022-03-15 17:01:12 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_FINISHED, state GeckoSpaState.CONNECTED
2022-03-15 17:01:12 DEBUG (MainThread) [custom_components.gecko.spa_manager] Load platforms ['binary_sensor', 'button', 'fan', 'sensor', 'switch', 'climate', 'light']
2022-03-15 17:01:12 INFO (MainThread) [custom_components.gecko.entity] Setup entity Circulating Pump/SPA049162d366b8-CIRCULATING PUMP
2022-03-15 17:01:12 INFO (MainThread) [custom_components.gecko.entity] Setup entity Ozone/SPA049162d366b8-OZONE
2022-03-15 17:01:12 INFO (MainThread) [custom_components.gecko.entity] Setup entity Smart Winter Mode:Active/SPA049162d366b8-SMART WINTER MODE:ACTIVE
2022-03-15 17:01:12 INFO (MainThread) [custom_components.gecko.entity] Setup entity Filter Status:Clean/SPA049162d366b8-FILTER STATUS:CLEAN
2022-03-15 17:01:12 INFO (MainThread) [custom_components.gecko.entity] Setup entity Filter Status:Purge/SPA049162d366b8-FILTER STATUS:PURGE
2022-03-15 17:01:12 INFO (MainThread) [custom_components.gecko.entity] Setup entity Economy Mode/SPA049162d366b8-EconActive
2022-03-15 17:01:12 INFO (MainThread) [custom_components.gecko.entity] Setup entity Heater/SPA049162d366b8-HEAT
2022-03-15 17:01:12 INFO (MainThread) [custom_components.gecko.entity] Setup entity Lights/SPA049162d366b8-LI
2022-03-15 17:01:12 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED


Some errors in log

Thanks @gazoodle for the "alpha" integration.

Here some errors in HA logs :

`Logger: homeassistant.util.async_
Source: util/async_.py:105
First occurred: 9:54:09 (1 occurrences)
Last logged: 9:54:09

Detected I/O inside the event loop. This is causing stability issues. Please report issue to the custom component author for gecko doing I/O at custom_components/gecko/init.py, line 47: facade = locator.get_spa_from_identifier(spa_identifier).get_facade(False)`

`Logger: geckolib.driver.udp_socket
Source: /usr/local/lib/python3.8/site-packages/geckolib/driver/udp_socket.py:316
First occurred: 9:54:17 (17 occurrences)
Last logged: 10:04:31

Couldn't find new handler for b"STATV\t\n'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
Couldn't find new handler for b"STATV\n\x0b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
Couldn't find new handler for b"STATV\x0b\x0c'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
Couldn't find new handler for b'STATV\x0c\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Couldn't find new handler for b'PACKS'`

`Logger: geckolib.driver.spastruct
Source: /usr/local/lib/python3.8/site-packages/geckolib/driver/spastruct.py:49
First occurred: 9:54:19 (46 occurrences)
Last logged: 10:09:39

Out-of-sequence status block segment 8 - ignored
Out-of-sequence status block segment 9 - ignored
Out-of-sequence status block segment 10 - ignored
Out-of-sequence status block segment 11 - ignored
Out-of-sequence status block segment 12 - ignored`

`Logger: geckolib.driver.spastruct
Source: /usr/local/lib/python3.8/site-packages/geckolib/driver/spastruct.py:53
First occurred: 9:54:22 (5 occurrences)
Last logged: 10:09:39

Retry status block request`

The version of GeckoLib is 0.3.17 that was installed when I installed the integration via HACS

Also, the Pump is set as a switch, so unable to see/set the Speed of it (you know, I have a 2 speed pump). So maybe set Pump as a "Fan" instead of a "Switch"?

does not work after HACS install.

First, thank you for taking your time to write this integration.

Describe the bug

Just installed the integration via HACS, and enabled the integration in the UI (Configuration -> Integrations -> Gecko)

I wasn't asked for any information, and after completing, I had an integration listed with my spa name.

No devices or entities are listed, and the logs under Configuration -> Logs show the following relevant information:

Home Assistant Info

Version core-2021.4.3
Installation Type Home Assistant OS
Development false
Supervisor true
Docker true
Virtual Environment false
Python Version 3.8.7
Operating System Family Linux
Operating System Version 5.4.109
CPU Architecture x86_64
Timezone America/Los_Angeles

Error:

Logger: custom_components.gecko
Source: util/async_.py:139 
Integration: Gecko (documentation, issues) 
First occurred: 1:29:04 PM (1 occurrences) 
Last logged: 1:29:04 PM

Exception during entry setup
Traceback (most recent call last):
  File "/config/custom_components/gecko/__init__.py", line 45, in async_setup_entry
    facade = locator.get_spa_from_identifier(spa_identifier).get_facade(False)
  File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 46, in get_facade
    facade = GeckoFacade(GeckoSpa(self).start_connect())
  File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 73, in __init__
    GeckoSpaPack.__init__(self)
  File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 15, in __init__
    GeckoSpaPack.download_if_needed()
  File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 32, in download_if_needed
    GeckoSpaPack.download()
  File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 39, in download
    response = http.request(
  File "/usr/local/lib/python3.8/site-packages/urllib3/request.py", line 74, in request
    return self.request_encode_url(
  File "/usr/local/lib/python3.8/site-packages/urllib3/request.py", line 96, in request_encode_url
    return self.urlopen(method, url, **extra_kw)
  File "/usr/local/lib/python3.8/site-packages/urllib3/poolmanager.py", line 375, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 234, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/local/lib/python3.8/http/client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.8/http/client.py", line 1266, in _send_request
    self.putrequest(method, url, **skips)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 214, in putrequest
    return _HTTPConnection.putrequest(self, method, url, *args, **kwargs)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 150, in protected_loop_func
    check_loop()
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 139, in check_loop
    raise RuntimeError(
RuntimeError: I/O must be done in the executor; Use `await hass.async_add_executor_job()` at custom_components/gecko/__init__.py, line 45: facade = locator.get_spa_from_identifier(spa_identifier).get_facade(False)

Feature request - virtual energy sensors

Is your feature request related to a problem? Please describe.

Unable to monitor tub energy usage

Describe the solution you'd like

I found this integration - https://github.com/bramstroker/homeassistant-powercalc

I set up sensors for my tub heater and pump (lo/hi) I estimated their respective power draw by checking my smart meter when they were on/off. I wonder if some of that code could be re-used in this integration ?

Describe alternatives you've considered
You can set up the virtual power sensors separately using the integration mentioned. It doesn't have to be part of this one.

Additional context
Even if this can't be integrated, I thought people might be interested to know about powercalc for tub energy monitoring.

Entities not showing

Version of the custom_component

Custom component V0.0.5
image

Configuration


# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Text to speech
tts:
  - platform: google_translate

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

climate:
  - platform: generic_thermostat
    name: heat_control
    heater: switch.lidl_socket_1
    target_sensor: sensor.climate_temperature
    min_cycle_duration:
      minutes: 5


Describe the bug

Entities not showing in integration

Debug log

2021-02-14 13:53:25 INFO (MainThread) [custom_components.gecko]
-------------------------------------------------------------------
Gecko
Version: 0.0.1
This is a custom integration!
If you have any issues with this you need to open an issue here:
https://github.com/gazoodle/gecko-home-assistant/issues
-------------------------------------------------------------------
2021-02-14 13:53:25 INFO (MainThread) [custom_components.gecko] Setup entry for SPA04:91:62:d3:2b:26
2021-02-14 13:53:26 INFO (MainThread) [custom_components.gecko] Locator GeckoLocator(age=1.1189897650001512,has_had_enough_time=False,spas=[Ducky Tub(SPA04:91:62:d3:2b:26)]) ready
2021-02-14 13:53:26 INFO (MainThread) [custom_components.gecko] Waiting for facade to be ready
2021-02-14 13:53:34 ERROR (Thread-6) [root] Uncaught thread exception
Traceback (most recent call last):
File "/usr/local/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.8/site-packages/geckolib/driver/udp_socket.py", line 364, in _thread_func
self._loop_func()
File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 260, in _loop_func
self._final_connect()
File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 264, in _final_connect
self.struct.build_accessors([self.config_xml, self.log_xml])
File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spastruct.py", line 72, in build_accessors
self.accessors = {
File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spastruct.py", line 75, in <dictcomp>
for element in xml.findall(
AttributeError: 'NoneType' object has no attribute 'findall'
2021-02-14 13:53:56 ERROR (Thread-5) [root] Uncaught thread exception
Traceback (most recent call last):
File "/usr/local/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 282, in _ping_thread_func
self.refresh()
File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 311, in refresh
if not self.is_connected:
File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 306, in is_connected
raise RuntimeError("Spa took too long to connect ...")
RuntimeError: Spa took too long to connect ...
2021-02-14 13:53:56 ERROR (MainThread) [custom_components.gecko] Exception during entry setup
Traceback (most recent call last):
File "/config/custom_components/gecko/__init__.py", line 47, in async_setup_entry
while not facade.is_connected:
File "/usr/local/lib/python3.8/site-packages/geckolib/automation/facade.py", line 68, in is_connected
if not self._spa.is_connected:
File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 306, in is_connected
raise RuntimeError("Spa took too long to connect ...")
RuntimeError: Spa took too long to connect ...

image

image

Tried adding and removing Options. Deleting and reinstalling. Powercycling the RPi. Same with Gecko controller and Gecko Wifi-RF bridge. Tried taking the App off the network and repeating the foregoing in case of conflict.

If I change reload the iOS app and change the spa name, then reload HA, the new name appears on the integration.

Any ideas very welcome.

Any Updates on Error in Setup?

I am still stuck with the following error and cannot get past the setup.

2021-09-06 22:32:08 ERROR (Thread-69) [geckolib.driver.udp_socket] Unhandled exception in receive_handler func
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/geckolib/driver/udp_socket.py", line 312, in dispatch_recevied_data
receive_handler.handled(self, remote_end)
File "/usr/local/lib/python3.9/site-packages/geckolib/driver/udp_socket.py", line 87, in handled
self._on_handled(self, socket, sender)
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 163, in _on_config_received
raise Exception(
Exception: Cannot find XML configuraton for inYT v65
2021-09-06 22:32:37 ERROR (Thread-68) [root] Uncaught thread exception
Traceback (most recent call last):
File "/usr/local/lib/python3.9/threading.py", line 973, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.9/threading.py", line 910, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 295, in _ping_thread_func
self.refresh()
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 324, in refresh
if not self.is_connected:
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 319, in is_connected
raise RuntimeError("Spa took too long to connect ...")
RuntimeError: Spa took too long to connect ...
2021-09-06 22:32:37 ERROR (MainThread) [custom_components.gecko] Exception during entry setup
Traceback (most recent call last):
File "/config/custom_components/gecko/init.py", line 50, in async_setup_entry
while not facade.is_connected:
File "/usr/local/lib/python3.9/site-packages/geckolib/automation/facade.py", line 68, in is_connected
if not self._spa.is_connected:
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 319, in is_connected
raise RuntimeError("Spa took too long to connect ...")
RuntimeError: Spa took too long to connect ...

Spa not identified: inyt spa pack

Version of the custom_component

Latest available version

Configuration

Add your logs here.

Describe the bug

Not able to connect my inyt spa pack.

Debug log


Logger: custom_components.gecko
Source: custom_components/gecko/__init__.py:49 
Integration: Gecko (documentation, issues) 
First occurred: 8:24:09 PM (1 occurrences) 
Last logged: 8:24:09 PM

Exception during entry setup
Traceback (most recent call last):
  File "/config/custom_components/gecko/__init__.py", line 49, in async_setup_entry
    while not facade.is_connected:
  File "/usr/local/lib/python3.8/site-packages/geckolib/automation/facade.py", line 68, in is_connected
    if not self._spa.is_connected:
  File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 306, in is_connected
    raise RuntimeError("Spa took too long to connect ...")
RuntimeError: Spa took too long to connect ...

1 In Touch-2 work for 2 installed

Version of the custom_component

Configuration

PROXMOX 6.3-2
Home Assistant OS 6.1
Supervisor-2021.06.8
Home Assistant 2021.7.2

GECKO Install with HACS :

Gecko
Version: 0.0.6
This is a custom integration!
If you have any issues with this you need to open an issue here:
https://github.com/gazoodle/gecko-home-assistant/issues

Add your logs here.

Logger: geckolib.driver.udp_socket
Source: /usr/local/lib/python3.9/site-packages/geckolib/driver/udp_socket.py:314
First occurred: 11:12:53 (1 occurrences)
Last logged: 11:12:53

Unhandled exception in receive_handler func
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/geckolib/driver/udp_socket.py", line 312, in dispatch_recevied_data
receive_handler.handled(self, remote_end)
File "/usr/local/lib/python3.9/site-packages/geckolib/driver/udp_socket.py", line 87, in handled
self._on_handled(self, socket, sender)
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 163, in _on_config_received
raise Exception(
Exception: Cannot find XML configuraton for inYT v65

Describe the bug

A clear and concise description of what the bug is.

I just purchase a bizone SPA with SPA and SWIM SPA. Each one have a in-touch 2 module.
SPA : in.ye-5 + K800 + in-touch2
SWIM SPA : in.yt-7 + K800 + in-touch2

both are recognize on the integration UI but only SWIM SPA are connected the other one make an error. same issue if i only connect SPA or after swim spa configutration.

Both work well on the gecko app in IOS or Android

Debug log


Add your logs here.

2021-07-13 11:12:50 INFO (MainThread) [custom_components.gecko]
-------------------------------------------------------------------
Gecko
Version: 0.0.6
This is a custom integration!
If you have any issues with this you need to open an issue here:
https://github.com/gazoodle/gecko-home-assistant/issues
-------------------------------------------------------------------
2021-07-13 11:12:50 INFO (MainThread) [custom_components.gecko] Setup entry for SPA80:1f:12:65:be:b8
2021-07-13 11:12:50 INFO (MainThread) [custom_components.gecko] Locator GeckoLocator(age=0.3874899409711361,has_had_enough_time=False,spas=[Piscine(SPA80:1f:12:65:be:b8)]) ready
2021-07-13 11:12:50 INFO (MainThread) [custom_components.gecko] Setup entry for SPA68:27:19:8e:33:60
2021-07-13 11:12:51 INFO (MainThread) [custom_components.gecko] Locator GeckoLocator(age=0.1089000859647058,has_had_enough_time=False,spas=[Piscine(SPA80:1f:12:65:be:b8), Spa(SPA68:27:19:8e:33:60)]) ready
2021-07-13 11:12:52 INFO (MainThread) [custom_components.gecko] Waiting for facade to be ready
2021-07-13 11:12:52 INFO (MainThread) [custom_components.gecko] Waiting for facade to be ready
2021-07-13 11:12:53 ERROR (Thread-8) [geckolib.driver.udp_socket] Unhandled exception in receive_handler func
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/geckolib/driver/udp_socket.py", line 312, in dispatch_recevied_data
receive_handler.handled(self, remote_end)
File "/usr/local/lib/python3.9/site-packages/geckolib/driver/udp_socket.py", line 87, in handled
self._on_handled(self, socket, sender)
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 163, in _on_config_received
raise Exception(
Exception: Cannot find XML configuraton for inYT v65

Change Celcius to fahrenheit

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
It would be great to have an option to chose Celcius or Fahrenheit

Describe the solution you'd like
A clear and concise description of what you want to happen.
checkbox to choose C or F

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Even if everything else is in Celcius in HA, i like to have my spa in fahrenheit

splitting entities

Hello there gazoodle
Great work on this project if only they all worked this well!
I am hoping you can add entities for
-current temp
-current operation mode
-switch operation mode
I know these can be accssed by lovelace but alas I have a seperate TFT sceen with only minimal interface options
many thanks

Handling/Recovery when Gecko units are disconnected (RF Error, tub powered off for maintanence)

Version of the custom_component

Version 0.0.5 - from manifest.json
Version 0.0.1 - from const.py

With local modification to line 45 of iniy.py from issue #

Original

            facade = await locator.get_spa_from_identifier(spa_identifier).get_facade(False)

Changed to

            spa = await hass.async_add_executor_job(locator.get_spa_from_identifier, spa_identifier)
            facade = await hass.async_add_executor_job(spa.get_facade, False)

Configuration

NA

Describe the bug

The custom component generates an error on startup if the Gecko units aren't connected (RF error). (My tub was temporarily powered down for maintenance.)

Since no other errors have been generated, and things haven't changed, it doesn't look like it is going to poll at some point and recover. I've only waited 15 minutes so far.

So I'm guessing I'm going to have to restart Home Assistant to get the integration to reconnect.

Debug log


2021-06-12 11:04:13 WARNING (Thread-6) [geckolib.driver.udp_socket] Couldn't find new handler for b'RFERR'
2021-06-12 11:04:15 WARNING (Thread-6) [geckolib.driver.udp_socket] Couldn't find new handler for b'RFERR'
2021-06-12 11:04:17 WARNING (Thread-6) [geckolib.driver.udp_socket] Couldn't find new handler for b'RFERR'
2021-06-12 11:04:19 WARNING (Thread-6) [geckolib.driver.udp_socket] Couldn't find new handler for b'RFERR'
2021-06-12 11:04:21 WARNING (Thread-6) [geckolib.driver.udp_socket] Couldn't find new handler for b'RFERR'
2021-06-12 11:04:23 WARNING (Thread-6) [geckolib.driver.udp_socket] Couldn't find new handler for b'RFERR'
2021-06-12 11:04:25 WARNING (Thread-6) [geckolib.driver.udp_socket] Couldn't find new handler for b'RFERR'
2021-06-12 11:04:27 WARNING (Thread-6) [geckolib.driver.udp_socket] Couldn't find new handler for b'RFERR'
2021-06-12 11:04:29 WARNING (Thread-6) [geckolib.driver.udp_socket] Couldn't find new handler for b'RFERR'
2021-06-12 11:04:39 ERROR (Thread-5) [root] Uncaught thread exception
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 282, in _ping_thread_func
    self.refresh()
  File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 311, in refresh
    if not self.is_connected:
  File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 306, in is_connected
    raise RuntimeError("Spa took too long to connect ...")
RuntimeError: Spa took too long to connect ...
2021-06-12 11:04:39 ERROR (MainThread) [custom_components.gecko] Exception during entry setup
Traceback (most recent call last):
  File "/config/custom_components/gecko/__init__.py", line 49, in async_setup_entry
    while not facade.is_connected:
  File "/usr/local/lib/python3.8/site-packages/geckolib/automation/facade.py", line 68, in is_connected
    if not self._spa.is_connected:
  File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 306, in is_connected
    raise RuntimeError("Spa took too long to connect ...")
RuntimeError: Spa took too long to connect ...


Failed to set up: RuntimeError: I/O must be done in the executor (workaround and fix)

Version of the custom_component

Version 0.0.5 - from manifest.json
Version 0.0.1 - from const.py

Configuration

NA - Configured through UI

Describe the bug

With the current version of the Gecko custom component (0.0.5), as of 2021-06-14, the Gecko integration will fail to set up in Home Assistant due to trying to download SpaPackStruct.xml when the component is starting up.

To fix the problem, apply the change in PR #24 to custom_components/gecko/__init__.py in your Home Assistant configuration directory. The configuration directory path is often /config or /usr/share/hassio/homeassistant/config but may be different based on installation method or the way you are accessing the files.

You can download the patched file directly from the PR https://github.com/gazoodle/gecko-home-assistant/blob/a7ad5024a656f01525a4d4340be9e1d7c8caf910/custom_components/gecko/__init__.py

(The fix was provided originally by @EiNSTeiN- in #15. The problem was also reported in #7 and #9.)

A workaround that doesn't require changing the code is to manually download SpaPackStruct.xml and a place a copy in your Home Assistant configuration directory. (Note the correct directory is the top level configuration directory, not the custom_component/gecko directory. This is the same directory that contains configuration.yaml. Use curl or wget to download http://intouch.geckoal.com/gecko/prod/SpaPackStruct.xml

Note: this information was originally in issue #15. I've moved the information about the fix and the workaround here to make it easier for people to quickly find without having to sort through a long issue.

Note 2: The SpaPackStruct.xml that is currently available for download is version 19, which is somewhat out-of-date, but appears to be the last version easily accessible without having to extract it from the mobile app. Some new spa controllers (spa packs) will require an updated SpaPackStruct.xml to work correctly.

Debug log


Exception during entry setup
Traceback (most recent call last):
  File "/config/custom_components/gecko/__init__.py", line 45, in async_setup_entry
    facade = locator.get_spa_from_identifier(spa_identifier).get_facade(False)
  File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 46, in get_facade
    facade = GeckoFacade(GeckoSpa(self).start_connect())
  File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 73, in __init__
    GeckoSpaPack.__init__(self)
  File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 15, in __init__
    GeckoSpaPack.download_if_needed()
  File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 32, in download_if_needed
    GeckoSpaPack.download()
  File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 39, in download
    response = http.request(
  File "/usr/local/lib/python3.8/site-packages/urllib3/request.py", line 74, in request
    return self.request_encode_url(
  File "/usr/local/lib/python3.8/site-packages/urllib3/request.py", line 96, in request_encode_url
    return self.urlopen(method, url, **extra_kw)
  File "/usr/local/lib/python3.8/site-packages/urllib3/poolmanager.py", line 375, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 234, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/local/lib/python3.8/http/client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.8/http/client.py", line 1266, in _send_request
    self.putrequest(method, url, **skips)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 214, in putrequest
    return _HTTPConnection.putrequest(self, method, url, *args, **kwargs)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 150, in protected_loop_func
    check_loop()
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 139, in check_loop
    raise RuntimeError(
RuntimeError: I/O must be done in the executor; Use `await hass.async_add_executor_job()` at custom_components/gecko/__init__.py, line 45: facade = locator.get_spa_from_identifier(spa_identifier).get_facade(False)

homeassistant log gets filled up with warnings

Description of problem

I installed the integration yesterday and it started working at once presumably without any truble, but when I look into the home assistant logs I see that it gets filled up with warnings from the integration.

Is it normal or just some problems with my installation?
I installed by copying in the files as described. I then disabled the integration and enabled it before I looked at the logs.
When I discovered the logs I uninstalled the integration and reinstalled it, still a lot of warnings.
I have included samples of the log.

Version of the custom_component

I am currently running version 0.1.6 in homeassistant 2022.4 docker version

Configuration

I enabled all the possible integrations

Debug log

NB, removed the mac adress and part of other number
This is the warning type that comes several times every second

2022-04-10 07:30:42 WARNING (MainThread) [geckolib.async_spa] Dropping packet from ('192.168.0.104', 10022, b'SPAe8:eb:RESTOFMAC', b'IOS70dfYYYY-NUMBER') because it didn't match ('192.168.0.104', 10022, b'SPAe8:eb:RESTOFMAC', b'IOS7b45XXXX-NUMBER')

I also get this in the log, only some entries

2022-04-10 07:30:57 WARNING (MainThread) [geckolib.driver.protocol.unhandled] No handler for b"STATV\x00\x01'\x07\x00\x00\x00\xa4\x00\x05\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\x00\x00\x02\xd0\x02\xd0\x02\x01\x00\x00\x00\x00\x00@\x0e\x00\nK\x00=3\x00" from ('192.168.0.104', 10022, REST OF LINE REMOVED

Many thanks!

Unable to control ozone pump

Hi, great integration, thanks.
Unable to control my ozone pump - blower and jets are just fine. This maps to the 'bubbles' button in the in.touch 2 app. There is just no switch entity for it, just a binary_sensor.
Any ideas please?

Exception during entry setup

Good Morning all,
I just installed the integration and I'm running into the following. can anyone assist me with this

Exception during entry setup
Traceback (most recent call last):
File "/config/custom_components/gecko/init.py", line 47, in async_setup_entry
while not facade.is_connected:
File "/usr/local/lib/python3.8/site-packages/geckolib/automation/facade.py", line 68, in is_connected
if not self._spa.is_connected:
File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 306, in is_connected
raise RuntimeError("Spa took too long to connect ...")
RuntimeError: Spa took too long to connect ...

config_flow not working

Hello,

I have tried to install your homeassistant integration, but I'm not able run the configuration.
I have installed geckolib 0.3.15 first and then created the gecko custom integration as described.
In Integration Gecko show up but when selecting it terminate.

Logger: aiohttp.server
Source: custom_components/gecko/config_flow.py:32
First occurred: 21:12:19 (1 occurrences)
Last logged: 21:12:19

Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request
resp = await self._request_handler(request)
File "/usr/local/lib/python3.8/site-packages/aiohttp/web_app.py", line 499, in _handle
resp = await handler(request)
File "/usr/local/lib/python3.8/site-packages/aiohttp/web_middlewares.py", line 118, in impl
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 18, in request_context_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 72, in ban_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 127, in auth_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 129, in handle
result = await result
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 136, in post
return await super().post(request)
File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 60, in wrapper
result = await method(view, request, *args, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 69, in post
result = await self._flow_mgr.async_init(
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 119, in async_init
flow = await self.async_create_flow(handler, context=context, data=data)
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 552, in async_create_flow
flow = cast(ConfigFlow, handler())
File "/config/custom_components/gecko/config_flow.py", line 32, in init
self._locator.start_discovery()
AttributeError: 'GeckoLocator' object has no attribute 'start_discovery'

best regards
Walter

HA not on same vlan as Gecko in.touch2 ?

Version of the custom_component

2d3e2d7

Configuration

None

2021-01-09 12:50:51 INFO (MainThread) [geckolib.locator] Discovery process started
2021-01-09 12:50:51 DEBUG (Thread-13) [geckolib.locator] Locator retry thread started
2021-01-09 12:50:51 INFO (MainThread) [custom_components.gecko.config_flow] Async step user, we have GeckoLocator(age=0.00041642598807811737,has_had_enough_time=False,spas=[])
2021-01-09 12:50:51 DEBUG (Thread-14) [geckolib.driver.udp_socket] Sending b'1' to ('', 10022)
2021-01-09 12:50:52 DEBUG (Thread-14) [geckolib.driver.udp_socket] Sending b'1' to ('', 10022)
2021-01-09 12:50:53 DEBUG (Thread-14) [geckolib.driver.udp_socket] Sending b'1' to ('', 10022)
2021-01-09 12:50:54 DEBUG (Thread-14) [geckolib.driver.udp_socket] Sending b'1' to ('', 10022)
2021-01-09 12:50:55 DEBUG (Thread-13) [geckolib.locator] Locator retry thread stopped
2021-01-09 12:50:55 INFO (Thread-14) [geckolib.driver.udp_socket] GeckoUdpSocket thread finished
2021-01-09 12:50:55 WARNING (MainThread) [custom_components.gecko.config_flow] No spas found on the local network


## Describe the bug
Installed the Gecko integration from HACS.
When trying to start it from configuration/Integrations it tries to find my SPA, but returns with a notice that it can't find my SPA.
Is there any way to manually specify the IP-address of the in.touch2-device?


## Debug log

<!-- To enable debug logs check this https://www.home-assistant.io/components/logger/ -->

```text

Add your logs here.

blower being turned on at cyclic times

starting with the latest HA version (running core-2021.12.8) I’ve noticed the blower being switch on and off on their own.

Every X hours the blowers turn on for exactly 1 min and then they turn off. As per the logger it’s not really an automation or a user command enabling (and disabling it):

while when I turn it on it is logged in this way

Anyone seeing something similar?

No temperature value or control

Info

in.touch EN 88 v15.0
in.touch CO 89 v11.0

inYT 572 v2.0
Low-level Conf. 6
Keypad 24 v25.0

Problem

The Gecko integration does not show variables containing temperature info, nor control regulation. The info is neither available at States in Developer Tools. When configuring the gecko integration i can see a blank field as data metrics. See attached image. Could this be related?

image

Hot tub preset doesn't seem to refresh

Version of the custom_component

0.0.11

Configuration

- entity: sensor.hot_tub_heater_preset
    name: Current Preset

Describe the bug

I have a yaml dashboard which is dedicated to all my hot tub settings. I've noticed that the preset (standard, energy-saver, weekender etc) doesn't always seem to reflect what the tub is actually set to. I often change the preset (always via the gecko app, never this integrations service call) mid week. If I navigate to integrations and 'reload' this integration it updates though.

Debug log

I can supply if needed but grep -i preset home-assistant.log doesn't show anything (I have debug set for this integration)

Version 0.1.7 breaks integration

Version of the custom_component

Version 0.1.7

Configuration

Not sure what goes here, there's no special configuration. Let me know any details I can add.

Describe the bug

All entities are unavailable with version 0.1.7 (see screenshot). After downgrading back to 0.1.6 everything works again as expected.
image

Debug log

I enabled debug logs and here's everything from gecko:

2022-04-15 10:30:58 INFO (MainThread) [custom_components.gecko]
-------------------------------------------------------------------
Gecko
Version: 0.1.7
Gecko Lib: 0.4.6
This is a custom integration!
If you have any issues with this you need to open an issue here:
https://github.com/gazoodle/gecko-home-assistant/issues
-------------------------------------------------------------------
2022-04-15 10:30:58 DEBUG (MainThread) [custom_components.gecko] Setup entry for UUID 6f1abf74-d4a6-43ed-9263-e7c8eddae101, ID SPA80:1f:12:43:ce:c0, address None (None)
2022-04-15 10:30:58 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.SPA_MAN_ENTER, state GeckoSpaState.IDLE
2022-04-15 10:30:58 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_STARTED, state GeckoSpaState.LOCATING_SPAS
2022-04-15 10:31:00 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_DISCOVERED_SPA, state GeckoSpaState.LOCATING_SPAS
2022-04-15 10:31:03 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_FINISHED, state GeckoSpaState.LOCATED_SPAS
2022-04-15 10:31:03 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_STARTED, state GeckoSpaState.LOCATING_SPAS
2022-04-15 10:31:05 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_DISCOVERED_SPA, state GeckoSpaState.LOCATING_SPAS
2022-04-15 10:31:05 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.LOCATING_FINISHED, state GeckoSpaState.LOCATED_SPAS
2022-04-15 10:31:05 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_HAS_STATUS_SENSOR, state GeckoSpaState.LOCATED_SPAS
2022-04-15 10:31:05 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_HAS_RECONNECT_BUTTON, state GeckoSpaState.CONNECTING
2022-04-15 10:31:05 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_STARTED, state GeckoSpaState.CONNECTING
2022-04-15 10:31:06 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTING
2022-04-15 10:31:06 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_GOT_FIRMWARE_VERSION, state GeckoSpaState.CONNECTING
2022-04-15 10:31:07 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_HAS_PING_SENSOR, state GeckoSpaState.CONNECTING
2022-04-15 10:31:07 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_GOT_CHANNEL, state GeckoSpaState.CONNECTING
2022-04-15 10:31:08 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_GOT_CONFIG_FILES, state GeckoSpaState.CONNECTING
2022-04-15 10:31:08 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_INITIAL_DATA_BLOCK_REQUEST, state GeckoSpaState.CONNECTING
2022-04-15 10:31:12 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_SPA_COMPLETE, state GeckoSpaState.SPA_READY
2022-04-15 10:31:12 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CLIENT_FACADE_IS_READY, state GeckoSpaState.CONNECTED
2022-04-15 10:31:12 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.CONNECTION_FINISHED, state GeckoSpaState.CONNECTED
2022-04-15 10:32:06 DEBUG (MainThread) [custom_components.gecko.spa_manager] Event: GeckoSpaEvent.RUNNING_PING_RECEIVED, state GeckoSpaState.CONNECTED

2021.7.0 killed this for me.

Version of the custom_component

Configuration

Add your logs here.

Describe the bug

A clear and concise description of what the bug is.

Debug log


Add your logs here.

Failed to set up

Version of the custom_component : v0.0.7

Version core-2021.7.4
supervisor-2021.06.8

Getting following fault message
"Failed to set up"
image

log

Logger: custom_components.gecko
Source: custom_components/gecko/init.py:50
Integration: Gecko (documentation, issues)
First occurred: 11:36:13 PM (1 occurrences)
Last logged: 11:36:13 PM

Exception during entry setup
Traceback (most recent call last):
File "/config/custom_components/gecko/init.py", line 50, in async_setup_entry
while not facade.is_connected:
File "/usr/local/lib/python3.9/site-packages/geckolib/automation/facade.py", line 68, in is_connected
if not self._spa.is_connected:
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 319, in is_connected
raise RuntimeError("Spa took too long to connect ...")
RuntimeError: Spa took too long to connect ...

Detail logs:

2021-07-25 23:35:43 ERROR (Thread-14) [geckolib.driver.udp_socket] Unhandled exception in receive_handler func
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/geckolib/driver/udp_socket.py", line 312, in dispatch_recevied_data
receive_handler.handled(self, remote_end)
File "/usr/local/lib/python3.9/site-packages/geckolib/driver/udp_socket.py", line 87, in handled
self._on_handled(self, socket, sender)
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 163, in _on_config_received
raise Exception(
Exception: Cannot find XML configuraton for inYT v80
2021-07-25 23:36:12 ERROR (Thread-13) [root] Uncaught thread exception
Traceback (most recent call last):
File "/usr/local/lib/python3.9/threading.py", line 954, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.9/threading.py", line 892, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 295, in _ping_thread_func
self.refresh()
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 324, in refresh
if not self.is_connected:
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 319, in is_connected
raise RuntimeError("Spa took too long to connect ...")
RuntimeError: Spa took too long to connect ...
2021-07-25 23:36:13 ERROR (MainThread) [custom_components.gecko] Exception during entry setup
Traceback (most recent call last):
File "/config/custom_components/gecko/init.py", line 50, in async_setup_entry
while not facade.is_connected:
File "/usr/local/lib/python3.9/site-packages/geckolib/automation/facade.py", line 68, in is_connected
if not self._spa.is_connected:
File "/usr/local/lib/python3.9/site-packages/geckolib/spa.py", line 319, in is_connected
raise RuntimeError("Spa took too long to connect ...")
RuntimeError: Spa took too long to connect ...

Error from auto-detecting Mr. Steam steamlinx gecko unit.

Version of the custom_component

Version 0.0.5 - from manifest.json
Version 0.0.1 - from const.py

pulled from master (default) branch at github.

Configuration

Integration added through UI, no other configuration done. All options still enabled (binary sensor, climate, light, sensor, switch)

image

Describe the bug

Added the gecko-home-assistant custom component. Enabled the integration. It auto detected the Mr. Steam Steamlinux Gecko unit, which isn't currently handled by Geckolib. See Geckolib issue: gazoodle/geckolib#6

Note: when I added the integration to Home Assistant the Gecko unit for the hot tub wasn't connected yet.

I'm not expecting Home Assistant support for the Mr. Steam yet, just looking to avoid the error from the auto-detection of the Mr. Steam unit.

Will report back what happens when integration/hass restarted with in.touch2 (hot tub) Gecko connected.

Debug log

Logger: custom_components.gecko
Source: util/async_.py:140
Integration: Gecko (documentation, issues)
First occurred: 1:29:13 PM (1 occurrences)
Last logged: 1:29:13 PM
Exception during entry setup

Traceback (most recent call last):
  File "/config/custom_components/gecko/__init__.py", line 45, in async_setup_entry
    facade = locator.get_spa_from_identifier(spa_identifier).get_facade(False)
  File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 46, in get_facade
    facade = GeckoFacade(GeckoSpa(self).start_connect())
  File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 73, in __init__
    GeckoSpaPack.__init__(self)
  File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 15, in __init__
    GeckoSpaPack.download_if_needed()
  File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 32, in download_if_needed
    GeckoSpaPack.download()
  File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 39, in download
    response = http.request(
  File "/usr/local/lib/python3.8/site-packages/urllib3/request.py", line 74, in request
    return self.request_encode_url(
  File "/usr/local/lib/python3.8/site-packages/urllib3/request.py", line 96, in request_encode_url
    return self.urlopen(method, url, **extra_kw)
  File "/usr/local/lib/python3.8/site-packages/urllib3/poolmanager.py", line 375, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 234, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/local/lib/python3.8/http/client.py", line 1252, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.8/http/client.py", line 1263, in _send_request
    self.putrequest(method, url, **skips)
  File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 214, in putrequest
    return _HTTPConnection.putrequest(self, method, url, *args, **kwargs)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 151, in protected_loop_func
    check_loop()
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 140, in check_loop
    raise RuntimeError(
RuntimeError: I/O must be done in the executor; Use `await hass.async_add_executor_job()` at custom_components/gecko/__init__.py, line 45: facade = locator.get_spa_from_identifier(spa_identifier).get_facade(False)

This is the Home Assistant logger output.  If you need me to turn up debug logging, or give logging from the geckolib shell I can do that. 

Component fails to start since update 2021.5 HA update

looking in breaking changes ALL i can see about custom components is about correct manifest versioning?
Custom integrations now require a version key in their manifest file, this also means that all custom integrations now require a manifest file.

If you are using a legacy custom integration like custom_components/awesome.py this now needs to move to custom_components/awesome/init.py so you can add custom_components/awesome/manifest.json to it.

For more information about integration, manifests have a look here: https://developers.home-assistant.io/docs/creating_integration_manifest

Custom integrations that do not have this will be blocked from loading if it’s missing a version in the manifest starting with Home Assistant 2021.6.

If you see these errors, please report the issue with the author of that

Error in HA is below

Logger: custom_components.gecko
Source: util/async_.py:140
Integration: Gecko (documentation, issues)
First occurred: 5:27:37 (1 occurrences)
Last logged: 5:27:37

Exception during entry setup
Traceback (most recent call last):
File "/config/custom_components/gecko/init.py", line 45, in async_setup_entry
facade = locator.get_spa_from_identifier(spa_identifier).get_facade(False)
File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 46, in get_facade
facade = GeckoFacade(GeckoSpa(self).start_connect())
File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 73, in init
GeckoSpaPack.init(self)
File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 15, in init
GeckoSpaPack.download_if_needed()
File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 32, in download_if_needed
GeckoSpaPack.download()
File "/usr/local/lib/python3.8/site-packages/geckolib/driver/spapack.py", line 39, in download
response = http.request(
File "/usr/local/lib/python3.8/site-packages/urllib3/request.py", line 74, in request
return self.request_encode_url(
File "/usr/local/lib/python3.8/site-packages/urllib3/request.py", line 96, in request_encode_url
return self.urlopen(method, url, **extra_kw)
File "/usr/local/lib/python3.8/site-packages/urllib3/poolmanager.py", line 375, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 699, in urlopen
httplib_response = self._make_request(
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 394, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 234, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File "/usr/local/lib/python3.8/http/client.py", line 1252, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/local/lib/python3.8/http/client.py", line 1263, in send_request
self.putrequest(method, url, **skips)
File "/usr/local/lib/python3.8/site-packages/urllib3/connection.py", line 214, in putrequest
return HTTPConnection.putrequest(self, method, url, *args, **kwargs)
File "/usr/src/homeassistant/homeassistant/util/async
.py", line 151, in protected_loop_func
check_loop()
File "/usr/src/homeassistant/homeassistant/util/async
.py", line 140, in check_loop
raise RuntimeError(
RuntimeError: I/O must be done in the executor; Use await hass.async_add_executor_job() at custom_components/gecko/init.py, line 45: facade = locator.get_spa_from_identifier(spa_identifier).get_facade(False)

No entities found

Version of the custom_component

Version 0.0.1
git commit 2d3e2d7

Configuration

I'm running a dockerized version of home assistant using host networking.
Added the gecko custom_component as documented.

Describe the bug

I integrated the gecko custom component and used the Integrations UI to add Gecko. The process seemed to run successfully from the front end, but no entities were exposed after the component was added. Although it does seem like my spa was discovered.

image

Debug log

This is my docker log


home-assistant    | 2021-01-18 16:20:02 WARNING (MainThread) [homeassistant.util.async_] Detected I/O inside the event loop. This is causing stability issues. Please report issue to the custom component author for gecko doing I/O at custom_components/gecko/__init__.py, line 45: facade = locator.get_spa_from_identifier(spa_identifier).get_facade(False)
home-assistant    | 2021-01-18 16:20:04 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\x01\x02'\x08\x03\x00\x00\x00\x00\x00\x00\x00\x01\x00\x11\x00\x010\x14x\xf0\x02\x14\x02\x04\x02\x00\x00\x00s\x01\x0e\x02\xd0\x00\x00\x04\x01\x00\x00\x01\x00"
home-assistant    | 2021-01-18 16:20:04 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\x01\x02'\x08\x03\x00\x00\x00\x00\x00\x00\x00\x01\x00\x11\x00\x010\x14x\xf0\x02\x14\x02\x04\x02\x00\x00\x00s\x01\x0e\x02\xd0\x00\x00\x04\x01\x00\x00\x01\x00"
home-assistant    | 2021-01-18 16:20:04 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\x02\x03'\x00\x0f\x02\xc5\x00\x02\x00\x02\x01\x01\x03\x03\x03\x05\x05\x04\x04\x01\x03\x06\x14\x0f\x18\x0f\x0f\x14\x06\x06\x06\x06\x06\x06\x00\x00\x00\x00\x01\x00\x00"
home-assistant    | 2021-01-18 16:20:04 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\x03\x04'\x00\x14\x00x\x00\n @\x80\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
home-assistant    | 2021-01-18 16:20:04 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\x04\x05'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
home-assistant    | 2021-01-18 16:20:04 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\x05\x06'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
home-assistant    | 2021-01-18 16:20:04 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\x06\x07'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x02\x0f\xff\xff\xff"
home-assistant    | 2021-01-18 16:20:04 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\x07\x08'\x00\x00\x02\xc7\x02\xc7\x00\x00\x00\x00\x00\x00\x00@\n\x00\nK\x00=%\x00<;\x01b\x01\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\n"
home-assistant    | 2021-01-18 16:20:04 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\x08\t'\x8c\x00\x00\x00\x00\x02\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
home-assistant    | 2021-01-18 16:20:05 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\t\n'\x00\x00\x00\x00\x01B\x08\x00\x18\x0f\x00\x00\x00\x00vT\x00\x00\x00\x00\x11\x0e\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
home-assistant    | 2021-01-18 16:20:05 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\n\x0b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
home-assistant    | 2021-01-18 16:20:05 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\x0b\x0c'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
home-assistant    | 2021-01-18 16:20:05 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b"STATV\x0c\r'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffinYT_C60.xml\x00\x00\x00\x00inYT_S59.xm"
home-assistant    | 2021-01-18 16:20:05 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b'STATV\r\x00\x05l\x00\x00\x00\x00'
home-assistant    | 2021-01-18 16:20:09 WARNING (Thread-16) [geckolib.driver.udp_socket] Couldn't find new handler for b'FILES,inYT_C60.xml,inYT_S59.xml'
home-assistant    | 2021-01-18 16:20:33 ERROR (Thread-15) [root] Uncaught thread exception
home-assistant    | Traceback (most recent call last):
home-assistant    |   File "/usr/local/lib/python3.8/threading.py", line 932, in _bootstrap_inner
home-assistant    |     self.run()
home-assistant    |   File "/usr/local/lib/python3.8/threading.py", line 870, in run
home-assistant    |     self._target(*self._args, **self._kwargs)
home-assistant    |   File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 282, in _ping_thread_func
home-assistant    |     self.refresh()
home-assistant    |   File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 311, in refresh
home-assistant    |     if not self.is_connected:
home-assistant    |   File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 306, in is_connected
home-assistant    |     raise RuntimeError("Spa took too long to connect ...")
home-assistant    | RuntimeError: Spa took too long to connect ...
home-assistant    | 2021-01-18 16:20:33 ERROR (MainThread) [custom_components.gecko] Exception during entry setup
home-assistant    | Traceback (most recent call last):
home-assistant    |   File "/config/custom_components/gecko/__init__.py", line 47, in async_setup_entry
home-assistant    |     while not facade.is_connected:
home-assistant    |   File "/usr/local/lib/python3.8/site-packages/geckolib/automation/facade.py", line 68, in is_connected
home-assistant    |     if not self._spa.is_connected:
home-assistant    |   File "/usr/local/lib/python3.8/site-packages/geckolib/spa.py", line 306, in is_connected
home-assistant    |     raise RuntimeError("Spa took too long to connect ...")
home-assistant    | RuntimeError: Spa took too long to connect ...

FYI - I have been using this library for several months to log hot tub data: https://github.com/chicago6061/in.touch2

Let me know if what additional details you require from me.

Thank you so much for making this component! Looking forward to integrating my spa with HA.

IndexError: list index out of range

Hi

I'm running Home Assistant 2021.9.6 with custom component V0.0.7

My logs are full of the following:

2021-11-11 17:13:06 ERROR (Thread-6) [geckolib.driver.accessor] Enum accessor inFloErrorType out-of-range for ['FLOW_OK', 'MODE_1_FAIL', 'MODE_1_AND_2_FAIL', 'MODE_1_AND_HEATING_FAIL', 'HEATING_FAIL']
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/geckolib/driver/accessor.py", line 124, in _get_value
    data = self.items[data]
IndexError: list index out of range
2021-11-11 17:13:06 ERROR (Thread-6) [geckolib.driver.accessor] Enum accessor inFloErrorType out-of-range for ['FLOW_OK', 'MODE_1_FAIL', 'MODE_1_AND_2_FAIL', 'MODE_1_AND_HEATING_FAIL', 'HEATING_FAIL']
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/geckolib/driver/accessor.py", line 124, in _get_value
    data = self.items[data]
IndexError: list index out of range
2021-11-11 17:13:21 ERROR (Thread-6) [geckolib.driver.accessor] Enum accessor inFloErrorType out-of-range for ['FLOW_OK', 'MODE_1_FAIL', 'MODE_1_AND_2_FAIL', 'MODE_1_AND_HEATING_FAIL', 'HEATING_FAIL']
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/geckolib/driver/accessor.py", line 124, in _get_value
    data = self.items[data]
IndexError: list index out of range
2021-11-11 17:13:21 ERROR (Thread-6) [geckolib.driver.accessor] Enum accessor inFloErrorType out-of-range for ['FLOW_OK', 'MODE_1_FAIL', 'MODE_1_AND_2_FAIL', 'MODE_1_AND_HEATING_FAIL', 'HEATING_FAIL']
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/geckolib/driver/accessor.py", line 124, in _get_value
    data = self.items[data]
IndexError: list index out of range

although everything seems to be working fine - is the above normal? are others seeing the same? is there a way to solve the index out of range error?

TIA

Error Cconditions

Hi

Firstly, this is a great integration.

I have it working with Home Assistant and it works very well.

I have a particular issue with my spa which generates a FLO error condition.

Where are you at the moment with detecting and monitoring Error conditions?

I would really like to get an alert on it in Home Assistant but assume there is work to do in geckolib to expose it?

Krs

Mark

Circulating Pump boolean entity doesn't track the status

Version of the custom_component

0.0.7

Configuration

inYT 338 v10.0
Using the latest version (v33) of SpaPack, grabbed using "Bluestacks" method.

Describe the bug

My circulating pump is controllable by Odyssey: Pump 1, however the binary sensor Odyssey: Circulating Pump never shows ON

Thank you!

Any chance to have a selection between fahrenheit and celsius?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.