IP-Symcon - Wie kann ich... 2.0

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++;
}
?>
<?
$array = array("Tobias", "Michael", "Markus");
//print_r($array);


$i = 1;
foreach ($array as $wert) {
	$AusgabeWert = $wert;
	echo "Wert$i = $AusgabeWert"."
";
	$i++;
}
?>