IPSPowerControl

Speicherung und Visualisierung des Energieverbrauchs

IPSPowerControl ist ein Modul, das die Visualisierung des Stromverbrauchs ermöglicht (die Charts werden auf Basis von Highcharts gebildet).

Nähere Details zum Modul sind im WIKI Beitrag zu finden

Potenzielle Erweiterungen

[ul]
[li]Support von Gas und Wasser Sensoren
[/li][/ul]

Hallo Brownson,

ich hätte da mal noch ein paar Fragen dazu.

Ich bekomme die aktuelle Leistung jedes Sicherungskreises von meinen DigitalStromMetern.
Diese liefern allerdings nur die Leistung in Watt, nicht den Verbrauch in KWh.
Kann das Modul den Verbrauch selbst errechnen, oder muss ich das in einem eigenen Skript tun?

Kann das Modul um einen Solarertrag (Zukauf, Verkauf, Eigenverbrauch in %) erweitert werden?

Ebenso eine Erweiterung um Gasverbrauch und Wasserverbrauch finde ich sinnvoll.

Dann könnte man den gesamten Energieverbrauch in einem Modul verwalten.

Bin auf deine Meinung gespannt.

Grüße Jens

Die konfig der 3 Phasen des Allnet 3691 hat leider auch nur W Werte und bei der Einrichtung kommt nur 1 Wert im Modul an.

Kann es sein das wir in dem Modul noch etwas testen müssen oder ist dies eher ein DAU Fehler von mir ?

Gruss
B71

Hi,

ich hab selbst einige Sensoren, die nur kWH Werte liefern. Bei denen hab ich die aktuelle Watt Leistung in der Callback Funktion ausgerechnet (Beispiel dazu, siehe Example Ordner im Config Verzeichnis).

Die Erweiterungen klingen alle logisch und sinnvoll, ich muss nur mal sehen wie sich zeitlich bei mir alles ausgeht (bin ja durch die Veröffentlichung der diversen Module zur Zeit etwas eingespannt).

Bei Problemen immer auch die Konfiguration posten

Hallo Andreas,

hat keine Eile!
Auf gute Dinge wartet man auch gerne mal etwas länger.
Wollte meine Ideen nur mal in den Raum werfen.
Freu mich schon auf weitere Updates

Jens

Sehr geniales Modul. Läuft inzwischen und sammelt fleissig Energiedaten.

Dem kann ich nur beipflichten.

Praktisch wäre noch, wenn man gleich einen Initialzählerstand eingeben kann, so dass das Delta dann von Anfang an richtig aggregiert wird.

Hallo Andreas,
An welcher Stelle liesse sich die Beschreibung des Auswahlschalter „SelectValue0,1,2…“ modifizieren ?
Ich würde dort gerne die Geräte grob hinterlegen die auf der entsprechenden Phase liegen.
Oben in den Snapshots hast Du dies in Bild 1 ebenfalls realisiert.
Wo ist die ecke an der man suchen muss ?

Gruss
B71

Wird alles in der Config gemacht, habe bei mir einige zusätzliche Visu Werte konfiguriert, die ich dann in den Callback Methoden berechne.

Meine Config liegt im Example Ordner.

p.s.: Bin gerade dabei einige Funktionen zu schreiben, die die Berechnungen in den Callbacks in Zukunft erleichtern sollen.

Hallo Leute,

habe einige Erweiterungen an dem Modul vorgenommen:

[ul]
[li]Support von Wasser Sensoren
[/li][li]Support von Gas Sensoren
[/li][li]Neue Utitlity Funktionen, die das Errechnen von kWh aus Watt Werten und umgekehrt ermöglichen.
[/li][/ul]

Ein praktisches Beispiel zur Konfiguration ist im WIKI zu finden.

Konnte das Ganze allerdings noch nicht in der Praxis testen, da ich noch keine passenden Soensoren habe…

…ich stelle mich ja manchmal wirklich schusselig an…

Aber mit der Nutzung der Syntax der Call Back Funktionen forderst Du meinen nicht PHP Programmierer Kopf echt heraus.

Könntest Du einmal Deine Konfig hier oder im Wiki posten ?
Ich denke dann wird nicht nur mir einiges klarer.
Ist halt nix für dummies :slight_smile: aber einfach zu genial um es nicht doch hin zu bekommen :slight_smile:

Gruss & merry x-mas
B71

ich bin auch am Testen der Callback.
Derzeit noch ohne Erfolg.
Da ich an 4 Sensoren nur die Leistung in Watt bekomme, wollte ich mir die KWH wie folgt berechnen:

function IPSPowerControl_CalculateValuesKWH($sensorList, $valueList) {
		$returnList = $valueList;
		foreach ($sensorList as $idx=>$value) {
			$returnList[$idx] = $value;
		}
		$returnList[0]  = IPSPowerControl_Watt2KWH(0);
		$returnList[1]  = IPSPowerControl_Watt2KWH(1);
		$returnList[2]  = IPSPowerControl_Watt2KWH(2);
		$returnList[3]  = IPSPowerControl_Watt2KWH(3);
		$returnList[4]  = IPSPowerControl_Watt2KWH(4);
		$returnList[5]  = $sensorList[5];
		return $returnList;
	}

ich bekomme aber einfach keine Werte.
Mir ist auch noch nicht klar, ob die irgend wo gespeichert werden, oder immer neu berechnet.

Die Erweiterung um Wasser bin ich noch am Testen.
Ich nehme mal an, der Sensor soll den Verbrauch in Liter liefern.

Ich finde das Modul echt genial!
Danke für die tolle Arbeit!

Jens

@B71

Meine Konfig befindet sich im Example Ordner, ist aber noch etwas komplizierter als das Beispiel im WIKI.

Im Prinzip defniert man in der Konfig eine Liste von Sensoren (0-x) und eine Liste von Werten die man berechnen und speichern möchte (0-y).
In den Callback Funktionen nimmt mandann die Zuordnung von Sensor und Visualisierungswert vor. Das kann man direkt machen ($returnList[0] = $sensorList[0]) oder man verwendet eine der Utility Funktionen (IPSPowerControl_Watt2KWH(0)).

@Jens

Die kWh Werte werden nur alle Stunde gespeichert, eventuell musst Du noch etwas warten. Poste doch auch noch Deine Konfig, damit ich Deine Callbacks überprüfen kann.

Die Zuweisung mit der Schleife am Beginn kannst Du entfernen, da Du die Resultate danach ja eh einzeln befüllst.


function IPSPowerControl_CalculateValuesKWH($sensorList, $valueList) {
		$returnList[0]  = IPSPowerControl_Watt2KWH(0);
		$returnList[1]  = IPSPowerControl_Watt2KWH(1);
		$returnList[2]  = IPSPowerControl_Watt2KWH(2);
		$returnList[3]  = IPSPowerControl_Watt2KWH(3);
		$returnList[4]  = IPSPowerControl_Watt2KWH(4);
		$returnList[5]  = $sensorList[5];
		return $returnList;
}

Es wundert mich auch, dass Du 5x Watt aus kWh berechnest, aber vorher schreibst, dass Du nur 4 Sensoren hast…

Es wundert mich auch, dass Du 5x Watt aus kWh berechnest, aber vorher schreibst, dass Du nur 4 Sensoren hast…

Also, ich dachte eigentlich, dass ich mit „IPSPowerControl_Watt2KWH(X)“ aus meinen gemessenen Leistungen (in Watt) den dazu gehörenden Verbrauch in KW/h errechne.

So habe ich die Beschreibung im WIKI verstanden.
„Beispiel
Die Funktion IPSPowerControl_Watt2KWH kann verwendet werden, wenn der Sensor nur Watt Werte unterstützt.“

Würde aber natürlich auch erklären, warum ich gestern 123 KW/h Verbrauch hatte:loveips:

Hier noch die Config:


	function IPSPowerControl_GetSensorConfiguration() {
		return array(
			0    => array(IPSPC_PROPERTY_NAME        => '13_EG',
			              IPSPC_PROPERTY_VARWATT     => 43522,
			              IPSPC_PROPERTY_VARKWH      => null,
			              ),
		   1    => array(IPSPC_PROPERTY_NAME        => '14_OG',
			              IPSPC_PROPERTY_VARWATT     => 25862,
			              IPSPC_PROPERTY_VARKWH      => null,
			              ),
         2    => array(IPSPC_PROPERTY_NAME        => '15_UG/Rollo',
			              IPSPC_PROPERTY_VARWATT     => 16272,
			              IPSPC_PROPERTY_VARKWH      => null,
			              ),
         3    => array(IPSPC_PROPERTY_NAME        => '16_Wohnbereich',
			              IPSPC_PROPERTY_VARWATT     => 51774,
			              IPSPC_PROPERTY_VARKWH      => null,
			              ),
         4    => array(IPSPC_PROPERTY_NAME        => '21_Hzg/Server',
			              IPSPC_PROPERTY_VARWATT     => 46276,
			              IPSPC_PROPERTY_VARKWH      => null,
			              ),
         5    => array(IPSPC_PROPERTY_NAME        => 'Verbrauch',
			              IPSPC_PROPERTY_VARWATT     => 17999,
			              IPSPC_PROPERTY_VARKWH      => 52343,
			              ),
         6    => array(IPSPC_PROPERTY_NAME        => 'Water',
                       IPSPC_PROPERTY_VARM3       => 32589,
                    ),

			);
	}
	

	/**
	 *
	 * Defintion der Visualisierungs Werte
	 * 
	 * Die Konfiguration erfolgt in Form eines Arrays, für jede Visualisierungs Variable wird ein Eintrag im Array erzeugt.
	 *
	 *   IPSPC_PROPERTY_NAME      - Name der Visualisierungs Variable
	 *
	 *   IPSPC_PROPERTY_DISPLAY   - Spezifiziert ob der Wert in der GUI visualisiert werden soll
	 *
	 *   IPSPC_PROPERTY_VALUETYPE - Werte Type der Variable, mögliche Werte:
	 *                                IPSPC_VALUETYPE_TOTAL  ... definiert die Variable als Summenwert über alle Stromkreise
	 *                                IPSPC_VALUETYPE_DETAIL ... definiert die Variable als Detailwert eines Stromkreises
	 *                                IPSPC_VALUETYPE_OTHER  ... übrige Werte (weder Total noch Detail)
	 *
	 * Eine ausführliche Beispielliste findet sich auch im Example Ordner
	 *
	 *
	 * Beispiel:
	 * @code
        function IPSPowerControl_GetValueConfiguration() {
          return array(
             0    => array(IPSPC_PROPERTY_NAME        => 'Total',
                           IPSPC_PROPERTY_DISPLAY     => true,
                           IPSPC_PROPERTY_VALUETYPE   => IPSPC_VALUETYPE_TOTAL,
                          ),
             1    => array(IPSPC_PROPERTY_NAME        => 'Waschmaschine',
                           IPSPC_PROPERTY_DISPLAY     => true,
                           IPSPC_PROPERTY_VALUETYPE   => IPSPC_VALUETYPE_DETAIL,
                          ),
             );
        }
	 * @endcocde
	 *
	 * @return string Liefert Array mit den Daten der Visualisierungs Werte
	 */
	function IPSPowerControl_GetValueConfiguration() {
		return array(
			0    => array(IPSPC_PROPERTY_NAME        => '13_EG',
			              IPSPC_PROPERTY_DISPLAY     => true,
			              IPSPC_PROPERTY_VALUETYPE   => IPSPC_VALUETYPE_DETAIL,
			              ),
			1    => array(IPSPC_PROPERTY_NAME        => '14_OG',
			              IPSPC_PROPERTY_DISPLAY     => true,
			              IPSPC_PROPERTY_VALUETYPE   => IPSPC_VALUETYPE_DETAIL,
			              ),
         2    => array(IPSPC_PROPERTY_NAME        => '15_UG/Rollo',
			              IPSPC_PROPERTY_DISPLAY     => true,
			              IPSPC_PROPERTY_VALUETYPE   => IPSPC_VALUETYPE_DETAIL,
			              ),
         3    => array(IPSPC_PROPERTY_NAME        => '16_Wohnbereich',
			              IPSPC_PROPERTY_DISPLAY     => true,
			              IPSPC_PROPERTY_VALUETYPE   => IPSPC_VALUETYPE_DETAIL,
			              ),
         4    => array(IPSPC_PROPERTY_NAME        => '21_Hzg/Server',
			              IPSPC_PROPERTY_DISPLAY     => true,
			              IPSPC_PROPERTY_VALUETYPE   => IPSPC_VALUETYPE_DETAIL,
			              ),
         5    => array(IPSPC_PROPERTY_NAME        => 'Verbrauch',
			              IPSPC_PROPERTY_DISPLAY     => true,
			              IPSPC_PROPERTY_VALUETYPE   => IPSPC_VALUETYPE_TOTAL,
			              ),
         6    => array(IPSPC_PROPERTY_NAME        => 'Wasser',
			              IPSPC_PROPERTY_DISPLAY     => true,
			              IPSPC_PROPERTY_VALUETYPE   => IPSPC_VALUETYPE_WATER,
			              ),
			              
			              
		);
	}

	/** IPSPowerControl Stromkosten  
	 *
	 * Definiert die Stromkosten in Cents per kWh, die für die Berechnung der Werte verwendet
	 * werden soll.
	 *
	 */
	define ("IPSPC_ELECTRICITYRATE",    23 /*Cents per KWh*/);


	/** IPSPowerControl Aktualisierungs Interval Watt 
	 *
	 * Definiert das Interval für die Aktualisierung der berechneten Watt Verbrauchswerte.
	 * Die Angabe erfolgt in Sekunden
	 *
	 */
	define ("IPSPC_REFRESHINTERVAL_WATT",   60);

	/** IPSPowerControl Aktualisierungs Interval kWh 
	 *
	 * Definiert das Interval für die Aktualisierung der berechneten kWh Verbrauchswerte.
	 * Die Angabe erfolgt in Minuten
	 *
	 */
	define ("IPSPC_REFRESHINTERVAL_KWH",   60);

	/** @}*/
?>

OK, ich zähle aber 5 Sensoren, wo kWh aus Watt berechnet wird.

Zuweisung des Wasser Sensors fehlt noch in der Callback bzw. kannst Du den Loop einfach in der Callback lassen.

Deine Config sollte also funktionieren!

ja,

habe meine Callback noch mal bearbeitet:


	function IPSPowerControl_CalculateValuesKWH($sensorList, $valueList) {
		$returnList = $valueList;
		foreach ($sensorList as $idx=>$value) {
			$returnList[$idx] = $value;
		}
		$returnList[0]  = IPSPowerControl_Watt2KWH(0,1);
		$returnList[1]  = IPSPowerControl_Watt2KWH(1,1);
		$returnList[2]  = IPSPowerControl_Watt2KWH(2,1);
		$returnList[3]  = IPSPowerControl_Watt2KWH(3,1);
		$returnList[4]  = IPSPowerControl_Watt2KWH(4,1);

		return $returnList;
	}

Habe etwas mit dem Multiplikator experimentiert, aber habe es wohl noch nicht verstanden.
Egal ob ich 1, 1000, 0.001 eingebe- Die Werte stimmen nicht.
Was wird da im Hintergrund gerechnet?
Ich habe keinen fortlaufenden Zähler sondern bekomme alle x sec. die aktuelle Leistung in Watt. (digitalStrom)

OK, hab da grad noch ein Problem entdeckt bei der Umrechnung von Watt auf kWh (Problem ist, das die Funktion nur jede Stunde aufgerufen wird).

Muss da nochmals etwas drüber nachdenken…

Hi Andreas,

Ich find´s echt super, dass du noch andere Sensoren ins IPS Powercontrol implementiert hast.
In Kombination mit Highchart kann man damit dann alle möglichen Sensoren visualiseren :slight_smile:
ich werd aber noch nicht so wirklich schlau, wie das IPS Powercontrol funktioniert und was es tatsächlich anzeigen soll bzw. welche Inputwerte in welcher Art und Weise verwendet werden sollen.

Die meisten Zählersensoren (hauptsächlich S0) zählen die Impulse innerhalb einer gewissen Zeit.
Somit könnte man dann alles mögliche ansprechend visualisieren (und im Endeffekt neben den Verbrauchswerten wie Strom, Gas, Wasser auch eine Wetterstation wunderbar abbilden (mit Wind- und Regenmesser über die S0 Zählervariante, Temperatur-, Luftfeuchtigkeit-, Helligkeit-, Solarstrahlung, UV usw. über div. andere Sensoren).

Zurück zu IPS Control und z.b. dem Wasserverbrauch.
Das ist, wenn ich das ganze richtig verstanden habe, so implementiert, dass vom Zähler die Absolutstände ausgelesen werden.
Ich glaub aber, dass das mit der Zeit recht unübersichtlich wird und auch nicht wirklich aussagekräftig, da z.b. über den Zeitraum von 1 Monat der Absolutzählerstand von 13123 m3 auf 25432 m3 hochgezählt und angezeigt wird.
Vor allem, wenn man mehrere Sensoren miteinander vergleichen will.

Ich hab das bei mir so implementiert, dass ich Tageswerte, Wochenwerte, Monatswerte und Jahreswerte und die dazugehörigen Werte vom letzten Tag, Woche, Monat, Jahr wegschreibe und die Zähler dann nach 1 Tag, Woche, Monat, Jahr zurücksetze.

Vielleicht kann man das so ähnlich auch ins IPS Control implementieren.
Was ich noch super finden würde…wenn man beim Type/offset für jede Einheit ein eigenes Icon hätte und das dann z.b. noch kombinierbar wäre (also eine Mehrfachauswahl zulässig wäre)…also eigentlich pro IPSPC_PROPERTY_VALUETYPE .
Momentan werden die m3 Werte auch mit der Rubrik kwh angezeigt.

Aber das können wir ja ev. am nächsten Stammtisch diskutieren :slight_smile:

Jetzt hab ich´s anscheinend verstanden.
Ich hab jetzt einfach meine Tages, Wochen, Monatswerte ins IPS Powercontrol integriert…
Somit passts wunderbar für mich und ich kann mir alle möglichen Sachen übereinanderlegen. :smiley:

ok, anscheinend doch nicht verstanden.
Man muss anscheinend doch die absoluten Zählerstände einlesen und IPS Powercontrol bzw. highchart ist dann klug genug, dass es selbständig die deltas zu jeder Stunde ausrechnet und darstellt.