New smart-intercept-spindown didn't accept all formats of input coming
to it - the status line we were trying to detect broken status of
doesn't appear on most devices
Management of ambient/exhaust temperature management delegated to
daemon number 0.
Hopefully all aspects of the code should be documented now.
Logging is a lot nicer
Huge change to source a config file, with a dynamic definition of fan
curves for each individual fan. I have mine set to have the drives
nearest a fan be what determines its speed demand, along with adjacent
CPU, GPU, raid controlled card in my specific box.
Fixes github issues #1 (use `sensors --json`), #8 (allow each fan
speed to be controlled individually)
Filter out temperature=255 at this stage rather than in clients who
use us
Allow hddtemp to output a simpler format if --no-device --numeric is
requested
Ignore idle disks as well in order not to bring them out of idle mode
and thus reset timer
Migrate smart-intercept-spindown and smartctlnvme into this repo from
my ansible-initial-server-setup playbooks, so they can be published in
a self-contained repo. Ansible then distributes these files anyway
via including this repo.
This enables us to get rid of the spindown test code we duplicated
here, plus ensure we're actually distributing smartctlnvme
My syslogs are basically flooded with that "--> disable dynamic fan control" message.
Despite passing the -q flag in the systemd unit file, the logs from this program (and more specifically, that single message) make up at least 60% of my log entries.
This fixes that issue by only printing the message when quiet is false.
Sorry people, when I rearranged the logic in e29a05f for:
$desired_temp1 < $weighted_temp < $desired_temp2
I ORed instead of ANDed, but didn't test it until I just pushed out my
ansible config to that host right now, several months later!
Ordering of ramping cases was a bit over the shop, so cleaned up.
Comment about slope definitions was out of sync. Comment about
$demand range clarified. Some mathematical terms bracketed to be
less ambiguous. Fixes#5.
sensors and hddtemp changed to proper unicode "°" from ascii symbol,
but that broke the regexp. Proxmox 7/debian 11 comes with such a fix.
Thanks /u/FreelancerJ for reporting
Gah! Software update or locale update, and the degree signs all
changed encoding. Temperature overall got interpreted as 0degreeC,
which I still need to fix.
in default fallback case (which includes when a fault has occurred or
when the script exits) - keep retrying for a bit, and in servo case,
just allow the next loop to proceed ASAP, without resetting variables
and hysteresis