Gecko in.touch2 integration (Spa wireless remote control module)

I think having the card look like the popup is still being worked on. In the meantime though, you could create a vertical stack of 2 cards, put the climate card in the top one and then put a template card containing {{(state_attr('climate.hot_tub_heater', 'hvac_action')) }} (Which would give you the word ‘cooling’ here)

I’ve not mocked it up though, so it might be ugly :slight_smile:

Thanks. I used a combination of button card (container) and mushroom climate card instead.

image

tap action, navigates to another page with all thermostat card and other sensors. Just realised I was using the better thermostat card. the HA thermostat card shows the status now.

You could also try the tile card as they added the ability to show the presets

type: tile
entity: climate.hot_tub_heater
features:
  - type: target-temperature
  - type: climate-preset-modes
    style: dropdown
    preset_modes:
      - Away From Home
      - Standard
      - Energy Saving
      - Super Energy Saving
      - Weekender

Hi,

I really am lost with all these instructions. I set up HA mainly for spa control, or atleast hoped so. I’m super noob or becoming too old to understand all this.

Spa control is in.touch2 and i have the HACS @gazoodle version. I can fiddle with the temperature but not the way i was dreaming.

I tried to install Nordpool and hoped to make easy automation with HA to follow the price and heat when its cheap. Did not work.

I tried to follow your guidelines here but my basic knowledge is too low for this subject and i get more diizzy everytime I try to start over investigating how to complete this.

So what I thought I could make on my own was:

  1. Easy way to set manual “boost” times just by looking Nordpool (usual times are the night times in Finland when price is at 1-4 cent €)
  2. Easy way to set the temperature of the spa drop to cooling by daytime or the mornings.

BR Joonas

I don’t know NordPool, but it sounds a little like Octopus Agile in the UK. There’s a thread on extracting and using variable pricing here Octopus Agile Tariff -Turn device ON and OFF - #15 by GeoffUK

My tariff is a time-of-day thing, so it’s very easy, but I’d suggest that if the NordPool pricing is generally low at night, then just use a time based approach. It might not fully optimise things, but heating the tub to maximum overnight and then letting it coast down is a very economical way to run it. We estimate we save around 50% of the cost versus using a single setpoint continuously. We pay 7.5p overnight and 21p during the day.

Hi @RhinoRich
Have you made any updates/improvements to your automation code? This will be the first automation script I’m going to write. I have real time 5-minute pricing integrated into HA from my electricity utility, but I may start with the simple time based approach, as you mentioned.
Thanks
Scott

I accidentally snapped my RPi SD card and could no longer access the laptop with the backup, so had to do it all again!!

Dashboard:

        entities:
          - entity: input_datetime.pm_on_time
            name: Boost On Time
          - entity: input_number.pm_on_temp
            name: Evening Temperature
          - entity: input_datetime.pm_off_time
            name: Boost Off Time
          - entity: automation.boost_on
            name: Enable Evening Boost On
          - entity: automation.pm_boost_off
            name: Enable Evening Boost Off
          - entity: automation.heat_boost_on
            name: Enable Octopus Overnight Heat On
          - entity: automation.heat_boost_off
            name: Enable Octopus Overnight Heat Off
          - entity: input_datetime.octopus_on_time
            name: Time to Start Octopus Heating
          - entity: input_number.octopus_on_temp
            name: Target temperature

sensor:
  - platform: template
    sensors:
      spa_temperature:
        friendly_name: Spa Temperature
        value_template: '{{ states.climate.ducky_tub_heater.attributes.current_temperature }}'
        unit_of_measurement: °C
      spa_setpoint:
        friendly_name: Spa Setpoint
        value_template: '{{ states.climate.ducky_tub_heater.attributes.temperature }}'
        unit_of_measurement: °C

Automations

alias: Heat Boost On
description: ""
trigger:
  - platform: time
    at: input_datetime.octopus_on_time
condition: []
action:
  - service: climate.set_temperature
    target:
      entity_id: climate.ducky_tub_heater
    data:
      temperature: "{{states('input_number.octopus_on_temp')}}"
mode: single

alias: Heat Boost Off
description: ""
trigger:
  - platform: time
    at: "04:30:00"
condition: []
action:
  - service: climate.set_temperature
    target:
      entity_id: climate.ducky_tub_heater
    data:
      temperature: 36
mode: single

alias: pm boost on
description: ""
trigger:
  - platform: time
    at: input_datetime.pm_on_time
condition: []
action:
  - service: climate.set_temperature
    target:
      entity_id: climate.ducky_tub_heater
    data:
      temperature: "{{states('input_number.pm_on_temp')}}"
mode: single

alias: pm boost off
description: ""
trigger:
  - platform: time
    at: input_datetime.pm_off_time
condition: []
action:
  - service: climate.set_temperature
    target:
      entity_id: climate.ducky_tub_heater
    data:
      temperature: 36
mode: single

1 Like

@RhinoRich,

Curious for your input here. Thank you for providing your scripts. As a newbie, it was very helpful in helping me conceptualize what I’m doing. I used some of your language and combined it with some code from my utility’s real time pricing sensor.

This is what I ended up with:

- alias: hot tub on
  trigger:
  - platform: numeric_state
    entity_id:
    - sensor.comed_5_minute_price
    below: 1.5
  condition: []
  action:
  - service: climate.set_temperature
    target:
      entity_id: climate.cedar_tub_heater
    data:
      temperature: 104
  - service: notify.mobile_app_scotts_iphone
    data:
      message: ComEd prices are below 1.5 cents, Hot Tub is set to 104F.
      title: Hot Tub Heater on Cheap Electricity!
  mode: single

- alias: hot tub off
  trigger:
  - platform: numeric_state
    entity_id:
    - sensor.comed_5_minute_price
    above: 3
  condition: []
  action:
  - service: climate.set_temperature
    target:
      entity_id: climate.cedar_tub_heater
    data:
      temperature: 98
  - service: notify.mobile_app_scotts_iphone
    data:
      message: ComEd prices are above 3 cents, Hot Tub is set to 98F.
      title: Hot Tub Heater off Expensive Electricity!
  mode: single

So basically I have a “cheap energy, heat to 104F” command and a “expensive energy, turn down setpoint to 98F” command.

But because 5-minute pricing is so variable from the utility, this is getting triggered A LOT. I’m worried the control board won’t like how often its being told to change its set point, turn on heater, turn off heater, etc.

Any thoughts on how to further optimize?

Thanks
Scott

I have a similar thing with a heat pump I use in my garden pub. It has a thermostat that only goes down to 16. When not in use it runs in a frost-prevention mode I created to prevent the fridge, etc., from becoming inoperable. It works by using a smart switch to fire the heat pump if the temperature gets low.

Heat pumps need to run for a while to be effective, so I didn’t want it to switch on and off too frequently. Same with the hot tub. It has to fire the circulation pump and then stabilise temperature measurement before powering the heater. It will then take at least 30 minutes to have any effect on the water temperature.

My heat pump automation uses a helper called ‘Timer’. The ‘On’ routine sets Timer to 1, waits 2 hours and sets Timer to 0. The ‘Off’ routine checks if the temperature is above the setpoint but has a condition to check that Timer is set to 0.

One thing I learned about our hot tub, which has a 1650 litre capacity, is that it’s not efficient to run the heater for short periods. I studied the effect of continuous heating versus heating to max and ‘coasting’ over 2 cold months 3 years ago. My theory is that a lot of energy is consumed bringing the heater up to temperature. Once it reaches the point where it’s transferring its energy to the water, it’s at its most efficient.

Hope this helps.

2 Likes

by ‘continuous heating’ what I mean is running it with a fixed setpoint. Sorry for the confusion. In this mode, it would usually heat for about 45 minutes every 3 hours. Not efficient compared to running it for 4 hours overnight and coasting down.

1 Like

Our tub is super insulated, so I’m guessing your findings would be even more effective for us. I don’t have a lot of data yet, but once up to temperature, we only lose 1-2F across the entire day. The tub is still new to us, and we haven’t hit our typical cold Chicago weather yet, so I’m curious to see how it performs during much colder weather.

I will explore adding a timer condition to the routine!

I think I would specifically want a condition on the ON routine. If tub is heating and elec prices skyrocket, I do want the tub to turn off in those instances. That said, I do not necessarily want it to turn back on again 5 minutes later just because pricing came down, then maybe off again 10 minutes after that.

I’m going to have to think this through in a little more detail. I may revert back to what you have originally designed, which is an ON schedule at night with a pricing spike trigger. Or perhaps an ON trigger with a condition for only if hot tub temp is below a certain threshold, i.e. I do not need the hot tub to bounce between set points if tub is already at 102-103F.

Thanks again!
Scott

1 Like

Anyone found a way set/sync the tub’s clock without using the keypad on the tub itself?

Mine still hasn’t adjusted for the end of daylight savings time and has gained about 9 minutes. I don’t think I’ve had to do anything in past years to get it to adjust.

Probably related: Has anyone had problems with the gecko/in.touch communicating with Gecko’s servers?

Mine has a solid green light, which is listed as no internet access. I can see UDP packets for port 10022 going through the firewall to intouch.geckoal.com 13.68.99.102. But it looks like that host is returning an ICMP port unreachable.

The data in the packet from the gecko appears to be <PINGS>1</PINGS> but might be being sent to the wrong destination. The Home Assistant Gecko integration still works fine. Also the in.touch app on iOS still works fine on the local network.

I’ve tried power cycling the network side Gecko in.touch2 unit. Doesn’t seem to help. I haven’t tried powercycling the tub or trying to do a hard reset of the network unit (if there is a reset button).

EDIT/Update - digging into this a little more, the ICMP Port Unreachable response from intouch.geckoal.com doesn’t seem to ever make it back to the gecko/intouch unit. For some reason it looks like the gecko server is indicating in the ICMP response that the host response is coming from 10.0.2.4 rather than intouch.geckoal.com 13.68.99.102. The IP header on the ICMP packet has the right source/dest IP addresses, but the IP header inside of the ICMP response shows the src address as 10.0.2.4 instead of 13.68.99.102. So it looks like my router drops that because it doesn’t match an established connection.

(To be clear I’m not using 10.0.0.0/8 addressing anywhere internally. I think this might be the internal nat address for the gecko server, which isn’t getting corrected on the way back out.)

1 Like

In case this might help anyone else: I was able to work around my tub’s gecko in.touch2 unit not talking to the gecko servers and get the LED back to solid blue.

As mentioned above, the tub’s gecko unit was looking up the A record for intouch.geckoal.com. Contacting that server would result in an ICMP port unreachable that never made it back, possibly because the NAT wasn’t done correctly on the server side.

I was able to work around that by adding an entry to my router to return the IP address for intouch2.geckoal.com.

I know that’s a bit of a hack. Maybe the root cause is that my gecko unit missed an update. Maybe there is something misconfigured on the gecko cloud server end.

I did capture the request/response packets for doing a time sync to the Gecko server. At some point I need to see if by any chance the gecko unit will accept an unsolicited time response.

1 Like

I made a plugin to Home Assistant about a year ago to boost house heating based on Nordpool prices, GitHub - dala318/nordpool_planner: nordpool_planner custom component for Home Assistant

1 Like

I have an extra charge on my electricity bill, when I have a high peak consumption. I noticed that the Gecko intouch2 starts the circulation pump at random moments, which causes peak consumption when cooking, using the oven etc.
Is it possible to switch off the circulation pump with this integration?

I could then measure the power consumption and switch off the circulation pump if necessary.

I don’t think there’s a way to do that. The controller needs to run the circulation pump for a minute to measure the temperature periodically.

The connection to my spa has become unavailable. Unfortunately, I am away for the week to be able to reset the wifi modules (turn off/on). I can VPN to my router still see the itouch2 module and ping it as well. What I don’t understand is that my gecko integration will not start either nor the gecko app can see the spa. Typically if the connection becomes unavailable, the gecko integration is still available and I can press the “reconnect” button. Is there another way around to reset the wifi module remotely (web interface perhaps)?

Anyone know whether this integration works without an internet connection?

It does not. Everything is actioned via Gecko’s server.