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

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Karlchen_LE »

Habe ich gemacht. Die Felder erscheinen nicht in der Datenbank (siehe Anhang). In der /var/www/log/php.log ist seit 1 h kein Eintrag mehr drin.

Mache ich mit den cronjob was falsch? Habe es händisch in die /etc/crontab eingetragen. (siehe Anhang)

Danke!
Influx.JPG
crontab.JPG

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

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Bogeyof »

Ja die Crontab ist dein Fehler. Ich weiß nicht genau wie und wo du es eingetragen hast, aber der Eintrag erfolgt in der Konsole mit den Befehl "crontab -e". Dort die Zeile eintragen und da wo du bist wieder raus mit der Zeile.

Man kann das Skript auch mal per Hand aufrufen (zum Testen):

Code: Alles auswählen

cd /var/www/html
./eigene_werte_test.php

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 »

Soooo, Test erfolgreich. Die Felder erscheinen in der Datenbank und sind auch in Grafana auswählbar.

Es ist 2 Jahrzehnte her, dass ich mal mit Linux zu tun hatte. Das Problem war offenbar, dass ich das Skript mit ftp als user pi übertragen hatte. Es kam dann immer beim manuellen Aufrufen "keine Berechtigung".
Alle anderen Skripte in dem Verzeichnis gehören "root". Habe es dann noch einmal als root übertragen und dann noch ausführbar mit chmod gemacht. Dann lief es manuell und auch der cronjob lief durch. Vielleicht hätte auch das chmod +x als user pi gereicht keine Ahnung...

Habe nun erst mal den Cronjob wieder rausgenommen und warte auf die Inbetriebnahme des SMA-WR. Nach heutiger Rücksprache mit dem Solarteur kann es auch erst nächste Woche werden...

Dem User Bogeyof noch einmal vielen Dank für die selbstlose Hilfe!!!

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 »

Noch eine Frage zu Funktionen in der php. Ich möchte den kleineren von zwei Werten an eine neue Variable übergeben. Ist das dann so richtig, oder müssen da noch zusätzliche Leerzeichen o. ä. rein:

$aktuelleDaten["AC_Eigenverbrauch_WR2"] = min($AC2_Leistung,$AC_Gesamtverbrauch); // Eigenverbrauch von WR2

Vielen Dank!


Wen es interessiert - der Hintergrund:

Der SE-WR (WR1) hat einen Zähler am Netzübergabepunkt (Bezug / Einspeisung). Der SMA-WR (WR2) hat keinen externen Zähler, ich kenne also nur dessen aktuelle Produktion. Es ist eine Zählerkaskade (keine Auslesung durch Solaranzeige!!) geschaltet, wodurch erst die Erzeugung des SMA-WR verbraucht wird und nur wenn die nicht reicht, wird auch Erzeugung des SE-WR mit selbst verbraucht. Die Einspeisung des SMA-WR gibt 30 % weniger Vergütung, als die vom SE-WR. Deswegen möchte ich zukünftig dann den Verbrauch möglichst gut in die Erzeugung des SMA-WR legen. Im Anhang dann die komplette php, mit der ich dann noch zusätzliche Werte in die Datenbank vom WR1 schreiben will. Manches könnte man sicherlich auch in Grafana direkt berechnen, aber so erscheint mir der Zugriff auf die Werte aus verschiedenen Panels einfacher.
eigene_werte_TGS.php
(10.44 KiB) 23-mal heruntergeladen

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

Re: 2 Regler in die gleiche Datenbank schreiben lassen

Beitrag von Bogeyof »

Schon ganz passabel, einige Kleinigkeiten konntest Du nicht wirklich wissen. Die Query wird ab dem 2. Wert mit Komma getrennt, welches im String mit angegeben sein muss, es sieht also jetzt so aus:

Code: Alles auswählen

  $query = "";
  $query .= "\n";										        
  $query .= "Summen ";
  $query .= "AC_Leistung_Gesamt=".$daten["AC_Leistung_Gesamt"];
  $query .= ",AC_Eigenverbrauch=".$daten["AC_Eigenverbrauch"];
  $query .= ",AC_Gesamtverbrauch=".$daten["AC_Gesamtverbrauch"];
  $query .= ",AC_Eigenverbrauch_WR1=".$daten["AC_Eigenverbrauch_WR1"];
  $query .= ",AC_Eigenverbrauch_WR2=".$daten["AC_Eigenverbrauch_WR2"];
  $query .= ",AC_Einspeisung_WR1=".$daten["AC_Einspeisung_WR1"];
  $query .= ",AC_Einspeisung_WR2=".$daten["AC_Einspeisung_WR2"];
  $query .= " ".$daten["Timestamp"];
Bei den Werten hast Du richtig gedacht, aber einige Variablen falsch angesprochen. Z.B. "$AC_Bezug = ..." ist eine einzelne lokale Variable.
Die Zuweisung "$aktuelleDaten["AC_Gesamtverbrauch"] = ..." schreibt den Wert in ein Array. Diesen Wert kannst Du anschließend nicht mit "$AC_Gesamtverbrauch" weiterverwenden, sondern musst dann schreiben "$aktuelleDaten["AC_Gesamtverbrauch"]". Damit sieht eine von mir geänderte Anweisung dann z.B. so aus:

Code: Alles auswählen

  $aktuelleDaten["AC_Gesamtverbrauch"] = $aktuelleDaten["AC_Eigenverbrauch"] + $AC1_Bezug; // Gesamtverbrauch
statt
  $aktuelleDaten["AC_Gesamtverbrauch"] = $AC_Eigenverbrauch + $AC1_Bezug; // Gesamtverbrauch
Der Rest scheint logisch, aber ich kann es aufgrund fehlender Daten nicht debuggen. Ich denke aber es sollte funktionieren. Im Anhang die korrigierte Version...
Dateianhänge
eigene_werte_TGS.php
(10.57 KiB) 23-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 »

Vielen Dank!

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 »

Gestern ist dann die Anlage in Betrieb gegangen. Skript läuft perfekt! Danke noch einmal!
Auswertung.JPG

Antworten