Seite 1 von 1

Routine zum Zusammenlegen von zwei DB in eine dritte

Verfasst: Mi 2. Jun 2021, 20:22
von Gerd
Hi,

Ende nächste Woche kommt mein 2ter Plenticore
Jetzt möchte deren Daten addiert in eine dritte Datenbank schreiben

Hat dies jemand schon gemacht und kann mir eine Hilfestellung geben
Gibt es da vllt schon eine Routine?
Wie lese ich in einem PHP die Daten aus der DB aus und wie schreibe ich diese weg
Ich habe es zwar geschafft in einer Math zusätzlich Daten in die DB zu schreiben aber hier fehlt mir der Ansatz.

Da die beiden WR identisch sind gibt es vllt auch eine einfache Lösung.
Vllt geht es dann auch mit nur einer DB

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Verfasst: Do 3. Jun 2021, 08:47
von Ulrich
Das sollte mit einer _math Datei gehen. Vielleicht kann dir einer dabei helfen.

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Verfasst: Do 3. Jun 2021, 09:14
von solarfanenrico
gelöscht weil unerwünschter user

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Verfasst: Do 3. Jun 2021, 09:49
von Gerd
Die Multi Version läuft bereits bei mir

Mir fehlt der Ansatz, wie ich zu den addierten Werten komme

Praktisch ging es auch über Variablen im Dashboard, ist aber nicht wirklich meine präferierte Lösung.

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Verfasst: Do 3. Jun 2021, 10:15
von Gerd
Wie wäre denn der Ansatz, wenn ich den Abfrage- Inhalt der Kostal-Plenticore. PHP kopiere
Dazwischen auf die IP des 2ten Wechselrichter wechsele und dort die Werte mit den Werten des ersten Parts addiere

Wie müsste das aussehen ?

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Verfasst: Do 3. Jun 2021, 10:24
von Ulrich
Die einfachste Variante ist:

in der _math Datei die Werte des 1. Plenticore auslesen und mit den Werten des 2. Plenticore addieren und dann in ein seperates Measurement des 2. Plenticore zu schreiben.

Da die _math Datei von beiden Plenticore durchlaufen wird muss man in der Datei erst erkennen ob es der 1. oder 2. Plenticore gerade ausgelesen wird.

Ist aber alles machbar.

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Verfasst: Fr 4. Jun 2021, 13:13
von Gerd
Hi,

ich habe jetzt ein lauffähiges PHP, was auch in die richtige DB schreibt

was aber nicht funktioniert ist die addition der Daten
um dies ein wenig anschaulich zu machen, hier ein Auszug

Code: Alles auswählen

// Wechselrichter 1 ************************************************************************

$WR_IP = "192.168.178.53";
$WR_Port = "1502";
$WR_Adresse = "71";
$InfluxDBLokal  = "db3";


$COM1 = fsockopen($WR_IP, $WR_Port, $errno, $errstr, 5);   // 5 = Timeout in Sekunden
if (!is_resource($COM1)) {
  $funktionen->log_schreiben("Kein Kontakt zum Wechselrichter ".$WR_IP."  Port: ".$WR_Port,"XX ",3);
  $funktionen->log_schreiben("Exit.... ","XX ",9);
  goto Ausgang;
}

$rc = $funktionen->kostal_register_lesen($COM1,"0140","0002","Float");
  $aktuelleDaten["WattstundenGesamt"] = $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0142","0002","Float");
  $aktuelleDaten["WattstundenGesamtHeute"] = $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0146","0002","Float");
  $aktuelleDaten["WattstundenGesamtMonat"] = $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0144","0002","Float");
  $aktuelleDaten["WattstundenGesamtJahr"] = $rc["Wert"];
  
  
  // Wechselrichter 2 ***********************************************************************************************************************

$WR_IP = "192.168.178.53";
$WR_Port = "1502";
$WR_Adresse = "71";
$InfluxDBLokal  = "db3";


$COM1 = fsockopen($WR_IP, $WR_Port, $errno, $errstr, 5);   // 5 = Timeout in Sekunden
if (!is_resource($COM1)) {
  $funktionen->log_schreiben("Kein Kontakt zum Wechselrichter ".$WR_IP."  Port: ".$WR_Port,"XX ",3);
  $funktionen->log_schreiben("Exit.... ","XX ",9);
  goto Ausgang;
}

// hier soll dann addiert werden, was aber nicht geschieht

$rc = $funktionen->kostal_register_lesen($COM1,"0140","0002","Float");
  $aktuelleDaten["WattstundenGesamt"] = ($aktuelleDaten["WattstundenGesamt"] + $rc["Wert"]);
  $rc = $funktionen->kostal_register_lesen($COM1,"0142","0002","Float");
  $aktuelleDaten["WattstundenGesamtHeute"] = $aktuelleDaten["WattstundenGesamtHeute"] + $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0146","0002","Float");
  $aktuelleDaten["WattstundenGesamtMonat"] = $aktuelleDaten["WattstundenGesamtMonat"] + $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0144","0002","Float");
  $aktuelleDaten["WattstundenGesamtJahr"] = $aktuelleDaten["WattstundenGesamtJahr"] + $rc["Wert"];



Wo bitte steckt der Fehler

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Verfasst: Fr 4. Jun 2021, 14:49
von Gerd
Nachtrag:
Im Logfile, stehen die Daten addiert
aber nicht in der DB

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Verfasst: Fr 4. Jun 2021, 14:58
von solarfanenrico
Gerd hat geschrieben:
Fr 4. Jun 2021, 13:13
Hi,

ich habe jetzt ein lauffähiges PHP, was auch in die richtige DB schreibt

was aber nicht funktioniert ist die addition der Daten
um dies ein wenig anschaulich zu machen, hier ein Auszug

Code: Alles auswählen

// Wechselrichter 1 ************************************************************************

$WR_IP = "192.168.178.53";
$WR_Port = "1502";
$WR_Adresse = "71";
$InfluxDBLokal  = "db3";


$COM1 = fsockopen($WR_IP, $WR_Port, $errno, $errstr, 5);   // 5 = Timeout in Sekunden
if (!is_resource($COM1)) {
  $funktionen->log_schreiben("Kein Kontakt zum Wechselrichter ".$WR_IP."  Port: ".$WR_Port,"XX ",3);
  $funktionen->log_schreiben("Exit.... ","XX ",9);
  goto Ausgang;
}

$rc = $funktionen->kostal_register_lesen($COM1,"0140","0002","Float");
  $aktuelleDaten["WattstundenGesamt"] = $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0142","0002","Float");
  $aktuelleDaten["WattstundenGesamtHeute"] = $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0146","0002","Float");
  $aktuelleDaten["WattstundenGesamtMonat"] = $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0144","0002","Float");
  $aktuelleDaten["WattstundenGesamtJahr"] = $rc["Wert"];
  
  
  // Wechselrichter 2 ***********************************************************************************************************************

$WR_IP = "192.168.178.53";
$WR_Port = "1502";
$WR_Adresse = "71";
$InfluxDBLokal  = "db3";


$COM1 = fsockopen($WR_IP, $WR_Port, $errno, $errstr, 5);   // 5 = Timeout in Sekunden
if (!is_resource($COM1)) {
  $funktionen->log_schreiben("Kein Kontakt zum Wechselrichter ".$WR_IP."  Port: ".$WR_Port,"XX ",3);
  $funktionen->log_schreiben("Exit.... ","XX ",9);
  goto Ausgang;
}

// hier soll dann addiert werden, was aber nicht geschieht

$rc = $funktionen->kostal_register_lesen($COM1,"0140","0002","Float");
  $aktuelleDaten["WattstundenGesamt"] = ($aktuelleDaten["WattstundenGesamt"] + $rc["Wert"]);
  $rc = $funktionen->kostal_register_lesen($COM1,"0142","0002","Float");
  $aktuelleDaten["WattstundenGesamtHeute"] = $aktuelleDaten["WattstundenGesamtHeute"] + $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0146","0002","Float");
  $aktuelleDaten["WattstundenGesamtMonat"] = $aktuelleDaten["WattstundenGesamtMonat"] + $rc["Wert"];
  $rc = $funktionen->kostal_register_lesen($COM1,"0144","0002","Float");
  $aktuelleDaten["WattstundenGesamtJahr"] = $aktuelleDaten["WattstundenGesamtJahr"] + $rc["Wert"];



Wo bitte steckt der Fehler
Ich bin auch gespannt auf die Lösung.

Mein laienhaftes Wisen würde sagen: "Bis dato liest Du nur aus"

Ich vermisse die Querrys zur DB