ok i got the integration working now.
Nice !
I’m trying to make it in a nice dashboard view now.
I’m using a picture glance card.
Is it possible to have at the bottom left, the current temperature? and the set point temperature?
ok i got the integration working now.
Nice !
I’m trying to make it in a nice dashboard view now.
I’m using a picture glance card.
Is it possible to have at the bottom left, the current temperature? and the set point temperature?
This one is a picture elements card. 3 jet pumps can be switched on and off using the pump symbols. Snowflake and fire symbols set the low and high setpoints, respectively. Shows the current temp and setpoint.
Can you share the code please?
I’m also looking for a way to integratie to turn on music on the spa using HA
type: picture-elements
elements:
- type: custom:button-card
entity: climate.ducky_tub_heater
style:
transform: translate(-50%, -50%) scale(0.8,0.8)
left: 70%
top: 90%
opacity: 70%
size: 60px
show_name: false
icon: mdi:snowflake
color: cyan
action: toggle
tap_action:
action: call-service
service: climate.set_temperature
target:
entity_id: climate.ducky_tub_heater
service_data:
temperature: 36
- type: custom:button-card
entity: climate.ducky_tub_heater
style:
transform: translate(-50%, -50%) scale(.8,.8)
left: 27%
top: 90%
opacity: 70%
size: 60px
show_name: false
icon: mdi:fire-circle
color: orange
action: toggle
tap_action:
action: call-service
service: climate.set_temperature
target:
entity_id: climate.ducky_tub_heater
service_data:
temperature: 39
- 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';
]]]
- type: custom:button-card
entity: fan.ducky_tub_pump_2
style:
transform: translate(-50%, -50%) scale(.8,.8)
left: 25%
top: 36%
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_2
preset_mode: |
[[[
if (entity.state == 'off')
return 'HI';
else
return 'OFF';
]]]
- type: custom:button-card
entity: fan.ducky_tub_pump_3
style:
transform: translate(-50%, -50%) scale(.8,.8)
left: 85%
top: 44%
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_3
preset_mode: |
[[[
if (entity.state == 'off')
return 'HI';
else
return 'OFF';
]]]
- type: state-label
entity: climate.ducky_tub_heater
attribute: temperature
name: Heater
style:
top: 90%
left: 48%
prefix: 'Setpoint '
- type: state-label
entity: sensor.spa_temperature
style:
transform: translate(-50%, -50%) scale(3.5,3.5)
top: 50%
left: 48%
size: 50%
image: /local/tub.jpg
style: |
ha-card {
background-color: var(--primary-background-color);
border-radius: 25px;
margin: 15px;
box-shadow:
-4px -4px 8px rgba(255, 255, 255, .5), 5px 5px 8px rgba(0, 0, 0, .03);
}
Thx will see if i can make something like that
How did u get the sensor.spa_temperature
Templates
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
I’m posting my card soon as well.
Do you know how i get a black transparant horizontal box at the bottom of my card (containing elements) ?
Like with the picture glance card (at the bottom) ?
Also how do i add just text as an element?
Honestly, if you’re going through that much effort, just eliminate the Gecko stuff completely. Your creating more work and complexity by leaving it. And you’re already bypassing all the safety features it has built-in anyway, with your method, if I understand it correctly.
I’ve built a custom spa controller from scratch before in the past running off of a Pi. Please be safe. I don’t know how familiar you are with electronics but you should probably research how the different safety and limit switches work and integrate that into your design. You don’t want home assistant exclusively controlling something that costs thousands of dollars and has the potential to physically hurt you.
I’ve been wanting to get to grips with direct RS485 connection to the gecko unit almost since the day I got my spa, and due to various circumstances I recently got my hands on a dead screen module and cable.
So I’m hoping I can now start helping with the reverse engineering project. Is there anyone following this thread who has been / still is working on it? I have an electronic engineering background and some small amount of reverse engineering experience, but it’s all pretty rusty. It would be good to compare notes with anyone who has already started down this path. Please DM me if you’re willing to work together!
Howdy! Yes, finding the time is always the challenge
It’s still on my projects list, but DM doesn’t work for me as I won’t have time for things at the same time as you, and the information gets “trapped” in the conversation instead of being out where anyone can benefit or chip in as things come up.
I like the idea of discussing work here, or if there’s too much detail, whacking it up on a github or blog page and linking from here for more detail. Or perhaps a different thread should be started for the reverse-engineering discussion if it’s too noisy for this thread, since lots of folk are probably interested in the higher-level functionality only, rather than digging around in the details.
What would be super handy to start with are high-resolution photos of the circuit boards, so that people have the option of tracing layouts and starting to reverse-engineer some of the circuits. Of course not everyone has the gear or experience perhaps to take suitably hi-quality photos, but they are a really helpful starting point.
I have some of the in.touch2 but they’re still in raw format, haven’t got around to processing them yet, but will share them here when I have. This will get us started with a reasonable idea of the pin-outs at least, which might help others get into snooping the comms.
Glad to hear there is on-going interest though, I certainly am keen, I just have to balance which projects I can put time into, and Bermuda is taking up a lot of my me-time currently.
Hi everyone! I recently bought a Buenospa (Wellis) Chicago hot tub, which has a single, two-speed pump. It came with a basic 4-button Gecko controller. I set it up so that the spa is in Eco mode until mid-afternoon, after which it warms to the set temperature for use in the late afternoon/early evening, returning to Eco mode later in the evening, cooling until the next afternoon. This worked without any problems.
As part of my purchase deal, I was later sent an in.touch 2 system, which I installed and got connected and running without too much fuss. I created a Water Care program to achieve the same cooling/heating timings as before. There were glitches, some of which I traced to a bad breaker, now resolved. But a problem remained, where the system would drop out of Eco mode, seemingly at random, leading to unneccesary heating.
In the process of troubleshooting, I got interested in Home Assistant, which I never used before. I installed HA OS on an old laptop, HACS, file editor add-on, and gazoodle’s fine integration. A bit of a learning curve, but I got everything working. I implemented my control strategy by simply creating automations to set the temperature to the desired value at the desired time. This avoids the ongoing problem of losing Eco mode.
HA revealed that occasionally the temperature reading spikes down to 32 deg F. It is not clear to me why - hardware, Gecko controller, in.touch, or other? When this happens, it seems there is a panic (winter mode?) which kicks it out of Eco mode. I read here and on Github that others have the same issue. In addition, yesterday I got an “OverTemp” error while everything is normal. I am not sure whether these two issues are related.
I have also seen the same behaviour as others, that unless a Water Care program is selected in the Gecko app, the HA integration will fail. I use the standard Water Care option, with no Eco times, and one filter cycle. If I block in.touch from internet access, the Gecko phone app stops working, but the HA integration is still ok.
So I am very happy with my setup! Thank you @gazoodle and other contributors. But I do have a wish list, in order of priority:
Device info
inYJ 605 v3.0
by Gecko Alliance
Firmware: SpaPack:v36.01 Config:62 Log:59
Hardware: EN:70 v14.0 CO:69 v11.0
Home Assistant
Core 2024.5.5
Supervisor 2024.05.1
Operating System 12.3
Frontend 20240501.1
You’re on the right track. You can do 1. with a service call. The syntax is typically mangled for Home Assistant. Here’s my instance to toggle the pump on and off.
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';
]]]
I have HA in ‘dark mode’. Just prefer it that way.
Here’s the YAML for the whole hot tub page:
- title: TUB
path: ''
icon: mdi:hot-tub
badges: []
cards:
- type: picture-elements
elements:
- type: custom:button-card
entity: climate.ducky_tub_heater
style:
transform: translate(-50%, -50%) scale(0.8,0.8)
left: 70%
top: 90%
opacity: 70%
size: 60px
show_name: false
icon: mdi:snowflake
color: cyan
action: toggle
tap_action:
action: call-service
service: climate.set_temperature
target:
entity_id: climate.ducky_tub_heater
service_data:
temperature: 36
- type: custom:button-card
entity: climate.ducky_tub_heater
style:
transform: translate(-50%, -50%) scale(.8,.8)
left: 27%
top: 90%
opacity: 70%
size: 60px
show_name: false
icon: mdi:fire-circle
color: orange
action: toggle
tap_action:
action: call-service
service: climate.set_temperature
target:
entity_id: climate.ducky_tub_heater
service_data:
temperature: 39
- 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';
]]]
- type: custom:button-card
entity: fan.ducky_tub_pump_2
style:
transform: translate(-50%, -50%) scale(.8,.8)
left: 25%
top: 36%
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_2
preset_mode: |
[[[
if (entity.state == 'off')
return 'HI';
else
return 'OFF';
]]]
- type: custom:button-card
entity: fan.ducky_tub_pump_3
style:
transform: translate(-50%, -50%) scale(.8,.8)
left: 85%
top: 44%
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_3
preset_mode: |
[[[
if (entity.state == 'off')
return 'HI';
else
return 'OFF';
]]]
- type: state-label
entity: climate.ducky_tub_heater
attribute: temperature
name: Heater
style:
top: 90%
left: 48%
prefix: 'Setpoint '
- type: state-label
entity: sensor.spa_temperature
style:
transform: translate(-50%, -50%) scale(3.5,3.5)
top: 50%
left: 48%
size: 50%
image: /local/tub.jpg
style: |
ha-card {
background-color: var(--primary-background-color);
border-radius: 25px;
margin: 15px;
box-shadow:
-4px -4px 8px rgba(255, 255, 255, .5), 5px 5px 8px rgba(0, 0, 0, .03);
}
- type: thermostat
entity: climate.ducky_tub_heater
name: Heater
- type: custom:mini-graph-card
icon: mdi:hot-tub
name: Hot Tub Temperature
entities:
- entity: sensor.spa_temperature
name: Temperature
- entity: sensor.spa_setpoint
name: Setpoint
hours_to_show: 24
points_per_hour: 6
- type: entities
entities:
- entity: button.ducky_tub_reconnect
name: Reconnect
- entity: sensor.ducky_tub_error_s
name: Error(s)
- entity: sensor.ducky_tub_rf_channel
name: "RF\_Channel"
- entity: sensor.ducky_tub_radio
name: RF Signal
- entity: sensor.ducky_tub_status
name: Status
title: InTouch 2 Module
- type: entities
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
Thanks Richard, let me study the code and try to make sense of what is what. I’m still coming to grips with HA terminology, like cards, devices, entities, plus the Python part (I am a Fortran guy from waay back).
I’m presently traveling away from home, so reluctant to make too many changes, in case I am not able to recover from a mistake. But I’ll let you know how I get on.
I’m a Forth guy from way back I’m hopeless with object-oriented languages and YAML is bonkers inconsistent.
I’ve learned nothing about syntax {{{ [[[ embedding javascript/json/etc in YAML. I’ve just copied other people’s similar stuff and made do. I don’t pretend to know how it works!
Hello everyone,
I have just come across your topic and I would be interested in connecting my swim spa with HA.
Before buying an In Touche 2 I would like to know if I can activate the circulation pump or not?
My idea is to optimise filtration with an automated filtration time depending on the temperature.
Thank you for your feedback.
Another FORTH guy. Amazing!!!
It varies according to your configuration, but you can set the filtration time on the app or keypad very easily.
On my spa, the filter is part of the standard circulation, so it filters whenever heating or measuring the temperature. I don’t set a separate filter schedule as it does enough heating to get good filtration.
I can trigger the circulation pump, but it shuts off automatically after 20 minutes. However, it will run the pump whenever the lights are on - I guess this is a feature rather than a bug. They also turn off but after more than an hour. Not sure how long actually.
Anyhow, short answer: yes
Thank you for your feedback @RhinoRich .
So with the In Touch 2 and HA integration I’ll be able to activate or deactivate the filtration pump without using a contact module?
Below is my dashboard