Smart Metering

In diesem Thread soll es um das s.g. „Smart Metering“ gehen.
Also alles über Zähler-Erfassung, Auswertung und Visualisierung.
Los geht es mit „Zahlenspielen“ - damit man ein Gefühl für die Größenordnungen bekommt.
Beispiel der Gasverbrauch:
Der EMK-868 (oder andere S0-Zähler) messen einen Volumenstrom von z.B. 0.1 m^3 pro Stunde.
Aber was bedeutet dies für meinen Geldbeutel?
Der Gaspreis wird in kWh abgerechnet. Dazu muss man den Heizwert wissen.
Dieser liegt meistens bei einem Faktor von 11. Genauso wichtig ist natürlich der Preis pro kWh z.B.: 6 Cent
In dem unteren PHP-Beispiel kommen wir auf 10 Euro / Tag.
Das Problem einer guten Energieampel (Prognose) sind die unterschiedlichen Verbrauchswerte am Tag, Nacht, Sommer oder Winter.
In den folgenden Skripten wird versucht Lösungsansätze aufzuzeigen.

MST

$multipik = 11;
$preis = 0.06; // € pro kWh
$takt = 5284;  // 1/100sec pro 0.001 m^3
$takt = 5284/100;  //  sec pro 0.001 m^3
$takt = 5284/100*1000;  // sec pro m^3
$m3h = 1/(5284/100*100/3600);  // m^3 / h
//echo "Takt: ".$takt."
";
echo $m3h." m^3/h
";
$tagesverbrauch = 24* $m3h;
$tagesverbrauch = $tagesverbrauch *$multipik;
echo "Tagesverbrauch: ".$tagesverbrauch." kW/h 
";
$kostenTag = $tagesverbrauch *$preis;
echo "€ ".$kostenTag." pro Tag
";

So da möchte ich mal korrigierend eingreifen. :o

Der Umrechnungsfaktor nennt sich Brennwert und nicht Heizwert.

Der Faktor um die 11 ist bei H-Gas anzusetzen. Im Norden Deutschlands, gibt es noch L-Gas, da kann man den Faktor 9,9 nehmen.

Habe beruflich mit der Ermittlung des Brennwertes im Erdgasnetz zu tun, also wenn noch Fragen da sind, schießt los :smiley:


echo "Tagesverbrauch: ".$tagesverbrauch." m^3 
"; 

Sollten das nicht kWh sein?

Der Faktor um die 11 ist bei H-Gas anzusetzen. Im Norden Deutschlands, gibt es noch L-Gas, da kann man den Faktor 9,9 nehmen.

Also bei uns wird der Faktor jedes Jahr neu festgelegt und beträgt zur Zeit 10,42.


$preis = 0.06; // Cent pro kWh 

Woher kommt dieser Preis?

Hallo zusammen,

1€/Tag … ja ist denn schon wieder Sommer? In der Heizperiode komme ich auf 10€/Tag, gut dass es fixe Abschläge gibt :-(((

Gruss NBA

@Thomas: natürlich muss es sich NACH der Multiplikation um kW/h handeln.
@NBA: bei 100 Impulse pro m^3 kommt man auch auf €10,-
@DeejayT: danke für den Hinweis
Den Brennwert - so die korrekte Bezeichnung - sowie die Gaspreis entnimmt man der letzten Rechnung oder im Netz bei „Tarifrechner-Portalen“.
Der Einfachheit halber verzichte ich bei meiner Anzeige auf die Berücksichtigung der Kosten für den Grundpreis, Messgebühren (Schornsteinfeger), Abschreibung der Anlage usw.
Die Zahlen im 1. Thread bezogen sich auf die aktuelle aufgenommene Leistung des Brenners.
Um Tageswerte zu bekommen muss man Zählerstände miteinander vergleichen.
Hier ein kleines Beispiel, um die Kosten pro Stunde anzuzeigen:


$multiplik = 11;  // Brennwert
$preis = 6; 		// Cent pro kWh
$imp_m3 = 100;     // Impulse pro m^3
$counter = GetValue(48988 /*[Heizung Strom W Gas\Energie Ampel\EMK Gas\Counter]*/);       // Zählerstand einlesen
//$counter = 481;     // Test
echo  "Counter: $counter
";
$delta = $counter - GetValue(43395 /*[Heizung Strom W Gas\Energie Ampel\EMK Gas\Zähler alt]*/);
echo  "Delta: $delta
";
SetValue(43395 /*[Heizung Strom W Gas\Energie Ampel\EMK Gas\Zähler alt]*/, $counter );
$delta_t = time() - GetValue(54448 /*[Heizung Strom W Gas\Energie Ampel\EMK Gas\Zähler Ablesezeit]*/) ;
//$delta_t = 3600; // Test eine Stunde
echo  "delta_t: $delta_t Sekunden
";
SetValue(54448 /*[Heizung Strom W Gas\Energie Ampel\EMK Gas\Zähler Ablesezeit]*/, time());  // Zeit merken
$delta = (double)($delta * 3600 / $delta_t / $imp_m3); 
SetValue(36999 /*[Heizung Strom W Gas\Strom\Strom-Zähler OG\kW/h]*/,$delta);
echo  "Verbrauch: ".$delta ." m^3/h
";
$delta = $delta * $multiplik;
echo  "Verbrauch: ".$delta ." kW/h
";
$delta = $delta * $preis;
SetValue(29553 /*[Heizung Strom W Gas\Strom\Strom-Zähler OG\kW/h]*/,$delta);
echo  "Kosten: ".$delta ." Cent/h
";

MST

gas_demo.png

Es folgt die modifizierte Variante die den Verbrauch der letzten 15 Minuten, der letzten Stunde sowie vom letzten Tag ermittelt.
Die jeweilige korrekte Zeitdifferenz wird über ‚VariableUpdated‘ ermittelt.
Somit erspart man sich zusätzliche Variablen.
Getriggert wird das Skript alle 15 Minuten und zusätzlich um Mitternacht (hier: $id_event == 37255).
Die Werte werden live im WebFront unter „Energie“ dargestellt.

MST

Zur Info: an der blauen Kurve ist schön die „Grundlast“ zu erkennen und an der Roten die Leistungsspitzen
(1300 Watt alle Lichter AN - siehe Bild)

$imp_kw = 1000;     	// Impulse pro kw/h
$counter = GetValue(38121);

// 15 minütlicher Verbrauch
//echo  "Counter: $counter
";
$delta = $counter - GetValue(12210);
//echo  "Delta: $delta
";
$data =  IPS_GetVariable(12210);
$delta_t =time()-($data['VariableUpdated']);
//echo  "delta_t: $delta_t Sekunden
";
SetValue(12210, $counter );
$delta = (double)($delta * 3600 / $delta_t / $imp_kw);
SetValue(43918,$delta);
//echo  "Verbrauch: ".$delta ." kW/h
";

// stündlicher Verbrauch
$data =  IPS_GetVariable(42695);
$delta_t =time()-($data['VariableUpdated']);
if ($delta_t >= 3600){
   $delta = $counter - GetValue(42695);
	SetValue(42695, $counter );
	$delta = (double)($delta * 3600 / $delta_t / $imp_kw);
	SetValue(17094,$delta);
}

// Tages-Verbrauch
$id_event = $IPS_EVENT;
if ($id_event == 37255){
  	$delta = $counter - GetValue(15877);
	SetValue(15877, $counter );
	$delta = (double)($delta / 24 / $imp_kw);
	SetValue(36706,$delta);
}

sh_cam_all_light_on_kl.jpg

energie_tree_demo_strom.png

wäre es möglich, die angehängten grafiken (objektbaum) (in zukunft) mit den objekt-ids zu versehen ? dadurch lassen sich die scripts von anfängern besser verstehen, zumindest wenn die scripts keine auto-benamsung der id haben.
sitze seit stunden um die scripts auf meinen ölverbrauch umzumünzen ( via s0 ) und es klappt irgendwie nicht

@ Axel37,

sorry - ich habe den Screenshot erneut hoch geladen.

MST

ja super, vielen dank, erspart ne menge arbeit.
wenn simulation läuft bestell ich den rest

Hallo, mal eine Frage zu Thema Smart Metering…

es scheint so, daß sich viele Energieversorgungsunternehmen auch gerade in diesem Bereich Gedanken machen.
Es gibt dort einige Festlegungen für neue Normen, z.B. WMBus und die Smart Message Language.
Von OMS, dem Open Meter Standard ist auch immer wieder zu lesen…
Hate jemand schon Erfahrungen mit einem SML oder WMBus?

Hallo,

so, EKM läuft perfekt und ich kann nun endlich Gas- und Stromverbrauch ermitteln. Hat sich mit dem Thema Energieampel schon jemand näher beschäftigt. Bei Gira gibt es ein nettes Feature, welches den Verbrauch vor einem Jahr mit dem aktuellen vergleicht und dies in Form einer Ampel anzeigt . Dies setzt nattürlich entsprechende Daten voraus.

Ich würde gern eine einfache und für jeden im Haushalt verständliche Visualisierung umsetzen, vielleicht hat hier ja schon jemand Lösungsansätze.

Besten Dank

:loveips:

Hallo,

ich würde gern in nächster zeit mein IPS um die Möglichkeit des Wasserverbrauch-Monitorings erweitern. Nun habe ich in meiner Wohnung 2 Kaltwasserzähler (pro Etage 1x) vom Wasserwerk eingebaut, beide ohne S0-Schnittstelle. Nun würde ich hier gern die Messwerte abnehmen und per EKM 868 ans IPS übermitteln.

Ich meine, vor kurzem mal was über S0-Aufwätze für solche Wasseruhren gesehen zu haben, kann aber aktuell hierzu nichts im WEB finden. Da ein Austausch der Wasseruhren (evtl. gegen solche mit S0-Voirbereitung) nicht in meinem Entscheidungsbereich liegt würde ich gern solche Aufsätze verbauen und mit dem EKM 868 verbinden.
Hat jemand Infos dazu für mich?

Danke sehr &

Hallo,
ich habe bei meinem Versorger angerufen,
und er hat meine Wasseruhr durch eine mit S0 Schnittstelle getauscht.
Den S0 Aufsatz musste ich bezahlen.

mfg.
Jürgen

Das würde mich auch interessieren. :o

Hallo,
wie es aussieht, werd ich mich doch etwas intensiver mit php-Scripting beschäftigen müssen und komme so ohne weiteres nicht an alle Informationen…und hoffe auf Unterstützung…
Bezogen auf Steiners Script vom 2.11. 18.18Uhr:

  1. das die Variable counter im Script genauso heißt wie die ausm Objektbaum - ist das gewollt oder könnte diese auch anders heißen bzw. umgekehrt kann der Wert auch aus einer anderen Variablen kommen?

  2. wenn ich einen direkten Wert für die kwh-Strom habe, braucht mich der ganze „Impulskram“ nicht interessieren?

  3. woher kommt der Wert aus der Variablen $IPS_Event ? Ich kann in keiner Dokumentation was dazu finden…nur zb. IPS_EventExist…

  4. ist (double) eine Typ-Zuweisung? Warum nicht (float)? Kann diese, wie in vernünftigen Programmiersprachen nicht auch am Beginn der Prozedur in der Variablendeklaration erfolgen?

  5. Gibt es einen Grund, warum die Zeit bezüglich des Tagesverbrauchs über das IPS_event gesteuert wird und der stündl. Vebrauch/15min. Verbrauch über die „Rechenkopfstände“, könnte mann nicht alternativ IPS_event(ID) für jede beliebige Zeit über eine „case“-Verzweigung checken? …oder ist das einfach persönlicher Stil oder so?

  6. Welchen Sinn, außer Info/Lesbarkeit evtl., haben die vom System generierten Variablenpfade(nach ID)?

Ich hoffe, ich konnte mich verständlich machen und freue mich auf ein Feedback…vielen Dank im voraus, kabo63.

Zu deinen Fragen, einpaar Links.

Systemvariablen: IP-Symcon :: Automatisierungssoftware

PHP: PHP-Handbuch - Manual

Hallo Rainer,
vielen Dank, der 1. Link war genau richtig für Frage 3) die damit beantwortet ist, frag mich nur, warum die Suche das nicht gefunden hat…
Den 2. Link hab ich mir wohl schon vorher angeschaut…war recht unbefriedigend, oder ich hab nach den falschen Begriffen gesucht…hilft mir nicht wirklich weiter…
Gruß, Kay.

Na dann.

PHP: gettype - Manual

…mir ist aufgefallen, dass, wenn man die Verbrauchswerte z.b. als Zähler loggen möchte, erhält man in Webfront eine Anzeige erst für den darauffolgenden Zeitraum…dass kann’s doch nicht sein…oder habe ich hier einen Denkfehler? :confused:
MfG, kabo63.

Hallo …

ich bin am verzweifeln…

Ich habe das Script von Steiner (#6) bei mir wie folgt umgesetzt:


<?
$imp_kw = 75;         // Impulse pro kw/h
$counter = GetValue(12579 /*[EKM-868 - Strom\Counter]*/);

// 15 minütlicher Verbrauch
//echo  "Counter: $counter
";
$delta = $counter - GetValue(19792 /*[EKM-868 - Strom\Counter old 15 min]*/);
//echo  "Delta: $delta
";
$data =  IPS_GetVariable(19792 /*[EKM-868 - Strom\Counter old 15 min]*/);
$delta_t =time()-($data['VariableUpdated']); // Wann wurde Counter old 15 Min das letzte mal upgedatet
//echo  "delta_t: $delta_t Sekunden
";
SetValue(19792/*[EKM 868 - Srom\Counter old 15 Min]*/, $counter );
$delta = (double)($delta / $imp_kw);
SetValue(25097 /*[EKM-868 - Strom\durchschnittlicher Verbrauch letzte 15 Min]*/,$delta);
//echo  "Verbrauch: ".$delta ." kW/h
";

// stündlicher Verbrauch
$data =  IPS_GetVariable(33772 /*[EKM-868 - Strom\Counter old 60 Min]*/);
$delta_t =time()-($data['VariableUpdated']); // Wann wurde Counter old 60 Min das letzte mal upgedate
if ($delta_t >= 3600)
  {
   $delta = $counter - GetValue(33772 /*[EKM-868 - Strom\Counter old 60 Min]*/);
    SetValue(33772 /*[EKM-868 - Strom\Counter old 60 Min]*/, $counter );
    $delta = (double)($delta / $imp_kw);
    SetValue(48678 /*[EKM-868 - Strom\durchschnittlicher Verbrauch letzte 60 Min]*/,$delta);
  }

 //Tages-Verbrauch
 $ID_event = $IPS_EVENT;
 if ($ID_event == 24994 /*[EKM-868 - Strom\Energie Ampel Strom\]*/){
    $delta = $counter - GetValue(25187);
    SetValue(25187 /*[EKM-868 - Strom\Counter old Midnight]*/, $counter );
    $delta = (double)($delta / $imp_kw);
    SetValue(21814 /*[EKM-868 - Strom\durchschnittlicher Verbrauch über den Tag]*/, $delta);
	 }

?>

Wenn ich das Script ausführe gibt es immer folgende Fehlermeldung:
„Undefined variable: IPS_EVENT in [EKM-868 - Strom\Energie Ampel Strom] on line 29“
Gemeint ist die Zeile „$ID_event = $IPS_EVENT;“. Sobald ich den Code ab „Tagesverbrauch“ auskommentiere, funktioniert das Script.

Könnt Ihr mir helfen ?

Gruß

Swifty