fan-control docs: HA control (mode/manual-% + auto-revert + dashboard)
Document the HA-control feature shipped in 8beca1df: the daemon reads the
ha-sofia r730_fan_mode/manual_pct helpers, the 60-min auto-revert automation,
and the dashboard-it Server-view sensors + control tiles.
[ci skip]
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
8beca1dfc7
commit
945c1936e3
2 changed files with 37 additions and 1 deletions
|
|
@ -111,6 +111,20 @@ presence open/recent/stale, temperature parsing, jq-free JSON field extraction,
|
||||||
and percent→hex. 36 assertions, no hardware needed. The daemon also supports
|
and percent→hex. 36 assertions, no hardware needed. The daemon also supports
|
||||||
`DRY_RUN=1` and `RUN_ONCE=1` for integration checks.
|
`DRY_RUN=1` and `RUN_ONCE=1` for integration checks.
|
||||||
|
|
||||||
|
## HA control (added 2026-06-05, on the host daemon)
|
||||||
|
|
||||||
|
Delivered ahead of the cron migration (which is Vault-gated) by teaching the
|
||||||
|
**host daemon** to poll two ha-sofia helpers each loop (`fc_resolve`):
|
||||||
|
`input_select.r730_fan_mode` (auto/cool/quiet/manual) +
|
||||||
|
`input_number.r730_fan_manual_pct`. `auto` = the garage-presence curve above;
|
||||||
|
cool/quiet force that curve; manual holds a fixed %; `CEILING` still overrides.
|
||||||
|
HA owns the setpoint + a 60-min auto-revert-to-auto automation
|
||||||
|
(`automation.r730_fan_mode_auto_revert`) — the daemon just polls and actuates.
|
||||||
|
Monitoring + control live on the dashboard-it "Server" view (REST sensors: fan
|
||||||
|
RPM from the redfish exporter; mode/target-% from the Pushgateway). The same
|
||||||
|
logic already exists in the Python controller (`r730-fan-control/`) for the
|
||||||
|
eventual in-cluster CronJob; when that deploys it supersedes the host daemon.
|
||||||
|
|
||||||
## Rollback
|
## Rollback
|
||||||
|
|
||||||
`systemctl disable --now fan-control && ipmitool raw 0x30 0x30 0x01 0x01` on the
|
`systemctl disable --now fan-control && ipmitool raw 0x30 0x30 0x01 0x01` on the
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,27 @@ CPU cool when the garage is empty, quiet when someone's in the garage. Design:
|
||||||
- `fan-control.service` — systemd unit (`Type=simple`, restarts on failure).
|
- `fan-control.service` — systemd unit (`Type=simple`, restarts on failure).
|
||||||
- `/etc/fan-control.env` — config incl. the ha-sofia token (chmod 600, not in git).
|
- `/etc/fan-control.env` — config incl. the ha-sofia token (chmod 600, not in git).
|
||||||
|
|
||||||
|
## HA control (Home Assistant)
|
||||||
|
|
||||||
|
The daemon polls two ha-sofia helpers each loop, so you can drive the fans from
|
||||||
|
HA — **dashboard-it → "Server" view → Fans**:
|
||||||
|
- `input_select.r730_fan_mode` — **auto** (garage-presence curve, default),
|
||||||
|
**cool** / **quiet** (force that curve), **manual** (hold a fixed %).
|
||||||
|
- `input_number.r730_fan_manual_pct` — the % used in `manual` mode (slider).
|
||||||
|
|
||||||
|
Any non-`auto` override **auto-reverts to `auto` after 60 min**
|
||||||
|
(`automation.r730_fan_mode_auto_revert` on ha-sofia), so a forgotten override
|
||||||
|
can't run the fans wrong indefinitely. `CEILING` (83 °C) still overrides
|
||||||
|
everything → Dell auto. An HA change is applied within one daemon loop (~15 s).
|
||||||
|
|
||||||
|
Monitoring sensors on the same view: `sensor.r730_fan_speed` (redfish exporter),
|
||||||
|
`sensor.r730_fan_control_target` + `sensor.r730_fan_control_mode` (Pushgateway).
|
||||||
|
|
||||||
|
The HA objects (helpers, the auto-revert automation, the REST sensors in
|
||||||
|
`rest_resources/{idrac_redfish_exporter,fan_control}.yaml`, and the dashboard
|
||||||
|
cards) live on **ha-sofia** and are auto-git-tracked there by the version-control
|
||||||
|
add-on — they are NOT in this repo.
|
||||||
|
|
||||||
## Quick status
|
## Quick status
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -17,7 +38,8 @@ ssh root@192.168.1.127 systemctl status fan-control
|
||||||
ssh root@192.168.1.127 'journalctl -u fan-control -n 30 --no-pager'
|
ssh root@192.168.1.127 'journalctl -u fan-control -n 30 --no-pager'
|
||||||
ssh root@192.168.1.127 'ipmitool sdr type fan | grep ^Fan1; ipmitool sdr type temperature | grep "^Temp "'
|
ssh root@192.168.1.127 'ipmitool sdr type fan | grep ^Fan1; ipmitool sdr type temperature | grep "^Temp "'
|
||||||
```
|
```
|
||||||
Log lines look like `temp=63C mode=cool fan=65% (was 45%)`.
|
Log lines look like `temp=60C ha_mode=auto eff=cool fan=50% (was 70%)`
|
||||||
|
(`ha_mode` = the HA setpoint; `eff` = the effective curve applied).
|
||||||
|
|
||||||
## Disable / roll back to stock firmware control
|
## Disable / roll back to stock firmware control
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue