gazoodle / gecko-home-assistant

Home Assistant integration for spas equipped with Gecko Alliance in.touch2 modules
MIT License
60 stars 22 forks source link

does not work after HACS install. #15

Closed maccident closed 2 years ago

maccident commented 3 years ago

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)
EiNSTeiN- commented 3 years ago

Got the same error. I fixed locally by changing this line: https://github.com/gazoodle/gecko-home-assistant/blob/fef5ac8fb563a6fabd6b44a4fdc3117eda24f7ef/custom_components/gecko/__init__.py#L45

To this:

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) 

It's possible only the get_facade call needs to be wrapped with async_add_executor_job, I haven't tried as this fixes the issue locally for now

RhinoRich commented 3 years ago

Got the same error. I fixed locally by changing this line:

https://github.com/gazoodle/gecko-home-assistant/blob/fef5ac8fb563a6fabd6b44a4fdc3117eda24f7ef/custom_components/gecko/__init__.py#L45

To this:

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) 

It's possible only the get_facade call needs to be wrapped with async_add_executor_job, I haven't tried as this fixes the issue locally for now

Thanks for this but it doesn't work for me. I'm not the OP of this one, but https://github.com/gazoodle/gecko-home-assistant/issues/9

I had also tried the Gazoodle fix to SpaPackStruct.xml he suggested in February. No change. It identifies the spa without any setup or direction (how does it even know the IP address!?) but no entities listed. I check here frequently but I think Gazoodle has other things to focus on at the moment.

maccident commented 3 years ago

Got the same error. I fixed locally by changing this line:

https://github.com/gazoodle/gecko-home-assistant/blob/fef5ac8fb563a6fabd6b44a4fdc3117eda24f7ef/custom_components/gecko/__init__.py#L45

To this:

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) 

Thanks for the reply. I greatly appreciate your help.

I applied your fix, and it just caused issues elsewhere. Looks like I'm just going to have to wait, or find another solution.


Logger: root
Source: /usr/src/homeassistant/homeassistant/bootstrap.py:310
First occurred: April 11, 2021, 10:17:32 PM (1 occurrences)
Last logged: April 11, 2021, 10:17:32 PM
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'

Logger: root
Source: /usr/src/homeassistant/homeassistant/bootstrap.py:310
First occurred: April 11, 2021, 10:17:57 PM (1 occurrences)
Last logged: April 11, 2021, 10:17:57 PM
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 ...

Logger: custom_components.gecko
Source: custom_components/gecko/__init__.py:48
Integration: Gecko (documentation, issues)
First occurred: April 11, 2021, 10:17:57 PM (1 occurrences)
Last logged: April 11, 2021, 10:17:57 PM
Exception during entry setup

Traceback (most recent call last):
  File "/config/custom_components/gecko/__init__.py", line 48, 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 ...
gazoodle commented 3 years ago

Folk, I'm sorry that I've not been able to get time to address these issues, it bugs me that you guys are trying to use this, not getting anywhere and I'm unable to really help.

There are a couple of avenues that can be followed to try to alleviate some of the issues.

  1. SpaPackStruct.xml -> This file is downloaded from the Gecko website. It is available at http://intouch.geckoal.com/gecko/prod/SpaPackStruct.xml. If you get this file and place it is in the integration folder then the code will not need to go looking for it which will prevent HA from complaining that there is IO during initialization.
  2. However, this is version 19 of the file which doesn't contain the definintions for some modern YE model spas. This leads to not finding any entities (I need to get a better error system so this is clear). I have managed to extract a later version of the file from the Android APK files (see https://github.com/gazoodle/geckolib/issues/12). Using this can sometimes help.
  3. This still is not be the latest version, and at present I have no way to get this. I'm trying to get Gecko to release this and I've made contact with their CTO on LinkedIn so there is some hope there.

As a final last-ditch effort we might construct our own XML data but we'd need to sniff the protocol using the app and being careful to operate specific devices, like power-up P1 and then off again. This would be a long uphill process so I'm not massively keen to go there.

If anyone fancies also touching base with Gecko to see if we can persuade them to work with us then this might be a good choice, always keen for win-win solutions.

I will get back to this library soon, but other commitments are ... well, important too.

RhinoRich commented 3 years ago

Thanks Gazoodle. Sadly these things don't work for me.

RhinoRich commented 3 years ago

Lobby https://www.facebook.com/GeckoAlliance/ to help gazoodle with this

maegibbons commented 3 years ago

Hi @gazoodle @RhinoRich

Sorry for being a noob in terms of HA but where in the target HA file system should one place the file SpaPackStruct.xml?

And how do you get it there? via scp?

krs

Mark

maccident commented 3 years ago

Thanks @gazoodle for the update. Your suggestion has remedied some of the issues, but I'm still left with:

Logger: root
Source: /usr/src/homeassistant/homeassistant/bootstrap.py:310
First occurred: 11:55:57 AM (1 occurrences)
Last logged: 11:55:57 AM
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'

Any guidance would be appreciated. I acknowledge that you have other, higher-priority commitments. I'm thankful that you are being considerate enough to even take on a project like this!

I'll continue to use the app until this issue gets resolved.

RhinoRich commented 3 years ago

It doesn't work for me so I'm not the best person to ask. I did follow gazoodle's instructions for modifying the file which he thought might work, but it didn't. The problem is he's working with a version from 2018, and Gecko ignore his requests for access to the latest version, so his good work isn't compatible with the latest Spa Packs. Anyhow, you're supposed to put the file in config\custom-components\gecko. I've attached the file as it compiled from the instructions in the community thread.

Good luck!

Rich

On Thu, 29 Apr 2021 at 17:17, Mark Gibbons @.***> wrote:

Hi @gazoodle https://github.com/gazoodle @RhinoRich https://github.com/RhinoRich

Sorry for being a noob in terms of HA but where in the target HA file system should one place the file SpaPackStruct.xml?

And how do you get it there? via scp?

krs

Mark

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gazoodle/gecko-home-assistant/issues/15#issuecomment-829377250, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASKOHHLE55I63WGRU7LW4UTTLGBAVANCNFSM42YCGPWQ .

maegibbons commented 3 years ago

Hi

Thanks for the reply.

My issue was not the version number but the async downloading problem.

I originally placed the file in the gecko directory which didnt work.

It started working for me when I put a copy in the config directory.

Krs

Mark

RhinoRich commented 3 years ago

Glad it worked. You must have one of the packs that's compatible. Out of curiosity, which is it? Mine is inYT 338 v10.0 I have set a temperature control profile using Alexa, but boy is it clunky and we need to remember to mute it so it isn't yelling the temperature settings in the middle of the night!

I just tried it again more in hope than expectation. Finds the tub okay but then times out and errors. I tried the timeout fix suggested and it still times out.

On Fri, 30 Apr 2021 at 08:22, Mark Gibbons @.***> wrote:

Hi

Thanks for the reply.

My issue was not the version number but the async downloading problem.

I originally placed the file in the gecko directory which didnt work.

It started working for me when I put a copy in the config directory.

Krs

Mark

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gazoodle/gecko-home-assistant/issues/15#issuecomment-829897559, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASKOHHODZWK5HYBG4CIHTODTLJLC5ANCNFSM42YCGPWQ .

maegibbons commented 3 years ago

Hi

An in.YJ 437 V2.0

New tub. Came without Wifi. Fixed that with retrofitting in.touch 2 module.

Not tried Alexa on it yet. Think i prefer phone control anyway!

All now good here. Next job integrate smart meter so I can see how much juice it is using.

Krs

Mark

RhinoRich commented 3 years ago

On the hot tub supplier facebook page I've shared how I've optimised energy use with Octopus Go EV tariff. Essentially it boosts to 40C during the 5p/kWH overnight window and then cools before heating to 38 for evening use before cooling again. Saving about £1 a day since doing that. Like I say, using Alexa for that is clunky and would be so much better with Home Assistant :( https://www.facebook.com/groups/282823472241293/permalink/1066931077163858

maegibbons commented 3 years ago

Interesting.

I was going to buy from combined shipping but they had stock issues?

Where are you located?

Krs

Mark

RhinoRich commented 3 years ago

We're in the UK also. Combined Shipping is a bulk importer of Chinese hot tubs so deliveries are never quick, but the tubs are brilliant value. We only had to wait a couple of months in any case.

On Fri, 30 Apr 2021 at 10:38, Mark Gibbons @.***> wrote:

Interesting.

I was going to buy from combined shipping but they had stock issues?

Where are you located?

Krs

Mark

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gazoodle/gecko-home-assistant/issues/15#issuecomment-829972854, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASKOHHPSK5LZ65EK5P3CTLTTLJ3A3ANCNFSM42YCGPWQ .

maegibbons commented 3 years ago

We are literally about 5 miles away. Which tub did you get?

RhinoRich commented 3 years ago

Ultimate 7 with the in.k1000 panel. Brilliant for the money.

On Fri, 30 Apr 2021 at 12:14, Mark Gibbons @.***> wrote:

We are literally about 5 miles away. Which tub did you get?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gazoodle/gecko-home-assistant/issues/15#issuecomment-830022952, or unsubscribe https://github.com/notifications/unsubscribe-auth/ASKOHHPMXRJZCTKKYVELQCDTLKGITANCNFSM42YCGPWQ .

MrListerCoUk commented 3 years ago

I tweaked the code locally to auto download SpaPackStuct.xml (same as the one linked above) but also getting errors in recognising the spa.

From Technical Info on Android app: inYT = 348 v13.0 Low-level Conf = 1 Keypad = 22 v31.0

I'll try and get the XML extracted from the app and give that a go.

MrListerCoUk commented 3 years ago

Unfortunately v24 of the XML doesn't seem to help me.

I did see v2.7.4 of the APK (which is what I've got running on my phone) but haven't managed to extract anything from that yet. I'll continue to poke around another day as would be great to get this working.

maegibbons commented 3 years ago

@MrListerCoUk and @maccident

Did you get yourselves sorted out?

I have helped out @RhinoRich with his setup now and thats working with InYT.

Would need to get ssh access to your HA box but I can talk you through that.

Krs

Mark

MrListerCoUk commented 3 years ago

@MrListerCoUk and @maccident Did you get yourselves sorted out?

Unfortunately not yet, family commitments (and researching water chemistry / learning how to balance chemicals) mean I've not had any spare HA tinkering time.

I have helped out @RhinoRich with his setup now and thats working with InYT. Would need to get ssh access to your HA box but I can talk you through that.

That would be amazing if you have a solution for inYT, I'm keen to get some automations going to make use of excess solar from current UK weather. I'll try and reach out directly to you to find a mutually agreeable time.

maegibbons commented 3 years ago

@MrListerCoUk

Hi, first PM me your email address, together with details of environment i.e. hardware, os, distribution, etc

I will then send you initial instructions together with rsa key file for access.

Krs

Mark

maccident commented 3 years ago

@maegibbons —

I haven't. I've tried all of the fixes here, and none of them work. To be honest, I've just put it on the back burner. I have the iOS app, and that solves my problems. Home-assistant integration would be great, but not worth the extra effort at this time. I'm fine with patiently waiting for someone to fix the code or for me to get to a point where I have the time to learn enough about HAs plugins and the spa's protocol to dig into it.

maegibbons commented 3 years ago

@maccident

What is your controller version?. We now have the InYT working.

Would need to check your versions. Also patched a bug and created an autopatch script to redo the patch when HA is updated.

Krs

Mark

maccident commented 3 years ago

@maegibbons I'm not sure of which value maps, so here goes everything: in.touch EN - 70 v14.0 in.touch CO - 69 v11.0 inYT 565 v11.0 Keypad — 111 v13.0 in.mix - 113 v1.0

maegibbons commented 3 years ago

Hmm.

Not familiar with those versions? Which location are you in?

It is an InYT so we should be able to get it working. However, I would need access to your HA server to test the Config and Log revisions.

If you want me to take a look then PM me your email address and I can email you instructions.

Krs

Mark

MrListerCoUk commented 3 years ago

@maegibbons

Mark, I've been unable to find info to reach out to you directly but I've updated website field of my github profile. If you want to drop me an email at that domain then we can pick up the conversation. Thanks. Daniel

maegibbons commented 3 years ago

Sent you an email to both daniel@ and daniellister@

maccident commented 3 years ago

@maegibbons https://github.com/maegibbons

Those are the values I’ve pulled from the intouch2 iOS app. I’m in Washington State, so it’s a US or NA device.

Is there a better source for the info you’re asking for?

On Jun 10, 2021, at 12:28 PM, Mark Gibbons @.***> wrote:

Hmm.

Not familiar with those versions? Which location are you in?

It is an InYT so we should be able to get it working. However, I would need access to your HA server to test the Config and Log revisions.

If you want me to take a look then PM me your email address and I can email you instructions.

Krs

Mark

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/gazoodle/gecko-home-assistant/issues/15#issuecomment-858955178, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAKD53IUJQS6F4F75GZRIRTTSEG4XANCNFSM42YCGPWQ.

maegibbons commented 3 years ago

No those values are fine just not what i'm used to in the UK!

As I said its an InYT so should not be a problem.

Message me on https://www.facebook.com/mark.ae.gibbons/ and we can arrange access.

rct commented 3 years ago

I'm trying to understand the current state of things with the custom component and geckolib. It looks like there are similar issues reported in at least #7 and #9. So these 3 issues might be somewhat redundant.

Here's my current understanding, please correct me where I'm wrong:

RuntimeError: I/O must be done in the executor

The first problem seems to be that Home Assistant is throwing an exception because of I/O not being done async. This seems to be related to the download of SpaPackStruct.xml and is preventing it from getting downloaded.

The fix seems to be to change line 45 in gecko/__init__.py

I think this fix was identified by @EiNSTeiN- (apologies if I got that wrong.)

https://github.com/gazoodle/gecko-home-assistant/blob/fef5ac8fb563a6fabd6b44a4fdc3117eda24f7ef/custom_components/gecko/__init__.py#L45

To this:

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) 

Also a quick test showed breaking those two operations up into separate lines was still needed. In other words just adding await to the original line did not resolve the problem.

When I made the change to __init__.py and restarted, version 19 of SpaPackStruct.xml was automatically downloaded and placed in the Home Assistant configuration directory(*).

It sounds like there is a workaround that doesn't require changing the code if you manually download SpaPackStruct.xml and put it in Home Assistant's configuration directory()? Note: I did not test this ( This is the directory where Home Assistant's configuration.yaml and home-assistant.log is located. Depending on your system/method of access this could be /config, /usr/share/hassio/homeassistant, or other.)

As far as I can tell there is no PR submitted for this.

It there any consensus that fix is correct and a PR should be opened for this change?

SpaPackStruct.xml may be out of date for certain newer model controllers.

Version 19 of SpaPackStruct.xml is what is available for download. Some newer controllers either aren't defined, or aren't defined correctly in that version. It sounds like newer versions may be embedded and extractable from the Android APK.(?) (The current version might be version 24.)

Variable speed pump support

It looks like there might be or have been an issue for controllers that have pumps that run at more than one speed. It looks to me like that might be a functionality issue rather than something that would prevent start up


So for a new user starting out, at a minimum, the first issue needs to be resolved.

Depending on what model controller is in your tub, you may need to obtain a newer SpaPackStruct.xml or modify it.

Does this capture the current state of play?

Any other fixes/workarounds needed to get people up and running?

maegibbons commented 3 years ago

Yes.

After sorting out the SpaPackStruct.xml by either patch or manual download.

If you then get an error ending in a line with "None" in then that is an Xml problem which is what I was offering to help out on with regards to InYT boards.

Krs

Mark

rct commented 3 years ago

I do have a In.YT controller. I've not seen the NoneType exception that others have reported so far. Hass shows the version string as inYT 501 v10.0 which matches the iOS app. I've got 11 entities, which seems about right.

I did get a warning about PACKS, so I'm guessing that attribute isn't defined or there is no code to handle it.

2021-06-12 13:20:22 WARNING (Thread-6) [geckolib.driver.udp_socket] Couldn't find new handler for b'PACKS'

I didn't see any reference to PACKS in the XML file.


My pump 1 has two speed settings. So I'll be trying PR #19 soon

maegibbons commented 3 years ago

Please setup logger logging in HA to debug for geckolib and post a full log from an HA Restart

Krs

Mark

maegibbons commented 3 years ago

So are all your entities displayed correctly now?

Other fixes are pointless if your controller is not recognised first.

rct commented 3 years ago

So are all your entities displayed correctly now?

I've got 11 entities. Looks about right, I think. Sorry I should have put that in my post above.

curiously if I run Geckolib's shell, I don't get any warnings about PACKS but I do get a number of warnings about STATV:

r\x00\x00\x02\x8c\x01\x05\x00\x00\x00\x00\x04\n,\xff\xff\xff\x00\x00\x01\x0e\x01T\x00\x01\x06\x00\x00\x00\x00\x15\x06\x00\n\x03\x00\x14\x1d\x00"
LOG> WARNING Couldn't find new handler for b"STATV\x00\x01'\r\x00\x00\x02\x8c\x01\x05\x00\x00\x00\x00\x04\n,\
xff\xff\xff\x00\x00\x01\x0e\x01T\x00\x01\x06\x00\x00\x00\x00\x15\x06\x00\n\x03\x00\x14\x1d\x00"
LOG> WARNING Couldn't find new handler for b"STATV\x01\x02':9\x01\xf5\n\x00\x00\x08\x16\x00\x00\x00\x00\x00\x
00\x00\x03\x84\x00\x00\x00\x00\x01O\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
LOG> WARNING Couldn't find new handler for b"STATV\x01\x02':9\x01\xf5\n\x00\x00\x08\x16\x00\x00\x00\x00\x00\$
00\x00\x03\x84\x00\x00\x00\x00\x01O\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
LOG> WARNING Couldn't find new handler for b"STATV\x02\x03'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x1f\x15\x00\x17\x01\x00\xfd\x85\x00\x00\x00\x00\x00\x00"
LOG> WARNING Couldn't find new handler for b"STATV\x02\x03'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x1f\x15\x00\x17\x01\x00\xfd\x85\x00\x00\x00\x00\x00\x00"
LOG> WARNING Couldn't find new handler for b"STATV\x03\x04'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\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"
LOG> WARNING Couldn't find new handler for b"STATV\x03\x04'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\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"
LOG> WARNING Couldn't find new handler for b"STATV\x04\x05'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03"
LOG> WARNING Couldn't find new handler for b"STATV\x04\x05'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03"
LOG> WARNING Couldn't find new handler for b"STATV\x05\x06'\x04\x05\x06\x07\x08\xff\xff\xff\xff\xff\xff\xff\x
ff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffinYT_C58.x"
LOG> WARNING Couldn't find new handler for b"STATV\x05\x06'\x04\x05\x06\x07\x08\xff\xff\xff\xff\xff\xff\xff\x
ff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffinYT_C58.x"
LOG> WARNING Couldn't find new handler for b"STATV\x06\x07'ml\x00\x00\x00\x00inYT_S57.xml\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
LOG> WARNING Couldn't find new handler for b"STATV\x06\x07'ml\x00\x00\x00\x00inYT_S57.xml\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
LOG> WARNING Couldn't find new handler for b"STATV\x07\x08'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\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"
LOG> WARNING Couldn't find new handler for b"STATV\x07\x08'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\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"
LOG> WARNING Couldn't find new handler for b"STATV\x08\t'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14$D\x86\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
LOG> WARNING Couldn't find new handler for b"STATV\x08\t'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14$D\x86\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
LOG> WARNING Couldn't find new handler for b"STATV\t\n'\x01\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x
00\x03\x05\x00\x00\x00\x00\xff\x0e\x02\x00 \x02\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
LOG> WARNING Couldn't find new handler for b"STATV\t\n'\x01\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x
00\x03\x05\x00\x00\x00\x00\xff\x0e\x02\x00 \x02\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
LOG> WARNING 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"
LOG> WARNING 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"
LOG> WARNING Couldn't find new handler for b"STATV\x0b\x0c'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\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"
LOG> WARNING Couldn't find new handler for b"STATV\x0b\x0c'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\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"
LOG> WARNING Couldn't find new handler for b'STATV\x0c\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
LOG> WARNING Couldn't find new handler for b'STATV\x0c\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
connected!
Heater: Temperature 66.0°F, SetPoint 59.0°F, Real SetPoint 59.0°F, Operation Cooling
Pump 2: OFF
Pump 1: HIGH
Waterfall: ON
Lights: OFF
WaterCare: Waiting...
Smart Winter Mode:Risk = NO
Circulating Pump = ON
Ozone = ON
Smart Winter Mode:Active = False
Filter Status:Clean = False
Filter Status:Purge = False
maegibbons commented 3 years ago

Other idea. Instead of giving me Direct access, why not sort out root access from your PC to HASS OS and then we can use screen share to your PC. If you dont like what I am doing you can pull the plug.

Krs

Mark

maegibbons commented 3 years ago

Ok.

Thats all good. Dont worry about warnings. (Unless they happen continuously)

Make sure you apply STATP patch spa.py which is in one of my comments in geckolib.

You are good to go!

Krs

Mark

maccident commented 3 years ago

@maegibbons — can you share your fix here?

I'm still getting the error ending in: AttributeError: 'NoneType' object has no attribute 'findall'

followed up by two errors, one Gecko (custom integration), the other home assistant bootstrap.py… both end in: RuntimeError: Spa took too long to connect ...

rct commented 3 years ago

Thats all good. Dont worry about warnings. (Unless they happen continuously)

I think some of the warnings I'm seeing are due to the iOS Gecko app interacting with the Gecko. It looks like any connected device may get all of the replies. With Home Assistant running, when I also run GeckoShell, I see warnings that I hadn't seen before WARNING Out-of-sequence status block segment 0 - ignored

Make sure you apply STATP patch spa.py which is in one of my comments in geckolib.

So to be clear for others reading this, you are talking about https://github.com/gazoodle/geckolib/issues/20

The problem you are talking about is:

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. Processed updates aren't being cleared out, which your fix from above fixes.


There is also a different problem here, which may be related. I changed the setpoint using the iOS app. Home Assistant is still showing the power-up value of 59 F.


EDIT: - because there is a lot of stuff going on in this thread, I've moved the STATP handling bug that causes erratic current temperature to it's own issue #22

maegibbons commented 3 years ago

@maegibbons — can you share your fix here?

I'm still getting the error ending in: AttributeError: 'NoneType' object has no attribute 'findall'

followed up by two errors, one Gecko (custom integration), the other home assistant bootstrap.py… both end in: RuntimeError: Spa took too long to connect ...

Yes. Because the xml is not available for your controller!!!!!!!!!!!!!!!!!!!

I feel as though I am beating my head against a brick wall!!!

If you dont want to let me interrogate your spa directly (I understand) then enable full logging in HA logger for geckolib library. Then post me the complete log. I (may) be then able to give you an xml that will work for your spa.

I usually like to test it. But I can give you it blind once I see the log output. I will at some stagge need your email address for the revised xml.

Mine is mgibbons@ (domain shown for weblink in profile)

Krs

Mark

maegibbons commented 3 years ago

Yes

The fix fixes that.

The else makes sure that what follows is executed outside the for loop.

Code it how you wish. The important point is that the handlers list is cleared AFTER FOR LOOP COMPLETION and is not reprocessed when another STATP packet is received.

Krs

Mark

maccident commented 3 years ago

OK, I'm sorry for frustrating you. There are multiple conversations going on here simultaneously, and I'm trying to thoroughly contextualize them.

Here is the log file, it's been generated with the directive:

  default: info
  logs:
    custom_components.gecko: debug
    geckolib: debug

I do appreciate the help that you've been providing. debug.log

maegibbons commented 3 years ago

Hi

hmm strange!! that gave absolutely NO DEBUG output

Mine is

logger:
  default: warning
  logs:
    custom_components.gecko: warning
    geckolib: debug
    geckolib.locator: warning
    geckolib.driver.accessor: info
    geckolib.driver.spastruct: warning
    geckolib.driver.udp_socket: warning
    geckolib.driver.protocol.statusblock: info
maegibbons commented 3 years ago

And it should give LOADS of debug before the point it crashes

maccident commented 3 years ago

Rerun with your logger config… debug-2.log

maegibbons commented 3 years ago

Ok. Good news! I already have a version that will fix that. Email me mgibbons@ (domain shown for weblink in profile) and I will send it across to you.

Krs

Mark

maegibbons commented 3 years ago

Sent. Once it is working. Please also do the STATP patch otherwise you will get issues

maccident commented 3 years ago

Well, would you look at that.

Replaced the XML file, restarted Home Assistant, and voila! It's loaded up, error free!

Thank you @maegibbons!!!!!!!

Scope666 commented 3 years ago

Hi, new user of the integration here. I also had the IO error with a new install, but the fix posted here worked for me (changing line 45 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) 

Everything seems to be working best I can tell, awesome integration!!! :)