Doku für Einsteiger in die Entwicklung von FHEM-Modulen

Begonnen von StefanStrobel, 06 Januar 2014, 22:13:35

Vorheriges Thema - Nächstes Thema

StefanStrobel

Hallo,

gibt es eigentlich schon eine Doku für Leute, die ihr erstes Modul entwickeln wollen und noch keinen Überblick über den Aufbau eines Moduls und die Zusammenhänge haben? (ich hab zumindest ausser den Richtlinien im Wiki und Beispielmodulen mit wenigen Kommentaren nichts gefunden)

Da ich erst vor wenigen Monaten damit angefangen habe und es mir nicht leicht gefallen ist, habe ich mal angefangen das zusammen zu schreiben was ich glaube verstanden zu haben. Ich bräuchte aber zumindest zum Korrekturlesen die Unterstützung von ein paar erfahreneren Entwicklern ...

Wenn es Euch sinnvoll erscheint würde ich mich über Verbesserungen / Erweiterungen freuen, weiterschreiben und den Text für das Wiki bereitstellen.

   Stefan

rudolfkoenig

Gefaellt mir gut.

Bemerkungen:
- Readings werden in der statefile zwischengespeichert, damit man sie nach einem Neustart wieder hat, Internals nicht. Attribute und Definitionen kommen ins fhem.cfg
- $readingFnAttributes beschreibt die Attribute, die beim Setzen der Readings ueber die readings*Update Funktionen verfuegbar werden, ich empfehle Readings nur darueber zu setzen. Dabei kann man jeweils angeben, ob fuer eine Aenderung ein Event generiert werden soll oder nicht. Events erzeugen merkbaren Last auf dem System (siehe NotifyFn), nur Readings aendern nicht.
-  $attr{$name}->{'header'} ist zwar korrekt, ueblich ist  $attr{$name}{header}. Und man sollte AttrVal verwenden.
- Log3 Parameter ist name oder hash
- updateReading kenne ich nicht

Fehlt noch:
- Am Anfang: Entscheidung ob einstufig (wie LGTV) oder zweistufig (physisch: CUL, logisch:FS20)
- ReadFn (wird vom globalen select aufgerufen, falls Daten zur Verfuegung stehen)
- ParseFn (wird vom Dispatch aufgerufen bei dem zweistufigen Modell, siehe oben)
- ReadyFn (wird unter windows als ReadFn-Erstatz benoetigt bzw. um zu pruefen, ob ein Geraet wieder eingesteckt ist)
- NotifyFn (falls man benachrichtigt werden will)
- RenameFn
- FW_summaryFn (wird von FHEMWEB aufgerufen fuer Raum-Uebersicht)
- FW_detailFn (wird von FHEMWEB aufgerufen fuer Detail-Ansicht)
- Bei der Beschreibung der von SetFn/GetFn zurueckgelieferten Fehlermeldung: Modifier fuer FHEMWEB wie :noArg, :slider, etc.

StefanStrobel

Vielen Dank für das Feedback.
Ich werde gleich mal einen Account für das Wiki beantragen und die Änderungen und Ergänzungen dann gleich dort einpflegen.
Mit den zweistufigen Modulen habe ich leider noch keine Erfahrung. Ich werde den Teil wohl vorerst auslassen bis ich da tiefer eingestiegen bin.

Gruss
   Stefan

StefanStrobel

Die erste Version - noch mit einigen Lücken - liegt im Wiki zunächst unter http://www.fhemwiki.de/wiki/Benutzer:StefanStrobel/DevelopmentModuleIntro.
Wo wäre denn der richtige Platz und was wäre der richtige Name dafür?

Dr. Boris Neubert

Danke für Deine Arbeit.

[[Kategorie:Development]]

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

StefanStrobel

Das Dokument ist inzwischen im richtigen Bereich im Wiki drin und hat auch schon einige Ergänzungen bekommen:

http://www.fhemwiki.de/wiki/DevelopmentModuleIntro

Inzwischen bekomme ich auch vermehrt direkte Nachrichten von anderen Usern, die ebenfalls schon erste Module entwickelt haben, aber noch nicht zur Gruppe Developer gehören.
Teils mit Anregungen oder Ergänzungsvorschlägen zur Doku, teils mit Fragen. Daher stelle ich mir die Frage, wo im Forum denn der richtige Bereich ist, in dem neue Entwickler oder gelegentliche Entwickler sich austauschen können, wenn sie noch keine Schreibrechte hier haben.

Was meint Ihr?

Wo soll ich dazu einen Threat eröffnen?

Gruss / Thanx
   Stefan

rudolfkoenig

Idelaerweise sollte man hier ein Thread anlegen, mit Schreibrechten fuer alle.
Wenn das nicht geht: FHEM - Sonstiges