Skip to content

feat (devices): add Aquastrong heat pump#4716

Open
zackify wants to merge 4 commits intomake-all:mainfrom
zackify:device/aquastrong-heat-pump
Open

feat (devices): add Aquastrong heat pump#4716
zackify wants to merge 4 commits intomake-all:mainfrom
zackify:device/aquastrong-heat-pump

Conversation

@zackify
Copy link
Copy Markdown

@zackify zackify commented Mar 19, 2026

Description

Adds support for the Aquastrong heat pump pool/spa heater. Used claude to debug, fully tested in HA and with cli as well. Thankfully there was a similar device partially working so it was easy to debug.

Device Details

Datapoint Mapping

DP ID Type Mode Entity Description
1 boolean rw hvac_mode / binary_sensor Power on/off
2 string rw work_mode / select Mode: make_hot, make_cold, auto
4 integer rw temperature Temperature setpoint (5–105°F)
5 string rw preset_mode Preset: ECO, Normal, Boost
13 string rw select Heat curve (OFF, H1–H8, L1–L8)
14 integer ro sensor EEV opening (steps)
16 integer ro sensor Current draw (÷10 = amps)
20 integer ro sensor Compressor frequency (Hz)
21 integer ro sensor / current_temperature Inlet temperature (°F)
22 integer ro sensor Outlet temperature (°F)
23 integer ro sensor Coil temperature (°F)
24 integer ro sensor Discharge temperature (°F)
26 integer ro sensor Ambient temperature (°F)
27 boolean ro hvac_action Running/idle state
31 boolean ro binary_sensor Backflow problem
33 boolean ro binary_sensor Defrost active
35 integer ro sensor High pressure (psi)
37 integer ro sensor Indoor coil temperature (°F)
38 integer ro sensor Water heater current temp (°F)
40 integer ro sensor Fan motor frequency (Hz)
41 integer ro sensor Suction temperature (°F)

Implementation Notes

  • This device uses non-standard mode strings: make_hot, make_cold, auto — different from the similar SolarEast/Adlår Castra Aurora II which uses heating, cold, floor_heating, etc.
  • All temperatures are reported in Fahrenheit natively. The original Aurora II config assumed Celsius, which caused double-conversion (e.g., setpoint 75 displayed as 167°F).
  • No built-in power/voltage/energy metering (DPS 102–105 report 0). Current draw is available on DPS 16 (÷10 scale). Users can compute watts via an HA template sensor (current × 240V) and track energy with a Riemann sum integration helper.
  • No hot water, floor heating, or compound modes — this is a simpler unit than the Aurora II.
  • DPS 35 is high-side refrigerant pressure in PSI, not temperature (378 PSI is typical for R410A).
  • Tested locally with tinytuya over protocol 3.4 (port 6668). All DPS values and mode switching verified on real hardware.

Local DPS Log

{
  "dps": {
    "1": true,
    "2": "make_hot",
    "4": 95,
    "5": "ECO",
    "10": 0,
    "11": "OFF",
    "13": "OFF",
    "14": 132,
    "15": 0,
    "16": 145,
    "18": 0,
    "20": 30,
    "21": 68,
    "22": 68,
    "23": 56,
    "24": 66,
    "25": 0,
    "26": 55,
    "27": true,
    "31": true,
    "33": false,
    "35": 378,
    "36": 0,
    "37": 64,
    "38": 68,
    "39": 0,
    "40": 54,
    "41": 52,
    "101": 50,
    "102": 0,
    "103": 0,
    "104": 0,
    "105": 0,
    "106": 0,
    "107": -58,
    "108": 0,
    "109": 0,
    "110": 0,
    "111": 0,
    "112": 0
  }
}

Mode Testing Results

Verified by setting DPS 2 and reading back:

Sent Device returned Accepted
make_hot make_hot YES
make_cold make_cold YES
auto auto YES
heating (ignored) no
cold (ignored) no
heat (ignored) no
floor_heating (ignored) no
hot_water (ignored) no

Add device config for Aquastrong heat pump (product ID: g9m7honkxjweukvt).

Modes: make_hot, make_cold, auto
Temperatures reported in Fahrenheit.
Includes climate, current draw, compressor/fan frequency, EEV opening,
high pressure, and multiple temperature sensors.

Amazon: https://www.amazon.com/dp/B0DRV95LP5

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-project-automation github-project-automation bot moved this to 👀 In review in Tuya Local Mar 19, 2026
@make-all make-all moved this from 👀 In review to 🏗 Stalled in Tuya Local Mar 19, 2026
zackify and others added 2 commits March 19, 2026 14:21
Add force: true to DPS 16, 21, 22, 26 so tuya-local actively
polls these values even when the device is off. Without this,
temperature and current readings go stale after power off.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@zackify
Copy link
Copy Markdown
Author

zackify commented Mar 19, 2026

So... I was tweaking it because it all worked perfect, accept nothing updates when its off, i was wanting to use its temp sensor which works when its off through the tuya cloud app.

lots of debugging later there is a device level cache / it just returns old values until you turn it on and off. at least control works fully.

@make-all make-all moved this from 🏗 Stalled to 👀 In review in Tuya Local Mar 20, 2026
@make-all make-all moved this from 👀 In review to 🏗 Stalled in Tuya Local Mar 21, 2026
@zackify
Copy link
Copy Markdown
Author

zackify commented Mar 23, 2026

Aha, found a way for people using this to make it update sensors. even when on it doesnt update inlet / outlet data.

this annoying device sends stale data even when its screen has an update, unless you write a set temp to it

 No stress at all — it's just sending a tiny TCP packet with the same value that's already set. No relay
  switching, no compressor action, nothing physical changes. Same as tapping the temperature button in the app
  without actually changing it.

  You can set it up in the UI:

  Settings → Automations → Create Automation → Create new automation

  1. Trigger: Time pattern → Minutes: /1
  2. Action: Call service → climate.set_temperature
    - Target: your heat pump climate entity
    - Temperature: {{ state_attr('climate.aquastrong_heat_pump', 'temperature') }}

  Or if you prefer YAML, add to automations.yaml:

  - alias: "Refresh heat pump sensors"
    trigger:
      - platform: time_pattern
        minutes: "/1"
    action:
      - service: climate.set_temperature
        target:
          entity_id: climate.aquastrong_heat_pump
        data:
          temperature: "{{ state_attr('climate.aquastrong_heat_pump', 'temperature') }}"

this integration is ready to go, not sure if this should get included built in to my pr or not.

@zackify
Copy link
Copy Markdown
Author

zackify commented Apr 6, 2026

Anything needed here to have this merged?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🏗 Stalled

Development

Successfully merging this pull request may close these issues.

2 participants