Das folgende Skript muss bei der entsprechenden Variable unter „Eigene Aktion“ als „Action-Skript“ eingetragen werden.
<?
if($_IPS['SENDER'] == "WebFront") {
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
if ($_IPS['VALUE'] === true) {
// Befehl zum Einschalten
}
else {
// Befehl zum Ausschalten
}
}
?>
Andere Variante für eine Integer Variable:
<?
if($_IPS['SENDER'] == "WebFront") {
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
switch ($_IPS['VALUE']) {
case 0:
//Befehl der bei Wert 0 ausgeführt wird
break;
case 1:
//Befehl der bei Wert 1 ausgeführt wird
break;
case 2:
//Befehl der bei Wert 2 ausgeführt wird
break;
default:
//Befehl der bei einem Wert ungleich 0, 1 oder 2 ausgeführt wird
break;
}
}
?>
Andere Variante für eine String Variable:
<?if($_IPS['SENDER'] == "WebFront") {
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
switch ($_IPS['VALUE']) {
case "ABCD":
//Befehl der beim String "ABCD" ausgeführt wird
break;
case "Hallo":
//Befehl der beim String "Hallo" ausgeführt wird
break;
case "Moin":
//Befehl der beim String "Moin" ausgeführt wird
break;
default:
//Befehl der bei einem Wert ungleich "ABCD", "Hallo" oder "Moin" ausgeführt wird
break;
}
}
?>
<?
// OpenWeaterMap.org -- http://openweathermap.org/city/2950159
// Kostenlosen API Key bekommt man hier nach Anmeldung direkt angezeigt:
// http://openweathermap.org/appid#get
//
// Mit einem kostenlosen API Key kann man pro Minute bis zu 60 Abfragen machen. Pro Tag
// sind bis zu 50.000 Abfragen möglich/erlaubt. >> https://openweathermap.org/price
//
// Weitere Abfragemöglichkeiten der API sind hier zu finden (jeweils mit Beispiel-URL):
// http://openweathermap.org/api
$locationID = 2950159; // Location ID von Berlin
$APIkey = "**************************"; // Hier den API Key eintragen
$content = Sys_GetURLContent("http://api.openweathermap.org/data/2.5/forecast/daily?id=".$locationID."&units=metric&lang=de&type=day&APPID=".$APIkey);
$json = json_decode($content);
//print_r($json);
echo "Wetterdaten für ".$json->city->name."
";
echo "Temperatur: ".$json->list[0]->temp->day."°C"."
";
echo "Temperatur (min.): ".$json->list[0]->temp->min."°C"."
";
echo "Temperatur (max.): ".$json->list[0]->temp->max."°C"."
";
echo "Luftdruck: ".$json->list[0]->pressure."hpa"."
";
echo "Luftfeuchtigkeit: ".$json->list[0]->humidity."%"."
";
echo "Windgeschwindigkeit: ".$json->list[0]->speed." Meter/Sekunde"."
";
echo "Windrichtung: ".$json->list[0]->deg." Grad"."
";
?>
Diese Infos bekommt man aktuell von der API zurück:
<?
$LetzterSkriptStart = Round(time() - IPS_GetScript($_IPS['SELF'])['LastExecute']);
echo "Letzte Skript-Ausführung war vor ".$LetzterSkriptStart." Sekunden
";
if ($LetzterSkriptStart > 30) {
// Dieser Teil wird nur aufgerufen, wenn der letzte Skript-Start länger als 30 Sekunden her ist
echo "Der letzte Skript-Start liegt länger als 30 Sekunden zurück
";
}
?>
<?
$Beginn = microtime(true); // START
// Hier steht irgendwelcher Code
IPS_Sleep(3000); // Zum Test > 3 Sekunden warten
$Dauer = microtime(true) - $Beginn; // ENDE
echo "Zwischen START und ENDE sind $Dauer Sekunden vergangen";
?>
<?
$Variablen_ID = 12345; // Hier die Objekt-ID der Variable eintragen
$Variable_Daten = IPS_GetVariable($Variablen_ID);
// 0 = Bool, 1 = Integer, 2 = Float, 3 = String
$Variablen_Typ = $Variable_Daten['VariableValue']['ValueType'];
switch($Variablen_Typ) {
case 0:
echo "Die Variable ist vom Typ > BOOLEAN"."
";
break;
case 1:
echo "Die Variable ist vom Typ > INTEGER"."
";
break;
case 2:
echo "Die Variable ist vom Typ > FLOAT"."
";
break;
case 3:
echo "Die Variable ist vom Typ > STRING"."
";
break;
}
?>
<?
$Tag = Date("w");
$Tag1 = array("7","1","2","3","4","5","6");
echo "Aktueller Tag in der Woche = ", $Tag1[$Tag]."
";
if ($Tag1[$Tag] == 1) {
echo "Es ist Montag"."
";
}
if ($Tag1[$Tag] == 2) {
echo "Es ist Dienstag"."
";
}
if ($Tag1[$Tag] == 3) {
echo "Es ist Mittwoch"."
";
}
if ($Tag1[$Tag] == 4) {
echo "Es ist Donnerstag"."
";
}
if ($Tag1[$Tag] == 5) {
echo "Es ist Freitag"."
";
}
if ($Tag1[$Tag] == 6) {
echo "Es ist Samstag"."
";
}
if ($Tag1[$Tag] == 7) {
echo "Es ist Sonntag"."
";
}
if (((date("H") > 14) OR (date("H") <= 2)) AND (($Tag1[$Tag] >= 1) AND ($Tag1[$Tag] <= 5))) {
echo "Es ist ein Werktag (Montag bis Freitag) und es ist zwischen 14 und 2 Uhr";
}
elseif ((date("H") <= 2) AND ($Tag1[$Tag] >= 6)) {
echo "Es ist Wochenende (Samstag oder Sonntag) und vor 2 Uhr"."
";
}
?>
<?
// Parameter eintragen, dann Gerät aufwecken, falls mit Batterie betrieben, und dann das Skript ausführen
$ParameterListe = array(1,2,3); // hier die gewünschten Parameter eintragen, die ausgegeben werden sollen
$InstanzID = 12345; // Hier die Instanz-ID des Z-Wave Gerät eintragen
foreach ($ParameterListe as $Parameter) {
$Wert = @ZW_ConfigurationGetValue($InstanzID, $Parameter);
echo "Z-WAVE ABFRAGE // Parameter #$Parameter = $Wert
";
IPS_Sleep(250);
}
?>
<?
// Parameter + Wert eintragen, dann den Aktor aufwecken (falls mit Batterie betrieben), kurz danach das Skript ausführen
$ParameterListe = array(1,2,3,4,5,6); // Hier den/die gewünschten Parameter eintragen
$WerteListe = array(99,1,10,55,10,60); // Hier den/die zugehörigen Werte eintragen
$InstanzID = 12345; // Hier die Instanz-ID des Z-Wave Aktor eintragen
$i = 0;
foreach ($ParameterListe as $ParameterX) {
$WertX = $WerteListe[$i];
$result = @ZW_ConfigurationSetValue($InstanzID, $ParameterX, $WertX);
if ($result === true) {
echo "Parameter #$ParameterX wurde erfolgreich auf den Wert -$WertX- gesetzt!"."
";
}
else {
echo "Parameter #$ParameterX - FEHLER - Der Wert konnte nicht gesetzt werden!
";
}
$i++;
IPS_Sleep(300);
}
?>
<?
/*
Variablen-Typ
0 Legt eine Variable vom Typ Boolean an
1 Legt eine Variable vom Typ Integer an
2 Legt eine Variable vom Typ Float an
3 Legt eine Variable vom Typ String an
*/
$Variablen_ID = CreateVariableByName($_IPS['SELF'], "Test-Variable", 1, "", ""); // Legt eine Integer Variable mit Namen "Test-Variable" unter diesem Skript an (ohne Variablenprofil oder Action-Skript)
echo "Die erstellte Variable hat die Objekt-ID $Variablen_ID";
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;
}
?>
<?
/*
Event-Typ
0 Bei Variablenaktualisierung
1 Bei Variablenänderung
2 Bei Grenzüberschreitung. Grenzwert wird über IPS_SetEventTriggerValue festgelegt
3 Bei Grenzunterschreitung. Grenzwert wird über IPS_SetEventTriggerValue festgelegt
4 Bei bestimmtem Wert. Wert wird über IPS_SetEventTriggerValue festgelegt
*/
CreateEventTrigger("Test-Event", 12345, $_IPS['SELF'], 1); // Legt ein Trigger-Event (bei Variablenänderung) für die Variable mit der Objekt-ID 12345 an (damit dieses Skript hier ausgeführt wird, wenn die Variable sich ändert)
function CreateEventTrigger($EventName, $VarID, $ParentID, $EventTyp) {
$eid = @IPS_GetEventIDByName($EventName, $ParentID);
if (is_numeric($eid) == false) {
$eid = IPS_CreateEvent(0);
IPS_SetEventTrigger($eid, $EventTyp, $VarID);
IPS_SetParent($eid, $ParentID);
IPS_SetName($eid, $EventName);
IPS_SetEventActive($eid, true);
}
}
?>
<?
SetTimerByName_InSekunden($_IPS['SELF'], "TimerIn5Sekunden", 5); // Legt einen Timer für dieses Skript an, welcher das Skript in 5 Sekunden ausführt
// Der Timer würde das Skript alle 5 Sekunden erneut aufrufen, bis man den Timer, z.B. wie folgt, wieder deaktiviert
if ($_IPS['SENDER'] == "TimerEvent") {
SetTimerByName_InSekunden($_IPS['SELF'], "TimerIn5Sekunden", false);
}
function SetTimerByName_InSekunden($parentID, $name, $Sekunden) {
Global ${$_IPS['SELF']};
$eid = @IPS_GetEventIDByName($name, $parentID);
if($eid === false) {
$eid = IPS_CreateEvent(1);
IPS_SetParent($eid, $parentID);
IPS_SetName($eid, $name);
IPS_SetInfo($eid, "this timer was created by script #".$_IPS['SELF']);
}
if ($Sekunden === false) {
IPS_SetEventActive($eid, false);
return $eid;
}
else {
IPS_SetEventCyclicTimeFrom($eid, intval(date("H", time() + $Sekunden)), intval(date("i", time() + $Sekunden)), intval(date("s", time() + $Sekunden)));
IPS_SetEventActive($eid, true);
return $eid;
}
}
?>
<?
SetTimerByName_UhrzeitStunde($_IPS['SELF'], "TimerUm20Uhr", 20); // Legt einen Timer für dieses Skript an, welcher das Skript um 20 Uhr ausführt
// Der Timer würde das Skript jeden Tag um 20 Uhr erneut aufrufen, bis man den Timer, z.B. wie folgt, wieder deaktiviert
if ($_IPS['SENDER'] == "TimerEvent") {
SetTimerByName_UhrzeitStunde($_IPS['SELF'], "TimerUm20Uhr", false);
}
function SetTimerByName_UhrzeitStunde($parentID, $name, $Stunde) {
Global ${$_IPS['SELF']};
$eid = @IPS_GetEventIDByName($name, $parentID);
if($eid === false) {
$eid = IPS_CreateEvent(1);
IPS_SetParent($eid, $parentID);
IPS_SetName($eid, $name);
IPS_SetInfo($eid, "this timer was created by script #".$_IPS['SELF']);
}
if ($Stunde === false) {
IPS_SetEventActive($eid, false);
return $eid;
}
else {
IPS_SetEventCyclicTimeFrom($eid, $Stunde, 0, 0);
IPS_SetEventActive($eid, true);
return $eid;
}
}
?>