Verbraucherfassung mit dem EKM

Im Folgenden wird die Funktionsweise des EKM-868 aus dem IP-Symcon-Funksystem näher beschrieben. Wie die gewonnenen Daten ausgewertet werden, wurde hier im Forum an vielen Stellen ausgiebig erörtert. Hier einige Beispiele:

[ul]
[li]IPSPowerControl / Speicherung und Visualisierung des Energieverbrauchs[/li][li]EKM Gas[/li][li]Betriebsstundenzähler und mehr[/li][/ul]

Die Befehle: ‚AC_GetLoggedValues‘ und ‚AC_GetAggregatedValues‘ sind noch nicht offiziell dokumentiert. Im Forum gibt es hierzu jedoch einige Beiträge:

[ul]
[li]AC_GetLoggedValues[/li][li]Durchschnittliche Temperatur…[/li][li]Tageshöchsttemperatur ermitteln?[/li][li]Auswertung auf geloggte Variable: wielange AN?[/li][/ul]

Zu empfehlen ist auch die Homepage von ‚Raketenschnecke‘ u.b. gibt es dort Tipps zur Visualisierung der Daten und ein Projekt zur möglichen Vorhersage des Stromverbrauchs: RS Energy Forecast

Das EnergieKontrollModul EKM 868 besitzt einen 4-Kanal-Zählermodul mit je 32 Bit. Zusätzlich stellt das Gerät drei Modi zur Zeitmessung zur Verfügung:

[ul]
[li]Modus: Lese An-Zeit - Einschaltdauer (Kontakt geschlossen) [/li][li]Modus: Lese Aus-Zeit - Ausschaltdauer (Kontakt geöffnet) [/li][li]Modus: Lese Zähler - Zählerstand (Variable: Counter) sowie der zeitliche Abstand zwischen zwei Impulsen (Current)[/li][/ul]

Für die Verbraucherfassung ist lediglich der letztgenannte Modus von Interesse.
Weiterführende Informationen über Stromzähler gibt es bei Wikipedia.

Zitat: „Der Stromzähler ist ein über einen zeitlichen Verlauf integrierendes Messgerät zur Erfassung der Menge einer gelieferten bzw. verbrauchten elektrischen Größe. Vorzugsweise wird der Begriff Stromzähler (auch Elektrizitätszähler) für Geräte verwendet, mit denen allerdings nicht elektrischer Strom, sondern elektrische Wirkleistung über der Zeit summiert wird, wodurch elektrische Energie gemessen wird. Der physikalisch korrekte Begriff ist also Energiezähler. Gezählt werden in diesen Geräten mechanisch die Umdrehungen einer Scheibe, deren Drehzahl proportional zur Wirkleistung ist, oder elektronisch entsprechende Impulse. Die Anzeige bezieht den Umrechnungsfaktor auf die Energie oder Arbeit ein. Die zugehörige physikalische Einheit ist das Joule (mit dem Einheitenzeichen J) bzw. die Wattsekunde (Ws); allerdings wird bei Stromzählern der Messwert in der größeren Einheit Kilowattstunde (kWh) angegeben.“

Der EKM zählt die einzelnen Impulse der jeweiligen Zähler. Bei elektronischen Stromzähler sind des typischerweise 1000 Impulse pro kWh. Bei Gaszähler 100 Impulse pro Kubikmeter und bei Wasserzähler ein Impuls pro zehn Liter. Dies wird mit ‚D10‘ auf dem Gerät dargestellt.
Im EMK-Modul von IP-Symcon wird der o.g Wert unter ‚Impulse‘ eingetragen.

Ein besonderes Merkmal vom EKM ist es, die aktuelle Leistung in Watt auszugeben. Der interne präzise Timer misst die Zeit zwischen den einzelnen Impulsen. Daraus wird folgender Formel die Leistung berechnet:
P = (3600 * 1000) / (Current / 100 * Impulses) [Watt]
Wobei “Current” die Zeit zwischen zwei Impulsen in 1/100 Sekunden ist.
(Beispiel einer Kurve siehe Bild 1)

Wenn man bei der Variablen ‚Counter‘ (bitte $objectID anpassen) das Datenbank-Logging aktiviert, können die Werte auch wieder aus dieser gelesen werden. Das folgende Skript liest die Werte der die letzten 24 Stunden aus und soll als Anregung für die eigene Weiterentwicklung dienen. Wie die Start- und Endzeiten berechnet erden wird hier näher erklärt: strtotime


$archiveID = IPS_GetInstanceIDByName("Archive Handler", 0);								// Archive-Handler-ID ermitteln
$objectID = 10776;                                                               // Counter vom  EKM

$startTime = strtotime("-1 day");
$endTime = strtotime("now");

$limit = 0; // kein Limit
//print_r(AC_GetLoggedValues($archiveID, $objectID, $startTime, $endTime, $limit)); // für Testzwecke
$buffer = AC_GetLoggedValues($archiveID, $objectID, $startTime, $endTime, $limit);
$anzahl = 0;

foreach ($buffer as $werte){
	$wert = $werte['Value'] . "
";
	$anzahl = $anzahl +1;
}

echo "Anzahl: " . 	$anzahl . "
";
echo "Wert (Start): " . $buffer[$anzahl-1]['Value']. "
";  // -1 weil Array beginnt bei 0
echo "Wert   (End): " . $buffer[0]['Value'] . "
";

// Demo zur Kostenberechnung
$zaehlerDiff = $buffer[0]['Value']-$buffer[$anzahl-1]['Value'];
$preiKwh = 0.28;                                                                    // 0.28 € pro kWh
echo "Verbrauch: " . $zaehlerDiff . " Wh". "
";
echo "Kosten für den o.g. Zeitraum: " . $zaehlerDiff / 1000 * $preiKwh . " €" . "
";

Weitere Hinweise zum EKM finden Sie in der Dokumentation

MST