commandref_frame_DE.html 81 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <title>FHEM Referenz</title>
  5. <script type="text/javascript" src="fhemdoc.js"></script>
  6. <noscript>
  7. <link rel="stylesheet" type="text/css" href="../www/pgm2/style.css" />
  8. </noscript>
  9. <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
  10. <link rel="shortcut icon" href="/fhem/icons/favicon.ico"/>
  11. </head>
  12. <body style="word-wrap: break-word;">
  13. <div id="menuScrollArea">
  14. <div id="logo"></div>
  15. <div id="menu">
  16. <h3>fhem.pl Referenz</h3>
  17. Version: <a href="commandref.html">EN</a>&nbsp;<b>DE</b>
  18. <br><br>
  19. <a href="#doctop">Zum Anfang</a>
  20. <br><br>
  21. <a style="display:none" href="#" name="loadAll">Komplette Doku laden</a>
  22. <br><br>
  23. <a id="otherLang" style="display:none" href="#" name="otherLang">
  24. <span style="display:none" lang="DE">Deutsche</span>
  25. <span style="display:none" lang="EN">Englische</span>
  26. Doku f&uuml;r <span class="mod"></span> laden
  27. </a>
  28. </div>
  29. </div>
  30. <div id="right">
  31. <a name="doctop"></a>
  32. <h3>Inhalt</h3>
  33. <ul>
  34. <a href="#intro">Einleitung</a><br>
  35. <a href="#command">FHEM Befehls-Typen</a><br>
  36. <a href="#devspec">Ger&auml;te-Spezifikation</a><br>
  37. <a href="#attributes">Attribute</a><br>
  38. <br>
  39. <b>FHEM-Befehle</b>
  40. <ul>
  41. <!-- header:command -->
  42. <a href="#apptime">apptime</a> &nbsp; <!-- liefert Daten &uuml;ber Ausf&uuml;hrungszeiten -->
  43. <a href="#attr">attr</a> &nbsp; <!-- setzt ein Attribut f&uuml;r ein FHEM Ger&auml;t -->
  44. <a href="#cancel">cancel</a> &nbsp; <!-- bricht ein sleep ab -->
  45. <a href="#createlog">createlog</a> &nbsp; <!-- f&uuml;gt ein FileLog und ein SVG an einem existierenden FHEM Ger&auml;t -->
  46. <a href="#define">define</a> &nbsp; <!-- definiert ein FHEM Ger&auml;t -->
  47. <a href="#defmod">defmod</a> &nbsp; <!-- definiert oder modifiziert ein FHEM Ger&auml;t -->
  48. <a href="#delete">delete</a> &nbsp; <!-- entfernt ein FHEM Ger&auml;t -->
  49. <a href="#deleteattr">deleteattr</a> &nbsp; <!-- entfernt ein Attribut -->
  50. <a href="#deletereading">deletereading</a> &nbsp; <!-- entfernt ein Reading -->
  51. <a href="#displayattr">displayattr</a> &nbsp; <!-- zeigt Attribute eines FHEM Ger&auml;tes -->
  52. <a href="#get">get</a> &nbsp; <!-- holt ein Wert von einem FHEM Ger&auml;t -->
  53. <a href="#IF">IF</a> &nbsp; <!-- bedingte Ausf&uuml;hrung von FHEM Befehlen -->
  54. <a href="#include">include</a> &nbsp; <!-- liest eine Datei mit FHEM Befehlen ein -->
  55. <a href="#inform">inform</a> &nbsp; <!-- zeigt Events in einer telnet Verbindung -->
  56. <a href="#list">list</a> &nbsp; <!-- zeigt Definition,Readings und Attribute eines FHEM Ger&auml;tes -->
  57. <a href="#modify">modify</a> &nbsp; <!-- &auml;ndert die Definition eines FHEM Ger&auml;tes -->
  58. <a href="#notice">notice</a> &nbsp; <!-- zeigt und best&auml;tigt Systemmeldungen -->
  59. <a href="#quit">quit</a> &nbsp; <!-- endet eine telnet Verbindung zu FHEM -->
  60. <a href="#reload">reload</a> &nbsp; <!-- l&auml;dt ein FHEM Modul (Programmdefinition) -->
  61. <a href="#rename">rename</a> &nbsp; <!-- benennt ein FHEM Ger&auml;t um -->
  62. <a href="#rereadcfg">rereadcfg</a> &nbsp; <!-- l&auml;dt die FHEM Konfiguration neu -->
  63. <a href="#save">save</a> &nbsp; <!-- speichert die FHEM Konfiguration -->
  64. <a href="#set">set</a> &nbsp; <!-- setzt ein Wert in einem FHEM Ger&auml;t -->
  65. <a href="#setdefaultattr">setdefaultattr</a> &nbsp; <!-- definiert ein "default" Attribut -->
  66. <a href="#setreading">setreading</a> &nbsp; <!-- setzt ein Reading f&uuml;r ein FHEM Ger&auml;t -->
  67. <a href="#setstate">setstate</a> &nbsp; <!-- setzt den Status eines FHEM Ger&aumles -->
  68. <a href="#shutdown">shutdown</a> &nbsp; <!-- beendet FHEM -->
  69. <a href="#sleep">sleep</a> &nbsp; <!-- verz&ouml;gerte Ausf&uuml;hrung -->
  70. <a href="#trigger">trigger</a> &nbsp; <!-- generiert ein FHEM Event -->
  71. <a href="#usb">usb</a> &nbsp; <!-- sucht nach USB Ger&auml;ten -->
  72. </ul>
  73. <br>
  74. <b>Ger&auml;temodule</b>
  75. <ul>
  76. <a href="#global">global</a><br>
  77. <!-- header:device -->
  78. </ul>
  79. <br>
  80. <b>Hilfs (Erweiterungs-) Module</b>
  81. <ul>
  82. <!-- header:helper -->
  83. </ul>
  84. <br>
  85. <a href="#perl">PERL Besonderheiten</a><br>
  86. <a href="#gnuplot-syntax">gnuplot file Syntax</a><br>
  87. </ul>
  88. <a name="intro"></a>
  89. <h3>Einleitung</h3>
  90. <ul>
  91. <p>FHEM wird haupts&auml;chlich zur Heimautomatisierung benutzt,
  92. ist aber ebenso f&uuml;r andere Aufgaben einsetzbar wo Benachrichtigungen,
  93. Zeitschaltungen und Datensammlungen eine wichtige Rolle spielen.</p>
  94. <p>FHEM unterst&uuml;tzt verschiedene Hardwareger&auml;te die eine
  95. Verbindung mittels unterschiedlicher Protokolle (z.B. FHZ1000 mit Interfaces vom
  96. Typ FS20 und HMS, CM11 um mit X10 zu arbeiten) sowie logischer Ger&auml;te wie FS20
  97. oder FHT die einen Nachrichtenaustausch mit verschiedensten Ger&auml;ten die diese
  98. Protokolle verwenden erm&ouml;glichen.</p>
  99. <p>
  100. FHEM ist modular. Abh&auml;ngig von den unterschiedlichen Ger&auml;ten werden in den
  101. Modulen verschiedene Funktionen (z.B. define, get, set) realisiert. FHEM enth&auml;lt
  102. weitere Funktionen wie Trigger (<a href="#notify">notify</a>),
  103. Zeitabh&auml;ngige Funktionen (<a href="#at">at</a>)
  104. die die Funktionalit&auml;t erweitern.</p>
  105. <p>
  106. FHEM wird entweder &uuml;ber einfache ASCII-Kommandozeilen gesteuert die in Dateien
  107. wie z.B. der Konfigurationsdatei fhem.cfg gespeichert sind oder &uuml;ber eine TCP/IP
  108. Verbindung, entweder direkt in einer "telnet"-Sitzung, oder per fhem.pl im
  109. Client-Modus oder &uuml;ber eines der Webfrontends.<br> &nbsp;</p>
  110. <p class="MsoNormal">Wenn Sie den FHEM-Server starten, m&uuml;ssen Sie eine
  111. Konfigurationsdatei ausw&auml;hlen:</p>
  112. <ul>
  113. <code>perl fhem.pl fhem.cfg</code>
  114. </ul>
  115. &nbsp;<p>Nachstehend eine Minimal-Konfiguration Datei: </p><pre>
  116. attr global <a href="#logfile">logfile</a> log/fhem.log
  117. attr global <a href="#modpath">modpath</a> .
  118. attr global <a href="#statefile">statefile</a> log/fhem.save
  119. attr global <a href="#verbose">verbose</a> 3
  120. define telnetPort <a href="#telnet">telnet</a> 7072 global
  121. define WEB <a href="#FHEMWEB">FHEMWEB</a> 8083 global</pre>
  122. Die letzten zwei Zeilen definieren einen telnet und einen WEB Zugang, beide k&ouml;nnen aber
  123. bei Bedarf auch abgeschaltet werden.<br><br>
  124. Die WEB Schnittstelle kann &uuml;ber
  125. <ul>
  126. http://&lt;fhemhost&gt;:8083
  127. </ul>
  128. erreicht werden.
  129. <br><br>
  130. Die Kommunikation mit FHEM kann entweder in einer "session" (&uuml;ber telnet) oder
  131. &uuml;ber einzelne Klient-Kommandos (&uuml;ber fhem.pl) erfolgen. Beispiel:
  132. <ul>
  133. <code>telnet &lt;fhemhost&gt; 7072<br>
  134. &lt;NL&gt; </code>(Die Bet&auml;tigung der &quot;Enter&quot;-Taste schaltet in den&nbsp; "prompt"
  135. Modus)<code><br>
  136. &lt;command&gt;...<br>
  137. quit</code><br>
  138. </ul>
  139. oder
  140. <ul>
  141. <code>fhem.pl &lt;fhemhost&gt;:7072 "&lt;command&gt;..."</code>
  142. </ul>
  143. <br>
  144. Falls FHEM als root gestartet wurde, und ein OS-Benutzer fhem existiert, dann
  145. wechselt FHEM nach dem start zu diesem Benutzer (via setuid). <br>
  146. </ul>
  147. <br>
  148. <!-- intro end - diese Zeile nicht entfernen! -->
  149. <a name="command"></a>
  150. <h3>FHEM Befehlstypen</h3>
  151. <ul>
  152. Es gibt drei Arten von Befehlen: "fhem" Befehle (werden in diesem Dokument
  153. beschrieben), SHELL-Befehle (diese m&uuml;ssen von doppelten
  154. Anf&uuml;hrungszeichen "" eingeschlossen werden) und PERL-Ausdr&uuml;cken (von
  155. geschwungenen Klammern {} eingeschlossen). SHELL-Befehle oder
  156. PERL-Ausdr&uuml;cke werden f&uuml;r komplexe <a href="#at">at</a> oder <a
  157. href="#notify">notify</a> Ausdr&uuml;cke ben&ouml;tigt, k&ouml;nnen aber auch
  158. als "normale" Befehle angewendet werden.
  159. <br>
  160. <br>
  161. Die folgenden drei Befehle bewirken z.B. dasselbe Ergebnis, wenn sie am
  162. telnet-Prompt eingegeben werden:
  163. <ul>
  164. set lamp off<br>
  165. "fhem.pl 7072 "set lamp off""<br>
  166. {fhem("set lamp off")}<br>
  167. </ul>
  168. SHELL-Kommandos werden im Hintergrund ausgef&uuml;hrt,
  169. PERL-Ausdr&uuml;cke und FHEM-Kommandos werden im Haupt-"thread" ausgef&uuml;hrt. Um
  170. PERL-Ausdr&uuml;cke leichter eingeben zu k&ouml;nnen, sind einige Spezialfunktionen und
  171. Variablen verf&uuml;gbar. Lesen Sie sich bitte die Abschnitte <a href="#perl">
  172. Perl special</a> zum besseren Verst&auml;ndnis durch.</p>
  173. <p>Um FHEM-Befehle in einen SHELL-Script zu triggern (dies ist
  174. eine "andere" M&ouml;glichkeit), benutzen Sie bitte die oben beschriebene Client-Form
  175. der fhem.pl.
  176. <br>
  177. Mehrere FHEM-Kommandos hintereinander werden mittels
  178. Semikolon (;) getrennt. Weil Semikola auch in PERL-Code oder SHELL-Programmen
  179. benutzt werden, m&uuml;ssen sie mittels doppelten Semikola gesch&uuml;tzt werden. Lesen
  180. Sie sich bitte die <b>Bermerkungen </b>des <a href="#notify">notify</a>-Abschnittes zu Kommandoparametern und Regeln durch.
  181. <br>
  182. Z.B. schaltet die erste der folgenden Befehlszeilen die Lampe 1 nur/erst zur
  183. Uhrzeit 07:00 Uhr aus, die Lampe 2 aber sofort und die zweite Befehlszeile
  184. schaltet Lampe 1 und 2 um 7:00 Uhr gleichzeitig aus.
  185. <ul>
  186. define lampoff at 07:00 set Lamp1 off; set Lamp2 off<br>
  187. define lampoff at 07:00 set Lamp1 off;; set Lamp2 off<br>
  188. </ul>
  189. <br>
  190. F&uuml;r jede weitere Indirektion muss man die Strichpunkte verdoppeln. Um also die beiden Lampen um 7:00 f&uuml;r 10 Minuten einzuschalten schreibt man:
  191. <ul>
  192. define onAt at 07:00 set Lamp1 on;;set Lamp2 on;; define offAt at +00:10 set Lamp1 off;;;;set Lamp2 off
  193. </ul>
  194. Keine Angst, das Vorherige kann in FHEM auch deutlich einfacher formuliert werden als:
  195. <ul>
  196. define onAt at 07:00 set Lamp1,Lamp2 on-for-timer 600
  197. </ul>
  198. <br>
  199. Befehle k&ouml;nnen entweder direkt eingegeben oder aus einer Datei (z.B. am
  200. Start von FHEM aus der Konfugurationsdatei) eingelesen werden. Die Befehle
  201. werden entweder direkt ausgef&uuml;hrt oder sp&auml;ter wenn sie als Argumente
  202. eines <a href="#at">at</a> oder <a href="#notify">notify</a>-Befehles verwendet
  203. werden.
  204. <p>Eine mit einem \ abgeschlossene Zeile wird mit der
  205. nachfolgenden Zeile verbunden. Somit k&ouml;nnen lange Befehlszeilen (die z.B. aus
  206. mehreren PERL-Befehlen bestehen) auf mehrere Zeilen aufgteilt werden. Einige
  207. Web-Frontends (z.B. webpgm2) erleichtern die Eingabe von sich &uuml;ber mehrere
  208. Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
  209. <p>&nbsp;</p>
  210. </ul>
  211. <!-- command end - diese Zeile nicht entfernen! -->
  212. <a name="devspec"></a>
  213. <h3>Ger&auml;te-Spezifikation (devspec)</h3>
  214. <ul>
  215. Die Befehle
  216. <a href="#attr">attr</a>,
  217. <a href="#set">set</a>,
  218. <a href="#get">get</a>, usw.
  219. <a href="#attr">attr</a>,
  220. <a href="#deleteattr">deleteattr</a>,
  221. <a href="#displayattr">displayattr</a>,
  222. <a href="#delete">delete</a>,
  223. <a href="#get">get</a>,
  224. <a href="#list">list</a>,
  225. <a href="#set">set</a>,
  226. <a href="#setreading">setreading</a>,
  227. <a href="#setstate">setstate</a>,
  228. <a href="#trigger">trigger</a>
  229. k&ouml;nnen eine komplexere Ger&auml;tespezifikation als Argumente enthalten,
  230. die auch eine Anzahl von Ger&auml;ten betreffen kann. Eine
  231. Ger&auml;tespezifikation kann folgendes sein:
  232. <ul>
  233. <li>ein einzelner Ger&auml;tename. Dies ist der Normalfall</li>
  234. <li>eine durch Komma(,) getrennte Liste von Ger&auml;tenamen</li>
  235. <li>ein regul&auml;rer Ausdruck</li>
  236. <li>ein NAME=WERT Ausdruck, wo NAME ein "Internal" Wert wie TYPE ist, ein
  237. Reading-Name oder ein Attribut. WERT ist ein regul&auml;rer Ausdruck.
  238. Um die Bedingung zu negieren, muss NAME!=WERT verwendet werden.
  239. Um die Suche einzugrenzen, kann man als Praefix i: f&uuml;r internal
  240. Werte, r: f&uuml;r Reading-Namen und a: f&uuml;r Attribute verwenden,
  241. siehe das Beispiel unten.
  242. </li>
  243. <li>Falls die Spezifikation von :FILTER=NAME=WERT gefolgt wird,
  244. dann wird die zuvor gefundene Liste durch diesen neuen Ausdruck
  245. gefiltert.
  246. </ul>
  247. Beispiele:
  248. <ul>
  249. <code>set lamp1 on</code><br>
  250. <code>set lamp1,lamp2,lamp3 on</code><br>
  251. <code>set lamp.* on</code><br>
  252. <code>set room=kitchen off</code><br>
  253. <code>set room=kitchen:FILTER=STATE=on off</code><br>
  254. <code>set room=kitchen:FILTER=STATE!=off off</code><br>
  255. <code>list disabled=</code><br>
  256. <code>list TYPE=FS20 STATE</code><br>
  257. <code>list i:TYPE=FS20 STATE</code><br>
  258. </ul>
  259. Bemerkungen:
  260. <ul>
  261. <li>die Spezifikation kann keine Leerzeichen enthalten.</li>
  262. <li>falls ein Ger&auml;tename exakt dem Spezifikation entspricht, dann werden
  263. keine regul&auml;re Ausdr&uuml;cke oder Filter ausgewertet.
  264. <li>zuerst wird die durch Komma getrennte Spezifikation abgearbeitet, dann
  265. folgen die regul&auml;ren Ausdr&uuml;cke und die Filter</li>
  266. <li>die Befehlszeile kann die selbe Ger&auml;tebezeichnung mehrfach enthalten
  267. z.B.: &quot;set lamp3,lamp3 on&quot;. Lamp3 wird hier zwei Mal
  268. eingeschalten.</li>
  269. <li>um Strukturen mit komplexeren Anforderungen zu realisieren lesen Sie
  270. bitte den Abschnitt zu <a href="#structure"> structure</a>.
  271. </ul>
  272. </ul>
  273. <!-- devspec end - diese Zeile nicht entfernen! -->
  274. <a name="attributes"></a>
  275. <h3>Attribute</h3>
  276. Alle Ger&auml;te haben Attribute. Diese werden mittels des Befehls <a
  277. href="#attr">attr</a> gesetzt, angezeigt mit dem Befehl <a
  278. href="#displayattr">displayattr</a>, und mit dem Kommando <a
  279. href="#deleteattr">deleteattr</a> entfernt.<p>
  280. Es gibt globale Attribute, die von allen Ger&auml;ten genutzt werden, und lokale
  281. Attribute, die nur auf individuelle Ger&auml;teklassen zutreffen.<p>
  282. Manche Ger&auml;te (wie <a href="#FHEMWEB">FHEMWEB</a>) definieren automatisch
  283. neue globale Attribute bei der ersten Definition eines Ger&auml;tes dieses
  284. Typs.<p>
  285. Sie k&ouml;nnen den Befehl<p><code>attr global userattr
  286. &lt;attributelist&gt;</code><p> f&uuml;r das Ger&auml;t <a
  287. href="#global">global</a> verwenden, um neue globale Attribute zu deklarieren,
  288. und <p><code>attr &lt;devicespec&gt; userattr
  289. &lt;attributelist&gt;</code>,<p>um neue lokale Attribute f&uuml;r bestimmte
  290. individuelle Ger&auml;te gem&auml;&szlig <a href="#devspec">devspec</a> zu
  291. deklarieren.
  292. <code>&lt;attributelist&gt;</code> ist eine durch Leerzeichen getrennte Liste,
  293. die die Namen der zus&auml;tzlichen Attribute enth&auml;lt. In der
  294. Dokumentation zum Befehl <a href="#attr">attr</a> sind Beispiele.<p>
  295. Seien Sie vorsichtig und &uuml;berschreiben Sie keine zus&auml;tzlichen
  296. globale Attribute, die bereits zuvor durch Sie selbst oder ein Ger&auml;t
  297. definiert wurden. <code>attr global userattr &lt;attributelist&gt;</code>
  298. sollte so fr&uuml;h wie m&ouml;glich in der Konfiguration erscheinen.
  299. <h4>Ger&auml;tespezifische Attribute</h4>
  300. Ger&auml;tespezifische Attribute sind in dem jeweiligen Abschnitt zum
  301. Ger&auml;t dokumentiert.
  302. <h4>Globale Attribute f&uuml;r alle Ger&auml;te</h4>
  303. <ul>
  304. <a name="alias"></a>
  305. <li>alias<br>
  306. Wird in FHEMWEB benutzt, um ein en anderen Namen f&uuml;r ein Ger&auml;t
  307. anzuzeigen z.B. wenn Sonderzeichen/Leerzeichen nicht in der
  308. Ger&auml;tedefinition verwendet werden k&ouml;nnen.
  309. </li><br>
  310. <a name="comment"></a>
  311. <li>comment<br>
  312. F&uuml;gt einen beliebigen Kommentar hinzu.
  313. </li><br>
  314. <a name="eventMap"></a>
  315. <li>eventMap<br>
  316. Ersetze Event Namen und setze Argumente. Der Wert dieses Attributes
  317. besteht aus einer Liste von durch Leerzeichen getrennte Werten. Jeder
  318. Wert ist ein durch Doppelpunkt getrenntes Paar. Der erste Teil stellt den
  319. "alten" Wert, der zweite Teil den "neuen" Wert dar. Wenn der erste Wert
  320. ein Slash (/) oder ein Komma (,) ist, dann wird nicht durch Leerzeichen
  321. sondern durch das vorgestellte Zeichen getrennt.
  322. Optional kann man auch ein widgetOverride angeben (angeh&auml;ngt nach
  323. einem Doppelpunkt (z.Bsp. on-for-timer:OnFor:texField). Die
  324. Voreinstellung ist :noArg, um das Input Feld bei cmdList zu vermeiden.
  325. Beispiele:
  326. <ul><code>
  327. attr store eventMap on:open off:closed<br>
  328. attr store eventMap /on-for-timer 10:open/off:closed/<br>
  329. set store open
  330. </code></ul>
  331. Die explizite Variante dieses Attributes hat folgenden Syntax:
  332. <ul><code>
  333. attr store eventMap { dev=>{"on"=>"open"}, usr=>{"open"=>"on"} }<br>
  334. attr store eventMap { dev=>{"^on(-for-timer)?(.*)"=>"open$2"},
  335. usr=>{"^open(.*)"=>"on$1"},
  336. fw=>{"^open(.*)"=>"open"} }
  337. </code></ul>
  338. Diese Variante muss dann verwendet werden, falls das Mapping nicht
  339. symmetrisch ist. Der erste Teil (dev) spezifiziert dabei die Richtung
  340. Ger&auml;t zu Benutzer, d.h. falls das Ger&auml;t on 100 oder
  341. on-for-timer 100 meldet, dann wird der Benutzer open 100 zu sehen
  342. bekommen. Der zweite Teil (usr) spezifiziert die Richtung Benutzer zu
  343. Ger&auml;t, d.h. wenn man "set XX open 100" eingibt, dann wird das
  344. Kommando "on 100" an das Ger&auml;t gesendet. In beiden F&auml;llen wird
  345. der Schl&uuml;ssel zuerst direkt, und dann als Regexp mit dem Wert
  346. verglichen. Falls man Regexps mit Wildcards im usr Teil verwendet, dann
  347. muss man den fw Teil mit dem exakt gleichen Schl&uuml;sseln
  348. ausf&uuml;llen, damit FHEMWEB in der Detail-Ansicht den set-Auswahl
  349. richtig anzeigen kann.
  350. </li><br>
  351. <a name="genericDisplayType"></a>
  352. <li>genericDisplayType<br>
  353. Wird von bestimmten Frontends (aber nicht FHEMWEB) verwendet, um
  354. f&uuml;r das Ger&auml;t passende Voreinstellungen (Bild/Befehle/etc)
  355. anzubieten. Z.Zt werden folgende Werte unterst&uuml;tzt:
  356. switch,outlet,light,blind,speaker,thermostat
  357. </li><br>
  358. <a name="group"></a>
  359. <li>group<br>
  360. Ger&auml;tegruppen. FHEMWEB zeigt Ger&auml;te die in die gleiche Gruppe
  361. geh&ouml;ren auch in einer gemeinsamen Box an. Ein Ger&auml;t kann zu
  362. mehr als einer Gruppe geh&ouml;ren. In diesem Fall m&uuml;ssen die
  363. entsprechenden Gruppen durch Kommata getrennt eingetragen werden. Wenn
  364. dieses Attribut nicht gesetzt ist, wird der in der Ger&auml;tegruppe
  365. gesetzte Ger&auml;tetyp verwendet.
  366. </li><br>
  367. <a name="room"></a>
  368. <li>room<br>
  369. Filtert/gruppiert Ger&auml;te.
  370. Ein Ger&auml;t kann zu mehr als einem Raum zugeordnet werden. In diesem
  371. Fall m&uuml;ssen die Raumzuordnungen durch Kommata getrennt
  372. angegeben werden.<br>
  373. Ger&auml;te, die dem Raum mit der Bezeichnung "hidden" zugeordnet
  374. werden, erscheinen nicht auf der Webseite.
  375. </li><br>
  376. <a name="showtime"></a>
  377. <li>showtime<br>
  378. Wird im FHEMWEB verwendet, um die Zeit der letzten Aktivit&auml;t
  379. anstelle des Status in der Gesamtansicht anzuzeigen. N&uuml;tzlich z.B.
  380. f&uuml;r FS20 PIRI Ger&auml;te.
  381. </li></br>
  382. <a name="suppressReading"></a>
  383. <li>suppressReading<br>
  384. Wird verwendet, um nicht gewollte Readings zu entfernen. Der Wert ist
  385. ein Regular Expression, erg&auml;nzt mit ^ und $. Wird nur in
  386. Ausnahmef&auml;llen ben&ouml;tigt.
  387. </li><br>
  388. <a name="verbose"></a>
  389. <li>verbose<br>
  390. Setzt den Schwellwert f&uuml;r die Logfile-Meldungen.
  391. M&ouml;gliche Werte sind:
  392. <ul>
  393. <li>0 - Server start/stop</li>
  394. <li>1 - Fehlermeldungen oder unbekannte Pakete</li>
  395. <li>2 - bedeutende Ereigbisse/Alarme.</li>
  396. <li>3 - ausgesendete Kommandos werden gelogged.</li>
  397. <li>4 - von den einzelnen Ger&auml;ten empfangene Daten.</li>
  398. <li>5 - Fehlersuche.</li>
  399. </ul>
  400. Der f&uuml;r die <a href="#global">global</a> Instanz gesetzte Wert gilt
  401. als Voreinstellung f&uuml;r die Instanzen, die dieses Attribut nicht
  402. gesetzt haben.
  403. </li><br>
  404. </ul>
  405. <a name="readingFnAttributes"></a>
  406. <h4>readingFnAttribute</h4>
  407. Die folgenden Attribute werden bei Modulen verwendet, die standardisierte
  408. "readings" Aktualisierung der fhem.pl benutzen. Informieren Sie sich in der
  409. Liste der Modulattribute wenn Sie wissen m&ouml;chten ob dies
  410. unterst&uuml;tzt wird.<br><br>
  411. <ul>
  412. <a name="stateFormat"></a>
  413. <li>stateFormat<br>
  414. &Auml;ndert den Ger&auml;testatus, dies ist z.Bsp. in der Ausgabe des list
  415. Kommandos zu sehen, oder in der Raum&uumlbersicht von FHEMWEB. Falls
  416. nicht gesetzt, dann wird das state Reading &uuml;bernommen. Sonst werden
  417. alle W&ouml;rter im Wert des Attributes durch das entsprechende Reading des
  418. Ger&auml;tes ersetzt (soweit vorhanden). Falls der Wert in {}
  419. eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die
  420. Auswertung passiert bei jeder &Auml;nderung eines Readings.<br>
  421. Die <a href="#set">hier</a> beschriebene "set magic" wird auch angewendet.
  422. </li>
  423. <a name="event-on-update-reading"></a>
  424. <li>event-on-update-reading<br>
  425. Wenn nicht gesetzt, erzeugt jede Ver&auml;nderung eines "readings" ein
  426. Ereignis, welches z.B. von <a href="#notify">notify</a> oder<a
  427. href="FileLog"> FileLog</a> ber&uuml;cksichtigt wird. Wenn gesetzt erzeugen
  428. nur Aktualisierungen der eingetragenen "readings" ein Ereignis.
  429. </li>
  430. <a name="event-on-change-reading"></a>
  431. <li>event-on-change-reading<br>
  432. Dieses Attribut enth&auml;lt eine durch Kommata getrennte Liste von
  433. "readings". Wenn gesetzt, erzeugen nur Ver&auml;nderungen der gelisteten
  434. "readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten
  435. "readings" identisch sind, wird kein Ereignis generiert.<br>
  436. Wenn hinter dem Namen eines "readings" eine :Schwelle angegeben ist, wird
  437. das Event nur getriggert wenn die &Auml;nderung gr&ouml;sser als diese
  438. Schwelle ist.
  439. </li>
  440. Die unterschiedlichen Bedeutungen von event-on-update-reading und
  441. event-on-change-reading sind folgende:
  442. <ol>
  443. <li>Wenn beide Attribute nicht gesetzt sind erzeugt jede Aktualisierung
  444. eines jeden "readings" eines Ger&auml;tes ein Ereignis.</li>
  445. <li>Wenn eines der Attribute gesetzt ist, erzeugen nur Updates oder
  446. &auml;nderungen von "readings" die in einem der Attribute gesetzt
  447. sind ein Ereignis.</li>
  448. <li>Wenn ein "reading" in event-on-update-reading aufgef&uuml;hrt ist,
  449. erzeugt eine Aktualisierung ein Ereignis unabh&auml;ngig ob das
  450. "reading" auch in event-on-change-reading aufgelistet ist.</li>
  451. </ol>
  452. <a name="timestamp-on-change-reading"></a>
  453. <li>timestamp-on-change-reading<br>
  454. Dieses Attribut enth&auml;lt eine durch Kommata getrennte Liste von
  455. "readings". Wenn gesetzt, werden die Zeitstempel der gelisteten "readings"
  456. nicht aktualisiert wenn durch ein ebenfalls gesetztes event-on-change-reading
  457. f&uuml;r dieses "reading" kein Ereignis erzeugen w&uuml;rde.
  458. </li>
  459. <p>
  460. <a name="event-aggregator"></a>
  461. <li>event-aggregator</li>
  462. The primary uses of this attribute are to calculate (time-weighted) averages of
  463. readings over time periods and to throttle the update rate of readings and thus
  464. the amount of data written to the logs.<p>
  465. This attribute takes a comma-separated list of <code>reading:interval:method:function:holdTime</code>
  466. quintuples. You may use regular expressions for <code>reading</code>. If set, updates for the
  467. listed readings are ignored and associated events are suppressed for a black-out period of at
  468. least <code>interval</code> seconds (downsampling). After the black-out period has expired, the reading is
  469. updated with a value that is calculated from the values and timestamps of the previously ignored
  470. updates within the black-out period as follows:
  471. <table>
  472. <tr><th>function</th><th>description</th></tr>
  473. <tr><td>v</td><td>the last value encountered</td></tr>
  474. <tr><td>v0</td><td>the first value encountered</td></tr>
  475. <tr><td>min</td><td>the smallest value encountered</td></tr>
  476. <tr><td>max</td><td>the largest value encountered</td></tr>
  477. <tr><td>mean</td><td>the arithmetic mean of all values</td></tr>
  478. <tr><td>sd</td><td>the standard deviation from the mean</td></tr>
  479. <tr><td>median</td><td>the median of all values (requires holdTime and function none)</td></tr>
  480. <tr><td>integral</td><td>the arithmetic sum (if not time-weighted) or integral area (if time-weighted) of all values</td></tr>
  481. <tr><td>n</td><td>number of samples</td></tr>
  482. <tr><td>t</td><td>timestamp of the last value</td></tr>
  483. <tr><td>t0</td><td>timestamp of the first value</td></tr>
  484. </table>
  485. <p>
  486. If <code>method</code> is <code>none</code>, then that's all there is. If <code>method</code>
  487. is <code>const</code> or <code>linear</code>, the time-weighted series of values is taken into
  488. account instead. The weight is the timespan between two subsequent updates.
  489. With the <code>const</code> method, the value is the value of the reading at the beginning of
  490. the timespan; with the <code>linear</code> method, the value is the arithmetic average of
  491. the values at the beginning and the end of the timespan.
  492. Rollovers of black-out periods are handled as one would expect it.<p>
  493. One would typically use the <code>linear</code> method with the <code>mean</code> function for
  494. quantities continuously varying over time like electric power consumption, temperature or speed.
  495. For cumulative quantities like energy consumed, rain fallen or distance covered,
  496. the <code>none</code> method with the <code>v</code> function is used. The <code>constant</code>
  497. method is for discrete quantities that stay constant until the corresponding reading is updated,
  498. e.g. counters, switches and the like.<p>
  499. If the <code>holdTime</code> in seconds is defined, the samples will be kept in memory allowing
  500. the calculation of floating statistics instead of blocked statistics. With <code>holdTime</code>
  501. defined the <code>interval</code> can be kept undefined so that the readings update rate is unchanged
  502. or it can be set to a value less then <code>holdTime</code> for downsampling as described above
  503. with a full history of the readings in memory. Note that the historic samples are not persistent
  504. and will be lost when restarting FHEM.<p>
  505. The event aggregator only takes into consideration those updates that remain after preprocessing
  506. according to the <code>event-on-update-reading</code> and <code>event-on-change-reading</code>
  507. directives. Besides which, any update of a reading that occurs within a timespan from the preceding
  508. update that is smaller than the resolution of FHEM's time granularity is ditched.<p>
  509. When more than one function should be calculated for the same reading, the original reading must be
  510. multiplied (e.g. by using a notify) before applying the event-aggregator to the derived readings.<p>
  511. Examples:<br>
  512. <code>attr myPowerMeter event-aggregator EP_POWER_METER:300:linear:mean,EP_ENERGY_METER:300:none:v</code><br>
  513. <code>attr myBadSensor event-aggregator TEMP::none:median:300</code><br>
  514. <code>attr mySunMeter event-aggregator SUN_INTENSITY_24H::const:integral:86400</code>
  515. </li>
  516. <a name="event-min-interval"></a>
  517. <li>event-min-interval<br>
  518. Dieses Attribut enth&auml;lt eine durch Kommata getrennte Liste von
  519. "readings:minInterval" Paare. readings kann ein regexp sein. Ein Event wird
  520. nur dann generiert, falls seit dem letzten Auftreten des gleichen Events
  521. mindestens minInterval Sekunden vergangen sind. Falls
  522. event-on-change-reading auch spezifiziert ist, dann werden sie mit ODER
  523. kombiniert, d.h. wenn einer der beiden Bedingungen wahr ist.
  524. </li>
  525. <a name="userReadings"></a>
  526. <li>userReadings<br>
  527. Komma getrennte Liste von benutzerdefinierten Readings. Jede Definition hat
  528. folgendes Format:
  529. <ul><code>
  530. &lt;reading&gt;[:&lt;trigger&gt;] [&lt;modifier&gt;] { &lt;perl code&gt; }
  531. </code></ul>
  532. Diese benutzerdefinierte Readings werden bei jeder Aktualisierung der
  533. Ger&auml;tereadings gesetzt, indem das spezifizierte <a href="#perl">perl
  534. code</a> <code>{ &lt;perl code&gt; }</code> ausgef&uuml;hrt wird, und
  535. dessen Wert dem Reading zugewiesen wird.
  536. Falls &lt;trigger&gt; spezifiziert ist, dann findet diese Ausf&uuml;hrung
  537. nur dann statt, falls einer der aktualisierten Readings dem regexp
  538. &lt;trigger&gt; entspricht (matched). <br>
  539. Beispiele:
  540. <ul><code>
  541. attr myEnergyMeter userReadings energy
  542. { ReadingsVal("myEnergyMeter","counters.A",0)/1250.0;; }<br>
  543. attr myMultiMeter userReadings
  544. energy1:counters.A.* {ReadingsVal("myMultiMeter","counters.A",0)/1250.0},
  545. energy2:counters.B.* {ReadingsVal("myMultiMeter","counters.B",0)/1250.0}
  546. </code></ul>
  547. <code>&lt;modifier&gt;</code> kann die folgenden Werte haben:
  548. <ul>
  549. <li>none: als ob man es gar nicht spezifiziert h&auml;tte.</li>
  550. <li>difference: das Reading wird auf die Differenz zw. dem aktuellen und
  551. dem vorherigen Wert gesetzt.</li>
  552. <li>differential: das Reading wird auf die Differenz zw. dem aktuellen und
  553. dem vorherigen Wert, geteilt durch die Sekunden zw. der aktuellen Zeit
  554. und der letzten Auswertung, sekundengenau. Kein Wert wird berechnet,
  555. falls der Unterschied unter eine Sekunde liegt.</li>
  556. <li>integral: das Gegenteil von differential. Das Ergebnis wird um das
  557. Produkt aus der Zeit-Differenz und der Durschnittswert der letzten zwei
  558. Readings erh&ouml;ht.<br>
  559. result += (time - timeold) * (oldval + value) / 2
  560. </li>
  561. <li>offset: wenn der aktuellen Wert kleiner als der vorherige Wert ist
  562. wird der vorherige Wert zum Reading addiert. Das Reading kann dann als
  563. offset verwendet werden um einen Z&auml;hler der durch Sromverlust
  564. zur&uuml;ckgesetzt wird zu korrigieren.</li>
  565. <li>monotonic: wenn die Differenz zw. dem aktuellen und dem vorherigen
  566. Wert positiv ist wird diese Differenz zum Reading addiert. Damit
  567. l&auml;sst sich von einem Z&auml;hler der bei Stromverlust
  568. zur&uuml;ckgesetzt wird ein monoton wachsender Z&auml;hler
  569. ableiten.</li>
  570. </ul>
  571. Beispiel:
  572. <ul><code>
  573. attr myPowerMeter userReadings power differential
  574. { ReadingsVal("myPowerMeter","counters.A",0)/1250.0}
  575. </code></ul>
  576. Achtung:<ul>
  577. <li>Falls difference oder differential spezifiziert ist, dann werden
  578. f&uuml;r die Berechnung &auml;ltere Werte ben&ouml;tigt, d.h. der Wert
  579. wird fr&uuml;hestens beim zweiten &Auml;nderung gesetzt.</li>
  580. <li>der Name der definierten Readings besteht aus alphanumerischen
  581. Zeichen, Unterstrich (_) und Minus-Zeichen (-).</li>
  582. </ul>
  583. </li><br>
  584. </ul>
  585. <h4>Allgemeine Attribute</h4>
  586. Die folgenden lokalen Attribute werden von mehreren Ger&auml;ten verwendet:
  587. <ul>
  588. <a name="IODev"></a>
  589. <li>IODev<br>
  590. Setzt das IO oder das physische Device, welches zum Senden der Signale an
  591. dieses logische Device verwendet werden soll (Beispielsweise FHZ oder
  592. CUL). Hinweis: Beim Start weist FHEM jedem logischen Device das letzte
  593. physische Device zu, das Daten von diesem Typ empfangen kann. Das
  594. Attribut IODev muss nur gesetzt werden, wenn mehr als ein physisches
  595. Device f&auml;hig ist, Signale von diesem logischen Device zu empfangen.
  596. </li><br>
  597. <li>Attribut "disable" umschalten<br/>
  598. Das Attribut "disable" kann, sofern vom Ger&auml;temodul bereitgestellt,<br/>
  599. mit folgendem Befehl einfach umgeschaltet werden:</br>
  600. <br/>
  601. <code>attr &lt;device&gt; disable toggle</code><br/>
  602. </li>
  603. </ul>
  604. <!-- attributes end - diese Zeile nicht entfernen! -->
  605. <br><br>
  606. <a name="attr"></a>
  607. <h3>attr</h3>
  608. <ul>
  609. <code>attr &lt;devspec&gt; &lt;attrname&gt; [&lt;value&gt;] </code><br>
  610. <br>
  611. Dieser Befehl setzt ein Attribut f&uuml;r ein Ger&auml;t welches mit <a
  612. href="#define">define</a> definiert wurde. Sie k&ouml;nnen auch Ihre eigenen
  613. Attribute definieren, um sie in anderen Applikationen anzuwenden. Geben Sie
  614. "&lt;attr &lt;name&gt; ?" ein, um eine Liste verf&uuml;gbarer Attribute
  615. anzuzeigen.
  616. Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
  617. f&uuml;r Details der &lt;devspec&gt;.<br>
  618. Ger&auml;tespezifische Attribute sind in der Beschreibung zum jeweiligen
  619. Ger&auml;t aufgef&uuml;hrt.
  620. Nach der Durchf&uuml;hrung das globale Ereignis "ATTR" wird generiert.
  621. <br>
  622. Beispiele:
  623. <ul>
  624. <code>attr global verbose 3</code><br>
  625. <code>attr lamp room kitchen</code><br>
  626. <code>attr lamp group lights</code><br>
  627. <code>attr lamp loglevel 6</code><br>
  628. <code>attr weatherstation event-on-update-reading wind,temperature,humidity</code><br>
  629. <code>attr weatherstation event-on-change-reading israining</code><br>
  630. <code>attr weatherstation event-on-change-reading israining,state</code><br>
  631. <code>attr heating stateFormat Temp:measured-temp, Valve:actuator</code><br>
  632. </ul>
  633. <br>
  634. Bemerkungen:<br>
  635. <ul>
  636. <li>Lesen Sie unter <a href="#deleteattr">deleteattr</a> nach um Attribute
  637. zu l&ouml;schen.</li>
  638. </ul>
  639. </ul>
  640. <!-- attr end -->
  641. <a name="cancel"></a>
  642. <h3>cancel</h3>
  643. <ul>
  644. <code>cancel [&lt;id&gt; [quiet]]</code>
  645. <br><br>
  646. Entfernt ein benanntes <a href="#sleep">sleep</a>.
  647. </ul>
  648. <!-- cancel end -->
  649. <a name="define"></a>
  650. <h3>define</h3>
  651. <ul>
  652. <code>define [option] &lt;name&gt; &lt;type&gt; &lt;type-specific&gt;</code><br>
  653. <br>
  654. Definiert ein Ger&auml;t. Sie m&uuml;ssen Ger&auml;te einrichten um sie zu
  655. beeinflussen (z.B. das Kommando set on/off auszuf&uuml;hren). Gleichfalls
  656. ist das Logfile besser lesbar wenn es z.B. "lamp off" anstatt "Device 5673,
  657. Button 00, Code 00 (off)" als Text enth&auml;lt. <br>
  658. Nach der Durchf&uuml;hrung wird das globale Ereignis "DEFINED" generiert.
  659. <br><br>
  660. Je nach Typ ben&ouml;tigt man unterscheidliche Argumente, lesen Sie sich
  661. bitte die zu dem jeweiligen Ger&auml;t geh&ouml;renden Abschnitte durch.
  662. <br><br>
  663. Optionen:<br>
  664. <ul>
  665. <li>-temporary<br>
  666. Setzt den TEMPORARY Marker, was das Abspeichern dieser Definition in
  667. fhem.cfg verhindert.
  668. </li><br>
  669. <li>-ignoreErr<br>
  670. Reduziert die Anzahl der Fehlermeldungen, falls ein FHEM-Modul nicht
  671. geladen werden kann. Wird in fhem.cfg.demo verwendet, da das RSS Beispiel
  672. etliche, normalerweise nicht installierte perl-Module ben&ouml;tigt.
  673. </li><br>
  674. </ul>
  675. </ul>
  676. <!-- define end -->
  677. <a name="defmod"></a>
  678. <h3>defmod</h3>
  679. <ul>
  680. <code>defmod &lt;name&gt; &lt;type&gt; &lt;type-specific&gt;</code><br>
  681. <br>
  682. Definiert ein Ger&auml;t, oder &auml;ndert es, falls es exisitiert. Um
  683. z.Bsp. eine Lampe 10 Minuten nach der letzten Meldung eines Bewegungsmelders
  684. abzuschalten, k&ouml;nnte man folgendes definieren:
  685. <ul><code>
  686. define mdNtfy notify motionDetector defmod mdOff at +00:10 set lamp off
  687. </code></ul>
  688. Falls man statt defmod ein define verwenden w&uuml;rde, dann w&uuml;rde eine
  689. Meldung innerhalb von 10 Minuten nach der letzten Meldung zu einem Fehler
  690. f&uuml;hren, da mdOff noch existiert.
  691. <br>
  692. </ul>
  693. <!-- defmod end -->
  694. <a name="delete"></a>
  695. <h3>delete</h3>
  696. <ul>
  697. <code>delete &lt;devspec&gt;</code> <br>
  698. <br>
  699. L&ouml;scht etwas was mit dem <a href="#define">define</a> Befehl erstellt
  700. worden ist.<br>
  701. Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
  702. f&uuml;r Details der &lt;devspec&gt;.<br>
  703. Nach dem l&ouml;schen, wird das globale Ereignis "DELETED" erzeugt.<br>
  704. Beispiel:
  705. <ul>
  706. <code>delete lamp</code><br>
  707. </ul>
  708. <br>
  709. </ul>
  710. <!-- delete end -->
  711. <a name="deleteattr"></a>
  712. <h3>deleteattr</h3>
  713. <ul>
  714. <code>deleteattr &lt;devspec&gt; [&lt;attrname&gt;]</code> <br>
  715. <br>
  716. L&ouml;scht entweder ein einzelnes Attribut (siehe Abschnitt <a
  717. href="#attr">attr</a> ) oder alle Attribute eines Ger&auml;tes (falls
  718. kein &lt;attrname&gt; angegeben wird).<br>
  719. Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
  720. f&uuml;r Details der &lt;devspec&gt;.<br>
  721. Nach der Durchf&uuml;hrung das globale Ereignis "DELETEATTR" wird generiert.
  722. <br>
  723. Beispiele:
  724. <ul>
  725. <code>deleteattr lamp follow-on-for-timer</code><br>
  726. <code>deleteattr lamp</code><br>
  727. </ul>
  728. <br>
  729. </ul>
  730. <!-- deleteattr end -->
  731. <a name="deletereading"></a>
  732. <h3>deletereading</h3>
  733. <ul>
  734. <code>deletereading &lt;devspec&gt; &lt;readingname&gt;</code> <br>
  735. <br>
  736. Entfernt das Reading &lt;readingname&gt; f&uuml;r das spezifizierte
  737. Ger&auml;t. &lt;readingname&gt; ist ein perl Regular-Expression, was den
  738. vollst&auml;ndigen Namen des Readings erfassen muss.
  739. Mit gr&ouml;&szlig;ter Sorgfalt verwenden! FHEM kann abst&uuml;rzen, falls
  740. man lebenswichtige Readings entfernt.<br>
  741. Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
  742. f&uuml;r Details der &lt;devspec&gt;.<br>
  743. <br>
  744. Beispiele:
  745. <ul>
  746. <code>deletereading mySensor temp1</code><br>
  747. <code>deletereading mySensor temp\d+</code><br>
  748. </ul>
  749. <br>
  750. </ul>
  751. <!-- deletereading end -->
  752. <a name="displayattr"></a>
  753. <h3>displayattr</h3>
  754. <ul>
  755. <code>displayattr &lt;devspec&gt; [&lt;attrname&gt;]</code> <br>
  756. <br>
  757. Zeigt entweder den Wert eines Attributes an (falls &lt;attrname&gt;
  758. spezifiziert wurde) oder alle Attribute eines Ger&auml;tes.
  759. Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
  760. f&uuml;r Details der &lt;devspec&gt;.<br>
  761. Falls mehrere Ger&auml;te spezifiziert wurden, dann enth&auml;lt die Ausgabe
  762. den Namen der Ger&auml;te.
  763. <br>
  764. Beispiele:
  765. <ul>
  766. <code>
  767. fhem&gt; di WEB<br>
  768. menuEntries AlarmOn,/fhem?cmd=set%20alarm%20on<br>
  769. room Misc.<br>
  770. fhem&gt di WEB room<br>
  771. Misc.<br>
  772. </code>
  773. </ul>
  774. <br>
  775. </ul>
  776. <!-- displayattr end -->
  777. <a name="get"></a>
  778. <h3>get</h3>
  779. <ul>
  780. <code>get &lt;devspec&gt; &lt;type-specific&gt;</code>
  781. <br><br>
  782. Fragt einen Wert direkt&nbsp; (aktuell) vom Ger&auml;t ab und wartet auf eine
  783. Antwort. Eine allgemeine Liste m&ouml;glicher Paramter erhalten Sie mit<ul>
  784. <code>get &lt;device&gt; ?</code>
  785. </ul>
  786. Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
  787. f&uuml;r Details der &lt;devspec&gt;.<br>
  788. Jedes Ger&auml;t hat unterschiedliche &quot;get&quot;-Parameter. Lesen Sie Details bitte im
  789. zugeh&ouml;rigen Abschnitt nach.<br>
  790. <br>
  791. </ul>
  792. <!-- get end -->
  793. <a name="getstate"></a>
  794. <h3>getstate</h3>
  795. <ul>
  796. <code>getstate &lt;devspec&gt;</code>
  797. <br><br>
  798. Gibt einen kurzen, durch Leerzeichen getrennte Statusliste f&uuml;r &lt;devspec&gt;
  799. aus . Dies ist n&uuml;tzlich, um das Ger&auml;t in z.B. Cacti zu beobachten.<br>
  800. Beispiel:
  801. <ul><code>
  802. getstate lamp<br>
  803. state:1<br>
  804. <br>
  805. getstate fl<br>
  806. ack:0 actuator:2 day-temp:21.5 desired-temp:22.5 [...] measured-temp:22.9 [...]
  807. </code></ul>
  808. Bemerkung: Um diesen Befehl nutzen zu k&ouml;nnen, kopieren Sie bitte&nbsp; die
  809. Datei 99_getstate.pm aus dem Verzeichnis contrib/getstate/ in Ihr FHEM
  810. Verzeichnis.
  811. <br>
  812. </ul>
  813. <!-- getstate end -->
  814. <a name="include"></a>
  815. <h3>include</h3>
  816. <ul>
  817. <code>include &lt;filename&gt;</code> <br>
  818. <br>
  819. Liest (z.B. als Befehlszeile in der fhem.cfg) die in &lt;filename&gt;
  820. angegebene Datei in FHEM ein und interpretiert jede Dateizeile als FHEM
  821. Befehl. Dieses Befehl sollte nur von Experten verwendet werden.
  822. <br>
  823. </ul>
  824. <!-- include end -->
  825. <a name="inform"></a>
  826. <h3>inform</h3>
  827. <ul>
  828. <code>inform {on|off|timer|raw} [regexp]</code> <br>
  829. <br>
  830. Wenn auf &quot;on&quot; gesetzt und der Status eines Ger&auml;tes &auml;ndert
  831. sich, dann wird eine Nachricht an den Client gesendet. Dieser Befehl kann von
  832. anderen Programmen/Modulen dazu benutzt werden, eine Hinweisnachricht zu
  833. erhalten. <br> Die Option &quot;timer&quot; f&uuml;gt&nbsp; der Nachricht
  834. einen Zeitstempel hinzu. Hinweis: Dieser Befehl erleichtert Ihnen die bessere
  835. Kontrolle in <a href="#notify">notify</a> oder <a href="#FileLog">FileLog</a>
  836. , wann welche Ereignisse erzeugt wurden.
  837. <br>
  838. </ul>
  839. <!-- inform -->
  840. <a name="list"></a>
  841. <h3>list</h3>
  842. <ul>
  843. <code>list [devspec] [value]</code><br>
  844. oder<br>
  845. <code>list {-r|-R} devspec</code><br>
  846. <br><br>
  847. Auflistung aller &quot;definitions&quot;, &quot;notify&quot; und
  848. &quot;at&quot;-Definitionen. Dies ist eines der wenigen Befehle, die im
  849. Normalfall eine Zeichenkette ausgeben.<br> Siehe den Abschnitt &uuml;ber <a
  850. href="#devspec">Ger&auml;te-Spezifikation</a> f&uuml;r Details der
  851. &lt;devspec&gt;.<br>
  852. <br> Wenn value angegeben ist, der von ( DEF, TYPE, usw) oder reading
  853. (actuator, measured-temp) f&uuml;r alle Ger&auml;te die in devspec angegeben
  854. sind. <br><br> Beispiel:
  855. <pre><code>fhem&gt; list
  856. Type list <name> for detailed info.
  857. Internal:
  858. global (Internal)
  859. FHZ:
  860. FHZ (fhtbuf: 23)
  861. FS20:
  862. Btn4 (on-old-for-timer)
  863. Roll1 (on)
  864. Stehlampe (off)
  865. FHT:
  866. fl (measured-temp: 21.1 (Celsius))
  867. KS300:
  868. out1 (T: 2.9 H: 74 W: 2.2 R: 8.2 IR: no)
  869. at:
  870. at_rollup (Next: 07:00:00)
  871. notify:
  872. ntfy_btn4 (active)
  873. FileLog:
  874. avglog (active)
  875. </name></code></pre>
  876. Wenn Sie f&uuml;r <code>name</code> einen Ger&auml;tenamen eingeben, dann
  877. erhalten Sie einen genauen Status f&uuml;r das in<code> name</code>
  878. angegebene Ger&auml;t angezeigt, z.B.:
  879. <pre><code> fhem&gt; list fl
  880. Internals:
  881. CODE 5102
  882. DEF 5102
  883. NAME fl
  884. NR 15
  885. STATE measured-temp: 21.1 (Celsius)
  886. TYPE FHT
  887. IODev FHZ
  888. Attributes:
  889. room Heizung
  890. Readings:
  891. 2006-11-02 09:45:56 actuator 19%
  892. [...]
  893. </code></pre>
  894. Mit der -r (raw) Option werden die Daten in einem f&uuml;r fhem.cfg bzw.
  895. fhem.state passenden Format generiert. -R liefert diese Daten auch f&uuml;r
  896. alle von diesem Ger&auml;t vermutlich ben&ouml;gten Ger&auml;te.
  897. Achtung: die Bestimmung dieser Liste ist ungenau.
  898. </ul>
  899. <!-- list end -->
  900. <a name="modify"></a>
  901. <h3>modify</h3>
  902. <ul>
  903. <code>modify &lt;name&gt; &lt;type-dependent-options&gt;</code>
  904. <br><br>
  905. Dieser Befehl wird benutzt, um Definitionen zu ver&auml;ndern. Er ist
  906. n&uuml;tzlich, um <a href="#at">at</a> oder <a href="#notify">notify</a>
  907. Definitionen zu ver&auml;ndern. Wenn Sie einen Wert einer an Definition
  908. ver&auml;ndern, dann wird nur der f&uuml;r die Zeit zust&auml;ndige Teil
  909. ge&auml;ndert. Im Falle der Ver&auml;nderung einer Definition vom Typ
  910. &quot;notify&quot; wird nur der&nbsp; regex Teil ge&auml;ndert. Alle anderen
  911. Werte (Stati, Attribute,&nbsp; etc) bleiben erhalten.
  912. After modify, the global event "MODIFIED" will be generated.
  913. Nach der Durchf&uuml;hrung das globale Ereignis "MODIFIED" wird generiert.
  914. <br><br>
  915. Beispiel:
  916. <ul>
  917. <code>define lampon at 19:00 set lamp on</code><br>
  918. <code>modify lampon *19:00</code><br>
  919. <code>modify lampon 19:00 set lamp on-for-timer 16</code><br>
  920. </ul>
  921. </ul>
  922. <!-- modify end -->
  923. <a name="quit"></a>
  924. <h3>quit</h3>
  925. <ul>
  926. <code>quit</code>
  927. <br><br>
  928. Dieser Befehl wird in einer TCP/IP Session benutzt um die Client-Sitzung zu
  929. beenden.<br>
  930. Wird dieser Befehl in einem Skript benutzt, wird das abarbeiten des Skriptes
  931. beendet.
  932. <br><br>
  933. Beispiel:
  934. <ul>
  935. <code>quit</code>
  936. </ul>
  937. </ul>
  938. <!-- quit end -->
  939. <a name="reload"></a>
  940. <h3>reload</h3>
  941. <ul>
  942. <code>reload &lt;module&gt;</code>
  943. <br><br>
  944. Reload the given module from the module directory. It is a convenient way to
  945. test modules whithout restarting the program.
  946. <br><br>
  947. Example:
  948. <ul>
  949. <code>reload 99_PRIV</code>
  950. </ul>
  951. </ul>
  952. <!-- reload end -->
  953. <a name="rename"></a>
  954. <h3>rename</h3>
  955. <ul>
  956. <code>rename &lt;oldname&gt; &lt;newname&gt;</code>
  957. <br><br>
  958. Benennt ein Ger&auml;t von &lt;oldname&gt; in &lt;newname&gt;,
  959. einschliesslich der Attribute, um. Das globale Ereignis &quot;RENAMED&quot;
  960. wird erstellt, Lesen Sie bitte den Abschnitt &quot;notify&quot; durch um
  961. Details zu erfahren.
  962. <br><br>
  963. Beispiel:
  964. <ul>
  965. <code>rename FHT_1234 fht.kitchen</code>
  966. </ul>
  967. </ul>
  968. <!-- rename end -->
  969. <a name="rereadcfg"></a>
  970. <h3>rereadcfg</h3>
  971. <ul>
  972. <code>rereadcfg [fhem-config-file]</code>
  973. <br><br>
  974. Liest entweder die aktuelle Konfigurationsdatei oder die angegebene Datei
  975. ein.<br> Der Ablauf ist dabei wie folgt:&nbsp; Zuerst wird das <a
  976. href="#statefile">statefile</a> gesichert. Dann werden alle Ger&auml;te
  977. gel&ouml;scht. Dann wird die aktuelle Konfigurationsdatei (oder die
  978. angegebene Datei) eingelesen zuletzt wird das statefile neu eingelesen.<br>
  979. Wenn dieser Ablauf abgeschlossen ist, wird das globale REREADCFG Ereignis
  980. ausgel&ouml;st. Alle existierenden Verbindungenwerden bis zum
  981. &quot;rereadcfg&quot; Ereignis getrennt.
  982. <br><br>
  983. Beipiel:
  984. <ul>
  985. <code>rereadcfg</code>
  986. </ul>
  987. </ul>
  988. <!-- rereadcfg end -->
  989. <a name="save"></a>
  990. <h3>save</h3>
  991. <ul>
  992. <code>save [&lt;configfile&gt;]</code>
  993. <br><br>
  994. Sichert zuerst das <a href="#statefile">statefile</a> und dann das
  995. <a href="#configfile">configfile</a>. Wenn ein Parameter angegeben wird dieser
  996. anstelle der allgemeinen Konfigurationsdatei benutzt.<br><br>
  997. Hinweise:
  998. <ul>
  999. <li>Der Befehl speichert nur &quot;definitions&quot; und
  1000. &quot;attributes&quot; aber keine (set/get) Befehle die vorher Teil der
  1001. Konfigurationsdatei waren. Wenn Sie solche Befehle nach der
  1002. Initialisierung (z.B. <a href="#FHZset">FHTcode</a>)
  1003. ben&ouml;tigen,dann m&uuml;ssen Sie sie mit <a href="#notify">notify</a>
  1004. triggern wenn das INITIALIZED Ereignis eintritt.</li>
  1005. <li>Der Befehl &quot;save&quot; versucht Kommentarzeilen&nbsp; (Zeilen die
  1006. mit # beginnen) und &quot;include&quot;-Zeilen zu erhalten, aber arbeitet
  1007. nicht korrekt wenn FHEM f&uuml;r diese Dateien keine Schreibrechte
  1008. besitzt.</li>
  1009. <li>Vor dem &Uuml;berschreiben der Dateien wird die alte Version gesichert,
  1010. siehe <a href="#restoreDirs">restoreDirs</a> f&uuml;r Einzelheiten.</li>
  1011. </ul>
  1012. </ul>
  1013. <!-- save end -->
  1014. <a name="set"></a>
  1015. <h3>set</h3>
  1016. <ul>
  1017. <code>set &lt;devspec&gt; &lt;type-specific&gt;</code>
  1018. <br><br>
  1019. Der Befehl setzt Ger&auml;teparameter/sendet Signale an ein Ger&auml;t. Sie
  1020. erhalten eine Liste verf&uuml;gbarer Parameter wenn Sie folgendes eingeben:
  1021. <ul>
  1022. <code>set &lt;name&gt; ?</code>
  1023. </ul>
  1024. Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
  1025. f&uuml;r Details der &lt;devspec&gt;.<br>
  1026. Der &quot;set&quot;-Befehl gibt nur bei Fehler einen Wert zur&uuml;ck.
  1027. <br><br>
  1028. Jedes Ger&auml;t hat verschiedene Parameter die mit &quot;set&quot; gesetzt
  1029. werden k&ouml;nnen. Lesen Sie bitte den entsprechenden Abschnitt f&uuml;r
  1030. das Ger&auml;t f&uuml;r Details durch.
  1031. <br><br>
  1032. Ab featurelevel 5.7 ersetzt das set und setreading Befehl
  1033. <ul>
  1034. <li>[device:name] mit dem Wert des Readings, Internals oder Attributes
  1035. f&uuml;r device, falls sowohl device, als auch Reading, Internal oder
  1036. Attribut existiert, und nicht leer ist.
  1037. <ul>
  1038. <li>Man kann einen der Pr&auml;fixe r:, i: oder a: verwenden, um die
  1039. Suche einzuschr&auml;nken, genau wie im devspec.</li>
  1040. <li>Das Suffix :d extrahiert die erste Zahl.</li>
  1041. <li>Das Suffix :i extrahiert die erste Zahl als Ganzzahl.</li>
  1042. <li>Das Suffix :r&lt;n&gt; extrahiert die erste Zahl, und rundet sie auf
  1043. &lt;n&gt; Dezimalstellen. Falls &lt;n&gt; fehlt, dann wird auf eine
  1044. Dezimalstelle gerundet.</li>
  1045. <li>Das Suffix :t liefert den Zeitstempel des Readings</li>
  1046. <li>Das Suffix :sec liefert Anzahl der Sekunden seit &Auml;nderung
  1047. des Readings.</li>
  1048. </ul>
  1049. Beispiel:
  1050. <ul>
  1051. set Lamp blink [blinkDummy:number] [r:blinkDummy:duration:d]
  1052. </ul>
  1053. </lu>
  1054. <li>{(perlExpression)} mit dem Ergebnis der perlExpression.
  1055. $DEV wird dabei mit dem Namen des vom set betroffenen Ger&auml;tes ersetzt.
  1056. </li>
  1057. </ul>
  1058. Diese Ersetzungen sind unter dem Namen "set magic" bekannt.
  1059. <br><br>
  1060. <a name="setExtensions"></a>
  1061. Manche Module unterst&uuml;tzen die sog. <b>set extensions</b>, und in der
  1062. entsprechenden Dokumentation ist ein Link auf diesem Text zu finden. Falls im
  1063. Modul selber einer der unten aufgef&uuml;hrten Befehle implementiert ist, dann
  1064. wird die Modul-Implementation verwendet.
  1065. <ul>
  1066. <li>on-for-timer &lt;sekunden&gt<br>
  1067. Das Ger&auml;t wird per "on" eingeschaltet, und ein interner Zeitgeber
  1068. wird erstellt, um nach &lt;sekunden&gt; ein "off" Kommando
  1069. auszuf&uuml;hren. Um diesen Zeitgeber zu entfernen sollte man das
  1070. Kommando mit dem Argument 0 erneut aufrufen. Achtung: dieser Zeitgeber
  1071. wird bei einem restart nicht gespeichert.</li>
  1072. <li>off-for-timer &lt;sekunden&gt<br>
  1073. siehe on-for-timer.</li>
  1074. <li>on-till &lt;timedet&gt<br>
  1075. Das Ger&auml;t wird per "on" eingeschaltet, und ein at Instanz wird
  1076. definiert, um es um &lt;timedet&gt; (Format: HH:MM[:SS]) per off
  1077. auszuschalten. Diese at Instanz ist sichtbar unter dem Namen
  1078. ger&auml;teName+"_till". Um das Ausschalten zu deaktivieren
  1079. l&ouml;scht man diese at Definition. Achtung: das Ein/Ausschalten wird
  1080. nicht durchgef&uuml;hrt, falls die aktuelle Uhrzeit nach der
  1081. spezifizierten Zeit ist, um folgende Szenarien zu vereinfachen:
  1082. <ul><code>
  1083. define morningLight at *06:00 set Lamp on-till {sunrise()}
  1084. </code></ul>
  1085. </li>
  1086. <li>on-till-overnight &lt;timedet&gt<br>
  1087. Wie on-till, aber die aktuelle Uhrzeit wird nicht mit der
  1088. Spezifizierten verglichen, damit folgendes funktioniert:
  1089. <ul><code>
  1090. define nightLight at *{sunset()} set Lamp on-till-overnight 01:00
  1091. </code></ul>
  1092. </li>
  1093. <li>off-till &lt;timedet&gt<br>
  1094. siehe on-till.</li>
  1095. <li>off-till-overnight &lt;timedet&gt<br>
  1096. siehe on-till-overnight.</li>
  1097. <li>blink &lt;anzahl&gt; &lt;blink-periode&gt;<br>
  1098. Das Ger&auml;t wird mit "on" f&uuml;r die &lt;blink-periode&gt;
  1099. eingeschaltet, und das wird nach &lt;blink-periode&gt; wiederholt. Um
  1100. das Blinken vorzeitig zu stoppen spezifiziert man "0 0" als
  1101. Argument.</li>
  1102. <li>intervals &lt;from1&gt;-&lt;till1&gt; &lt;from2&gt;-&lt;till2&gt;...
  1103. </br>
  1104. Das Ger&auml;t wird f&uuml;r die spezifizierten Intervalle
  1105. eingeschaltet. Die einzelnen Intervalle sind Leerzeichen getrennt, und
  1106. ein Intervall besteht aus zwei Zeitspezifikationen, die mit einem "-"
  1107. getrennt sind.
  1108. </li>
  1109. </ul>
  1110. Beispiele:
  1111. <ul>
  1112. <code>
  1113. set switch on-for-timer 12.5<br>
  1114. set switch on-till {sunset()}<br>
  1115. set switch blink 3 1<br>
  1116. set switch intervals 08:00-12:00 13:00-18:00<br>
  1117. </code>
  1118. </ul>
  1119. </ul>
  1120. </ul>
  1121. <!-- set end -->
  1122. <a name="setdefaultattr"></a>
  1123. <h3>setdefaultattr</h3>
  1124. <ul>
  1125. <code>setdefaultattr [&lt;attrname&gt; [&lt;value&gt;]] </code><br>
  1126. <br>
  1127. F&uuml;gt Sie ein Standardattribut hinzu. Jedem nach dieser Zuweisung definierte
  1128. Ger&auml;t wird dieses Attribut zugewiesen. Wenn kein "attrname" angegeben wird,
  1129. dann wird die Liste der Standardattribute gel&ouml;scht.
  1130. <br><br>
  1131. Beispiel, um das Attribut "room kitchen" und "loglevel 4" allen Lampen
  1132. zuzuweisen:
  1133. <ul>
  1134. <code>setdefaultattr room kitchen</code><br>
  1135. <code>setdefaultattr loglevel 4</code><br>
  1136. <code>define lamp1 FS20 1234 11</code><br>
  1137. <code>define lamp2 FS20 1234 12</code><br>
  1138. <code>define lamp3 FS20 1234 13</code><br>
  1139. <code>setdefaultattr</code><br>
  1140. </ul>
  1141. <br>
  1142. Anmerkungen:<br>
  1143. <ul>
  1144. <li>es gibt keine M&ouml;glichkeit, ein einzelnes Standardattribut aus der Liste
  1145. tu l&ouml;schen.</li>
  1146. </ul>
  1147. </ul>
  1148. <!-- setdefaultattr end -->
  1149. <a name="setreading"></a>
  1150. <h3>setreading</h3>
  1151. <ul>
  1152. <code>setreading &lt;devspec&gt; &lt;reading&gt; &lt;value&gt;</code>
  1153. <br><br>
  1154. Der Befehl setzt das Reading &lt;reading&gt; auf den Wert &lt;value&gt; ohne
  1155. Signale an das betroffene Ger&auml;t zu senden, generiert aber Ereignisse und
  1156. die &uuml;bliche eventMap und stateFormat Umwandlung wird auch
  1157. durchgef&uuml;hrt.
  1158. <br>
  1159. Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
  1160. f&uuml;r Details der &lt;devspec&gt; und die Beschreibung des set Befehls
  1161. f&uuml;r Ersetzung.<br>
  1162. <br>
  1163. Beispiel:
  1164. <ul>
  1165. setreading lampe state on
  1166. </ul>
  1167. Achtung: setreading generiert kein Event f&uuml;r ein Ger&auml;t X, falls es
  1168. aus einem notify f&uuml;r Ger&auml;t X aufgerufen wurde. In so einem Fall
  1169. k&ouml;nnte man auf "sleep 0.1; setreading X Y Z" ausweichen.
  1170. </ul>
  1171. <!-- setreading end -->
  1172. <a name="setstate"></a>
  1173. <h3>setstate</h3>
  1174. <ul>
  1175. <code>setstate &lt;devspec&gt; &lt;value&gt;</code>
  1176. <br><br>
  1177. Der Befehl setzt den STATE Eintrag des Ger&auml;tes direkt, ohne Ereignisse
  1178. zu generieren oder ein Signal an das Ger&auml;t zu senden. Dieser Eintrag ist
  1179. ma&szlig;gebend f&uuml;r die Status-Anzeige in diversen Frontends. Dieser
  1180. Befehl wird auch im <a href="#statefile">statefile</a> benutzt.<br> Siehe den
  1181. Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a> f&uuml;r
  1182. Details der &lt;devspec&gt;.<br> <br>
  1183. Beispiel:
  1184. <ul>
  1185. setstate lampe An
  1186. </ul>
  1187. </ul>
  1188. <!-- setstate end -->
  1189. <a name="shutdown"></a>
  1190. <h3>shutdown</h3>
  1191. <ul>
  1192. <code>shutdown [restart|exitValue]</code>
  1193. <br><br>
  1194. Der Befehl f&auml;hrt den Server herunter (nach dem sichern aller <a
  1195. href="#statefile">Ger&auml;testati</a>). Er triggert das global:SHUTDOWN
  1196. Ereignis. Mit der optionalen Parameter restart startet FHEM danach neu.
  1197. exitValue ist bei bestimmten Start-programmen von n&ouml;ten.
  1198. <br><br>
  1199. Beispiel:
  1200. <ul>
  1201. <code>shutdown</code><br>
  1202. <code>shutdown restart</code><br>
  1203. <code>shutdown 1</code>
  1204. </ul>
  1205. </ul>
  1206. <!-- shutdown end -->
  1207. <a name="sleep"></a>
  1208. <h3>sleep</h3>
  1209. <ul>
  1210. <code>sleep &lt;sec&gt; [&lt;id&gt;] [quiet]</code>
  1211. <br><br>
  1212. sleep gefolgt von weiteren Befehlen ist vergleichbar mit einem namenlosen <a
  1213. href="#at">at</a> Kommando, es f&uuml;hrt die nachfolgenden Befehle aus,
  1214. nachdem es die spezifizierte Zeitspanne gewartet hat. Die Einheit ist
  1215. Sekunde, Millisekunden genau, da man Nachkommastellen spezifizieren
  1216. kann.<br><br>
  1217. Ein sleep mit einer &lt;id&gt; ersetzt ein sleep mit der gleichen &lt;id&gt;
  1218. and can mit <a href="#cancel">cancel</a> entfernt werden.
  1219. Falls sleep in at/notify/etc aufgerufen wurde, und die nachfolgenden
  1220. Kommandos einen nicht leeren Text zur&uuml;ckgeliefert haben, dann wird
  1221. dieser Text mit loglevel 2 protokolliert.<br>
  1222. quiet vermeidet diese Protokollierung.
  1223. <br><br>
  1224. Beispiele:
  1225. <ul>
  1226. <code>sleep 0.5</code><br>
  1227. <code>define n3 notify btn3.* set lamp toggle;;sleep 0.5;;set lamp
  1228. toggle</code><br>
  1229. <code>define a3 at +*00:05 set Windsensor 1w_measure;; sleep 2 quiet;; get
  1230. Windsensor 1w_temp</code>
  1231. </ul>
  1232. <br>
  1233. Bemerkung: falls sleep von keinem Befehl gefolgt wird, dann wird FHEM
  1234. blockiert. Das ist unerw&uuml;nscht, und im FHEM-Log wird eine Warnung
  1235. protokolliert.
  1236. </ul>
  1237. <!-- sleep end -->
  1238. <a name="trigger"></a>
  1239. <h3>trigger</h3>
  1240. <ul>
  1241. <code>trigger &lt;devspec&gt; &lt;event&gt;</code>
  1242. <br><br>
  1243. Generiert das Ereignis &lt;event&gt;, was z.Bsp. ein <a
  1244. href="#notify">notify</a> ansto&szlig;en kann, oder den FileLog zum
  1245. protokollieren dieser Zeile bewegen kann.<br>
  1246. Siehe den Abschnitt &uuml;ber <a href="#devspec">Ger&auml;te-Spezifikation</a>
  1247. f&uuml;r Details der &lt;devspec&gt;.<br>
  1248. <br>
  1249. Beispiel:
  1250. <ul>
  1251. <code>trigger btn3 on</code>
  1252. </ul>
  1253. </ul>
  1254. <!-- trigger end -->
  1255. <!-- commands end - diese Zeile nicht entfernen! -->
  1256. <a name="global"></a>
  1257. <h3>global</h3>
  1258. <ul>
  1259. Das &quot;global&quot; Ger&auml;t wird benutzt, um allgemeing&uuml;ltige
  1260. Attribute zu setzen. Es wird automatisch erstellt und kann nicht
  1261. gel&ouml;scht oder umbenannt werden. Es hat keine &quot;set&quot; oder
  1262. &quot;get&quot; Parameter.<br>
  1263. <br>
  1264. <b>Define</b><ul>N/A</ul><br>
  1265. <b>Set </b><ul>N/A</ul><br>
  1266. <b>Get</b><ul>N/A</ul><br>
  1267. <b>Attributes</b>
  1268. <ul>
  1269. <li><a href="#archivedir">archivedir</a></li>
  1270. <li><a href="#archivecmd">archivecmd</a></li>
  1271. <li><a href="#nrarchive">nrarchive</a></li>
  1272. <a name="archivesort"></a>
  1273. <li>archivesort<br>
  1274. archivesort kann auf dem (voreingestellten) Wert alphanum oder timestamp
  1275. gesetzt werden, und bestimmt die Methode f&uuml;r die
  1276. Reihenfolgenberechnung der Dateien f&uuml;r nrarchive.<br>
  1277. </li><br>
  1278. <a name="autoload_undefined_devices"></a>
  1279. <li>autoload_undefined_devices<br>
  1280. wenn dieses Attribut gesetzt ist, werden die zu einer neu empfangenen
  1281. Nachricht zugeh&ouml;rigen Module automatisch geladen.&nbsp; Dies
  1282. erfolgt vom <a href="#autocreate"> autocreate</a> Ger&auml;t, um so
  1283. automatisch ein FHEM-Ger&auml;t bei erreichen einer entsprechenden
  1284. Nachricht zu erstellen.
  1285. </li><br>
  1286. <a name="backupcmd"></a>
  1287. <li>backupcmd<br>
  1288. Sie k&ouml;nnen das Update durch Ihre eigenen Befehle/Skripts
  1289. durchf&uuml;hren indem Sie dieses Attribut setzen. Wenn dieses
  1290. Attribut gesetzt ist, dann startet es als ein SHELL-Befehl und erstellt
  1291. eine durch Leerzeichen getrennte Liste von Dateien/Verzeichnissen als
  1292. <strong>ein</strong> Argument zum Befehl, z.B.:
  1293. <br>
  1294. <ul>
  1295. <code>"/etc/fhem.cfg /var/log/fhem/fhem.save /usr/share/fhem/contrib
  1296. /usr/share/fhem/FHEM /usr/share/fhem/foo /usr/share/fhem/foobar
  1297. /usr/share/fhem/www"</code>
  1298. </ul>
  1299. Bemerkung: Ihr Befehl/Skript muss die Zeichenkette "backup done"
  1300. zur&uuml;ckgeben oder eine entsprechende Zeichenkette um
  1301. Fehlermeldungen auszugeben, damit die Zusammenarbeit mit update
  1302. funktioniert!<br> Dieses Attribut wird vom <a href="#backup">backup</a>
  1303. Befehl benutzt.<br>
  1304. Beispiel:<br>
  1305. <ul>
  1306. attr global backupcmd /usr/local/bin/myBackupScript.sh
  1307. </ul>
  1308. </li><br>
  1309. <a name="backupdir"></a>
  1310. <li>backupdir<br>
  1311. Ein Ordner um die komprimierten Sicherheitsdateien zu speichern.
  1312. Dieses Attribut wird vom <a href="#backup">backup</a> Befehl
  1313. benutzt.<br> Beispiel:<br>
  1314. <ul>
  1315. attr global backupdir /Volumes/BigHD
  1316. </ul>
  1317. </li><br>
  1318. <a name="backupsymlink"></a>
  1319. <li>backupsymlink<br>
  1320. Wenn dieses Attribut auf etwas anderes als "no", dann unterst&uuml;tzt
  1321. der Archviierungsbefehl &quot;tar&quot; symbolische Links in Ihrem
  1322. Backup. Andererseits, wenn dieses Attribut auf "no" gesetzt ist werden
  1323. symbolische Links vom Befehl &quot;tar&quot; ignoriert. Dieses
  1324. Attribut wird vom <a href="#backup">backup</a> Befehl benutzt.<br>
  1325. Beispiel:<br>
  1326. <ul>
  1327. attr global backupsymlink yes
  1328. </ul>
  1329. </li><br>
  1330. <a name="blockingCallMax"></a>
  1331. <li>blockingCallMax<br>
  1332. Begrenzt die Anzahl der parallel laufenden Prozesse, die von der
  1333. BlockingCall FHEM Hilfsroutine gestartet wurden. Sinnvoll auf weniger
  1334. leistungsfaehigen Hardware.
  1335. </li><br>
  1336. <a name="configfile"></a>
  1337. <li>configfile<br>
  1338. Enth&auml;lt den Namen der FHEM Konfigurationsdatei. Wenn <a
  1339. href="#save">save</a> ohne Argumente aufgerufen wird dann wird die
  1340. Ausgabedatei unter diesem Dateinamen gespeichert.
  1341. </li><br>
  1342. <a name="commandref"></a>
  1343. <li>commandref<br>
  1344. Falls der Wert "full" (die Voreinstellung) ist, dann wird nach jedem
  1345. update ein komplettes commandref.html generiert. Falls der Wert
  1346. "modular" ist, dann wird die Moduldokumentation erst nach Bedarf
  1347. waehrend der Laufzeit per JavaScript geladen.
  1348. </li><br>
  1349. <a name="dnsHostsFile"></a>
  1350. <li>dnsHostsFile<br>
  1351. Falls dnsServer gesetzt ist, wird die angegebene Datei nach dem
  1352. Hostnamen durchsucht. Um die vom System verwendete Datei zu benutzen,
  1353. ist es unter Linux/Unix/OSX auf /etc/hosts und unter Windows auf
  1354. C:\windows\system32\drivers\etc\hosts zu setzen. Achtung: es wird nur
  1355. IPv4 unterst&uuml;tzt.
  1356. </li><br>
  1357. <a name="dnsServer"></a>
  1358. <li>dnsServer<br>
  1359. Enth&auml;lt die IP Adresse des DNS Servers. Die von bestimmten Modulen
  1360. (oder eigenen Code) aufgerufene HttpUtils_NonblockingGet wird auch bei
  1361. der DNS Aufl&ouml;sung nicht mehr blockieren, falls dieses Attribut
  1362. gesetzt ist, da es in diesem Fall FHEM eigene Routinen aufgerufen
  1363. werden. Sonst werden die OS-eigenen, blockierenden Routinen inet_aton
  1364. bzw gethostbyname aufgerufen.
  1365. </li><br>
  1366. <a name="holiday2we"></a>
  1367. <li>holiday2we<br>
  1368. Wenn dieses Attribut gesetzt wurde, dann wird die <a
  1369. href="#perl">$we</a> Variable als &quot;true&quot; betrachtet, wenn der
  1370. Wert der <a href="#holiday">holiday</a> Variable zu diesem Attribut
  1371. nicht &quot;none&quot; ist.<br>
  1372. Beispiel:<br>
  1373. <ul>
  1374. attr global holiday2we hessen
  1375. </ul>
  1376. </li><br>
  1377. <a name="featurelevel"></a>
  1378. <li>featurelevel<br>
  1379. Aktiviere bzw. deaktiviere bestimmte alte oder neue Funktionen, basierend
  1380. auf die FHEM Version. Z.Bsp. das $value hash f&uuml;r notify wird nur bis featurelevel 5.6
  1381. bef&uuml;llt, da es unerw&uuml;nscht ist. Stattdessen sollte man die
  1382. Value() Funktion verwenden.
  1383. </li><br>
  1384. <a name="logdir"></a>
  1385. <li>logdir<br>
  1386. Falls gesetzt, wird %L in dem logfile Attribut (oder in der Dateinamen
  1387. Spezifikation des FileLog Moduls) durch den Wert des Attributes ersetzt.
  1388. Achtung: &auml;ndern des Wertes bewirkt nicht das Verschieben bereits
  1389. erstellter Dateien, und kann zu diversen Problemen f&uuml;hren.
  1390. </li><br>
  1391. <a name="logfile"></a>
  1392. <li>logfile<br>
  1393. Gibt das Logfile an, in welches gespeichert werden soll.&nbsp; Sie
  1394. k&ouml;nnen "-" f&uuml;r die Ausgabe in das stdout-Ger&auml;t. In
  1395. diesem Fall stellt sich der Server nicht selbst in den Hintergrund.<br>
  1396. Der Name der Logdatei kann auch &quot;wildcards&quot; enthalten, um
  1397. eine einfachere Abfolge f&uuml;r die Dateien zu erreichen. Lesen Sie
  1398. bitte den Abschnitt <a href="#FileLog">FileLog</a>. F&uuml;gen Sie die
  1399. Attribute <code>archivecmd / archivedir / nrarchive</code> zum
  1400. <code>global</code> Ger&auml;t hinzu wie Sie es auch bei einem FileLog
  1401. device tun k&ouml;nnten.<br> Sie k&ouml;nnen den Namen der Logdatei
  1402. mit&nbsp; <code>{ $currlogfile }festlegen</code>.
  1403. </li><br>
  1404. <a name="modpath"></a>
  1405. <li>modpath<br>
  1406. Mit modpath geben Sie den Pfad zu dem Verzeichnis der <code>FHEM</code>
  1407. Module an. Der Pfad enth&auml;lt <b>nicht</b> das Verzeichnis FHEM.
  1408. Durch das setzen der Attribute, wird das Verzeichnis nach Dateinamen in
  1409. der Form NN_&lt;NAME&gt;.pm durchsucht, und sie werden f&uuml;r die
  1410. Definition von Ger&auml;ten unter dem Namen &lt;NAME&gt; verf&uuml;gbar
  1411. gemacht. Wenn das erste Ger&auml;t des Typs &lt;NAME&gt; definiert
  1412. wird, werden die entsprechenden Module geladen und in dem Modul die
  1413. entsprechende Funktion mit dem Namen &lt;NAME&gt;_Initialize wird
  1414. aufgerufen. Eine Ausnahme bilden Module die mit der Nummer 99 im
  1415. Dateinamen beginnen. Diese enthalten PERL-Hilfsfunktionen und
  1416. werden zur Startzeit geladen.
  1417. </li><br>
  1418. <a name="motd"></a>
  1419. <li>motd<br>
  1420. Nachricht des Tages. Wird im Begr&uuml;&szligungsbildschirm von FHEM
  1421. angezeigt, oder direkt beim Start einer &quot;telnet&quot; Sitzung,
  1422. bevor der fhem&gt; Prompt erscheint. Der SecurityCheck setzt motd wenn
  1423. es bisher nicht gesetzt ist. Um das zu verhindern, k&ouml;nnen sie den
  1424. Wert von motd auf &quot;none&quot; setzen.
  1425. motd wird auch verwendet, um Fehlermeldungen w&auml;hrend des
  1426. FHEM-Starts zu sammeln und anzuzeigen.
  1427. </li><br>
  1428. <a name="mseclog"></a>
  1429. <li>mseclog<br>
  1430. Wenn dieses Attribut gesetzt ist, enthalten Datums/Zeiteintr&auml;ge
  1431. (timestamp) in der Logdatei einen Millisekunden-Eintrag.
  1432. </li><br>
  1433. <a name="nofork"></a>
  1434. <li>nofork<br>
  1435. Wenn dieses Attribut oder "attr global logfile -" gesetzt ist,
  1436. dann wird FHEM nicht im Hintergrund abgearbeitet.
  1437. Dieses Attribut ist bei einigen FHEM Installationen auf FRITZ!-Boxen
  1438. notwendig, und wid fuer Windows automatisch gesetzt.
  1439. </li><br>
  1440. <a name="pidfilename="></a>
  1441. <li>pidfilename<br>
  1442. Schreibt die PERL Prozess-ID in die angegebene Datei. Der Server
  1443. l&auml;uft als Daemon und einige Distributionen wollen anhand der PID
  1444. testen, ob der FHEM Prozess l&auml;uft. Die Datei wird bei
  1445. Ausf&uuml;hrung des &quot;shutdown&quot;-Kommandos gel&ouml;scht.
  1446. </li><br>
  1447. <a name="proxy"></a>
  1448. <li>proxy<br>
  1449. IP:PORT des proxy Servers, wird von HttpUtils benutzt.
  1450. </li><br>
  1451. <a name="proxyAuth"></a>
  1452. <li>proxyAuth<br>
  1453. Base64 kodiertes Benutzername:Passwort
  1454. </li><br>
  1455. <a name="proxyExclude"></a>
  1456. <li>proxyExclude<br>
  1457. Regexp, um bestimmte Hosts nicht via proxy zu kontaktieren.
  1458. </li><br>
  1459. <a name="restoreDirs"></a>
  1460. <li><a name="restoreDirs">restoreDirs</a><br>
  1461. update sichert jede Datei vor dem &Uuml;berschreiben mit der neuen
  1462. Version aus dem Web. F&uuml;r diesen Zweck wird zuerst ein restoreDir
  1463. Verzeichnis in der global modpath Verzeichnis angelegt, und danach
  1464. ein Unterverzeichnis mit dem aktuellen Datum. In diesem Verzeichnis
  1465. werden vor dem &Uuml;berschreiben die alten Versionen der Dateien
  1466. gerettet. Die Voreinstellung ist 3, d.h. die letzten 3
  1467. Datums-Verzeichnisse werden aufgehoben, und die &auml;lteren entfernt.
  1468. <br>
  1469. Auch fhem.cfg und fhem.state wird auf diese Weise vor dem ausf&uuml;ren
  1470. von save gesichert. Zum restaurieren der alten Dateien kann man das
  1471. restore Befehl verwenden.<br>
  1472. Falls man den Wert auf 0 setzt, dann ist dieses Feature deaktiviert.
  1473. </li><br>
  1474. <li><a href="#fheminfo">sendStatistics</a><br>
  1475. <a name="statefile"></a>
  1476. <li>statefile<br>
  1477. Dieses Attribut legt den Namen der Datei fest, in die
  1478. Statusinformationen aller Ger&auml;te gespeichert werden&nbsp; bevor der
  1479. Server heruntergefahren wird. Falls diese Datei nicht angegeben wird, so
  1480. werden keinerlei Informationen gesichert.
  1481. </li><br>
  1482. <li><a href="#title">title</a><br>
  1483. <li><a href="#fheminfo">uniqueID</a>
  1484. <a name="useInet6"></a>
  1485. <li>useInet6<br>
  1486. Die HttpUtils Routinen verwenden IPv6 f&uuml;r die Kommunikation, falls
  1487. der Server eine IPv6 Adresse hat. Achtung: das Perl-Modul
  1488. IO::Socket::INET6 wird ben&ouml;tigt.
  1489. </li><br>
  1490. <a name="userattr"></a>
  1491. <li>userattr<br>
  1492. Enth&auml;lt eine durch Leerzeichen getrennte Liste in welcher die
  1493. Namen zus&auml;tzlicher Attribute aufgef&uuml;hrt sind. Diese
  1494. m&uuml;ssen zuerst in dieser Liste definiert werden, bevor sie
  1495. (bei allen Ger&auml;ten) angewendet werden k&ouml;nnen.<br>
  1496. userattr kann auch f&uuml;r einzelne Ger&auml;te spezifiziert werden,
  1497. um weitere Attribute f&uuml;r diese Ger&auml;te zu definieren.
  1498. </li><br>
  1499. <a name="dupTimeout"></a>
  1500. <li>dupTimeout<br>
  1501. Definert die Wartezeit, nach der 2 identische Ereignisse zweier
  1502. Empf&auml;nger als Duplikat angesehen werden. Voreingestellt sind 0,5
  1503. Sekunden.&nbsp;
  1504. </li><br>
  1505. <a name="showInternalValues"></a>
  1506. <li>showInternalValues<br>
  1507. Attribute/Ger&auml;te-Eintraege/Readings die mit Punkt (.) anfangen
  1508. werden nicht angezeigt, es sei denn das globale Attribut
  1509. showInternalValues ist gesetzt. Diese Variable wird bei dem list und
  1510. xmllist Befehl, und bei der FHEMWEB Raumansicht gepr&uuml;ft.
  1511. </li><br>
  1512. <a name="sslVersion"></a>
  1513. <li>sslVersion<br>
  1514. Setzt die akzeptierten Crypto-Algorithmen im TcpServices Hilfsmodul.
  1515. Die Voreinstellung TLSv12:!SSLv3 wird als sicherer erachtet als die
  1516. vorherige SSLv23:!SSLv3:!SSLv2, aber sie kann Probleme mit nicht
  1517. ausreichend aktualisierten Netzwerk-Diensten verursachen.
  1518. </li><br>
  1519. <a name="stacktrace"></a>
  1520. <li>stacktrace<br>
  1521. Falls gesetzt (auf 1), schreibt ins FHEM-Log zus&auml;tzlich zu jedem
  1522. "PERL WARNING" den stacktrace.
  1523. </li><br>
  1524. <a name="restartDelay"></a>
  1525. <li>restartDelay<br>
  1526. Setzt die Verz&ouml;gerung beim Neustart mit shutdown restart, die
  1527. Voreinstellung ist 2 (Sekunden).
  1528. </li><br>
  1529. <a name="autosave"></a>
  1530. <li>autosave<br>
  1531. Erlaubt manchen Modulen save auszuf&uuml;hren, nach einer automatischen
  1532. &Auml;nderung der Konfiguration, z.Bsp. nachdem ein Ger&auml;t angelegt
  1533. wurde. Die Voreinstellung ist 1 (wahr), man kann es ausschalten, indem
  1534. man den Wert auf 0 setzt.
  1535. </li>
  1536. </ul>
  1537. <br><br>
  1538. <b>Events</b>
  1539. <ul>
  1540. <li>INITIALIZED<br>sobald die Initialization vollst&auml;ndig ist.</li>
  1541. <li>REREADCFG<br>nachdem die Konfiguration erneut eingelesen wurde.</li>
  1542. <li>SAVE<br>bevor die Konfiguration gespeichert wird.</li>
  1543. <li>SHUTDOWN<br>bevor FHEM heruntergefahren wird.</li>
  1544. <li>DEFINED &lt;devname&gt;<br>nach dem Definieren eines
  1545. Ger&auml;tes.</li>
  1546. <li>DELETED &lt;devname&gt;<br>nach dem L&ouml;schen eines
  1547. Ger&auml;tes.</li>
  1548. <li>RENAMED &lt;old&gt; &lt;new&gt;<br>nach dem Umbenennen eines
  1549. Ger&auml;tes.</li>
  1550. <li>UNDEFINED &lt;defspec&gt;<br>beim Auftreten einer Nachricht f&uuml;r
  1551. ein undefiniertes Ger&auml;t.</li>
  1552. <li>MODIFIED &lt;defspec&gt;<br>nach &Auml;nderung einer
  1553. Ger&auml;tedefinition.</li>
  1554. <li>UPDATE<br>nach Abschluss eines Updates.</li>
  1555. </ul>
  1556. </ul>
  1557. <!-- global end - diese Zeile nicht entfernen! -->
  1558. <a name="perl"></a>
  1559. <h3>Perl specials</h3>
  1560. Wenn Sie einige Aufgaben automatisieren wollen, dann sollten Sie die Befehle
  1561. <a href="#at">at</a> oder <a href="#notify">notify</a> nutzen. F&uuml;r
  1562. komplexere Aufgaben sollten Sie lieber ein SHELL-Skript oder einen PERL
  1563. "oneliner" als das at/notify argument anwenden. Dieser Abschnitt gibt Ihnen
  1564. einige Tipps zur Anwendung der PERL-oneliner.<br><br>
  1565. <li>Um PERL-&quot;oneliner&quot; zu testen, geben Sie diese am
  1566. &quot;telnet&quot; Prompt (oder in der FHEMWEB Text-Eingabezeile)
  1567. eingeschlossen von geschweiften Klammern {} in einer Zeile ein. Die letzte
  1568. Beispielzeile schreibt nur etwas in die Logdatei, w&auml;hrend das Ergebnis
  1569. der anderen Zeilen direkt auf der Webseite sichtbar ist.<ul>
  1570. Beispiele:<p>{ "Hello" }<br>
  1571. { 1+3*4 }<br>
  1572. { `ls /etc` }<br>
  1573. { Log 1, "Hello" }<br>
  1574. </p>
  1575. </ul>
  1576. <br>
  1577. </li>
  1578. <li>
  1579. PERL Ausdr&uuml;cke werden durch ein Semikolon (;) getrennt. In FHEM
  1580. &quot;oneliners&quot; m&uuml;ssen sie durch ein weiteres Semikolon (;;)
  1581. &quot;escaped&quot; (maskiert) werden<br>
  1582. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Beispiel:<ul>
  1583. { my $a = 1+1;; Log 1, "Hello $a" }
  1584. </ul>
  1585. </li><br>
  1586. <li>Um FHEM-Kommandos in den PERL-Ausdr&uuml;cken zu verwenden, benutzen
  1587. Sie bitte die Funktion <var>fhem()</var>, mit einem Textargument. Dieser Text wird als
  1588. FHEM-Kommando interpretiert.<br>
  1589. <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Beispiel<ul>
  1590. { fhem "set light on" }<br>
  1591. define n1 notify piri:on { fhem "set light on" }
  1592. <p>&nbsp;</p>
  1593. </ul>
  1594. Bemerkung: Wenn diese Funktion einen wert zur&uuml;ck liefert, wird dieser
  1595. in der allgemeinen Logdatei gespeichert.. Benutzen sie &quot;1&quot; als
  1596. zweites Argument um dieses speichern zu verhindern. Sinnvoll ist dieses
  1597. Argument bei der Abfrage von Werten mittels "get...".
  1598. </li><br>
  1599. <li>Notify kann auch dazu verwendet werden, um Macros manuell
  1600. auszuf&uuml;hren. Verwenden Sie den <a href="#trigger">trigger</a>-Befehl
  1601. um das Makro zu starten:<br>
  1602. <ul>
  1603. define MyMacro notify MyMacro { Log 1, "Hello"}<br>
  1604. trigger MyMacro<br>
  1605. define MacroWithArg notify MyMacro { Log 1, "Hello %"}<br>
  1606. trigger MyMacro MyArg<br>
  1607. </ul>
  1608. <br>
  1609. </li>
  1610. <li>Um die Verwendung von Datum und Zeitangaben zu vereinfachen, wurden die
  1611. Variablen <var>$sec</var>, <var>$min</var>, <var>$hour</var>, <var>$mday</var>,
  1612. <var>$month</var>, <var>$year</var>, <var>$wday</var>, <var>$yday</var>, <var>$isdst</var> und <var>$hms</var>
  1613. f&uuml;r die Verwendung in PERL-&quot;oneliners&quot; eingef&uuml;hrt (s.
  1614. unter <var>perldoc -f localtime</var>). Ausnahmen: <var>$month</var> hat einen Wertebereich von 1
  1615. bis 12 und <var>$year</var> ist korrigiert von 1900.
  1616. Weiterhin enth&auml;lt <var>$hms</var> die Zeit in dem HH:MM:SS Format und <var>$today</var> das
  1617. aktuellen Datum in YYYY-MM-DD Format.
  1618. <br>
  1619. Die Variabe <var>$we</var> hat den Wert 1 wenn der abgefragte Tag auf ein Wochenende
  1620. f&auml;llt (Z.B. <var>$wday</var> == 0 [Sonntag] oder <var>$wday</var> == 6 [Samstag]), und 0
  1621. f&uuml;r die anderen Wochentage. Wenn man das global <a
  1622. href="#holiday2we">holida2we</a> Attribut setzt, dann ist <var>$we</var> ebenfalls 1
  1623. bei Urlaubstagen.<br>
  1624. <ul>
  1625. define n2 notify piri:on { if($hour &gt; 18 || $hour &lt; 5) {
  1626. fhem "set light on" } }<br>
  1627. define roll_en *07:45:00 { fhem "trigger SwitchAllRoll on" if(!$we) }<br>
  1628. define roll_en *08:30:00 { fhem "trigger SwitchAllRoll on" if($we) }<br>
  1629. </ul>
  1630. <br>
  1631. </li><li>
  1632. Die folgenden Hilfsfunktionen sind in der Datei 99_Util.pm definiert (wird
  1633. wie jede mit 99_ beginnende Datei automatisch geladen):
  1634. <ul>
  1635. <li>min(a,b), max(a,b)</li>
  1636. <li>time_str2num("YYYY-MM-DD HH:MM:SS") gibt einen numerischen Wert
  1637. zur&uuml;ck, der die Berechnung von Zeitdifferenzen vereinfacht</li>
  1638. <li>abstime2rel("HH:MM:SS") wandelt absolute in relative Zeitangaben um
  1639. </li>
  1640. </ul>
  1641. </li>
  1642. <li>
  1643. Um auf die Ger&auml;testatus/Attribute zuzugreifen benutzen Sie bitte die
  1644. folgenden Funktionen:
  1645. <br>
  1646. <ul>
  1647. <li>Value(&lt;devicename&gt;)<br>
  1648. gibt den Status eines Ger&auml;tes zur&uuml;ck (entsprechend dem
  1649. Ausdruck in Klammern, den Sie beim List-Befehl sehen).
  1650. </li><br>
  1651. <li>OldValue(&lt;devicename&gt;)</li>
  1652. <li>OldTimestamp(&lt;devicename&gt;)<br>
  1653. gibt den vorherigen Wert/Zeitstempel des Ger&auml;tes zur&uuml;ck.
  1654. </li><br>
  1655. <li>
  1656. ReadingsVal(&lt;devicename&gt;,&lt;reading&gt;,&lt;defaultvalue&gt;)<br>
  1657. Gibt den Inhalt der &quot;readings&quot; zur&uuml;ck (den Inhalt der in
  1658. dem &quot;Readings&quot;-Abschnitt von "list device" angezeigt wird)
  1659. </li><br>
  1660. <li>
  1661. ReadingsNum(&lt;devicename&gt;,&lt;reading&gt;,
  1662. &lt;defaultvalue&gt;,&lt;round&gt;)<br>
  1663. Gibt die erste Zahl aus dem Readingswert zur&uuml;ck.
  1664. Falls &lt;round&gt; spezifiziert ist, wird sie auf diese Anzahl von
  1665. Dezimalstellen gerundet.
  1666. </li><br>
  1667. <li>ReadingsTimestamp(&lt;devicename&gt;,
  1668. &lt;reading&gt;,&lt;defaultvalue&gt;)<br>
  1669. gibt den Zeitstempel des Readings zur&uuml;ck.
  1670. </li><br>
  1671. <li>ReadingsAge(&lt;devicename&gt;,&lt;reading&gt;,&lt;defaultvalue&gt;)
  1672. <br>
  1673. gibt das Alter des Readings in Sekunden zur&uuml;ck.
  1674. </li><br>
  1675. <li>
  1676. AttrVal(&lt;devicename&gt;,&lt;attribute&gt;,&lt;defaultvalue&gt;)<br>
  1677. Gibt das entsprechende Attribut des Ger&auml;tes zur&uuml;ck
  1678. <br><br>
  1679. { Value("wz") }<br>
  1680. { OldValue("wz") }<br>
  1681. { time_str2num(OldTimestamp("wz")) }<br>
  1682. { ReadingsVal("wz", "measured-temp", "20")+0 }<br>
  1683. { ReadingsTimestamp("wz", "measured-temp", 0)}<br>
  1684. { AttrVal("wz", "room", "none") }<br>
  1685. </li><br>
  1686. <li>
  1687. AttrNum(&lt;devicename&gt;,&lt;attribute&gt;,
  1688. &lt;defaultvalue&gt;,&lt;round&gt;)<br>
  1689. Gibt die erste Zahl aus dem Attributwert zur&uuml;ck.
  1690. Falls &lt;round&gt; spezifiziert ist, wird sie auf diese Anzahl von
  1691. Dezimalstellen gerundet.
  1692. </li><br>
  1693. <li>
  1694. InternalVal(&lt;devicename&gt;,&lt;internal&gt;,
  1695. &lt;defaultvalue&gt;)<br>
  1696. Gibt den Inhalt der &quot;internal&quot; zur&uuml;ck (den Inhalt der in
  1697. dem &quot;Internals&quot;-Abschnitt von "list device" angezeigt wird)
  1698. </li><br>
  1699. <li>
  1700. InternalNum(&lt;devicename&gt;,&lt;internal&gt;,
  1701. &lt;defaultvalue&gt;,&lt;round&gt;)<br>
  1702. Gibt die erste Zahl aus dem &quot;internal&quot; zur&uuml;ck.
  1703. Falls &lt;round&gt; spezifiziert ist, wird sie auf diese Anzahl von
  1704. Dezimalstellen gerundet.
  1705. </li><br>
  1706. </ul>
  1707. </li><li>
  1708. Wenn Sie das 99_SUNRISE_EL.pm Modul benutzen, haben Sie zugriff auf
  1709. folgende Funktionen: <br>
  1710. <ul>
  1711. sunset($offset, $min, $max)<br>
  1712. sunrise($offset, $min, $max)<br>
  1713. isday()<br>
  1714. </ul>
  1715. Der Wert von &quot;offset&quot; wird in Sekunden angegeben und das Format
  1716. f&uuml;r min/max ist "HH:MM" oderr "HH:MM:SS". isday gibt 1 zur&uuml;ck,
  1717. wenn die Sonne sichtbar ist und ansonsten den Wert 0. </li>
  1718. <br>
  1719. <br>
  1720. <!-- perl end - diese Zeile nicht entfernen! -->
  1721. <a name="gnuplot-syntax"></a>
  1722. <h3>gnuplot file syntax</h3>
  1723. Die .gplot Dateien werden ebenso von den <a href="#FHEMWEB">FHEMWEB</a>/SVG
  1724. Modulen falls das <a href="#plotmode">plotmode</a>-Attribut auf SVG gesetzt
  1725. ist. In diesem Fall wird nur eine geringere Anzahl der .gnuplot Attribute
  1726. benutzt, und einige Linien haben eine besondere Bedeutung: Die Unterschiede
  1727. werden in diesem Kapitel erkl&auml;rt. Lesen Sie bitte auch <a
  1728. href="http://wiki.fhem.de/wiki/Creating_Plots"> diesen</a> FHEM Wiki Eintrag
  1729. zur Erstellung von Logdateien.<br> Im folgenden ist eine minimale .gplot
  1730. Definition (g&uuml;ltig nur bei Plotmode SVG):<br>
  1731. <pre> set terminal size &lt;SIZE&gt;
  1732. #FileLog 4:::
  1733. plot title 'Temperature' with lines
  1734. </pre>
  1735. Die .gnuplot Datei besteht aus 3 Teilen:
  1736. <ul>
  1737. <li>set Befehle<br>
  1738. Folgende &quot;sets&quot; werden erkannt:
  1739. <ul>
  1740. <li>terminal, nur die Gr&ouml;&szligenparameter.<br>
  1741. Dieser ist in der Regel auf &lt;SIZE&gt; gesetzt, welcher ersetzt wird
  1742. durch das <a href="#plotsize">plotsize</a> Attribut von FHEMWEB oder
  1743. einer Weblink-Instanz.</li>
  1744. <li>title<br>
  1745. Normalerweise gesetzt auf &lt;TL&gt; welcher durch das Weblink <a
  1746. href="#title">title</a>-Attribut, oder durch &lt;Lx&gt;, welches
  1747. wiederum vom Weblink <a href="#label">label</a> Attribut ersetzt
  1748. wird.</li>
  1749. <li>ylabel,y2label<br>
  1750. Linke und rechte vertikale Achsenbeschriftungen. Are also subject to
  1751. label replacement.</li>
  1752. <li>yrange,y2range<br>
  1753. Legen den Wertebereich der linken und rechten y-Achse fest.
  1754. Beispiele:<br>
  1755. <ul>
  1756. set yrange [-0.1:1.1]<br>
  1757. set y2range [0:]<br>
  1758. </ul>
  1759. </li>
  1760. <li>ytics,y2tics<br>
  1761. Beschriftung f&uuml;r die Werte der rechten/linken y-Achse.
  1762. Beispiele:<br>
  1763. <ul>
  1764. set ytics ("on" 0, "off" 1)<br>
  1765. set y2tics<br>
  1766. </ul>
  1767. </li>
  1768. </ul>
  1769. </li>
  1770. <br>
  1771. <li>#FileLog Eintr&auml;ge<br>
  1772. Jede Line des Plots muss eine dazugeh&ouml;rige #FileLog
  1773. Zeile haben. Zur Syntax lesen Sie bitte den Abschnitt &quot;column_spec
  1774. paragraph&quot; von der <a href="#FileLogget">Filelog get</a>
  1775. Beschreibung. Beachten sie bitte, das bei SVG-Plots die erste Spalte der
  1776. Datei unbedingt im FHEM-Zeitstempelformat (YYYY-MM-DD_HH:MM:SS)
  1777. formatiert sein muss
  1778. </li>
  1779. <br>
  1780. <li>Plot Eintr&auml;ge<br>
  1781. bestehen immer aus einem Plotbefehl und aus durch Kommata getrenne
  1782. Argumentbl&ouml;cke. Jeder Argumentblock repr&auml;sentiert eine
  1783. darzustellende Linie und hat seine eigenen Paramter.
  1784. Folgende Parameter werden are anerkannt:
  1785. <ul>
  1786. <li>axes x1y1 / x1y2<br>
  1787. weist das Programm an die aktuelle Zeile einer der beiden Achsen (links
  1788. oder rechts) zuzuweisen.&nbsp;
  1789. </li>
  1790. <li>title<br>
  1791. Beschriftung der Linie. Wenn man auf diesen Titel klickt, dann
  1792. &auml;ndert ein kleines Javascript-Programm den Titel auf die min/max
  1793. und last-Werte des Plots, Weiterhin erlaubt das Programm diese Linie zu
  1794. kopieren oder eine bereits kopierte Linie einzuf&uuml;gen (die
  1795. existierende Skalierung des Plots wird dabei nicht ver&auml;ndert, nur
  1796. die eingef&uuml;gte Linie wird skaliert/angepasst. Andere Linien des
  1797. Plots werden zeitweise nicht angezeigt.</li>
  1798. <li>with &lt;linetype&gt;<br>
  1799. spezifiziert die Art der Linie. Folgende Linienarten k&ouml;nnen
  1800. verwendet werden: points, steps, fsteps, histeps and lines. Nicht
  1801. bekannte Linienarten werden als Typ &quot;lines&quot; dargestellt.
  1802. SVG Spezial: cubic und quadratic werden zu den SVG path Typen C und Q
  1803. gewandelt.
  1804. </li>
  1805. <li>ls &lt;linestyle&gt;<br>
  1806. Der Linienstil stellt die erste Linie als l0 dar,&nbsp; die zweite
  1807. Linie als l1 und so weiter. Definiert ist dies in der svg_style.css
  1808. Datei. Darin sind zwei Sets definiert: l0-l8 and l0fill-l6fill. Das
  1809. zweite Set muss aber explizit angegeben werden. Wenn der Name des
  1810. Linienstils das Wort &quot;fill&quot; enth&auml;lt, dann haben Plots
  1811. des Linientyps "lines" ein zus&auml;tzliches Start- und Endsegment
  1812. f&uuml;r eine korrekte Darstellung.<br> Bitte lesen sie die SVG
  1813. Spezifikationen, um Details &uuml;ber diese css-Datei zu erfahren.
  1814. Notiz: Wenn Sie dieses Attribut einsetzen m&ouml;chten, m&uuml;ssen Sie
  1815. es f&uuml;r alle Linien (Attributblocks) im Plotbefehl spezifizieren.
  1816. </li>
  1817. <li>lw &lt;linewidth&gt;<br>
  1818. Setzt die Linienbreite der Linie. Dieses Attribut ist veraltet. Das
  1819. entprechende Feature der css-Datei/(Attribut ls) muss verwendet werden.
  1820. </li>
  1821. </ul>
  1822. </li></ul>
  1823. </div> <!-- right -->
  1824. </body>
  1825. </html>