IP-Symcon - Wie kann ich... 2.0

Hallo allerseits!

In der IPS-Doku gibt es ja schon einen für Einsteiger sehr praktischen „wie kann ich…“ Bereich. Aber ich bin der Meinung, da geht noch mehr :slight_smile:

Deshalb möchte ich hier eine Sammlung aufbauen aus „Mini-Projekten“ mit Code-Beispielen. Hier kann man sich dann Ideen holen, Code-Fetzen kopieren und erweitern, …

Gerne könnt ihr auch eure Funktionen posten, z.B. zur Berechnung von Mittelwerten, Umrechnungen Datum/Uhrzeit, usw… Funktionen aber bitte mit Beispielen, wie man diese aufruft.

Wenn man etwas sucht, einfach mal hier durch den Thread klicken, oder das Thread durchsuchen. Dann findet man vlt. eher/schneller etwas, als wenn man das komplette Forum durchsucht.

Soooo…ich mache mal den Anfang mit ein paar Skripten/Beispielen und ihr dürft dann gerne, nach dem gleichen Schema, weitermachen :slight_smile: Denn ich bin mir sicher, dass so ziemlich jeder von euch im IPS einen Ordner hat, wo er kleine Beispiele gesammelt hat :slight_smile: Also bitte her damit :smiley:

Aufbau bitte wie folgt:
> Titel = Thema des Beispiel/Mini-Projekt
> Text = Kurze Beschreibung / Weitere Infos & Links zum Thema + PHP-Code (bitte „PHP-Code einfügen“ Button verwenden)
>> Bitte eure Signatur für diese Beiträge abschalten (einfach den Haken dazu, unter dem Beitrag, vor dem Absenden, entfernen)

[b]>> BITTE in diesem Thread keine Fragen und wieso und warum und weshalb, sondern NUR SKRIPTE posten!

>> Wenn ihr Fragen zu einem Skript habt, dann bitte einen neuen Thread eröffnen und dort eure Frage(n) stellen und gegebenenfalls auf den Beitrag hier aus dem Thread verweisen![/b]

> Ihr habt Ideen oder Wünsche, was man noch für Beispiel-Skripte veröffentlichen könnte/sollte, weil diese oft gebraucht werden? Dann könnt ihr hier eure Ideen/Wünsche posten >> IPS - Wie kann ich… 2.0 (Ideen & Wünsche)

> Hier gibt es auch noch eine schöne Sammlung von Skripten/Projekten/Anleitungen >> Script Library Sammlung und nützliche Anleitungen

> Und hier noch der Link zum „Wie kann ich…?“ Bereich in der IPS-Doku >> Wie kann ich…?

> Natürlich darf auch ein Link zur Befehlsreferenz von IPS nicht fehlen, damit man Befehle, die man nicht kennt/versteht, direkt nachschlagen kann >> Befehlsreferenz

> Last but not least…eine Übersicht der verfügbaren Module (ab IPS 4.0) >> Übersicht der PHP-Module

Grüße,
Chris

Vorläufiges Inhaltsverzeichnis >>> UNSORTIERT!
Bitte Vorschläge zur Sortierung per PN an mich! Danke! :slight_smile:

Inhaltsverzeichnis:
Datum, Uhrzeit, Wochentage, Monate, …
Umwandlung der englischen Rückgaben von „date“ in die deutsche Schreibweise
Datum/Wochentage und Intervalle (z.B. Datum von jedem 2. Montag ausgeben)
Datum/Wochentage und Intervalle (z.B. Datum von jedem 2. Montag PRO MONAT ausgeben)
Zeiten um einen Zeitpunkt herum (z.B. für einen Vorlauf/Nachlauf)
Zeitangabe „2:01:03“ (Stunden:Minuten:Sekunden) umrechnen in Sekunden
Wochentage + Werktag und Wochenende
Delta/Zeit seit letzter Variablenänderung/Variablenaktualisierung
Wann wurde ein Skript zuletzt ausgeführt
Zeit messen die ein Skript für einen Code zur Ausführung/Abarbeitung benötigt
Im Archiv geloggte Daten auswerten (z.B. Bewegungsmelder, Fenster/Türen, …)
Bild herunterladen/downloaden/speichern
Variable über WebFront/App schalten (Action-Skript) + switch case default
HEX zu BINÄR umrechnen/umwandeln
RGB zu HEX umrechnen/umwandeln
JSON Daten von einer Webseite auslesen und auswerten
Negative Zahl in positive Zahl umwandeln/umrechnen
Daten/Infos mit RegEx aus einem String holen/parsen
Typ einer IPS-Variable herausfinden (Boolean, Integer, Float, String)
Z-Wave Aktor/Device // Parameter auslesen per Script
Z-Wave Aktor/Device // Parameter setzen per Script
Sekunden umrechnen (in Minuten, Stunden und Tage)
Event(s) herausfinden, die auf eine Variable „zeigen/reagieren“
Variable durch ein Skript erstellen/anlegen
Trigger-Event durch ein Skript erstellen/anlegen
Timer per Skript erstellen (Aufruf in/alle X Sekunden // inkl. deaktivieren d. Timer)
Timer per Skript erstellen (Aufruf um X Uhr // inkl. deaktivieren d. Timer
FOR Schleife (hoch zählen // runter zählen)
Array mit FOREACH „auslesen“ (Variante 1)
Array mit FOREACH „auslesen“ (Variante 2)
Event als Bedingung, damit bestimmte Befehle ausgeführt werden
Bewegungsmelder soll eine Lampe einschalten
Feiertag/Wochenende/Werktag heute oder morgen
HomeMatic - Anzahl aller Instanzen und zugehöriger Variablen auslesen
Zählen von Ausführungen in einer Variable (z.B. Öffnungs-Counter,Fehler-Counter, …)
Anwesenheit in Variable eintragen (Beispiel mit 2 Personen)
Ein Skript durch ein Skript erstellen lassen
Skript(e) zum Sonnenaufgang und/oder Sonnenuntergang ausführen lassen (per Timer)
Variablenprofil durch ein Skript erstellen lassen
Variablen ein (neues) Actionskript durch ein Skript zuweisen lassen
Switch - Case (Eine Alternative zur IF-Abfrage)
Überprüfen von Variablen auf Status (z.B. offene Fenster oder eingeschaltete Lampen)
HomeMatic - Mehrere Aktoren (Lampen, Geräte, …) ein-/ausschalten (z.B. bei ALL OFF)
Z-Wave - Mehrere Aktoren (Lampen, Geräte, …) ein-/ausschalten (z.B. bei ALL OFF)
Z-Wave - Eine Lampe langsam auf eine bestimmte Helligkeit dimmen
Eine Nachricht an eine Dreambox senden und auf dem TV/Beamer anzeigen lassen
Waschmaschine/Wäschetrockner/Spülmaschine/… - Maschine aktiv/inaktiv? Mit Push-Info
DOM XPath (Auslesen/Parsen von Webseiten)
Informationen über ein IPS Objekt
UNIXtime in DELPHItime umrechnen/umwandeln
Mittelwert / Median / Mean
Dateinamen (neuste Datei in Ordner auslesen)
Doppelte Skript-Ausführung verhindern/unterbinden
Fehlerhafte Objekte/Skripte aus IPS auslesen und anzeigen
Min. und Max. Temperatur eines Zeitraumes (mit Zeitangabe)
TCP/UDP Port-Check
Schaltuhr / Wochenschaltuhr
Prüfen, ob ein Skript (nicht) beendet wurde
PHP-Threads in IPS auslesen
Auslastung der PHP Threads - Warnung ausgeben bei hoher Auslastung
LCN SKH auswerten
LCN-Display von IPS steuern
Letzten X Zeilen aus dem „Meldungen-Log“ der IPS-Console auslesen
Raspberry Daten auslesen (Temperatur, CPU Infos, …)
Script toggelt (Aktiv/Inaktiv) alle Events unterhalb einer Kategorie
Server Uptime auslesen (Windows)
Verwaiste Einträge aus Archiv entfernen (wenn zugehörige Variablen gelöscht wurden)
Skripte auf anderen IPS-Systemen anlegen/updaten (JSON-RPC API)
Webhook (IPS-Skripte über URL-Aufruf ausführen & IPS-Variablen setzen und auslesen)
Meldungen Log für BOOL-Variable (z.B. Haustür/Fenster/…)
Analyse aller Objekte im Objektbaum mit deren Objekttypen

<?
$Remote_Bild = "https://www.symcon.de/images/logo.png";
$Lokale_BildDatei = IPS_GetKernelDir()."\\media\	estbild.png";  // z.B.  C:\IP-Symcon\media	estbild.png

//Bild herunterladen
$Content = @Sys_GetURLContent($Remote_Bild);

// Bild in Datei speichern
file_put_contents($Lokale_BildDatei, $Content);
?>
<?
// Ü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;
	}
}
?>