Überschussladen mit SDM630
Moderator: Ulrich
Überschussladen mit SDM630
Hallo zusammen,
ich habe mich jetzt mal quer durch das Forum gelesen und auch die Suche entsprechend bemüht, entweder ist mein Thema zu einfach oder es hat noch nie jemand dazu eine Frage gestellt
Ich habe eine Growatt Wallbox in Verbindung mit einem go-eCharger im Einsatz. Multiregler läuft, auch die Wallbox Steuerung macht das was sie soll und schreibt einen festen Wert für den Eigenverbrauch in die Datei wallbox.log
Da ich nun noch einen Gesamtzähler (SDM630), der die Einspeisung misst, installiert habe würde ich gerne den Wert der Einspeisung nutzen und der Wallbox die zur Verfügung stehende Leistung übermitteln. Den SDM habe ich nun als 3. Gerät eingebunden, die Daten werden auch korrekt in die DB zaehler_gesamt geschrieben. Hier steht mir die Einspeisung als negativer Wert zur Verfügung.
Nun ist die Frage, wie bekomme ich den Wert als Überschuss der Wallbox übermittelt? Die Wallbox INI fordert ja den Eigenverbraucht, den könnte ich anhand der Werte Erzeugung des Wechselrichters abzüglich der Einspeisung berechnen.
Hat jemand einen Tipp für den einfachsten Weg und kann einem Laie auf die Sprünge helfen? Evtl. reicht auch schon ein Codeschnippsel und eine kurze Erläuterung zum Weg um mir auf die Sprünge zu helfen Klasse wäre natürlich, wenn das jemand schon umgesetzt hat und ein funktionierendes Beispiel präsentieren könnte
Vielen Dank und Gruß
Dirk
ich habe mich jetzt mal quer durch das Forum gelesen und auch die Suche entsprechend bemüht, entweder ist mein Thema zu einfach oder es hat noch nie jemand dazu eine Frage gestellt
Ich habe eine Growatt Wallbox in Verbindung mit einem go-eCharger im Einsatz. Multiregler läuft, auch die Wallbox Steuerung macht das was sie soll und schreibt einen festen Wert für den Eigenverbrauch in die Datei wallbox.log
Da ich nun noch einen Gesamtzähler (SDM630), der die Einspeisung misst, installiert habe würde ich gerne den Wert der Einspeisung nutzen und der Wallbox die zur Verfügung stehende Leistung übermitteln. Den SDM habe ich nun als 3. Gerät eingebunden, die Daten werden auch korrekt in die DB zaehler_gesamt geschrieben. Hier steht mir die Einspeisung als negativer Wert zur Verfügung.
Nun ist die Frage, wie bekomme ich den Wert als Überschuss der Wallbox übermittelt? Die Wallbox INI fordert ja den Eigenverbraucht, den könnte ich anhand der Werte Erzeugung des Wechselrichters abzüglich der Einspeisung berechnen.
Hat jemand einen Tipp für den einfachsten Weg und kann einem Laie auf die Sprünge helfen? Evtl. reicht auch schon ein Codeschnippsel und eine kurze Erläuterung zum Weg um mir auf die Sprünge zu helfen Klasse wäre natürlich, wenn das jemand schon umgesetzt hat und ein funktionierendes Beispiel präsentieren könnte
Vielen Dank und Gruß
Dirk
- Ulrich
- Administrator
- Beiträge: 5950
- Registriert: Sa 7. Nov 2015, 10:33
- Wohnort: Essen
- Hat sich bedankt: 152 Mal
- Danksagung erhalten: 828 Mal
- Kontaktdaten:
Re: Überschussladen mit SDM630
Das steht ganz genau beschrieben hier:
viewtopic.php?t=3916
viewtopic.php?t=3916
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]
Ulrich . . . . . . . . [ Admin ]
Re: Überschussladen mit SDM630
Hallo Ulrich,
dass habe ich auch gelesen, allerdings fehlt mir beim Growatt die php Variable, oder?
Growatt Datei growatt_math.php erstellen mit folgendem Inhalt:
Problem hier ist allerdings schon, dass der WR keine Daten zur Einspeisung in die DB schreibt. Diese bekäme ich am einfachsten über den SDM630. Oder benötige ich hier eine SDM630_meter_math.php?
wall-math.php erstellen mit:
Ist auch kein Problem, allerdings fehlt mir dann hier der Eigenverbrauch, da er zuvor nicht berechnet wird.
Gruß
Dirk
dass habe ich auch gelesen, allerdings fehlt mir beim Growatt die php Variable, oder?
Growatt Datei growatt_math.php erstellen mit folgendem Inhalt:
Code: Alles auswählen
<?php
$BenutzerArray["Eigenverbrauch"] = $aktuelleDaten["Einspeisung"];
?>
wall-math.php erstellen mit:
Code: Alles auswählen
<?php
$Eigenverbrauch = $BenutzerArray["Eigenverbrauch"];
log_schreiben( "aktueller Eigenverbrauch: ".$Eigenverbrauch, "", 3 );
?>
Gruß
Dirk
- Ulrich
- Administrator
- Beiträge: 5950
- Registriert: Sa 7. Nov 2015, 10:33
- Wohnort: Essen
- Hat sich bedankt: 152 Mal
- Danksagung erhalten: 828 Mal
- Kontaktdaten:
Re: Überschussladen mit SDM630
Hallo Dirk,
du hast das Prinzip genau erkannt. Du benötigst eine SDM630_meter_math.php.
du hast das Prinzip genau erkannt. Du benötigst eine SDM630_meter_math.php.
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]
Ulrich . . . . . . . . [ Admin ]
Re: Überschussladen mit SDM630
Okay, so hatte ich das erstellt.
SDM630_meter_math.php
wall-math.php
SDM630_meter_math.php
Code: Alles auswählen
<?php
$BenutzerArray["Eigenverbrauch"] = $aktuelleDaten["AC_Leistung"];
?>
Code: Alles auswählen
<?php
$Eigenverbrauch = $BenutzerArray["Eigenverbrauch"];
log_schreiben( "aktueller Eigenverbrauch: ".$Eigenverbrauch, "", 3 );
?>
Re: Überschussladen mit SDM630
Im php Log habe ich folgende Meldung, dass sagt mir doch, dass er eine Variable versucht zu laden deren Wert Null ist? Demnach kann er nicht auf AC_Leistung zugreifen?
Code: Alles auswählen
[17-Jul-2023 20:33:03 Europe/Berlin] PHP Notice: Undefined variable: BenutzerArray in /var/www/html/wall-math.php on line 3
[17-Jul-2023 20:33:03 Europe/Berlin] PHP Notice: Trying to access array offset on value of type null in /var/www/html/wall-math.php on line 3
Re: Überschussladen mit SDM630
Schätze hier war noch ein Fehler von mir und es muss statt AC_Leistung schlicht Leistung heißen. Dann bekomme ich folgendes:
Müsste meiner Interpretation nach auch passen, da in der SDM630_meter_math.php kein Wert gesetzt wird.
Code: Alles auswählen
[17-Jul-2023 21:01:20 Europe/Berlin] PHP Notice: Undefined index: Leistung in /var/www/html/SDM630_meter_math.php on line 3
- Ulrich
- Administrator
- Beiträge: 5950
- Registriert: Sa 7. Nov 2015, 10:33
- Wohnort: Essen
- Hat sich bedankt: 152 Mal
- Danksagung erhalten: 828 Mal
- Kontaktdaten:
Re: Überschussladen mit SDM630
Bei dem SDM630 muss die _math Datei so heißen:
Code: Alles auswählen
<?php
$BenutzerArray["Eigenverbrauch"] = $aktuelleDaten["AC_Leistung"];
?>
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]
Ulrich . . . . . . . . [ Admin ]
Re: Überschussladen mit SDM630
Dann hatte das ja gepasst, also muss es an einer anderen Stelle hängen. Hier muss ich dann wohl leider passen, da ich nicht nachvollziehen kann ob die Variable ausgelesen wird geschweige denn ob die Weiterverarbeitung funktioniert.
- Ulrich
- Administrator
- Beiträge: 5950
- Registriert: Sa 7. Nov 2015, 10:33
- Wohnort: Essen
- Hat sich bedankt: 152 Mal
- Danksagung erhalten: 828 Mal
- Kontaktdaten:
Re: Überschussladen mit SDM630
Da hatte ich einen Knoten im Gehirn. Die SDM_meter_math.php ist gar nicht nötig und die wall-math.php muss so aussehen:
(Natürlich nur in Verbindung mit dem Zähler SDM630)
Was macht die wall-math.php?
Die aktuelle Einspeisung (negativer Wert) wird hier aus der Datenbank ausgelesen.
Ist der Wert negativ, dann wird er als Eigenverbrauch benutzt. Ist er positiv (Bezug) wird der Wert aus der INI Datei benutzt.
Das funktioniert aber nur, wenn die Wallbox beim Hausverbrauch nicht mitgezählt wird!
(Natürlich nur in Verbindung mit dem Zähler SDM630)
Code: Alles auswählen
<?php
$wbDatenbankname = "zaehler_gesamt";
$wbMeasurement = "AC";
// $UserDB = Datenbank solaranzeige Measurement: Summen
$ch = curl_init('http://localhost/query?db='.$wbDatenbankname.'&precision=s&q='.urlencode('select * from '.$wbMeasurement.' order by time desc limit 1'));
$rc = datenbank($ch);
if (!isset($rc["JSON_Ausgabe"]["results"][0]["series"])) {
log_schreiben("Es fehlt die Datenbank '".$wbDatenbankname."' mit dem Measurement Service oder sie ist leer.","|- ",1);
}
for ($z = 1; $z < count($rc["JSON_Ausgabe"]["results"][0]["series"][0]["columns"]); $z++) {
$UserDB[$rc["JSON_Ausgabe"]["results"][0]["series"][0]["columns"][$z]] = $rc["JSON_Ausgabe"]["results"][0]["series"][0]["values"][0][$z];
}
log_schreiben("Alle Daten der wall-math Abfrage:\n".print_r($UserDB,1),"",3);
// Variablen je nach Measurement
// $UserDB["Wh_Heute"]
// $Eigenverbrauch = $UserDB["xxxxx"];
if($UserDB["Leistung"] < 0){
$Eigenverbrauch = abs($UserDB["Leistung"]);
}
log_schreiben("Neu berechneter Eigenverbrauch (siehe wall-math): ".$Eigenverbrauch,"",3);
return;
?>
Die aktuelle Einspeisung (negativer Wert) wird hier aus der Datenbank ausgelesen.
Ist der Wert negativ, dann wird er als Eigenverbrauch benutzt. Ist er positiv (Bezug) wird der Wert aus der INI Datei benutzt.
Das funktioniert aber nur, wenn die Wallbox beim Hausverbrauch nicht mitgezählt wird!
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]
Ulrich . . . . . . . . [ Admin ]