Routine zum Zusammenlegen von zwei DB in eine dritte

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

Antworten
Gerd
Beiträge: 137
Registriert: Di 6. Aug 2019, 22:06
Hat sich bedankt: 5 Mal
Danksagung erhalten: 7 Mal

Routine zum Zusammenlegen von zwei DB in eine dritte

Beitrag 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
Cu Gerd
My Coffee is always #000000!

Benutzeravatar
Ulrich
Administrator
Beiträge: 5505
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 152 Mal
Danksagung erhalten: 877 Mal
Kontaktdaten:

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Beitrag von Ulrich »

Das sollte mit einer _math Datei gehen. Vielleicht kann dir einer dabei helfen.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

solarfanenrico

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Beitrag von solarfanenrico »

gelöscht weil unerwünschter user

Gerd
Beiträge: 137
Registriert: Di 6. Aug 2019, 22:06
Hat sich bedankt: 5 Mal
Danksagung erhalten: 7 Mal

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Beitrag 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.
Cu Gerd
My Coffee is always #000000!

Gerd
Beiträge: 137
Registriert: Di 6. Aug 2019, 22:06
Hat sich bedankt: 5 Mal
Danksagung erhalten: 7 Mal

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Beitrag 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 ?
Cu Gerd
My Coffee is always #000000!

Benutzeravatar
Ulrich
Administrator
Beiträge: 5505
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 152 Mal
Danksagung erhalten: 877 Mal
Kontaktdaten:

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Beitrag 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.
-----------------------------------------------------
Ulrich . . . . . . . . [Projekt Administrator]

Gerd
Beiträge: 137
Registriert: Di 6. Aug 2019, 22:06
Hat sich bedankt: 5 Mal
Danksagung erhalten: 7 Mal

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Beitrag 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
Cu Gerd
My Coffee is always #000000!

Gerd
Beiträge: 137
Registriert: Di 6. Aug 2019, 22:06
Hat sich bedankt: 5 Mal
Danksagung erhalten: 7 Mal

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Beitrag von Gerd »

Nachtrag:
Im Logfile, stehen die Daten addiert
aber nicht in der DB
Cu Gerd
My Coffee is always #000000!

solarfanenrico

Re: Routine zum Zusammenlegen von zwei DB in eine dritte

Beitrag 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

Antworten

Zurück zu „Multi-Regler-Version [ bis zu 6 Geräten an einem Raspberry Pi ]“