Hardware Abstraction Layer für OpenEMS (Pi4J, RevPi, etc.)

Servus zusammen,

wir möchten gerne das Konzept eines “Hardware Abstraction Layers (HAL)” für OpenEMS einführen.
Dieser Post soll eine Anregung zur Diskussion sein, also Eure Vorschläge oder Fragen sind gerne willkommen! :slight_smile:

Im Forum habe ich dazu bereits verschiedene Ideen und Ansätze gefunden, u. a. auch von @coolfire, @p.wimmer und @mishbieg.

Unten verlinke ich nochmal die verschiedene Beiträge zum Thema.

Das Ziel der Vereinheitlichung ist, eine API für Hardware zu schaffen. Dies soll unabhängig vom verwendeten Hardware sein, also mit RaspberryPi, RevPi oder auch mit anderen SoCs funktionieren.

Anbei ein grober Plan zur Implementierung:

  1. Gerätespezifische APIs sollen in eigenen Modulen oder als Abhängigkeit eingebunden werden (gelbe Boxen).
  2. Zugriff auf diese soll durch eine einheitliche Oberfläche erfolgen (grüne Boxen)
  3. Spezifische Treiber können dann diese nutzen und Protokolle bzw. konkrete Geräte ansteuern. Bei Bedarf kann auf die gerätespezifische API zugegriffen werden.
  4. Diese sollen durch OpenEMS angesteuert werden können.

Aus den Beiträgen im Forum konnte ich feststellen, dass der Bedarf nach dem RaspberryPi am größten ist.
Aus diesem Grund habe ich eine Pull-Request bei OpenEMS erstellt, die diese Bibliothek einbindet und somit den ersten Schritt auf dem Weg geht.

Viele Grüße aus Zwiesel
Lorant


Links zu Pi4J und RevPi:

2 Likes

Hi,
ich habe leider nicht viel Zeit gerade, weil ich Haus baue und unser Projekt erst mal auf Eis liegt. An sich finde ich die Idee super. Die Commits zum HAL habe ich nur grob überflogen. Schaut gut aus.

Ich habe mich beim RevPi mit Tests etwas schwergetan. Das möglichst so zu entkoppeln, dass man gute Tests schreiben kann, ist nicht ganz trivial. Irgendwie muss man die Hardware dann mocken.

Das ist, so wie es ausschaut, zumindest teilweise gelöst. Ich vermute es liegt auch ein wenig dran, dass die APIs von OpenEMS nicht in Richtung große Testabdeckung entwickelt wurden. Die sind da manchmal etwas restriktiv, wenn es um das Thema mocken und testen geht. Hab mich da mit Java-Grundkenntnissen eher schwergetan. Das ist sicher auch Problem, dass irgendwann grundsätzlich eine Lösung braucht. Bei vielen Commits sind nur grundlegende EMS-Component-Startup-Tests implementiert.

Das zweite Problem mit dem ich konfrontiert war, ist gutes Error-Handling und Logging. Man muss das ja von ganz unten bis nach oben weitergeben und möchte nicht lange in einer Fehlermeldung nach der richtigen Zeile suchen. Das stört mich allgemein ein bissel an Java. Die Fehlermeldungen geben sehr viel Unnützes aus. Vielleicht weil mir da auch als Java-Anfänger noch die Kenntnisse fehlen. Weiß nicht wie gut da Pi4J das Problem löst. Hab mir das Pull-Request in Bezug auf das Error Handling noch nicht angeschaut. Wollte aber trotzdem noch einbringen, dass mir das wichtig wäre für später.

Danke auf jeden Fall schon mal für die Arbeit die da drin steckt. Das wird sicher sehr nützlich :).

1 Like

Hi Richard,

I would be glad if you do not use this Forum for Advertisement only. Are you already Member in the OpenEMS Association? :slight_smile:

Greetings!

Hi Sn0w3y,

OK, I’ll remove the ads next time.Thanks.

How can I become a member of OpenEMS?

Hi,

this page is the right one for you.

https://openems.io/association/

Greetings!

1 Like

Hello Richard,

if you want to Advertise your Product i guess it is okay, but you also do not need to open 3 different Threads about it. Please keep them closed as we are not a Ads-Community/Forum imho.

Have you already signed up as a Member? :slight_smile:

Hi,Understood.

I have two questions: I want to share our experience with using EcoNode and also provide a platform for those who need EcoNode. How should I go about this? As for the membership registration, I’ve reviewed it but haven’t handled it yet. We’ll arrange a time to take care of it as soon as possible.

  1. Then just do it, where you can advertise your Product. This is a Forum for Development on OpenEMS and not for Advertising things. FENECON (Founder of OpenEMS) also does not make Ads on here. I guess it is okay if you post an Info, that your Product exists, but to open 3 Threads is more than just “informing”.

  2. Okay, we all would appreciate if you make it to an active Member :wink:

OpenEMS is an excellent energy management system, and I greatly appreciate the contributions made by the OpenEMS team.

I won’t use advertising anymore. Instead, I’ll share our project, the challenges we encounter during development, and our experiences using it.

Additionally, we are different from FENECON; we provide an embedded platform for developers, while FENECON is used to manage their energy storage systems. I would welcome FENECON to take notice of us—honestly, EcoNode is a hardware platform with many advantages.