EKM 868

OK rdd hab ich nun verstanden.

1.Nur wie erzeuge ich einen plot über das ekm und rechne diesen in Watt um?

2.Wie stelle ich die erzeugte .png Datei in das Webfront b.z.w. wie wird Sie aktualisiert?

MFG Franz

@franz
also die zusätzlichen variablen, die erzeugt werden müssen, stehen ja im script und sind bezeichnet. es ist eigentl egal wie du sie benennst.
der counter steht ja schon fest, der takt ist eine integer-var und der strompreis ist eine float-variable.
in dem script geht es eigentlich nur um die berechnung des verbrauchs und der kosten:
die gezählten takte geteilt durch impulse pro kw/h. und den daraus resultierenden verbrauch multidingsbums mit dem strompreis.
rrd:
bernhard hat da mal was zusammengestellt

Ich habe nun alle Variablen bis auf messbeginn, messende erstellt und Sie funtionieren auch, aber was ist messbegin und messende für ein Variablentyp?
b.z.w. wie muss ich die starten und enden lassen?

Das von Bernhard erstellte Beispiel habe ich mir angeschaut, aber wie bringe ich nun da meinen Zähler script unter?

Könntest du evtl. von deinen Variablen eine screenshot machen?

Eine Rechnung wird bei meinem script bereits erzeugt.

<b>Warning</b>: Division by zero in <b>C:\Programme\IP-Symcon\scripts\22528.ips.php</b> on line <b>18</b><br />
laufzeit in tagen: 0
takte ges: 11097
verbrauch ges: 5.5485 kwh
kosten ges: 0.99873 euro
kosten pro tag: 0 euro

MFG Franz

ja, sorry, dachte du erkennst die umwandlung „strtotime“ (string in zeit)
hier nochmal die varis.
dieses script sollte dir auch nur die handhabung und berechnung näherbringen, die varis kannst du dann entsprechend in bernhards script einbringen.
mein script basiert auch darauf, hat aber den unterschied, dass ich die berechnungen und den plot in einem rutsch erstelle um unterschiedliche laufzeiten zu verhindern. je nachdem welcher channel beim ekm abgerufen wird (alles 60s) und wenn das rrd-file-script nur eine sec eher startet und dann auch noch das rrd-plot-script wiederum eine sec eher ist, hast du ein delay von min- 3 min auf dem display. also immer in der vergangenheit.
übrigens: mein startwert ist der damalige zählerstand x 1000imp und wird händisch als vari-wert vorgegeben.

vorsichtshalber mein script zur analyse,
die sammelspitzenbegrenzung kommt zum einsatz, wenn ekm mal keine daten empfängt oder wenn ips-server nicht 24/7 läuft, damit diagramm nicht ins unendliche geht, da dann imp kummuliert werden

#werte berechnen___________________________

#1.ol________________________________________
$counter1		= 	getvalue(21430 /*[EKM-868\s0 port 1 Heizung\Counter]*/);
#print "$counter1
";
$alt1		=	getvalue(31662 /*[EKM-868\s0 port 1 Heizung\x_counter]*/);
#print "$alt1
";
$max1    =  85;        #eingebaute begrenzung um sammelspitzen beim diagramm abzufangen
$alt1a   =  ($counter1-$alt1);
	if	($alt1a  < $max1)
	{
            setvalue(11055 /*[EKM-868\s0 port 1 Heizung\y_counter]*/,$alt1a);
				setvalue(31662 /*[EKM-868\s0 port 1 Heizung\x_counter]*/,$counter1);
	}
	else
	{
				$menge1 = ($alt1 / $max1);
				print "$menge1
";
				setvalue(11055 /*[EKM-868\s0 port 1 Heizung\y_counter]*/,$max1);
				setvalue(31662 /*[EKM-868\s0 port 1 Heizung\x_counter]*/,$counter1);
	}
#print "$alt1
";
#print "$counter1
";


#2.strom________________________________________

$counter2 	= 	getvalue(11339 /*[EKM-868\s0 port 3 Strom\Counter]*/);
#print "$counter2
";
$alt2		=	getvalue(59077 /*[EKM-868\s0 port 3 Strom\x_counter]*/);
#print "$alt2
";
$max2    =  85;        #eingebaute begrenzung um sammelspitzen beim diagramm abzufangen
$alt2a   =  ($counter2-$alt2);
	if	($alt2a  < $max2)
	{
            setvalue(50131 /*[EKM-868\s0 port 3 Strom\y_counter]*/,$alt2a);
				setvalue(59077 /*[EKM-868\s0 port 3 Strom\x_counter]*/,$counter2);
	}
	else
	{
				$menge2 = ($alt2a / $max1);
				print "$menge2
";
				setvalue(50131 /*[EKM-868\s0 port 3 Strom\y_counter]*/,$max2);
				setvalue(59077 /*[EKM-868\s0 port 3 Strom\x_counter]*/,$counter2);
	}
#print "$alt2a
";
#print "$counter2
";

#ekm schreiben_____________________________

$dir = 'D:/ip-symcon-log/';
$file= 'EKM.rrd';

$DS1	= getvalue(11055 /*[EKM-868\s0 port 1 Heizung\y_counter]*/)*0.01;
$DS2	= getvalue(17165 /*[EKM-868\s0 port 2 GefrierSchrank\y_counter]*/)*0.06;
$DS3	= getvalue(50131 /*[EKM-868\s0 port 3 Strom\y_counter]*/)*0.06;         #faktor 0.06 erzeugt eine stimmige vertical-scala in kwh
$DS4	= getvalue(44757 /*[EKM-868\s0 port 4 Wasser\y_counter]*/);             #und dient bei heizung als kurvenanpassung
$kwh1 = getvalue(22735 /*[aktueller verbrauch kwh]*/ );
$kwh	= round($kwh1,2);

$para1 = "update $dir$file N:$DS1:$DS2:$DS3:$DS4";
echo RRD_Execute($para1);


#ekm plotten_____________________________

$DB = "D\:/ip-symcon-log/$file";  # Pfad & Filename

$pngname = 'c:\/ip-symcon/media\/ekm.png'; # Name des zu erstellenden Plot

$VERT_LABEL = "--vertical-label=kwh";  #Beschriftung
$TITEL 	=    "--title=verbrauchswerte_alle_60sec";


$einheit =  getvalue(38088 /*[EKM-868\Graphen\Details\Einheit]*/);
$stunden =  getvalue(27611 /*[EKM-868\Graphen\Details\Anzeigezeitraum]*/ )*$einheit;
$stunden1=  getvalue(50386 /*[EKM-868\Graphen\Details\Anzeigestart]*/)*$einheit;
$start 	= 	time() - $stunden;  # Startzeit = jetzt - x Stunden
$end 		= 	time() - $stunden1; # Endzeit = jetzt - x Stunden

$style = "--heigh=500 --width=830";  # Grösse des Plot
$plot_1 = "DEF:ol=$DB:OL:AVERAGE LINE1:ol#000000:OEL";
$plot_2 = "DEF:gefrier=$DB:GEFRIER:AVERAGE LINE1:gefrier#9DFC00:GEFRIER";
$plot_3 = "DEF:strom=$DB:STROM:AVERAGE LINE2:strom#FF0000:STROM";
$plot_4 = "DEF:wasser=$DB:WASSER:AVERAGE LINE1:wasser#2A07E8DD:WASSER";



$para2= "graph $pngname --start=$start --end=$end $style $VERT_LABEL $TITEL $plot_1 $plot_2 $plot_3 $plot_4";  # Nun alles zusammenführen

echo rrd_execute($para2);  # Plot erzeugen

und die zugehörigen id´s

Danke

Ich komme immer näher…

Der von mir zusammen gebastelte script beschreibt mir aber meine rrd file nicht. Was könnte falsch sein?

<?



    $dir = 'C:/rrd/';
    $file= 'Strommessung.rrd';
    $messbeginn =  getvalue(20390 /*[ProJet Counter\anfang]*/);      # aus variable auslesen
    $messende     =  getvalue(14900 /*[ProJet Counter\Ende]*/);        # aus variable auslesen
    $strompreis =  getvalue(36386 /*[ProJet Counter\Strompreis]*/);
    $faktor         =     getvalue(29135 /*[ProJet Counter\Takt]*/);        # takte pro stunde
    $takt         =  getvalue(19653 /*[ProJet Counter\Counter]*/);           # counter auslesen
    $verbrauch  =  ($takt / $faktor);
    $kosten     =  ($verbrauch * $strompreis);
    $start          =     strtotime($messbeginn); # umwandlung in zeit
    $stop           =     strtotime($messende);   # umwandlung in zeit
    $delta      =     round (($stop - $start)/60/60/24) ; # gesamtlaufzeit in tagen
    $tag             =  round ($kosten / $delta);
    $para = "update $dir$file N:$strompreis:$faktor:$takt:$verbrauch:$kosten:$start:$stop:$delta:$tag:";
echo RRD_Execute($para);
echo "laufzeit in tagen:  $delta  
";
echo "takte ges: $takt   
";
echo "verbrauch ges: $verbrauch kwh   
";
echo "kosten ges: $kosten euro   
";
echo "kosten pro tag:  $tag euro    
";

?>

MFG Franz

du musst beim erst(ein-)maligen erzeugen vom rrd drauf achten, dass die vari-namen 100% identisch sind !
$strompreis:$faktor:$takt:$verbrauch:$kosten:$start:$stop:$delta:$tag

Erstmal muß die Datenbank angelegt werden, den folgenden Code also nur einmal ausführen.

PHP-Code:
$dir = ‚C:/rrd/‘;

$DS1 = ‚DS:TEMP:GAUGE:68400:U:U‘;
$DS2 = ‚DS:SOLL:GAUGE:689400:U:U‘;
$DS3= ‚DS:VENTIL:GAUGE:68400:U:U‘;
$RRA1= ‚RRA:AVERAGE:0.5:1:2016‘; #alle Werte für 1 Woche beahlten (5min Raster)
$RRA2= ‚RRA:AVERAGE:0.5.20:13140‘; #Stundenmittelwerte für 11/5 Jahre

$file= ‚FHT_Wohnzimmer.rrd‘;
$para = „create $dir$file --step 300 $DS1 $DS2 $DS3 $RRA1 $RRA2“; # alle 5min 1 Wert
echo RRD_Execute($para);

Die Messwerte werden mit diesem Script in die Datenbank geschrieben.

$start $stop kannste wechlassen

Hallo

Seit heute hab ich auch das EKM.
Soeben schnell einen Probeaufbau auf dem Schreibtisch.
Stromzaehler SWISSNOX und nur einen Verbraucher
mein PC.
Counter zaehlt.
Current zeigt etwas an.

Test laeuft seit ca 1 Stunde und die Werte im CURRENT
schwanken so um die 98 - 110.

Laut Doku sollen das ja kW/h sein.
Kann das sein fuer einen PC ??

hallo 1007,
hab meine werte mal verglichen, die springen munter durch die gegend.
da ich meine kwh selber ausrechne hab ich da gar nicht drauf geachtet.
aber in der doku steht ja auch:

Wobei „Current“ die Zeit zwischen zwei Impulsen in 1/100 Sekunden ist

ui, hab mal ne zeitlang die werte mit meinem rrd-diagramm verglichen, da werden tatsächlich die watt angezeigt…
würde bedeuten, dein pc zieht um die 100 watt

Hab mich auf den Satz in Doku bezogen :

Bei Stromzähler werden hier die Impulse pro kW/h eingetragen.
Die Einheit der Variable „Current“ ist dann ebenfalls kW/h.

Die Zeit zwischen 2 Impulsen kann es auch nicht sein.
Hab ja alles hier auf dem Schreibtisch liegen.
Abstand zwischen 2 Impulsen = 55s
Anzeige Current = 81,8

Wenn man die Formel in der Doku benutzt dann passt es :

Intern wird folgende Formel für die Umrechnung der aktuellen Leistung in Watt verwendet:
P = (3600 * 1000) / (Current / 100 * Impulses) [Watt]

P = (36001000)/(5500/100800) = 81,81 Watt.
Das wuerde dann passen.
Anzeige in Current muesste Watt sein.

Ist es auch.
Nur ist mir aufgefallen wenn da steht 1000Imp pro kWh stimmt das auch nicht ganz. Nach langem rumtesten hab ich dann 968 imp pro kWh gemessen. kann man ja vergleichen , was der Impulsgebende Stromzähler misst und was IPS an Impulsen in der zeit bekommen hat. Dafür muß man auch mal wieder an den Stromzähler gehen :wink:

1000Imp pro kWh stimmt das auch nicht ganz

Es stimmt ganz genau!

Wenn der Zähler 1000 Impulse für eine kWh benötigt, muss man auch eine glatte! 1000 dort eintragen.

MST

Kann ich leider nicht bestätigen !

Bei einem Test über 16kWh ( Anzeige am Digitalen Drehstromzähler )
Hab ich in der Zeit 15484 Impulse in IPS gezählt.
Der Stromzähler meines Energieversorgers hat in der Zeit 16,2kWh gezählt.
Laut IPS habe ich aber „nur“ 15,5kWh verbraucht.

Im EKM hab ich 1000 eingestellt gelassen, nur zum Umrechnen für den Gesamtverbrauch hab ich delta Counter /968 genommen.

Aber ich werde nochmal einen Test machen, eventuell hab ich ja auch was falsch abgelesen.:o

… ich glaube Du verwechselt ‚Counter‘ mit „Current“!

MST

Ok kläre mich auf :

Current = aktuelle Leistungsaufnahme in Watt
Counter= Impulse

oder bin ich da falsch ?

Jahresverbrauch bis Jetzt = Impulse ab 1.1 DURCH 1000 =Verbrauch in kWh
und genau das stimmt bei mir nicht DURCH 968 triffts bei mir besser. ( dann stimmts mit dem digitalen Stromzähler überein )

das EKM funktioniert im übrigen sehr geil, mit fällt nur nix für den 4ten Zähler ein :wink:

DURCH 968

dann gehen bei Dir Impulse verloren - warum auch immer.

Zinn und Zweck ist es auch nicht den Zählerstand bis auf die letzte Kommastelle abzubilden.

MST

Hi,

meiner Meinung stellt sich auch die Frage, welcher Zähler „richtiger“ zählt. Es ist bestimmt abhängig davon, wann geeicht wurde und für welchen Bereich geeicht wurde. Da die beiden Zähler wahrscheinlich nicht von dem ein und selben Hersteller sind, ist das auch zu berücksichtigen, da sich diverse Toleranzen nochmals mehr bemerkbar machen.

Grüße
Björn
:slight_smile:

ok, werde das mal beobachten, die heutigen 2,1kWh hat er ziemlich genau 2100impulse gebraucht . da scheinen damals wirklich welche verloren gegangen zu sein.