Wärmepumpe Verbrauchserfassung etc.

Hallo,
nachdem ich hier im Forum ein paar sehr hilfreiche Anregungen zum Thema bekommen habe, allerdings nix richtig paßte, hab ich’s mal selbst versucht - bin allerdings kein „PHP-Held“ - falls Ihr also hilfreiche Tips habt, immer her damit :slight_smile:
Es sind jetzt 2 Scripte geworden, da ich die erzeugten Wärmemengen separat ermittelt habe. Wie Ihr sehen könnt beziehen sich beide Scripte hinsichtlich der zeitlichen Dimensionen auf Tag, Woche, Monat und Jahr.
Im 2. Script werden zusätzlich zum Stromverbrauch, die anfallenden Kosten entsprechend geltendem WP-Tarif und die Arbeitszahl ermittelt.

Nachfolgend das Script zur Erfassung der Wärmemenge:

$counter = GetValue(12722 /*[Heizraum\WMZ WP gesamt\M-Bus Wärme gesamt\Energy]*/);

$id_event = $IPS_EVENT;

switch($id_event) {
//Tag
	case 39405:
		$delta = $counter - GetValue(41276 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\counter old midnight]*/);
    	SetValue(41276 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\counter old midnight]*/, $counter );
    	$delta = (double)($delta);
    	SetValue(22635 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\1Wärmemenge Tag]*/,$delta);
	break;
//Woche
	case 41464:
		$delta = $counter - GetValue(34529 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\counter old week]*/);
    	SetValue(34529 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\counter old week]*/, $counter );
    	$delta = (double)($delta);
    	SetValue(49042 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\2Wärmemenge Woche]*/,$delta);
   break;
//Monat
	case 23800:
		$delta = $counter - GetValue(32228 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\counter old month]*/);
    	SetValue(32228 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\counter old month]*/, $counter );
    	$delta = (double)($delta);
    	SetValue(37233 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\3Wärmemenge Monat]*/,$delta);
   break;
//Jahr
	case 39377:
	   $delta = $counter - GetValue(11243 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\counter old year]*/);
    	SetValue(11243 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\counter old year]*/, $counter );
    	$delta = (double)($delta);
    	SetValue(48737 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\4Wärmemenge Jahr]*/,$delta);
   break;
}

Hier das Hauptscript:

$preis = 0.1802; //Preis WP-Strom in €

$counter = GetValue(39840 /*[Heizraum\WP Stromzähler\M-Bus Strom\Energy]*/);

$id_event = $IPS_EVENT;
switch($id_event) {
//Tag
	case 18518:
	     	$delta = $counter - GetValue(18243 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\counter old midnight]*/);
    		SetValue(18243 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\counter old midnight]*/, $counter );
    		$delta = (double)($delta);
    		SetValue(58714 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\Verbrauch Tag]*/,$delta);
    		setvalue(51637 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\1Kosten Tag]*/, $delta * $preis);
    		
//Ermittlung der Gesamt-AZ Tag, zuerst checken, ob Wärme erzeugt wurde

   			if (getvaluefloat(22635 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\1Wärmemenge Tag]*/) > 0){
    				setvaluefloat(53752 /*[Heizraum\Wärmepumpe\WP Arbeitszahlen\AZ gesamt\1AZ_Gesamt Tag]*/, getvaluefloat(22635 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\1Wärmemenge Tag]*/) / getvaluefloat(58714 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\Verbrauch Tag]*/));
				}
				else {
	   			setvaluefloat(53752 /*[Heizraum\Wärmepumpe\WP Arbeitszahlen\AZ gesamt\1AZ_Gesamt Tag]*/, 0);
				}
	break;
//Woche
	case 32148:
	     	$delta = $counter - GetValue(22688 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\counter old week]*/);
    		SetValue(22688 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\counter old week]*/, $counter );
    		$delta = (double)($delta);
    		SetValue(59415 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\Verbrauch Woche]*/,$delta);
    		setvalue(48971 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\2Kosten Woche]*/, $delta * $preis);
	 		
//Ermittlung der Gesamt-AZ Woche, zuerst checken, ob Wärme erzeugt wurde

   			if (getvaluefloat(49042 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\2Wärmemenge Woche]*/) > 0){
    				setvaluefloat(49198 /*[Heizraum\Wärmepumpe\WP Arbeitszahlen\AZ gesamt\2AZ_Gesamt Woche]*/, getvaluefloat(49042 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\2Wärmemenge Woche]*/) / getvaluefloat(59415 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\Verbrauch Woche]*/));
				}
				else {
	   			setvaluefloat(49198 /*[Heizraum\Wärmepumpe\WP Arbeitszahlen\AZ gesamt\2AZ_Gesamt Woche]*/, 0);
				}
	break;
//Monat
	case 17617:
	     	$delta = $counter - GetValue(20593 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\counter old month]*/);
    		SetValue(20593 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\counter old month]*/, $counter );
    		$delta = (double)($delta);
    		SetValue(49877 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\Verbrauch Monat]*/,$delta);
    		setvalue(24727 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\3Kosten Monat]*/, $delta * $preis);
	 		
//Ermittlung der Gesamt-AZ Monat, zuerst checken, ob Wärme erzeugt wurde

   			if (getvaluefloat(37233 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\3Wärmemenge Monat]*/) > 0){
    				setvaluefloat(45604 /*[Heizraum\Wärmepumpe\WP Arbeitszahlen\AZ gesamt\3AZ_Gesamt Monat]*/, getvaluefloat(37233 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\3Wärmemenge Monat]*/) / getvaluefloat(49877 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\Verbrauch Monat]*/));
				}
				else {
	   			setvaluefloat(45604 /*[Heizraum\Wärmepumpe\WP Arbeitszahlen\AZ gesamt\3AZ_Gesamt Monat]*/, 0);
				}
	break;
//Jahr
	case 46657:
	     	$delta = $counter - GetValue(57397 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\counter old year]*/);
    		SetValue(57397 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\counter old year]*/, $counter );
    		$delta = (double)($delta);
    		SetValue(33805 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\Verbrauch Jahr]*/,$delta);
    		setvalue(25700 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\4Kosten Jahr]*/, $delta * $preis);
	 		
//Ermittlung der Gesamt-AZ Jahr, zuerst checken, ob Wärme erzeugt wurde

   			if (getvaluefloat(48737 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\4Wärmemenge Jahr]*/) > 0){
    				setvaluefloat(58938 /*[Heizraum\Wärmepumpe\WP Arbeitszahlen\AZ gesamt\4AZ_Gesamt Jahr]*/, getvaluefloat(48737 /*[Heizraum\WMZ WP gesamt\erzeugte Wärmemengen gesamt\4Wärmemenge Jahr]*/) / getvaluefloat(33805 /*[Heizraum\WP Stromzähler\Stromverbrauch Wärmepumpe gesamt\Verbrauch Jahr]*/));
				}
				else {
	   			setvaluefloat(58938 /*[Heizraum\Wärmepumpe\WP Arbeitszahlen\AZ gesamt\4AZ_Gesamt Jahr]*/, 0);
				}
	break;
}
 

:loveips:

MfG, kabo63.