Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More temperature inputs #83

Open
kiler129 opened this issue Apr 10, 2024 · 2 comments
Open

More temperature inputs #83

kiler129 opened this issue Apr 10, 2024 · 2 comments

Comments

@kiler129
Copy link

Thank you

First of all, this project is an amazing gem, pretty much exactly what I was thinking about designing and building! Thank you for that. I poked around the code and I see it's very high quality and with a great level of flexibility built-in. This is what prompted this issue.

Scope

How feasible/desire would be to expand the temperature sensing capabilities of fanpico? I have precisely two things in mind:

  1. More temperature sensors via ADC, potentially external one via I2C/SPI to limit hardware changes and prevent scope creep
  2. External temperature sensors with value published from an outside source (MQTT/HTTP/UART/whatever)

Dynamically-created sensors are imo out of scope and non-goal. Looking at the code making SENSOR_COUNT dynamic would be a nightmare.

Usecase

The usecase for such a change is to have a complete control over the system that contains multiple heat-generating components. For example if we take even a small NAS as an example, we have:

  • multiple disks, where usage pattern can create big temperature gradient warranting fan ramping up even if CPU temperature is low
  • network cards/DPUs, with 10/25/40Gb ones creating quite a bit of heat
  • SAS controllers, that during e.g. RAID rebuild can produce substantial amount of heat
  • GPU-only activity like transcoding or AI training, requiring overall increased airflow

My original idea steems from HDDs itself: high-capacity 7.2k RPM enterprise units can very quickly heat up under load. As they're split into multiple pools I would realistically need one sensor per disk.

Future possibilities

With more sensors implementing something similar to HP 3D Sea would be feasible. As I have some experience with lightweight web interfaces I could help with that.

image

Interface like that greatly improves "glanceability" of system state, as list of raw temperature and fan speed values requires more effort to interpret at a glance.

WDYT?

@tjko
Copy link
Owner

tjko commented Apr 11, 2024

Adding support for additional temperature sensors is something that has come up. One way to easily support 8 (or 16) would be to add one (or two) analog multiplexers that are driven by same signals as the existing analog multiplexer (74HC4051) for tachometer input.

As you suggested another way could be some analog switch (multiplexer) that can be controlled over I2C to "multiplex" temperature inputs.

For external temperature inputs current firmware has initial support for virtual sensors (VSENSORS), that were meant to allow using things like HDD or CPU temperature as input (and to be displayed on OLED or LCD panel).
(https://github.com/tjko/fanpico/blob/main/commands.md#configurevsensorxname)

Idea for "VSENSORS" was that there would be some software/script that would issue SCPI commands to update their values over the Console/UART connection. MQTT can be used currently as well (there is simple control to only allow "WRITE" commands if want to block other SCPI commands over MQTT).

I'd gladly accept contributions to improve the current web interface as its very primitive at the moment...

@tjko
Copy link
Owner

tjko commented May 25, 2024

@kiler129, current batch of 0804D boards is starting to run low. I was thinking of minor revision by adding "QWIIC" (or "STEMMA QT") connector to make it easier to add/daisy-chain external sensors. Any preference on the connector type?

Adding more inputs (connectors) for thermistors read by ADC, might be something for a new board model. Since seems like not many users actually use all "MBFAN" inputs from motherboard/fancontroller, so reducing inputs would allow adding other features as well (or increase FAN outputs).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants