Script für WOL und Shutdown

Hallo, ich suche nach einem aktuellen Weg (IPS 5.2) einen Rechner via WOL hochzufahren und später dann mittels Net RPC Command vom Rock PI aus (Hier ist IPS installiert) den Pc herunterfahren und das ganze noch in eine Bool Variable Packen. Wie wäre das ganze möglich?

Wie folgt konnte ich es lösen.

Nur springt der An/Aus button im Webfront nicht um, wenn ich auf An oder Aus klicke… die Aktion wird jedoch ausgeführt:

<?php

if($_IPS['SENDER'] == "WebFront")

{

switch($_IPS['VALUE'])

{

case true:
shell_exec("etherwake macadressecomputer"); 

break;

case false:
shell_exec("net rpc shutdown -I Hostnamevomcomputer -U kalli%Arschkopp123"); 


break;

} 
}

Fuege mal folgendes ein:

SetValue($_IPS['VARIABLE'],$_IPS['VALUE']);

Hallo kallii,
einfach in deiner Action case die Variable setzen.
SetValueBoolean($VarID, FALSE);
SetValueBoolean($VarID, TRUE);

Fertig.

Grüße
Stefan

Vielleicht ist auch noch der „Device Monitor“ aus dem Shop interessant, welcher den Onlinestatus eines Netzwerkteilnehmers per Ping überwacht.

Es funktioniert nun halbwegs. Irgendwie aktualisiert sich zwar das Script jedoch nicht die Variable, wenn ich es via Homekit (Schaltsteckdose) Schalte. Was mache ich falsch? Fehlt hier noch etwas im Code, damit HomeKit es auch steuern darf? Gesteuert wird hier eine Boolean Variable, an welcher mein Script hängt.

<?php

if($_IPS['SENDER'] == "WebFront")

{
$VarId=IPS_GetParent($_IPS['SELF']);
switch($_IPS['VALUE'])

{

case true:
shell_exec("etherwake FF:FF:FF:FF:FF:FF"); 
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
break;

case false:
shell_exec("net rpc shutdown -t 0 -I 192.168"); 
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);


break;

} 
}


if($_IPS['SENDER'] == "HomeKit")

{
switch($_IPS['VALUE'])

{

case true:
shell_exec("etherwake FF:FF:FF:FF:FF:FF"); 
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
break;

case false:
shell_exec("net rpc shutdown -t 0 -I 192.168"); 
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);


break;

} 
}



if($_IPS['SENDER'] == "Variable")

{
$VarId=IPS_GetParent($_IPS['SELF']);

switch($_IPS['VALUE'])

{

case true:
shell_exec("etherwake FF:FF:FF:FF:FF:FF"); 
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
break;

case false:
shell_exec("net rpc shutdown -t 0 -I 192.168."); 
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
break;


}
SetValue($VarId,$Value);
}


?>

Hat jemand eine Idee, weshalb mein Script (funktioniert mit Webfront und aus der Symcon App heraus) nicht mit Homekit funktioniert? Ich habe die schaltbare Boolean Variable (welche an das Script geknüpft ist) im Homekit Konfigurator als Schaltbare Steckdose hinterlegt. Schalte ich nun An/Aus sehe ich zwar, dass die Uhrzeit vom Script sich updatet jedoch nicht der eigentliche Wert.

Wo ist der Haken? Bzw. mein Fehler?

$_IPS[‚SENDER‘] ist dann ja nicht WebFront.
Sondern vermutlich VoiceControl:
Systemvariablen — IP-Symcon :: Automatisierungssoftware
Michael

Das mit der VoiceControl hat super funktioniert danke!!! Ich danke da müsste Homekit stehen…

Jetzt hab ich noch das Problem, dass ich die Variable nicht via Ereignis umschalten kann. Sobald ein Ereignis versucht die Boolean Variable zu schalten sieht man nur, dass das Script ausgeführt wird… die Variable ändert sich nicht. Ich glaube ich hab mittlerweile so viele Switch IPS Variable/Value im Script, dass es nicht mehr klappt.

if($_IPS['SENDER'] == "Variable")

{

switch($_IPS['VALUE'])

{

case true:
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
break;

case false:
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);


break;

} 
}

Also ich hab jetzt ewig herumgespielt und im Forum gesucht… Ich bekomme es einfach nicht hin.

Ich hab das Script mal kopiert (Webfront und via VoiceControl gehts ja nun) und hab die Webfront und voice sektion gelöscht und auf das hier beschränkt:

<?php

if ($_IPS['SENDER'] == "Variable") 
{

SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

} 

?>

Selbst das führt nicht zum erfolg. Das sagt doch ganz klar, wenn der sender eine Variable ist bzw ein auslösendes Ereignis, dann Schalte die Variable so und so auf den und den Wert (Value) oder sehe ich das falsch?

Ich habe das selber gerade mal nachgebaut. Das scheint über den undokumentierter Sender ‚Action‘ zu gehen. Du kannst den Sender sonst ja aber prüfen, indem du am Anfang vom Aktionsskript


IPS_LogMessage('SkriptSender', $_IPS['SENDER']);

einfügst. Dann steht bei Ausführung der Sender im Nachrichtenlog.