EKM 868 Energiemessung

Nachdem ich mit dem Allnet PM nach 5 mal umtauschen immer noch kein sauberes Ergebnis bekommen habe, hab ich mir diesen Zähler (ALE3D5F11KC3A00) und das EKM 868 zugelegt. Der Zähler soll 1000imp/kw senden. Alles installiert (Am So) und funktioniert erst mal.

Nun bin ich 350km von zuhause weg und versuch mir eine Verbrauchsanzeige zu programmieren. Hab mich dazu einigen Codeschnipsel aus dem Forum bedient.

Ziel ist den

Momentanverbrauch
Tagesverbrauch
Tages Kosten
Zu ermitteln.

Ich hab das mal so gemacht:


$counter = GetValue(38411 /*[Konstrukt\Sensoren\EKM-868 (Counter)\Counter]*/);
$delta = $counter - GetValue(46806 /*[Konstrukt\Script\Stromverbrauch\Test\Counter Actuell]*/);
SetValue(46806 /*[Konstrukt\Script\Stromverbrauch\Test\Counter Actuell]*/, $counter );


//Actueller Verbrauch in Watt
$delta = (double)($delta);
SetValue(34357 /*[Konstrukt\Script\Stromverbrauch\Test\Aktueller Verbrauch in Watt]*/,$delta);

Wenn ich das richtig verstanden habe liest man den Counter vom EKM aus und schaut nach der Differenz des zuvor gespeicherten Werts. Das sollte dann den Verbrauch wie in diesem fall pro Minute sein, da das Skript bei Aktualisierung des EKM Conters läuft. Funktioniert soweit auch. Nur finde ich 5 oder 6 Watt ziemlich wenig. oder muss ich das auf 60 min hochrechnen?
Der funktionierende Sensor des Allnet PM hatte mir an 1 Phase so ca 80-90 Watt angezeigt. Ich vermute mal das ich irgendwas durcheinander haue. Habt Ihr eine Idee.

Gruß der Hüsi

Verbrauch wird nicht in Watt gemessen sondern in kWh. Du solltest zunächst definieren und erkennbar machen was Du messen willst.

Wenn Du die Leistung (Last) messen willst bist Du mit Deiner unten aufgezeigten Logik (ab „…Ich hab das mal so gemacht:…“) grundsätzlich richtig unterwegs.
Wenn Du Verbrauch rechnen willst würde ich empfehlen das auf Stunden-oder Tagersintervall zu machen ( kWh = Kilowatt pro Stunde).

Geht aber alles auch mit Bordmitteln von IPS: Variablen auf „Zähler“ umstellen dann brauchst Du nix mehr manúell machen

Ich habe vor kurzem auch ein EKM angeschlossen.

Nach der istallation in IPS bekommst du ja 2 Variablen angezeigt
das eine ist counter und das 2. weis ich jetzt nich genau.
den 2. Habe ich ungenannt und die Einheit W/min verpasst . Das dient bei mir um die aktuelle einspeise menge anzuzeigen (kann natürlich auch der Verbrauch sein).Counter zeigt dir den gesammten Verbrauch.

Jetzt könntest du immer schön Via Skript Addieren

Ist aber nach meiner Erfahrung sehr ungenau. Besser ist es du nimmst den counter wert, dieser Hat bei mir die einheit W/h also 1000 Teilen und du hast KW/h den Orginal Start Zählerstand dazu rechnen und schon hast du deinen Zählerstand in IPS.
Was du damit machst ist ja dir überlassen


$counter = getvalue(12345/counter);
$zaehlerstandbegin = 4;//4 KW/h
$kw = $counter/1000;
$zaehlerstand = $counter+$zaehlerstandbegin;

echo "$zaehlerstand";

// oder

setvalue(54321,$zaehlerstand);

Ereignis jedesmal skript ausführen bei variablen aktualisierung.
Skript ist nur blind geschrieben nicht probiert

Jetzt schreibst du per skript 1x am Tag um 00:01 diesen wert in eine selbst erstellte variable z.B. Zählerstand gestern


$a = getvalue(54321);
setvalue(44444,$a);

Das selbe mit Vorgestern, letzte Woche, letzten Monat usw. usw.

so habe ich es zumindest gemacht.

Ps zum Verständniss, der counter zählt die Impulse. Wenn also 1000 impulse = 1 KW/h sind ist ein impuls 1W/h
der counter Wert wird auch vom EKM gespeichert und ist somit selbst wenn mal IPS off ist immer genau!
Denn es kommt immer mal vor, das wenn mehrere Skripte gleichzeitig laufen eine Zähler einheit verloren geht.
Dies ist beim counter Wert egal den da wird immer die volle zahl übermittelt.(auch wenn IPS mal neugestartet wird)

Der counter geht bei mir (impulse werden nicht am Zähler abgenommen sondern an den Wechselrichtern mit einer Genauigkeit von 5%) im Monat um 13KW/h falsch. Das sind bei 700KW/h erzeugtem Stromes 1,8%.

Den 2. wert verwende ich nur für eine Visualisierung im Dashboard

KWH ist schon OK. Ich hab das mal so gelöst:


$imp_kw = 1000;         // Impulse pro kw/h
$counter = GetValue(38411 /*[Konstrukt\Sensoren\EKM-868 (Counter)\Counter]*/);
$delta = $counter - GetValue(46806 /*[Konstrukt\Script\Stromverbrauch\Test\Counter Actuell]*/);
SetValue(46806 /*[Konstrukt\Script\Stromverbrauch\Test\Counter Actuell]*/, $counter );

//Actueller Verbrauch in KW/H
$delta = (double)($delta /$imp_kw * 60);
SetValue(29638 /*[Konstrukt\Script\Stromverbrauch\Test\KW/h]*/,$delta);

Das Skript wird nach jeder Aktualisierung des EKm ausgeführt.

Was Du mit den Bordmitteln meinst weis ich allerdings nicht. Im EKm Modul habe ich den Modus auf Zähler. Meintest Du das?

Danke…der Hüsi

Ok hat sich überschnitten. Das die 2 Variable die Watt angabe ist wuste ich nicht…wie Peinlich.

Der Wert deckt sich zwar nicht ganz mit meinem errechneten Wert, aber da stand ja was in der Doku…

Schau ich mir heute abend mal an.

Besten Dank

Übrigens ist es ganz sinnvoll wenn man sich noch eine Funktion einbaut wie


$counter = getvalue(12345/counter);
If ($counter < 5000)
{
IPS_SetEventActive(55555//das auslösende Ereignis, false);
}

Für den Fall das das EKM doch mal den Wert verliert weil der liebe Nutzer den Stecker zieht oder weil es einen Strom Ausfall gibt, dann hat man wenigstens die möglichkeit seine Werte neu anzupassen (den Wert für den $zaehlerstandbegin).

Natürlich sollte man das erst in Skript übernehmen ab der 5 KW/h logich