Ankündigung

Einklappen
Keine Ankündigung bisher.

Entwicklungsthread für das Huawei SUN 2000 Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    Ich packe mal die neuen Register in die plugin.yaml mit rein. Dann schauen wir mal weiter. Da hat sich ja seit der letzten Version einiges getan. Ich habe, glaube ich, gerade mal 100 neue Register zugefügt und die sind nur für den Wechselrichter. Der Rest folgt und dann stelle ich das mal zum testen rein.

    Kommentar


      #32
      Super, gerne hier melden, wenn man die neue Version testen kann. Ich hab im Übrigen die ganzen Emma-Register mittels ChatGPT aus dem Sourcecode in die YAML Struktur überführt. Würde ich auch empfehlen, dann geht es jedenfalls schneller

      Kommentar


        #33
        Zitat von Onkelandy Beitrag anzeigen
        Super, gerne hier melden, wenn man die neue Version testen kann. Ich hab im Übrigen die ganzen Emma-Register mittels ChatGPT aus dem Sourcecode in die YAML Struktur überführt. Würde ich auch empfehlen, dann geht es jedenfalls schneller
        Wie geil ist das denn. Das kriegt man so hin? Ich habs alles mit der Hand gemacht. Bin allerdings gerade beim testen. Blöderweise habe ich die Register aus dem Beta-Code genommen habe, aber nutze noch die finale 2.3.0 Version der lib. Da gibts dann ein paar Register die Fehler auswerfen.

        Kommentar


          #34
          Ich habe jetzt ein Update unter https://github.com/CannonRS/plugins/...huawei_sun2000 eingespielt.

          Wichtig zu wissen:
          • Einige Register, die bei mir nicht gingen (illegal adress), habe ich auskommentiert in der plugin.yaml.
          • Einige Register sind zumindest in der 2.3.0 noch nicht vorhanden und werfen einmalig beim Start eine Warnung aus. Ich hoffe das das künftig behoben wird.
          Die EMMA sollte jetzt auch gehen, ist aber nicht getestet. Die Einbindung (erst einmal nur EMMA, ohne Wechselrichter) sollte so gehen:

          Code:
          Zentral:
              Energie:
                  Photovoltaik:
                      SUN2000_EMMA:
                          struct: huawei_sun2000.emma
                          SUN2000_energy_sensor:
                              struct: emma_built_in_energy_sensor
          Man kann auch externen Energie-Sensor verwenden, als auch ein externes Meter. Was das genau heißt muss man testen. Vermute aber, dass da ein Unterschied gemacht wird, ob für die EMMA die Direkt- (bis 63 A) oder die Wandlermessung verwendet wird.

          Also struct: emma_built_in_energy_sensor & struct: emma_external_meter.
          Zuletzt geändert von Cannon; 05.11.2024, 18:09.

          Kommentar


            #35
            Danke! Aber da stimmt noch was gröber nicht..
            Nov 05 23:38:44 WARNING plugins.huawei_sun2000 Invalid key for sun2000_equipment 'EMMA_BUILT_IN_ENERGY_SENSOR' configured
            Nov 05 23:38:44 ERROR lib.item.item Item photovoltaik.total_negative_active_energy: problem creating: local variable 'equipment' referenced before assignment
            Traceback (most recent call last):
            File "/usr/local/smarthome/lib/item/item.py", line 551, in __init__
            child = Item(smarthome, self, child_path, value)
            File "/usr/local/smarthome/lib/item/item.py", line 635, in __init__
            update = plugin.parse_item(self)
            File "/usr/local/smarthome/plugins/huawei_sun2000/__init__.py", line 286, in parse_item
            self._read_item_dictionary.update({item: ReadItem(register, cycle, slave, equipment)})
            UnboundLocalError: local variable 'equipment' referenced before assignment​

            Kommentar


              #36
              Hab die Zeile mal gefixt und läuft, außer die 2 Meldungen bekomme ich noch:
              Nov 06 00:11:17 ERROR plugins.huawei_sun2000 inverter_read: Error reading register 'ENERGY_CHARGED_THIS_MONTH' from 10.0.0.37:502, slave_id 0: Got error while reading from register 30407 with length 2: Exception Response(131, 3, IllegalValue)
              Nov 06 00:11:17 ERROR plugins.huawei_sun2000 inverter_read: Error reading register 'ENERGY_DISCHARGED_THIS_MONTH' from 10.0.0.37:502, slave_id 0: Got error while reading from register 30409 with length 2: Exception Response(131, 3, IllegalValue)​

              Kommentar


                #37
                Zitat von Onkelandy Beitrag anzeigen
                UnboundLocalError: local variable 'equipment' referenced before assignment
                Das sind die Equipment-Sachen. Das wollte ich mal raus schmeißen oder doch noch mal richtig einrichten. Der Gedanke hierbei war, dass erst einmal bei der Initialisierung geprüft wird, ob das vorhandene Gerät überhaupt vorhanden ist. Wenn nicht, dann wird das komplette Gerät auch nicht mehr gelesen. Das funktioniert aber noch nicht für alle Geräte. Ob das Sinn macht oder nicht, sollten wir ggf. auch mal besprechen. Ich sehe das eher nicht als sinnvoll an, da ich bei SmartHomeNG sowieso keine dynamischen Items habe.

                Was war denn dein fix? Also was hast du genau behoben?

                Zitat von Onkelandy Beitrag anzeigen
                Nov 06 00:11:17 ERROR plugins.huawei_sun2000 inverter_read: Error reading register 'ENERGY_CHARGED_THIS_MONTH' from 10.0.0.37:502, slave_id 0: Got error while reading from register 30407 with length 2: Exception Response(131, 3, IllegalValue)
                Nov 06 00:11:17 ERROR plugins.huawei_sun2000 inverter_read: Error reading register 'ENERGY_DISCHARGED_THIS_MONTH' from 10.0.0.37:502, slave_id 0: Got error while reading from register 30409 with length 2: Exception Response(131, 3, IllegalValue)​
                Sonst geht es aber bei dir?

                IllegalValue würde ich der API zuordnen, denn die liest da direkt aus und erwartet irgendwas anderes. Damit muss man erst mal leben oder auskommentieren.

                IllegalAddress habe ich bei einigen Werten. Da sehe ich 2 Ursachen: Entweder die aktuelle Firmware unterstützt das noch nicht oder der Wechselrichter unterstützt das nicht. Hier sehe ich einen Lösungsansatz, dass man den Fehler abfängt, einmalig eine Warnung ausgibt und dieses Item dann dynamisch aus der Liste der abzufragenden Items schmeißt. Okay?




                Kommentar


                  #38
                  Mein Fix war einfach nochmals ein equipment = None beim else: einzufügen vor der kritischen Zeile. Prinzipiell finde ich den Ansatz nicht schlecht, wenn auch nicht zwingend nötig. Dynamische Items kommen sicher irgendwann noch (Version 20.. ?), wenn es sonst funzt, würde ich es drin lassen.

                  Das mit der IllegalAddress find ich vernünftig. 1 Mal eine Meldung, danach keine mehr. Frage wäre hier aber auch, ob man nicht alles, was Batterie anlangt in ein eigenes Struct auslagern kann. Es gibt ja ein Storage struct, aber imho sind da einige Sachen nicht drin wie eben energy_charged, etc.
                  Zuletzt geändert von Onkelandy; 06.11.2024, 10:13.

                  Kommentar


                    #39
                    Zitat von Onkelandy Beitrag anzeigen
                    Dynamische Items kommen sicher irgendwann noch (Version 20.. ?), wenn es sonst funzt, würde ich es drin lassen.
                    Dann lassen wir das erst mal drin, müssten aber noch pro Gerät prüfen, welches Register für die Prüfung ist vorhanden/nicht vorhanden zuständig ist. Ich schau mir das noch mal an.

                    Zitat von Onkelandy Beitrag anzeigen
                    Frage wäre hier aber auch, ob man nicht alles, was Batterie anlangt in ein eigenes Struct auslagern kann. Es gibt ja ein Storage struct, aber imho sind da einige Sachen nicht drin wie eben energy_charged, etc.
                    Das sind doch alles schon eigene structs. Was meinst du damit genau?

                    Und was energy_charged betrifft. Die sind drin, heißen nur anders, also so, wie in den Registerdefinitionen der huawei solar lib. Für heute z.B.:

                    - current_day_charge_capacity
                    - current_day_discharge_capacity

                    Kommentar


                      #40
                      Ah ok dann müsste es noch ein struct für die wallbox geben. Dachte zuerst charge = battery/storage

                      Kommentar


                        #41
                        Zitat von Onkelandy Beitrag anzeigen
                        struct für die wallbox
                        Die Wallbox ist anders angebunden. Da braucht man sicherlich eine andere lib oder muss die anders einbinden. Die ist nicht über die den Dongle im System eingebunden, sondern per Netzwerk. Das ist wohl auch Modbus und/oder OCPP. Die Wallbox wäre ein extra Plugin. Hier sind mehr Infos dazu: https://github.com/wlcrs/huawei_sola...ent-1744626189

                        Kommentar


                          #42
                          Komm ich nicht mit.. Worauf beziehen sich denn Register wie ENERGY_CHARGED_TODAY..?
                          Und wären nicht die Register wie ESS_CHARGEABLE_CAPACITY und andere CHARGE Sachen besser in einem eigenen struct aufgehoben, eben wenn man eine Batterie hat..?

                          Kommentar


                            #43
                            Zitat von Onkelandy Beitrag anzeigen
                            Komm ich nicht mit.. Worauf beziehen sich denn Register wie ENERGY_CHARGED_TODAY..?
                            Und wären nicht die Register wie ESS_CHARGEABLE_CAPACITY und andere CHARGE Sachen besser in einem eigenen struct aufgehoben, eben wenn man eine Batterie hat..?



                            Das sind alles EMMA-Register. Kann ich nur vermuten:
                            • ESS_CHARGEABLE_CAPACITY: maximale Ladeleistung der ESS - vermutlich das was der Speicher maximal könnte, wenn man ihn nicht beschränkt
                            • ENERGY_CHARGED_TODAY: heute an Energie in den Speicher geladen
                            • ENERGY_DISCHARGED_TODAY: heute an Energie aus dem Speicher entladen
                            Das sind alles EMMA-Register. Ich sehe da wenig Sinn, dass in die Batterie-Register zu packen. Zumal ja die Batterie diese Register auch hat. Somit würde ich vermuten, wenn man mehrere Batterie-Speicher hat, dass das die Summen sind. Aber alles nur Vermutungen.

                            Du hast keinen Speicher? Sonst könntest du das sehen, was in den Registern der EMMA steht und was in den Registern des Speichers steht.

                            Kommentar


                              #44
                              Ich habe noch mal ein Update eingestellt. Dort ist das Problem mit der nicht zugewiesenen Variable in inverter_read behoben und ich habe auch was eingebaut, damit die Register dann raus geworfen werden, wenn die nicht existieren, also IllegalAddress. Gern mal testen.

                              Kommentar


                                #45
                                Nö ich hab keinen Speicher. Ich hätte vermutet dass das bei der Emma alles über emma Register läuft. Aber ich schau einfach mal welche Items befüllt werden. Die die leer bleiben könnte man in ein emma_storage struct auslagern..?

                                Kommentar

                                Lädt...
                                X