Guten Morgen OpenEMS Team
Ich arbeite seit zwei Wochen mit OpenEMS Edge und UI und habe eigene Edge-Module und UI-Widgets implementiert.
Meine Informationen habe ich aus diversen Forenbeiträge und Codedurchwühlen gewonnen.
Nun würde ich gerne wissen, ob man durch eine Mitgliedschaft im OpenEMS e.V. weitere Dokumentationen bekommen kann und was die Voraussetzungen dafür sind.
Ich implementiere für eine mittelständische Firma die Steuerung für einen Energiecontainer. Wir sind also ein kommerzieller Nutzer von OpenEMS.
Außerdem habe ich eine grundsätzliche Frage zur Erweiterung von OpenEMS UI.
Nach meinem jetzigen Kenntnisstand implementiert man eigene Ansichten für Edge-Module, indem man in Widgets.WidgetFactory neue Bezeichner einfügt, die dann z.B. in LiveComponent.widgets.list[] verfügbar sind um eigene Angular-Klassen zu instanzieren.
Mir ist aber nicht ganz klar, wie UI die Beziehung zwischen Edge-Modulen und Angular-Klassen herstellt. Ein Beispiel ist glaube ich am anschaulichsten:
Edge:
@Component ( name = “Battery.Alice”; …)
UI:
// widget.ts:
Widgets.WidgetFactory {
…
‘Battery.Alice’,
}
// live.module.ts:
#import BatteryAlice from {‘./battery/battery.alice.ts’};
…
@NgModule({
…
declarations:[
BatteryAlice,
]})
// live.component.html
// Einbinden des neuen Widgets in die Live Ansicht:<ng-container *ngFor = “let widgets of widgets.list [ngSwitch] = “widget.name”>
<ion-col *ngSwitchCase=” ‘Battery.Allice’ ">
<BatteryAlice> [componentId] = “widget.componentId” </BatteryAlice>
</ion-col>
</ng-container>
// battery.alice.ts
// Implementierung der Angular Klasse BatteryAlice:@Component({
selector: BatteryAlice.SELECTOR,
templateUrl: ‘./Battery.Alice.html’,
})export class BatteryAlice extends StorageComponent {
private static readonly SELECTOR = ‘BatteryAlice’;
…
}
Dieser Code funktioniert bei mir, aber entspricht das so den Vorstellungen von Euch als Entwicklern?
Was genau muss im Code oben identisch heißen?
‘Battery.Alice’ == [EDGE]Component.name ==? [UI]BatteryAlice.SELECTOR == ‘Battery.Alice’
und/oder
‘Battery.Alice.ts’ ==? [EDGE]Component.name + ‘.ts’
Vielen Dank im Voraus!