PC an oder aus?

Hallo zusammen,

bei dem Threadtitel werden sich der ein oder andere jetzt wohl die Haare raufen. Aber ich hab echt nichts passendes gefunden.

Folgendes Szenario:

Ich habe mir in IPS die Möglichkeit gebastelt, meinen PC rauf und runter zu fahren. Nun ist es jedoch so, dass wenn ich den PC in Windows herunterfahre während ich ihn jedoch per IPS eingeschaltet hab, der Status immer noch auf „An“ (also true) steht. So sieht es derzeit aus

Und das sind die passenden Scripts dazu

PC AN:

 //Fügen Sie hier ihren Skriptquellcode ein
$mac = "xxxxxxxxxxxx"; //MAC Adresse des einzuschaltenden Gerätes
 $ip = "255.255.255.255"; // Broadcast adresse

wake($ip,$mac,15);//Port kann irgendwas sein

function wake($ip, $mac, $port)
{
  $nic = fsockopen("udp://" . $ip, $port);
  if($nic)
  {
    $packet = "";
    for($i = 0; $i < 6; $i++)
       $packet .= chr(0xFF);
    for($j = 0; $j < 16; $j++)
    {
      for($k = 0; $k < 6; $k++)
      {
        $str = substr($mac, $k * 2, 2);
        $dec = hexdec($str);
        $packet .= chr($dec);
      }
    }
    $ret = fwrite($nic, $packet);
    fclose($nic);
    if($ret)
      return true;
  }
  return false;
}

PC AUS:

 IPS_ExecuteEx("C:/IP-Symcon/automatic/rechner.bat", "", true,false, 1);

Jetzt dachte ich mir: Ganz simpel, Flo. Legst ein Ereignis an welches in regelmäßigen Abständen den Rechner anpingt und dementsprechend den Status setzt. Ja, Pustekuchen. Ich finde einfach nichts passendes. Bin zwar über den (W)LAN Watchdog gestolpert und den SYSPing Befehl aber ich krieg das irgendwie nicht so ganz zusammengefasst.

Könnt ihr mir weiterhelfen?

klar kann man hier helfen. Wenn du noch verrätst, wo genau es hakt.
Nach der obigen Beschreibung hätte ich dir wohl auch sysping oder das LAN-Watch-Script präsentiert. Aber das hast du ja schon gefunden. Also: wo genau hakt es denn?

So vielleicht?


<?
$ID = xxxxx; // ID der Statusvariable Boolean von Flo's PC
$IP = xxx.xxx.xxx.xxx; // IP von Flo's PC

if (Sys_Ping($IP, 1000)) // Ziel, Wartezeit
    {
    SetValue($ID, true);
    }
else 
    {
    SetValue($ID, false);
    }
?>

Müsste dann regelmäßig ausgeführt werden.

Eventuell liegt es ja an diesem drieseligen Sonntag :smiley:

Ich komme einfach nicht auf den Trichter wie ich es miteinander verbinden muss. bzw. wie ich die SYSPing richtig einsetze…

ok, schon etwas transparenter…

ich könnte mir hier mehrere Wege vorstellen:

  1. ein ständiger sysping-Intervall, der alle x Sekunden den status des PC’s abfragt und in eine separate Var schreibt.
    deine beiden Scripte würden dann diesen Status berücksichtigen, in dem jeweils der Status der Pin-Var abgefragt wird.
    Beispiel: das runterfahr-Script startet nur, wenn in der Ping-Var der Status „Online“ steht

  2. Siehe Beispiel Kronos oben: du baust in deine beiden Scripte eine Ping-Abfrage ein.

welchen Weg hättest du gern? -> dann kan man auch konkret über Scriptbeispiele nachdenken :wink:

Alles klar. Das Script von Kronos ist ideal. Nur die IP Adresse müssen in „“ gesetzt werden. Wird jetzt alle 15 Sekunden ausgelöst und gut ist.

Danke an Raketenschnecke und Kronos :smiley:

Ich hab jetzt knapp ein halbes Jahr nix mehr gemacht und bin schon wieder komplett raus. Und das obwohl in der nächsten Zeit eine komplett Hausautomation ansteht…:eek:

Ich habe das bei einigen Geräten noch mit einem Zähler kombiniert damit der Alarm nicht zu früh los geht. Ab und zu kommt es vor, dass ein „Nicht-PC“ nicht innerhalb der erwarteten Zeit akurat antwortet (z.b. Homematic LAN-Adapter).
Bei solchen Kandidaten müssen erst mehrere Ping-Anfragen fehlgeschlagen sein bis IPS da am Rad dreht…

autsch…normalerweise wird hier der Foren-Cerberus sofort aktiv :smiley:

@Kronos IPS soll hier keinen Alarm schlagen sondern nur den richtigen Status setzen. Und mit deinem Script ist alles wunderbar :slight_smile:

@Raketenschnecke Nee waren doch nur 3-4 Monate :stuck_out_tongue: Außerdem hab ich immer Leckerlis dabei

Ich hab leider doch einen Denkfehler gehabt.

Das Script von Kronos macht zwar genau was es soll, nämlich prüfen ob der PC an oder aus ist. Jedoch wird der PC angepingt (und ich denke mal, da er auf WOL konfiguriert ist gibt er auch den Ping wieder zurück) und das Script schaltet automatisch den Switch auf „An“ was dann auch der Befehl für das komplette hochfahren ist.

Somit wird der Rechner jedesmal neu gestartet. Jemand ne Idee, wie ich das umschiffen kann?

Viele Grüße

Flo

Variante 1.) ?

Das wird’s dann wohl werden. Aber das Runterfahrscript soll ja nur aktiviert werden, wenn ich im Webfront auch den Befehl dazu geb.

Also müsste quasi ein Script her, welches nur den „Schalter“ ändert und nicht das Script auslöst welches dahinter abgelegt ist. Das meintest Du damit, oder?

Wäre mir neu, dass ein Rechner im Tiefschlaf auf ein Ping antwortet. Das ist Sache des Betriebsystems während WOL der Job des Chipsatzes der Netzwerkkarte ist.

Ansonsten gäbe es noch zwei Ausweichmöglichleiten die mir auf Anhieb einfallen:

  1. Du fragt eine bestimmte Port-Nummer ab ob diese auf dem Rechner aktiv ist. Welche Ports auf dem Rechner aktiv sind müsstest Du wissen.

<?
$ID = xxxxx; // ID der Statusvariable Boolean von Flo's PC
$IP = "xxx.xxx.xxx.xxx"; // IP von Flo's PC
$Port = 80; // abzufragende Portadresse

$Status = fsockopen($IP, $Port, $errno, $errstr, 1);

if ($Status) // Ziel, Wartezeit
    {
    SetValue($ID, true);
    fclose($Status);
    }
else 
    {
    SetValue($ID, false);
    }
?> 

  1. Du installiert die IPSTools von Brownson auf dem Rechner. Dann könntest Du den Status des Client-Sockels in IPS abfragen. Socket geöffnet = Rechner an und IPSTools aktiv. Socket fehlerhaft = Rechner aus.

Hmm…ich habs mal ausprobiert. Wenn ich den Rechner manuell „anpinge“ passiert nichts. Der Rechner bleibt aus.

Aber aus irgendwelchen Gründen, wir bei der Ausführung des Scriptes der Rechner eingeschaltet. Ich glaube aber mittlerweile, dass liegt an dem Scriptwust den ich mir hierfür angelegt hab…

Ich hab zunächst mal die Grundscripte fürs ein und auschalten. Dann die Boolean für den Schalter im Webfront. Und damit die Variable dann auch als Schalter fungiert, musste hierfür auch nochmal ein Script her. Und ich denke, dass da irgendwo der Hund begraben liegt.

Denn dein Script Kronos, löst wohl aus irgendwelchen Gründen das Einschaltscript aus…

EDIT: Aus irgendwelchen Gründen funktioniert es jetzt. Hab das Script nochmal neu angelegt. Und siehe da. Keine automatisches Rechner hochfahren mehr.

Viele Grüße und Danke

Flo