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

Follwing this, as i have the same issues as most, “RuntimeError: Spa took too long to connect”
I have tried to extract the xml file from the dll ( via linQPAD and i get the same missing dll error even though it’s linked)

IF anyone has a new SpaPackStruct.xml ( older than v 19) would you be able to attach it to this forum?

I’ve been in touch with Gecko a few times. Their responses have ranged from “that’s interesting” through “we can’t do that” (yes you can, you’ve done it for voice assistants) to “that’s dangerous, don’t do it” and “we’re not interested, go away”. I think it’s time for me to give up trying and allow Alexa to do her bovine integer-only temperature routines. Better than nothing, I guess.

@Markymark did you mean older than v19 ? I’ve got which I extracted for someone a few months ago. Let me see if I can figure out how to attach it.

Please. That would be great. I did mean newer that v19, think I had one too many when writing this. But if I can try the XML it might still work.

With thanks to another maker who has managed to get InYT versions to work with the component, finally I have a dashboard for my spa. Heater control profile is based on the Octopus Go tariff in the UK which has 5p/kWh between 00:30 & 04:30

Nice! How did you get the presets in there ? and can you change it or does it just display what it’s currently set to ?

Here’s my dashboard :
snapshot35

I also have this in sensors.yaml to template the heat/cool states :

- platform: template
        sensors:
          hot_tub_heater_action:
           friendly_name: "Hot Tub Heater"
           unique_id: hottubheateraction
           value_template: >
              {% if   is_state_attr('climate.hot_tub_heater', 'hvac_action', 'idle') %} Temperature Reached
              {% elif is_state_attr('climate.hot_tub_heater', 'hvac_action',  'heating') %} Heater On
              {% elif is_state_attr('climate.hot_tub_heater', 'hvac_action',  'cooling') %} Heater Off
              {% else %} error {% endif %}
2 Likes

Automations with time-based helper entities. The idea is it heats the tub to 40 at the low tariff time overnight and then boosts for evening use in the event the tub cools too much.

- id: '1623171278655'
  alias: PM Setpoint Change High
  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: 38
  mode: single
- id: '1623171531114'
  alias: PM Setpoint Change Low
  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: 35
  mode: single
- id: '1623171765273'
  alias: Heat Boost On
  description: ''
  trigger:
  - platform: time
    at: 00:30
  condition: []
  action:
  - service: climate.set_temperature
    target:
      entity_id: climate.ducky_tub_heater
    data:
      temperature: 40
  mode: single
- id: '1623171829118'
  alias: Heat Boost Off
  description: ''
  trigger:
  - platform: time
    at: 04:30
  condition: []
  action:
  - service: climate.set_temperature
    target:
      entity_id: climate.ducky_tub_heater
    data:
      temperature: 36
  mode: single

The only problem I have is that the temperatures are fixed. Ideally, I’d like to set them with sliders, but I haven’t found a way to use anything other than a numeric value for ‘temperature:’ either in the UI or modifying the YAML. Just doing this temperature: ‘"{{ states(‘input_number.pm_on_temp’) }}"’ doesn’t work. Maybe I need a data template or something. YAML does my nut.

I think you have the wrong quotes

{{ states('sensor.entity_counter_input_datetime')}}

Works for me. Cutting and pasting your text doesn’t.

1 Like

That didn’t work for me, but this does:

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

Thanks for the sensors template. Given that the unit frequently returns errors which aren’t filtered by the climate platform, it’s a much cleaner way to log the values in InFluxDB.

Now with a jets control card
image

type: grid
cards:
  - type: picture-elements
    elements:
      - type: state-label
        entity: sensor.spa_temperature
        style:
          transform: translate(-50%, -50%) scale(3,3)
          left: 50%
          top: 50%
          color: cyan
      - type: state-icon
        entity: switch.ducky_tub_pump_1
        tap_action:
          action: toggle
        icon: mdi:pump
        name: Jets 1
        style:
          transform: translate(-50%, -50%) scale(2,2)
          '--paper-item-icon-color': white
          left: 6%
          top: 60%
      - type: state-icon
        entity: switch.ducky_tub_pump_2
        tap_action:
          action: toggle
        icon: mdi:pump
        name: Jets 2
        style:
          transform: translate(-50%, -50%) scale(2,2)
          '--paper-item-icon-color': white
          left: 20%
          top: 38%
      - type: state-icon
        entity: switch.ducky_tub_pump_3
        tap_action:
          action: toggle
        icon: mdi:pump
        name: Jets 3
        style:
          transform: translate(-50%, -50%) scale(2, 2)
          '--paper-item-icon-color': white
          left: 87%
          top: 45%
    image: /local/tub.jpg

Nice, did you see there is a PR in the repo - Pumps use FanEntity by los93sol · Pull Request #19 · gazoodle/gecko-home-assistant · GitHub - which should treat pumps as fans and slow hi/lo control ? I’m waiting for it to hit the integration (or might get impatient and try to drop it in manually :wink: )

Nice, did you see there is a PR in the repo - Pumps use FanEntity by los93sol · Pull Request #19 · gazoodle/gecko-home-assistant · GitHub - which should treat pumps as fans and slow hi/lo control ? I’m waiting for it to hit the integration (or might get impatient and try to drop it in manually :wink: )

Saw that, and also the comments from (github:@mikeboiko), that you need to update Geckolib as well for that to work.

Patching the custom component is pretty easy. Having to patch Geckolib is more annoying.

There is a way to pull a copy of a module used by a custom component into that directory, but I haven’t needed to do it in a long time, so I don’t remember the directory structure needed to pick up the module locally (vs. fetching from PyPi.)

I’m also looking at patching the STATP handling problem that (github:@maegibbons) discovered. For me it causes erratic current temperatures.

Is anyone seeing the target temperature not updating correctly if set from outside of Home Assistant?

Mine seems to be stuck at the value it was set at when Home Assistant started. I had used the iOS app to change the mode and temperature.

Reply from Gecko’s controls product manager:

Hi Richard, sorry for taking so long to reply and thanks for the feedback. I’m aware of the need to connect our system to home automation systems. I’m also aware an unapproved and unsupported library is circulating on the web to allow such a link. As you probably know, Gecko is an innovative company and we’re always looking for new product ideas and improvements. Our new product idea list is very long and our resources are not infinite. Yearly we discuss strategy and pick what we think are the best projects to work on. This past year has been incredibly occupied for us because of the huge spike in the spa market and the electronic components shortage. This had as a consequence of delaying new product developments. Unfortunately, this home automation connection feature still has not made the final cut. Believe me, I’m working on this and truly hope that it will make the cut in the short to medium term.

Gazoodle’s update changes pumps from switches to fans, which is great for those with 2-speed pumps.

I previous had toggles for the pumps, which I’ve replaced with input_booleans to trigger automations to set fan.set_preset_mode to OFF or HI.

This seems like a really clumsy way to do it, though. 6 automations and 3 booleans!

I guess I could make templates as well but that seems equally clumsy. Can anyone help with a better way to do it?

EDIT: With thanks to walterb65 on the github issues page, I used his js in custom:button-card in the picture elements card

  - type: custom:button-card
    entity: fan.ducky_tub_pump_1
    style:
      transform: translate(-50%, -50%) scale(.8,.8)
      left: 9%
      top: 63%
      opacity: 70%
    size: 60px
    show_name: false
    action: toggle
    tap_action:
      action: call-service
      service: fan.set_preset_mode
      service_data:
        entity_id: fan.ducky_tub_pump_1
        preset_mode: |
          [[[
           if (entity.state == 'off')
            return 'HI';
           else
            return 'OFF';
          ]]]

image

1 Like

So did everyone give up on a hardware hack on the CO port so the in.touch2 doesn’t need to be purchased?

EDIT: i thought maybe it could be PoE

Anyone have any ideas how I can expose pump 3 for my swim spa? Everything else is working great.

Hi ashley. based on the rest of this thread - i assume a hardware hack was abandoned?

I am still interested, but I think if I let the magic smoke out of my spa controller I’ll break any WAF on doing electronics EVER AGAIN.