2 Regler in die gleiche Datenbank schreiben lassen

Wenn mehr als ein Gerät an den Raspberry angeschlossen werden sollen. Z.B. ein Regler und ein Wechselrichter oder mehrere Wechselrichter. Das Maximum sind 6 Geräte pro Raspberry Pi.

Moderator: Ulrich

Karlchen_LE
Beiträge: 9
Registriert: Mi 27. Jan 2021, 16:03
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Karlchen_LE »

Hallo,

ich habe im Moment einen Solaredge-WR in der Multi-Regler-Version als 1. Regler laufen und alles funktioniert prima. Nun geht am Wochenende ein SMA-Wechselrichter in Betrieb und soll als 2. Regler hinzugefügt werden.

Soweit ich es bisher erlesen habe, kann ich in Grafana aber nur Werte aus einer Datenbank miteinander verrechnen. Für meine Bilanzierung müsste ich aber die Produktion des 1. Regler mit der Produktion des 2. Reglers addieren können.

Ist es möglich, dass ich den 2. Regler so einstelle, dass er in die gleiche Datenbank wie der 1. Regler schreibt und dann in der php des 2. Reglers die Datenfelder so umbenenne, dass es zu keinen Dopplungen mit dem 1. Regler kommt?

Bogeyof
Beiträge: 433
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 3 Mal
Danksagung erhalten: 28 Mal

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Bogeyof »

Wenn Du das wirklich so machen möchtest, dann musst Du die Zuweisung der Felder in der funktionen.php.inc ändern, denn dort werden die Datenbank-Feldnamen vergeben. Dann bist Du natürlich bei jedem Update manuell am Abgleichen, sonst würden Deine Änderungen immer wieder überschrieben.
Vielleicht wäre es einfacher, die benötigten Werte selbst zu errechnen und in die Datenbank zu schreiben. Ich habe hier mal einen Weg vorgestellt, eigene Werte in die Datenbank zu schreiben, der unabhängig von Updates ist. Zu finden z.B. hier:
viewtopic.php?p=6839#p6839
Du brauchst ja sicherlich nur ein paar der Werte, bzw. kannst dort gleich Summen oder Durchschnitte bilden und diese dann in die Datenbank(en) schreiben. Ist jederzeit beliebig erweiterbar...

Karlchen_LE
Beiträge: 9
Registriert: Mi 27. Jan 2021, 16:03
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Karlchen_LE »

Danke - ich hatte deine Beiträge bei meinen Suchen zu dem Thema gefunden. Ich traue es mir überhaupt nicht zu, da ein eigenes Script zu schreiben und gehofft, durch ein paar Umbenennungen das zu umgehen. Die funktionen.php.inc muss ich mir dann mal in Ruhe anschauen.

Bogeyof
Beiträge: 433
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 3 Mal
Danksagung erhalten: 28 Mal

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Bogeyof »

Ich kann Dir gerne helfen. Dazu braucht es nur die Namen der Datenbanken (oder welche x.user.config für welche Werte), die Namen der Felder bzw. die Berechnungen, die Du gerne haben möchtest und wo diese gespeichert werden sollten.
Man kann leider in Grafana mit einer Abfrage nicht mal Werte aus 2 verschiedenen Serien (Measurements) miteinander verrechnen, so dass die zur Auswertung gewünschten Werte schon im richtigen Measurement gespeichert sein sollten oder eben gleich fertig berechnet in einem beliebigen, evtl. auch neuen Measurement gespeichert werden sollten.
Je genauer Deine Angaben, desto leichter wäre es für mich...

Bogeyof
Beiträge: 433
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 3 Mal
Danksagung erhalten: 28 Mal

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Bogeyof »

Ich habe Deine PM erhalten und geantwortet...
Ich fände es allerdings besser, wenn wir uns in Deinem Thread im Forum weiter "unterhalten", denn das Problem "eigene Werte" taucht ja immer wieder auf und könnte dann in diesem Thread nachgelesen und verfolgt werden, wie so etwas gehen kann. Daher finde ich es öffentlich besser.
Auch kommt es mit den PM teilweise zu stundenlangen Verzögerungen, bis diese überhaupt mal gesendet werden (zumindest bei mir manchmal).

Bogeyof
Beiträge: 433
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 3 Mal
Danksagung erhalten: 28 Mal

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Bogeyof »

So, ich habe Dir mal eine eigene_werte_test.php angehängt. Da der neue Wechselrichter noch nicht da ist, wird dieses Skript noch nicht funktionieren. (Außer Du hast den 2. Wechselricher schon angelegt und es existiert schon eine entsprechende Datenbank mit Null-Werten)
Ich gehe davon aus, dass der 2. Wechselrichter die "2.user.config.php" nutzen wird (Multigeräteinstallation nötig). Wenn nicht, ist in der Zeile 30 die richtige Gerätenummer vor 2.user.config.php zu setzen.

Das Skript hat einen Sleep(30) eingebaut, damit die vorherigen Wechselrichterabfragen möglichst schon durchgelaufen sind, bevor die Werte abgefragt und addiert werden. Auch dies kann man gegebenenfalls anpassen.

Anschließend werden bei beiden Wechselrichtern jeweils die AC_Leistung und die PV_Leistung abgefragt und addiert. Gespeichert wird das Ganze in der Datenbank von Wechselrichter1 (also vermutlich "solaranzeige") unter dem Measurement "Summen" als "AC_Leistung_Gesamt" und "PV_Leistung_Gesamt". Auch dies wäre anpassbar und die Gesamtwerte könnten auch jeweils in den Measurements "AC" und "PV" mitgespeichert werden.

Weitere Werte und Berechnungen sind denkbar einfach mit aufzunehmen.

Ausgeführt wird das Ganze dann minütlich durch einen Eintrag in der Crontab.

Was ist zu tun?:
- Skript nach /var/www/html kopieren
- bei Bedarf beliebige neue Felder erfinden
- Skript per Crontab einmal pro Minute starten (siehe unten)

Eintrag in Crontab:

Code: Alles auswählen

*  *  *  *  *    /var/www/html/eigene_werte_test.php              >/dev/null

Selten hat der erste Versuch gleich perfekt funktioniert, bitte Testen und Feedback geben. Auch was evtl. noch interessante Felder sein könnten (z.B. Wh_Heute, Wh_Gesamt usw., diese können allerdings auch durch Summe/Integral aus den Einzelwerten AC_Leistung_Gesamt in Grafana errechnet werden.)
Dateianhänge
eigene_werte_test.php
(8.65 KiB) 29-mal heruntergeladen

Karlchen_LE
Beiträge: 9
Registriert: Mi 27. Jan 2021, 16:03
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Karlchen_LE »

Super, vielen vielen Dank. Ich werde heute spätestens morgen dann mal den SMA-WR als Regler 2 anlegen und das mit den dann nur vorhandenen Nullwerten durchtesten. DIe Summen müsste ich ja dann schon finden...

Ich melde mich.

Bogeyof
Beiträge: 433
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 3 Mal
Danksagung erhalten: 28 Mal

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Bogeyof »

Ich habe gerade in die sma_wr.php geschaut und dort wird bei fehlendem Kontakt zum Wechselrichter nur ein Eintrag ins LOG geschrieben und dann abgebrochen ohne zu schreiben, damit würden auch keine Null-Werte erzeugt.

Wenn Du simuliert testen willst kannst du in Zeile 30 statt "2.user.config.php" mal "1.user.config.php" eintragen, dann wird quasi die Datenbank des 1. Wechselrichters auch als Datenbank des 2. Wechselrichters genommen. Damit sollten dann die neuen Werte in "Summen" eingetragen werden, und zwar immer das Doppelte der letzten Leistung von WR1. Ist zwar nicht so toll, aber Du kannst die Funktionsweise testen und verstehen.

Wenn der WR2 da ist dann in Zeile 30 wieder "x.user.config.php" des WR2 eintragen (x steht für die Gerätenummer), Rest sollte passen.

Weitere Werte könnten dann mit zusätzlichen Einträgen nur an 2 Stellen hinzugefügt werden:
- Analog zu Zeile 91-99 entsprechende Zeilen kopieren und die gewünschten Werte auslesen und berechnen (WERT ist dabei durch das gewünschte Datenbankfeld zu ersetzen, SERIE durch das Measurement, in welchem das Feld zu finden ist) :

Code: Alles auswählen

  // Zuerst SERIE WERT aus WR2 lesen
  $aktuelleDaten["Query"] = "db=" . $WR2Datenbankname . "&q=" . urlencode("select last(WERT) FROM SERIE");
  $rc = $funktionen->po_influxdb_lesen($aktuelleDaten);
  $SERIE2_WERT = $rc["results"][0]["series"][0]["values"][0][1]; // WR2 WERT
  // Danach SERIE WERT aus WR1 addieren (oder eine beliebige Berechnung damit durchführen)
  $aktuelleDaten["Query"] = "db=" . $InfluxDBLokal . "&q=" . urlencode("select last(WERT) FROM SERIE");
  $rc = $funktionen->po_influxdb_lesen($aktuelleDaten);
  $SERIE1_WERT = $rc["results"][0]["series"][0]["values"][0][1]; // WR1 WERT
  $aktuelleDaten["SERIE_WERT_Gesamt"] = $SERIE1_WERT + $SERIE2_WERT; // Gesamt WERT SERIE
Und dann noch zum Schreiben in die Datenbank ab Zeile 174 jeweils pro berechneten Wert eine Zeile hinzufügen (natürlich verschieben sich die Zeilenangaben, wenn Du weiter oben neue Zeilen hinzugefügt hast).

Code: Alles auswählen

  $query .= ",SERIE_WERT_Gesamt=".$daten["SERIE_WERT_Gesamt"];
Deine neue Zeile immer vor der letzten Zeile der Query mit folgendem Inhalt einfügen:

Code: Alles auswählen

  $query .= " ".$daten["Timestamp"];
Das war es dann auch schon, damit kannst Du Dir beliebige berechnete Werte in Deine Datenbank schreiben...

Karlchen_LE
Beiträge: 9
Registriert: Mi 27. Jan 2021, 16:03
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Karlchen_LE »

Danke!

Ja, dass die Datenbank für den SMA-Wechselrichter leer bleibt, hatte ich in der Zwischenzeit auch schon festgestellt.

Ich habe jetzt deinen Vorschlag mit beide Anfragen an die 1.user.config.php umgesetzt. Leider bekomme ich das neue Feld "AC_Leistung_Gesamt" weder in Grafana ausgewählt, noch wird es mir bei direkter Anfrage in der InfluxDB angezeigt.

Ich habe mal die Ausgabe des Skripts in der crontab in eine log Datei umgeleitet - diese wird zwar angelegt, bleibt aber leer.

Gleich noch eine Frage. In dem Skript ist unter

function eigenedaten_speichern($daten) {

$query = "";
$query .= "\n";
$query .= "Summen ";
$query .= "AC_Leistung_Gesamt=".$daten["AC_Leistung_Gesamt"];
$query .= " ".$daten["Timestamp"];

hinter Summen ein Leerzeichen. Muss das so sein? Funktioniert allerdings auch nicht, wenn ich es weglasse.

Bogeyof
Beiträge: 433
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 3 Mal
Danksagung erhalten: 28 Mal

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Bogeyof »

Ja das Leerzeichen gehört dahin.
Das Skript macht keine Ausgaben auf der Konsole, also auch nicht in die umgelenkte Datei.

Evtl. Fehler bei der Ausführung findet man in der /var/www/log/php.log, dort mit Zeitangabe und Fehlermeldung. Das wäre evtl. auch interessant.

Ich habe das Ganze gerade getestet, es war ein Schreibfehler für PV_Leistung_Gesamt (bei der Summe) drin, hier stand auch AC_Leistung_Gesamt, dadurch wurde das Feld PV_Leistung_Gesamt gar nicht befüllt und damit war beim Schreiben der Daten die (ursprüngliche) Query fehlerhaft. Sorry. Solltest Du die Query aber wie in Deinem letzten Post abgedruckt geändert haben, kann das nicht der Grund sein, da wird PV_Leistung_Gesamt gar nicht verwendet?!

Bitte die angehängte Datei noch einmal unverändert testen, da ist schon 1.user.config.php drin...
Dateianhänge
eigene_werte_test.php
(8.65 KiB) 28-mal heruntergeladen

Antworten