| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title>FHEM Referenz</title>
- <script type="text/javascript" src="fhemdoc.js"></script>
- <noscript>
- <link rel="stylesheet" type="text/css" href="../www/pgm2/style.css" />
- </noscript>
- <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
- <link rel="shortcut icon" href="/fhem/icons/favicon.ico"/>
- </head>
- <body style="word-wrap: break-word;">
- <div id="menuScrollArea">
- <div id="logo"></div>
- <div id="menu">
- <h3>fhem.pl Referenz</h3>
- <br><br>
- <a href="#doctop">Zum Anfang</a>
- <br><br>
- <a style="display:none" href="#" name="loadAll">Komplette Doku laden</a>
- <br><br>
- <a id="otherLang" style="display:none" href="#" name="otherLang">
- <span style="display:none" lang="DE">Deutsche</span>
- <span style="display:none" lang="EN">Englische</span>
- Doku für <span class="mod"></span> laden
- </a>
- </div>
- </div>
- <div id="right">
- <a name="doctop"></a>
- <h3>Inhalt</h3>
- <ul>
- <a href="#intro">Einleitung</a><br>
- <a href="#command">FHEM Befehls-Typen</a><br>
- <a href="#devspec">Geräte-Spezifikation</a><br>
- <a href="#attributes">Attribute</a><br>
- <br>
- <b>FHEM-Befehle</b>
- <ul>
- <!-- header:command -->
- <a href="#apptime">apptime</a> <!-- liefert Daten über Ausführungszeiten -->
- <a href="#attr">attr</a> <!-- setzt ein Attribut für ein FHEM Gerät -->
- <a href="#cancel">cancel</a> <!-- bricht ein sleep ab -->
- <a href="#createlog">createlog</a> <!-- fügt ein FileLog und ein SVG an einem existierenden FHEM Gerät -->
- <a href="#define">define</a> <!-- definiert ein FHEM Gerät -->
- <a href="#defmod">defmod</a> <!-- definiert oder modifiziert ein FHEM Gerät -->
- <a href="#delete">delete</a> <!-- entfernt ein FHEM Gerät -->
- <a href="#deleteattr">deleteattr</a> <!-- entfernt ein Attribut -->
- <a href="#deletereading">deletereading</a> <!-- entfernt ein Reading -->
- <a href="#displayattr">displayattr</a> <!-- zeigt Attribute eines FHEM Gerätes -->
- <a href="#get">get</a> <!-- holt ein Wert von einem FHEM Gerät -->
- <a href="#IF">IF</a> <!-- bedingte Ausführung von FHEM Befehlen -->
- <a href="#include">include</a> <!-- liest eine Datei mit FHEM Befehlen ein -->
- <a href="#inform">inform</a> <!-- zeigt Events in einer telnet Verbindung -->
- <a href="#list">list</a> <!-- zeigt Definition,Readings und Attribute eines FHEM Gerätes -->
- <a href="#modify">modify</a> <!-- ändert die Definition eines FHEM Gerätes -->
- <a href="#notice">notice</a> <!-- zeigt und bestätigt Systemmeldungen -->
- <a href="#quit">quit</a> <!-- endet eine telnet Verbindung zu FHEM -->
- <a href="#reload">reload</a> <!-- lädt ein FHEM Modul (Programmdefinition) -->
- <a href="#rename">rename</a> <!-- benennt ein FHEM Gerät um -->
- <a href="#rereadcfg">rereadcfg</a> <!-- lädt die FHEM Konfiguration neu -->
- <a href="#save">save</a> <!-- speichert die FHEM Konfiguration -->
- <a href="#set">set</a> <!-- setzt ein Wert in einem FHEM Gerät -->
- <a href="#setdefaultattr">setdefaultattr</a> <!-- definiert ein "default" Attribut -->
- <a href="#setreading">setreading</a> <!-- setzt ein Reading für ein FHEM Gerät -->
- <a href="#setstate">setstate</a> <!-- setzt den Status eines FHEM Geräes -->
- <a href="#shutdown">shutdown</a> <!-- beendet FHEM -->
- <a href="#sleep">sleep</a> <!-- verzögerte Ausführung -->
- <a href="#trigger">trigger</a> <!-- generiert ein FHEM Event -->
- <a href="#usb">usb</a> <!-- sucht nach USB Geräten -->
- </ul>
- <br>
- <b>Gerätemodule</b>
- <ul>
- <a href="#global">global</a><br>
- <!-- header:device -->
- </ul>
- <br>
- <b>Hilfs (Erweiterungs-) Module</b>
- <ul>
- <!-- header:helper -->
- </ul>
- <br>
- <a href="#perl">PERL Besonderheiten</a><br>
- <a href="#gnuplot-syntax">gnuplot file Syntax</a><br>
- </ul>
- <a name="intro"></a>
- <h3>Einleitung</h3>
- <ul>
- <p>FHEM wird hauptsächlich zur Heimautomatisierung benutzt,
- ist aber ebenso für andere Aufgaben einsetzbar wo Benachrichtigungen,
- Zeitschaltungen und Datensammlungen eine wichtige Rolle spielen.</p>
- <p>FHEM unterstützt verschiedene Hardwaregeräte die eine
- Verbindung mittels unterschiedlicher Protokolle (z.B. FHZ1000 mit Interfaces vom
- Typ FS20 und HMS, CM11 um mit X10 zu arbeiten) sowie logischer Geräte wie FS20
- oder FHT die einen Nachrichtenaustausch mit verschiedensten Geräten die diese
- Protokolle verwenden ermöglichen.</p>
- <p>
- FHEM ist modular. Abhängig von den unterschiedlichen Geräten werden in den
- Modulen verschiedene Funktionen (z.B. define, get, set) realisiert. FHEM enthält
- weitere Funktionen wie Trigger (<a href="#notify">notify</a>),
- Zeitabhängige Funktionen (<a href="#at">at</a>)
- die die Funktionalität erweitern.</p>
- <p>
- FHEM wird entweder über einfache ASCII-Kommandozeilen gesteuert die in Dateien
- wie z.B. der Konfigurationsdatei fhem.cfg gespeichert sind oder über eine TCP/IP
- Verbindung, entweder direkt in einer "telnet"-Sitzung, oder per fhem.pl im
- Client-Modus oder über eines der Webfrontends.<br> </p>
- <p class="MsoNormal">Wenn Sie den FHEM-Server starten, müssen Sie eine
- Konfigurationsdatei auswählen:</p>
- <ul>
- <code>perl fhem.pl fhem.cfg</code>
- </ul>
- <p>Nachstehend eine Minimal-Konfiguration Datei: </p><pre>
- attr global <a href="#logfile">logfile</a> log/fhem.log
- attr global <a href="#modpath">modpath</a> .
- attr global <a href="#statefile">statefile</a> log/fhem.save
- attr global <a href="#verbose">verbose</a> 3
- define telnetPort <a href="#telnet">telnet</a> 7072 global
- define WEB <a href="#FHEMWEB">FHEMWEB</a> 8083 global</pre>
- Die letzten zwei Zeilen definieren einen telnet und einen WEB Zugang, beide können aber
- bei Bedarf auch abgeschaltet werden.<br><br>
- Die WEB Schnittstelle kann über
- <ul>
- http://<fhemhost>:8083
- </ul>
- erreicht werden.
- <br><br>
- Die Kommunikation mit FHEM kann entweder in einer "session" (über telnet) oder
- über einzelne Klient-Kommandos (über fhem.pl) erfolgen. Beispiel:
- <ul>
- <code>telnet <fhemhost> 7072<br>
- <NL> </code>(Die Betätigung der "Enter"-Taste schaltet in den "prompt"
- Modus)<code><br>
- <command>...<br>
- quit</code><br>
- </ul>
- oder
- <ul>
- <code>fhem.pl <fhemhost>:7072 "<command>..."</code>
- </ul>
- <br>
- Falls FHEM als root gestartet wurde, und ein OS-Benutzer fhem existiert, dann
- wechselt FHEM nach dem start zu diesem Benutzer (via setuid). <br>
- </ul>
- <br>
- <!-- intro end - diese Zeile nicht entfernen! -->
- <a name="command"></a>
- <h3>FHEM Befehlstypen</h3>
- <ul>
- Es gibt drei Arten von Befehlen: "fhem" Befehle (werden in diesem Dokument
- beschrieben), SHELL-Befehle (diese müssen von doppelten
- Anführungszeichen "" eingeschlossen werden) und PERL-Ausdrücken (von
- geschwungenen Klammern {} eingeschlossen). SHELL-Befehle oder
- PERL-Ausdrücke werden für komplexe <a href="#at">at</a> oder <a
- href="#notify">notify</a> Ausdrücke benötigt, können aber auch
- als "normale" Befehle angewendet werden.
- <br>
- <br>
- Die folgenden drei Befehle bewirken z.B. dasselbe Ergebnis, wenn sie am
- telnet-Prompt eingegeben werden:
- <ul>
- set lamp off<br>
- "fhem.pl 7072 "set lamp off""<br>
- {fhem("set lamp off")}<br>
- </ul>
- SHELL-Kommandos werden im Hintergrund ausgeführt,
- PERL-Ausdrücke und FHEM-Kommandos werden im Haupt-"thread" ausgeführt. Um
- PERL-Ausdrücke leichter eingeben zu können, sind einige Spezialfunktionen und
- Variablen verfügbar. Lesen Sie sich bitte die Abschnitte <a href="#perl">
- Perl special</a> zum besseren Verständnis durch.</p>
- <p>Um FHEM-Befehle in einen SHELL-Script zu triggern (dies ist
- eine "andere" Möglichkeit), benutzen Sie bitte die oben beschriebene Client-Form
- der fhem.pl.
- <br>
- Mehrere FHEM-Kommandos hintereinander werden mittels
- Semikolon (;) getrennt. Weil Semikola auch in PERL-Code oder SHELL-Programmen
- benutzt werden, müssen sie mittels doppelten Semikola geschützt werden. Lesen
- Sie sich bitte die <b>Bermerkungen </b>des <a href="#notify">notify</a>-Abschnittes zu Kommandoparametern und Regeln durch.
- <br>
- Z.B. schaltet die erste der folgenden Befehlszeilen die Lampe 1 nur/erst zur
- Uhrzeit 07:00 Uhr aus, die Lampe 2 aber sofort und die zweite Befehlszeile
- schaltet Lampe 1 und 2 um 7:00 Uhr gleichzeitig aus.
- <ul>
- define lampoff at 07:00 set Lamp1 off; set Lamp2 off<br>
- define lampoff at 07:00 set Lamp1 off;; set Lamp2 off<br>
- </ul>
- <br>
- Für jede weitere Indirektion muss man die Strichpunkte verdoppeln. Um also die beiden Lampen um 7:00 für 10 Minuten einzuschalten schreibt man:
- <ul>
- define onAt at 07:00 set Lamp1 on;;set Lamp2 on;; define offAt at +00:10 set Lamp1 off;;;;set Lamp2 off
- </ul>
- Keine Angst, das Vorherige kann in FHEM auch deutlich einfacher formuliert werden als:
- <ul>
- define onAt at 07:00 set Lamp1,Lamp2 on-for-timer 600
- </ul>
- <br>
- Befehle können entweder direkt eingegeben oder aus einer Datei (z.B. am
- Start von FHEM aus der Konfugurationsdatei) eingelesen werden. Die Befehle
- werden entweder direkt ausgeführt oder später wenn sie als Argumente
- eines <a href="#at">at</a> oder <a href="#notify">notify</a>-Befehles verwendet
- werden.
- <p>Eine mit einem \ abgeschlossene Zeile wird mit der
- nachfolgenden Zeile verbunden. Somit können lange Befehlszeilen (die z.B. aus
- mehreren PERL-Befehlen bestehen) auf mehrere Zeilen aufgteilt werden. Einige
- Web-Frontends (z.B. webpgm2) erleichtern die Eingabe von sich über mehrere
- Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.</p>
- <p> </p>
- </ul>
- <!-- command end - diese Zeile nicht entfernen! -->
- <a name="devspec"></a>
- <h3>Geräte-Spezifikation (devspec)</h3>
- <ul>
- Die Befehle
- <a href="#attr">attr</a>,
- <a href="#set">set</a>,
- <a href="#get">get</a>, usw.
- <a href="#attr">attr</a>,
- <a href="#deleteattr">deleteattr</a>,
- <a href="#displayattr">displayattr</a>,
- <a href="#delete">delete</a>,
- <a href="#get">get</a>,
- <a href="#list">list</a>,
- <a href="#set">set</a>,
- <a href="#setreading">setreading</a>,
- <a href="#setstate">setstate</a>,
- <a href="#trigger">trigger</a>
- können eine komplexere Gerätespezifikation als Argumente enthalten,
- die auch eine Anzahl von Geräten betreffen kann. Eine
- Gerätespezifikation kann folgendes sein:
- <ul>
- <li>ein einzelner Gerätename. Dies ist der Normalfall</li>
- <li>eine durch Komma(,) getrennte Liste von Gerätenamen</li>
- <li>ein regulärer Ausdruck</li>
- <li>ein NAME=WERT Ausdruck, wo NAME ein "Internal" Wert wie TYPE ist, ein
- Reading-Name oder ein Attribut. WERT ist ein regulärer Ausdruck.
- Um die Bedingung zu negieren, muss NAME!=WERT verwendet werden.
- Um die Suche einzugrenzen, kann man als Praefix i: für internal
- Werte, r: für Reading-Namen und a: für Attribute verwenden,
- siehe das Beispiel unten. Groß-/Kleinschreibung wird durch die
- Verwendung von ~ oder !~ ignoriert.
- </li>
- <li>Falls die Spezifikation von :FILTER=NAME=WERT gefolgt wird,
- dann wird die zuvor gefundene Liste durch diesen neuen Ausdruck
- gefiltert.
- </ul>
- Beispiele:
- <ul>
- <code>set lamp1 on</code><br>
- <code>set lamp1,lamp2,lamp3 on</code><br>
- <code>set lamp.* on</code><br>
- <code>set room=kitchen off</code><br>
- <code>set room=kitchen:FILTER=STATE=on off</code><br>
- <code>set room=kitchen:FILTER=STATE!=off off</code><br>
- <code>list disabled=</code><br>
- <code>list room~office</code><br>
- <code>list TYPE=FS20 STATE</code><br>
- <code>list i:TYPE=FS20 STATE</code><br>
- </ul>
- Bemerkungen:
- <ul>
- <li>die Spezifikation kann keine Leerzeichen enthalten.</li>
- <li>falls ein Gerätename exakt dem Spezifikation entspricht, dann werden
- keine reguläre Ausdrücke oder Filter ausgewertet.
- <li>zuerst wird die durch Komma getrennte Spezifikation abgearbeitet, dann
- folgen die regulären Ausdrücke und die Filter</li>
- <li>die Befehlszeile kann die selbe Gerätebezeichnung mehrfach enthalten
- z.B.: "set lamp3,lamp3 on". Lamp3 wird hier zwei Mal
- eingeschalten.</li>
- <li>um Strukturen mit komplexeren Anforderungen zu realisieren lesen Sie
- bitte den Abschnitt zu <a href="#structure"> structure</a>.
- </ul>
- </ul>
- <!-- devspec end - diese Zeile nicht entfernen! -->
- <a name="attributes"></a>
- <h3>Attribute</h3>
- Alle Geräte haben Attribute. Diese werden mittels des Befehls <a
- href="#attr">attr</a> gesetzt, angezeigt mit dem Befehl <a
- href="#displayattr">displayattr</a>, und mit dem Kommando <a
- href="#deleteattr">deleteattr</a> entfernt.<p>
- Es gibt globale Attribute, die von allen Geräten genutzt werden, und lokale
- Attribute, die nur auf individuelle Geräteklassen zutreffen.<p>
- Manche Geräte (wie <a href="#FHEMWEB">FHEMWEB</a>) definieren automatisch
- neue globale Attribute bei der ersten Definition eines Gerätes dieses
- Typs.<p>
- Sie können den Befehl<p><code>attr global userattr
- <attributelist></code><p> für das Gerät <a
- href="#global">global</a> verwenden, um neue globale Attribute zu deklarieren,
- und <p><code>attr <devicespec> userattr
- <attributelist></code>,<p>um neue lokale Attribute für bestimmte
- individuelle Geräte gemäß <a href="#devspec">devspec</a> zu
- deklarieren.
- <code><attributelist></code> ist eine durch Leerzeichen getrennte Liste,
- die die Namen der zusätzlichen Attribute enthält. In der
- Dokumentation zum Befehl <a href="#attr">attr</a> sind Beispiele.<p>
- Seien Sie vorsichtig und überschreiben Sie keine zusätzlichen
- globale Attribute, die bereits zuvor durch Sie selbst oder ein Gerät
- definiert wurden. <code>attr global userattr <attributelist></code>
- sollte so früh wie möglich in der Konfiguration erscheinen.
- <h4>Gerätespezifische Attribute</h4>
- Gerätespezifische Attribute sind in dem jeweiligen Abschnitt zum
- Gerät dokumentiert.
- <h4>Globale Attribute für alle Geräte</h4>
-
- <ul>
- <a name="alias"></a>
- <li>alias<br>
- Wird in FHEMWEB benutzt, um ein en anderen Namen für ein Gerät
- anzuzeigen z.B. wenn Sonderzeichen/Leerzeichen nicht in der
- Gerätedefinition verwendet werden können.
- </li><br>
- <a name="comment"></a>
- <li>comment<br>
- Fügt einen beliebigen Kommentar hinzu.
- </li><br>
- <a name="eventMap"></a>
- <li>eventMap<br>
- Ersetze Event Namen und setze Argumente. Der Wert dieses Attributes
- besteht aus einer Liste von durch Leerzeichen getrennte Werten. Jeder
- Wert ist ein durch Doppelpunkt getrenntes Paar. Der erste Teil stellt den
- "alten" Wert, der zweite Teil den "neuen" Wert dar. Wenn der erste Wert
- ein Slash (/) oder ein Komma (,) ist, dann wird nicht durch Leerzeichen
- sondern durch das vorgestellte Zeichen getrennt.
- Optional kann man auch ein widgetOverride angeben (angehängt nach
- einem Doppelpunkt (z.Bsp. on-for-timer:OnFor:texField). Die
- Voreinstellung ist :noArg, um das Input Feld bei cmdList zu vermeiden.
- Beispiele:
- <ul><code>
- attr store eventMap on:open off:closed<br>
- attr store eventMap /on-for-timer 10:open/off:closed/<br>
- set store open
- </code></ul>
- Die explizite Variante dieses Attributes hat folgenden Syntax:
- <ul><code>
- attr store eventMap { dev=>{'on'=>'open'}, usr=>{'open'=>'on'} }<br>
- attr store eventMap { dev=>{'^on(-for-timer)?(.*)'=>'open$2'},
- usr=>{'^open(.*)'=>'on$1'},
- fw=>{'^open(.*)'=>'open'} }
- </code></ul>
- Diese Variante muss dann verwendet werden, falls das Mapping nicht
- symmetrisch ist. Der erste Teil (dev) spezifiziert dabei die Richtung
- Gerät zu Benutzer, d.h. falls das Gerät on 100 oder
- on-for-timer 100 meldet, dann wird der Benutzer open 100 zu sehen
- bekommen. Der zweite Teil (usr) spezifiziert die Richtung Benutzer zu
- Gerät, d.h. wenn man "set XX open 100" eingibt, dann wird das
- Kommando "on 100" an das Gerät gesendet. In beiden Fällen wird
- der Schlüssel zuerst direkt, und dann als Regexp mit dem Wert
- verglichen. Falls man Regexps mit Wildcards im usr Teil verwendet, dann
- muss man den fw Teil mit dem exakt gleichen Schlüsseln
- ausfüllen, damit FHEMWEB in der Detail-Ansicht den set-Auswahl
- richtig anzeigen kann.
- </li><br>
- <a name="genericDisplayType"></a>
- <li>genericDisplayType<br>
- Wird von bestimmten Frontends (aber nicht FHEMWEB) verwendet, um
- für das Gerät passende Voreinstellungen (Bild/Befehle/etc)
- anzubieten. Z.Zt werden folgende Werte unterstützt:
- switch,outlet,light,blind,speaker,thermostat
- </li><br>
- <a name="group"></a>
- <li>group<br>
- Gerätegruppen. FHEMWEB zeigt Geräte die in die gleiche Gruppe
- gehören auch in einer gemeinsamen Box an. Ein Gerät kann zu
- mehr als einer Gruppe gehören. In diesem Fall müssen die
- entsprechenden Gruppen durch Kommata getrennt eingetragen werden. Wenn
- dieses Attribut nicht gesetzt ist, wird der in der Gerätegruppe
- gesetzte Gerätetyp verwendet.
- </li><br>
- <a name="room"></a>
- <li>room<br>
- Filtert/gruppiert Geräte.
- Ein Gerät kann zu mehr als einem Raum zugeordnet werden. In diesem
- Fall müssen die Raumzuordnungen durch Kommata getrennt
- angegeben werden.<br>
- Geräte, die dem Raum mit der Bezeichnung "hidden" zugeordnet
- werden, erscheinen nicht auf der Webseite.
- Mit -> werden Räume strukturiert, z.Bsp. OG->Schlafzimmer
- </li><br>
- <a name="showtime"></a>
- <li>showtime<br>
- Wird im FHEMWEB verwendet, um die Zeit der letzten Aktivität
- anstelle des Status in der Gesamtansicht anzuzeigen. Nützlich z.B.
- für FS20 PIRI Geräte.
- </li></br>
- <a name="suppressReading"></a>
- <li>suppressReading<br>
- Wird verwendet, um nicht gewollte Readings zu entfernen. Der Wert ist
- ein Regular Expression, ergänzt mit ^ und $. Wird nur in
- Ausnahmefällen benötigt.
- </li><br>
-
- <a name="verbose"></a>
- <li>verbose<br>
- Setzt den Schwellwert für die Logfile-Meldungen.
- Mögliche Werte sind:
- <ul>
- <li>0 - Server start/stop</li>
- <li>1 - Fehlermeldungen oder unbekannte Pakete</li>
- <li>2 - bedeutende Ereigbisse/Alarme.</li>
- <li>3 - ausgesendete Kommandos werden gelogged.</li>
- <li>4 - von den einzelnen Geräten empfangene Daten.</li>
- <li>5 - Fehlersuche.</li>
- </ul>
- Der für die <a href="#global">global</a> Instanz gesetzte Wert gilt
- als Voreinstellung für die Instanzen, die dieses Attribut nicht
- gesetzt haben.
- </li><br>
- </ul>
- <a name="readingFnAttributes"></a>
- <h4>readingFnAttribute</h4>
- Die folgenden Attribute werden bei Modulen verwendet, die standardisierte
- "readings" Aktualisierung der fhem.pl benutzen. Informieren Sie sich in der
- Liste der Modulattribute wenn Sie wissen möchten ob dies
- unterstützt wird.<br><br>
- <ul>
- <a name="stateFormat"></a>
- <li>stateFormat<br>
- Ändert den Gerätestatus, dies ist z.Bsp. in der Ausgabe des list
- Kommandos zu sehen, oder in der Raumübersicht von FHEMWEB. Falls
- nicht gesetzt, dann wird das state Reading übernommen. Sonst werden
- alle Wörter im Wert des Attributes durch das entsprechende Reading des
- Gerätes ersetzt (soweit vorhanden). Falls der Wert in {}
- eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die
- Auswertung passiert bei jeder Änderung eines Readings.<br>
- Die <a href="#set">hier</a> beschriebene "set magic" wird auch angewendet.
- </li>
- <a name="event-on-update-reading"></a>
- <li>event-on-update-reading<br>
- Wenn nicht gesetzt, erzeugt jede Veränderung eines "readings" ein
- Ereignis, welches z.B. von <a href="#notify">notify</a> oder<a
- href="FileLog"> FileLog</a> berücksichtigt wird. Wenn gesetzt erzeugen
- nur Aktualisierungen der eingetragenen "readings" ein Ereignis.
- </li>
- <a name="event-on-change-reading"></a>
- <li>event-on-change-reading<br>
- Dieses Attribut enthält eine durch Kommata getrennte Liste von
- "readings". Wenn gesetzt, erzeugen nur Veränderungen der gelisteten
- "readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten
- "readings" identisch sind, wird kein Ereignis generiert.<br>
- Wenn hinter dem Namen eines "readings" eine :Schwelle angegeben ist, wird
- das Event nur getriggert wenn die Änderung grösser als diese
- Schwelle ist.
- </li>
- Die unterschiedlichen Bedeutungen von event-on-update-reading und
- event-on-change-reading sind folgende:
- <ol>
- <li>Wenn beide Attribute nicht gesetzt sind erzeugt jede Aktualisierung
- eines jeden "readings" eines Gerätes ein Ereignis.</li>
- <li>Wenn eines der Attribute gesetzt ist, erzeugen nur Updates oder
- änderungen von "readings" die in einem der Attribute gesetzt
- sind ein Ereignis.</li>
- <li>Wenn ein "reading" in event-on-update-reading aufgeführt ist,
- erzeugt eine Aktualisierung ein Ereignis unabhängig ob das
- "reading" auch in event-on-change-reading aufgelistet ist.</li>
- </ol>
- <a name="timestamp-on-change-reading"></a>
- <li>timestamp-on-change-reading<br>
- Dieses Attribut enthält eine durch Kommata getrennte Liste von
- "readings". Wenn gesetzt, werden die Zeitstempel der gelisteten "readings"
- nicht aktualisiert wenn durch ein ebenfalls gesetztes event-on-change-reading
- für dieses "reading" kein Ereignis erzeugen würde.
- </li>
- <p>
- <a name="event-aggregator"></a>
- <li>event-aggregator</li>
- The primary uses of this attribute are to calculate (time-weighted) averages of
- readings over time periods and to throttle the update rate of readings and thus
- the amount of data written to the logs.<p>
- This attribute takes a comma-separated list of <code>reading:interval:method:function:holdTime</code>
- quintuples. You may use regular expressions for <code>reading</code>. If set, updates for the
- listed readings are ignored and associated events are suppressed for a black-out period of at
- least <code>interval</code> seconds (downsampling). After the black-out period has expired, the reading is
- updated with a value that is calculated from the values and timestamps of the previously ignored
- updates within the black-out period as follows:
-
- <table>
- <tr><th>function</th><th>description</th></tr>
- <tr><td>v</td><td>the last value encountered</td></tr>
- <tr><td>v0</td><td>the first value encountered</td></tr>
- <tr><td>min</td><td>the smallest value encountered</td></tr>
- <tr><td>max</td><td>the largest value encountered</td></tr>
- <tr><td>mean</td><td>the arithmetic mean of all values</td></tr>
- <tr><td>sd</td><td>the standard deviation from the mean</td></tr>
- <tr><td>median</td><td>the median of all values (requires holdTime and function none)</td></tr>
- <tr><td>integral</td><td>the arithmetic sum (if not time-weighted) or integral area (if time-weighted) of all values</td></tr>
- <tr><td>n</td><td>number of samples</td></tr>
- <tr><td>t</td><td>timestamp of the last value</td></tr>
- <tr><td>t0</td><td>timestamp of the first value</td></tr>
- </table>
- <p>
- If <code>method</code> is <code>none</code>, then that's all there is. If <code>method</code>
- is <code>const</code> or <code>linear</code>, the time-weighted series of values is taken into
- account instead. The weight is the timespan between two subsequent updates.
- With the <code>const</code> method, the value is the value of the reading at the beginning of
- the timespan; with the <code>linear</code> method, the value is the arithmetic average of
- the values at the beginning and the end of the timespan.
- Rollovers of black-out periods are handled as one would expect it.<p>
- One would typically use the <code>linear</code> method with the <code>mean</code> function for
- quantities continuously varying over time like electric power consumption, temperature or speed.
- For cumulative quantities like energy consumed, rain fallen or distance covered,
- the <code>none</code> method with the <code>v</code> function is used. The <code>constant</code>
- method is for discrete quantities that stay constant until the corresponding reading is updated,
- e.g. counters, switches and the like.<p>
-
- If the <code>holdTime</code> in seconds is defined, the samples will be kept in memory allowing
- the calculation of floating statistics instead of blocked statistics. With <code>holdTime</code>
- defined the <code>interval</code> can be kept undefined so that the readings update rate is unchanged
- or it can be set to a value less then <code>holdTime</code> for downsampling as described above
- with a full history of the readings in memory. Note that the historic samples are not persistent
- and will be lost when restarting FHEM.<p>
-
- The event aggregator only takes into consideration those updates that remain after preprocessing
- according to the <code>event-on-update-reading</code> and <code>event-on-change-reading</code>
- directives. Besides which, any update of a reading that occurs within a timespan from the preceding
- update that is smaller than the resolution of FHEM's time granularity is ditched.<p>
-
- When more than one function should be calculated for the same reading, the original reading must be
- multiplied (e.g. by using a notify) before applying the event-aggregator to the derived readings.<p>
- Examples:<br>
- <code>attr myPowerMeter event-aggregator EP_POWER_METER:300:linear:mean,EP_ENERGY_METER:300:none:v</code><br>
- <code>attr myBadSensor event-aggregator TEMP::none:median:300</code><br>
- <code>attr mySunMeter event-aggregator SUN_INTENSITY_24H::const:integral:86400</code>
- </li>
-
- <a name="event-min-interval"></a>
- <li>event-min-interval<br>
- Dieses Attribut enthält eine durch Kommata getrennte Liste von
- "readings:minInterval" Paare. readings kann ein regexp sein. Ein Event wird
- nur dann generiert, falls seit dem letzten Auftreten des gleichen Events
- mindestens minInterval Sekunden vergangen sind. Falls
- event-on-change-reading auch spezifiziert ist, dann werden sie mit ODER
- kombiniert, d.h. wenn einer der beiden Bedingungen wahr ist.
- </li>
-
- <a name="oldreadings"></a>
- <li>oldreadings<br>
- Dieses Attribut enthält eine durch Kommata getrennte Liste von
- Readings. regex sind erlaubt. Für jedes Reading aus der Liste
- speichert FHEM intern den vorherigen Wert wenn sich das Reading
- ändert. Zum Zugriff auf die Werte gibt es die OldReadings.* Routinen.
- </li>
- <a name="userReadings"></a>
- <li>userReadings<br>
- Komma getrennte Liste von benutzerdefinierten Readings. Jede Definition hat
- folgendes Format:
- <ul><code>
- <reading>[:<trigger>] [<modifier>] { <perl code> }
- </code></ul>
- Diese benutzerdefinierte Readings werden bei jeder Aktualisierung der
- Gerätereadings gesetzt, indem das spezifizierte <a href="#perl">perl
- code</a> <code>{ <perl code> }</code> ausgeführt wird, und
- dessen Wert dem Reading zugewiesen wird.
- Falls <trigger> spezifiziert ist, dann findet diese Ausführung
- nur dann statt, falls einer der aktualisierten Readings dem regexp
- <trigger> entspricht (matched). <br>
- Beispiele:
- <ul><code>
- attr myEnergyMeter userReadings energy
- { ReadingsVal("myEnergyMeter","counters.A",0)/1250.0;; }<br>
- attr myMultiMeter userReadings
- energy1:counters.A.* {ReadingsVal("myMultiMeter","counters.A",0)/1250.0},
- energy2:counters.B.* {ReadingsVal("myMultiMeter","counters.B",0)/1250.0}
- </code></ul>
- <code><modifier></code> kann die folgenden Werte haben:
- <ul>
- <li>none: als ob man es gar nicht spezifiziert hätte.</li>
- <li>difference: das Reading wird auf die Differenz zw. dem aktuellen und
- dem vorherigen Wert gesetzt.</li>
- <li>differential: das Reading wird auf die Differenz zw. dem aktuellen und
- dem vorherigen Wert, geteilt durch die Sekunden zw. der aktuellen Zeit
- und der letzten Auswertung, sekundengenau. Kein Wert wird berechnet,
- falls der Unterschied unter eine Sekunde liegt.</li>
- <li>integral: das Gegenteil von differential. Das Ergebnis wird um das
- Produkt aus der Zeit-Differenz und der Durschnittswert der letzten zwei
- Readings erhöht.<br>
- result += (time - timeold) * (oldval + value) / 2
- </li>
- <li>offset: wenn der aktuellen Wert kleiner als der vorherige Wert ist
- wird der vorherige Wert zum Reading addiert. Das Reading kann dann als
- offset verwendet werden um einen Zähler der durch Sromverlust
- zurückgesetzt wird zu korrigieren.</li>
- <li>monotonic: wenn die Differenz zw. dem aktuellen und dem vorherigen
- Wert positiv ist wird diese Differenz zum Reading addiert. Damit
- lässt sich von einem Zähler der bei Stromverlust
- zurückgesetzt wird ein monoton wachsender Zähler
- ableiten.</li>
- </ul>
- Beispiel:
- <ul><code>
- attr myPowerMeter userReadings power differential
- { ReadingsVal("myPowerMeter","counters.A",0)/1250.0}
- </code></ul>
- Achtung:<ul>
- <li>Falls difference oder differential spezifiziert ist, dann werden
- für die Berechnung ältere Werte benötigt, d.h. der Wert
- wird frühestens beim zweiten Änderung gesetzt.</li>
- <li>der Name der definierten Readings besteht aus alphanumerischen
- Zeichen, Unterstrich (_) und Minus-Zeichen (-).</li>
- </ul>
- </li><br>
- </ul>
- <h4>Allgemeine Attribute</h4>
- Die folgenden lokalen Attribute werden von mehreren Geräten verwendet:
- <ul>
- <a name="IODev"></a>
- <li>IODev<br>
- Setzt das IO oder das physische Device, welches zum Senden der Signale an
- dieses logische Device verwendet werden soll (Beispielsweise FHZ oder
- CUL). Hinweis: Beim Start weist FHEM jedem logischen Device das letzte
- physische Device zu, das Daten von diesem Typ empfangen kann. Das
- Attribut IODev muss nur gesetzt werden, wenn mehr als ein physisches
- Device fähig ist, Signale von diesem logischen Device zu empfangen.
- </li><br>
- <li>Attribut "disable" umschalten<br/>
- Das Attribut "disable" kann, sofern vom Gerätemodul bereitgestellt,<br/>
- mit folgendem Befehl einfach umgeschaltet werden:</br>
- <br/>
- <code>attr <device> disable toggle</code><br/>
- </li>
- </ul>
- <!-- attributes end - diese Zeile nicht entfernen! -->
- <br><br>
- <a name="attr"></a>
- <h3>attr</h3>
- <ul>
- <code>attr [-a|-r] <devspec> <attrname> [<value>]</code><br>
- <br>
- Dieser Befehl setzt ein Attribut für ein Gerät welches mit <a
- href="#define">define</a> definiert wurde. value ist optional, und ist 1
- falls nicht spezifiziert. Sie können auch Ihre eigenen
- Attribute definieren, um sie in anderen Applikationen anzuwenden. Geben Sie
- "<attr <name> ?" ein, um eine Liste verfügbarer Attribute
- anzuzeigen.
- Siehe den Abschnitt über <a href="#devspec">Geräte-Spezifikation</a>
- für Details der <devspec>.<br>
- Gerätespezifische Attribute sind in der Beschreibung zum jeweiligen
- Gerät aufgeführt.
- Nach der Durchführung das globale Ereignis "ATTR" wird generiert.
- <br>
- Falls die Option -a spezifiziert ist, dann wird value zum aktuellen Wert
- hinzugefügt. Achtung: falls value nicht mit einem Komma (,)
- anfängt, dann wird es mit einem Leerzeichen angehängt.
- <br>
- Mit der -r Option kann man Teile eines Attributes wieder entfernen.<br>
- <br>
- Beispiele:
- <ul><code>
- attr global verbose 3<br>
- attr lamp room kitchen<br>
- attr lamp group lights<br>
- attr lamp loglevel 6<br>
- attr weatherstation event-on-update-reading wind,temperature,humidity<br>
- attr weatherstation event-on-change-reading israining<br>
- attr weatherstation event-on-change-reading israining,state<br>
- attr heating stateFormat Temp:measured-temp, Valve:actuator<br>
- attr -a TYPE=SVG room ,SvgRoom</br>
- attr -r TYPE=SVG room ,SvgRoom</br>
- </code></ul>
- <br>
- Bemerkungen:<br>
- <ul>
- <li>Lesen Sie unter <a href="#deleteattr">deleteattr</a> nach um Attribute
- zu löschen.</li>
- </ul>
- </ul>
- <!-- attr end -->
- <a name="cancel"></a>
- <h3>cancel</h3>
- <ul>
- <code>cancel [<id> [quiet]]</code>
- <br><br>
- Entfernt ein benanntes <a href="#sleep">sleep</a>.
-
- </ul>
- <!-- cancel end -->
- <a name="define"></a>
- <h3>define</h3>
- <ul>
- <code>define [option] <name> <type> <type-specific></code><br>
- <br>
- Definiert ein Gerät. Sie müssen Geräte einrichten um sie zu
- beeinflussen (z.B. das Kommando set on/off auszuführen). Gleichfalls
- ist das Logfile besser lesbar wenn es z.B. "lamp off" anstatt "Device 5673,
- Button 00, Code 00 (off)" als Text enthält. <br>
- Nach der Durchführung wird das globale Ereignis "DEFINED" generiert.
- <br><br>
- Je nach Typ benötigt man unterscheidliche Argumente, lesen Sie sich
- bitte die zu dem jeweiligen Gerät gehörenden Abschnitte durch.
- <br><br>
- Optionen:<br>
- <ul>
- <li>-temporary<br>
- Setzt den TEMPORARY Marker, was das Abspeichern dieser Definition in
- fhem.cfg verhindert.
- </li><br>
- <li>-ignoreErr<br>
- Reduziert die Anzahl der Fehlermeldungen, falls ein FHEM-Modul nicht
- geladen werden kann. Wird in fhem.cfg.demo verwendet, da das RSS Beispiel
- etliche, normalerweise nicht installierte perl-Module benötigt.
- </li><br>
- </ul>
- </ul>
- <!-- define end -->
- <a name="defmod"></a>
- <h3>defmod</h3>
- <ul>
- <code>defmod [-temporary] <name> <type> <type-specific></code><br>
- <br>
- Definiert ein Gerät, oder ändert es, falls es exisitiert. Um
- z.Bsp. eine Lampe 10 Minuten nach der letzten Meldung eines Bewegungsmelders
- abzuschalten, könnte man folgendes definieren:
- <ul><code>
- define mdNtfy notify motionDetector defmod mdOff at +00:10 set lamp off
- </code></ul>
- Falls man statt defmod ein define verwenden würde, dann würde eine
- Meldung innerhalb von 10 Minuten nach der letzten Meldung zu einem Fehler
- führen, da mdOff noch existiert.
- <br>
- </ul>
- <!-- defmod end -->
- <a name="delete"></a>
- <h3>delete</h3>
- <ul>
- <code>delete <devspec></code> <br>
- <br>
- Löscht etwas was mit dem <a href="#define">define</a> Befehl erstellt
- worden ist.<br>
- Siehe den Abschnitt über <a href="#devspec">Geräte-Spezifikation</a>
- für Details der <devspec>.<br>
- Nach dem löschen, wird das globale Ereignis "DELETED" erzeugt.<br>
- Beispiel:
- <ul>
- <code>delete lamp</code><br>
- </ul>
- <br>
- </ul>
- <!-- delete end -->
- <a name="deleteattr"></a>
- <h3>deleteattr</h3>
- <ul>
- <code>deleteattr <devspec> [<attrname>]</code> <br>
- <br>
- Löscht entweder ein einzelnes Attribut (siehe Abschnitt <a
- href="#attr">attr</a> ) oder alle Attribute eines Gerätes (falls
- kein <attrname> angegeben wird).<br>
- Siehe den Abschnitt über <a href="#devspec">Geräte-Spezifikation</a>
- für Details der <devspec>.<br>
- Nach der Durchführung das globale Ereignis "DELETEATTR" wird generiert.
- <br>
- Beispiele:
- <ul>
- <code>deleteattr lamp follow-on-for-timer</code><br>
- <code>deleteattr lamp</code><br>
- </ul>
- <br>
- </ul>
- <!-- deleteattr end -->
- <a name="deletereading"></a>
- <h3>deletereading</h3>
- <ul>
- <code>deletereading <devspec> <readingname></code> <br>
- <br>
- Entfernt das Reading <readingname> für das spezifizierte
- Gerät. <readingname> ist ein perl Regular-Expression, was den
- vollständigen Namen des Readings erfassen muss.
- Mit größter Sorgfalt verwenden! FHEM kann abstürzen, falls
- man lebenswichtige Readings entfernt.<br>
- Siehe den Abschnitt über <a href="#devspec">Geräte-Spezifikation</a>
- für Details der <devspec>.<br>
- <br>
- Beispiele:
- <ul>
- <code>deletereading mySensor temp1</code><br>
- <code>deletereading mySensor temp\d+</code><br>
- </ul>
- <br>
- </ul>
- <!-- deletereading end -->
- <a name="displayattr"></a>
- <h3>displayattr</h3>
- <ul>
- <code>displayattr <devspec> [<attrname>]</code> <br>
- <br>
- Zeigt entweder den Wert eines Attributes an (falls <attrname>
- spezifiziert wurde) oder alle Attribute eines Gerätes.
- Siehe den Abschnitt über <a href="#devspec">Geräte-Spezifikation</a>
- für Details der <devspec>.<br>
- Falls mehrere Geräte spezifiziert wurden, dann enthält die Ausgabe
- den Namen der Geräte.
- <br>
- Beispiele:
- <ul>
- <code>
- fhem> di WEB<br>
- menuEntries AlarmOn,/fhem?cmd=set%20alarm%20on<br>
- room Misc.<br>
- fhem> di WEB room<br>
- Misc.<br>
- </code>
- </ul>
- <br>
- </ul>
- <!-- displayattr end -->
- <a name="get"></a>
- <h3>get</h3>
- <ul>
- <code>get <devspec> <type-specific></code>
- <br><br>
- Fragt einen Wert direkt (aktuell) vom Gerät ab und wartet auf eine
- Antwort. Eine allgemeine Liste möglicher Paramter erhalten Sie mit<ul>
- <code>get <device> ?</code>
- </ul>
- Siehe den Abschnitt über <a href="#devspec">Geräte-Spezifikation</a>
- für Details der <devspec>.<br>
- Jedes Gerät hat unterschiedliche "get"-Parameter. Lesen Sie Details bitte im
- zugehörigen Abschnitt nach.<br>
- <br>
- </ul>
- <!-- get end -->
- <a name="getstate"></a>
- <h3>getstate</h3>
- <ul>
- <code>getstate <devspec></code>
- <br><br>
- Gibt einen kurzen, durch Leerzeichen getrennte Statusliste für <devspec>
- aus . Dies ist nützlich, um das Gerät in z.B. Cacti zu beobachten.<br>
- Beispiel:
- <ul><code>
- getstate lamp<br>
- state:1<br>
- <br>
- getstate fl<br>
- ack:0 actuator:2 day-temp:21.5 desired-temp:22.5 [...] measured-temp:22.9 [...]
- </code></ul>
- Bemerkung: Um diesen Befehl nutzen zu können, kopieren Sie bitte die
- Datei 99_getstate.pm aus dem Verzeichnis contrib/getstate/ in Ihr FHEM
- Verzeichnis.
- <br>
- </ul>
- <!-- getstate end -->
- <a name="include"></a>
- <h3>include</h3>
- <ul>
- <code>include <filename></code> <br>
- <br>
- Liest (z.B. als Befehlszeile in der fhem.cfg) die in <filename>
- angegebene Datei in FHEM ein und interpretiert jede Dateizeile als FHEM
- Befehl. Dieses Befehl sollte nur von Experten verwendet werden.
- <br>
- </ul>
- <!-- include end -->
- <a name="inform"></a>
- <h3>inform</h3>
- <ul>
- <code>inform {on|off|timer|raw} [regexp]</code> <br>
- <br>
- Ermöglicht Event-Verfolgung über das telnet Interface. Es ist das
- telnet Equivalent des FHEMWEB Event-Monitors, es kann aber auch von weiteren
- Programmen zur Benachrichtigung verwendet werden. Optionen:<br>
- <ul>
- <li>on<br>
- aktiviert die Benachrichtigung.</li>
- <li>onWithState<br>
- zeigt auch das zusätzliche state Event</li>
- <li>off<br>
- deaktiviert die Benachrichtigung (sowohl Events wie auch Logs, s.u.)</li>
- <li>raw<br>
- zeigt (nur) die raw Events der physikalischen Module</li>
- <li>timer<br>
- stellt der Daten ein Zeitstempel vor</li>
- <li>log<br>
- zeigt die vom FHEM Log Interface protokollierten Daten</li>
- <li>status<br>
- zeigt den aktuellen Status</li>
- </ul>
- <br>
- </ul>
- <!-- inform -->
- <a name="list"></a>
- <h3>list</h3>
- <ul>
- <code>list [devspec] [value]</code><br>
- oder<br>
- <code>list {-r|-R} devspec</code><br>
- <br><br>
- Auflistung aller "definitions", "notify" und
- "at"-Definitionen. Dies ist eines der wenigen Befehle, die im
- Normalfall eine Zeichenkette ausgeben.<br> Siehe den Abschnitt über <a
- href="#devspec">Geräte-Spezifikation</a> für Details der
- <devspec>.<br>
-
- <br> Wenn value angegeben ist, der von ( DEF, TYPE, usw) oder reading
- (actuator, measured-temp) für alle Geräte die in devspec angegeben
- sind. <br><br> Beispiel:
- <pre><code>fhem> list
- Type list <name> for detailed info.
- Internal:
- global (Internal)
- FHZ:
- FHZ (fhtbuf: 23)
- FS20:
- Btn4 (on-old-for-timer)
- Roll1 (on)
- Stehlampe (off)
- FHT:
- fl (measured-temp: 21.1 (Celsius))
- KS300:
- out1 (T: 2.9 H: 74 W: 2.2 R: 8.2 IR: no)
- at:
- at_rollup (Next: 07:00:00)
- notify:
- ntfy_btn4 (active)
- FileLog:
- avglog (active)
- </name></code></pre>
- Wenn Sie für <code>name</code> einen Gerätenamen eingeben, dann
- erhalten Sie einen genauen Status für das in<code> name</code>
- angegebene Gerät angezeigt, z.B.:
- <pre><code> fhem> list fl
- Internals:
- CODE 5102
- DEF 5102
- NAME fl
- NR 15
- STATE measured-temp: 21.1 (Celsius)
- TYPE FHT
- IODev FHZ
- Attributes:
- room Heizung
- Readings:
- 2006-11-02 09:45:56 actuator 19%
- [...]
- </code></pre>
- Mit der -r (raw) Option werden die Daten in einem für fhem.cfg bzw.
- fhem.state passenden Format generiert. -R liefert diese Daten auch für
- alle von diesem Gerät vermutlich benögten Geräte.
- Achtung: die Bestimmung dieser Liste ist ungenau.
- </ul>
- <!-- list end -->
- <a name="modify"></a>
- <h3>modify</h3>
- <ul>
- <code>modify <name> <type-dependent-options></code>
- <br><br>
- Dieser Befehl wird benutzt, um Definitionen zu verändern. Er ist
- nützlich, um <a href="#at">at</a> oder <a href="#notify">notify</a>
- Definitionen zu verändern. Wenn Sie einen Wert einer an Definition
- verändern, dann wird nur der für die Zeit zuständige Teil
- geändert. Im Falle der Veränderung einer Definition vom Typ
- "notify" wird nur der regex Teil geändert. Alle anderen
- Werte (Stati, Attribute, etc) bleiben erhalten.
- After modify, the global event "MODIFIED" will be generated.
- Nach der Durchführung das globale Ereignis "MODIFIED" wird generiert.
- <br><br>
- Beispiel:
- <ul>
- <code>define lampon at 19:00 set lamp on</code><br>
- <code>modify lampon *19:00</code><br>
- <code>modify lampon 19:00 set lamp on-for-timer 16</code><br>
- </ul>
- </ul>
- <!-- modify end -->
- <a name="quit"></a>
- <h3>quit</h3>
- <ul>
- <code>quit</code>
- <br><br>
- Dieser Befehl wird in einer TCP/IP Session benutzt um die Client-Sitzung zu
- beenden.<br>
- Wird dieser Befehl in einem Skript benutzt, wird das abarbeiten des Skriptes
- beendet.
- <br><br>
- Beispiel:
- <ul>
- <code>quit</code>
- </ul>
- </ul>
- <!-- quit end -->
- <a name="reload"></a>
- <h3>reload</h3>
- <ul>
- <code>reload <module></code>
- <br><br>
- Reload the given module from the module directory. It is a convenient way to
- test modules whithout restarting the program.
- <br><br>
- Example:
- <ul>
- <code>reload 99_PRIV</code>
- </ul>
- </ul>
- <!-- reload end -->
- <a name="rename"></a>
- <h3>rename</h3>
- <ul>
- <code>rename <oldname> <newname></code>
- <br><br>
- Benennt ein Gerät von <oldname> in <newname>,
- einschliesslich der Attribute, um. Das globale Ereignis "RENAMED"
- wird erstellt, Lesen Sie bitte den Abschnitt "notify" durch um
- Details zu erfahren.
- <br><br>
- Beispiel:
- <ul>
- <code>rename FHT_1234 fht.kitchen</code>
- </ul>
- </ul>
- <!-- rename end -->
- <a name="rereadcfg"></a>
- <h3>rereadcfg</h3>
- <ul>
- <code>rereadcfg [fhem-config-file]</code>
- <br><br>
- Liest entweder die aktuelle Konfigurationsdatei oder die angegebene Datei
- ein.<br> Der Ablauf ist dabei wie folgt: Zuerst wird das <a
- href="#statefile">statefile</a> gesichert. Dann werden alle Geräte
- gelöscht. Dann wird die aktuelle Konfigurationsdatei (oder die
- angegebene Datei) eingelesen zuletzt wird das statefile neu eingelesen.<br>
- Wenn dieser Ablauf abgeschlossen ist, wird das globale REREADCFG Ereignis
- ausgelöst. Alle existierenden Verbindungenwerden bis zum
- "rereadcfg" Ereignis getrennt.
- <br><br>
- Beipiel:
- <ul>
- <code>rereadcfg</code>
- </ul>
- </ul>
- <!-- rereadcfg end -->
- <a name="save"></a>
- <h3>save</h3>
- <ul>
- <code>save [<configfile>]</code>
- <br><br>
- Sichert zuerst das <a href="#statefile">statefile</a> und dann das
- <a href="#configfile">configfile</a>. Wenn ein Parameter angegeben wird dieser
- anstelle der allgemeinen Konfigurationsdatei benutzt.<br><br>
- Hinweise:
- <ul>
- <li>Der Befehl speichert nur "definitions" und
- "attributes" aber keine (set/get) Befehle die vorher Teil der
- Konfigurationsdatei waren. Wenn Sie solche Befehle nach der
- Initialisierung (z.B. <a href="#FHZset">FHTcode</a>)
- benötigen,dann müssen Sie sie mit <a href="#notify">notify</a>
- triggern wenn das INITIALIZED Ereignis eintritt.</li>
- <li>Der Befehl "save" versucht Kommentarzeilen (Zeilen die
- mit # beginnen) und "include"-Zeilen zu erhalten, aber arbeitet
- nicht korrekt wenn FHEM für diese Dateien keine Schreibrechte
- besitzt.</li>
- <li>Vor dem Überschreiben der Dateien wird die alte Version gesichert,
- siehe <a href="#restoreDirs">restoreDirs</a> für Einzelheiten.</li>
- </ul>
- </ul>
- <!-- save end -->
- <a name="set"></a>
- <h3>set</h3>
- <ul>
- <code>set <devspec> <type-specific></code>
- <br><br>
- Der Befehl setzt Geräteparameter/sendet Signale an ein Gerät. Sie
- erhalten eine Liste verfügbarer Parameter wenn Sie folgendes eingeben:
- <ul>
- <code>set <name> ?</code>
- </ul>
- Siehe den Abschnitt über <a href="#devspec">Geräte-Spezifikation</a>
- für Details der <devspec>.<br>
- Der "set"-Befehl gibt nur bei Fehler einen Wert zurück.
- <br><br>
- Jedes Gerät hat verschiedene Parameter die mit "set" gesetzt
- werden können. Lesen Sie bitte den entsprechenden Abschnitt für
- das Gerät für Details durch.
- <br><br>
- Ab featurelevel 5.7 ersetzt der set und setreading Befehl
- <ul>
- <li>[device:name] mit dem Wert des Readings, Internals oder Attributes
- für device, falls sowohl device, als auch Reading, Internal oder
- Attribut existiert, und nicht leer ist.
- <ul>
- <li>Man kann einen der Präfixe r:, i: oder a: verwenden, um die
- Suche einzuschränken, genau wie im devspec.</li>
- <li>Das Suffix :d extrahiert die erste Zahl.</li>
- <li>Das Suffix :i extrahiert die erste Zahl als Ganzzahl.</li>
- <li>Das Suffix :r<n> extrahiert die erste Zahl, und rundet sie auf
- <n> Dezimalstellen. Falls <n> fehlt, dann wird auf eine
- Dezimalstelle gerundet.</li>
- <li>Das Suffix :t liefert den Zeitstempel des Readings</li>
- <li>Das Suffix :sec liefert Anzahl der Sekunden seit Änderung
- des Readings.</li>
- </ul>
- Beispiel:
- <ul>
- set Lamp blink [blinkDummy:number] [r:blinkDummy:duration:d]
- </ul>
- </lu>
- <li>{(perlExpression)} mit dem Ergebnis der perlExpression.
- $DEV wird dabei mit dem Namen des vom set betroffenen Gerätes ersetzt.
- </li>
- </ul>
- Diese Ersetzungen sind unter dem Namen "set magic" bekannt.
- <br><br>
- <a name="setExtensions"></a>
- Manche Module unterstützen die sog. <b>set extensions</b>, und in der
- entsprechenden Dokumentation ist ein Link auf diesem Text zu finden. Falls im
- Modul selber einer der unten aufgeführten Befehle implementiert ist, dann
- wird die Modul-Implementation verwendet.
- <ul>
- <li>on-for-timer <sekunden><br>
- Das Gerät wird per "on" eingeschaltet, und ein interner Zeitgeber
- wird erstellt, um nach <sekunden> ein "off" Kommando
- auszuführen. Um diesen Zeitgeber zu entfernen sollte man das
- Kommando mit dem Argument 0 erneut aufrufen. Achtung: dieser Zeitgeber
- wird bei einem restart nicht gespeichert.</li>
- <li>off-for-timer <sekunden><br>
- siehe on-for-timer.</li>
- <li>on-till <timedet><br>
- Das Gerät wird per "on" eingeschaltet, und ein at Instanz wird
- definiert, um es um <timedet> (Format: HH:MM[:SS]) per off
- auszuschalten. Diese at Instanz ist sichtbar unter dem Namen
- geräteName+"_till". Um das Ausschalten zu deaktivieren
- löscht man diese at Definition. Achtung: das Ein/Ausschalten wird
- nicht durchgeführt, falls die aktuelle Uhrzeit nach der
- spezifizierten Zeit ist, um folgende Szenarien zu vereinfachen:
- <ul><code>
- define morningLight at *06:00 set Lamp on-till {sunrise()}
- </code></ul>
- </li>
- <li>on-till-overnight <timedet><br>
- Wie on-till, aber die aktuelle Uhrzeit wird nicht mit der
- Spezifizierten verglichen, damit folgendes funktioniert:
- <ul><code>
- define nightLight at *{sunset()} set Lamp on-till-overnight 01:00
- </code></ul>
- </li>
- <li>off-till <timedet><br>
- siehe on-till.</li>
- <li>off-till-overnight <timedet><br>
- siehe on-till-overnight.</li>
- <li>blink <anzahl> <blink-periode><br>
- Das Gerät wird mit "on" für die <blink-periode>
- eingeschaltet, und das wird nach <blink-periode> wiederholt. Um
- das Blinken vorzeitig zu stoppen spezifiziert man "0 0" als
- Argument.</li>
- <li>intervals <from1>-<till1> <from2>-<till2>...
- </br>
- Das Gerät wird für die spezifizierten Intervalle
- eingeschaltet. Die einzelnen Intervalle sind Leerzeichen getrennt, und
- ein Intervall besteht aus zwei Zeitspezifikationen, die mit einem "-"
- getrennt sind.
- </li>
- <li>toggle<br>
- Das Gerät wird mit "on" eingeschaltet, falls STATE "off" ist (oder
- dim 0), sonst wird es mit "off" ausgeschaltet.
- </ul>
- Beispiele:
- <ul>
- <code>
- set switch on-for-timer 12.5<br>
- set switch on-till {sunset()}<br>
- set switch blink 3 1<br>
- set switch intervals 08:00-12:00 13:00-18:00<br>
- </code>
- </ul>
- </ul>
- </ul>
- <!-- set end -->
- <a name="setdefaultattr"></a>
- <h3>setdefaultattr</h3>
- <ul>
- <code>setdefaultattr [<attrname> [<value>]] </code><br>
- <br>
- Fügt Sie ein Standardattribut hinzu. Jedem nach dieser Zuweisung definierte
- Gerät wird dieses Attribut zugewiesen. Wenn kein "attrname" angegeben wird,
- dann wird die Liste der Standardattribute gelöscht.
- <br><br>
- Beispiel, um das Attribut "room kitchen" und "loglevel 4" allen Lampen
- zuzuweisen:
- <ul>
- <code>setdefaultattr room kitchen</code><br>
- <code>setdefaultattr loglevel 4</code><br>
- <code>define lamp1 FS20 1234 11</code><br>
- <code>define lamp2 FS20 1234 12</code><br>
- <code>define lamp3 FS20 1234 13</code><br>
- <code>setdefaultattr</code><br>
- </ul>
- <br>
- Anmerkungen:<br>
- <ul>
- <li>es gibt keine Möglichkeit, ein einzelnes Standardattribut aus der Liste
- tu löschen.</li>
- </ul>
- </ul>
- <!-- setdefaultattr end -->
- <a name="setreading"></a>
- <h3>setreading</h3>
- <ul>
- <code>setreading <devspec> <reading> <value></code>
- <br><br>
- Der Befehl setzt das Reading <reading> auf den Wert <value> ohne
- Signale an das betroffene Gerät zu senden, generiert aber Ereignisse und
- die übliche eventMap und stateFormat Umwandlung wird auch
- durchgeführt.
- <br>
- Siehe den Abschnitt über <a href="#devspec">Geräte-Spezifikation</a>
- für Details der <devspec> und die Beschreibung des set Befehls
- für Ersetzung.<br>
- <br>
- Beispiel:
- <ul>
- setreading lampe state on
- </ul>
- Achtung: setreading generiert kein Event für ein Gerät X, falls es
- aus einem notify für Gerät X aufgerufen wurde. In so einem Fall
- könnte man auf "sleep 0.1; setreading X Y Z" ausweichen.
- </ul>
- <!-- setreading end -->
- <a name="setstate"></a>
- <h3>setstate</h3>
- <ul>
- <code>setstate <devspec> <value></code>
- <br><br>
- Der Befehl setzt den STATE Eintrag des Gerätes direkt, ohne Ereignisse
- zu generieren oder ein Signal an das Gerät zu senden. Dieser Eintrag ist
- maßgebend für die Status-Anzeige in diversen Frontends. Dieser
- Befehl wird auch im <a href="#statefile">statefile</a> benutzt.<br> Siehe den
- Abschnitt über <a href="#devspec">Geräte-Spezifikation</a> für
- Details der <devspec>.<br> <br>
- Beispiel:
- <ul>
- setstate lampe An
- </ul>
- </ul>
- <!-- setstate end -->
- <a name="shutdown"></a>
- <h3>shutdown</h3>
- <ul>
- <p>
- <code>shutdown [<var>restart</var>] [<var>exitValue</var>]</code>
- </p>
- <p>
- Der Befehl fährt <abbr>FHEM</abbr> herunter (nach dem Sichern aller <a
- href="#statefile">Gerätestatus</a>). Er triggert den <code>global:SHUTDOWN</code>-<span lang="en">Event</span>.
- Mit dem optionalen Parameter <var lang="en">restart</var> startet <abbr>FHEM</abbr> danach neu.
- Der <var lang="en">exitValue</var> ist möglicherweise bei bestimmten Start-Skripten zur korrekten Funktion
- vonnöten <abbr>bzw.</abbr> wichtig.
- </p>
- Beispiel:
- <ul>
- <code>shutdown</code><br>
- <code>shutdown restart</code><br>
- <code>shutdown 1</code>
- </ul>
- </ul>
- <!-- shutdown end -->
- <a name="sleep"></a>
- <h3>sleep</h3>
- <ul>
- <code>sleep <sec> [<id>] [quiet]</code>
- <br><br>
- sleep gefolgt von weiteren Befehlen ist vergleichbar mit einem namenlosen <a
- href="#at">at</a> Kommando, es führt die nachfolgenden Befehle aus,
- nachdem es die spezifizierte Zeitspanne gewartet hat. Die Einheit ist
- Sekunde, Millisekunden genau, da man Nachkommastellen spezifizieren
- kann.<br><br>
- Ein sleep mit einer <id> ersetzt ein sleep mit der gleichen <id>
- and can mit <a href="#cancel">cancel</a> entfernt werden.
- Falls sleep in at/notify/etc aufgerufen wurde, und die nachfolgenden
- Kommandos einen nicht leeren Text zurückgeliefert haben, dann wird
- dieser Text mit loglevel 2 protokolliert.<br>
- quiet vermeidet diese Protokollierung.
- <br><br>
- Beispiele:
- <ul>
- <code>sleep 0.5</code><br>
- <code>define n3 notify btn3.* set lamp toggle;;sleep 0.5;;set lamp
- toggle</code><br>
- <code>define a3 at +*00:05 set Windsensor 1w_measure;; sleep 2 quiet;; get
- Windsensor 1w_temp</code>
- </ul>
- <br>
- Bemerkung: falls sleep von keinem Befehl gefolgt wird, dann wird FHEM
- blockiert. Das ist unerwünscht, und im FHEM-Log wird eine Warnung
- protokolliert.
- </ul>
- <!-- sleep end -->
- <a name="trigger"></a>
- <h3>trigger</h3>
- <ul>
- <code>trigger <devspec> <event></code>
- <br><br>
- Generiert das Ereignis <event>, was z.Bsp. ein <a
- href="#notify">notify</a> anstoßen kann, oder den FileLog zum
- protokollieren dieser Zeile bewegen kann.<br>
- Siehe den Abschnitt über <a href="#devspec">Geräte-Spezifikation</a>
- für Details der <devspec>.<br>
- <br>
- Beispiel:
- <ul>
- <code>trigger btn3 on</code>
- </ul>
- </ul>
- <!-- trigger end -->
- <!-- commands end - diese Zeile nicht entfernen! -->
- <a name="global"></a>
- <h3>global</h3>
- <ul>
- Das "global" Gerät wird benutzt, um allgemeingültige
- Attribute zu setzen. Es wird automatisch erstellt und kann nicht
- gelöscht oder umbenannt werden. Es hat keine "set" oder
- "get" Parameter.<br>
- <br>
- <b>Define</b><ul>N/A</ul><br>
- <b>Set </b><ul>N/A</ul><br>
- <b>Get</b><ul>N/A</ul><br>
- <b>Attributes</b>
- <ul>
- <li><a href="#archivedir">archivedir</a></li>
- <li><a href="#archivecmd">archivecmd</a></li>
- <li><a href="#nrarchive">nrarchive</a></li>
- <a name="archivesort"></a>
- <li>archivesort<br>
- archivesort kann auf dem (voreingestellten) Wert alphanum oder timestamp
- gesetzt werden, und bestimmt die Methode für die
- Reihenfolgenberechnung der Dateien für nrarchive.<br>
- </li><br>
- <a name="autoload_undefined_devices"></a>
- <li>autoload_undefined_devices<br>
- wenn dieses Attribut gesetzt ist, werden die zu einer neu empfangenen
- Nachricht zugehörigen Module automatisch geladen. Dies
- erfolgt vom <a href="#autocreate"> autocreate</a> Gerät, um so
- automatisch ein FHEM-Gerät bei erreichen einer entsprechenden
- Nachricht zu erstellen.
- </li><br>
- <a name="backupcmd"></a>
- <li>backupcmd<br>
- Sie können das Update durch Ihre eigenen Befehle/Skripts
- durchführen indem Sie dieses Attribut setzen. Wenn dieses
- Attribut gesetzt ist, dann startet es als ein SHELL-Befehl und erstellt
- eine durch Leerzeichen getrennte Liste von Dateien/Verzeichnissen als
- <strong>ein</strong> Argument zum Befehl, z.B.:
- <br>
- <ul>
- <code>"/etc/fhem.cfg /var/log/fhem/fhem.save /usr/share/fhem/contrib
- /usr/share/fhem/FHEM /usr/share/fhem/foo /usr/share/fhem/foobar
- /usr/share/fhem/www"</code>
- </ul>
- Bemerkung: Ihr Befehl/Skript muss die Zeichenkette "backup done"
- zurückgeben oder eine entsprechende Zeichenkette um
- Fehlermeldungen auszugeben, damit die Zusammenarbeit mit update
- funktioniert!<br> Dieses Attribut wird vom <a href="#backup">backup</a>
- Befehl benutzt.<br>
- Beispiel:<br>
- <ul>
- attr global backupcmd /usr/local/bin/myBackupScript.sh
- </ul>
- </li><br>
- <a name="backupdir"></a>
- <li>backupdir<br>
- Ein Ordner um die komprimierten Sicherheitsdateien zu speichern.
- Dieses Attribut wird vom <a href="#backup">backup</a> Befehl
- benutzt.<br> Beispiel:<br>
- <ul>
- attr global backupdir /Volumes/BigHD
- </ul>
- </li><br>
- <a name="backupsymlink"></a>
- <li>backupsymlink<br>
- Wenn dieses Attribut auf etwas anderes als "no", dann unterstützt
- der Archviierungsbefehl "tar" symbolische Links in Ihrem
- Backup. Andererseits, wenn dieses Attribut auf "no" gesetzt ist werden
- symbolische Links vom Befehl "tar" ignoriert. Dieses
- Attribut wird vom <a href="#backup">backup</a> Befehl benutzt.<br>
- Beispiel:<br>
- <ul>
- attr global backupsymlink yes
- </ul>
- </li><br>
- <a name="blockingCallMax"></a>
- <li>blockingCallMax<br>
- Begrenzt die Anzahl der parallel laufenden Prozesse, die von der
- BlockingCall FHEM Hilfsroutine gestartet wurden. Sinnvoll auf weniger
- leistungsfaehigen Hardware.
- </li><br>
- <a name="configfile"></a>
- <li>configfile<br>
- Enthält den Namen der FHEM Konfigurationsdatei. Wenn <a
- href="#save">save</a> ohne Argumente aufgerufen wird dann wird die
- Ausgabedatei unter diesem Dateinamen gespeichert.
- </li><br>
- <a name="commandref"></a>
- <li>commandref<br>
- Falls der Wert "full" (die Voreinstellung) ist, dann wird nach jedem
- update ein komplettes commandref.html generiert. Falls der Wert
- "modular" ist, dann wird die Moduldokumentation erst nach Bedarf
- waehrend der Laufzeit per JavaScript geladen.
- </li><br>
- <a name="dnsHostsFile"></a>
- <li>dnsHostsFile<br>
- Falls dnsServer gesetzt ist, wird die angegebene Datei nach dem
- Hostnamen durchsucht. Um die vom System verwendete Datei zu benutzen,
- ist es unter Linux/Unix/OSX auf /etc/hosts und unter Windows auf
- C:\windows\system32\drivers\etc\hosts zu setzen. Achtung: es wird nur
- IPv4 unterstützt.
- </li><br>
- <a name="dnsServer"></a>
- <li>dnsServer<br>
- Enthält die IP Adresse des DNS Servers. Die von bestimmten Modulen
- (oder eigenen Code) aufgerufene HttpUtils_NonblockingGet wird auch bei
- der DNS Auflösung nicht mehr blockieren, falls dieses Attribut
- gesetzt ist, da es in diesem Fall FHEM eigene Routinen aufgerufen
- werden. Sonst werden die OS-eigenen, blockierenden Routinen inet_aton
- bzw gethostbyname aufgerufen.
- </li><br>
- <a name="featurelevel"></a>
- <li>featurelevel<br>
- Aktiviere bzw. deaktiviere bestimmte alte oder neue Funktionen, basierend
- auf die FHEM Version. Z.Bsp. das $value hash für notify wird nur bis featurelevel 5.6
- befüllt, da es unerwünscht ist. Stattdessen sollte man die
- Value() Funktion verwenden.
- </li><br>
- <a name="holiday2we"></a>
- <li>holiday2we<br>
- Wenn dieses Attribut gesetzt wurde, dann wird die <a
- href="#perl">$we</a> Variable als "true" betrachtet, wenn der
- Wert der <a href="#holiday">holiday</a> Variable zu diesem Attribut
- nicht "none" ist.<br>
- Falls es eine Komma getrennte Liste ist, dann ist es wahr, falls einer
- der referenzierten Instanzen nicht "none" ist.<br>
- Beispiel:<br>
- <ul>
- attr global holiday2we hessen
- </ul>
- </li><br>
- <a name="httpcompress"></a>
- <li>httpcompress<br>
- das HttpUtils Modul wird von etlichen FHEM modulen verwendet und
- aktiviert Komprimierung in der Voreinstellung. Falls man
- httpcompress auf 0 setzt, wird die Komprimierung deaktiviert.
- </li><br>
- <a name="keyFileName"></a>
- <li>keyFileName<br>
- FHEM Module speichern Passwörter und IDs in der Datei
- FHEM/FhemUtils/uniqueID. Um mehrere FHEM-Instanzen im gleichen
- Verzeichnis starten zu können, kann man dieses Attribut setzen,
- dessen Wert an FHEM/FhemUtils/ angehängt wird.
- </li><br>
- <a name="logdir"></a>
- <li>logdir<br>
- Falls gesetzt, wird %L in dem logfile Attribut (oder in der Dateinamen
- Spezifikation des FileLog Moduls) durch den Wert des Attributes ersetzt.
- Achtung: ändern des Wertes bewirkt nicht das Verschieben bereits
- erstellter Dateien, und kann zu diversen Problemen führen.
- </li><br>
- <a name="logfile"></a>
- <li>logfile<br>
- Gibt das Logfile an, in welches gespeichert werden soll. Sie
- können "-" für die Ausgabe in das stdout-Gerät. In
- diesem Fall stellt sich der Server nicht selbst in den Hintergrund.<br>
- Der Name der Logdatei kann auch "wildcards" enthalten, um
- eine einfachere Abfolge für die Dateien zu erreichen. Lesen Sie
- bitte den Abschnitt <a href="#FileLog">FileLog</a>. Fügen Sie die
- Attribute <code>archivecmd / archivedir / nrarchive</code> zum
- <code>global</code> Gerät hinzu wie Sie es auch bei einem FileLog
- device tun könnten.<br> Sie können den Namen der Logdatei
- mit <code>{ $currlogfile }festlegen</code>.
- </li><br>
- <a name="modpath"></a>
- <li>modpath<br>
- Mit modpath geben Sie den Pfad zu dem Verzeichnis der <code>FHEM</code>
- Module an. Der Pfad enthält <b>nicht</b> das Verzeichnis FHEM.
- Durch das setzen der Attribute, wird das Verzeichnis nach Dateinamen in
- der Form NN_<NAME>.pm durchsucht, und sie werden für die
- Definition von Geräten unter dem Namen <NAME> verfügbar
- gemacht. Wenn das erste Gerät des Typs <NAME> definiert
- wird, werden die entsprechenden Module geladen und in dem Modul die
- entsprechende Funktion mit dem Namen <NAME>_Initialize wird
- aufgerufen. Eine Ausnahme bilden Module die mit der Nummer 99 im
- Dateinamen beginnen. Diese enthalten PERL-Hilfsfunktionen und
- werden zur Startzeit geladen.
- </li><br>
- <a name="motd"></a>
- <li>motd<br>
- Nachricht des Tages. Wird im Begrüßungsbildschirm von FHEM
- angezeigt, oder direkt beim Start einer "telnet" Sitzung,
- bevor der fhem> Prompt erscheint. Der SecurityCheck setzt motd wenn
- es bisher nicht gesetzt ist. Um das zu verhindern, können sie den
- Wert von motd auf "none" setzen.
- motd wird auch verwendet, um Fehlermeldungen während des
- FHEM-Starts zu sammeln und anzuzeigen.
- </li><br>
- <a name="mseclog"></a>
- <li>mseclog<br>
- Wenn dieses Attribut gesetzt ist, enthalten Datums/Zeiteinträge
- (timestamp) in der Logdatei einen Millisekunden-Eintrag.
- </li><br>
- <a name="nofork"></a>
- <li>nofork<br>
- Wenn dieses Attribut oder "attr global logfile -" gesetzt ist,
- dann wird FHEM nicht im Hintergrund abgearbeitet.
- Dieses Attribut ist bei einigen FHEM Installationen auf FRITZ!-Boxen
- notwendig, und wid fuer Windows automatisch gesetzt.
- </li><br>
- <a name="pidfilename="></a>
- <li>pidfilename<br>
- Schreibt die PERL Prozess-ID in die angegebene Datei. Der Server
- läuft als Daemon und einige Distributionen wollen anhand der PID
- testen, ob der FHEM Prozess läuft. Die Datei wird bei
- Ausführung des "shutdown"-Kommandos gelöscht.
- </li><br>
- <a name="proxy"></a>
- <li>proxy<br>
- IP:PORT des proxy Servers, wird von HttpUtils benutzt.
- </li><br>
- <a name="proxyAuth"></a>
- <li>proxyAuth<br>
- Base64 kodiertes Benutzername:Passwort
- </li><br>
- <a name="proxyExclude"></a>
- <li>proxyExclude<br>
- Regexp, um bestimmte Hosts nicht via proxy zu kontaktieren.
- </li><br>
- <a name="restoreDirs"></a>
- <li><a name="restoreDirs">restoreDirs</a><br>
- update sichert jede Datei vor dem Überschreiben mit der neuen
- Version aus dem Web. Für diesen Zweck wird zuerst ein
- restoreDir/update Verzeichnis in der global modpath Verzeichnis
- angelegt, und danach ein Unterverzeichnis mit dem aktuellen Datum. In
- diesem Verzeichnis werden vor dem Überschreiben die alten
- Versionen der Dateien gerettet. Die Voreinstellung ist 3, d.h. die
- letzten 3 Datums-Verzeichnisse werden aufgehoben, und die älteren
- entfernt.
- <br>
- Auch fhem.cfg und fhem.state wird auf diese Weise vor dem ausfüren
- von save gesichert, diesmal in das restoreDir/save Verzeichnis. Zum
- restaurieren der alten Dateien kann man das restore Befehl
- verwenden.<br>
- Falls man den Wert auf 0 setzt, dann ist dieses Feature deaktiviert.
- </li><br>
- <li><a href="#fheminfo">sendStatistics</a><br>
- <a name="statefile"></a>
- <li>statefile<br>
- Dieses Attribut legt den Namen der Datei fest, in die
- Statusinformationen aller Geräte gespeichert werden bevor der
- Server heruntergefahren wird. Falls diese Datei nicht angegeben wird, so
- werden keinerlei Informationen gesichert.
- </li><br>
- <li><a href="#title">title</a><br>
- <a name="useInet6"></a>
- <li>useInet6<br>
- Die HttpUtils Routinen verwenden IPv6 für die Kommunikation, falls
- der Server eine IPv6 Adresse hat. Achtung: das Perl-Modul
- IO::Socket::INET6 wird benötigt.
- </li><br>
- <a name="userattr"></a>
- <li>userattr<br>
- Enthält eine durch Leerzeichen getrennte Liste in welcher die
- Namen zusätzlicher Attribute aufgeführt sind. Diese
- müssen zuerst in dieser Liste definiert werden, bevor sie
- (bei allen Geräten) angewendet werden können.<br>
- userattr kann auch für einzelne Geräte spezifiziert werden,
- um weitere Attribute für diese Geräte zu definieren.
- </li><br>
- <a name="dupTimeout"></a>
- <li>dupTimeout<br>
- Definert die Wartezeit, nach der 2 identische Ereignisse zweier
- Empfänger als Duplikat angesehen werden. Voreingestellt sind 0,5
- Sekunden.
- </li><br>
- <a name="showInternalValues"></a>
- <li>showInternalValues<br>
- Attribute/Geräte-Eintraege/Readings die mit Punkt (.) anfangen
- werden nicht angezeigt, es sei denn das globale Attribut
- showInternalValues ist gesetzt. Diese Variable wird bei dem list und
- xmllist Befehl, und bei der FHEMWEB Raumansicht geprüft.
- </li><br>
- <a name="sslVersion"></a>
- <li>sslVersion<br>
- Setzt die akzeptierten Crypto-Algorithmen im TcpServices Hilfsmodul.
- Die Voreinstellung TLSv12:!SSLv3 wird als sicherer erachtet als die
- vorherige SSLv23:!SSLv3:!SSLv2, aber sie kann Probleme mit nicht
- ausreichend aktualisierten Netzwerk-Diensten verursachen.
- </li><br>
- <a name="stacktrace"></a>
- <li>stacktrace<br>
- Falls gesetzt (auf 1), schreibt ins FHEM-Log zusätzlich zu jedem
- "PERL WARNING" den stacktrace.
- </li><br>
- <a name="restartDelay"></a>
- <li>restartDelay<br>
- Setzt die Verzögerung beim Neustart mit shutdown restart, die
- Voreinstellung ist 2 (Sekunden).
- </li><br>
- <a name="autosave"></a>
- <li>autosave<br>
- Erlaubt manchen Modulen save auszuführen, nach einer automatischen
- Änderung der Konfiguration, z.Bsp. nachdem ein Gerät angelegt
- wurde. Die Voreinstellung ist 1 (wahr), man kann es ausschalten, indem
- man den Wert auf 0 setzt.
- </li>
- </ul>
- <br><br>
- <b>Events</b>
- <ul>
- <li>INITIALIZED<br>sobald die Initialization vollständig ist.</li>
- <li>REREADCFG<br>nachdem die Konfiguration erneut eingelesen wurde.</li>
- <li>SAVE<br>bevor die Konfiguration gespeichert wird.</li>
- <li>SHUTDOWN<br>bevor FHEM heruntergefahren wird.</li>
- <li>DEFINED <devname><br>nach dem Definieren eines
- Gerätes.</li>
- <li>DELETED <devname><br>nach dem Löschen eines
- Gerätes.</li>
- <li>RENAMED <old> <new><br>nach dem Umbenennen eines
- Gerätes.</li>
- <li>UNDEFINED <defspec><br>beim Auftreten einer Nachricht für
- ein undefiniertes Gerät.</li>
- <li>MODIFIED <defspec><br>nach Änderung einer
- Gerätedefinition.</li>
- <li>UPDATE<br>nach Abschluss eines Updates.</li>
- </ul>
- </ul>
- <!-- global end - diese Zeile nicht entfernen! -->
- <a name="perl"></a>
- <h3>Perl specials</h3>
- Wenn Sie einige Aufgaben automatisieren wollen, dann sollten Sie die Befehle
- <a href="#at">at</a> oder <a href="#notify">notify</a> nutzen. Für
- komplexere Aufgaben sollten Sie lieber ein SHELL-Skript oder einen PERL
- "oneliner" als das at/notify argument anwenden. Dieser Abschnitt gibt Ihnen
- einige Tipps zur Anwendung der PERL-oneliner.<br><br>
- <li>Um PERL-"oneliner" zu testen, geben Sie diese am
- "telnet" Prompt (oder in der FHEMWEB Text-Eingabezeile)
- eingeschlossen von geschweiften Klammern {} in einer Zeile ein. Die letzte
- Beispielzeile schreibt nur etwas in die Logdatei, während das Ergebnis
- der anderen Zeilen direkt auf der Webseite sichtbar ist.<ul>
- Beispiele:<p>{ "Hello" }<br>
- { 1+3*4 }<br>
- { `ls /etc` }<br>
- { Log 1, "Hello" }<br>
- </p>
- </ul>
- <br>
- </li>
- <li>
- PERL Ausdrücke werden durch ein Semikolon (;) getrennt. In FHEM
- "oneliners" müssen sie durch ein weiteres Semikolon (;;)
- "escaped" (maskiert) werden<br>
- Beispiel:<ul>
- { my $a = 1+1;; Log 1, "Hello $a" }
- </ul>
- </li><br>
- <li>Um FHEM-Kommandos in den PERL-Ausdrücken zu verwenden, benutzen
- Sie bitte die Funktion <var>fhem()</var>, mit einem Textargument. Dieser Text wird als
- FHEM-Kommando interpretiert.<br>
- <p> Beispiel<ul>
- { fhem "set light on" }<br>
- define n1 notify piri:on { fhem "set light on" }
- <p> </p>
- </ul>
- Bemerkung: Wenn diese Funktion einen wert zurück liefert, wird dieser
- in der allgemeinen Logdatei gespeichert.. Benutzen sie "1" als
- zweites Argument um dieses speichern zu verhindern. Sinnvoll ist dieses
- Argument bei der Abfrage von Werten mittels "get...".
- </li><br>
- <li>Notify kann auch dazu verwendet werden, um Macros manuell
- auszuführen. Verwenden Sie den <a href="#trigger">trigger</a>-Befehl
- um das Makro zu starten:<br>
- <ul>
- define MyMacro notify MyMacro { Log 1, "Hello"}<br>
- trigger MyMacro<br>
- define MacroWithArg notify MyMacro { Log 1, "Hello %"}<br>
- trigger MyMacro MyArg<br>
- </ul>
- <br>
- </li>
- <li>Um die Verwendung von Datum und Zeitangaben zu vereinfachen, wurden die
- Variablen <var>$sec</var>, <var>$min</var>, <var>$hour</var>, <var>$mday</var>,
- <var>$month</var>, <var>$year</var>, <var>$wday</var>, <var>$yday</var>, <var>$isdst</var> und <var>$hms</var>
- für die Verwendung in PERL-"oneliners" eingeführt (s.
- unter <var>perldoc -f localtime</var>). Ausnahmen: <var>$month</var> hat einen Wertebereich von 1
- bis 12 und <var>$year</var> ist korrigiert von 1900.
- Weiterhin enthält <var>$hms</var> die Zeit in dem HH:MM:SS Format und <var>$today</var> das
- aktuellen Datum in YYYY-MM-DD Format.
- <br>
- Die Variabe <var>$we</var> hat den Wert 1 wenn der abgefragte Tag auf ein Wochenende
- fällt (Z.B. <var>$wday</var> == 0 [Sonntag] oder <var>$wday</var> == 6 [Samstag]), und 0
- für die anderen Wochentage. Wenn man das global <a
- href="#holiday2we">holiday2we</a> Attribut setzt, dann ist <var>$we</var> ebenfalls 1
- bei Urlaubstagen.<br>
- <ul>
- define n2 notify piri:on { if($hour > 18 || $hour < 5) {
- fhem "set light on" } }<br>
- define roll_en *07:45:00 { fhem "trigger SwitchAllRoll on" if(!$we) }<br>
- define roll_en *08:30:00 { fhem "trigger SwitchAllRoll on" if($we) }<br>
- </ul>
- <br>
- </li><li>
- Die folgenden Hilfsfunktionen sind in der Datei 99_Util.pm definiert (wird
- wie jede mit 99_ beginnende Datei automatisch geladen):
- <ul>
- <li>min(a,b), max(a,b)</li>
- <li>time_str2num("YYYY-MM-DD HH:MM:SS") gibt einen numerischen Wert
- zurück, der die Berechnung von Zeitdifferenzen vereinfacht</li>
- <li>abstime2rel("HH:MM:SS") wandelt absolute in relative Zeitangaben um
- </li>
- </ul>
- </li>
- <li>
- Um auf die Gerätestatus/Attribute zuzugreifen benutzen Sie bitte die
- folgenden Funktionen:
- <br>
- <ul>
- <li>Value(<devicename>)<br>
- gibt den Status eines Gerätes zurück (entsprechend dem
- Ausdruck in Klammern, den Sie beim List-Befehl sehen).
- </li><br>
- <li>OldValue(<devicename>)</li>
- <li>OldTimestamp(<devicename>)<br>
- gibt den vorherigen Wert/Zeitstempel des Gerätes zurück.
- </li><br>
- <li>
- ReadingsVal(<devicename>,<reading>,<defaultvalue>)<br>
- Gibt den Inhalt der "readings" zurück (den Inhalt der in
- dem "Readings"-Abschnitt von "list device" angezeigt wird)
- </li><br>
- <li>
- ReadingsNum(<devicename>,<reading>,
- <defaultvalue>,<round>)<br>
- Gibt die erste Zahl aus dem Readingswert zurück.
- Falls <round> spezifiziert ist, wird sie auf diese Anzahl von
- Dezimalstellen gerundet.
- </li><br>
- <li>ReadingsTimestamp(<devicename>,
- <reading>,<defaultvalue>)<br>
- gibt den Zeitstempel des Readings zurück.
- </li><br>
- <li>ReadingsAge(<devicename>,<reading>,<defaultvalue>)
- <br>
- gibt das Alter des Readings in Sekunden zurück.
- </li><br>
- <li>
- OldReadingsVal(<devicename>,<reading>
- ,<defaultvalue>)<br>
- OldReadingsNum(<devicename>,<reading>,
- <defaultvalue>,<round>)<br>
- OldReadingsTimestamp(<devicename>,<reading>
- ,<defaultvalue>)<br>
- OldReadingsAge(<devicename>,<reading>,<
- defaultvalue>)<br>
- analog zu den Routinen oben, aber zum Zugriff auf die vorherigen Werte.
- siehe: <a href="#oldreadings">oldreadings</a><br>
- </li><br>
- <li>
- AttrVal(<devicename>,<attribute>,<defaultvalue>)<br>
- Gibt das entsprechende Attribut des Gerätes zurück
- <br><br>
- { Value("wz") }<br>
- { OldValue("wz") }<br>
- { time_str2num(OldTimestamp("wz")) }<br>
- { ReadingsVal("wz", "measured-temp", "20")+0 }<br>
- { ReadingsTimestamp("wz", "measured-temp", 0)}<br>
- { AttrVal("wz", "room", "none") }<br>
- </li><br>
- <li>
- AttrNum(<devicename>,<attribute>,
- <defaultvalue>,<round>)<br>
- Gibt die erste Zahl aus dem Attributwert zurück.
- Falls <round> spezifiziert ist, wird sie auf diese Anzahl von
- Dezimalstellen gerundet.
- </li><br>
- <li>
- InternalVal(<devicename>,<internal>,
- <defaultvalue>)<br>
- Gibt den Inhalt der "internal" zurück (den Inhalt der in
- dem "Internals"-Abschnitt von "list device" angezeigt wird)
- </li><br>
- <li>
- InternalNum(<devicename>,<internal>,
- <defaultvalue>,<round>)<br>
- Gibt die erste Zahl aus dem "internal" zurück.
- Falls <round> spezifiziert ist, wird sie auf diese Anzahl von
- Dezimalstellen gerundet.
- </li><br>
- </ul>
- </li><li>
- Wenn Sie das 99_SUNRISE_EL.pm Modul benutzen, haben Sie zugriff auf
- folgende Funktionen: <br>
- <ul>
- sunset($offset, $min, $max)<br>
- sunrise($offset, $min, $max)<br>
- isday()<br>
- </ul>
- Der Wert von "offset" wird in Sekunden angegeben und das Format
- für min/max ist "HH:MM" oderr "HH:MM:SS". isday gibt 1 zurück,
- wenn die Sonne sichtbar ist und ansonsten den Wert 0. </li>
- <br>
- <br>
- <!-- perl end - diese Zeile nicht entfernen! -->
- <a name="gnuplot-syntax"></a>
- <h3>gnuplot file syntax</h3>
- Die .gplot Dateien werden ebenso von den <a href="#FHEMWEB">FHEMWEB</a>/SVG
- Modulen falls das <a href="#plotmode">plotmode</a>-Attribut auf SVG gesetzt
- ist. In diesem Fall wird nur eine geringere Anzahl der .gnuplot Attribute
- benutzt, und einige Linien haben eine besondere Bedeutung: Die Unterschiede
- werden in diesem Kapitel erklärt. Lesen Sie bitte auch <a
- href="http://wiki.fhem.de/wiki/Creating_Plots"> diesen</a> FHEM Wiki Eintrag
- zur Erstellung von Logdateien.<br> Im folgenden ist eine minimale .gplot
- Definition (gültig nur bei Plotmode SVG):<br>
- <pre> set terminal size <SIZE>
- #FileLog 4:::
- plot title 'Temperature' with lines
- </pre>
- Die .gnuplot Datei besteht aus 3 Teilen:
- <ul>
- <li>set Befehle<br>
- Folgende "sets" werden erkannt:
- <ul>
- <li>terminal, nur die Größenparameter.<br>
- Dieser ist in der Regel auf <SIZE> gesetzt, welcher ersetzt wird
- durch das <a href="#plotsize">plotsize</a> Attribut von FHEMWEB oder
- einer Weblink-Instanz.</li>
- <li>title<br>
- Normalerweise gesetzt auf <TL> welcher durch das Weblink <a
- href="#title">title</a>-Attribut, oder durch <Lx>, welches
- wiederum vom Weblink <a href="#label">label</a> Attribut ersetzt
- wird.</li>
- <li>ylabel,y2label<br>
- Linke und rechte vertikale Achsenbeschriftungen. Are also subject to
- label replacement.</li>
- <li>yrange,y2range<br>
- Legen den Wertebereich der linken und rechten y-Achse fest.
- Beispiele:<br>
- <ul>
- set yrange [-0.1:1.1]<br>
- set y2range [0:]<br>
- </ul>
- </li>
- <li>ytics,y2tics<br>
- Beschriftung für die Werte der rechten/linken y-Achse.
- Beispiele:<br>
- <ul>
- set ytics ("on" 0, "off" 1)<br>
- set y2tics<br>
- </ul>
- </li>
- </ul>
- </li>
- <br>
- <li>#FileLog Einträge<br>
- Jede Line des Plots muss eine dazugehörige #FileLog
- Zeile haben. Zur Syntax lesen Sie bitte den Abschnitt "column_spec
- paragraph" von der <a href="#FileLogget">Filelog get</a>
- Beschreibung. Beachten sie bitte, das bei SVG-Plots die erste Spalte der
- Datei unbedingt im FHEM-Zeitstempelformat (YYYY-MM-DD_HH:MM:SS)
- formatiert sein muss
- </li>
- <br>
- <li>Plot Einträge<br>
- bestehen immer aus einem Plotbefehl und aus durch Kommata getrenne
- Argumentblöcke. Jeder Argumentblock repräsentiert eine
- darzustellende Linie und hat seine eigenen Paramter.
- Folgende Parameter werden are anerkannt:
- <ul>
- <li>axes x1y1 / x1y2<br>
- weist das Programm an die aktuelle Zeile einer der beiden Achsen (links
- oder rechts) zuzuweisen.
- </li>
- <li>title<br>
- Beschriftung der Linie. Wenn man auf diesen Titel klickt, dann
- ändert ein kleines Javascript-Programm den Titel auf die min/max
- und last-Werte des Plots, Weiterhin erlaubt das Programm diese Linie zu
- kopieren oder eine bereits kopierte Linie einzufügen (die
- existierende Skalierung des Plots wird dabei nicht verändert, nur
- die eingefügte Linie wird skaliert/angepasst. Andere Linien des
- Plots werden zeitweise nicht angezeigt.</li>
- <li>with <linetype><br>
- spezifiziert die Art der Linie. Folgende Linienarten können
- verwendet werden: points, steps, fsteps, histeps and lines. Nicht
- bekannte Linienarten werden als Typ "lines" dargestellt.
- SVG Spezial: cubic und quadratic werden zu den SVG path Typen C und Q
- gewandelt.
- </li>
- <li>ls <linestyle><br>
- Der Linienstil stellt die erste Linie als l0 dar, die zweite
- Linie als l1 und so weiter. Definiert ist dies in der svg_style.css
- Datei. Darin sind zwei Sets definiert: l0-l8 and l0fill-l6fill. Das
- zweite Set muss aber explizit angegeben werden. Wenn der Name des
- Linienstils das Wort "fill" enthält, dann haben Plots
- des Linientyps "lines" ein zusätzliches Start- und Endsegment
- für eine korrekte Darstellung.<br> Bitte lesen sie die SVG
- Spezifikationen, um Details über diese css-Datei zu erfahren.
- Notiz: Wenn Sie dieses Attribut einsetzen möchten, müssen Sie
- es für alle Linien (Attributblocks) im Plotbefehl spezifizieren.
- </li>
- <li>lw <linewidth><br>
- Setzt die Linienbreite der Linie. Dieses Attribut ist veraltet. Das
- entprechende Feature der css-Datei/(Attribut ls) muss verwendet werden.
- </li>
- </ul>
- </li></ul>
- </div> <!-- right -->
- </body>
- </html>
|