Automatische KomponentenID in AbstractOpenemsComponent

Wird in der Konfigurationsdatei einer beliebigen OpenEMS-Komponente keine Komponenten-ID angegeben, so wird in AbstractOpenemsComponent eine automatisch generierte Komponenten-ID erzeugt:

Das erscheint mir auf den ersten Blick kontraproduktiv. Ich hätte erwartet das die Komponente während der Aktivierung eine Exception schmeißt und mich über die fehlerhafte Konfiguration informiert. Ich würde diesen Mechanismus gerne deaktivieren, vertstehe den Hintergrund aber noch nicht. Gibt es einen Grund warum die Komponenten-ID automatisch erzeugt wird?

Hintergrund meiner Frage:
Dieser Mechanismus hat bei uns dazu geführt, dass eine Edge gute 10.000 Komponenten-IDs erzeugt hat. Alle Daten wurden im Backend in die Influx-DB geschrieben und nun sehen wir uns mit einer Influx-Datenbank konfrontiert, welche gut 80.000 fields hat und nicht mehr wartbar ist. Das Problem gehört aber in ein anderes Forum ;-).

Vielen Dank,
Christian

Hallo Christian,

ja, du hast vollkommen recht, hier wäre eine Exception sinnvoller. Somit ist weiterhin sichergestellt, dass eine Komponente garantiert eine id hat.

Ich habe dafür einen Pull-Request vorbereitet:

Kannst du den PR bitte auf Github reviewen bzw. gerne auch hier Bescheid geben, ob die Lösung ok ist. Dann würde ich das mergen.

Gruß,
Stefan

Hallo Stefan,
Code Review ist durch. Die Änderung sieht gut aus. Habe dabei gleich noch was über JUnit Tests gelernt. Ich kannte die Annotation @Test(expected = IllegalArgumentException.class) noch gar nicht. Habe Exceptions bisher immer im Test abgefangen und behandelt…
:roll_eyes:

Danke! VG Christian

1 Like

Super, vielen Dank. Ich habe den PR eben gemergt.

1 Like