Unabhängige WebUI entwicklen
Verfasst: 19.11.2021, 08:49
Hallo
Wäre es nicht besser der Firmware eine ordentliche Schnittstelle zu verpassen und das Web von der Firmware zu trennen. Das würde nicht nur die Performance erhöhen sondern auch einen extrem großen und neuen Funktionsumfang ermöglichen.
Ich habe mir in den letzten Wochen viele Gedanken darüber gemacht und bin zu folgendem Ansatz gekommen.
Die Firmware wird von der normalen Webdarstellung befreit und erhält ein minimales Menü um Einstellungen zur Erreichbarkeit und Zugriff vorzunehmen.
(https://ccuip:port/admin)
Punkte wie
- Netzwerkeinstellungen
- Admin Passwort
- API Keys
- Modus (Zentrale / Gateway)
Ich würde als Schnittstelle eine Json API vorschlagen. Die ist leichter, schneller und einfach zu cachen bei geringem Speicherbedarf.
Danach wird eine Webapp erstellt, welche unabhängig vom Ort der Installation lediglich über die Schnittstelle der Firmware kommuniziert.
Mein persönlicher Ansatz wäre ein Webserver mit Php. Damit wäre es unabhängig vom Client / Endgerät möglich auch Events/Trigger zu abonnieren und diese zu verarbeiten und an die Clients (z.B. mit WebSocket) weiterzuleiten.
Der Vorteil durch die Trennung ist ganz offensichtlich, dass die Firmware nur noch genau das macht wozu sie da ist und keine Ressourcen für Addons, API (clients), Web oder Sonstigem verwenden muss.
Hingegen kann ich die Webapp beliebig skalieren und unabhängig von CCU auf einem Gerät meiner Wahl / VM betreiben.
Es wäre sogar problemlos möglich mehrere Instanzen des Webservers zu betreiben. Auch eine Verlagerung ins Internet (Webspace, Cloud, Server, VM) sind problemlos möglich, durch die Verwendung des API-Keys und ein paar wirklich einfachen Einstellungen für Access und Firewall. Damit ist es dann auch noch deutlich sicherer als die aktuellen Lösungen.
Im Zuge der Sanierung kann man dann gleich noch eine Brute Force erkennen integrieren.
Ein weiterer und sehr sehr wichtiger Aspekt sind die Addons. Viele Erweiterungen müssen nicht auf der Firmware laufen / installiert werden, weil sie eigentlich die Grundfunktionen der Firmware weder erweitern noch verändern. Wenn man diese Addons mittels php/html/JS umsetzt, wird nicht nur die Hardware der Firmware entlastet, sondern es bieten sich auch ganz neue Möglichkeiten.
Verschiebt man z.B. die Cache-Ebene auf den Webserver respektive auf Php, wird die Anzahl der API-Requests deutlich reduziert und die Geschwindigkeit aller Komponenten erheblich erhöht.
Zudem kann ich durch die Trennung von Web und Firmware, bei vielen Addons, Endgeräten, HM Geräten, etc, optimaler skalieren OHNE meine alten Geräte tauschen zu müssen.
Ich könnte jetzt noch unendlich weitere Vorteile wie getrennte Entwicklung, mehr Vielfalt und Addons, da Php weiter verbreitet ist, aufzeigen und sehe nur einen einzigen Nachteil, der aber eigentlich auch kein wirklicher Nachteil ist.
Aktuell hält man sich noch sehr nahe an der original Firmware auf. Das hat den Vorteil, dass bei einer neuen EQ3 Firmware Änderungen leichter übernommen werden können. In der Realität sieht es aber doch so aus, dass der Code / die Entwicklung in die andere Richtung fließt.
Daher empfinde ich es nicht als Nachteil sich weiter vom Original zu entfernen und einen Schritt aus der Bastler-Ecke raus zu gehen.
Dazu braucht es aber
- mehr Sicherheit (und echte Sicherheit)
- eine ordentliche API mit Dokumentation
- bessere und einfachere Skalierbarkeit
Freue mich auf eure Meinungen
MaxDau
Wäre es nicht besser der Firmware eine ordentliche Schnittstelle zu verpassen und das Web von der Firmware zu trennen. Das würde nicht nur die Performance erhöhen sondern auch einen extrem großen und neuen Funktionsumfang ermöglichen.
Ich habe mir in den letzten Wochen viele Gedanken darüber gemacht und bin zu folgendem Ansatz gekommen.
Die Firmware wird von der normalen Webdarstellung befreit und erhält ein minimales Menü um Einstellungen zur Erreichbarkeit und Zugriff vorzunehmen.
(https://ccuip:port/admin)
Punkte wie
- Netzwerkeinstellungen
- Admin Passwort
- API Keys
- Modus (Zentrale / Gateway)
Ich würde als Schnittstelle eine Json API vorschlagen. Die ist leichter, schneller und einfach zu cachen bei geringem Speicherbedarf.
Danach wird eine Webapp erstellt, welche unabhängig vom Ort der Installation lediglich über die Schnittstelle der Firmware kommuniziert.
Mein persönlicher Ansatz wäre ein Webserver mit Php. Damit wäre es unabhängig vom Client / Endgerät möglich auch Events/Trigger zu abonnieren und diese zu verarbeiten und an die Clients (z.B. mit WebSocket) weiterzuleiten.
Der Vorteil durch die Trennung ist ganz offensichtlich, dass die Firmware nur noch genau das macht wozu sie da ist und keine Ressourcen für Addons, API (clients), Web oder Sonstigem verwenden muss.
Hingegen kann ich die Webapp beliebig skalieren und unabhängig von CCU auf einem Gerät meiner Wahl / VM betreiben.
Es wäre sogar problemlos möglich mehrere Instanzen des Webservers zu betreiben. Auch eine Verlagerung ins Internet (Webspace, Cloud, Server, VM) sind problemlos möglich, durch die Verwendung des API-Keys und ein paar wirklich einfachen Einstellungen für Access und Firewall. Damit ist es dann auch noch deutlich sicherer als die aktuellen Lösungen.
Im Zuge der Sanierung kann man dann gleich noch eine Brute Force erkennen integrieren.
Ein weiterer und sehr sehr wichtiger Aspekt sind die Addons. Viele Erweiterungen müssen nicht auf der Firmware laufen / installiert werden, weil sie eigentlich die Grundfunktionen der Firmware weder erweitern noch verändern. Wenn man diese Addons mittels php/html/JS umsetzt, wird nicht nur die Hardware der Firmware entlastet, sondern es bieten sich auch ganz neue Möglichkeiten.
Verschiebt man z.B. die Cache-Ebene auf den Webserver respektive auf Php, wird die Anzahl der API-Requests deutlich reduziert und die Geschwindigkeit aller Komponenten erheblich erhöht.
Zudem kann ich durch die Trennung von Web und Firmware, bei vielen Addons, Endgeräten, HM Geräten, etc, optimaler skalieren OHNE meine alten Geräte tauschen zu müssen.
Ich könnte jetzt noch unendlich weitere Vorteile wie getrennte Entwicklung, mehr Vielfalt und Addons, da Php weiter verbreitet ist, aufzeigen und sehe nur einen einzigen Nachteil, der aber eigentlich auch kein wirklicher Nachteil ist.
Aktuell hält man sich noch sehr nahe an der original Firmware auf. Das hat den Vorteil, dass bei einer neuen EQ3 Firmware Änderungen leichter übernommen werden können. In der Realität sieht es aber doch so aus, dass der Code / die Entwicklung in die andere Richtung fließt.
Daher empfinde ich es nicht als Nachteil sich weiter vom Original zu entfernen und einen Schritt aus der Bastler-Ecke raus zu gehen.
Dazu braucht es aber
- mehr Sicherheit (und echte Sicherheit)
- eine ordentliche API mit Dokumentation
- bessere und einfachere Skalierbarkeit
Freue mich auf eure Meinungen
MaxDau