Stromverbrauch erfassen per Script

Hallo zusammen,

ich habe folgendes Problem bzw. suche nach einem Lösungsansatz.
Ich denke dies sollte per PHP Script recht einfach möglich sein,allerdings fehlen mir leider die
nötigen Programmierkenntnisse um so etwas neu zu schreiben.

Ich habe einen PV Stromspeicher installiert, dieses hat direkt hinter dem Stromnetzzähler einen Summenstromwandler
um das Laden und Entladen des Speichers zu regeln.
Per Modbus/TCP kann ich den Wert des Summenstromwandlers auslesen und in eine Variable schreiben mit einer aktualisierung von
zb 1sek. Das funktioniert sowei super. Das sieht dann so aus, wenn ich Strom aus dem Netz beziehen habe ich einen negativen Wert in der Variablen, wenn Überschuss da ist und eingespeist wird von der PV Anlage einen postiven Wert.
Somit habe ich den echtzeit Strombezug/Stromeinspeisung am meinen Zählpunkt bereits in IP Symcon.
Jetzt möchte ich per script alle negativen werte und positiven Werten über ein Zeitraum zählen/loggen und dann automatisch in KWh
umrechnen und in einer Variablen ausgeben lassen.
Wenn das klappt wäre es super.

Leider fehlt mir programmiertechnisch komplett der Ansatz. Eventl. hat ja jemand so etwas bereits umgesetzt.
Ich würde mich über eure hilfe freuen.

lg
und Danke

Rob

Hallo zusammen,

habe gerade die Instanz Energiezähler Tag entdeckt.
Das sieht schon ganz gut aus.
Ich muss jetzt eigentlich nur noch einer Variablen die positiv und negativ sein kann zwei variablen
machen. eine mit den positiven und eine mit den negativen werden.
Sollte von der logik wie folgt sein:
wenn Variable A mit negativen Vorzeichen dann schreibe Wert in Variable B
wenn Variable A mit positiven Vorzeichen dann schreibe Wert in Variable C

Wie schreibe ich das in PHP??

Variable B und C verknüpfe ich dann jeweils mit einer Instanz Engergiezähler.
Würde mich über eure Hilfe freuen.

Danke LG

Rob

Hi,

hier eine möglichkeit


<?php
$pv = GetValue(12345); //Deine Ist Werte
$wert_positiv = 12345; //ID Positive Werte
$wert_negativ = 12345; //ID Negative Werte

if $pv > 0
 {
  SetValue($wert_positiv, $pv);
 }
else
 {
  SetValue($wert_negativ, $pv);
 }


Deine Variable muss natürlich diesen Script Triggern.

Gruß

Hi danke für die rasche antwort.
HAbe es mal probiert bekomme jedoch folgende Fehlermeldung:

Parse error: syntax error, unexpected ‚$pv‘ (T_VARIABLE), expecting ‚(‘ in /var/lib/symcon/scripts/38182.ips.php on line 6
Abort Processing during Fatal-Error: syntax error, unexpected ‚$pv‘ (T_VARIABLE), expecting ‚(‘
Error in Script /var/lib/symcon/scripts/38182.ips.php on Line 6

lg

rob

so klappt es

<?php
$pv = GetValue(48295); //Deine Ist Werte
$wert_positiv = 19890; //ID Positive Werte
$wert_negativ = 22464; //ID Negative Werte

if ($pv > 0)
{
SetValue($wert_positiv, $pv);
}
else
{
SetValue($wert_negativ, $pv);
}

Jetzt muss ich das script noch ausführen wenn Variable 48295 sich ändert

Hi,

so klappt es

Sorry mein Fehler. Aber du hast es ja gefunden :wink:

Jetzt muss ich das script noch ausführen wenn Variable 48295 sich ändert

Genau. Einfach ein Ereignis erstellen.

Gruß

PS.

Hi danke für die rasche antwort.

Das ist hier Normal :wink: :loveips:

Hallo nochmal,
funktioniert schon ganz gut. Jetzt kommt aber noch etwas feintuning.
Habe das Script bei Variablenänderung angetriggert, der Energiezähler zählt.
Jetzt kommt es aber vor , das die Variable des Netzpunktes ( die pos oder neg sein kann ) von z.b -20W auf +100W springt.
Dies geschieht wenn die PV Anlage anläuft und die Stromrichtung sich von Bezug auf Lieferung ändert.
Die im Script angelegte Bezugsvariable behält dann ihren letzten Wert ( zb -20 ). Somit zählt der Energiezähler mit der letzten Leistung weiter obwohl kein Bezug vorhanden ist.
Es müsste im Script die noch verknüpft werden, dass die nicht aktive Variable mit einer 0 beschrieben wird.
( Ich hoffe ihr versteht was ich meine )

Schätze in etwa so.

<?php
$pv = GetValue(48295 /[Strom\Netz Zählpunkt Lieferung(+) / Bezug(-)\Wert]/); //Deine Ist Werte
$wert_positiv = 19890 /[Strom\TESTWATT VON POSITIV /// LIEFERUNG]/; //ID Positive Werte
$wert_negativ = 22464 /[Strom\TESTWATT VON NEGATIV /// BEZUG]/; //ID Negative Werte

if ($pv > 0)
{
SetValue($wert_positiv, $pv & wert_negativ=0);
}
else
{
SetValue($wert_negativ, $pv & wert_positiv=0);
}
Leider fehlt mir hier die korrekte Syntax.

Danke

rob

so habe ich es nun gelöst
Das Script gibt zumindest keinen Fehler aus.
Mal schauen ob es klappt


<?php
$pv = GetValue(48295 /*[Strom\Netz Zählpunkt Lieferung(+) / Bezug(-)\Wert]*/); //Deine Ist Werte
$wert_positiv = 19890 /*[Strom\TESTWATT VON POSITIV /// LIEFERUNG]*/; //ID Positive Werte
$wert_negativ = 22464 /*[Strom\TESTWATT VON NEGATIV /// BEZUG]*/; //ID Negative Werte

if ($pv > 0)
 {
  SetValue($wert_positiv, $pv);
  SetValue($wert_negativ, 0);
 }
else
 {
  SetValue($wert_negativ, $pv);
  SetValue($wert_positiv, 0);
 }