Hauptmenü

Developer Guide

Begonnen von Syrex-o, 23 April 2020, 13:19:07

Vorheriges Thema - Nächstes Thema

Syrex-o

FhemNative Developer Guide:

Hallo zusammen,
Falls jemand Interesse hat eine eigene Komponente für FhemNative zu schreiben, der kann diesen Guide verwenden.
Jedoch sollte etwas Grundwissen über Angular, Ionic und Typescript vorhanden sein.

Hier geht es zur Developer Dokumentation

Syrex-o

Schon jemand, der sich Mal an einer eigenen Komponte versucht hat ?

P.S. Da gibt ein keine doofe Fragen

Rollo

Hallo Syrex-o

das FhemNative Frontend ist eine hervorragende Ergänzung für den FHEM Server.
Das Konzept gefällt mir außerordentlich gut, sodass ich jetzt auch mal versuche, eigene FhemNative Komponenten zu bauen.
Die Entwicklungsumgebung (serve:web:fhem-native-desktop) funktioniert perfekt.
Dabei bin ich auf ein Problem gestoßen, das auch bei den bereits vorhandenen Komponenten besteht.
Beim allerersten Aufruf des Frontends  erscheinen stets die Fehlermeldungen wie z.B.  "Fhem Gerät nicht gefunden" oder "Kein HTML text gefunden".
Bei einem erneuten Klick  auf den Raum und bei allen weiteren Funktionen sind die Daten dann vorhanden.

Die Ursache für dieses Verhalten glaube ich im Coding von "handleWebsocketEvents" (Betriebsart "websocket") im Programm fhem.service.ts (Zeile 344-347 im RC3.0) gefunden zu haben.
Dort wird die Abfrage "msg.payload.num === listDevices.length" geprüft, und nur wenn das zutrifft, wird die Observer-Variable "deviceListSub" getriggert.
listDevices wird aber bei jedem Aufruf dieser Methode  vor dieser Überprüfung als leeres Array neu deklariert, ist also leer.
"msg.payload.num" dagegen ist eine Zahl, die der Anzahl der vorher abgefragten Devices (im vorhergehenden list Befehl) entspricht. Nur wenn man genau ein Device verwendet, funktioniert das Ganze wie es soll.

Hab ich da etwas falsch verstanden, oder handelt es sich um einen Fehler?
Vielen Dank für ein kurzes Feedback.
Rollo

Syrex-o

Schön, dass sich hier auch mal jemand meldet  ;)

Wenn FhemNative weitere Entwickler bekommt, freut mich das umso mehr.

Zitat
Die Ursache für dieses Verhalten glaube ich im Coding von "handleWebsocketEvents" (Betriebsart "websocket") im Programm fhem.service.ts (Zeile 344-347 im RC3.0) gefunden zu haben.
Dort wird die Abfrage "msg.payload.num === listDevices.length" geprüft, und nur wenn das zutrifft, wird die Observer-Variable "deviceListSub" getriggert.
listDevices wird aber bei jedem Aufruf dieser Methode  vor dieser Überprüfung als leeres Array neu deklariert, ist also leer.
"msg.payload.num" dagegen ist eine Zahl, die der Anzahl der vorher abgefragten Devices (im vorhergehenden list Befehl) entspricht. Nur wenn man genau ein Device verwendet, funktioniert das Ganze wie es soll.

Scheint schlüssig für mich. Denke ich dran, wenn ich FhemNative in die neue Struktur umziehe.

Aktuell gibt es ja leider keine ordentliche Developer Doku.
Wenn du aktuell damit klar kommst, umso besser.

In Zukunft werden Komponenten etwas anders funktionieren. Das ändert aber am grundsätzlichen Handling für den Developer recht wenig. Wenn du also eine Komponente für FhemNative erstellt, portiere ich Sie gern direkt in die neue Struktur.

Grüße

Rollo

Hallo Syrex-o,

meine heutige Anfrage zur Nichtsichtbarkeit der Html Komponente bei Dark Theme konnte ich durch folgende Änderung in fhem-html-component.scss beheben: color: var(--text-a);
Dann schaltet sich die Textfarbe automatisch um.

Generelle Frage: Ändert sich bei der Vorgehensweise von selbstgebauten Komponenten  etwas in der Version 4.x.x ?

Vielen Dank



Syrex-o

Zitat von: Rollo am 16 Mai 2023, 14:23:20Hallo Syrex-o,

meine heutige Anfrage zur Nichtsichtbarkeit der Html Komponente bei Dark Theme konnte ich durch folgende Änderung in fhem-html-component.scss beheben: color: var(--text-a);
Dann schaltet sich die Textfarbe automatisch um.

Generelle Frage: Ändert sich bei der Vorgehensweise von selbstgebauten Komponenten  etwas in der Version 4.x.x ?

Vielen Dank


Ich habe gerade ein neues Release an den Store übergeben.
Ich habe noch ein paar mehr Optionen direkt mit eingebaut.

Den Developer Guide habe ich bisher noch nicht aktualisiert  :(
Es hat sich einiges getan und Komponenten können jetzt aus meiner Sicht noch viel einfacher erstellt werden.
Möchtest du eigene Komponenten schreiben?

Guides und Doku Elemente auf fhemnative.de sind auch sehr gerne gesehen  ;)

Rollo

Hallo Syrex-o,

ich habe schon vor einiger Zeit eine Komponente gebastelt, eine Rolladensteuerung.
hier noch in der Version  3 RC3.
Du darfst diesen Dateianhang nicht ansehen. 

In der neuen Version hab ich es noch nicht ganz zum Laufen gebracht, aber es fehlen nur noch paar CSS Anpassungen, da jetzt alles mehr responsive ist.

Es macht richtig Spaß damit zu arbeiten.

Viele Grüße


Syrex-o

Zitat von: Rollo am 23 Mai 2023, 14:12:09Hallo Syrex-o,

ich habe schon vor einiger Zeit eine Komponente gebastelt, eine Rolladensteuerung.
hier noch in der Version  3 RC3.
Du darfst diesen Dateianhang nicht ansehen. 

In der neuen Version hab ich es noch nicht ganz zum Laufen gebracht, aber es fehlen nur noch paar CSS Anpassungen, da jetzt alles mehr responsive ist.

Es macht richtig Spaß damit zu arbeiten.

Viele Grüße



Wenn du soweit bist, kannst du die Steuerung gern im Github als Merge Request einchecken?
Dann können andere deine Arbeit auch verwenden.

VG