<?
$archiveID = 24522 /*[Archiv]*/;
$objectID = DEINE ID ; // hier deine Steckdose rein der Wert der die Watt oder was auch immer loggt, muss aber ein geloggter wert sein
$endtime = time(); // time() for "now"
$starttime = time()-(5*60); // n für minuten zurück
$limit = 0; // kein Limit
//print_r(AC_GetLoggedValues($archiveID, $objectID, $starttime, $endtime, $limit));
$buffer = AC_GetLoggedValues($archiveID, $objectID, $starttime, $endtime, $limit);
$anzahl = 0;
$summe = 0;
foreach ($buffer as $werte){
$wert = $werte["Value"];
$anzahl = $anzahl +1;
$summe = $summe + $wert;
}
echo "N-Werte: ".$anzahl. "
";
$mittelw = $summe / $anzahl;
echo "Mittelwert: " . $mittelw . "
";
SetValue(10810 /*Steckdose Wama]*/ ,$mittelw); // in eine Variable speichern wenn du willst
if ($mittelw < 10)
{
//tu dies
echo "test" ;
}
?>
<?
##################################################################################
# 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).";
?>