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

    #16
    Ich würde den mal eine Weile laufen lassen. Und dann mal schauen, ob auch andere Register gehen.

    Zudem nutze ich noch die huawei-solar lib 2.2.9. Die neue Version ist 2.3.0 ist noch nicht getestet. Aber sie ist wohl Voraussetzung für EMMA. Leider finde ich keine History für die lib. Ich werde die Tage mal mit der 2.3.0 testen. Welche lib-Version hast du drauf?

    Kommentar


      #17
      Ich hab 2.4.0a8 https://pypi.org/project/huawei-solar/#history
      Alles nach PN wird auch nach Stunden nicht aktualisiert, es scheint, dass das Problem mit PN einen Abbruch verursacht.
      Mir ist noch nicht klar, wo ich die Slave IDs finde..? Im Webportal habe ich nichts gefunden, in der App auch nicht. Hab nur in diversen Foren mal gesehen, dass es wohl zwischen 0 und 5 sein sollte. Mit der EMMA funzt das alls glaub einfach anders, ich kommuniziere ja direkt mit ihr und nicht mehr mit dem Inverter, soweit ich das sehe.

      Kommentar


        #18
        Zitat von Onkelandy Beitrag anzeigen
        Mir ist noch nicht klar, wo ich die Slave IDs finde..? Im Webportal habe ich nichts gefunden, in der App auch nicht. Hab nur in diversen Foren mal gesehen, dass es wohl zwischen 0 und 5 sein sollte. Mit der EMMA funzt das alls glaub einfach anders, ich kommuniziere ja direkt mit ihr und nicht mehr mit dem Inverter, soweit ich das sehe.



        Im Web-Portal auf den Wechselrichter gehen, dann auf Konfiguration und oben gleich unter der Gerätekonfiguration, findest du die Modbus-Id-Adresse. Das ist die Slave Id.

        Ich glaube bei EMMA und Dongle ist das ähnlich gelöst. In beiden Fällen, so denke ich, kommunizierst du durch die EMMA bzw. durch den Dongle mit dem WR. Bei einem 2. WR zum Beispiel hast du auch kein 2. Dongle dran. Das läuft dann alles über den RS485 Bus. Und darüber ist ja die EMMA auch angebunden.

        Die Test-Version von der lib würde ich nicht nehmen. Ich teste mal mit der 2.3.0. Wenn es mit der geht, können wir mal weiter schauen. Die History gibt es. Es gibt aber keine Infos zu den gemachten Änderungen, was ich blöd ist.

        Kommentar


          #19
          Ich habe gerade mal getestet. Mach mal ein downgrade auf die letzte stabile Version, also 2.3.0 mit

          Code:
          pip install huawei-solar=2.3.0​
          Dabei wird dann pymodbus auch auf 3.6.9 gesetzt.

          Bei mir laufen dann sowohl huawei-sun2000, als auch die anderen pymodbus-abhängigen Plugins.

          Zitat von Onkelandy Beitrag anzeigen
          plugins.huawei_sun2000 inverter_read: Error reading register 'PN' from 10.0.0.37:502, slave_id 0: Got error while reading from register 30025 with length 10: Exception Response(131, 3, IllegalValue)
          Das ist übrigens schon abgefangen im Plugin. Und ich erhalte auch ab und zu mal solche Meldungen, was an der Trägheit des ganzen Systems liegen mag. Aber am Ende geht es dann im nächsten Poll wieder. Du könntest testhalber entweder das item überspringen, indem du es aus der plugin.yaml einfach mal entfernst. Und im 2. Schritt würde ich die try/exception ab Zeile 119 direkt im Lesebereich einfügen, dann sollten nämlich weitere Register dennoch gelesen werden. Also bei Zeile 132, was dann komplett so aussehen sollte, aber nicht getestet ist:

          Code:
              async def inverter_read(self, hold_connection=False):
                  client = await self.connect()
                  if client is not None:
                      for item in self._read_item_dictionary:
                          if not self.alive:
                              break
                          # at first write buffer, if neccessary
                          await self.write_buffer(True)
                          # check for cycle
                          cycle = self._read_item_dictionary[item].cycle
                          equipment = self._read_item_dictionary[item].equipment
                          initialized = self._read_item_dictionary[item].initialized
                          if not initialized or cycle == ITEM_CYCLE_DEFAULT or cycle != ITEM_CYCLE_STARTUP or cycle < item.property.last_update_age:
                              if equipment is None or equipment.status:
                                  # get register and set item
                                  try:
                                      result = await client.get(getattr(rn, self._read_item_dictionary[item].register), self._read_item_dictionary[item].slave)
                                      item(result.value, self.get_shortname())
                                      self._read_item_dictionary[item].initialized = True
                                  except Exception as e:
                                      self.logger.error(f"inverter_read: Error reading register '{self._read_item_dictionary[item].register}' from {self._host}:{self._port}, slave_id {self._read_item_dictionary[item].slave}: {e}")
                              else:
                                  self.logger.debug(f"Equipment check skipped item '{item.property.path}'")
                      if not hold_connection:
                          await self.disconnect(client)
                  else:
                      self.logger.error("inverter_read: Client not connected")​
          Was noch wichtig ist, dass die cycle-time nicht zu hoch eingestellt ist, sonst geht das wirklich nicht. Voreinstellung sind 600, also 10 Minuten. Nicht oft veränderliche Register werden, in der plugin.yaml konfiguriert, sogar nur alle 24 h abgerufen.
          Zuletzt geändert von Cannon; 31.10.2024, 15:55.

          Kommentar


            #20
            Hm, also mit der alten Lib kann keine Verbindung hergestellt werden, mit der neuesten schon. Aber alles nach "Model" bzw. "Seriennummer" führt zum gleichen Problem. Das try/except sorgt nu zwar dafür, dass alles gelesen wird, aber irgendwas passt nicht. Vermutlich die Slave-ID, weil die ID 0 wohl nur die Emma ist und nicht der Wechselrichter..
            Allerdings habe ich ein Problem mit dem Webportal. Du schreibst... Im Web-Portal auf den Wechselrichter gehen, dann auf Konfiguration
            Hm... wir sprechen hier von https://uni003eu5.fusionsolar.huawei.com/uniportal/ oder?
            Ich sehe da die Anlage, wenn ich da drauf gehe, kann ich auf Gerätemanagement gehen. Dort wäre dann der Inverter gelistet, wenn ich da drauf gehe bekomme ich drei Menüpunkte "Weitere Information", "Alarme", "Historische Information". Das war's, nix mit Konfigurieren..?

            Kommentar


              #21
              Zitat von Onkelandy Beitrag anzeigen
              Allerdings habe ich ein Problem mit dem Webportal. Du schreibst... Im Web-Portal auf den Wechselrichter gehen, dann auf Konfiguration
              Hm... wir sprechen hier von https://uni003eu5.fusionsolar.huawei.com/uniportal/ oder?
              Wenn die ID 0 übrigens Emma ist. Was steht den in den Items drin, die gelesen werden können?​

              Ja. Ich habe gerade noch mal geschaut. Das geht anscheinend nur, wenn man mit einem Installateur-Account drin ist. Da müsstest du mal deinen Installateur fragen.

              sun2000.png
              Angehängte Dateien
              Zuletzt geändert von Cannon; 01.11.2024, 19:31.

              Kommentar


                #22
                ...oder den Wechselrichter übernehmen

                Kommentar


                  #23
                  Zitat von henfri Beitrag anzeigen
                  ...oder den Wechselrichter übernehmen


                  Ich glaube, dass ist nicht so einfach, wenn die schon bei einem Installateur drin ist. Der muss dir die Rechte geben oder eben die Anlage wieder freigeben. Ob das möglicherweise mit der EMMA anders ist, weiß ich nicht, aber mit dem Dongle, war das problematisch.

                  Kommentar


                    #24
                    Mit Emma kenne ich mich nicht aus.
                    Ohne ist es aber einfach/vorgesehen, das zu tun.
                    Wie das geht findet man leicht (PV Forum)

                    Kommentar


                      #25
                      Hm, habs mir nochmals angeguckt.. ich bin mir eigentlich ziemlich sicher, dass ich alles über die EMMA machen kann/muss/soll. Wozu gäbe es sonst in der Doku für das Gerät die Liste mit allen Registern? Ich frag mal beim Solar-Installer nach, ob er was zur Slave ID und generell weiß, mal sehen.

                      Kommentar


                        #26
                        Vielleicht könnt ihr hier abgucken
                        https://github.com/wlcrs/huawei_sola...ent-2266771661

                        Kommentar


                          #27
                          So, ich hab jetzt mal den Sourcecode durchwühlt, etc. und bin drauf gekommen, dass man schlichtweg andere Register nutzen muss für die EMMA. Daher hab ich mal ein Struct angelegt und das scheint soweit zu klappen. Muss es noch optimieren (mit write-Funktion, wo es passt, etc.), dann stelle ich es gerne zur Verfügung. Würde es auch noch strukturieren mit Unter-Structs, sonst ist bisschen unübersichtlich.

                          Frage.. Echtzeitdaten bekommt man da keine..? Also Netzeinspeisung scheint in Echtzeit zu klappen, aber aktuellen Ertrag oder Verbrauch kann ich nicht wirklich finden..? Für Inverter zumindest ein stündlicher, bei der Emma leider nicht. Aber consumption gibts wohl nur täglich..? Ist das bei der API anders? Ich weiß, dass dort die Abfragen leider auch ziemlich limitiert sind (x pro Zeitraum).
                          Zuletzt geändert von Onkelandy; 02.11.2024, 15:16. Grund: Tests erfolgreich

                          Kommentar


                            #28
                            Zitat von Onkelandy Beitrag anzeigen
                            So, ich hab jetzt mal den Sourcecode durchwühlt, etc. und bin drauf gekommen, dass man schlichtweg andere Register nutzen muss für die EMMA.
                            Gut zu Wissen. Sind denn da dann alle Register anders? Die werden doch auf Wechsel-Richterebene geholt. Deshalb würde mich das wundern, dass die Register da völlig anders sind. Was sicherlich anders ist, dass die Register des Meter durch die EMMA ersetzt werden müssen. Ich vermute mal auch, dass die Struktur sich dadurch ändert. Vielleicht könntest du die plugin.yaml so umformen, dass das dann für die EMMA passt. Auf oberster Ebene wäre dann wohl die EMMA und darunter die Wechselrichter und nicht umgekehrt, so wie es jetzt ist. Aber das ist nur eine Vermutung.

                            Zitat von Onkelandy Beitrag anzeigen
                            Würde es auch noch strukturieren mit Unter-Structs, sonst ist bisschen unübersichtlich.
                            Gern. Ich kann dann ggf. auch testen, ob es dann noch ohne EMMA geht.

                            Zitat von Onkelandy Beitrag anzeigen
                            Echtzeitdaten bekommt man da keine..?
                            Bisher gab es die Echtzeitdaten bei HUAWEI, wie bei den meisten Herstellern auch gar nicht. Neu ist, dass man inzwischen im Interface Echtzeitdaten abrufen kann. Das scheint aber auch nur begrenzt zu funktionieren. Mache ich das nämlich auf 2 Geräten geht es bei mir nicht mehr. Deshalb würde ich mich darauf nicht verlassen und das gar nicht forcieren wollen. Im Prinzip reichen ja alle 5 Minuten, so wie ich das eingestellt habe auch. Es sind auch echt viele Register. Deshalb habe ich die, die nicht relevant sind und sich sowieso nicht ändern auch auf 24 h eingestellt.

                            Zitat von Onkelandy Beitrag anzeigen
                            Aber consumption gibts wohl nur täglich..? Ist das bei der API anders?
                            Meinst du mit consumption active_power? Wie heißt das Register genau, was du meinst. Die API liest ja nur, die limitiert ja die Sachen nicht. Der limitierende Faktor ist der WR.

                            Kommentar


                              #29
                              Ja, so richtig Echtzeit muss das nicht sein, alle x Minuten ist okay. Aber mir ist nicht ganz klar, wie die Register dazu heißen sollen..
                              Also aktueller Verbrauch, aktuelle Produktion und aktuelle Einspeisung. Wie heißen die denn?

                              Kommentar


                                #30
                                Zitat von Onkelandy Beitrag anzeigen
                                Aber mir ist nicht ganz klar, wie die Register dazu heißen sollen..
                                Also aktueller Verbrauch, aktuelle Produktion und aktuelle Einspeisung. Wie heißen die denn?
                                Die Registerdefinition findest du zum einen unter dem Stichwort HUAWEI SUN2000 MODBUS Interface Definitions. Da muss man mal schauen, ob es inzwischen eine neuere gibt, die auch EMMA unterstützt. Sonst im Quellcode, und das ist der leichtere Weg, der huawei-solar lib in register_names.py und registers.py. Bei letzteren hast du auch gleich die Datentypen. Daraus habe ich ja die yaml auch aufgebaut.

                                Den aktuellen Verbrauch findest du im EMMA-Register, genauso auch die aktuelle Einspeisung. Die aktuelle Produktion anscheinend unter PV_OUTPUT_POWER auch. Die kommt aber auch aus dem WR.

                                Vielleicht kannst du die ganzen Register aus der lib noch zufügen und dann schauen. Dann hast du ja alle Werte drin. Ist am Ende nur Copy & Paste.

                                Nachdem ich mich jetzt gedanklich da wieder reingefummelt habe, sollte das erst mal recht einfach gehen. Es sind ja in der plugin.yaml schon mehrere structs, die man sich nach belieben raus ziehen kann. Es fehlt halt nur die EMMA. Und die nicht verwendeten Geräte müssen halt einfach nicht eingebunden werden.



                                Kommentar

                                Lädt...
                                X