Unlocking the aquarium chiller black-box: Industrial Controller Transplant and 100% local control with full telemetry

TL;DR: - After getting tired of the black box - I gave my chiller a brain transplant by replacing the controller with a commercial refrigeration model with wifi and then integrating it into Home Assistant with complete local telemetry and control via Tuya-Local.

Hi Everyone - First post here and hopefully I picked the right area to post this in!

I have recently been working on a project that uses a water chiller and quickly realised that the options on the market are shockingly awful in terms of units that can actually be controlled and monitored remotely and the very few that exist seem to be overpriced and outright hostile to HA integration. I wanted to see if I could do better as far too many people in the aquarium, brewing and hydroponics world have been forced to accept chiller with zero logging and control for far too long

The short wins list:
Super cheap:
it’s ~$50
Almost “Plug & Play”: If using a generic chiller
Source of truth: Moves the temperature source to the actual sump / tank / reservoir for better precision, more stable temps & reduces short cycling for a longer chiller life.
Complete local control: In depth chiller monitoring and control from Home Assistant locally. No more crappy apps and “use our cloud only”.
Precision & reliability: Much better precision than most factory chiller controllers, fully adjustable and will continue to work even without Home Assistant or network connectivity.
Predictive maintenance/health monitoring: Track compressor duty cycles and run times to spot efficiency drops before the tank temperature moves. The feedback from this controller in Home Assistant means you can have the system recognise issues immediately if the chiller is not functioning as expected, shut it down and alert you.

Standard Warning: This project involves working with mains power devices. If you do not know the difference between active, neutral, and ground or if your standard electrical safety protocol involves crossing your fingers, please do not attempt this. Letting the magic smoke out of a compressor is bad, however letting it out of yourself is worse. Attempt this at your own risk and remember each chiller make and model is different and yours may look entirely different to this one internally but the core concepts are the same.

The Goal: I was tired of the black box approach to chillers and wanted a way to control and more importantly monitor my chiller. To be honest the offerings off the shelf are not only absolutely terrible for monitoring but are also criminally overpriced for what you get when looking at “smart” models. I also wanted to be able to detect and prevent issues particularly because I have automated powering the pump for the chiller loop on demand to save power and noise in my particular circumstance and would hate to freeze and pop a heat exchanger.

The Hardware: The generic “Shanhuchong Y-160” 1/10hp R134a chiller that I purchased as a test unit turned out to be surprisingly effective and quiet. Instead of replacing it with a a Teco chiller with Wi-Fi and trying to deal with integrating it into Home Assistant, I decided to attempt to “un-lobotomise” the generic chiller and opened it up to look inside to see if I could give it some brains back.

I was greeted with a very simple off-the-shelf compressor unit, a titanium based heat exchanger, two 240V fans, and a generic 71x29mm STC-1000 knockoff controller. Examining the wiring, the factory setup was extremely basic. It took an NTC sensor installed inside the heat exchanger as the only temperature input, L+N 240VAC in and had a simple relay output for connecting 240V to the compressor. All the wiring was actually surprisingly neat and well done for a generic unit, featuring nicely done ferrules and a very clear wiring diagram on the controller chassis.


The original controller

The Swap: A bit of research later and I found the Elitech ECS-974T panel mount temperature controller on AliExpress. This 71x29mm controller form factor is used by most generic aquarium chillers and is the absolute standard in commercial refrigeration. Major brands like Hailea and Teco use their own custom controller formats so this would not be a slot in job on those however the controller certainly can control them. If you are willing to get creative with a Dremel or an external enclosure for the controller and extending the wiring it’s absolutely a doable thing if you’d like the best of both worlds with a premium chiller and the brains to back it.

Less than $50 and a week later the unit arrived. I took to removing the existing controller, slotting in the new one, and rewiring to suit.


Like a glove!

The biggest wiring change involved running one of the 2M long NTC probes that came with the new controller out of the chiller cabinet so that the probe could be located directly in the tank. This allows for actual live temperature monitoring of the tank itself and drives the compressor based on the load temps in there rather than the heat exchanger water temp. This alone makes the system much more reliable and precise as it prevents the short cycling that you can get with chillers using their internal temperature as the trigger.

I then proceeded with double heat shrinking and cable tying the spare 240V jumper wire. The ECS-974T passes power directly to the compressor relay output from the main unit supply, rather than needing two separate live wires like the old controller. Another big advantage is that compared to the 10A relays in most generic controllers , the ECS-974T uses a larger 16A compressor relay in the 240V model and a 30A in the 110/120V one so you have a lot less chance of a welded or stuck relay.

The final wiring change was testing the existing factory NTC sensor in the heat exchanger and after confirming it was compatible with the ECS-974T, wiring it into the secondary “evaporator” temperature input on the new controller.


Wired in and ready to go

The Fail-Safe: Wiring in that existing temperature probe gives the system the ability to monitor the heat exchanger completely independently of the tank water probe. This opens the door to setting up automations that force the chiller to stop if the exchanger temps get too low due to a blockage or a pump failure, rather than just running blind, freezing and bursting the titanium heat exchanger. $50 to control and peer into what is actually happening inside your chiller is great but peace of mind of being able to avoid $5k of dead coral & cooked fish (or pythium :wink:) and a flooded floor is awesome ROI by itself.

If you are using a separate chiller only pump - another great feature you can leverage is using the controller's fan relay output to run the pump on demand with the compressor and if you also jumper its defrost relay to the fan output and adjust the defrost settings to trigger a 3 minute defrost every hour or two like I do in my setup - it will run the pump to prevent water stagnation. This does require some additional wiring not highlighted visually in this guide as I wanted to try and keep the complexity down but if you are in the position of wanting to do this you are probably at the level that will find that task fairly easy.

It also allows for delta monitoring to see exactly how quickly the temperature is changing across the loop and flag if there is a problem or if the system is not being efficient and needs a flush and clean. The existing sensor needed a 0.5c calibration offset to match what I was seeing during bench testing, and the new controller made dialing that in a snap.

A Side Note on Precision vs Longevity: This controller always reports temps to the nearest 0.1 degree and does support down to 0.1 degree hysteresis settings, however actually setting the hysteresis that fine might be an issue depending on the thermal mass of the fluid you are trying to chill, your rate of heating and your chiller. If you set it too low the chiller will cycle like crazy, causing a lot of wear and tear needlessly due to most wear happening during compressor start-up. This kind of short cycling is a common flaw in cheap chiller controllers that this swap was designed to help avoid so don't bake it back in. I suggest sticking with 1.0 or 0.5 degree as your hysteresis setting if you can to help avoid needless compressor cycling and making sure your compressor delay is set to at least 3 minutes.

The Software (Dropping the Cloud): The next bit was likely the hardest but most important. I needed to be able to control and monitor this setup locally without needing to deal with the Tuya cloud. That meant sitting down and completely reverse engineering the controller’s settings and sensors, then writing up a massive 550+ line device config for Tuya-Local (available via HACS) in order to allow complete local control.

The device has 36 data-points. This is massive for most Tuya devices (most smart plugs have 5 to 8, and even most smart thermostats have 10 to 15). It took a significant chunk of a weekend to get working well with all controls exposed. Props to Elitech as the included paper manual actually went into a decent amount of depth on most of the various functions and even their acceptable numeric ranges. Having well written and actually useful documentation with a bit of generic hardware was a very welcome surprise and I wish it happened more often.

After I got this working, I polished the result and submitted it as a pull request to the Tuya-Local GitHub. It has been merged and is in the current release so everyone else can use it. The PR can be found here.

Here are some shots of my very much work in progress settings and status dashboard - be gentle, I know I suck at making pretty cards!


Some of the settings exposed


Chiller status


Health tracking graphs

Conclusion: This $50 mod to a $250 chiller ended up giving me far better telemetry and control abilities than a $1500 Teco chiller with their $299 wifi adapter and rivals functionality only found on $5k+ commercial or lab chiller systems. It gives incredible data & complete remote control over advanced aspects like the hysteresis range, compressor delay and temperature probe calibration offsets all from the comfort of Home Assistant and does so locally.

I am incredibly happy with the results. This is a highly impactful, cheap hardware hack that most people here could pull off with very little effort on the electrical side, as the physical swap is almost plug-and-play with a generic chiller.

I’m more than happy to answer any questions that anyone has on this, let me know what you think!

1 Like

Advanced addendum for “on demand” dedicated chiller pump triggering
AKA “How to reduce equipment wear, noise, save power and stop heat being dumped into your system needlessly”

Pumped up on demand:
If you are in the position of using a dedicated chiller pump, running it 24x7 is pointless and inefficient if the chiller is being driven by an external probe. The reason this is mandatory with almost all factory chillers is that the chiller measures temperature only at the water in the heat exchanger and needs the pump flowing all the time for that to function.

If you have moved the main temperature load source into the tank or reservoir as this mod outlines this is no longer necessary and opens the door to saving a heap of wear on your chiller pump, saving power and noise along with the double bonus of reducing heat literally being pumped into the system so the chiller doesn’t have to then cycle to remove it!

This can be done using the “Fan” output on the Elitech ECS-974T and altering the “fan on with compressor” setting to drive the fan output (pump) only when the compressor is working. The picture below shows the wiring logic and the most complicated part is providing a neutral connection for the pump output and that will likely require a splice or connector to easily do. I would suggest using an appropriate “Wago” type lever connector for ease of installation and if you want to be able to return the chiller to factory later on without too much effort.


Wiring guide

The neatest and easiest way to pass the power output to the external pump is using a small cable gland to pass a cable with a female extension outlet through the case so you can directly plug the pump into that. A chassis mount power outlet would be even neater and more professional, however its a step up in install effort and requires a big chunk of freely available space on the case.


Cable Gland Installed

Required warning:
This power output draws from the same power supply as the chiller (of course!) and the “Fan” relay output on these controllers is smaller too (8A), you need to be careful to ensure you are only using this to power a smallish pump and I would suggest that you try to keep the pump to under 200W if you can which should be plenty for even the largest consumer type chillers. Another trap if using a premium brand chiller is that the unit may have a flow switch that might need bypassing to power the unit on with no pump flow. Make sure you set up an automation in Home Assistant or Tuya to shut off the chiller if the heat exchanger temperature falls to near freezing!

Stagnation - Going With The (no) Flow:
Running the chiller only on demand introduces another issue in relation to stagnation as it will result in a quantity of water sitting in the chiller loop and a heat exchanger tank for however long between cycles.
This can be addressed in a safe, hardware backed way using the controller’s native defrost function and involves jumpering the “defrost” output to the “fan” one running the pump along with altering the following settings:

  1. Defrost type: Electric
  2. Defrost Trigger: Real or clock time (depending on firmware version)
  3. Defrost Interval: 1 or 2 hours
  4. Defrost Time: 2 or 3 minutes

Results:
In testing this not only cut down on noise but also extended the time between chiller cycles by around 20% as the chiller pump was actually a big contributor to the heat load in the system. Looking at the data, this ends up saving about 354.4 kWh per year or about $105 a year between the pump and additional chiller loads to deal with it based on local power prices. The reduction in cycling should increase the life of the chiller considerably as well as the pump due to reduced run time of more than 80%.

And that leads to another point!

AC/DC - Dirty Deeds Done DC:
The above figures were what happens when using an already efficient DC pump, if you are using a traditional AC water pump for your chiller loop it really blows the numbers out - in fact they could be almost double in terms of savings.

I highly suggest using a "Sine Wave" brushless DC pump if you can as these are really energy efficient, stunningly quiet and likely very long lived doing this kind of work. Jebao DC pumps like the MDP series are really cost effective examples of this kind of pump and will happily resume running from previous settings when power is restored.

Would love to hear if anyone is interested in or actively attempting this mod!