Tonis Bastelkeller - Akkujogger für Notebookserver

Hallo Leutz,

ich melde mich heute mal mit einem überschaubareren Projekt auf Einsteigerniveau aus dem Urlaub zurück. Auf die Idee dazu kam ich als ich mit meinem Schwiegerpapa bei nem Tässchen Bier in seinem noch im Winterschlaf befindlichem Oldtimer saß und über das Leben und die Welt philosophierte. Damit der kleine Liebling im Frühling gut anspringt bedient man sich in Oldtimer- und Motorradkreisen einer Technik, die der Batterie den Winter über eine Betriebssituation vorgaukelt um sie für die kommende Saison zu „trainieren“. Ein ganz ähnliches Problem gibts auch bei Notebooks deren Akku ständig an der Steckdose hängen. Wenn man ihn wirklich mal braucht is’er hin. Denn „Dauer-Power“ ist, wie viele sicher bereits wissen, pures Gift für den Akku.

Die Meinungen zu Notebooks als Server gehen auseinander. Auch ich bin kein großer Fan von dieser Lösung. Aber was macht man mit dem ausgemusterten treuen Begleiter? So richtig Wiederverkaufswert hat er nicht mehr, für die Tonne ist er noch zu schade und ich kann auch die Hausautomations-Neueinsteiger verstehen, die für den Anfang erst einmal möglichst wenig investieren wollen. Diese grundlegende Frage will ich hier heute aber nicht vertiefen. Hier soll es heute nur um die Frage gehen meinem Gerät, wenn ich mich einmal zu seinem Einsatz entschlossen hab, ein möglichst langes Leben zu bescheren.

Was ist überhaupt Sinnvoll?

Was man überhaupt tun kann um den Akku zu schonen hängt vom Einsatz des Notebooks ab. Moderne LiIon Akkus, wie sie nur in neueren Notebooks zu finden sind, kann man, wenn man sie nicht benötigt, kühl im Schrank (nicht Kühlschrank, richtige Kälte ist dann doch zu viel des Guten) lagern. Das mag er und da fühlt er sich wohl. Doch er entläd sich dort bis zu 10% im Monat und der beliebte Einsatz als „eingebaute USV“ im Serverbetrieb geht verloren. Dieser Typ Akku verträgt es übrigens auch ganz gut wenn er immer voll geladen bleibt. Hier ist eher Hitze ein Problem weswegen sich, abhängig von der tatsächlichen Wärmeentwicklung des Notebooks, sogenannte Notebook-Kühler anbieten. Den Akku aber ab und an mal zu fordern indem man ihn vielleicht ein paar mal die Woche richtig leer saugt schadet ihm absolut nicht. Das Gegenteil ist der Fall denn genau dafür wurde er gebaut. Vor der viel diskutierten, schädlichen Tiefentladung braucht man dabei keine Angst zu haben. Das regelt die eingebaute Elektronik für uns und passt auf.

Ganz anders sieht es bei Akkus älteren Baujahres aus. Sowohl NiCd als auch NiMH Akkus lieben es regelmäßig ganz entleert und dann wieder ganz voll geladen zu werden. Wobei in unserem Fall natürlich die Aufallsicherheit unserer Hausautomation nicht vernachlässigt werden sollte.

Welche Möglichkeiten gibt es?

Schnell bin ich beim checken der Bordwerkzeuge von IPS auf Sys_GetBattery gestoßen, das im Prinzip schon alles beherrscht was wir brauchen. Aber ich hätte dann doch ganz gern etwas mehr Informationen und Komfort gehabt. Drum hab ich fix ein kleines Modul gebaut, dass uns alle Windows-Informationen zu diesem Thema in IPS zur Verfügung stellt. Wer also keine externen Module einbinden mag kann sich das auch ohne Modul nachbasteln.

Das Modul einbinden.

Die unten angehängte DLL ist für IPS v2.7 und muss einfach nur in den „modules“ Ordner im IPS-Verzeichnis kopiert werden. Existiert der Ordner nicht kann er einfach erstellt werden. IPS kümmert sich um den Rest. Nachdem der Dienst einmal neu gestartet wurde sollte unter den Kern-Instanzen ein neuer Unterpunkt mit Namen Mulator zu finden sein, der uns alle benötigten Informationen zur Verfügung stellt. Damit alles beisammen bleibt, ich mag es wenn nicht alles über die halbe Struktur verteilt ist, hab ich das Akkujogger Script auch direkt dort erstellt.
Mulator.png

Das Script.

In dem Script passiert alles wirklich Relevante. Als Erstes holen wir uns die Werte von Mulator und hinterlegen sie in Variablen. Das dient nur der Übersicht und zum Verständnis. Es ist halt leichter mit sprechenden Variablennamen zu arbeiten als mit den IDs. Dann wird ein Scripttimer erzeugt, der jede Minute den Status prüft und gegebenenfalls darauf reagiert. Die erste If-Abfrage prüft ob unser Server mit Strom versorgt wird und der Akku voll ist. Ist das der Fall, dann wird die Stromzufuhr unterbrochen und der Entladevorgang beginnt.

Die zweite If-Abfrage prüft nun ob der Ladezustand einen kritischen Bereich erreicht hat oder unter 10% gefallen ist. Ich habe das als Sicherheit eingebaut damit man bei sehr schwachem Akku ein wenig Feintuning betreiben kann. Die Bedingungen zu Hause und Geschmäcker sind ja sicher bei Jedem etwas anders. In dem Fall wird die Stromzufuhr für den Server wieder hergestellt.


<?
  // Hier müssen die entsprechenden Variablen IDs eingetragen werden
  $Ladezustand = getValue(22337 /*[Mulator\Ladezustand]*/);
  $Akkustatus = getValue(17143 /*[Mulator\Akkustatus]*/);
  $Netzstatus = getValue(49923 /*[Mulator\Netzstatus]*/);

  IPS_SetScriptTimer($_IPS['SELF'], 60);  // wir prüfen den Akku jede Minute (60 Sekunden)

  if ( ($Netzstatus == 1) &&   // Wenn der Server mit Strom versorg wird...
       ($Akkustatus == 1) )    // ...und der Akku voll ist...
  {
	 // ...unterbrechen wir die Stromversorgung um den Entladevorgang zu starten
	 LPT_SetPin(1, 1, false);
	 SetValue(33913 /*[Mulator\Akku Ladeschalter]*/ , 'AUS');
  }

  if ( ($Netzstatus == 2) &&   // Wenn der Server auf Akku läuft...
       (($Akkustatus == 3) || ($Ladezustand < 10)) )   // ...und der Ladezustand endweder kritisch ist oder unter 10%...
  {
	 // ...stellen wir die Stromversorgung wieder her
	 LPT_SetPin(1, 1, true);
	 SetValue(33913 /*[Mulator\Akku Ladeschalter]*/ , 'EIN');
         
	 //IPS_SetScriptTimer($_IPS['SELF'], 0); //Diese Zeile beendet das "joggen"
  }
?>

Ich habe hier eine Relaiskarte am Parallelport verwendet. Die Zeile LPT_SetPin kann aber durch jede beliebige Technologie ersetzt werden, die ihr Zuhause verfügbar habt. Die Andere Zeile, die in eine Text-Variable schreibt, dient nur der besseren Übersicht und für Debug-Zwecke. Wenn sie euch stört könnt ihr sie gern weg lassen.

Dies Script wird nun den Akku in einer Dauerschleife laden und entladen. So extrem ist das sicher nur bei NiCd Akkus sinnvoll. Für modernere Akkus sollten vielleicht, je nach Geschmack, längere Pausen zwischen den Zyklen eingelegt werden. In dem Fall kann nach dem Einschalten der Netzspannung der Scripttimer beendet werden. Ich habe die Zeile hier mal auskommentiert. Mit dieser Zeile würde nach ausführen des Scripts, das kann zum Beispiel immer Nachts oder alle 6 Stunden erfolgen, immer gewartet werden bis der Akku komplett voll ist und dann der Zyklus genau einmal gestartet.

Bei einem sehr alten, runtergerockten Akku hab ich es mit diesem Script übrigens geschafft die Akkulaufzeit von nur noch rund 15min wieder mehr als zu verdoppeln. :slight_smile:

Viel Spaß damit bis zur nächsten Bastelstunde,

Toni

Mulator.zip (320 KB)

Sehr interessant,

brauche jetzt nur noch günstiges Notebook …

Und dafür hat du den ganzen Beitrag zitiert?

Gesendet von meinem Nexus 4 mit Tapatalk 2

Sorry nicht bemerkt …