Salus UGE600 integration

I noticed in these threads that more than me is using Salus Thermostats.
Bounty to develop Salus device - :bellhop_bell: Get Help / Devices - Hubitat
Salus IT600 - :bellhop_bell: Get Help / Apps - Hubitat @alex9

After the Salus Premium Lite migration killed the old local API on my UGE600 gateway (firmware dated June 2025), I used Claude to build a working Hubitat integration that goes via the Salus cloud. Posting this in case anyone else is stuck.

Peterka35's excellent salus-it600-cloud project for Home Assistant showed that the Salus cloud API is still reachable and reverse-engineered. It uses:

  • AWS Cognito SRP authentication with your Salus app email/password
  • AWS IoT Core MQTT over WebSockets (SigV4 signed) for sending commands
  • REST API at service-api.eu.premium.salusconnect.io for reading state
  • Device shadows for commands like setpoint changes

Since Hubitat's Groovy sandbox cannot practically implement SRP or AWS IoT MQTT directly, I wrote a tiny Node.js proxy that runs on a Windows PC on my LAN. The proxy handles all the AWS complexity and exposes a simple HTTP endpoint that a Hubitat driver can POST plain JSON to.

What it does

  • Discovers all thermostats across all gateways on your Salus account
  • Reads temperature, setpoint, humidity, battery, heating state, hold type, system mode
  • Writes setpoint, hold type (schedule/manual/away), system mode
  • One child thermostat per device in Hubitat — native thermostat tile
  • Works across multiple gateways (I have two)

Constraints and tradeoffs

  • Needs an always-on PC/Pi/NAS on your LAN to run Node.js — no way around this for Hubitat because Groovy cannot do SRP+MQTT in its sandbox
  • Not local — it's going via AWS us-east-central-1 now. If Salus shuts the cloud, it stops working
  • Credentials stored in plain text in the proxy config — set file permissions appropriately
  • Limited to heat-only mode — I didn't implement cooling/fan-coil because I don't have those devices

Credits

  • Peterka35 — reverse-engineered the cloud API protocol, massive heavy lifting on the Cognito and IoT flows

You can find the files and instructions here:

mrcobra/Hubitat-Salus-UGE600-Cloud-integration