What is this repo?
It's a way to locally read and control Ochsner heat pump settings via Home Assistant, allowing you to access all the same settings and values as the OTS app, all without Modbus or Cloud services required.
Prereqs:
- HACS is installed in Home Assistant.
Steps:
- In Home Assistant, go to HACS -> Integrations.
- Open the menu (top right) Custom repositories.
- Add this GitHub repo URL and set category to Integration.
- Search for Ochsner Local OTS - Climatix Generic in HACS and install.
- Restart Home Assistant.
Copy this folder into your HA config directory:
custom_components/ochsner_local_ots/
After that restart Home Assistant.
Steps:
- Add a new integration via the HA UI
- Search for Ochsner Local OTS
- Enter your Ochsner OTS Credentials (they are not stored, they are just needed to retrieve the configuration from the cloud once)
- Select which Heatpump you want to add (in case you have multiple)
- Enter your local Heatpump IP Address (this is displayed inside your Heatpump settings. Make sure to assign it a fixed IP address in your internet router.)
- Enter a Name for your Heatpump
- Click finish - This could take a few seconds while all the available values are automatically scanned and then imported.
- Done!
Instead of interacting with the heat pump over the Interface that is offered via ModbusTCP which is very undocumented and allows you to only read some values and control almost nothing, this one uses the JSON Interface that the OTS App itself uses to communicate with the heat pump (which is even less documented since it is entirely reverse engineered), except it runs entirely locally!
The local API offers an interface that allows you to read and write almost any parameter, as long as you know its ID, which can be found by downloading and parsing the configuration bundle of your heatpump from the Ochsner Cloud.
Luckily, the newest version does all of this automatically, so the python tool is no longer needed, and all you need to do is install the Integration into Home Assistant, and enter your OTS credentials once! The OTS Cloud is only required for initial setup. Once the integration has downloaded your config file, the integration works entirely local, no matter what happens to the Ochsner cloud in the future.
This has been tested and confirmed working so far with:
- Air Hawk 518
- Air Hawk 208
- Air Falcon 212
However, it is plausible that it could work with any Ochsner Heat Pump that uses the OTS app.
This project is not affiliated with or endorsed by Ochsner. It is simply a hobby project based entirely on reverse engineerecd information.
Tread with caution when changing random values, make sure you know the exact value you are trying to change and have correctly identified it. For the most part, the integration mostly seems to correctly parse the minimum / maximum for every value and map that to the UI so you can't set any temperature ranges that the heatpump wouldn't allow, but there are also some settings here which appear to be hidden in the app, and I have no idea what their effects might be if you try to use them.
Also of note: The settings are saved inside the Siemens Climatix Controller inside the heatpump and that uses Flash storage - which means it has a limited number of erase cycles before the chip fails. Siemens documentation seems to claim this is at 100k (100,000) write cycles. Therefore, if you plan not to just make controls available to the UI but also automate some settings, calculate a rough estimate of how many write cycles this would cause in the worst case and ensure that over the lifetime of your heatpump you stay below that total number of writes. For example: an average of 10 writes per day would last you 30 years for the rated lifetime of the flash chip. But, of course if you only control the heatpump for the most expensive 4 months of the year, you get up to 30 writes for each of those days.
The integration offers a Flash Counter value that automatically keeps track of the total number of writes you issue against the heat pump controller, so if you automate anything, keep an eye on that number.
This was entirely reverse engineered from the app using AI. There are a lot of redundant code segments and strange hacks that the AI implemented in order to find the correct values / descriptions, but I don't have the time or energy to properly re-develop this by hand. If you find any issues, feel free to make a PR.