Seite 3 von 4

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Sa 24. Apr 2021, 11:38
von Bogeyof
auf der Konsole:

Code: Alles auswählen

influx
use solaranzeige
drop measurement Wetterprognosen

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Do 29. Apr 2021, 13:45
von Yoda68
Ich stecke fest und komm nicht weiter.
Ich kann einfach keinen vernünftigen Wert in die Adresse schreiben. Vielleicht kann mir hier ein Modbus Spezialist mit php Kenntnissen weiter helfen.
Ich nutze derzeit aus der Solaranzeige die Funktion
" function modbus_register_lesen($COM1,$Register,$Laenge,$Typ,$GeraeteAdresse,$Befehl) " welche offensichtlich nicht für das schreiben geht. Als Wert wird 15728641 in die Adresse geschrieben.
Bekannt und funktionierend LESEND ist
IP Adresse: xxx.xxx.xxx
Port: 502
Geräteadresse : 01
Schreibbefehl: 06
Registeradresse in Binarform : 1008
Länge: 2 Bytes
Typ: uint16be
Wert der geschrieben werden soll: 8
Header PDU
TranaktionsID Protokoll ID Länge GeräteID Befehlscode Register Wert

Wie müsste denn in php der Befehl aussehen? oder bin ich total auf dem Holzweg?

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Do 6. Mai 2021, 12:39
von Yoda68
Anfängerfrage : an unsere php Spezialisten
ich wollte einen Werte Berechnen und diese später in die Datenbank mit speichern
//Neue Variabel
$Boostmodus = "5";
$Sicherstellungstemperatur = "40"
$RSU_Zeit = ((( $ - $aktuelle_Zeit ) - (60 * 60 * 2)) / 60 / 60 ) ;
$Lademenge = ( $BattKap - ( $SOC * ( $BattKap / 100 )));
$Lade_Zeit = (( $Lademenge / $Lademax ) + 1 );

Das klappt auch bis hierher.

Nun wollte ich die Werte zum Speichern vorbereiten

1. $aktuelleDaten["Boostmodus"] = $Boostmodus["Wert"];
2. $aktuelleDaten["Sicherstellungstemperatur"] = $Sicherstellungstemperatur["Wert"];
usw.
3. $aktuelleDaten["Lademenge"] = $Lademenge["Wert"];
4. $aktuelleDaten["Lade_Zeit"] = $Lade_Zeit["Wert"];

1. & 2. geht nur wenn der Wert kleiner 10 ist und danach inklusive
3. & 4. geht gar nicht.

dann das schreiben in die Datenbank mit geht nur 1. & 2. -- ist ja klar.

1. $query .= ",Boostmodus=".$daten["Boostmodus"];
2. $query .= ",Sicherstellungstemperatur=".$daten["Sicherstellungstemperatur"];
usw.
3. $query .= ",Lademenge=".$daten["Lademenge"];
4. $query .= ",Lade_Zeit=".$daten["Lade_Zeit"];

sorry ich weiß aber mir fehlen da eindeutig Kenntnisse von php.
Helft ihr mir auf die Sprünge.
Danke.

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Do 6. Mai 2021, 13:06
von Bogeyof
Ich versuche mich mal daran:
$Boostmodus = 5; // besser ohne Hochkomma als Zahl,mit Hochkomma wäre es Text
$Sicherstellungstemperatur = 40; // besser ohne Hochkomma als Zahl,mit Hochkomma wäre es Text

1. bei $Sicherstellungstemperatur = "40" fehlt der Strickpunkt am Ende ($Sicherstellungstemperatur = 40;)
2. Die Zeile mit "$RSU_Zeit = ((( $ - $aktuelle_Zeit ) - (60 * 60 * 2)) / 60 / 60 ) ;" ergibt keinen Sinn. Was soll ( $ - $aktuelle_Zeit ) darstellen?
Vielleicht "$RSU_Zeit = (( $RSU_Zeit - $aktuelle_Zeit - 7200 ) / 3600 ) ;" //ergibt eigentlich keinen Sinn
3. Es werden einige Variablen verwendet die hier nicht definiert sind, ich denke diese werden vorher irgendwo befüllt?

Nun zur Schreibweise für das Speichern:
1. $aktuelleDaten["Boostmodus"] = $Boostmodus; //der Zusatz ["Wert"] wäre ein Element eines Array, $Boostmodus ist aber kein Array
2. $aktuelleDaten["Sicherstellungstemperatur"] = $Sicherstellungstemperatur; //analog
3. $aktuelleDaten["Lademenge"] = $Lademenge; //analog
4. $aktuelleDaten["Lade_Zeit"] = $Lade_Zeit; //analog

1. $query .= ",Boostmodus=".$daten["Boostmodus"];
2. $query .= ",Sicherstellungstemperatur=".$daten["Sicherstellungstemperatur"];
usw.
3. $query .= ",Lademenge=".$daten["Lademenge"];
4. $query .= ",Lade_Zeit=".$daten["Lade_Zeit"];

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Do 6. Mai 2021, 14:23
von Yoda68
Danke dir für die schnelle Antwort.

$aktuelleDaten["irgendwas"] = $irgendwas; //ist kein Array sondern ein ??? (z.b. einResultat einer Berechnung)
damit bereite ich doch zum speichern vor

und mit

Code: Alles auswählen

Ausgang:;

}

$funktionen->log_schreiben("-------------   Stop  Test_werte.php    --------------- ","|--",6);

return;

function eigenedaten_speichern($daten)  {

  $query = "";
  $query .= "Elwa2 ";
   $query .= ",Boostmodus=".$daten["Boostmodus"];
    $query .= ",Sicherstellungstemperatur=".$daten["Sicherstellungstemperatur"];
    $query .= ",Lademenge=".$daten["Lademenge"];
    $query .= ",Lade_Zeit=".$daten["Lade_Zeit"];
  $query .= " ".$daten["Timestamp"];
//  $query .= "\n";										 
 
speichere ich die Werte in der DB

Macht er aber nicht Fehler

Code: Alles auswählen

root@solaranzeige:/var/www/html# ./Test.php
Test_Elwa ,Boostmodus=5,Sicherstellungstemperatur=6,Lademenge=4,Lade_Zeit=5 1620302601Daten nicht zur InfluxDB gesendet! info: Array
(
    [url] => http://localhost/write?db=solaranzeige&precision=s
    [content_type] => application/json
    [http_code] => 400
    [header_size] => 416
    [request_size] => 242
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.003908
    [namelookup_time] => 0.002302
    [connect_time] => 0.002582
    [pretransfer_time] => 0.002914
    [size_upload] => 86
    [size_download] => 139
    [speed_download] => 46333
    [speed_upload] => 28666
    [download_content_length] => 139
    [upload_content_length] => 86
    [starttransfer_time] => 0.003845
    [redirect_time] => 0
    [redirect_url] => 
    [primary_ip] => ::1
    [certinfo] => Array
        (
        )

    [primary_port] => 8086
    [local_ip] => ::1
    [local_port] => 57412
    [http_version] => 2
    [protocol] => 1
    [ssl_verifyresult] => 0
    [scheme] => HTTP
    [appconnect_time_us] => 0
    [connect_time_us] => 2582
    [namelookup_time_us] => 2302
    [pretransfer_time_us] => 2914
    [redirect_time_us] => 0
    [starttransfer_time_us] => 3845
    [total_time_us] => 3908
)
Daten nicht zur InfluxDB gesendet! info: Array
(
    [url] => http://localhost/write?db=solaranzeige&precision=s
    [content_type] => application/json
    [http_code] => 400
    [header_size] => 416
    [request_size] => 242
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.001469
    [namelookup_time] => 0.000112
    [connect_time] => 0.000114
    [pretransfer_time] => 0.000343
    [size_upload] => 86
    [size_download] => 139
    [speed_download] => 139000
    [speed_upload] => 86000
    [download_content_length] => 139
    [upload_content_length] => 86
    [starttransfer_time] => 0.001382
    [redirect_time] => 0
    [redirect_url] => 
    [primary_ip] => ::1
    [certinfo] => Array
        (
        )

    [primary_port] => 8086
    [local_ip] => ::1
    [local_port] => 57412
    [http_version] => 2
    [protocol] => 1
    [ssl_verifyresult] => 0
    [scheme] => HTTP
    [appconnect_time_us] => 116
    [connect_time_us] => 114
    [namelookup_time_us] => 112
    [pretransfer_time_us] => 343
    [redirect_time_us] => 0
    [starttransfer_time_us] => 1382
    [total_time_us] => 1469

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Do 6. Mai 2021, 14:25
von Bogeyof
Das erste Komma vor Boostmodus ist falsch, erst ab dem 2. Wert verwenden:

Code: Alles auswählen

$query = "";
  $query .= "Elwa2 ";
   $query .= "Boostmodus=".$daten["Boostmodus"];
    $query .= ",Sicherstellungstemperatur=".$daten["Sicherstellungstemperatur"];
    $query .= ",Lademenge=".$daten["Lademenge"];
    $query .= ",Lade_Zeit=".$daten["Lade_Zeit"];
  $query .= " ".$daten["Timestamp"];
//  $query .= "\n";		
Allerdings kommt die Fehlermeldung von einer Query Test_Elwa, geschrieben hast Du Elwa2, das passt nicht ganz zusammen. Aber der Fehler liegt im ersten Komma...

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Do 6. Mai 2021, 14:44
von Yoda68
Danke. Ja das war ein Test.2
Aber der Fehler mit dem Komma zog sich durch.
Sch... Komma.

Ich Scheibe von unterwegs und probiere es heute Nacht nach der Arbeit.

Nochmals danke.

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Mi 12. Mai 2021, 16:49
von Yoda68
Nach umfangreichen Test auf der ElwaE 3.0 kW / FW 102.06 aus dem Jahr 2020 kann man sagen das Skript funktioniert.

Wer es testen möchte, muß in der Zeile 94 die richtige IP-Adresse seines Gerätes eintragen.
Mit der der elwa_auslesen.php wird das Gerät über Modus ausgelesen und über elwa_math.php erfolgt die Steuerung. (hier nur als kleines Beispiel)

Ich weise ganz klar vornweg darauf hin, dass die Steuerung (elwa_math.php) mit schreibender Routine (Wert „06“) auf das Gerät per Modus gesetzt wird. Dies kann unter Umständen, sofern man nicht weis was man tut, zu Schäden führen. Daher gilt wie immer die Verwendung der Skripte auf eigene Gefahr und ohne jegliche Garantie.

Wer nur auslesen will kann sich die gewünschten Werte durch entfernen der // auswählen.
Diese werden dann in die influx unter Elwa geschrieben. Noch in die crontab eintragen und fertig.
Hinweis: Es lassen sich auf diesem Wege auch die ATORen Register Adressen 1000 bis 1071 auslesen.

Wenn Ulrich möchte kann er das Gerät ja mit einer eigenen Gerätenummer versehen und in den Standart mit aufnehmen - vielleicht bastelt er ja auch eine funkttion „modbus_register_schreiben“ das wäre es super und eröffnet weitere Möglichkeiten.

Viel Spass und sonnige Grüße
Yoda68

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Mo 23. Aug 2021, 14:33
von bocom
Hallo an alle, Hallo Yoda68,
ich bin ein blutiger Anfänger und möchte mich erstmal bei allen Forenmitgliedern für die Tolle Arbeit die sie hier veröffentlichen bedanken,
dadurch ist es mir als Anfänger auch gelungen meine PV Anlage mit dem Solaredge SE3000 in mein Projekt einzubinden. Jetzt möchte ich meinen Heizstab von MyPv mit dem Powermeter von MyPv auch in die das Projekt einbinden.

E/Ethernet Version: 00201.02, Neueste: -  
P/Leistungsteil Version: 107
Seriennummer: 16012421031xxxxx
IP Adresse: 192.168.2.xxx

Leider fehlen mir die Kenntnisse wie ich die im vorigen Posting angehängten 2 Dateien von Yoda68 in das Projekt einbinden kann.
Das Projekt läuft bei mir auf einem Synology NAS unter Docker. Die Software habe ich bereits laut Anleitung "Multiregler Version.txt"
umgestellt, ob dies dafür notwenig war weiss ich nicht aber es wird in weiterer Folge sowieso noch eine PV Anlage dazu kommen.

Bitte um eure Hilfe bei der Einbindung

Danke im vorraus
mitfreundlichen Grüßen
Josef

Re: Elwa-E von My-Pv auslesen / ansteuern

Verfasst: Do 6. Jan 2022, 21:55
von tutu81
Hallo Josef,

Hast du geschaft, die 2 Dateien von Yoda68 in dein Projekt einzubinden ?

Gruss,
Vince