Variable „Aktiv (true/false)“ und Event-Trigger werden automatisch angelegt. Dazu muss das Skript einmal von Hand ausgeführt werden, danach läuft alles automatisch.
Dazu muss der Grenzwert herausgefunden werden, dazu am besten einen Wasch-/Trockenvorgang loggen und die Werte, besonders am Ende, beobachten. Dazu auf Pausen während dem Vorgang achten und gegebenenfalls den Timer noch anpassen.
Um dieses Skript verwenden zu können, muss die Waschmaschine/der Wäschetrockner an einem Leistungsmesser angeschlossen sein.
<?
$MaschinenPower = 12345; // Hier die Variable mit Leitungsmessung eintragen (WATT, AMPERE)
$Power_Grenzwert = 3; // Hier den Grenzwert eintragen, bei dem bei Über-/Unterschreitung das Skript ausgeführt werden soll
$PushSenden = true; // TRUE = Push-Nachricht wird gesendet, FALSE = Push-Nachricht wird nicht gesendet (gültige IPS-Subscription notwendig!!)
$PushNachrichtTitel = "WASCHMASCHINE"; // Hier den Titel eintragen, der per Push versendet wird
$PushNachrichtMessage = "...ist FERTIG!"; // Hier den Text eintragen, der per Push versendet wird
$WF_ID = 11111; // ID vom WebFront zum Push-Versand
$TimerDauer = 120; // X Sekunden nach Grenzunterschreitung, wenn dazwischen keine Grenzüberschreitung war, wird das Ende vom Wasch-/Trockenvorgang gemeldet
/****** AB HIER NICHTS MEHR ÄNDERN ******/
$MaschineAktiv = CreateVariableByName($_IPS['SELF'], "Aktiv", 0, "", ""); // Bool-Variable (TRUE = Maschine AKTIV, FALSE = Maschine INAKTIV)
if ((GetValueFloat($MaschinenPower) < $Power_Grenzwert) AND (GetValue($MaschineAktiv) == true)) {
IPS_SetScriptTimer($_IPS['SELF'], $TimerDauer);
}
if (GetValueFloat($MaschinenPower) > $Power_Grenzwert) {
SetValue($MaschineAktiv, true);
IPS_SetScriptTimer($_IPS['SELF'], 0);
}
// Timer-Event
if($IPS_SENDER == "TimerEvent") {
if (GetValueFloat($MaschinenPower) < $Power_Grenzwert) {
IPS_SetScriptTimer($_IPS['SELF'], 0);
//PUSH-Nachricht senden
if ($PushSenden == true) {
WFC_PushNotification($WF_ID, $PushNachrichtTitel, $PushNachrichtMessage, "", 0);
}
// Maschine auf inaktiv setzen
SetValue($MaschineAktiv, false);
}
}
if($_IPS['SENDER'] == "Execute") {
$Event1_ID = CreateEventTrigger("EVENT_Power_Grenzueberschreitung", $MaschinenPower, $_IPS['SELF'], 2);
$Event2_ID = CreateEventTrigger("EVENT_Power_Grenzunterschreitung", $MaschinenPower, $_IPS['SELF'], 3);
IPS_Sleep(1000);
IPS_SetEventTriggerSubsequentExecution($Event1_ID, false);
IPS_SetEventTriggerSubsequentExecution($Event2_ID, false);
}
function CreateVariableByName($ParentID, $VarName, $VarTyp, $VarProfile = "", $VarActionScript = "") {
$VarID = @IPS_GetVariableIDByName($VarName, $ParentID);
if($VarID === false) {
$VarID = IPS_CreateVariable($VarTyp);
IPS_SetParent($VarID, $ParentID);
IPS_SetName($VarID, $VarName);
IPS_SetInfo($VarID, "This variable was created by script #".$_IPS["SELF"]);
if($VarProfile !== "") {
IPS_SetVariableCustomProfile($VarID, $VarProfile);
}
if($VarActionScript !== "") {
IPS_SetVariableCustomAction($VarID, $VarActionScript);
}
}
return $VarID;
}
function CreateEventTrigger($EventName, $VarID, $ParentID, $EventTyp) {
Global $Power_Grenzwert;
$eid = @IPS_GetEventIDByName($EventName, $ParentID);
if (is_numeric($eid) == false) {
$eid = IPS_CreateEvent(0);
IPS_SetEventTrigger($eid, $EventTyp, $VarID);
IPS_SetEventTriggerValue($eid, $Power_Grenzwert);
IPS_SetParent($eid, $ParentID);
IPS_SetName($eid, $EventName);
IPS_SetEventActive($eid, true);
}
return $eid;
}
?>