Argon One Active Cooling and Active Linear Cooling Addon

Currently only v1 and v2 are supported. V3 is not supported.


Open your Home Assistant instance and show the dashboard of a Supervisor add-on.
image

This is an addon for Argon One in Home Assistant. It’s essentially a script that runs in a docker container. It enables and automates the Argon One Active Cooling System with your specifications.

Know your options

There are two addons to choose from Active Cooling, and Linear Active Cooling. I advise not using both at the same time as they will attempt to fight each other for control over the temperature of the device. Select the one you want. Here are the differences.

Argon One Active Cooling

This Addon emulates the stock Argon One scripts. There are three temperatures. Low, medium, and High. With QuietProfile off, the fan operates at 33%, 66% and 100%. With QuietProfile turned one, 1%, 3% and 100%

Argon One Active Linear Cooling

This Addon uses an algorithm contributed by byod0, to determine the appropriate cooling level based on a linear scale from Minimum Temperature to Maximum Temperature. The fan will turn on at the Minimum Temperature, and hit 100% when at or above the Maximum Temperature.

Installation

Within Home Assistant, click Supervisor-> Add-on Store → … button (in top left)-> Repositories. Add this repository.

Click ArgonOne GitHub - adamoutler/HassOSArgonOneAddon: A Home Assistant Addon for Argon One Fan Control. and install.


This addon is configured as a pre-made docker image, so it downloads very quickly. when it’s time to upgrade, the upgrades are supplied as a docker container on top of Alpine, so it’s only a few kilobytes required to be downloaded.

Configuration

You may configure your settings as you desire.
130, 140 and 150 are approximate stock values. I prefer 110,120,130.

For Argon One Active Linear Cooling, I prefer these values. But again 130-150 are stock Argon One values.

Stock Argon One Celsius values

"CorF": "C"
"LowRange": 55
"MediumRange": 60
"HighRange": 65
"QuietProfile": "false"

Linear “stock” values

"CorF": "C"
"Minimum Temperature": 55
"Maximum Temperature": 65

Celcius or Farenheit

Choose Celcius or Farenheit.

  • CorF - Configures Celcius or Fahrenheit.

Temperature Ranges for Active Cooling

image

Set your fan ranges appropriately.

  • LowRange Minimum Temperature to turn on 33%. Temperatures less than this value will turn the fan off.
  • MediumRange to be the temperature divider between 33 and 66%.
  • HighRange to be the maximum temperature before 100% fan.

Quiet Profile

When Quiet Profile is turned on the duty cycle of the fan is reduced to a dB-based system instead of ramping based on duty cycle. The duty cycle is set to 1%, 3% and 100% instead of 33%, 66% and 100%. These values are estimated to be a steady ramp-up in sound level instead of duty cycle as 33%, 66% and 100% are fairly similar in noise production.

  • QuietProfile set to “true” for quiet fan mode. Set to “false” to turn off. The only accepted value is “true”, not on or 1.

Temperature Ranges for Linear Active Cooling

  • Minimum Temperature Minimum Temperature to turn on 1%. Temperatures less than this value will turn the fan off.
  • Maximum Temperature to be the maximum temperature before 100% fan.

Additional Options

These options are available in both ArgonOne Active Cooling and ArgonOne Active Linear Cooling

  • Create a Fan Speed entity in Home Assistant Creates a fan speed entity in Home Assistant.image

  • Log current temperature every 30 seconds Generates a rolling log of the temperature, displayed in the Log tab. You can use this to determine if your settings are effective.

Enable I2C

In order to enable i2C, you must follow one of the methods below.

The Easy Way

HassOS Addon

The Official Way

Terminal Commands and physical access

Either way

Make sure to turn the unit off entirely when rebooting for I2C enablement. The entire hardware needs to come down and back up, not just Home Assistant, docker containers, or supervisor. Remove the power from the unit, wait for it to boot up fully, and then do it again. Enabling i2C requires this.

32 Likes

Security was improved just now. No more requirement to disable security entirely. I2C bus is now imported properly without the need of disabling the entire security. This brings the plugin security from a score of 1 to a score of 4. While I’d like to see the score higher, I don’t believe it is possible since we need to be able to modify hardware.
image

2 Likes

As requested by @carsten_h in Argon One RPi 4 Case Script

Power Button Support

Power button double-tap support can be configured entirely through Home Assistant. There is no configuration for single-tap support.

configuration.yaml

binary_sensor:
  - platform: rpi_gpio
    ports:
      4: Argon One Power Button

Restart Home Assistant on double press

This automation will Restart Home Assistant

  alias: Reboot system when Power Button is pressed
  description: 'This will reboot the system when the Argon One power button is pressed.  This
    requires setup of GPIO 4 on the local machine. '
  trigger:
  - platform: state
    entity_id: binary_sensor.argon_one_power_button
    to: 'on'
  condition: []
  action:
  - service: homeassistant.restart
    data: {}
  mode: single
1 Like

Some updates:
Reworked to use true bash math comparisons and read operations. This is operating in pure bash except when making i2c calls. This should reduce overhead slightly.

Added QuietProfile mode. Since the ArgonOne’s fan is non-linear in loudness when using duty-cycle 33%, 66% and 100%, the Quiet Profile uses 1%, 3% and 100%, which is fairly linear in loudness. To use Quiet Profile, set QuietProfile to “true”, not “on”, or “1”.
You can see Quiet Mode activated in Fan Level 2 and 3. See picture below for switching between levels 3 and 4.
image

1 Like

Added proper Logo and Icon graphics
image

This is super useful, and really tidies up a bunch of config otherwise needed! Thank you!

Edit: have it up and running in place of my old HACS component, looks good so far.
I just looked up what your defaults are (I have trouble matching fahrenheit to celcius, its just such weird math), and you definitely have no tolerance for temperature :stuck_out_tongue_winking_eye:
My “LowRange” number up till now has been your “HighRange” number!

2 Likes

It depends on your preference and setup. Mine operates quite cool with the default values and bounced between 1% and 3% fan.

IMG_20210104_074728_019

I added a Celcius area. If it doesn’t work for you, you can adjust it.

My Pi here is running at 36°C (96,8°F) without the fan ever running simply through the passive cooling. Do you really need the fan?

Yes. I run several addons, a few hundred entities, and a lot of automations.

2 Likes

Oh yeah I was able to set it up in Celsius no problem. I was more just realising the difference in temperature norms. My fan only kicks in at 50 degrees C, which I just thought was normal, given the Pi won’t even try throttle until like 75 C.

I wonder if the fan noise is noticeable across the room (it’s in the spare bedroom)… might see what it is like to run it permanently below 40 :stuck_out_tongue:

Oh man, I want to live in your climate! In the middle of winter with the heating off, sitting right next to a single glazed window, my Pi’s CPU was always 40 and up :joy:

1 Like

I was once again able to improve security. This Addon now has a green, level-5 security rating.
image

4 Likes

@adamoutler, can you increment the version number in your config.json? My Home Assistant isn’t detecting that there is an updated version available because the config.json in your GitHub repo still says it’s version 0.1 :stuck_out_tongue:

1 Like

Dun. 10-char

1 Like

@adamoutler thanks for useful add-on, been running for a few days but had a couple of errors which stopped the service:

Running on Pi4, HassIO 2020.12.7/OS 5.9 boot from SSD.

I have not experienced this issue, but I set it to ignore this error so the addon should no longer crash for you.

I noticed this was when transitioning from off to on. The time when a motor transitions from off to on is the time when the most power is drawn. It is possible the bus was drained of power and could not respond. It is also possible this is a random error.

Either way, please monitor the fan to ensure it operates following this error condition.

1 Like

I just pushed some more changes. If your problem occurs again, it will set the temperature again in 30 seconds. If it can’t set the temperature, it will try again in 30 seconds. The entries should reflect in your log if the problem is persistent. I would expect any problems to be apparent in the log from version 0.6 on.

Thank you @adamoutler, I’ll monitor version 0.6 and respond back after a few days of running. The fan had been coming off and on as expected, it was just a couple of strange exceptions.

Thanks for really quick response :grinning:.

New version. I added an apparmor profile and increased security rating to the maximum, level 6!

5 Likes

@adamoutler It would be nice if you could tag the release commits on GitHub.