Ankündigung

Einklappen
Keine Ankündigung bisher.

Anbindung Wechselrichter Huawei SUN2000 (SUN2000-3-10KTL-M1)

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

  • Elvis21z
    antwortet
    Hallo,

    Ich würde gerne über den Dongle per Modbus den Huawei mit dem Gira X1 auslesen. Hat da jemand mit Erfahrung?

    Ich verwende den Modbus Baustein von Gira. Bekomme aber immer Fehler 11.

    Vielleicht hat hier jemand schon Erfahrung damit.

    Grüße
    René

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von Onkelandy Beitrag anzeigen
    Heho gibt es da Neuigkeiten?
    Mein Plugin läuft bei mir schon mehrere Monate: https://knx-user-forum.de/forum/supp...un-2000-plugin

    Zitat von Onkelandy Beitrag anzeigen
    Man könnte inzwischen ja auch über die solarfusion api gehen
    Ging bei mir irgendwie nicht.

    Zitat von Onkelandy Beitrag anzeigen
    Das knx Gerät hat niemand im Einsatz?
    Nee das kann leider nur einen einzigen WR anbinden und dann auch nicht mit Dongle, glaube ich. Also irgendwie hatte mir das nicht zugesagt.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    Heho gibt es da Neuigkeiten?

    Man könnte inzwischen ja auch über die solarfusion api gehen, siehe
    https://pypi.org/project/fusion-solar-py/
    und https://forum.huawei.com/enterprise/...13868771979264

    statt smartmeter und dongle kommt jetzt ja die EMMA, das wird aber vermutlich nicht viel ändern. Das knx Gerät hat niemand im Einsatz?

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Ich glaube ich habe das Problem gefunden. Es ist Python 3.10 erforderlich. SmartHomeNG unterstützt aktuell aber nur Python 3.9. Damit ist das Plugind erzeit unmöglich oder?

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Ich komme leider nicht weiter, ohne das Problem zu lösen. Hat jemand einen Tipp? Das steht im Log:

    Code:
    2023-09-05  09:29:07 ERROR    lib.plugin          Plugin 'huawei_sun2000' exception during import of __init__.py: unsupported operand type(s) for |: 'type' and 'NoneType'
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/plugin.py", line 571, in __init__
        exec("import {0}".format(classpath))
      File "<string>", line 1, in <module>
      File "/usr/local/smarthome/plugins/huawei_sun2000/__init__.py", line 33, in <module>
        from huawei_solar import AsyncHuaweiSolar, register_names as rn
      File "/home/smarthome/.local/lib/python3.9/site-packages/huawei_solar/__init__.py", line 6, in <module>
        from .bridge import HuaweiSolarBridge  # noqa
      File "/home/smarthome/.local/lib/python3.9/site-packages/huawei_solar/bridge.py", line 16, in <module>
        from .huawei_solar import DEFAULT_BAUDRATE, DEFAULT_SLAVE, DEFAULT_TCP_PORT, AsyncHuaweiSolar, Result
      File "/home/smarthome/.local/lib/python3.9/site-packages/huawei_solar/huawei_solar.py", line 75, in <module>
        class AsyncHuaweiSolar:
      File "/home/smarthome/.local/lib/python3.9/site-packages/huawei_solar/huawei_solar.py", line 78, in AsyncHuaweiSolar
        _reconnect_task: asyncio.Task | None = None
    TypeError: unsupported operand type(s) for |: 'type' and 'NoneType'​
    Das bezieht sich schon auf den Code in der lib, welches die Exception auslöst.

    Code:
     _reconnect_task: asyncio.Task | None = None
    Ich kenn mich ein wenig mit Python aus, aber eber nicht genug, um diese Anweisung überhaupt zu verstehen. Das mit dem Doppelpunkt ist mir unklar und mit dem None = None genauso.

    Andererseits stelkt sich die Frage, wieso die lib mit SmartHomeNG nicht funktioniert, woanders sollte sie ja laufen. Vor allem, weil die ältere Version der lib an der Stelle läuft. Der Fehler wird wahrscheinlich woanders sein oder?
    Zuletzt geändert von Cannon; 05.09.2023, 08:48.

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Nachvollziehbar. Ich habe doch noch in den Package der lib was gefunden. Zum testen. Damit geht es wahrscheinlich auch in der Logik:

    Code:
    loop = asyncio.new_event_loop()
    async def test_single(name):
        hs = await AsyncHuaweiSolar.create("192.168.1.7", 502, slave_id)
        logger.info(await hs.get(name))
        await hs.stop()
    
    loop.run_until_complete(test_single("model_name"))​
    Wahrscheinlich deshalb, weil ich es noch nicht testen kann. Es kommt mit der neuen lib immer wieder ein andere Fehler:

    Code:
    2023-07-23  17:14:01 ERROR    logics.test         In der Logik ist ein Fehler aufgetreten:
       Logik 'test', Datei '/home/smarthome/.local/lib/python3.9/site-packages/huawei_solar/huawei_solar.py', Zeile 78
       function AsyncHuaweiSolar(), Exception: unsupported operand type(s) for |: 'type' and 'NoneType'​
    Der verweist auf die lib:

    Code:
        _reconnect_task: asyncio.Task | None = None
    In der alten ist das aber genauso drin und geht. Dennoch ist mir nicht klar, was die Anweisung überhaupt macht.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Der Kontext in dem Logiken laufen, hört auf zu existieren wenn die Logik endet. Damit wird auch die in asyncio.run() implizit erzeugte eventloop beendet.

    Du könntest versuchen explizit eine eventloop erzeugen und diese im logic Objekt ablegen, damit sie die das Ende der Logik Ausführung überlebt.

    Alternativ könntest Du versuchen eine nie endende Logik zu erzeugen, damit der Kontext erhalten bleibt.

    Insgesamt ist die Nutzung von asyncio in einer Logik aus oben genannten Grünen problematisch (weshalb ich es auch noch nie probiert habe).

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Ich bin schon recht weit gekommen gewesen und konnte auch im kommenden Plugin zumindest schon mal die Daten des WR auslesen. Allerdings gab es immer wieder Verbindungsabbrüche, sodass ich die huawei-solar-lib mal aktualisiert habe. Nun bekomme ich aber einen merkwürdigen Fehler, den ich nicht wirklich lösen kann. Auch die Suche im Netz führte zwar zu Ergebnissen, aber dennoch nicht zur entscheidenden Lösung. Das heißt selbst die "simple" Logik geht jetzt nicht mehr:

    Code:
    2023-07-23  14:39:54 ERROR    logics.test         In der Logik ist ein Fehler aufgetreten:
       Logik 'test', Datei '/usr/lib/python3.9/asyncio/events.py', Zeile 642
       function get_event_loop(), Exception: There is no current event loop in thread 'logics.test'.​
    Wie kann ich das im obigen Beispiel fixen?

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Ich habs mal gestetet. Das funktioniert ganz gut soweit. Es wird allerdings etwas fummelig, wenn man mehrere WR hat und vor allem, wenn man dann noch die Batterie und den Smart Power Sensor auslesen will. Da muss man dann definieren, wo der genau dran hängt. Hier mal ein Beispiel:

    Code:
    from huawei_solar import AsyncHuaweiSolar, register_names as rn
    import asyncio
    
    async def test_huaweisolar():
        slave_id = 16
        client = await AsyncHuaweiSolar.create("192.168.1.7", 502, slave_id)
        result = await client.get(rn.NB_PV_STRINGS, slave_id)
        logger.info('Number of PV strings: {}'.format(result.value))
        results = await client.get_multiple([rn.LINE_VOLTAGE_A_B, rn.LINE_VOLTAGE_B_C, rn.LINE_VOLTAGE_C_A], slave_id)
        logger.info('A-B voltage: {}, B-C voltage:  {}, C-A voltage:  {}'.format(results[0].value, results[1].value, results[2].value))
        results = await client.get_multiple([rn.MODEL_NAME, rn.SERIAL_NUMBER, rn.MODEL_ID], slave_id)
        logger.info('Modell-Name: {}, Seriennummer: {}, Modell-ID: {}'.format(results[0].value, results[1].value, results[2].value))
        results = await client.get_multiple([rn.STORAGE_UNIT_1_STATE_OF_CAPACITY, rn.STORAGE_UNIT_1_BATTERY_TEMPERATURE], slave_id)
        logger.info('Batterie Kapazität: {}, Batterie Temperatur: {}'.format(results[0].value, results[1].value))
        results = await client.get_multiple([rn.ACTIVE_GRID_A_POWER, rn.ACTIVE_GRID_B_POWER, rn.ACTIVE_GRID_C_POWER], slave_id)
        logger.info('Meter Power A: {}, Meter Power B: {}, Meter Power C: {}'.format(results[0].value, results[1].value, results[2].value))
        await client.stop()
    
    asyncio.run(test_huaweisolar())
    IP-Adresse, Port und Slave-ID müsst ihr euch aus den EInstellungen im Wechselrichter raus suchen. Die Slave-ID ist unterschiedlich pro WR. Bei mir hängt der WR mit SmartDongle im Netzwerk. Der 2. WR ist nur per RS485 verbunden und hat kein Netzwerk, wird aber eben über die andere Slave-Id gefunden.

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von henfri Beitrag anzeigen
    Siehe Post 5
    Ja schon zu lange her.,... ;-)

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Siehe Post 5

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Hier habe ich gerade mal was gefunden. Das wäre auch eine Möglichkeit das zu implementieren. Offensichtlich auch nicht zu kompliziert.

    https://github.com/wlcrs/huawei-solar-lib

    Einen Kommentar schreiben:


  • fhartlieb
    antwortet
    Laut der Bedienungsanleitung wird über das GO 55 der Wert vom PowerMeter (wenn vorhanden) zur Verfügung gestellt. Dies in W und mit Einspeisung bzw. Bezug.

    Tatsächliche Erfahrungen habe ich zum Gateway habe ich leider nicht.

    Einen Kommentar schreiben:


  • Cannon
    antwortet
    Zitat von straight87 Beitrag anzeigen
    gibt es mittlerweile Erfahrungen zum Gateway von elausys oder auch eine andere Lösungen? Würde gerne PV-Überschuss auswerten aus den Gruppenobjekten um Aktoren zu steuern.

    Das Gateway von ELAUSYS kostet 189 €, wenn man ein Stück nimmt. Bei 2 sind das dann nur noch 175 € usw. Dazu noch 11 € Porto. Der Preis ist, wie ich finde sehr okay.

    Allerdings habe ich hier (Aufbau läuft gerade) 2 Wechselrichter. Das würde auch bedeuten, das sich auch 2 von den ELAUSYS-Dingern brauche, wie die sich am SmartDongle einbinden. Und dann habe ich noch immer keine Ahnung, ob ich Überschuss habe und müsste dann noch mal das Smart Meter auslesen.

    Was aber der einfachste Weg ist: Ein KNX Smart Meter noch einbauen. Und zumindest weißt du dann, ob du Überschuss hast oder nicht. Ich habe das von MDT verbaut. Mit SmartHomeNG errechne ich dann ob Überschuss da ist oder nicht. Der MDT kann das, zumindest nach meinem Verständnis, nicht direkt. Die Parameter sind auch etwas verwirrend.

    Einen Kommentar schreiben:


  • straight87
    antwortet
    Hallo,
    gibt es mittlerweile Erfahrungen zum Gateway von elausys oder auch eine andere Lösungen? Würde gerne PV-Überschuss auswerten aus den Gruppenobjekten um Aktoren zu steuern.
    Viele Grüße

    Einen Kommentar schreiben:

Lädt...
X