@grantig
Pull Request erstellt für HP ProBook 440 G3:
https://github.com/hirschmann/nbfc/pull/39
So, ich habe nun noch mal etwas herumexperimentiert. Jetzt formuliere ich mal die Funktionsweise von NBFC in eigenen Worten, um sicherzustellen, dass ich es richtig verstanden habe.
Falls das, was ich unten schreibe, so in etwa hin kommt, hier ein kleiner Rechner für eine eigene Konfig, in den man nur ein paar Daten eingeben muss und der Rest ausgerechnet wird:
- Ab wie viel Grad soll der Lüfter einschalten? (1. Up Threshold)
- Ab wie viel Grad soll der Lüfter abschalten? (1. Down Threshold)
- Wie ist die kritische Temperatur? (Critical temperature)
- Wie groß sollen die Schritte sein? (Abstand zwischen den Up Thresholds)
Link geht leider nicht, da jsbin im Forum nicht auf der Whitelist steht, hier ist die URL
Code:
http://output.jsbin.com/cajomoridi
Würde mich freuen, wenn du mal kurz überprüfst, ob der halbwegs sinnvolle Werte ausgibt. Anpassungen kann ich noch machen, wenn du Korrekturwünsche hast :-)
Mein Verständnis von NBFC:
- Bei den Temperatureinstellungen gibt es einen UpThreshold und einen DownThreshold (kurz: Up, Down)
- In jedem Interval (Standardmäßig alle 3 Sekunden) prüft NBFC die Richtung (steigend, fallend), die aktuelle Temperatur und vergleicht sie jedem Up mit der Liste
- Steigt die Temperatur und ist Up kleiner als die aktuelle Temperatur, geht er zum nächsthöheren Up
- Steigt die Temperatur und ist Up größer als die aktuelle Temperatur, nimmt der den zugehörigen Geschwindigkeitswert für den Lüfter und setzt ihn
- Fällt die aktuelle Temperatur unter den aktuellen Down-Wert, nimmt er den nächst niedrigeren Wert für den Lüfter und setzt ihn
- Steigt die Temperatur weiter über den aktuellen Up-Wert, wird der nächsthöhere Wert für den Lüfter gesetzt
- Wird die kritische Temperatur erreicht, wird der Maximalwert für den Lüfter gesetzt und er läuft so lange, bis die Temperatur 15 Grad unter Maximalwert ist
Ein Beispiel zur Verdeutlichung:
Folgende Konfiguration (Up, Down, Fan-Speed in Prozent):
Code:
UP DWN SPD
------------------
0° 0° 0%
63° 48° 25%
70° 55° 50%
75° 60° 100%
Beim Start von NBFC liegt die Temperatur liegt bei 50 Grad:
Up=0, ist kleiner als die aktuelle Temperatur, nächster Wert
Up=63, ist größer als die aktuelle Temperatur, Lüfter wird auf 25 % gestellt
Temperatur steigt weiter auf 64 Grad:
Up=0, ist kleiner als die aktuelle Temperatur, nächster Wert
Up=63, ist kleiner als die aktuelle Temperatur, nächster Wert
Up=70, ist größer als die aktuelle Temperatur, Lüfter wird auf 50% gestellt
Nun fällt die Temperatur wieder auf 57 Grad:
Der Down-Wert der aktuellen Einstellung greift
Down=57, ist größer als der Down-Wert der aktuellen Einstellung, also passiert nichts
Nun fällt die Temperatur auf 55 Grad:
Der Down-Wert der aktuellen Einstellung greift
Down=55, ist gleich dem Down-Wert der aktuellen Einstellung, Lüfter wird auf den nächst niedrigeren Wert gestellt (25%)
Temperatur fällt weiter auf 50 Grad:
Der Down-Wert der aktuellen Einstellung greift
Down=48, ist größer als der Down-Wert der aktuellen Einstellung, also passiert nichts
Temperatur fällt weiter auf 48 Grad:
Der Down-Wert der aktuellen Einstellung greift
Down=48, ist gleich dem Down-Wert der aktuellen Einstellung, Lüfter wird auf den nächst niedrigeren Wert gestellt (0%)
Sich daraus ergebende Regeln:
- Ein Wert für Up der 15 Grad unter der kritischen Temperatur oder größer ist und nicht bei 100% Speed steht, macht keinen Sinn
- Ein Wert für Up, der gleich einem anderen Wert für Up ist, macht keinen Sinn
- Ein Wert für Down, der größer dem vorherigen Up-Wert ist, macht keinen Sinn
- Ein Wert für Down, der kleiner oder gleich dem vorherigen Down-Wert ist, macht keinen Sinn
- Der Lüfter schaltet ab, wenn die Temperatur fällt und der kleinste Down-Wert erreicht bzw. unterschritten wird (sofern ein Eintrag mit 0 existiert)
Meine Ideen, für eine "gute" Konfiguration:
- Es sollte immer ein Wert mit 0,0,0 existieren
- Der kleinste "Down"-Wert in der Liste sollte eine Temperatur sein, die ca. 5 Grad über der Idle-Temperatur des Geräts liegt
- Die kleinste "Up" Temperatur sollte ca. 15 Grad über der Idle-Temperatur liegen
- Die nächsthöhere Down-Temperatur sollte immer den Mittelwert des vorherigen Eintrags haben
- Die nächsthöhere Up-Temperatur sollte 2 Grad höher als die vorherige sein
- Der größte "Up"-Wert in der Liste sollte eine Temperatur sein, die ca. 5 Grad unter der kritischen Temperatur liegt und 100% als Speed-Wert hat