DevelopmentModuleAPI: Unterschied zwischen den Versionen

Aus FHEMWiki
(→‎Fehlt noch: ergänzt)
(Disclaimer eingefügt)
Zeile 1: Zeile 1:
== Einleitung ==
 
 
{{Randnotiz|RNTyp=r|RNText=Bitte beachten: letztendlich entscheidend ist immer der Perl-Code, Unstimmigkeiten sollten im Fhem-Forum angemerkt (oder hier berichtigt) werden!
<hr />
Please note: in the end it is always the Perl code itself that is relevant; please report errors and omissions in the fhem forum (or correct them here)!
}}
Dieses Seite soll eine Beschreibung der für Moduleentwickler verfügbaren Funktionen enthalten, um für Modulentwickler  
Dieses Seite soll eine Beschreibung der für Moduleentwickler verfügbaren Funktionen enthalten, um für Modulentwickler  
* Wiederverwendbare Routinen leichter identifizieren zu können
* Wiederverwendbare Routinen leichter identifizieren zu können
* Durch Wiederverwenund mehr Einheitlichkeit zu erzeugen
* Durch Wiederverwendung mehr Einheitlichkeit zu erzeugen
* Aufwand zu veringern
* Aufwand zu verringern
* Bei Änderungen auch betroffene Module leichter identifiziern zu können
* Bei Änderungen auch betroffene Module leichter identifiziern zu können


Natürlich hat diese Seite keinen Anspruch auf Vollständigkeit und jeder ist aufgefordert mitzuarbeiten, sobald er beim Stöbern über einen Funktion stolpert, die auch andere interessieren könnte.
Natürlich hat diese Seite keinen Anspruch auf Vollständigkeit und jeder ist aufgefordert mitzuarbeiten, sobald er beim Stöbern über einen Funktion stolpert, die auch andere interessieren könnte.


== Command handling ==
== Command handling ==
=== AnalyzeCommand ===
=== AnalyzeCommand ===
AnalyzeCommand ermöglicht das Parsen und die Ausführung eines FHEM-Befehls, wie in FHEMWeb im Kommandoeingabefeld enthalten.
AnalyzeCommand ermöglicht das Parsen und die Ausführung eines FHEM-Befehls, wie in [[FHEMWEB]] im Kommandoeingabefeld enthalten.
:<code>AnalyzeCommand ($cl, $cmd)</code>
:<code>AnalyzeCommand ($cl, $cmd)</code>
{| class="wikitable"
{| class="wikitable"
Zeile 31: Zeile 34:
* ''{ Log3(undef, 1, "Hallo");}''
* ''{ Log3(undef, 1, "Hallo");}''
|}
|}


=== AnalyzeCommandChain ===
=== AnalyzeCommandChain ===
Zeile 54: Zeile 56:


== Diverse ==
== Diverse ==
=== ReplaceSetMagic===
=== ReplaceSetMagic===
ReplaceSetMagic  
ReplaceSetMagic  
Zeile 90: Zeile 91:
|  style="vertical-align:top" | '''<code>@result</code>'''  
|  style="vertical-align:top" | '''<code>@result</code>'''  


|| Ergebnis der Ersetzung von Readings und perlaufrufen im Parameterarray. Die Elemente des übergebenen Arrays werden in einem String getrennt duch Leerzeichen zusammengefasst und im Rückgabewert wieder in ein Array (unter Berücksichtigung von nsplit als Begrenzung für den perl-Spllit-Aufruf) zerlegt.
|| Ergebnis der Ersetzung von Readings und Perl Aufrufen im Parameterarray. Die Elemente des übergebenen Arrays werden in einem String, getrennt durch Leerzeichen, zusammengefasst und im Rückgabewert wieder in ein Array (unter Berücksichtigung von nsplit als Begrenzung für den perl-Split-Aufruf) zerlegt.
|}
|}


== Readings ==
== Readings ==
 
Die verschiedenen Funktionen zu Readings sind hier beschrieben:  
Die verschiedenen Funktionen zu Readings sind hier beschieben:  


[[DevelopmentIntroduction]] und [[DevelopmentModuleIntro]]
[[DevelopmentIntroduction]] und [[DevelopmentModuleIntro]]


== Fehlt noch ==
== Fehlt noch ==

Version vom 15. Februar 2016, 18:56 Uhr


X mark.svgBitte beachten: letztendlich entscheidend ist immer der Perl-Code, Unstimmigkeiten sollten im Fhem-Forum angemerkt (oder hier berichtigt) werden!
Please note: in the end it is always the Perl code itself that is relevant; please report errors and omissions in the fhem forum (or correct them here)!

Dieses Seite soll eine Beschreibung der für Moduleentwickler verfügbaren Funktionen enthalten, um für Modulentwickler

  • Wiederverwendbare Routinen leichter identifizieren zu können
  • Durch Wiederverwendung mehr Einheitlichkeit zu erzeugen
  • Aufwand zu verringern
  • Bei Änderungen auch betroffene Module leichter identifiziern zu können

Natürlich hat diese Seite keinen Anspruch auf Vollständigkeit und jeder ist aufgefordert mitzuarbeiten, sobald er beim Stöbern über einen Funktion stolpert, die auch andere interessieren könnte.

Command handling

AnalyzeCommand

AnalyzeCommand ermöglicht das Parsen und die Ausführung eines FHEM-Befehls, wie in FHEMWEB im Kommandoeingabefeld enthalten.

AnalyzeCommand ($cl, $cmd)
Parameter Bedeutung
$cl

might be undef

Devicehash für die Ausführung des Kommandos in einem spezifischen Kontext eines Devices (Quelle des Befehles z.B. für Berechtigungsprüfung)
$cmd

mandatory

Kommandos, die ausgeführt werden sollen.

Beispiel:

  • define dummy1 dummy
  • { Log3(undef, 1, "Hallo");}

AnalyzeCommandChain

AnalyzeCommandChain ermöglicht das Parsen und die Ausführung von FHEM-Befehlen, wie in FHEMWeb im Kommandoeingabefeld enthalten.

AnalyzeCommandChain ($cl, $cmds)
Parameter Bedeutung
$cl

might be undef

Devicehash für die Ausführung des Kommandos in einem spezifischen Kontext eines Devices (Quelle des Befehles z.B. für Berechtigungsprüfung)
$cmds

mandatory

Kommandos, das ausgeführt werden soll, durch ; getrennt.

Beispiel:

  • define dummy1 dummy; list dummy1

Diverse

ReplaceSetMagic

ReplaceSetMagic

($err, @result) = ReplaceSetMagic($hash, $nsplit, @elements)
Parameter Bedeutung
$hash

might be undef

Devicehash für die Ausführung des Kommandos in einem spezifischen Kontext eines Devices (Quelle des Befehles z.B. für Berechtigungsprüfung)
$nsplit

Zahl

Begrenzung für den Split des Ergebnisstrings nach erfolgter Ersetzung (siehe elements)
@elements

mandatory

Parameterarray mit Strings Die Elemente des übergebenen Arrays werden in einem String getrennt duch Leerzeichen zusammengefasst.


Rückgabe Bedeutung
$err Im Fehlerfall: Fehlermeldung sonst undef
@result Ergebnis der Ersetzung von Readings und Perl Aufrufen im Parameterarray. Die Elemente des übergebenen Arrays werden in einem String, getrennt durch Leerzeichen, zusammengefasst und im Rückgabewert wieder in ein Array (unter Berücksichtigung von nsplit als Begrenzung für den perl-Split-Aufruf) zerlegt.

Readings

Die verschiedenen Funktionen zu Readings sind hier beschrieben:

DevelopmentIntroduction und DevelopmentModuleIntro

Fehlt noch

  • Log3
  • IsDisabled
  • IsDummy
  • IsIgnored
  • IsIoDummy
  • InternalTimer
  • RemoveInternalTimer
  • configDBUsed
  • devspec2array
  • TimeNow
  • FmtDateTime
  • FmtTime
  • FmtDateTimeRFC1123
  • EvalSpecials
  • DoTrigger
  • InternalVal
  • ReadingsVal
  • ReadingsNum
  • ReadingsTimestamp
  • Value
  • OldValue
  • OldTimestamp
  • AttrVal
  • readingsBeginUpdate
  • readingsBulkUpdate
  • readingsEndUpdate
  • readingsSingleUpdate
  • computeClientArray
  • FileRead
  • FileWrite
  • getUniqueId
  • getKeyValue
  • setKeyValue
  • Debug