<?
##################################################################################
# Zum überprüfen ob der entsprechende TCP-Port erreichbar ist oder geblockt wird #
# Für einen UDP Check muss ein udp// vor die IP-Adresse gesetzt werden. #
##################################################################################
//$port = array(1012,49000); // Fritzbox
//$port = array(2000,2001,2002,5544); // Homematic. Für den Lanadapter muss nur Port 2001 und 5544 erreichbar sein
for($i=0; $i<count($port); $i++)
{
$socket = fsockopen("xxx.xxx.xxx.xxx", $port[$i], $errno, $errstr); // IP Adresse anpassen
if(!$socket)
{
echo "ERROR: $errno - $errstr
";
}
else
{
echo "Port: ".$port[$i]." ist erreichbar.
";
}
}
?>
<?
// Skript einmal von Hand ausführen
$Check_Intervall = 60; // Prüf-Intervall in Sekunden
if ($_IPS['SENDER'] == "Execute") {
IPS_SetScriptTimer($_IPS['SELF'], $Check_Intervall);
}
$Threads = IPS_GetScriptThreadList();
$count = 0;
for($i=0;$i<count($Threads);$i++) {
if (@IPS_GetScriptThread($i)['StartTime'] != 0) {
$count++;
}
}
$Auslastung = round(($count/count($Threads)), 1)*100;
echo "Die PHP-Threads haben eine Auslastung von $Auslastung%";
if ($Auslastung >= 80) {
echo "!!!ACHTUNG!!! PHP-Threads haben eine Auslastung von $Auslastung%";
}
?>
<?
// Geloggte Daten eines Bewegungsmelder aus dem Archiv auswerten
//
// Beispiel:
// Bewegungen vom 11.09.2015 (00:00:00 bis 23:59:59) auswerten
//
// !!ACHTUNG!! Da "Rohdaten" verwendet werden, kann die Auswahl eines größeren Zeitraumes eine erhöhte CPU-Auslastung verursachen!
$ArchiveID = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]; // Archiv Handler ID wird automatisch ausgelesen
$State_VarID_Bewegungsmelder = 12345 /*[Hardware\HomeMatic\Bewegungsmelder\B04 (Wohnzimmer vorne)\Sensor\MOTION]*/; // Hier die Variablen ID (z.B. bei HomeMatic die "STATE" Variable eintragen
// Zeitraum bei AC_GetLoggedValues wird wie folgt angegeben (Stunde, Minute, Sekunde, Monat, Tag, Jahr)
$ZeitraumVON = mktime(0, 0, 0, 9, 11, 2015); // Es kann auch date oder strtotime oder sonstiges verwendet werden
$ZeitraumBIS = mktime(23, 59, 59, 9, 11, 2015); // Es kann auch date oder strtotime oder sonstiges verwendet werden
$LogDatenAR = AC_GetLoggedValues($ArchiveID, $State_VarID_Bewegungsmelder, $ZeitraumVON, $ZeitraumBIS, 0);
//print_r($LogDatenAR);
$Count = 0;
$Duration = 0;
foreach ($LogDatenAR as $LogWert) {
if ($LogWert['Value'] == 1) {
$Count++;
$Duration = $Duration + $LogWert['Duration'];
}
}
$DurationSek = $Duration;
$DurationMin = intval($Duration / 60);
$DurationStd = round($DurationMin / 60, 2);
echo "Es wurden $Count Bewegungs-Phasen erkannt.
Die Bewegungs-Phasen hatten eine Gesamtdauer von $DurationMin Minuten (= $DurationSek Sekunden = $DurationStd Stunden).";
?>
Beispiel mit einer Haustür:
<?
// Geloggte Daten einer Tür/eines Fenster aus dem Archiv auswerten
//
// Beispiel:
// Bewegungen vom 11.09.2015 (00:00:00 bis 23:59:59) auswerten
//
// !!ACHTUNG!! Da "Rohdaten" verwendet werden, kann die Auswahl eines größeren Zeitraumes eine erhöhte CPU-Auslastung verursachen!
$ArchiveID = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]; // Archiv Handler ID wird automatisch ausgelesen
$State_VarID_TuerFenster = 12345 /*[Hardware\HomeMatic\Tür-Fenster-Kontakt\KONTAKT03 (Haustür)\Kontakt\STATE]*/; // Hier die Variablen ID (z.B. bei HomeMatic die "STATE" Variable eintragen
// Zeitraum bei AC_GetLoggedValues wird wie folgt angegeben (Stunde, Minute, Sekunde, Monat, Tag, Jahr)
$ZeitraumVON = mktime(0, 0, 0, 9, 11, 2015); // Es kann auch date oder strtotime oder sonstiges verwendet werden
$ZeitraumBIS = mktime(23, 59, 59, 9, 11, 2015); // Es kann auch date oder strtotime oder sonstiges verwendet werden
$LogDatenAR = AC_GetLoggedValues($ArchiveID, $State_VarID_TuerFenster, $ZeitraumVON, $ZeitraumBIS, 0);
//print_r($LogDatenAR);
$Count = 0;
$Duration = 0;
foreach ($LogDatenAR as $LogWert) {
if ($LogWert['Value'] == 1) {
$Count++;
$Duration = $Duration + $LogWert['Duration'];
}
}
$DurationSek = $Duration;
$DurationMin = intval($Duration / 60);
$DurationStd = round($DurationMin / 60, 2);
echo "Es wurden $Count Tür/Fenster-Öffnungen erkannt.
Die gesamte Öffnungsdauer beträgt $DurationSek Sekunden (= $DurationMin Minuten = $DurationStd Stunden).";
?>
<?
// Zeigt an, wann der Computer zuletzt gestartet wurde. Getestet unter Win7 und Win10
$uptime = IPS_Execute('cmd /c net statistics server | find /i "Statistik seit"', "", false, true);
preg_match('|seit(.*)|', $uptime, $matchuptime);
$uptime = substr($matchuptime[1], 1, -1);
echo "Server online seit: $uptime";
?>
Skript zum Löschen aller verwaisten Archiv-Einträge. Es werden alle Einträge aus dem Archiv gelöscht, wovon keine zugehörigen Variablen mehr existieren. Diese sind im Archiv meisten daran zu erkennen >> „Objekt #12345 existiert nicht“
Sollte die VariablenID in der Zwischenzeit neu vergeben worden sein, dann wird nichts gelöscht und man hat sich das Logging versaut Wurde die ID an ein Skript oder ein anderes Objekt vergeben, dann wird dieser Name auch im Archiv angezeigt und fällt weniger auf, wird aber dann durch dieses entfernt.
Einfach das Skript unten einmal ausführen, dann wird einem angezeigt was gelöscht werden würden. Braucht man die alten Archiveinträge nicht mehr, dann kann man die Variable $Testlauf auf FALSE setzen und nach ein paar Sekunden/Minuten (je nach Anzahl) sind alle verwaisten Einträge weg
<?
ini_set("max_execution_time", 600);
$Testlauf = true; // Variable auf FALSE setzen, dann werden die Variablen wirklich aus dem Archiv gelöscht. Bei TRUE werden die Variablen-IDs nur angezeigt/ausgegeben, aber es wird nichts gelöscht!
$VarCount = 0;
$VarCountX = 0;
$AC_ID = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0];
$LoggedVarIDs = AC_GetAggregationVariables($AC_ID, true);
foreach ($LoggedVarIDs as $VarID)
{
if (!IPS_VariableExists($VarID['VariableID'])) {
$VarCount++;
if ($Testlauf == true) {
echo "INFO - Variable mit ID ".$VarID['VariableID']." existiert nicht!".PHP_EOL;
}
else {
$deleted = AC_DeleteVariableData($AC_ID,$VarID['VariableID'],$VarID['FirstTime'],$VarID['LastTime']);
if ($deleted !== true) {
echo "FEHLER - Konnte Variable mit ID ".$VarID['VariableID']." nicht löschen!".PHP_EOL;
$VarCountX++;
}
}
}
}
if ($Testlauf == true) {
echo "Es wurden $VarCount Archiv-Einträge mit nicht existierenden Variablen gefunden!".PHP_EOL;
}
else {
echo "Es wurden $VarCount Archiv-Einträge mit nicht existierenden Variablen gelöscht!".PHP_EOL;
echo "Es konnten $VarCountX Archiv-Einträge nicht gelöscht werden!".PHP_EOL;
}
?>