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.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Entwicklungsthread für das Huawei SUN 2000 Plugin
Einklappen
X
-
Zitat von Onkelandy Beitrag anzeigenSuper, 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
-
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.
Code:Zentral: Energie: Photovoltaik: SUN2000_EMMA: struct: huawei_sun2000.emma SUN2000_energy_sensor: struct: emma_built_in_energy_sensor
Also struct: emma_built_in_energy_sensor & struct: emma_external_meter.Zuletzt geändert von Cannon; 05.11.2024, 18:09.
Kommentar
-
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
-
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
-
Zitat von Onkelandy Beitrag anzeigenUnboundLocalError: local variable 'equipment' referenced before assignment
Was war denn dein fix? Also was hast du genau behoben?
Zitat von Onkelandy Beitrag anzeigenNov 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)
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
-
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
-
Zitat von Onkelandy Beitrag anzeigenDynamische Items kommen sicher irgendwann noch (Version 20..?), wenn es sonst funzt, würde ich es drin lassen.
Zitat von Onkelandy Beitrag anzeigenFrage 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.
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
-
Zitat von Onkelandy Beitrag anzeigenstruct für die wallbox
Kommentar
-
Zitat von Onkelandy Beitrag anzeigenKomm 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
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
Kommentar