mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 18:59:33 +00:00
4d697abbac
git-svn-id: https://svn.fhem.de/fhem/trunk@12772 2b470e98-0d58-463d-a4d8-8e2adae1ed80
1933 lines
76 KiB
HTML
1933 lines
76 KiB
HTML
<!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>
|
|
Version: <a href="commandref.html">EN</a> <b>DE</b>
|
|
<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äte</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>
|
|
</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.
|
|
</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 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.
|
|
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.
|
|
</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.
|
|
</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.
|
|
</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 <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. 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>
|
|
|
|
Beispiele:
|
|
<ul>
|
|
<code>attr global verbose 3</code><br>
|
|
<code>attr lamp room kitchen</code><br>
|
|
<code>attr lamp group lights</code><br>
|
|
<code>attr lamp loglevel 6</code><br>
|
|
<code>attr weatherstation event-on-update-reading wind,temperature,humidity</code><br>
|
|
<code>attr weatherstation event-on-change-reading israining</code><br>
|
|
<code>attr weatherstation event-on-change-reading israining,state</code><br>
|
|
<code>attr heating stateFormat Temp:measured-temp, Valve:actuator</code><br>
|
|
</ul>
|
|
<br>
|
|
|
|
Bemerkungen:<br>
|
|
<ul>
|
|
<li>Lesen Sie unter <a href="#deleteattr">deleteattr</a> nach um Attribute
|
|
zu löschen.</li>
|
|
</ul>
|
|
</ul>
|
|
|
|
<a name="cancel"></a>
|
|
<h3>cancel</h3>
|
|
<ul>
|
|
<code>cancel [<id> [quiet]]</code>
|
|
<br><br>
|
|
Entfernt ein benanntes <a href="#sleep">sleep</a>.
|
|
|
|
</ul>
|
|
|
|
<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>
|
|
|
|
<a name="defmod"></a>
|
|
<h3>defmod</h3>
|
|
<ul>
|
|
<code>defmod <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>
|
|
|
|
|
|
<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>
|
|
|
|
<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>
|
|
|
|
<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>
|
|
|
|
<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>
|
|
|
|
<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>
|
|
|
|
|
|
<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>
|
|
|
|
|
|
<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>
|
|
|
|
<a name="inform"></a>
|
|
<h3>inform</h3>
|
|
<ul>
|
|
<code>inform {on|off|timer|raw} [regexp]</code> <br>
|
|
<br>
|
|
Wenn auf "on" gesetzt und der Status eines Gerätes ändert
|
|
sich, dann wird eine Nachricht an den Client gesendet. Dieser Befehl kann von
|
|
anderen Programmen/Modulen dazu benutzt werden, eine Hinweisnachricht zu
|
|
erhalten. <br> Die Option "timer" fügt der Nachricht
|
|
einen Zeitstempel hinzu. Hinweis: Dieser Befehl erleichtert Ihnen die bessere
|
|
Kontrolle in <a href="#notify">notify</a> oder <a href="#FileLog">FileLog</a>
|
|
, wann welche Ereignisse erzeugt wurden.
|
|
|
|
<br>
|
|
</ul>
|
|
|
|
<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>
|
|
|
|
|
|
<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>
|
|
|
|
<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>
|
|
|
|
|
|
<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>
|
|
|
|
<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>
|
|
|
|
|
|
<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>
|
|
|
|
<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>
|
|
|
|
</ul>
|
|
</ul>
|
|
|
|
|
|
<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 das set und setreading Befehl
|
|
<ul>
|
|
<li>[device:reading] mit dem Wert des Readings für device, falls sowohl
|
|
device, als auch Reading existiert, und nicht leer ist.</li>
|
|
<li>[device:reading:d] wie ohne :d, aber alles nicht-numerische wird
|
|
entfernt, siehe ReadingsNum</li>
|
|
<li>{(perlExpression)} mit dem Ergebnis der perlExpression.
|
|
$DEV wird dabei mit dem Namen des vom set betroffenen Gerätes ersetzt.
|
|
</li>
|
|
</ul>
|
|
<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>
|
|
</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>
|
|
|
|
<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>
|
|
|
|
|
|
<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>
|
|
|
|
<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>
|
|
|
|
|
|
<a name="shutdown"></a>
|
|
<h3>shutdown</h3>
|
|
<ul>
|
|
<code>shutdown [restart|exitValue]</code>
|
|
<br><br>
|
|
Der Befehl fährt den Server herunter (nach dem sichern aller <a
|
|
href="#statefile">Gerätestati</a>). Er triggert das global:SHUTDOWN
|
|
Ereignis. Mit der optionalen Parameter restart startet FHEM danach neu.
|
|
exitValue ist bei bestimmten Start-programmen von n&oulm;ten.
|
|
<br><br>
|
|
Beispiel:
|
|
<ul>
|
|
<code>shutdown</code><br>
|
|
<code>shutdown restart</code><br>
|
|
<code>shutdown 1</code>
|
|
</ul>
|
|
</ul>
|
|
|
|
|
|
<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>
|
|
|
|
<a name="sleep"></a>
|
|
<h3>sleep</h3>
|
|
<ul>
|
|
<code>sleep <sec> [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>
|
|
<!-- 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><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 updatefhem
|
|
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="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="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>
|
|
Beispiel:<br>
|
|
<ul>
|
|
attr global holiday2we hessen
|
|
</ul>
|
|
</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="lastinclude"></a>
|
|
<li>lastinclude<br>
|
|
Wurde dieses Attribut gesetzt, dann wird der letzte Befehl der
|
|
generierten Konfigurationsdatei (siehe <a href="#save">save</a> Befehl)
|
|
berücksichtigt <lastinclude-value><br>
|
|
Dieses Attribut ist DEPRECATED und nur bis featurelevel 5.6
|
|
unterstützt, bitte benutzen Sie <a href="#notify">notify</a>, mit
|
|
dem INITIALIZED Ereignis um Befehle nach der Intialisierung
|
|
auszufü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 enhält <b>nicht</b> das Verzeichnis FHEM.
|
|
Durch das setzen der Attribute, wird das Verzeichnis nach Dateinamen in
|
|
der Form NN_<NAME>.pm, 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
|
|
Function mit dem Namen <NAME>_Initialize wird aufgerufen. Eine
|
|
Ausnahme bilden Module die mit der Nummer 99 im Dateinamen beginnen.
|
|
Diese sind enhalten PERL-Hilfsfunktionen. Die Module werden zur
|
|
Startzeit geladen (i.e. modpath attribute definition time). </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>
|
|
|
|
<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>
|
|
|
|
<li><a href="#fheminfo">uniqueID</a>
|
|
|
|
<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 SHELLl-Skiipt 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 fhem(), 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 $sec, $min, $hour, $mday, $month, $year, $wday, $yday, $isdst
|
|
für die Verwendung in PERL-"oneliners" eingeführt (s.
|
|
unter perldoc -f localtime). Ausnahmen: $month hat einen Wertebereich von 1
|
|
to 12 und $year ist korrigiert von 1900.
|
|
Weiterhin enthät $hms die Zeit in dem HH:MM:SS Format.
|
|
<br>
|
|
|
|
Die Variabe $we hat den Wert 1 wenn der abgefragte Tag auf ein Wochenende
|
|
fällt (Z.B. $wday == 0 [Sonntag] oder $wday == 6 [Samstag]), und 0
|
|
für die anderen Wochentage. Wenn man das global <a
|
|
href="#holiday2we">holida2we</a> Attribut setzt, dann ist $we 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 follgendenHilsfunktionen 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ätestati/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>)<br>
|
|
Wie ReadingsVal, löscht aber alles, was kein Zahl ist, um den Wert
|
|
bei Berechnungen verwenden zu können.
|
|
</li><br>
|
|
<li>
|
|
AttrVal(<devicename>,<attribute>,<defaultvalue>)<br>
|
|
Gibt die gesetzteb Attribute 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>
|
|
InternalVal(<devicename>,<reading>,<defaultvalue>)<br>
|
|
Gibt den Inhalt der "internal" zurück (den Inhalt der in
|
|
dem "Internals"-Abschnitt von "list device" angezeigt wird)
|
|
</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://fhemwiki.de/wiki/Creating_Plots"> diesen</a> fhemwiki 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>
|