1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Gelöst Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

Dieses Thema im Forum "IPC" wurde erstellt von Centaury79, 27. Juli 2013.

  1. Centaury79
    Offline

    Centaury79 <span style="font-weight: bold; color:red">Grill M Supporter

    Registriert:
    1. Juni 2010
    Beiträge:
    622
    Zustimmungen:
    437
    Punkte für Erfolge:
    63
    Hallo zusammen,
    ich habe einen Igel mit IPC am laufen.
    Bei diesen Temperaturen draussen geht die Gradzahl doch sehr hoch.
    Nun habe ich zeitgleich einen Windowsserver am laufen wo eine schaltbare Steckdosenleiste per USB dranhängt.

    Nun habe ich folgende Idee:
    Der Server ruft im minütlichen Intervall (oder auch 10 min, 15 min, etc) die Temperatur des Igel´s ab.
    Gibt es da eine Möglichkeit dieses per Script oder Batch zu verwirklichen?

    Dann könnte ich dem Windowsserver sagen: Wenn die Temp über 70°C ist, dann schalte Steckdose 4 ein. Dort ist ein Lüfter angeschlossen der den Igel dann kühlen könnte.

    Vielen Dank für eure Hilfe
     
    #1
  2. phantom

    Nervigen User Advertisement

  3. 0800555333
    Offline

    0800555333 Hacker

    Registriert:
    9. Juli 2013
    Beiträge:
    327
    Zustimmungen:
    367
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    ich denke das wäre unnötig da dann dein TV ja auch nicht mehr funktioniert :)

    70° stellt auch kein Problem dar, kritisch wird es eigentlich erst ab 90°, aber solange du den Igel nicht hinter einem Kleiderschrank oder ähnliches gepakt hast wo keine frischluft dran kommt, wird er solche temperaturen auch nicht erreichen..
    kann mir nicht vorstellen das es in deinen wohnräumen so warm wird als dass es nur den Igel derart beeinflussen würde - wenn dann wäre auch der Windows rechner betroffen


    wenn du das trotzdem unbedingt realisieren willst würde das meines erachtens aber mit Batch (*.bat) nicht machbar sein, sooo toll is Batch nicht :emoticon-0124-worri

    ich würde dir dann eher empfehlen auf dem Windows rechner PHP zu installieren und das dann über PHP zu regeln.. auf dem Igel richtest du eine php Datei ein über die die CPU Temperatur ausgelesen wird, das php script auf dem Windows rechner ruft die php auf dem Igel ab und führt dann ein Befehl aus sobald zB 90° erreicht werden

    aber wie gesagt sind 70° für den Igel kein Problem :)
     
    Zuletzt bearbeitet: 27. Juli 2013
    #2
    al-x83 gefällt das.
  4. Centaury79
    Offline

    Centaury79 <span style="font-weight: bold; color:red">Grill M Supporter

    Registriert:
    1. Juni 2010
    Beiträge:
    622
    Zustimmungen:
    437
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    Doch, es wird so warm. 81 Grad hatte ich heute. Ich habe zwei Etagen und oben unterm Dach ist ein Giebelausbau mit nur einem Fenster und die Luft steht dort im Sommer.
    Der Server hat ne Wasserkühlung, die CPU liegt bei 29 Grad und die HDD´s bei 31 Grad. Dem Server ist die warme Luft also egal.
    Nein, ich kann den Igel nicht woanders hinpacken, das fällt flach.

    Kannst du mir eine Seite empfehlen wie ich das mit dem PHP hinbekomme? Ich habe davon wirklich 0,0 Ahnung.

    P.S: Unnötig weil mein TV dann nicht mehr funktioniert?
    ich will kühlen, nicht abschalten!
     
    #3
  5. 0800555333
    Offline

    0800555333 Hacker

    Registriert:
    9. Juli 2013
    Beiträge:
    327
    Zustimmungen:
    367
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    achso du willst über eine USB-Stromleiste einen Venti schalten? Hatte das so verstanden das du den Igel dann ausschalten wolltest :)


    also zunächst müsste man herrausfinden über welche /sys/class/thermal/ datei man die temperatur auslesen könnte.. da ich kein Igel hab müsste das jemand anderes nachgucken.. vermutlich: cat /sys/class/thermal/thermal_zone0/temp

    wenn es das nicht gibt müsste man das über ein extra programm regeln wie zum beispiel lm_sensors

    Dieser Link ist nur für Mitglieder!!! Jetzt kostenlos Registrieren ?


    (das wird auch von phpSysInfo genutzt)
    hast du auf dem Igel IPC installiert? dann wär das ggf schon drauf

    ..also zunächst muss man auf dem Igel ein php script einrichten was über den webserver abrufbar wär und die aktuelle cpu temperatur auswirft.. wenn das erledigt ist installiert man auf dem Windows rechner ebenfalls ein php script welches dann über den webserver vom igel die temperatur auslesen kann und falls der wert zu hoch is ne entsprechende aktion ausführt..

    da ich aber weder weiss ob der Igel überhaupt ein sensor für die temperatur hat, noch was für eine usb-stromleiste du nutzt und wie da der befehl aussehen müsste - tapp ich da etwas im dunkeln :(
     
    #4
    Centaury79 gefällt das.
  6. Centaury79
    Offline

    Centaury79 <span style="font-weight: bold; color:red">Grill M Supporter

    Registriert:
    1. Juni 2010
    Beiträge:
    622
    Zustimmungen:
    437
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    OK, Danke erstmal für deine Antwort.
    Ich hab mir die Datei mal angesehen die du verweißt.
    In dieser steht 49000 drin, das wird wohl nicht die Temp sein ;)

    Da werde ich wohl noch weiter suchen müssen, der Ansatz ist aber schonmal nicht schlecht.
    Die Steckdose schaltet man wie folgt:
    call "c:\programme\Power Manager\pm.exe" -on -Device1 -1 (on oder off ist selbsterklärend, Device1 ist die erste Steckdosenleiste, 1 ist der erste Port, es gibt 1 bis 4)

    Ich werde jetzt mal gucken ob der Wert (49000) sich anpasst wenn die Temp steigt oder sinkt, vielleicht kann ich dann ja eine Umrechnungsformel erkennen)
    Wenn noch jemand weiß was diese 49000 bedeuten oder wie ich die deuten muss, dann wäre ich sehr dankbar.
    0800555333, du hast mich schonmal auf den richtigen Weg gelenkt.

    P.S: Ich merke gerade: 49000 sind 49°C
    Ich habe nämlich die ganze Nacht einen Lüfter angehabt und die Temp gesenkt bekommen.
    Nun sehe ich im Webinterface das der Igel 49°C hat, daher sind die 49000 schonmal ein Wert mit dem ich arbeiten kann.
     
    Zuletzt bearbeitet: 28. Juli 2013
    #5
    0800555333 gefällt das.
  7. 0800555333
    Offline

    0800555333 Hacker

    Registriert:
    9. Juli 2013
    Beiträge:
    327
    Zustimmungen:
    367
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    doch das ist die temp, der Wert ist in tausendstel °C

    Kontrolliere aber ob sich der Wert auch wirklich verändert, manchmal wird da nur ein Fixwert geliefert. Vergleiche ggf. mit lm_sensors.


    ein einfaches php zum anzeigen der temperatur wäre folgendes, gespeichert als zB /var/www/cputemp.php
    Code:
    <?php
    exec("cat /sys/class/thermal/thermal_zone0/temp",$cputemp);
    $cputemp = $cputemp[0] / 1000;
    echo $cputemp;
    ?>
    
    Das Script, welches später auf dem Windows Rechner laufen würde sähe dann zB so aus:
    Code:
    <?php
    $IgelURL="http://192.168.0.20/cputemp.php";
    $MaxTemp="45";
    
    $content = file_get_contents($IgelURL);
    if (!empty($content)) {
        $cputemp = round("$content",0);
        if ($cputemp > $MaxTemp) {
            echo "Temperatur ist zu hoch: $cputemp (exakt: $content)";
        } else {
            echo "Alles im gruenen Bereich";
        }
    }
    ?>
    Da fehlt aber natürlich noch die tatsächliche Aktion.. Das hier soll erstmal nur zum testen dienen. Das kannst du als zB /var/www/test.php auch auf dem Igel speichern und über deinen Webbrowser aufrufen
     
    Zuletzt bearbeitet: 28. Juli 2013
    #6
    Centaury79 gefällt das.
  8. 0800555333
    Offline

    0800555333 Hacker

    Registriert:
    9. Juli 2013
    Beiträge:
    327
    Zustimmungen:
    367
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    Nun müsstest du zunächst PHP für Windows herrunter laden:

    Dieser Link ist nur für Mitglieder!!! Jetzt kostenlos Registrieren ?


    Da nimmst du auf jedenfall die x86 Thread Safe Zip auch wenn du ein 64bit System installiert hast!

    Entpacken tust du es am besten direkt auf C:\ in einen Ordner namens php

    Dann brauchst du (zumindest ist das bei mir unter Win7 so) noch die MSVCR110.DLL in dem php Verzeichnis:

    Dieser Link ist nur für Mitglieder!!! Jetzt kostenlos Registrieren ?



    Das php Script für den Windows Rechner speicherst du zB als C:\IgelTemp.php

    Jetzt erst mal testen ob das auch so funktioniert wie es soll. Windowstaste + R drücken, cmd eingeben um in die Eingabeaufforderung zu gelangen und dort gibst du dann folgendes ein:

    C:\php\php.exe -f C:\IgelTemp.php

    Wenn das wie gewünscht "Temperatur ist zu hoch ..." ausgibt, würde an der Stelle von dem IgelTemp.php Script die Zeile herrein kommen um die Steckdosenleiste zu schalten. Also sähe das zB dann so aus:
    Code:
    <?php
    $IgelURL="http://192.168.0.20/cputemp.php";
    $MaxTemp="45";
    
    $content = file_get_contents($IgelURL);
    if (!empty($content)) {
        $cputemp = round("$content",0);
        if ($cputemp > $MaxTemp) {
            echo "Temperatur ist zu hoch: $cputemp (exakt: $content)";
            @exec("C:\Programme\Power Manager\pm.exe -on -Device1 -1");
        } else {
            echo "Alles im gruenen Bereich";
        }
    }
    ?>
    Allerdings würde der Ventilator nun unendlich laufen.. Man müsste sich also auch noch was überlegen was den Ventilator wieder abschaltet..


    Wenn das soweit funktioniert erstellt man sich eine Batch Datei (zB C:\IgelTemp.bat) in der dann die Zeile aus der Eingabeaufforderung ausgeführt wird und für diese Batch wiederum erstellt man eine Aufgabenplanung

    IgelTemp.bat:
    Code:
    @echo off
    C:\php\php.exe -f C:\IgelTemp.php
     
    #7
    Centaury79 gefällt das.
  9. 0800555333
    Offline

    0800555333 Hacker

    Registriert:
    9. Juli 2013
    Beiträge:
    327
    Zustimmungen:
    367
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    Zum Problem wegen "ewig laufen" habe ich nun, denk ich, auch eine Lösung :smoke:

    Und zwar wird beim einschalten der Steckdosenleiste eine Datei $VentiCheckFile angelegt und wenn die Batch das nächste mal ausgeführt wird, wird überprüft wann das file zuletzt modifiziert (also etwas hinein geschrieben) wurde. Dieser Wert wird dann mit einem von dir angegebenen Wert ($VentiRunTime) verglichen und falls die bereits verstrichen ist wird die Steckdosenleiste wieder abgeschaltet..
    Solange die Datei $VentiCheckFile existiert wird die Steckdosenleiste nicht erneut eingeschaltet

    Bitte mal testen ob das so auch wirklich funktioniert :)


    IgelTemp.php:
    Code:
    <?php
    // Vollstaendige URL zur cputemp.php auf dem zu ueberwachenden System
    $IgelURL="http://192.168.0.20/cputemp.php";
    // Maximale Temperatur (sollte nicht niedriger als 60 eingestellt werden!)
    $MaxTemp="70";
    // Temperatur auf die herrunter gekuehlt werden soll (solange laeuft der Venti weiter!)
    $MinTemp="55";
    // Laufzeit des Ventilators in Sekunden (sollten mindestens 60 sein!)
    $VentiRunTime="120";
    // Vollstaendger Pfad und Name der Datei zur Pruefung ob der Ventilator laeuft
    $VentiCheckFile="C:\VentiRuns";
    // Logfile anlegen? 0 = nein , 1 = ja
    $CreateLog="1";
    // Vollstaendiger Pfad und Name der Logdatei
    $LogFile="C:\IgelTemp.log";
    
    
    // dont mess with anything below this line
    date_default_timezone_set("CET");
    
    $content = file_get_contents($IgelURL);
    if (!empty($content)) {
        $cputemp = round("$content",0);
        if (file_exists($VentiCheckFile)) {
            $timestampfile = filemtime($VentiCheckFile);
            $timestampnow = time();
            $diff = $timestampnow - $timestampfile;
            if ($diff >= $VentiRunTime) {
                if ($cputemp > $MinTemp) {
                    $MSG="Ventilator laeuft bereits $diff Sekunden aber die Temperatur ist mit $content noch zu hoch! (MinTemp: $MinTemp)";
                    echo "$MSG\n";
                    WriteLog("$MSG");
                } else {
                    $MSG="Ventilator laeuft bereits $diff Sekunden und die Temperatur ist mit $content Ok. Ventilator wird abgeschaltet!";
                    echo "$MSG\n";
                    WriteLog("$MSG");
                    @exec('call "C:\Programme\Power Manager\pm.exe" -off -Device1 -1');
                    @unlink("$VentiCheckFile");
                }
            }
        } else {
            if ($cputemp > $MaxTemp) {
                $MSG="Temperatur ist zu hoch: $cputemp (exakt: $content). Ventilator wird eingeschaltet!";
                echo "$MSG\n";
                WriteLog("$MSG");
                @exec('call "C:\Programme\Power Manager\pm.exe" -on -Device1 -1');
                $fp = fopen("$VentiCheckFile", "w");
                fputs ($fp, "$content");
                fclose ($fp);
            } else {
                echo "Temperatur ist mit $content im gruenen Bereich";
            }
        }
    }
    
    function WriteLog($message) {
        global $CreateLog,$LogFile;
        if ($CreateLog == 1) {
            $datetime = date('d.m.Y H:i:s',time());
            $fp = fopen("$LogFile", "a");
            fputs ($fp, "[$datetime] $message\r\n");
            fclose ($fp);
        }
    }
    ?>
    Solange $VentiRunTime nicht erreicht wurde läuft der Ventilator weiter.. Erst wenn $VentiRunTime erreicht wurde wird geprüft ob die gewünschte $MinTemp erreicht wurde, ist das nicht der Fall wird das ins $LogFile geschrieben aber der Venti läuft weiter..
    Erst wenn beides erfüllt ist wird der Venti abgeschaltet

    optionales IgelTemp.log sähe dann so aus:

    [28.07.2013 16:06:08] Temperatur ist zu hoch: 72 (exakt: 71.92). Ventilator wird eingeschaltet!
    [28.07.2013 16:07:15] Ventilator laeuft bereits 67 Sekunden aber die Temperatur ist mit 68.647 noch zu hoch! (MinTemp: 55)
    [28.07.2013 16:09:45] Ventilator laeuft bereits 217 Sekunden und die Temperatur ist mit 54.23 Ok. Ventilator wird abgeschaltet!
     
    Zuletzt bearbeitet: 29. Juli 2013
    #8
    Centaury79 gefällt das.
  10. Centaury79
    Offline

    Centaury79 <span style="font-weight: bold; color:red">Grill M Supporter

    Registriert:
    1. Juni 2010
    Beiträge:
    622
    Zustimmungen:
    437
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    Ja sehr cool, vielen Dank.

    Also, ich hab mal die php testweise unter www gelegt und es wird die Gradzahl angezeigt. z.B 75
    Nun habe ich mal die Steckdose per Hand geschaltet und ein paar Minuten gewartet.
    Dann die PHP-Seite aktuallisiert und nun steht dort 52

    Soweit klappt das schonmal. Werde mich jetzt an die PHP Klamotte für Windows machen.
    Ich war in der Zwischenzeit auch fleissig und habs mal mit Batch probiert und auch eine gute Lösung gefunden.

    Die Batch sieht folgendermasen aus:

    Vorteil hier: Ich kann die Batchdatei alle 30 min ausführen lassen und habe sogar noch einen LOG der Temperaturen.
    Nun muss ich nur mit Netdrive den Igel als Laufwerk mounten und kann die tempdatei alle 30 min auf den Rechner ziehen, die Batch liesst die Datei dann aus und handelt dementsprechend. Fertige Batch-Dateien wandel ich zum Schluss immer in EXE-Dateien um und führe sie ohne Fenster aus.

    Auch eine Möglichkeit oder? Das doofe daran ist nur das der Windowsserver alle 30 min einen FTP-Connect zum Igel machen muss um die tempdatei zu kopieren.
    Nach dem Auslesen schaltet die Steckdose an oder aus und löscht die tempdatei wieder.

    Deine Lösung ist glaub ich komfortabler, nur kann ich Batchbefehle selber erweitern/verbessern, mit php kenne ich mich leider nicht aus.
    So brauche ich immer deine Hilfe wenn ich etwas verbessern will.

    Hmm, was mache ich nun?
     
    #9
    0800555333 gefällt das.
  11. 0800555333
    Offline

    0800555333 Hacker

    Registriert:
    9. Juli 2013
    Beiträge:
    327
    Zustimmungen:
    367
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    ja das über ftp zu regeln wär denk ich etwas umständlich :)

    anstatt das über ftp zu regeln könntest du das vielleicht auch mit wget machen:

    Dieser Link ist nur für Mitglieder!!! Jetzt kostenlos Registrieren ?


    aber dann fehlen mehrere dll's also is das wie ich finde grad etwas nervig :emoticon-0124-worri
    das sähe dann irgendwie so aus:
    Code:
    wget -O C:\temp http://192.168.0.20/cputemp.php
    -O sagt das es in die datei gespeichert werden soll..


    php ist aber auch nicht sooo schwer, die meisten abläufe wie die if schleifen usw sollten eigentlich selbsterklärend sein aber ich denke doch mal es sollte jetzt bereits alles enthalten sein, oder was möchtest du da noch verbessern? :)

    ein Log einzubinden wär auch kein grosser aufwand..

    /EDIT: IgelTemp.php mit option ein logfile anlegen zu lassen:
    Code:
    <?php
    // Vollstaendige URL zur cputemp.php auf dem zu ueberwachenden System
    $IgelURL="http://192.168.0.20/cputemp.php";
    // Maximale Temperatur (sollte nicht niedriger als 60 eingestellt werden!)
    $MaxTemp="65";
    // Laufzeit des Ventilators in Sekunden (sollten mindestens 60 sein!)
    $VentiRunTime="120";
    // Vollstaendger Pfad und Name der Datei zur Pruefung ob der Ventilator laeuft
    $VentiCheckFile="C:\VentiRuns";
    // Logfile anlegen? 0 = nein , 1 = ja
    $CreateLog="1";
    // Vollstaendiger Pfad und Name der Logdatei
    $LogFile="C:\IgelTemp.log";
    
    
    // dont mess with anything below this line
    date_default_timezone_set("CET");
    
    $content = file_get_contents($IgelURL);
    if (!empty($content)) {
        if (file_exists($VentiCheckFile)) {
            $timestampfile = filemtime($VentiCheckFile);
            $timestampnow = time();
            $diff = $timestampnow - $timestampfile;
            if ($diff >= $VentiRunTime) {
                $MSG = "Ventilator laeuft bereits $diff Sekunden. Steckdosenleiste wird abgeschaltet!";
                echo "$MSG\n";
                WriteLog("$MSG");
                @exec("C:\Programme\Power Manager\pm.exe -off -Device1 -1");
                @unlink("$VentiCheckFile");
            }
        } else {
            $cputemp = round("$content",0);
            if ($cputemp > $MaxTemp) {
                $MSG = "Temperatur ist zu hoch: $cputemp (exakt: $content). Ventilator wird eingeschaltet!";
                echo "$MSG\n";
                WriteLog("$MSG");
                @exec("C:\Programme\Power Manager\pm.exe -on -Device1 -1");
                $fp = fopen("$VentiCheckFile", "w");
                fputs ($fp, "$content");
                fclose ($fp);
            } else {
                echo "Alles im gruenen Bereich";
            }
        }
    }
    
    function WriteLog($message) {
        global $CreateLog,$LogFile;
        if ($CreateLog == 1) {
            $datetime = date('d.m.Y H:i:s',time());
            $fp = fopen("$LogFile", "a");
            fputs ($fp, "[$datetime] $message\n");
            fclose ($fp);
        }
    }
    ?>
    IgelTemp.log sieht dann so aus:

    [28.07.2013 16:06:08] Temperatur ist zu hoch: 72 (exakt: 71.92). Ventilator wird eingeschaltet!
    [28.07.2013 16:09:45] Ventilator laeuft bereits 217 Sekunden. Steckdosenleiste wird abgeschaltet!
     
    Zuletzt bearbeitet: 28. Juli 2013
    #10
  12. Centaury79
    Offline

    Centaury79 <span style="font-weight: bold; color:red">Grill M Supporter

    Registriert:
    1. Juni 2010
    Beiträge:
    622
    Zustimmungen:
    437
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    WGET kann ich also in eine Batch einbinden? Habe ich das richtig verstanden?
    Deine Lösung ist ja schon eigentlich ideal. Mir persönlich würde allerdings ein Log noch sehr gefallen, so kann ich mal vergleichen wie sich Raumtemperaturen zur Igeltemperatur verhalten.
    Klar, das ist kein Muss, aber dennoch eine schöne Idee wie ich finde.

    Würde es dir viel Arbeit machen noch einen Log einzubinden?
    Ich werde das wohl nicht hinbekommen. Versuche schon, aber irgendwie bin ich für php noch zu doof.
    Da werde ich wohl noch erstmal viel lesen müssen.
     
    #11
  13. 0800555333
    Offline

    0800555333 Hacker

    Registriert:
    9. Juli 2013
    Beiträge:
    327
    Zustimmungen:
    367
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    ja wget.exe kannst du dann auch in eine batch paken


    bezüglich log: guck in post#10 :)
     
    #12
    Centaury79 gefällt das.
  14. Centaury79
    Offline

    Centaury79 <span style="font-weight: bold; color:red">Grill M Supporter

    Registriert:
    1. Juni 2010
    Beiträge:
    622
    Zustimmungen:
    437
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    So, ich hab mich jetzt mal länger mit deinem Script befasst.
    Mir fällt auf:
    Log´s werden nicht untereinander geschrieben, sondern direkt hintereinander weg. Könnte man das noch ändern?
    Ich habe testweise mal die Lüfterlaufzeit von 120 auf 5 gesetzt um ein bisschen zu testen.
    Beim ersten starten sagt er das die Temp zu hoch ist (hab max mal auf 40 gestellt um zu testen) und startet die Steckdose.
    Da ich ja die Lüfterzeit auf 5 gestellt habe, habe ich nach ca. 10 Sek wieder die php ausgeführt.
    Nur sagt dein Script mir das der Lüfter seit 10 Sek läuft und schaltet ab. Das ist aber eher supoptimal da die Temp ja noch immer über den Maxwert ist.
    Ins Log wird geschrieben das der Lüfter seit 10 Sek läuft, das gefällt mir gut. Nur leider soll er den Lüfter ja nicht abschalten, die Wunschtemp ist ja noch gar nicht erreicht.

    Kannst du das noch ändern? Also loggen darf er so weiter, soll aber die Steckdose anlassen wenn der Wunschwert noch nicht erreicht ist.

    Danke schonmal
     
    #13
  15. 0800555333
    Offline

    0800555333 Hacker

    Registriert:
    9. Juli 2013
    Beiträge:
    327
    Zustimmungen:
    367
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    Dann probiers damit:

    Code:
    <?php
    // Vollstaendige URL zur cputemp.php auf dem zu ueberwachenden System
    $IgelURL="http://192.168.0.20/cputemp.php";
    // Maximale Temperatur (sollte nicht niedriger als 60 eingestellt werden!)
    $MaxTemp="65";
    // Temperatur auf die herrunter gekuehlt werden soll (solange laeuft der Venti weiter!)
    $MinTemp="50";
    // Laufzeit des Ventilators in Sekunden (sollten mindestens 60 sein!)
    $VentiRunTime="120";
    // Vollstaendger Pfad und Name der Datei zur Pruefung ob der Ventilator laeuft
    $VentiCheckFile="C:\VentiRuns";
    // Logfile anlegen? 0 = nein , 1 = ja
    $CreateLog="1";
    // Vollstaendiger Pfad und Name der Logdatei
    $LogFile="C:\IgelTemp.log";
    
    
    // dont mess with anything below this line
    date_default_timezone_set("CET");
    
    $content = file_get_contents($IgelURL);
    if (!empty($content)) {
        $cputemp = round("$content",0);
        if (file_exists($VentiCheckFile)) {
            $timestampfile = filemtime($VentiCheckFile);
            $timestampnow = time();
            $diff = $timestampnow - $timestampfile;
            if ($diff >= $VentiRunTime) {
                if ($cputemp > $MinTemp) {
                    $MSG="Ventilator laeuft bereits $diff Sekunden aber die Temperatur ist mit $content noch zu hoch! (MinTemp: $MinTemp)";
                    echo "$MSG\n";
                    WriteLog("$MSG");
                } else {
                    $MSG="Ventilator laeuft bereits $diff Sekunden und die Temperatur ist mit $content Ok. Ventilator wird abgeschaltet!";
                    echo "$MSG\n";
                    WriteLog("$MSG");
                    @exec("C:\Programme\Power Manager\pm.exe -off -Device1 -1");
                    @unlink("$VentiCheckFile");
                }
            }
        } else {
            if ($cputemp > $MaxTemp) {
                $MSG="Temperatur ist zu hoch: $cputemp (exakt: $content). Ventilator wird eingeschaltet!";
                echo "$MSG\n";
                WriteLog("$MSG");
                @exec("C:\Programme\Power Manager\pm.exe -on -Device1 -1");
                $fp = fopen("$VentiCheckFile", "w");
                fputs ($fp, "$content");
                fclose ($fp);
            } else {
                echo "Temperatur ist mit $content im gruenen Bereich";
            }
        }
    }
    
    function WriteLog($message) {
        global $CreateLog,$LogFile;
        if ($CreateLog == 1) {
            $datetime = date('d.m.Y H:i:s',time());
            $fp = fopen("$LogFile", "a");
            fputs ($fp, "[$datetime] $message\r\n");
            fclose ($fp);
        }
    }
    ?>
    Solange $VentiRunTime nicht erreicht wurde läuft der Ventilator weiter.. Erst wenn $VentiRunTime erreicht wurde wird geprüft ob die gewünschte $MinTemp erreicht wurde, ist das nicht der Fall wird das ins $LogFile geschrieben aber der Venti läuft weiter..
    Erst wenn beides erfüllt ist wird der Venti abgeschaltet
     
    Zuletzt bearbeitet: 28. Juli 2013
    #14
    Centaury79 gefällt das.
  16. Centaury79
    Offline

    Centaury79 <span style="font-weight: bold; color:red">Grill M Supporter

    Registriert:
    1. Juni 2010
    Beiträge:
    622
    Zustimmungen:
    437
    Punkte für Erfolge:
    63
    AW: Per Windowsscript oder Batch die Temp eines Igel IPC auslesen?

    YES, genau so. Königlich, sehr schön.
    Jetzt nur noch das mit dem Log, die schreibt er immer noch hintereinander.
    Kannst du das noch ändern?
     
    #15

Diese Seite empfehlen