Android statt Linux?

Hallo in die Runde!

Wie realistisch/aufwändig ist es, die Teile von openEMS, die derzeit ein Linux (Raspberry Pi etc) brauchen, auf Android zu portieren?

Praktisch jeder hat ein altes Android Handy herumliegen, das nicht mehr verwendet wird. Das könnte einfach dauerhaft im lokalen WLAN hängen und per ModBus TCP oder eines der anderen APIs mit den lokalen Geräten kommunizieren. Vorteile wären: Handys brauchen sehr wenig Strom und für viele Leute ist eine Android App installieren deutlich niederschwelliger als ein Linuxgerät aufzusetzen.

Beste Grüße, Harald

OpenEMS selbst basiert komplett auf Java 21 (bald 25). Ich glaube, unter Android ist es nicht direkt lauffähig, da Android eine eigene Java Runtime mit einer alten Java Version nutzt. Evtl. gibt es Möglichkeiten, eine ARM Variante von Java 21 auf Android zu starten und damit dann OpenEMS zu starten, aber damit habe ich keine direkte Erfahrungen.

Ich würde den Sinn dahinter aber etwas in Frage stellen. Eine OpenEMS Installation benötigt in vielen Fällen einen RS485 Anschluss für die Kommunikation zum Wechselrichter. Dafür gibt es zwar USB-Adapter, aber diese werden kaum unter Android funktionieren.

Ebenso ist ein altes Smartphone nicht zuverlässig. Ein Ausfall von OpenEMS wäre damit sicher keine Seltenheit und könnte für den Wechselrichter, der gerade gesteuer wird, aber katastrophal sein.

Danke für die Antwort: Das ist dann also de facto ein “Nein”.

Der Sinn bestünde darin, dass viele Leute “nur” einen Hybridwechselrichter mit Batterie haben und die gerne intelligenter als “am Morgen gleich mal Vollladen” betreiben würden. Wäre mit Modbus TCP in den meisten Fällen ohne RS485 umsetzbar. (Wer eine RS485 Verkabelung selbst hin bekommt, wird auch mit Linux aufsetzen natürlich kein Problem haben.)

Dass (alte) Android Geräte unzuverlässig wären, ist mir bisher noch nicht aufgefallen.

Das Problem ist nicht die Zuverlässigkeit des Smartphones selbst, sondern die Android Energiesparmechanismen (Hintergrundaktivitätsbegrenzungen, Wlan Idle, Energiesparmodus). Je nach Hersteller ist es garnicht möglich, die Hintergrundaktivitäten einer App ohne Begrenzungen zu erlauben.

Es hält dich aber keiner davon ab, es einfach mal zu versuchen, OpenEMS auf Android zu starten. Der Code ist Open Source, basiert auf Java und ist auf ARM Geräten lauffähig. Starten sollte man es mit der korrekten Runtime und als App verpackt also können. Evtl. mal die Minecraft Server Android Apps anschauen.

Vielleicht ist auch ein Start in einem Terminal Emulator möglich mit einer Portable ARM Version von Java.

Danke für die Tipps! Manche Java Runtimes scheinen klein genug zu sein, dass man das auch auf einem älteren Gerät zum Laufe bekommen könnte. Ich werde bei Gelegenheit testen.