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é
Ankündigung
Einklappen
Keine Ankündigung bisher.
Anbindung Wechselrichter Huawei SUN2000 (SUN2000-3-10KTL-M1)
Einklappen
X
-
Mein Plugin läuft bei mir schon mehrere Monate: https://knx-user-forum.de/forum/supp...un-2000-pluginZitat von Onkelandy Beitrag anzeigenHeho gibt es da Neuigkeiten?
Ging bei mir irgendwie nicht.Zitat von Onkelandy Beitrag anzeigenMan könnte inzwischen ja auch über die solarfusion api gehen
Nee das kann leider nur einen einzigen WR anbinden und dann auch nicht mit Dongle, glaube ich. Also irgendwie hatte mir das nicht zugesagt.Zitat von Onkelandy Beitrag anzeigenDas knx Gerät hat niemand im Einsatz?
- Likes 1
Einen Kommentar schreiben:
-
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:
-
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:
-
Ich komme leider nicht weiter, ohne das Problem zu lösen. Hat jemand einen Tipp? Das steht im Log:
Das bezieht sich schon auf den Code in der lib, welches die Exception auslöst.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'
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.Code:_reconnect_task: asyncio.Task | None = None
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:
-
Nachvollziehbar. Ich habe doch noch in den Package der lib was gefunden. Zum testen. Damit geht es wahrscheinlich auch in der Logik:
Wahrscheinlich deshalb, weil ich es noch nicht testen kann. Es kommt mit der neuen lib immer wieder ein andere Fehler: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"))
Der verweist auf die lib: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'
In der alten ist das aber genauso drin und geht. Dennoch ist mir nicht klar, was die Anweisung überhaupt macht.Code:_reconnect_task: asyncio.Task | None = None
- Likes 1
Einen Kommentar schreiben:
-
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:
-
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:
Wie kann ich das im obigen Beispiel fixen?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'.
Einen Kommentar schreiben:
-
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:
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.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())
- Likes 1
Einen Kommentar schreiben:
-
Ja schon zu lange her.,... ;-)Zitat von henfri Beitrag anzeigenSiehe Post 5
- Likes 1
Einen Kommentar schreiben:
-
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:
-
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:
-
Zitat von straight87 Beitrag anzeigengibt 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:
-
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:


Einen Kommentar schreiben: