<?
// Überprüfen der letzten Aktualisierung/Änderung einer Variable
$Variablen_ID = 12345; // Hier die Objekt-ID der Variable eintragen
$Variable_Daten = IPS_GetVariable($Variablen_ID);
$Delta = time()-($Variable_Daten['VariableUpdated']); // Letzte Variablenaktualisierung
//$Delta = time()-($Variable_Daten['VariableChanged']); // Letzte Variablenänderung
echo "DELTA seit letzter Aktualisierung: ".$Delta."
";
if ($Delta > 60) { // Variable wurde vor über 60 Sekunden zuletzt aktualisiert
echo "Das Delta hat Grenzwert von -$Delta- überschritten!";
}
?>
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:
stdClass Object
(
[city] => stdClass Object
(
[id] => ********
[name] => *************
[coord] => stdClass Object
(
[lon] => **********
[lat] => ************
)
[country] => DE
[population] => 0
)
[cod] => 200
[message] => 0.0359
[cnt] => 7
[list] => Array
(
[0] => stdClass Object
(
[dt] => 1234567890
[temp] => stdClass Object
(
[day] => 8.14
[min] => 4.65
[max] => 8.14
[night] => 4.65
[eve] => 6.27
[morn] => 7.29
)
[pressure] => 999.15
[humidity] => 100
[weather] => Array
(
[0] => stdClass Object
(
[id] => 500
[main] => Rain
[description] => leichter Regen
[icon] => 10d
)
)
[speed] => 2.87
[deg] => 231
[clouds] => 88
[rain] => 2.71
)
[1] => stdClass Object
(
[dt] => 1445079600
[temp] => stdClass Object
(
[day] => 6.4
[min] => 4.09
[max] => 6.92
[night] => 4.2
[eve] => 5.21
[morn] => 4.09
)
[pressure] => 1001.73
[humidity] => 100
[weather] => Array
(
[0] => stdClass Object
(
[id] => 500
[main] => Rain
[description] => leichter Regen
[icon] => 10d
)
)
[speed] => 2.56
[deg] => 206
[clouds] => 80
[rain] => 0.74
)
[2] => stdClass Object
(
[dt] => 1445166000
[temp] => stdClass Object
(
[day] => 8.14
[min] => 2.51
[max] => 8.37
[night] => 2.51
[eve] => 4.77
[morn] => 4.3
)
[pressure] => 1003.04
[humidity] => 100
[weather] => Array
(
[0] => stdClass Object
(
[id] => 500
[main] => Rain
[description] => leichter Regen
[icon] => 10d
)
)
[speed] => 1.86
[deg] => 200
[clouds] => 92
[rain] => 0.58
)
[3] => stdClass Object
(
[dt] => 1445252400
[temp] => stdClass Object
(
[day] => 8.52
[min] => 4.29
[max] => 8.52
[night] => 4.59
[eve] => 5.69
[morn] => 4.29
)
[pressure] => 1002.82
[humidity] => 0
[weather] => Array
(
[0] => stdClass Object
(
[id] => 500
[main] => Rain
[description] => leichter Regen
[icon] => 10d
)
)
[speed] => 2.73
[deg] => 14
[clouds] => 71
[rain] => 0.28
)
[4] => stdClass Object
(
[dt] => 1445338800
[temp] => stdClass Object
(
[day] => 8.47
[min] => 4.1
[max] => 8.47
[night] => 4.1
[eve] => 5.63
[morn] => 4.19
)
[pressure] => 1007.64
[humidity] => 0
[weather] => Array
(
[0] => stdClass Object
(
[id] => 500
[main] => Rain
[description] => leichter Regen
[icon] => 10d
)
)
[speed] => 2.07
[deg] => 27
[clouds] => 70
[rain] => 0.23
)
[5] => stdClass Object
(
[dt] => 1445425200
[temp] => stdClass Object
(
[day] => 8.76
[min] => 4.43
[max] => 8.76
[night] => 6.31
[eve] => 6.33
[morn] => 4.43
)
[pressure] => 1003.79
[humidity] => 0
[weather] => Array
(
[0] => stdClass Object
(
[id] => 500
[main] => Rain
[description] => leichter Regen
[icon] => 10d
)
)
[speed] => 1.8
[deg] => 235
[clouds] => 7
[rain] => 2.23
)
[6] => stdClass Object
(
[dt] => 1445511600
[temp] => stdClass Object
(
[day] => 9.68
[min] => 7.07
[max] => 9.68
[night] => 7.07
[eve] => 7.75
[morn] => 7.41
)
[pressure] => 999.63
[humidity] => 0
[weather] => Array
(
[0] => stdClass Object
(
[id] => 501
[main] => Rain
[description] => mäßiger Regen
[icon] => 10d
)
)
[speed] => 3.63
[deg] => 286
[clouds] => 44
[rain] => 4.6
)
)
)
<?
$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
";
}
?>
<?
$NegativeZahl = -850;
if ($NegativeZahl < 0) {
$PositiveZahl = $NegativeZahl * -1;
}
echo "Negative Zahl = '$NegativeZahl' // Positive Zahl = '$PositiveZahl'";
?>
Weitere Infos zu RegEx findet ihr auf diesen Seiten:
PHP: preg_match - Manual
http://regexp-evaluator.de/evaluator/
Der RegExp-Evaluator - RegExp-Tutorial
<?
$puffer = '25.12.2014 --- Ganztägig --- X
26.12.2014 --- Ganztägig --- N
27.12.2014 --- Ganztägig --- X
17.07.2015 --- Ganztägig --- X
18.07.2015 --- Ganztägig --- F
19.07.2015 --- Ganztägig --- X
20.07.2015 --- Ganztägig --- S';
$regexTage = '|(.*)[0-9.]{10}|';
$regexSchichten = '|(.*)[0-9.]{10}.*\s\s\s(.*)|';
$heute = date("d.m.Y"); // z.B. "20.01.2015"
$regexHeute = '/'.$heute.'/';
preg_match_all($regexTage, $puffer, $matchTage);
//print_r($matchTage);
preg_match_all($regexSchichten, $puffer, $matchSchichten);
//print_r($matchSchichten);
$tagex = 0;
foreach($matchTage["0"] AS $tage) {
//echo $tage."
";
preg_match($regexHeute, $tage, $matchHeute);
if ($matchHeute == true) {
$terminx = $matchSchichten[2][$tagex];
$terminx = str_replace("\r", "", $terminx);
$regexTerminx = '|'.$terminx.'|';
preg_match($regexTerminx, "N", $matchN);
if ($matchN == true) {
echo "Heute ist Schicht -N- aktiv!";
}
preg_match($regexTerminx, "X", $matchN);
if ($matchN == true) {
echo "Heute ist Schicht -X- aktiv!";
}
preg_match($regexTerminx, "F", $matchN);
if ($matchN == true) {
echo "Heute ist Schicht -F- aktiv!";
}
preg_match($regexTerminx, "S", $matchN);
if ($matchN == true) {
echo "Heute ist Schicht -S- aktiv!";
}
}
$tagex = $tagex + 1;
}
?>
<?
$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;
}
?>
<?
//$mittelpunkt = time(); // Aktuelle zeit als Mittelpunkt
$mittelpunkt = mktime(20, 0, 0, date("m"), date("d"), date("Y")); // 20 Uhr als Mittepunkt
$differenzzeit = 2; // 2 Stunden Vorlauf und Nachlauf um deine Mittelpunkt Ausgangszeit
$vorlaufstring = "-".$differenzzeit." hour";
$nachlaufstring = "+".$differenzzeit." hour";
$vorlauf = strtotime($vorlaufstring, $mittelpunkt);
$nachlauf = strtotime($nachlaufstring, $mittelpunkt);
echo $mittelpunkt."
"; // Unix-Timestamp
echo $vorlauf."
"; // Unix-Timestamp
echo $nachlauf."
"; // Unix-Timestamp
echo "Vorlauf-Event: ".date('d.m.Y H:i:s', $vorlauf)."
";
echo "Mittelpunkt: ".date('d.m.Y H:i:s', $mittelpunkt)."
";
echo "Nachlauf-Event: ".date('d.m.Y H:i:s', $nachlauf)."
";
?>
<?
$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);
}
?>
<?
$Sekunden = 199999;
$Ausgabe = SekundenUmrechnen($Sekunden);
echo "Tage: " . $Ausgabe['tag'] . "
";
echo "Stunden: " . $Ausgabe['std'] . "
";
echo "Minuten: " . $Ausgabe['min'] . "
";
function SekundenUmrechnen($Sekunden){
$Tage = floor($Sekunden / (3600*24));
$Stunden = floor($Sekunden / 3600 % 24);
$Minuten = floor($Sekunden / 60 % 60);
return array("min"=>$Minuten,"std"=>$Stunden,"tag"=>$Tage);
}
?>
<?
$Such_ID = 12345; // Objekt-ID der Variable auf die ein Event "zielt/lauscht/reagiert"
$Ereignisse = IPS_GetEventListByType(0); // Alle "ausgelösten Ereignisse"
foreach ($Ereignisse as $Ereignis) {
if (IPS_GetEvent($Ereignis)['TriggerVariableID'] == $Such_ID) {
$ParentID = IPS_GetParent($Ereignis);
$ParentName = IPS_GetName($ParentID);
echo "Variable gefunden in Event-ID: ".$Ereignis." // Parent Objekt: ".$ParentName."
";
}
}
?>
<?
/*
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;
}
}
?>
hoch:
<?
$MaximalerWert = 10;
$i = 0;
for ($i; $i < $MaximalerWert; $i++) {
echo "Hochzählen1: $i"."
";
}
echo "
";
$i = 1;
for ($i; $i <= $MaximalerWert; $i++) {
echo "Hochzählen2: $i"."
";
}
?>
runter:
<?
$MinimalerWert = 0;
$i = 10;
for ($i; $i > $MinimalerWert; $i--) {
echo "Runterzählen1: $i"."
";
}
echo "
";
$i = 10;
for ($i; $i >= $MinimalerWert; $i--) {
echo "Runterzählen2: $i"."
";
}
?>
<?
$array[0] = array("HOST_NAME"=>"server1", "SERVICE_NAME"=>"ips1");
$array[1] = array("HOST_NAME"=>"server2", "SERVICE_NAME"=>"ips2");
//print_r($array);
$i = 0;
foreach ($array as $key) {
$hostname = $array[$i]["HOST_NAME"];
echo "Hostname$i = $hostname"."
";
$servicename = $array[$i]["SERVICE_NAME"];
echo "Servicename$i = $servicename"."
";
$i++;
}
?>