Stromverbräuche täglich, monatl. und jährlich errechnen

Hallo,

Ich hab einen EM1010 Strom- und Gassensor in IPS einbinden können (dank Tommy) und würde nun gerne diese Verbräuche erfassen. Der tägliche Verbrauch wird automatisch in einer Variable gespeichert.
Dann habe ich selber Variablen angelegt (Stromverbrauch täglich, monatlich und jährlich) und ein Skript geschrieben, das mir den täglichen Verbrauch um 23.59Uhr in die Variable (täglich) schreibt.
Um den monatlichen Verbrauch zu errechnen müsste ich jetzt wohl am 1. eines jeden Monats die 28 oder 29 oder 30 oder 31 letzen Tagesverbräuche aufaddieren.

Der jährliche Verbrauch lässt sich dann leichter errechnen.

Gibt es da schon ein elegantes Skript für so eine Aufgabe ?

Vielen Dank im Voraus.

Grüße

Messtechnik Fuchs

Servus

dafür gibts doch doch Datenbank. Alles reinwerfen und dann je nach Gusto entsprechende Auswertung machen.

Ansonsten ist zb. dieses

Script hier eine gute Basis. Müßtest halt an dein EKM anpassen.

gruß
bb

Warum so kompliziert?
Nutzt doch das Loggen in der Datenbank setze da weiter an.
Da brauchst du nur die Differenz vom Monatsletzten zum Monatsersten errechnen.

P.S. Der Bernhard war eher :D… man bin ich heute langsam beim Tippen…

Die Datenbank habe ich aktiviert.
Damit bekomme ich jeden Tag einen Tagesverbrauchs-Wert in kWh.
Den Wert kann ich mir auch als Graph anzeigen lassen.
Aber wie kriege ich die Summe aus der Datenbank ?
Ich könnte vielleicht jeden Tag den Tagesverbrauch aufaddieren und an jedem 1. des Monats die Differenz zum letzen Monat berechnen und diesen Wert dann wieder über die Datenbank darstellen lassen.

Hattest Du das in etwa so gemeint ?

Grüße

Messtechnik Fuchs

@ Messtechnik Fuchs

schau dir mal das Skript an:

Version: V1.2 05.06.12 (automatisches hidden und logging hinzu)


<?
################################################################################
# Dieses Skript errechnet alle Verbrauchsdaten inkl. Eigenverbrauch auf Basis                                                       #
# eines Verbrauchs- und eines Ertragzählers.                                                                                                  #
# Bitte wie unten beschrieben die Punkte 1-4 beachten                                                                                    #
# Dieses Skript legt 13 Variable und 2 VariableProfile an.                                                                                   #
# V1.2                                                                                                                                   05.06.12 Ise #
################################################################################

/* 1. Variable anpassen
	2. Skript ausführen
	3. der neu angelegten Variable "Zeitraum" ein Skript mit folgendem Inhalt
	   zuweisen: SetValue($IPS_VARIABLE, $IPS_VALUE);
	4. diesem Skript ein Ereigniss hinzufügen "bei Aktualisierung der unter
	   "$roh_ver_kw" angegebenen Variable.
	   Die Zähler würde ich alle 60sec. aktualisieren.
		
*/
		
//ID des Archive Handler (bitte anpassen)
$Archive_Handler = 11461 /*[Archive Handler]*/;

//ID´s der Rohdaten (bitte anpassen)
$roh_pv_w = GetValueFloat(51791 /*[Geräte\Sensoren\PV 4,2 KW\Leistung]*/);    //Rohwert PV-Leistung [W] logging
$roh_pv_kw = GetValueInteger(59484 /*[Geräte\Sensoren\PV 4,2 KW\Ertrag]*/);      //Rohwert PV-Ertrag [kW] logging
$imp_ertrag = 1/2000; //1/ Imp /KWh

$roh_ver_w = GetValueFloat(17999 /*[Geräte\Sensoren\Strom\Leistung / min]*/);	//Rohwert Verbrauch-Leistung [W] logging
$roh_ver_kw = GetValueInteger(52343 /*[Geräte\Sensoren\Strom\Verbrauch]*/); 		//Rohwert Verbrauch [kW] logging
$imp_verbrauch = 1/1000; //1/ Imp /KWh

//Kategorie in der die neuen Variablen erstellt werden sollen (bitte anpassen)
$kategorie = 49728 /*[Variable\Energie\Strom]*/;

################################################################################
//ab hier bitte nichts ändern
################################################################################

//ausführen nur bei Handstart
if ($_IPS['SENDER']==="Execute")
{

//Variablenprofile anlegen
if (!IPS_VariableProfileExists("Zeitraum"))
{
IPS_CreateVariableProfile("Zeitraum",1);
IPS_SetVariableProfileValues("Zeitraum", 0, 4,1);
IPS_SetVariableProfileAssociation("Zeitraum", 0, "Stunde", "", 0xFFFFFF);
IPS_SetVariableProfileAssociation("Zeitraum", 1, "Tag", "", 0xFFFFFF);
IPS_SetVariableProfileAssociation("Zeitraum", 2, "Woche", "", 0xFFFFFF);
IPS_SetVariableProfileAssociation("Zeitraum", 3, "Monat", "", 0xFFFFFF);
IPS_SetVariableProfileAssociation("Zeitraum", 4, "Jahr", "", 0xFFFFFF);
}

if (!IPS_VariableProfileExists("Prozent"))
{
IPS_CreateVariableProfile("Prozent",2);
IPS_SetVariableProfileDigits("Prozent",1);
IPS_SetVariableProfileValues("Prozent", 0, 100, 0.1);
IPS_SetVariableProfileText("Prozent","","%");

}

//Variable anlegen
//(Kategorie,VariableID,Typ,Profil,Versteckt,Logging)
$vid = CreateVariableByName($kategorie,"Ertrag_alt",1,"",true,false);
$vid = CreateVariableByName($kategorie,"Verbrauch_alt",1,"",true,false);
$vid = CreateVariableByName($kategorie,"Ertrag_ges",2,"~Electricity",false,True);
$vid = CreateVariableByName($kategorie,"Verbrauch_ges",2,"~Electricity",false,True);
$vid = CreateVariableByName($kategorie,"Verkauf_ges",2,"~Electricity",false,True);
$vid = CreateVariableByName($kategorie,"Zukauf_ges",2,"~Electricity",false,True);
$vid = CreateVariableByName($kategorie,"Delta",2,"~Watt.14490",false,false);

$vid = CreateVariableByName($kategorie,"Zeitraum",1,"Zeitraum",false,false);
$vid = CreateVariableByName($kategorie,"Zukauf",2,"~Electricity",false,false);
$vid = CreateVariableByName($kategorie,"Verbrauch",2,"~Electricity",false,false);
$vid = CreateVariableByName($kategorie,"Verkauf",2,"~Electricity",false,false);
$vid = CreateVariableByName($kategorie,"Ertrag",2,"~Electricity",false,false);
$vid = CreateVariableByName($kategorie,"Eigenverbrauch",2,"Prozent",false,false);



}
else
{
//ab hier nur bei Auslösung durch Ereigniss

//Definition
//$var1=IPS_GetVariableIDByName ("Zeitraum", $kategorie);
$zeitraum = GetValueInteger(@IPS_GetVariableIDByName ("Zeitraum", $kategorie));;
$roh_pv_kw_alt = GetValueInteger(@IPS_GetVariableIDByName ("Ertrag_alt", $kategorie)); //Rohwert alt PV-Ertrag [kW]
$roh_ver_kw_alt = GetValueInteger(@IPS_GetVariableIDByName ("Verbrauch_alt", $kategorie));//Rohwert alt Verbrauch [kW]
$PV_Ertrag = GetValueFloat(@IPS_GetVariableIDByName ("Ertrag_ges", $kategorie));
$Verbrauch = GetValueFloat(@IPS_GetVariableIDByName ("Verbrauch_ges", $kategorie));
$Einspeisung = GetValueFloat(@IPS_GetVariableIDByName ("Verkauf_ges", $kategorie));
$Zukauf = GetValueFloat(@IPS_GetVariableIDByName ("Zukauf_ges", $kategorie));
//echo $PV_Ertrag;

//Berechnung

//Leistungsdelta
SetValueFloat(@IPS_GetVariableIDByName ("Delta", $kategorie),$roh_pv_w - $roh_ver_w);

// PV-Ertrag
$delta_roh_pv_kw = ($roh_pv_kw - $roh_pv_kw_alt) * $imp_ertrag;
if ($delta_roh_pv_kw > 0)
{
SetValueFloat(@IPS_GetVariableIDByName ("Ertrag_ges", $kategorie),$PV_Ertrag +$delta_roh_pv_kw);
}
SetValueInteger(@IPS_GetVariableIDByName ("Ertrag_alt", $kategorie),$roh_pv_kw);

// Verbrauch
$delta_roh_ver_kw = ($roh_ver_kw - $roh_ver_kw_alt) * $imp_verbrauch;
if ($delta_roh_ver_kw > 0)
{
SetValueFloat(@IPS_GetVariableIDByName ("Verbrauch_ges", $kategorie),$Verbrauch +$delta_roh_ver_kw);
}
SetValueInteger(@IPS_GetVariableIDByName ("Verbrauch_alt", $kategorie),$roh_ver_kw);

//Einspeisung
$delta_kw = $delta_roh_pv_kw - $delta_roh_ver_kw;
if ($delta_kw > 0)
{
SetValueFloat(@IPS_GetVariableIDByName ("Verkauf_ges", $kategorie),$Einspeisung+$delta_kw);
}

//Zukauf
if ($delta_kw < 0)
{
SetValueFloat(@IPS_GetVariableIDByName ("Zukauf_ges", $kategorie),$Zukauf-$delta_kw);
}




//Daten aus Datenbank lesen
$Zukauf = AC_GetAggregatedValues($Archive_Handler,@IPS_GetVariableIDByName ("Zukauf_ges", $kategorie),$zeitraum,0,0,0);
SetValueFloat(@IPS_GetVariableIDByName ("Zukauf", $kategorie),$Zukauf[0]['Avg']);

$Verbrauch=AC_GetAggregatedValues($Archive_Handler,@IPS_GetVariableIDByName ("Verbrauch_ges", $kategorie),$zeitraum,0,0,0);
SetValueFloat(@IPS_GetVariableIDByName ("Verbrauch", $kategorie),$Verbrauch[0]['Avg']);

$Verkauf=AC_GetAggregatedValues($Archive_Handler,@IPS_GetVariableIDByName ("Verkauf_ges", $kategorie),$zeitraum,0,0,0);
SetValueFloat(@IPS_GetVariableIDByName ("Verkauf", $kategorie),$Verkauf[0]['Avg']);

$Ertrag=AC_GetAggregatedValues($Archive_Handler,@IPS_GetVariableIDByName ("Ertrag_ges", $kategorie),$zeitraum,0,0,0);
SetValueFloat(@IPS_GetVariableIDByName ("Ertrag", $kategorie),$Ertrag[0]['Avg']);

$eigenverbrauch = $Ertrag[0]['Avg'] - $Verkauf[0]['Avg'];
SetValueFloat(@IPS_GetVariableIDByName ("Eigenverbrauch", $kategorie),(100 *$eigenverbrauch) / $Ertrag[0]['Avg']);



}
//Funktionen

function CreateVariableByName($kategorie ,$name, $type, $profil, $hidden, $log)
{
   global $IPS_SELF;
   $vid = @IPS_GetVariableIDByName($name, $kategorie);
   if($vid===false)
	{
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $kategorie);
      IPS_SetName($vid, $name);
      IPS_SetVariableCustomProfile($vid, $profil);
      IPS_SetInfo($vid, "This Variable was created by Script #$IPS_SELF");
      IPS_SetHidden($vid, $hidden);
      AC_SetLoggingStatus($Archive_Handler,$vid,$log);
   }
   return $vid;
}
//print_r(IPS_GetVariable(@IPS_GetVariableIDByName ("Zeitraum", $kategorie)));
?>



Gibt es das Skript auch für 3 Zähler (mit PV Eigenverbrauch)?:o

@mr_command

noch nicht, sollte aber recht schnell umgebaut sein.
Ich kann mir das heute Abend mal anschauen.
Du hast einen 1. Zähler für den PV-Ertrag,
einen 2., für den Verbrauch und einen
3. Zähler der nur den Eigenverbrauch erfasst?

@Isi

Danke für die schnelle Antwort!

Die Zähler sind:

  1. Zähler für den PV-Ertrag
  2. für den Bezug von den Stadtwerken
  3. Lieferung an die Stadtwerke

Eigenverbrauch wäre also 1. minus 3. + 2.

Danke schonmal im Vorraus!
Andreas

@mr_command:

Version: V2.2 05.06.12 (automatisches hidden und logging hinzu)


<?
################################################################################
# Dieses Skript errechnet alle Verbrauchsdaten inkl. Eigenverbrauch auf Basis  #
# eines Zukaufs-, eines Verkaufs- und eines Ertragzählers.                     #
# Bitte wie unten beschrieben die Punkte 1-4 beachten                          #
# Dieses Skript legt 14 Variable und 2 VariableProfile an.                     #
# V2.2                                                            05.06.12 Ise #
################################################################################

/* 1. Variable anpassen
	2. Skript ausführen
	3. der neu angelegten Variable "Zeitraum" ein Skript mit folgendem Inhalt
	   zuweisen: SetValue($IPS_VARIABLE, $IPS_VALUE);
	4. diesem Skript ein Ereigniss hinzufügen "bei Aktualisierung der Variablen
		"Zeitraum" , und alle 60 sec.
		Die Zähler würde ich alle 60sec. aktualisieren.

*/

//ID des Archive Handler (bitte anpassen)
$Archive_Handler = 11461 /*[Archive Handler]*/;

//ID´s der Rohdaten (bitte anpassen)
$roh_pv_w = GetValueFloat(51791 /*[Geräte\Sensoren\PV 4,2 KW\Leistung]*/);    //Rohwert PV-Leistung [W] logging
$roh_pv_kw = GetValueInteger(59484 /*[Geräte\Sensoren\PV 4,2 KW\Ertrag]*/);      //Rohwert PV-Ertrag [kW] logging
$imp_ertrag = 1/2000; //1/ Imp /KWh

$roh_ver_w = GetValueFloat(17999 /*[Geräte\Sensoren\Strom\Leistung / min]*/);	//Rohwert Verkauf-Leistung [W] logging
$roh_ver_kw = GetValueInteger(52343 /*[Geräte\Sensoren\Strom\Verkauf]*/); 		//Rohwert Verkauf [kW] logging
$imp_verkauf = 1/1000; //1/ Imp /KWh

$roh_zuk_w = GetValueFloat(17999 /*[Geräte\Sensoren\Strom\Leistung / min]*/);	//Rohwert Zukauf-Leistung [W] logging
$roh_zuk_kw = GetValueInteger(52343 /*[Geräte\Sensoren\Strom\Zukauf]*/); 		//Rohwert Zukauf [kW] logging
$imp_zukauf = 1/1000; //1/ Imp /KWh

//Kategorie in der die neuen Variablen erstellt werden sollen (bitte anpassen)
$kategorie = 49728 /*[Variable\Energie\Strom]*/;

################################################################################
//ab hier bitte nichts ändern
################################################################################

//ausführen nur bei Handstart
if ($_IPS['SENDER']==="Execute")
{

//Variablenprofile anlegen
if (!IPS_VariableProfileExists("Zeitraum"))
{
IPS_CreateVariableProfile("Zeitraum",1);
IPS_SetVariableProfileValues("Zeitraum", 0, 4,1);
IPS_SetVariableProfileAssociation("Zeitraum", 0, "Stunde", "", 0xFFFFFF);
IPS_SetVariableProfileAssociation("Zeitraum", 1, "Tag", "", 0xFFFFFF);
IPS_SetVariableProfileAssociation("Zeitraum", 2, "Woche", "", 0xFFFFFF);
IPS_SetVariableProfileAssociation("Zeitraum", 3, "Monat", "", 0xFFFFFF);
IPS_SetVariableProfileAssociation("Zeitraum", 4, "Jahr", "", 0xFFFFFF);
}

if (!IPS_VariableProfileExists("Prozent"))
{
IPS_CreateVariableProfile("Prozent",2);
IPS_SetVariableProfileDigits("Prozent",1);
IPS_SetVariableProfileValues("Prozent", 0, 100, 0.1);
IPS_SetVariableProfileText("Prozent","","%");

}

//Variable anlegen
$vid = CreateVariableByName($kategorie,"Ertrag_alt",1,"",true,false);
$vid = CreateVariableByName($kategorie,"Verkauf_alt",1,"",true,false);
$vid = CreateVariableByName($kategorie,"Zukauf_alt",1,"",true,false);
$vid = CreateVariableByName($kategorie,"Ertrag_ges",2,"~Electricity",false,True);
$vid = CreateVariableByName($kategorie,"Verbrauch_ges",2,"~Electricity",false,True);
$vid = CreateVariableByName($kategorie,"Verkauf_ges",2,"~Electricity",false,True);
$vid = CreateVariableByName($kategorie,"Zukauf_ges",2,"~Electricity",false,True);
$vid = CreateVariableByName($kategorie,"Delta",2,"~Watt.14490",false,false);

$vid = CreateVariableByName($kategorie,"Zeitraum",1,"Zeitraum",false,false);
$vid = CreateVariableByName($kategorie,"Zukauf",2,"~Electricity",false,false);
$vid = CreateVariableByName($kategorie,"Verbrauch",2,"~Electricity",false,false);
$vid = CreateVariableByName($kategorie,"Verkauf",2,"~Electricity",false,false);
$vid = CreateVariableByName($kategorie,"Ertrag",2,"~Electricity",false,false);
$vid = CreateVariableByName($kategorie,"Eigenverbrauch",2,"Prozent",false,false);



}
else
{
//ab hier nur bei Auslösung durch Ereigniss

//Definition

$zeitraum = GetValueInteger(@IPS_GetVariableIDByName ("Zeitraum", $kategorie));;
$roh_pv_kw_alt = GetValueInteger(@IPS_GetVariableIDByName ("Ertrag_alt", $kategorie)); //Rohwert alt PV-Ertrag [kW]
$roh_ver_kw_alt = GetValueInteger(@IPS_GetVariableIDByName ("Verbrauch_alt", $kategorie));//Rohwert alt Verkauf [kW]
$roh_zuk_kw_alt = GetValueInteger(@IPS_GetVariableIDByName ("Zukauf_alt", $kategorie));//Rohwert alt Zukauf [kW]
$PV_Ertrag = GetValueFloat(@IPS_GetVariableIDByName ("Ertrag_ges", $kategorie));
$Verbrauch = GetValueFloat(@IPS_GetVariableIDByName ("Verbrauch_ges", $kategorie));
$Einspeisung = GetValueFloat(@IPS_GetVariableIDByName ("Verkauf_ges", $kategorie));
$Zukauf = GetValueFloat(@IPS_GetVariableIDByName ("Zukauf_ges", $kategorie));


//Berechnung


// PV-Ertrag
$delta_roh_pv_kw = ($roh_pv_kw - $roh_pv_kw_alt) * $imp_ertrag;
if ($delta_roh_pv_kw > 0)
{
SetValueFloat(@IPS_GetVariableIDByName ("Ertrag_ges", $kategorie),$PV_Ertrag +$delta_roh_pv_kw);
}
SetValueInteger(@IPS_GetVariableIDByName ("Ertrag_alt", $kategorie),$roh_pv_kw);

// Verkauf
$delta_roh_ver_kw = ($roh_ver_kw - $roh_ver_kw_alt) * $imp_verkauf;
if ($delta_roh_ver_kw > 0)
{
SetValueFloat(@IPS_GetVariableIDByName ("Verkauf_ges", $kategorie),$Einspeisung +$delta_roh_ver_kw);
}
SetValueInteger(@IPS_GetVariableIDByName ("Verkauf_alt", $kategorie),$roh_ver_kw);

// Zukauf
$delta_roh_zuk_kw = ($roh_zuk_kw - $roh_zuk_kw_alt) * $imp_zukauf;
if ($delta_roh_zuk_kw > 0)
{
SetValueFloat(@IPS_GetVariableIDByName ("Zukauf_ges", $kategorie),$Zukauf +$delta_roh_zuk_kw);
}
SetValueInteger(@IPS_GetVariableIDByName ("Zukauf_alt", $kategorie),$roh_zuk_kw);



//Verbrauch
$delta_kw = $delta_roh_pv_kw - $delta_roh_ver_kw + $delta_roh_zuk_kw
{
SetValueFloat(@IPS_GetVariableIDByName ("Zukauf_ges", $kategorie),$Zukauf+$delta_kw);
}

//Leistungsdelta
SetValueFloat(@IPS_GetVariableIDByName ("Delta", $kategorie),$roh_pv_w - $roh_ver_w + $roh_zuk_w);




//Daten aus Datenbank lesen
$Zukauf = AC_GetAggregatedValues($Archive_Handler,@IPS_GetVariableIDByName ("Zukauf_ges", $kategorie),$zeitraum,0,0,0);
SetValueFloat(@IPS_GetVariableIDByName ("Zukauf", $kategorie),$Zukauf[0]['Avg']);

$Verbrauch=AC_GetAggregatedValues($Archive_Handler,@IPS_GetVariableIDByName ("Verbrauch_ges", $kategorie),$zeitraum,0,0,0);
SetValueFloat(@IPS_GetVariableIDByName ("Verbrauch", $kategorie),$Verbrauch[0]['Avg']);

$Verkauf=AC_GetAggregatedValues($Archive_Handler,@IPS_GetVariableIDByName ("Verkauf_ges", $kategorie),$zeitraum,0,0,0);
SetValueFloat(@IPS_GetVariableIDByName ("Verkauf", $kategorie),$Verkauf[0]['Avg']);

$Ertrag=AC_GetAggregatedValues($Archive_Handler,@IPS_GetVariableIDByName ("Ertrag_ges", $kategorie),$zeitraum,0,0,0);
SetValueFloat(@IPS_GetVariableIDByName ("Ertrag", $kategorie),$Ertrag[0]['Avg']);

$eigenverbrauch = $Ertrag[0]['Avg'] - $Verkauf[0]['Avg'];
SetValueFloat(@IPS_GetVariableIDByName ("Eigenverbrauch", $kategorie),(100 *$eigenverbrauch) / $Ertrag[0]['Avg']);



}
//Funktionen

function CreateVariableByName($kategorie ,$name, $type, $profil, $hidden, $log)
{
   global $IPS_SELF;
   $vid = @IPS_GetVariableIDByName($name, $kategorie);
   if($vid===false)
	{
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $kategorie);
      IPS_SetName($vid, $name);
      IPS_SetVariableCustomProfile($vid, $profil);
      IPS_SetInfo($vid, "This Variable was created by Script #$IPS_SELF");
      IPS_SetHidden($vid, $hidden);
      AC_SetLoggingStatus($Archive_Handler,$vid,$log);
   }
   return $vid;
}

?>




Im Skript scheint ein Fehler zu sein,

ich bekomme nach dem Ausführen folgende Meldung:
Parse error: syntax error, unexpected ‚;‘ in [Skripte\Eigenverbrauch\Eigenverbrauch] on line 136

Wo liegt der Fehler?:confused:

//Verbrauch 
$delta_kw = $delta_roh_pv_kw - $delta_roh_ver_kw + $delta_roh_zuk_kw; 

Super, Danke das hat schon mal funktioniert.
Nur habe ich Probleme mit dem Anpassen der Variablen.

//ID des Archive Handler (bitte anpassen)
$Archive_Handler = 53442 /*[Archive Handler]*/ ;

//ID´s der Rohdaten (bitte anpassen)
$roh_pv_w = GetValueFloat(47352 /*[Verbrauch\SMA Webbox\Leistung_aktuell]*/ );    //Rohwert PV-Leistung [W] logging
$roh_pv_kw = GetValueFloat(56811 /*[Verbrauch\SMA Webbox\Tagesertrag_kWh]*/ );      //Rohwert PV-Ertrag [kW] logging
$imp_ertrag = 1/2000; //1/ Imp /KWh

$roh_ver_w = GetValueFloat(15768 /*[Skripte\Test_W]*/ );    //Rohwert Verkauf-Leistung [W] logging
$roh_ver_kw = GetValueFloat(43084 /*[Verbrauch\Strom\Lieferung_Zaehler]*/ );         //Rohwert Verkauf [kW] logging
$imp_verkauf = 1/1000; //1/ Imp /KWh

$roh_zuk_w = GetValueFloat(13359 /*[Skripte	est_W3]*/ );    //Rohwert Zukauf-Leistung [W] logging
$roh_zuk_kw = GetValueFloat(15125 /*[Verbrauch\Strom\Bezug_Zaehler]*/ );         //Rohwert Zukauf [kW] logging
$imp_zukauf = 1/1000; //1/ Imp /KWh

//Kategorie in der die neuen Variablen erstellt werden sollen (bitte anpassen)
$kategorie = 24846 /*[Skripte\Eigenverbrauch]*/ ;

Für die Werte Rohwert verkauf und Rohwert Zukauf liegen mir diese nur als kWh vor. Wie muß ich das Skript nun dafür passend umrechnen?:confused:

Zudem bekomme ich die Punkte
3. der neu angelegten Variable „Zeitraum“ ein Skript mit folgendem Inhalt
zuweisen: SetValue($IPS_VARIABLE, $IPS_VALUE);
4. diesem Skript ein Ereigniss hinzufügen "bei Aktualisierung der Variablen
„Zeitraum“ , und alle 60 sec.
Die Zähler würde ich alle 60sec. aktualisieren.

nicht angelegt.

Wo liegt der Fehler:confused:

Hallo Isi,

ich benutze dein Skript um Herauszufinden wie viel ich von mein Erzeugten Strom selber nutze und wie viel als Überschuss noch in netz gehen davon.

Aber Irgendwie können die Gelockten Daten nicht hinhauen.
Die einzige Idee die ich habe ist, du beziehst die Impulse eines Zähler mit ein , bei mir sind es aber fertige Daten ( W und Kw).

wie kann ich die Impulse bei den Skript außen vor lassen und nur mit den Roh Daten arbeiten??

Und ein anderes Problem habe ich noch mit deiner Variable Zeitraum da weiß ich nicht so recht wie du das meist ??

vielen Dank für deine Hilfe

Hallo Jimmyrakete,

Leider ist die ganze Berechnung der Daten Impulsbasiert.
Ich stehe derzeit vor dem gleichen Problem, da ich meine Werte vom DSM auch als „Echtwert“ bekomme.
( habe auf DigitaStrom umgebaut)
Mein Ansatz ist allerdings mittlerweile etwas verändert.
Ich Teste derzeit das Modul „Powercontrol“ aus der IPSLibrary.
Das ist genial!
Ich habe auch schon bei den Entwicklern die Idee der Erweiterung um Solarertrag abgesetzt.
Leider kann ich es nicht selbst einbinden, da meine Kenntnisse hierfür nicht ausreichen.
Auch die Kommunikation zwischen IPS und DigitalStrom ist noch nicht voll funktionsfähig, weshalb ich derzeit noch etwas abwarte was da noch so kommt.
Sorry, dass ich dir mit meinem Script nicht wirklich weiter helfen kann.

Isi

Ich stehe derzeit vor dem gleichen Problem, da ich meine Werte vom DSM auch als „Echtwert“ bekomme.

könnte man die werte nicht einfach auf quasi-impulse umrechnen ? also einfach x1000 (jenachdem was der hauptzähler hat)
dadurch könnte man bequemer rechnen

Vielleicht kann ich dir doch helfen

Welche Werte sind evtl. Falsch?
Wenn du das Script und Event zur Variablen Zeitraum nicht richtig einrichtest kann es nicht funktionieren!

  1. Lege ein Script an mit Namen egal
  2. Inhalt ---- SetValue($IPS_VARIABLE, $IPS_VALUE); ---- in das Script schreiben
  3. diesem Skript ein Ereigniss hinzufügen "bei Aktualisierung der Variablen
    "Zeitraum"und ein weiteres Ereigniss „alle 60 sec“.
  4. der Variable „Zeitraum“ im Feld " eigene Aktion" das eben angelegte Script egal zuweisen.

Jetzt solltest du durch Umschalten der Variablen Zeitraum im Webfront die Daten für Tag, Monat,… Umschalten können.

Hallo,

ich habe bei mir nur D0-Zähler und damit nur kWh vorliegen. Wie muss ich den Script dahingehend anpassen?

Gruß

Raketenschneckes Lösungwäre evtl. was für Dich. Das ist sehr einfach zu integrieren.