Problem mit IPS_SetProperty

Hallo Zusammen,

ich bastel gerade an meinem Modul für Deye Wechselrichter. Zunächst werden erst mal für alle möglichen Werte, die aus dem Wechselrichter auslesbar sind Variablen angelegt. Ich hab mir da mal sdas B+GEtech Modul von Nall-Chan angeschaut. Dag gibt es eine Array, in dem die Variablen mit den entsprechenden Modbus-Registern hinterlegt sind. Beim Anlegen der Variablen klappt das auch. Ich habe da ein paar zusätzliche Felder eingefügt, doe ich für die Umrehcnung der Werte brauchen und als Property an die Variablen gebunden.

 $Variables = [];
        foreach (static::$Variables as $Pos => $Variable) {
            $Variables[] = [
                'Ident'    => str_replace(' ', '', $Variable[0]),
                'Name'     => $this->Translate($Variable[0]),
                'VarType'  => $Variable[1],
                'DataType' => $Variable[2],
                'Profile'  => $Variable[3],
                'Address'  => $Variable[4],
                'Function' => $Variable[5],
                'Quantity' => $Variable[6],
		'Factor'   => $Variable[7],
		'Offset'   => $Variable[8],
                'Keep'     => $Variable[9],
                'Pos'      => $Pos + 1
            ];
        }

        $this->RegisterPropertyString('Variables', json_encode($Variables));

Soweit so gut. Wenn ich allerdings im Einstellungen Editor eine VAriable ändere , dann sollten eigentlich über Maintainvariable dch die entsprechenden Variablen entfernt werden und die andern bleiben.

   //Create Variables and check when new Rows in config appear after an update.
        $NewRows = static::$Variables;
        $NewPos = 0;
        $Variables = json_decode($this->ReadPropertyString('Variables'), true);
        foreach ($Variables as $Variable) {
            @$this->MaintainVariable($Variable['Ident'], $Variable['Name'], $Variable['VarType'], $Variable['Profile'], $Variable['Pos'], $Variable['Keep']);
            foreach ($NewRows as $Index => $Row) {
                if ($Variable['Ident'] == str_replace(' ', '', $Row[0])) {
                    unset($NewRows[$Index]);
                }
            }
            if ($NewPos < $Variable['Pos']) {
                $NewPos = $Variable['Pos'];
            }
        }
        if (count($NewRows) != 0) {
            foreach ($NewRows as $NewVariable) {
                $Variables[] = [
                    'Ident'    => str_replace(' ', '', $NewVariable[0]),
                    'Name'     => $this->Translate($NewVariable[0]),
                    'VarType'  => $NewVariable[1],
                    'DataType' => $NewVariable[2],
                    'Profile'  => $NewVariable[3],
                    'Address'  => $NewVariable[4],
                    'Function' => $NewVariable[5],
                    'Quantity' => $NewVariable[6],
                    'Factor'   => $NewVariable[7],
                    'Offset'   => $NewVariable[8],
                    'Keep'     => $NewVariable[9],
                    'Pos'      => ++$NewPos
                ];
            }
            IPS_SetProperty($this->InstanceID, 'Variables', json_encode($Variables));
            IPS_ApplyChanges($this->InstanceID);

Bei mir wirft er da aber zum Beispiel das Feld ‚DataType‘ raus, was in der Folge dazu führt, dass das Modul die Daten nicht mehr abholt und mit die Fehlermldung „Notice: Undefined index: DataType in C:\ProgramData\Symcon\modules\IPSymcom-Deye_Inverter\libs\DeyeModule.php on line 320“ ausgibt.

Ich bin ja davon ausgegangen, dass man mit IPS_SetProperty an eine Variable beliebige Properties hängen kann. oder hab ich da einen Denkfehler. Auf jeden Fall ist mri unklar, warum die Einstellungen nach einem Aktiv- und Inaktivschalten einer Variablen dann nicht mehr funktionieren.

Der zweite Code mit SetProperty darf bei dir nie ausgeführt werden, da hier nur geprüft wird ob neue Zeilen (Variablen) im Array ergänzt wurden. Das kann nur bei einem Module Update passieren.

Dein Fehler wird eher sein, dass deine neuen Felder nicht in der Spalte der Liste enthalten sind. Somit musst du die form.json anpassen.
Michael

Hallo Nall-chan,

danke für den Tipp mit der form.json. Die hatte ich gar nicht auf dem Schirm und genau da lag der Fehler. Die entsprechenden Felder dort ergänzt und es funktioniert prima.

@ThomasWest69
Hallo Thomas,
wenn für Dein Deye-Wechselrichter-Modul noch ein Beta-Tester benötigt wird, würde ich mich gern zur Verfügung stellen. Hab den Deye SUN 600 hier laufen und suche eine Möglichkeit, die Daten in IPS zu bekommen und dort auszuwerten und zu loggen.
Besten Dank im voraus und viele Grüße
Thilo

@ThomasWest69
Hallo Thomas,
darf ich mal nachfragen, wie weit die Entwicklung des Moduls für den Deye-Wechselrichter vorangeschritten ist?
Ich habe auch großes Interesse daran, bin aber auf der Software-Seite nicht so fit, das alleine zu stemmen.
Viele Grüße
Thilo

Any updates? :wink: kann man helfen? Benötige ein solches modul auch :wink:

Lieben Gruß

Hätte auch Interesse an dem Modul und zwei Bosswerk MI-300 Wechselrichter im Einsatz, welche baugleich mit dem Deye sind. Aktuell hole ich mir die Daten von der Solarman-Plattform ins IPS, was leider etwas suboptimal ist.

Da muss ich Dich leider enttäuschen. Mein Modul ist für die großen Hybridwechselrichter der SUNxxK-SGxxLPx-Reihe. Bei Bosswerk sind das die hier Bosswerk Hybrid
Allerdings scheint es bei Bosswerk nur bis 4600W zu gehen. Bei den originalen Deye geht das bis 20kW hoch.

Hallo Thomas,

ich bekomme in Kürze auch meinen Deye Hybridwechselrichter und würde ihn gerne in Symcon einbinden.
Kannst du mir ein paar Stichworte geben, wie deine Integration aussieht (über WLAN-Stick-Logger oder über Solarman-Cloud oder…), damit ich mich weiter einlesen kann? Setzt du auf einem anderen Modul auf oder hast du das von Grund auf entwickelt?

Vielen Dank!
Viele Grüße
Philip

Hallo Thomas,
wie ist der Stand der Deye-Modulentwicklung ??
Habe hier einen Sun 12K Hybrid im Einsatz und möchte IPS direkt mit dessen Daten per RS485 füttern…
Auch ein Code-Auszug mit Deinem aktuellen Stand würde helfen um die Sache voran zu treiben.

Vielen Dank im voraus !

Silvio

Ich hänge aktuell bei der Umsetzuing des prognosebasierten Ladens des Akkus. Dazu würd eich eine Lastprognose für den kommenden Tag benötigen. Solarprognose bekommt man ja im Internet, und auch die Anbieter variabler Tarife liefern ihre Daten. Ich hatte zwar an andere Stelle schon mal gefragt, aber keine Antwort bekommen. Kennt jemand ein Rool oder eine Bibliothek, mit der ich in PHP eine Zeitreihenprognose rechnen kann. Es gibt zwar die Funktion trader_tsf, aber ich glaube, dass die nur ein ARIMA Modell abbildet. Eine KI ähnliche, lernende Funktion wäre nicht schlecht. Ich hab mir schon RubixML angeschaut, aber genau die Zeitreihenprognose mit rekursiven neuronalen Netzen haben die noch nicht implementiert und schieben das seit Jahren vor sich her.

Hallo
ich habe mir das modul auch instaliert. zusammen mit einem 485 lan umsetzer.
aber der deye scheint einfach nicht anworten zu wollen.
mit einer zweiten 485 schnitstelle habe ich die verbindung getestet.
alle 2 sec kommt von IPS auch ein kurzer string den ich dann im angeschlossenen terminal sehe. ich verwende die rechte buchse ( BMS anschlus) mit einem Y kabel was dann pin 4+5 zum akku durchleitet. und pin 7+8 für den 485 lan umsetzer.
Der Deye ist ein sun 12k 1001-c037 2005-1128-1807

Ja alle 2 Sekunden fragt IPS den Deye ab (Standardeinstellung). Probier mal die RS485 Buchse. Je nach Firmware gibt es da Unterschiede was die Nutzung der beiden Buchsen angeht. Stimmt die IP zum Ethernet-Adapter, die im IPS-Gateway eingestellt ist. Stimmen die Verbindungsdaten im Ethernet-Adapter (Modbus ID und Baudrate). Die Modbus-ID muss mit der im Deye eingestellten identisch sein. in der regel ist das aber die 1.

1 „Gefällt mir“

Hallo

Danke ! , genau das war es , die mod bus id .
in dem Waveshare adapter habe ich die einstellung nicht gefunden.
Dann am Deye von 00 auf 01 geändert und Klack alles war aus …
aber danach lief es dann. war sofort zu erkennen am Längeren blinken der LED :slight_smile:
Bin gespannt auf die weiterentwiklung um Tiber und co zu nutzen, das steht für 05.2024 auf der todo liste.

1 „Gefällt mir“