gazoodle / gecko-home-assistant

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

HA not on same vlan as Gecko in.touch2 ? #6

Closed PaulMalmqvist closed 2 years ago

PaulMalmqvist commented 3 years ago

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.
gazoodle commented 3 years ago

We could add the capability to specify an IP address, but I'm not sure that would work if UDP traffic is unable to flow between your VLANs (which seems to currently be the case). Do you have any way to allow UDP traffic between your HA instance and your intouch2 module?

PaulMalmqvist commented 3 years ago

Yes, there is no problem with permitting UDP unicast traffic between the vlan's. But multicast UDP-traffic is not routed between vlan's, and I think you are using multicast in this case to find the intouch2-module?

awakefie commented 3 years ago

Yep, specifying an IP address would be a great option as I also have VLANs causing it to not find my hot tub

leacho73 commented 3 years ago

+1 for this requirement if its possible - my Gecko also sits on a separate LAN.

MrListerCoUk commented 3 years ago

+1 to specify IP address. I'm running HA in docker container using bridge networking and with default settings I'm unable to find spa on network.

rct commented 3 years ago

The option to specify an IP address for a specific Gecko unit may also help with ignoring the Steamlinx Gecko unit in #20

ahochsteger commented 3 years ago

+1 to specify an IP address. I'm too running Home Assistant in a docker container thus manually specifying the IP address would help. @gazoodle I'd be willing to help if you could get some pointers ...

Johan-Arens commented 3 years ago

+1 to add the ip manually.

jasondefuria commented 3 years ago

Yes, I'm most interested in this feature as well. I keep devices like this on a separate VLAN, so being able to specify it would be great!

aspapunktse commented 3 years ago

+1, have the same issues with Multicast UDP traversing over VLAN:s.....When putting the module on the same VLAN it works like a charm, but when switching back to IoT VLAN it looses connection again

simonk1969 commented 3 years ago

+1 for manually adding IP.

Johan-Arens commented 3 years ago

+1

Johan

On Nov 7, 2021, at 17:08, simonk1969 @.***> wrote:

 +1 for manually adding IP.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

TangoMikeOscar commented 2 years ago

+1

Same for me, my Unraid VMs are on a seperate VLAN traffic can be permitted.

Thanks

gazoodle commented 2 years ago

v0.0.8 should fix this

PaulMalmqvist commented 2 years ago

I stiil can't add my SPA to HA. Get this in the logs: Logger: geckolib.locator Source: /usr/local/lib/python3.9/site-packages/geckolib/locator.py:145 First occurred: 9:31:04 AM (6 occurrences) Last logged: 9:34:19 AM

Cannot find spa from name Kotten10

gazoodle commented 2 years ago

Reopening to allow investigation

gazoodle commented 2 years ago

Can you try from an command prompt?

pip install geckolib
python3

>>> from geckolib import GeckoShell
>>> GeckoShell.run(["logfile client.log", ‘discover <ip of spa>‘])

  :

>>> 

Then post client.log?

(This off the top of my head 😀, so there might be syntax errors … )

PaulMalmqvist commented 2 years ago

Hi client.log

Yes, here is the logfile.

gazoodle commented 2 years ago

Thanks, can you remove the <> around the IP address and try again. I expect that the shell will find your spa then.

PaulMalmqvist commented 2 years ago

That did the trick: ➜ ~ python3 Python 3.9.7 (default, Nov 24 2021, 21:15:59) [GCC 10.3.1 20211027] on linux Type "help", "copyright", "credits" or "license" for more information.

from geckolib import GeckoShell GeckoShell.run(["logfile client.log", "discover 10.129.0.10"])

    <Disclaimer>
    ----------------------------- USE AT YOUR OWN RISK -----------------------------

    This code will allow you to make changes to your spa configuration that is
    outside of what the app, top panel and side panel settings allow. I've not
    tested every setting and it might be that you prevent your spa pack from
    operating as it used to do.

    I strongly suggest dumping the configuration values with the "config" command
    and recording them somewhere safe.

    </Disclaimer>

Starting discovery process...Found 1 spas Connecting to spa Kotten10 at 10.129.0.10 ... connected! Heater: Temperature 21.0°C, SetPoint 21.0°C, Real SetPoint 21.0°C, Operation Idle Pump 2: OFF Pump 1: OFF Waterfall: ON Lights: OFF WaterCare: Waiting... Smart Winter Mode:Risk = NO Circulating Pump = ON Ozone = OFF Smart Winter Mode:Active = False Filter Status:Clean = True Filter Status:Purge = False Welcome to the Gecko shell. Type help or ? to list commands.

(Gecko)

jasondefuria commented 2 years ago

I had the exact same issue as @PaulMalmqvist, and the solution provided by @gazoodle basically worked. Here's the syntax that I had to use:

pip install geckolib
python3

>>> from geckolib import GeckoShell
>>> GeckoShell.run(["logfile client.log", "discover 192.168.x.x"])
gazoodle commented 2 years ago

Ok, that’s good news. Basically the library can handle the topology but the integration can’t. I’m pretty sure I know why and I’m just setting up an environment to replicate what you’ve got so I can be sure of a fix. I’ll do my best to get it done this weekend.

gazoodle commented 2 years ago

Thanks for your patience folks, this should now be fixed. I assumed that passing a static IP was going to be the same as when that IP was on a different sub net that had peer routing working, just not broadcast, but I was wrong, the way the code was structured lead to the locator still trying to do a broadcast which of course didn't work. The shell doesn't do this which is why I asked @PaulMalmqvist to try that way just to be sure that was the problem.

I ended up building a whole new vlan at home and making sure that my dev box was on that lan to make sure ... in hindsight it would have been much easier to shove the in.touch2 module there instead and then test but hey ho, I had a heap of fun with my networking gear so it was a nice learning experience ... every day's a school day right?

Anyway, fingers crossed that this works for you folk.

wolfiegrr commented 11 months ago

I'm in a similar situation with this library. From the GeckoShell.run, I can find the Spa by specifying the IP, but when trying to integrate with a python3 script, I'm unsure of how I can specify the IP on the other subnet to be included in the discovery.