FHEM wird hauptsächlich zur Heimautomatisierung benutzt,
ist aber ebenso für andere Aufgaben einsetzbar wo Benachrichtigungen,
Zeitschaltungen und Datensammlungen eine wichtige Rolle spielen.
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.
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 (notify),
Zeitabhängige Funktionen (at)
die die Funktionalität erweitern.
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.
Wenn Sie den FHEM-Server starten, müssen Sie eine
Konfigurationsdatei auswählen:
perl fhem.pl fhem.cfg
Nachstehend eine Minimal-Konfiguration Datei:
attr global logfile log/fhem.log
attr global modpath .
attr global statefile log/fhem.save
attr global verbose 3
define telnetPort telnet 7072 global
define WEB FHEMWEB 8083 global
Die letzten zwei Zeilen definieren einen telnet und einen WEB Zugang, beide können aber
bei Bedarf auch abgeschaltet werden.
Die WEB Schnittstelle kann über
http://<fhemhost>:8083
erreicht werden.
Die Kommunikation mit FHEM kann entweder in einer "session" (über telnet) oder
über einzelne Klient-Kommandos (über fhem.pl) erfolgen. Beispiel:
telnet <fhemhost> 7072
<NL> (Die Betätigung der "Enter"-Taste schaltet in den "prompt"
Modus)
<command>...
quit
oder
fhem.pl <fhemhost>:7072 "<command>..."
Falls FHEM als root gestartet wurde, und ein OS-Benutzer fhem existiert, dann
wechselt FHEM nach dem start zu diesem Benutzer (via setuid).
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 at oder notify Ausdrücke benötigt, können aber auch
als "normale" Befehle angewendet werden.
Die folgenden drei Befehle bewirken z.B. dasselbe Ergebnis, wenn sie am
telnet-Prompt eingegeben werden:
set lamp off
"fhem.pl 7072 "set lamp off""
{fhem("set lamp off")}
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
Perl special zum besseren Verständnis durch.
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.
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 Bermerkungen des notify-Abschnittes zu Kommandoparametern und Regeln durch.
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.
define lampoff at 07:00 set Lamp1 off; set Lamp2 off
define lampoff at 07:00 set Lamp1 off;; set Lamp2 off
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:
define onAt at 07:00 set Lamp1 on;;set Lamp2 on;; define offAt at +00:10 set Lamp1 off;;;;set Lamp2 off
Keine Angst, das Vorherige kann in FHEM auch deutlich einfacher formuliert werden als:
define onAt at 07:00 set Lamp1,Lamp2 on-for-timer 600
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 at oder notify-Befehles verwendet
werden.
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.
eine durch Komma(,) getrennte Liste von Gerätenamen
ein regulärer Ausdruck
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.
Falls die Spezifikation von :FILTER=NAME=WERT gefolgt wird,
dann wird die zuvor gefundene Liste durch diesen neuen Ausdruck
gefiltert.
Beispiele:
set lamp1 on set lamp1,lamp2,lamp3 on set lamp.* on set room=kitchen off set room=kitchen:FILTER=STATE=on off set room=kitchen:FILTER=STATE!=off off list disabled= list room~office list TYPE=FS20 STATE list i:TYPE=FS20 STATE
Bemerkungen:
die Spezifikation kann keine Leerzeichen enthalten.
falls ein Gerätename exakt dem Spezifikation entspricht, dann werden
keine reguläre Ausdrücke oder Filter ausgewertet.
zuerst wird die durch Komma getrennte Spezifikation abgearbeitet, dann
folgen die regulären Ausdrücke und die Filter
die Befehlszeile kann die selbe Gerätebezeichnung mehrfach enthalten
z.B.: "set lamp3,lamp3 on". Lamp3 wird hier zwei Mal
eingeschalten.
um Strukturen mit komplexeren Anforderungen zu realisieren lesen Sie
bitte den Abschnitt zu structure.
Alle Geräte haben Attribute. Diese werden mittels des Befehls attr gesetzt, angezeigt mit dem Befehl displayattr, und mit dem Kommando deleteattr entfernt.
Es gibt globale Attribute, die von allen Geräten genutzt werden, und lokale
Attribute, die nur auf individuelle Geräteklassen zutreffen.
Manche Geräte (wie FHEMWEB) definieren automatisch
neue globale Attribute bei der ersten Definition eines Gerätes dieses
Typs.
Sie können den Befehl
attr global userattr
<attributelist>
für das Gerät global verwenden, um neue globale Attribute zu deklarieren,
und
attr <devicespec> userattr
<attributelist>,
um neue lokale Attribute für bestimmte
individuelle Geräte gemäß devspec zu
deklarieren.
<attributelist> ist eine durch Leerzeichen getrennte Liste,
die die Namen der zusätzlichen Attribute enthält. In der
Dokumentation zum Befehl attr sind Beispiele.
Seien Sie vorsichtig und überschreiben Sie keine zusätzlichen
globale Attribute, die bereits zuvor durch Sie selbst oder ein Gerät
definiert wurden. attr global userattr <attributelist>
sollte so früh wie möglich in der Konfiguration erscheinen.
Gerätespezifische Attribute
Gerätespezifische Attribute sind in dem jeweiligen Abschnitt zum
Gerät dokumentiert.
Globale Attribute für alle Geräte
alias
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.
comment
Fügt einen beliebigen Kommentar hinzu.
eventMap
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:
attr store eventMap on:open off:closed
attr store eventMap /on-for-timer 10:open/off:closed/
set store open
Die explizite Variante dieses Attributes hat folgenden Syntax:
attr store eventMap { dev=>{'on'=>'open'}, usr=>{'open'=>'on'} }
attr store eventMap { dev=>{'^on(-for-timer)?(.*)'=>'open$2'},
usr=>{'^open(.*)'=>'on$1'},
fw=>{'^open(.*)'=>'open'} }
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.
genericDisplayType
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
group
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.
room
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.
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
showtime
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.
suppressReading
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.
verbose
Setzt den Schwellwert für die Logfile-Meldungen.
Mögliche Werte sind:
0 - Server start/stop
1 - Fehlermeldungen oder unbekannte Pakete
2 - bedeutende Ereigbisse/Alarme.
3 - ausgesendete Kommandos werden gelogged.
4 - von den einzelnen Geräten empfangene Daten.
5 - Fehlersuche.
Der für die global Instanz gesetzte Wert gilt
als Voreinstellung für die Instanzen, die dieses Attribut nicht
gesetzt haben.
readingFnAttribute
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.
stateFormat
Ä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.
Die hier beschriebene "set magic" wird auch angewendet.
event-on-update-reading
Wenn nicht gesetzt, erzeugt jede Veränderung eines "readings" ein
Ereignis, welches z.B. von notify oder FileLog berücksichtigt wird. Wenn gesetzt erzeugen
nur Aktualisierungen der eingetragenen "readings" ein Ereignis.
event-on-change-reading
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.
Wenn hinter dem Namen eines "readings" eine :Schwelle angegeben ist, wird
das Event nur getriggert wenn die Änderung grösser als diese
Schwelle ist.
Die unterschiedlichen Bedeutungen von event-on-update-reading und
event-on-change-reading sind folgende:
Wenn beide Attribute nicht gesetzt sind erzeugt jede Aktualisierung
eines jeden "readings" eines Gerätes ein Ereignis.
Wenn eines der Attribute gesetzt ist, erzeugen nur Updates oder
änderungen von "readings" die in einem der Attribute gesetzt
sind ein Ereignis.
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.
timestamp-on-change-reading
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.
event-aggregator
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.
This attribute takes a comma-separated list of reading:interval:method:function:holdTime
quintuples. You may use regular expressions for reading. If set, updates for the
listed readings are ignored and associated events are suppressed for a black-out period of at
least interval 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:
function
description
v
the last value encountered
v0
the first value encountered
min
the smallest value encountered
max
the largest value encountered
mean
the arithmetic mean of all values
sd
the standard deviation from the mean
median
the median of all values (requires holdTime and function none)
integral
the arithmetic sum (if not time-weighted) or integral area (if time-weighted) of all values
n
number of samples
t
timestamp of the last value
t0
timestamp of the first value
If method is none, then that's all there is. If method
is const or linear, the time-weighted series of values is taken into
account instead. The weight is the timespan between two subsequent updates.
With the const method, the value is the value of the reading at the beginning of
the timespan; with the linear 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.
One would typically use the linear method with the mean 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 none method with the v function is used. The constant
method is for discrete quantities that stay constant until the corresponding reading is updated,
e.g. counters, switches and the like.
If the holdTime in seconds is defined, the samples will be kept in memory allowing
the calculation of floating statistics instead of blocked statistics. With holdTime
defined the interval can be kept undefined so that the readings update rate is unchanged
or it can be set to a value less then holdTime 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.
The event aggregator only takes into consideration those updates that remain after preprocessing
according to the event-on-update-reading and event-on-change-reading
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.
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.
event-min-interval
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.
oldreadings
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.
userReadings
Komma getrennte Liste von benutzerdefinierten Readings. Jede Definition hat
folgendes Format:
Diese benutzerdefinierte Readings werden bei jeder Aktualisierung der
Gerätereadings gesetzt, indem das spezifizierte perl
code{ <perl 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).
Beispiele:
difference: das Reading wird auf die Differenz zw. dem aktuellen und
dem vorherigen Wert gesetzt.
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.
integral: das Gegenteil von differential. Das Ergebnis wird um das
Produkt aus der Zeit-Differenz und der Durschnittswert der letzten zwei
Readings erhöht.
result += (time - timeold) * (oldval + value) / 2
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.
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.
Beispiel:
attr myPowerMeter userReadings power differential
{ ReadingsVal("myPowerMeter","counters.A",0)/1250.0}
Achtung:
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.
der Name der definierten Readings besteht aus alphanumerischen
Zeichen, Unterstrich (_) und Minus-Zeichen (-).
Allgemeine Attribute
Die folgenden lokalen Attribute werden von mehreren Geräten verwendet:
IODev
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.
Attribut "disable" umschalten
Das Attribut "disable" kann, sofern vom Gerätemodul bereitgestellt,
mit folgendem Befehl einfach umgeschaltet werden:
attr <device> disable toggle
Dieser Befehl setzt ein Attribut für ein Gerät welches mit define 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 Geräte-Spezifikation
für Details der <devspec>.
Gerätespezifische Attribute sind in der Beschreibung zum jeweiligen
Gerät aufgeführt.
Nach der Durchführung das globale Ereignis "ATTR" wird generiert.
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.
Mit der -r Option kann man Teile eines Attributes wieder entfernen.
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.
Nach der Durchführung wird das globale Ereignis "DEFINED" generiert.
Je nach Typ benötigt man unterscheidliche Argumente, lesen Sie sich
bitte die zu dem jeweiligen Gerät gehörenden Abschnitte durch.
Optionen:
-temporary
Setzt den TEMPORARY Marker, was das Abspeichern dieser Definition in
fhem.cfg verhindert.
-ignoreErr
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.
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:
define mdNtfy notify motionDetector defmod mdOff at +00:10 set lamp off
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.
Löscht etwas was mit dem define Befehl erstellt
worden ist.
Siehe den Abschnitt über Geräte-Spezifikation
für Details der <devspec>.
Nach dem löschen, wird das globale Ereignis "DELETED" erzeugt.
Beispiel:
Löscht entweder ein einzelnes Attribut (siehe Abschnitt attr ) oder alle Attribute eines Gerätes (falls
kein <attrname> angegeben wird).
Siehe den Abschnitt über Geräte-Spezifikation
für Details der <devspec>.
Nach der Durchführung das globale Ereignis "DELETEATTR" wird generiert.
Beispiele:
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.
Siehe den Abschnitt über Geräte-Spezifikation
für Details der <devspec>.
Zeigt entweder den Wert eines Attributes an (falls <attrname>
spezifiziert wurde) oder alle Attribute eines Gerätes.
Siehe den Abschnitt über Geräte-Spezifikation
für Details der <devspec>.
Falls mehrere Geräte spezifiziert wurden, dann enthält die Ausgabe
den Namen der Geräte.
Beispiele:
fhem> di WEB
menuEntries AlarmOn,/fhem?cmd=set%20alarm%20on
room Misc.
fhem> di WEB room
Misc.
Fragt einen Wert direkt (aktuell) vom Gerät ab und wartet auf eine
Antwort. Eine allgemeine Liste möglicher Paramter erhalten Sie mit
get <device> ?
Siehe den Abschnitt über Geräte-Spezifikation
für Details der <devspec>.
Jedes Gerät hat unterschiedliche "get"-Parameter. Lesen Sie Details bitte im
zugehörigen Abschnitt nach.
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.
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.
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:
on
aktiviert die Benachrichtigung.
onWithState
zeigt auch das zusätzliche state Event
off
deaktiviert die Benachrichtigung (sowohl Events wie auch Logs, s.u.)
raw
zeigt (nur) die raw Events der physikalischen Module
timer
stellt der Daten ein Zeitstempel vor
log
zeigt die vom FHEM Log Interface protokollierten Daten
Auflistung aller "definitions", "notify" und
"at"-Definitionen. Dies ist eines der wenigen Befehle, die im
Normalfall eine Zeichenkette ausgeben. Siehe den Abschnitt über Geräte-Spezifikation für Details der
<devspec>.
Wenn value angegeben ist, der von ( DEF, TYPE, usw) oder reading
(actuator, measured-temp) für alle Geräte die in devspec angegeben
sind.
Beispiel:
fhem> list
Type list 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)
Wenn Sie für name einen Gerätenamen eingeben, dann
erhalten Sie einen genauen Status für das in name
angegebene Gerät angezeigt, z.B.:
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%
[...]
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.
Dieser Befehl wird benutzt, um Definitionen zu verändern. Er ist
nützlich, um at oder notify
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.
Beispiel:
define lampon at 19:00 set lamp on modify lampon *19:00 modify lampon 19:00 set lamp on-for-timer 16
Dieser Befehl wird in einer TCP/IP Session benutzt um die Client-Sitzung zu
beenden.
Wird dieser Befehl in einem Skript benutzt, wird das abarbeiten des Skriptes
beendet.
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.
Liest entweder die aktuelle Konfigurationsdatei oder die angegebene Datei
ein. Der Ablauf ist dabei wie folgt: Zuerst wird das statefile gesichert. Dann werden alle Geräte
gelöscht. Dann wird die aktuelle Konfigurationsdatei (oder die
angegebene Datei) eingelesen zuletzt wird das statefile neu eingelesen.
Wenn dieser Ablauf abgeschlossen ist, wird das globale REREADCFG Ereignis
ausgelöst. Alle existierenden Verbindungenwerden bis zum
"rereadcfg" Ereignis getrennt.
Sichert zuerst das statefile und dann das
configfile. Wenn ein Parameter angegeben wird dieser
anstelle der allgemeinen Konfigurationsdatei benutzt.
Hinweise:
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. FHTcode)
benötigen,dann müssen Sie sie mit notify
triggern wenn das INITIALIZED Ereignis eintritt.
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.
Vor dem Überschreiben der Dateien wird die alte Version gesichert,
siehe restoreDirs für Einzelheiten.
Der Befehl setzt Geräteparameter/sendet Signale an ein Gerät. Sie
erhalten eine Liste verfügbarer Parameter wenn Sie folgendes eingeben:
set <name> ?
Siehe den Abschnitt über Geräte-Spezifikation
für Details der <devspec>.
Der "set"-Befehl gibt nur bei Fehler einen Wert zurück.
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.
Ab featurelevel 5.7 ersetzt der set und setreading Befehl
[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.
Man kann einen der Präfixe r:, i: oder a: verwenden, um die
Suche einzuschränken, genau wie im devspec.
Das Suffix :d extrahiert die erste Zahl.
Das Suffix :i extrahiert die erste Zahl als Ganzzahl.
Das Suffix :r<n> extrahiert die erste Zahl, und rundet sie auf
<n> Dezimalstellen. Falls <n> fehlt, dann wird auf eine
Dezimalstelle gerundet.
Das Suffix :t liefert den Zeitstempel des Readings
Das Suffix :sec liefert Anzahl der Sekunden seit Änderung
des Readings.
Beispiel:
set Lamp blink [blinkDummy:number] [r:blinkDummy:duration:d]
{(perlExpression)} mit dem Ergebnis der perlExpression.
$DEV wird dabei mit dem Namen des vom set betroffenen Gerätes ersetzt.
Diese Ersetzungen sind unter dem Namen "set magic" bekannt.
Manche Module unterstützen die sog. set extensions, 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.
on-for-timer <sekunden>
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.
off-for-timer <sekunden>
siehe on-for-timer.
on-till <timedet>
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:
define morningLight at *06:00 set Lamp on-till {sunrise()}
on-till-overnight <timedet>
Wie on-till, aber die aktuelle Uhrzeit wird nicht mit der
Spezifizierten verglichen, damit folgendes funktioniert:
define nightLight at *{sunset()} set Lamp on-till-overnight 01:00
blink <anzahl> <blink-periode>
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.
intervals <from1>-<till1> <from2>-<till2>...
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.
toggle
Das Gerät wird mit "on" eingeschaltet, falls STATE "off" ist (oder
dim 0), sonst wird es mit "off" ausgeschaltet.
Beispiele:
set switch on-for-timer 12.5
set switch on-till {sunset()}
set switch blink 3 1
set switch intervals 08:00-12:00 13:00-18:00
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.
Beispiel, um das Attribut "room kitchen" und "loglevel 4" allen Lampen
zuzuweisen:
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.
Siehe den Abschnitt über Geräte-Spezifikation
für Details der <devspec> und die Beschreibung des set Befehls
für Ersetzung.
Beispiel:
setreading lampe state on
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.
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 statefile benutzt. Siehe den
Abschnitt über Geräte-Spezifikation für
Details der <devspec>.
Der Befehl fährt FHEM herunter (nach dem Sichern aller Gerätestatus). Er triggert den global:SHUTDOWN-Event.
Mit dem optionalen Parameter restart startet FHEM danach neu.
Der exitValue ist möglicherweise bei bestimmten Start-Skripten zur korrekten Funktion
vonnöten bzw. wichtig.
sleep gefolgt von weiteren Befehlen ist vergleichbar mit einem namenlosen at 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.
Ein sleep mit einer <id> ersetzt ein sleep mit der gleichen <id>
and can mit cancel 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.
quiet vermeidet diese Protokollierung.
Beispiele:
sleep 0.5 define n3 notify btn3.* set lamp toggle;;sleep 0.5;;set lamp
toggle define a3 at +*00:05 set Windsensor 1w_measure;; sleep 2 quiet;; get
Windsensor 1w_temp
Bemerkung: falls sleep von keinem Befehl gefolgt wird, dann wird FHEM
blockiert. Das ist unerwünscht, und im FHEM-Log wird eine Warnung
protokolliert.
Generiert das Ereignis <event>, was z.Bsp. ein notify anstoßen kann, oder den FileLog zum
protokollieren dieser Zeile bewegen kann.
Siehe den Abschnitt über Geräte-Spezifikation
für Details der <devspec>.
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.
archivesort
archivesort kann auf dem (voreingestellten) Wert alphanum oder timestamp
gesetzt werden, und bestimmt die Methode für die
Reihenfolgenberechnung der Dateien für nrarchive.
autoload_undefined_devices
wenn dieses Attribut gesetzt ist, werden die zu einer neu empfangenen
Nachricht zugehörigen Module automatisch geladen. Dies
erfolgt vom autocreate Gerät, um so
automatisch ein FHEM-Gerät bei erreichen einer entsprechenden
Nachricht zu erstellen.
backupcmd
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
ein Argument zum Befehl, z.B.:
Bemerkung: Ihr Befehl/Skript muss die Zeichenkette "backup done"
zurückgeben oder eine entsprechende Zeichenkette um
Fehlermeldungen auszugeben, damit die Zusammenarbeit mit update
funktioniert! Dieses Attribut wird vom backup
Befehl benutzt.
Beispiel:
attr global backupcmd /usr/local/bin/myBackupScript.sh
backupdir
Ein Ordner um die komprimierten Sicherheitsdateien zu speichern.
Dieses Attribut wird vom backup Befehl
benutzt. Beispiel:
attr global backupdir /Volumes/BigHD
backupsymlink
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 backup Befehl benutzt.
Beispiel:
attr global backupsymlink yes
blockingCallMax
Begrenzt die Anzahl der parallel laufenden Prozesse, die von der
BlockingCall FHEM Hilfsroutine gestartet wurden. Sinnvoll auf weniger
leistungsfaehigen Hardware.
configfile
Enthält den Namen der FHEM Konfigurationsdatei. Wenn save ohne Argumente aufgerufen wird dann wird die
Ausgabedatei unter diesem Dateinamen gespeichert.
commandref
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.
dnsHostsFile
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.
dnsServer
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.
featurelevel
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.
holiday2we
Wenn dieses Attribut gesetzt wurde, dann wird die $we Variable als "true" betrachtet, wenn der
Wert der holiday Variable zu diesem Attribut
nicht "none" ist.
Falls es eine Komma getrennte Liste ist, dann ist es wahr, falls einer
der referenzierten Instanzen nicht "none" ist.
Beispiel:
attr global holiday2we hessen
httpcompress
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.
keyFileName
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.
logdir
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.
logfile
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.
Der Name der Logdatei kann auch "wildcards" enthalten, um
eine einfachere Abfolge für die Dateien zu erreichen. Lesen Sie
bitte den Abschnitt FileLog. Fügen Sie die
Attribute archivecmd / archivedir / nrarchive zum
global Gerät hinzu wie Sie es auch bei einem FileLog
device tun könnten. Sie können den Namen der Logdatei
mit { $currlogfile }festlegen.
modpath
Mit modpath geben Sie den Pfad zu dem Verzeichnis der FHEM
Module an. Der Pfad enthält nicht 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.
motd
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.
mseclog
Wenn dieses Attribut gesetzt ist, enthalten Datums/Zeiteinträge
(timestamp) in der Logdatei einen Millisekunden-Eintrag.
nofork
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.
pidfilename
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.
proxy
IP:PORT des proxy Servers, wird von HttpUtils benutzt.
proxyAuth
Base64 kodiertes Benutzername:Passwort
proxyExclude
Regexp, um bestimmte Hosts nicht via proxy zu kontaktieren.
restoreDirs
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.
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.
Falls man den Wert auf 0 setzt, dann ist dieses Feature deaktiviert.
statefile
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.
useInet6
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.
userattr
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.
userattr kann auch für einzelne Geräte spezifiziert werden,
um weitere Attribute für diese Geräte zu definieren.
dupTimeout
Definert die Wartezeit, nach der 2 identische Ereignisse zweier
Empfänger als Duplikat angesehen werden. Voreingestellt sind 0,5
Sekunden.
showInternalValues
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.
sslVersion
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.
stacktrace
Falls gesetzt (auf 1), schreibt ins FHEM-Log zusätzlich zu jedem
"PERL WARNING" den stacktrace.
restartDelay
Setzt die Verzögerung beim Neustart mit shutdown restart, die
Voreinstellung ist 2 (Sekunden).
autosave
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.
Events
INITIALIZED sobald die Initialization vollständig ist.
REREADCFG nachdem die Konfiguration erneut eingelesen wurde.
SAVE bevor die Konfiguration gespeichert wird.
SHUTDOWN bevor FHEM heruntergefahren wird.
DEFINED <devname> nach dem Definieren eines
Gerätes.
DELETED <devname> nach dem Löschen eines
Gerätes.
RENAMED <old> <new> nach dem Umbenennen eines
Gerätes.
UNDEFINED <defspec> beim Auftreten einer Nachricht für
ein undefiniertes Gerät.
MODIFIED <defspec> nach Änderung einer
Gerätedefinition.
UPDATE nach Abschluss eines Updates.
ALL3076
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: ALL3076
ALL4000T
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: ALL4000T
ALL4027
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: ALL4027
AMAD - Automagic Android DeviceAMADCommBridge - Kommunikationsbrücke für alle AMAD Geräte
Dieses Modul ist das Ausgangsmodul zur erfolgreichen Integration von Androidgeräten in FHEM. Es stellt ferner eine Verbindungsebene zwischen AMAD unterstützten Geräten und FHEM zur Verfügung. Alle Kommunikation zwischen AMAD Android und FHEM läuft über diese Schnittstelle.
Daher erfolgt die Ersteinrichtung eines AMAD Devices auch genau über diese Modulinstanz.
Damit erfolgreich ein Androidgerät in FHEM eingerichtet werden kann, muss im ersten Schritt ein AMADCommBridge Device angelegt werden.
Define
define <name> AMADCommBridge
Beispiel:
define AMADBridge AMADCommBridge
Diese Anweisung erstellt ein neues AMADCommBridge Device Namens AMADBridge.
Es kann wahlweise die APP Automagic oder Tasker auf dem Android Gerät verwendet werden.
Für Autoremote:
Im folgenden muß lediglich das Flowset auf dem Android Gerät installiert werden und der Flow 'First Run Assistent' ausgeführt werden. (einfach den Homebutton drücken)
Der Assistent geleitet Dich dann durch die Einrichtung Deines AMAD Gerätes und sorgt dafür das am Ende des Installationsprozess das Androidgerät als AMAD Device in FHEM angelegt wird.
Für Tasker:
Bei Verwendung von Tasker muss das Tasker-Projekt auf das Android Gerät geladen und in Tasker über die Import Funktion importiert werden.
Für die Ersteinrichtung auf dem Android Gerät gibt es eine Eingabemaske (Scene), in der die benötigten Parameter (Device Name, Device IP, Bridgeport usw.)
eingegeben werden können, diese Felder werden (soweit möglich) automatisch befüllt, können aber auch manuell angepasst werden.
Hierfür den Task "AMAD" ausführen.
Für schnellen Zugriff kann für diesen Task auch ein Tasker-Shortcut auf dem Homescreen angelegt werden.
Infos zu den einzelnen Einstellungen erhält man durch einen Touch auf das jeweiligen Textfeld.
Sind alle Eingaben vollständig, kann das AMAD Device über die Schaltfläche "create Device" erstellt werden.
Damit Steuerbefehle von FHEM zu Tasker funktionieren wird zusätzlich noch die APP "Autoremote" oder "Tasker Network Event Server (TNES)" benötigt.
Readings
JSON_ERROR - JSON Fehlermeldung welche von Perl gemeldet wird
JSON_ERROR_STRING - der String welcher die JSON Fehlermeldung verursacht hat
fhemServerIP - die Ip-Adresse des FHEM Servers, wird vom Modul auf Basis des JSON Strings vom Installationsassistenten gesetzt. Kann aber auch mittels set Befehles vom User gesetzt werden
receiveFhemCommand - ist das Attribut fhemControlMode auf trigger gestellt, wird das Reading gesetzt sobald ein FHEM Befehl übersendet wird. Hierauf kann dann ein Notify triggern.
Wird anstelle von trigger setControl als Wert für fhemControlMode eingestellt, wird das Reading nicht gestzt sondern der set Befehl sofort ausgeführt.
receiveVoiceCommand - wird die Sprachsteuerung von AMAD aktiviert (set DEVICE activateVoiceInput) so wird der letzte erkannten Sprachbefehle in dieses Reading geschrieben.
receiveVoiceDevice - Name des Devices von wo aus der letzte erkannte Sprachbefehl gesendet wurde
state - Status der Bridge, open, closed
Attribute
allowFrom - Regexp der erlaubten IP-Adressen oder Hostnamen. Wenn dieses Attribut gesetzt wurde, werden ausschließlich Verbindungen von diesen Adressen akzeptiert.
Achtung: falls allowfrom nicht gesetzt ist, und keine gütige allowed Instanz definiert ist, und die Gegenstelle eine nicht lokale Adresse hat, dann wird die Verbindung abgewiesen. Folgende Adressen werden als local betrachtet:
IPV4: 127/8, 10/8, 192.168/16, 172.16/10, 169.254/16
IPV6: ::1, fe80/10
debugJSON - wenn auf 1 gesetzt, werden JSON Fehlermeldungen in Readings geschrieben. Siehe hierzu JSON_ERROR* unter Readings
fhemControlMode - steuert die zulässige Art der Kontrolle von FHEM Devices. Du kannst über die Bridge auf 2 Arten FHEM Devices steuern. Entweder per direktem FHEM Befehl aus einem Flow heraus, oder als Sprachbefehl mittels Sprachsteuerung (set DEVICE activateVoiceInput)
trigger - ist der Wert trigger gesetzt, werden alle an die Bridge gesendeten FHEM set Befehle in das Reading receiveFhemCommand geschrieben und können so mittels notify ausgeführt werden. Sprachsteuerung ist möglich, es werden Readings receiveVoice* gesetzt. Auf dem Androidgerät können bei Sprachsteuerung mehrere Sprachbefehle mittels "und" verknüpft/aneinander gereiht werden. Bsp: schalte die Lichtszene Abends an und schalte den Fernsehr an
setControl - alle set Befehle welche mittels eines Flows über die Bridge gesendet werden, werden automatisch ausgeführt. Das triggern eines Readings ist nicht nötig. Die Steuerung mittels Sprache verhält sich wie beim Wert trigger
thirdPartControl - verhält sich wie trigger, bei der Sprachsteuerung ist jedoch ein anreihen von Sprachbefehlen mittels "und" nicht möglich. Dient der Sprachsteuerung über Module anderer Modulautoren ((z.B. 39_TEERKO.pm)
Wie man bei Problemen mit dem Assistenten ein Androidgerät auch von Hand anlegen kann, erfährst Du in der Commandref zum AMADDevice Modul.
AMADDevice - Automagic Android Device
Dieses Modul liefert, in Verbindung mit der Android APP Automagic oder Tasker, diverse Informationen von Android Geräten.
Die Android APP Automagic (welche nicht von mir stammt und 2.90 Euro kostet) funktioniert wie Tasker, ist aber bei weitem User freundlicher.
Mit etwas Einarbeitung können jegliche Informationen welche Automagic/Tasker bereit stellt in FHEM angezeigt werden. Hierzu bedarf es lediglich eines eigenen Flows/Task welcher seine Daten an die AMADDeviceCommBridge sendet. Das Modul gibt auch die Möglichkeit Androidgeräte zu steuern.
Für all diese Aktionen und Informationen wird auf dem Androidgerät "Automagic/Tasker" und ein so genannter Flow/Task benötigt. Die App ist über den Google PlayStore zu beziehen. Das benötigte Flowset/Tasker-Projekt bekommt man aus dem FHEM Verzeichnis.
Wie genau verwendet man nun AMADDevice?
stelle sicher das als aller erstes die AMADCommBridge in FHEM definiert wurde
Bei verwendung von Automagic
installiere die App "Automagic Premium" aus dem PlayStore.
installiere das Flowset 74_AMADDeviceautomagicFlowset$VERSION.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidgerät
aktiviere den Installationsassistanten Flow in Automagic. Wenn man nun Automagic in den Hintergrund schickt, z.B. Hometaste drücken, startet der Assistant und legt automatisch ein Device für das Androidgerät an.
Bei verwendung von Tasker
installiere die App "Tasker" aus dem PlayStore.
installiere das Tasker Projekt 74_AMADtaskerset_$VERSION.prj.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidgerät
Starte den Task "AMAD", es erscheint eine Eingabemaske in der alle Einstellungen vorgenommen werden können, durch einen Klick auf "create Device" wird das Gerät in FHEM erstellt.
In diesem Fall wird ein AMADDevice von Hand angelegt. Die AMAD_ID, hier 123456, muß auch exakt so als globale Variable in Automagic/Tasker eingetragen sein.
automagicState - Statusmeldungen von der Automagic oder Tasker App (Voraussetzung Android >4.3). Ist Android größer 4.3 vorhanden und im Reading steht "wird nicht unterstützt", muß in den Androideinstellungen unter Ton und Benachrichtigungen -> Benachrichtigungszugriff ein Haken für Automagic/Tasker gesetzt werden
batterytemperature - Temperatur der Batterie (nur Automagic)
bluetooth - on/off, Bluetooth Status an oder aus
checkActiveTask - Zustand einer zuvor definierten APP. 0=nicht aktiv oder nicht aktiv im Vordergrund, 1=aktiv im Vordergrund, siehe Hinweis unten (nur Automagic)
connectedBTdevices - eine Liste der verbundenen Gerät (nur Automagic)
connectedBTdevicesMAC - eine Liste der MAC Adressen aller verbundender BT Geräte (nur Automagic)
currentMusicAlbum - aktuell abgespieltes Musikalbum des verwendeten Mediaplayers (nur Automagic)
currentMusicApp - aktuell verwendeter Mediaplayer (Amazon Music, Google Play Music, Google Play Video, Spotify, YouTube, TuneIn Player, Aldi Life Music) (nur Automagic)
currentMusicArtist - aktuell abgespielter Musikinterpret des verwendeten Mediaplayers (nur Automagic)
currentMusicIcon - Cover vom aktuell abgespielten Album Noch nicht fertig implementiert (nur Automagic)
currentMusicState - Status des aktuellen/zuletzt verwendeten Mediaplayers (nur Automagic)
currentMusicTrack - aktuell abgespielter Musiktitel des verwendeten Mediaplayers (nur Automagic)
daydream - on/off, Daydream gestartet oder nicht
deviceState - Status des Androidgerätes. unknown, online, offline.
doNotDisturb - aktueller Status des nicht stören Modus
dockingState - undocked/docked Status ob sich das Gerät in einer Dockinstation befindet.
flow_SetCommands - active/inactive, Status des SetCommands Flow
flow_informations - active/inactive, Status des Informations Flow
flowsetVersionAtDevice - aktuell installierte Flowsetversion auf dem Device
incomingCallerName - Anrufername des eingehenden Anrufes
incomingCallerNumber - Anrufernummer des eingehenden Anrufes
incomingWhatsAppMessage - letzte WhatsApp Nachricht
incomingTelegramMessage - letzte Telegram Nachricht
incomingSmsMessage - letzte SMS Nachricht
intentRadioName - zuletzt gesrreamter Intent Radio Name
intentRadioState - Status des IntentRadio Players
keyguardSet - 0/1 Displaysperre gesetzt 0=nein 1=ja, bedeutet nicht das sie gerade aktiv ist
lastSetCommandError - letzte Fehlermeldung vom set Befehl
lastSetCommandState - letzter Status vom set Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
lastStatusRequestError - letzte Fehlermeldung vom statusRequest Befehl
lastStatusRequestState - letzter Status vom statusRequest Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
nextAlarmDay - aktiver Alarmtag
nextAlarmState - aktueller Status des "Androidinternen" Weckers
nextAlarmTime - aktive Alarmzeit
nfc - Status des NFC on/off
nfcLastTagID - nfc_id des zu letzt gescannten Tag's / Damit die ID korrekt erkannt wird muss im Flow NFC Tag Support der Trigger NFC TagIDs bearbeitet werden und die TagId's Kommasepariert eingetragen werden. (nur Automagic)
screenOrientationMode - auto/manual, Modus für die Ausrichtung (Automatisch, Manuell)
state - aktueller Status
userFlowState - aktueller Status eines Flows, festgelegt unter dem setUserFlowState Attribut (nur Automagic)
volume - Media Lautstärkewert
volumeNotification - Benachrichtigungs Lautstärke
wiredHeadsetPlugged - 0/1 gibt an ob ein Headset eingesteckt ist oder nicht
Beim Reading checkActivTask muß zuvor der Packagename der zu prüfenden App als Attribut checkActiveTask angegeben werden. Beispiel: attr Nexus10Wohnzimmer
checkActiveTask com.android.chrome für den Chrome Browser.
Set
activateVoiceInput - aktiviert die Spracheingabe
bluetooth - on/off, aktiviert/deaktiviert Bluetooth
clearNotificationBar - All,Automagic, löscht alle Meldungen oder nur die Automagic/Tasker Meldungen in der Statusleiste
closeCall - beendet einen laufenden Anruf
currentFlowsetUpdate - fürt ein Flowset/Tasker-Projekt update auf dem Device durch
doNotDisturb - schaltet den nicht stören Modus, always immer stören, never niemals stören, alarmClockOnly nur Wecker darf stören, onlyImportant nur wichtige Störungen
installFlowSource - installiert einen Flow auf dem Device, das XML File muss unter /tmp/ liegen und die Endung xml haben. Bsp:set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml (nur Automagic)
mediaPlay - play Befehl zur Media App
mediaStop - stop Befehl zur Media App
mediaNext - nächster Titel Befehl zur Media App
mediaBack - vorheriger Titel zur Media App
nextAlarmTime - setzt die Alarmzeit. gilt aber nur innerhalb der nächsten 24Std.
openCall - ruft eine Nummer an und legt optional nach X Sekunden auf / set DEVICE openCall 01736458 10 / ruft die Nummer an und beendet den Anruf nach 10s
screenBrightness - setzt die Bildschirmhelligkeit, von 0-255.
screenBrightnessMode - schaltet die Adaptive Helligkeit on,off
screenMsg - versendet eine Bildschirmnachricht
sendintent - sendet einen Intentstring Bsp: set $AMADDeviceDEVICE sendIntent org.smblott.intentradio.PLAY url http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de/play.m3u name Klassikradio, der erste Befehl ist die Aktion und der zweite das Extra. Es können immer zwei Extras mitgegeben werden.
sendSMS - sendet eine SMS an eine bestimmte Telefonnummer. Bsp.: sendSMS Dies ist ein Test|555487263
startDaydream - startet den Daydream
statusRequest - Fordert einen neuen Statusreport beim Device an. Es können nicht von allen Readings per statusRequest die Daten geholt werden. Einige wenige geben nur bei Statusänderung ihren Status wieder.
timer - setzt einen Timer innerhalb der als Standard definierten ClockAPP auf dem Device. Es können nur Minuten angegeben werden.
ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird (um die Sprache für diese eine Durchsage zu ändern setze vor Deinem eigentlichen Text &en; oder &de;)
userFlowState - aktiviert oder deaktiviert einen oder mehrere Flows/Tasker-Profile,set Nexus7Wohnzimmer Badezimmer vorheizen:inactive oder set Nexus7Wohnzimmer Badezimmer vorheizen,Nachtlicht Steven:inactive
userFlowRun - führt den angegebenen Flow/Task aus
vibrate - lässt das Androidgerät vibrieren
volume - setzt die Medialautstärke. Entweder die internen Lautsprecher oder sofern angeschlossen die Bluetoothlautsprecher und per Klinkenstecker angeschlossene Lautsprecher, + oder - vor dem Wert reduziert die aktuelle Lautstärke um den Wert. Der maximale Sliderwert kann über das Attribut setVolMax geregelt werden.
volumeUp - erhöht die Lautstärke um den angegeben Wert im entsprechenden Attribut. Ist kein Attribut angegeben wird per default 2 genommen.
volumeDown - reduziert die Lautstärke um den angegeben Wert im entsprechenden Attribut. Ist kein Attribut angegeben wird per default 2 genommen.
volumeNotification - setzt die Benachrichtigungslautstärke.
Set abhängig von gesetzten Attributen
changetoBtDevice - wechselt zu einem anderen Bluetooth Gerät. Attribut setBluetoothDevice muß gesetzt sein. Siehe Hinweis unten! (nur Automagic)
notifySndFile - spielt die angegebene Mediadatei auf dem Androidgerät ab. Die aufzurufende Mediadatei sollte sich im Ordner /storage/emulated/0/Notifications/ befinden. Ist dies nicht der Fall kann man über das Attribut setNotifySndFilePath einen Pfad vorgeben.
nfc - schaltet nfc an oder aus /on/offAttribut root
openApp - öffnet eine ausgewählte App. Attribut setOpenApp
openURL - öffnet eine URL im Standardbrowser, sofern kein anderer Browser über das Attribut setOpenUrlBrowser ausgewählt wurde. Bsp: attr Tablet setOpenUrlBrowser de.ozerov.fully|de.ozerov.fully.MainActivity, das erste ist der Package Name und das zweite der Class Name
screen - on/off/lock/unlock schaltet den Bildschirm ein/aus oder sperrt/entsperrt ihn, in den Automagic Einstellungen muss "Admin Funktion" gesetzt werden sonst funktioniert "Screen off" nicht. Attribut setScreenOnForTimer ändert die Zeit wie lange das Display an bleiben soll! (Tasker unterstützt nur "screen off")
screenFullscreen - on/off, (aktiviert/deaktiviert) den Vollbildmodus. Attribut setFullscreen
screenLock - Sperrt den Bildschirm mit Pinabfrage. Attribut setScreenlockPIN - hier die Pin dafür eingeben. Erlaubt sind nur Zahlen. Es müßen mindestens 4, bis max 16 Zeichen verwendet werden.
screenOrientation - Auto,Landscape,Portait, aktiviert die Bildschirmausrichtung (Automatisch,Horizontal,Vertikal). Attribut setScreenOrientation (Tasker unterstützt nur Auto on/off)
system - setzt Systembefehle ab (nur bei gerootetet Geräen). reboot,shutdown,airplanemodeON (kann nur aktiviert werden) Attribut root, in den Automagic Einstellungen muss "Root Funktion" gesetzt werden
takePicture - löst die Kamera aus für ein Foto Attribut setTakePictureResolution
takeScreenshot - macht ein Screenshot Attribut setTakeScreenshotResolution
Attribute
setNotifySndFilePath - setzt den korrekten Systempfad zur Notifydatei (default ist /storage/emulated/0/Notifications/
setTtsMsgSpeed - setzt die Sprachgeschwindigkeit bei der Sprachausgabe(Für Automagic: Werte zwischen 0.5 bis 4.0 in 0.5er Schritten, default:1.0)(Für Tasker: Werte zwischen 1 bis 10 in 1er Schritten, default:5)
setTtsMsgLang - setzt die Sprache bei der Sprachausgabe, de oder en (default ist de)
setTtsMsgVol - wenn gesetzt wird der Wert als neues Media Volume fü die Sprachansage verwendet und danach wieder der alte Wert eingestellt
setVolUpDownStep - setzt den Step für volumeUp und volumeDown
setVolMax - setzt die maximale Volume Gr&uoml;e für den Slider
setNotifyVolMax - setzt den maximalen Lautstärkewert für Benachrichtigungslautstärke für den Slider
setRingSoundVolMax - setzt den maximalen Lautstärkewert für Klingellautstärke für den Slider
setAPSSID - setzt die AccessPoint SSID um ein WLAN sleep zu verhindern (nur Automagic)
setTakePictureResolution - welche Kameraauflösung soll verwendet werden? (800x600,1024x768,1280x720,1600x1200,1920x1080)
setTakePictureCamera - welche Kamera soll verwendet werden (Back,Front).
Um openApp verwenden zu können, muss als Attribut der Package Name der App angegeben werden.
Um zwischen Bluetoothgeräten wechseln zu können, muß das Attribut setBluetoothDevice mit folgender Syntax gesetzt werden. attr <DEVICE> BTdeviceName1|MAC,BTDeviceName2|MAC Es muss
zwingend darauf geachtet werden das beim BTdeviceName kein Leerzeichen vorhanden ist. Am besten zusammen oder mit Unterstrich. Achtet bei der MAC darauf das Ihr wirklich nach jeder zweiten Zahl auch
einen : drin habt
Beispiel: attr Nexus10Wohnzimmer setBluetoothDevice Logitech_BT_Adapter|AB:12:CD:34:EF:32,Anker_A3565|GH:56:IJ:78:KL:76
state
initialized - Ist der Status kurz nach einem define.
active - die Geräteinstanz ist im aktiven Status.
disabled - die Geräteinstanz wurde über das Attribut disable deaktiviert
AptToDate - Stellt aktuelle Update Informationen von apt Debian Systemen bereit
Das Modul synct alle Repositotys und stellt dann Informationen über zu aktualisierende Packete bereit.
Es ist Voraussetzung das folgende Zeile via "visudo" eingefügt wird: "fhem ALL=NOPASSWD: /usr/bin/apt-get".
Define
define <name> AptToDate <HOST>
Beispiel:
define fhemServer AptToDate localhost
Der Befehl erstellt eine AptToDate Instanz mit dem Namen fhemServer und dem Host localhost.
Nachdem die Instanz erstellt wurde werden die benötigten Informationen geholt und als Readings angezeigt.
Dies kann einen Moment dauern.
Readings
state - update Status des Servers, liegen neue Updates an oder nicht
os-release_ - alle Informationen aus /etc/os-release
repoSync - status des letzten repository sync.
toUpgrade - status des letzten upgrade Befehles
updatesAvailable - Anzahl der verfügbaren Paketupdates
Set
repoSync - holt aktuelle Informationen über den Updatestatus
toUpgrade - führt den upgrade prozess aus.
Get
showUpgradeList - Paketiste aller zur Verfügung stehender Updates
showUpdatedList - Liste aller als letztes aktualisierter Pakete, von der alten Version zur neuen Version
showWarningList - Liste der letzten Warnings
showErrorList - Liste der letzten Fehler
Attributes
disable - Deaktiviert das Device
upgradeListReading - fügt die Upgrade Liste als ein zusäiches Reading im JSON Format ein.
distupgrade - wechselt den upgrade Prozess nach dist-upgrade
disabledForIntervals - Deaktiviert das Device für eine bestimmte Zeit (13:00-18:30 or 13:00-18:30 22:00-23:00)
Bei der Definition eines BRAVIA Gerätes wird ein interner Task eingeplant,
der regelmäßig den Status des TV prüft und weitere Informationen abruft.
Das Intervall des Tasks kann durch den optionalen Parameter <poll-intervall> in Sekunden gesetzt werden.
Ansonsten wird der Task mit 45 Sekunden als Intervall definiert.
Nach der Definition eines Gerätes muss dieses einmalig im TV als Fernbedienung
registriert werden (set register).
Soweit die Readings nicht den allgemeinen AV Readings entsprechen, sind sie gruppiert:
s_*
: Status
ci_*
: Inhaltsinfo
Das Modul enthält vorgefertigte Layouts für remotecontrol mit PNG und SVG.
Set
set <name> <option> <value>
Optionen:
application
Liste der Anwendungen.
Anwenungen sind ab Modelljahr 2013 verfügbar.
channel
Liste aller bekannten Kanäle. Das Modul merkt sich alle aufgerufenen Kanäle.
Ab Modelljahr 2013 werden die Kanäle automatisch geladen
(Anzahl siehe channelsMax).
channelDown
Einen Kanal zurück schalten.
channelUp
Einen Kanal weiter schalten.
input
Liste der Eingänge.
Eingänge sind ab Modelljahr 2013 verfügbar.
mute
Direkte Stummschaltung erfolgt nur per aktiviertem Upnp.
off
Schaltet den TV aus. Der State des Gerätes wird auf "set_off" gesetzt. Dieser Wert wird nach 60 Sekunden wieder überschrieben oder sobald der TV entsprechend "off" meldet.
on
Einschalten des TV, ab Modelljahr 2013 per WOL. Der State des Gerätes wird auf "set_on" gesetzt. Dieser Wert wird nach 60 Sekunden wieder überschrieben oder sobald der TV entsprechend "on" meldet.
pause
Pausiert die Wiedergabe einer Aufnahme, einer internen App, etc.
play
Startet die Wiedergabe einer Aufnahme, einer internen App, etc.
record
Startet die Aufnahme des aktuellen Inhalts.
register
Einmalige Registrierung von FHEM als Fernbedienung im TV.
Bei requestFormat = "xml" erfolgt die Registrierung ohne Parameter.
Bei requestFormat = "json" ist die Registrierung zweistufig.
Beim Aufruf des Setter gibt es ein Eingabefeld:
Aufruf mit leerem Eingabefeld. Auf dem TV sollte eine PIN zur Registrierung erscheinen.
PIN im Eingabefeld eintragen und Registrierung noch mal ausführen
requestFormat
"xml" für xml-basierte Kommunikation 2011er/2012er Geräte
"json" für die Kommunikation seit der 2013er Generation
remoteControl
Direktes Senden von Kommandos an den TV.
statusRequest
Ruft die aktuellen Statusinformationen vom TV ab.
stop
Stoppt die Wiedergabe einer Aufnahme, einer internen App, etc.
text
Überträgt den eingegebenen Text in ein Textfeld der Anzeige.
toggle
Wechselt den Einschaltstatus des TV.
tvpause
Aktiviert den Timeshift-Modus.
upnp
Aktiviert Upnp zum Abfragen und Einstellen der Lautstärke.
volume
Direktes Setzen der Lautstärke erfolgt nur per aktiviertem Upnp.
volumeDown
Verringert die Lautstärke.
volumeUp
Erhöht die Lautstärke.
Attributes
attr <name> <attribute> <value>
Attribute:
channelsMax
Maximale Anzahl der im FHEMWEB angezeigten Kanäle. Der Standartwert ist 50.
macaddr
Ermöglicht das Einschalten des TV per WOL.
BS
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: BS
Broadlink implementiert die Verbindung zu Broadlink Geräten - aktuell mit Broadlink RM Pro, welcher sowohl Infrarot als auch 433MHz aufnehmen und anschließend versenden kann.
Zusätzlich werden RMMinis und die Wlan Steckdosen SP3 und SP3S unterstützt
Das Modul benötigt AES-Verschlüsslung.
In Windows installiert man die Untersützung mit: ppm install Crypt-CBC ppm install Crypt-OpenSSL-AES
Die mac-Adresse des Gerätes muss im folgenden Format eingegeben werden: xx:xx:xx:xx:xx
Der Typ sp3 wird für schaltbare Steckdosen genutzt. rmpro für alle anderen Geräte.
Set für rmpro
set <name> <commandSend> <command name>
Sendet ein vorher aufgenommenen Befehl
set <name> recordNewCommand <command name>
Nimmt ein neuen Befehl auf. Man muss einen Befehlnamen angeben.
set <name> remove <command name>
Löscht einen vorher aufgezeichneten Befehl.
set <name> rename <old command name> <new command name>
Benennt einen vorher aufgezeichneten Befehl um.
set <name> getTemperature
Ermittelt die aktuelle Temperatur die am Gerät gemessen wird.
Set für rmmini
set <name> <commandSend> <command name>
Sendet ein vorher aufgenommenen Befehl
set <name> recordNewCommand <command name>
Nimmt ein neuen Befehl auf. Man muss einen Befehlnamen angeben.
set <name> remove <command name>
Löscht einen vorher aufgezeichneten Befehl.
set <name> rename <old command name> <new command name>
Benennt einen vorher aufgezeichneten Befehl um.
Set für sp3
set <name> on
Schaltet das Gerät an.
set <name> off
Schaltet das Gerät aus.
set <name> toggle
Schaltet das Gerät entweder ein oder aus.
set <name> getStatus
Ermittelt den aktuellen Status des Gerätes.
Set für sp3s
set <name> on
Schaltet das Gerät an.
set <name> off
Schaltet das Gerät aus.
set <name> toggle
Schaltet das Gerät entweder ein oder aus.
set <name> getStatus
Ermittelt den aktuellen Status des Gerätes.
set <name> getEnergy
Ermittelt den aktuellen Stromverbrauch des angeschlossenen Gerätes.
Dieses Modul erstellt ein Device welches als Readings Termine eines oder mehrere Kalender(s), basierend auf dem 57_Calendar.pm Modul, besitzt. Ihr müsst das Perl-Modul Date::Parse installieren!
Aktuell wird nur die "get <> next" Funktion vom CALENDAR untertstützt.
Define
define <Name> CALVIEW <Kalendername(n) getrennt durch ','> <next> <updateintervall in sek (default 43200)>
define myView CALVIEW Googlekalender next
define myView CALVIEW Googlekalender,holiday next 900
- die Einstellung des Aktualisierungsintervalls wird normalerweise nicht benötigt, da jede Kalenderaktualisierung ein Caview-Update auslöst
Set
update readings:
set <Name> update
set myView update
Attributes
datestyle
nicht gesetzt - Standard, Readings bdatetimeiso / edatetimeiso werden nicht gezeigt
ISO8601 - aktiviert die readings bdatetimeiso / edatetimeiso (zeigen Terminstart und Ende im ISO8601 Format zB. 2017-02-27T00:00:00)
disable
0 / nicht gesetzt - aktiviert die interne Notify-Funktion (Standard)
1 - deaktiviert die interne Notify-Funktion welche ausgelöst wird wenn sich einer der Kalender aktualisiert hat
filterSummary <filtersouce>:<filtersummary>[,<filtersouce>:<filtersummary>]
not set - zeigt alle Termine (Standard)
<filtersouce>:<filtersummary>[,<filtersouce>:<filtersummary>] - CALVIEW filtert Termine die <filtersquelle>:<filtertitel> entsprechen, mehrere Filter sind durch Komma (,) zu trennen.
zb.: filterSummary Kalender_Abfall:Leichtverpackungen,Kalender_Abfall:Bioabfall
filterSummary Kalender_Abfall:Leichtverpackungen,Kalender_Feiertage:.*,Kalender_Christian:.*,Kalender_Geburtstage:.*
fulldaytext [text]
Dieser Text wird bei ganztägigen Terminen in _timeshort Readings genutzt (default ganztägig)
isbirthday
0 / nicht gesetzt - keine Altersberechnung (Standard)
1 - aktiviert die Altersberechnung im Modul. Das Alter wird aus der in der Terminbeschreibung (description) angegebenen Jahreszahl (Geburtsjahr) berechnet. (siehe Attribut yobfield)
maxreadings
bestimmt die Anzahl der Termine als Readings
modes
hier können die CALENDAR modi gewählt werden, welche in der View angezeigt werden sollen
oldStyledReadings
0 die Standarddarstellung für Readings
1 aktiviert die Termindarstellung im "alten" Format "2015.06.21-00:00" mit Wert "Start of Summer"
sourcecolor <calendername>:<colorcode>[,<calendername>:<colorcode>]
Hier kann man die Farben für die einzelnen Calendar definieren die dann zb im Tabletui widget genutzt werden kann.
Die calendar:color Elemente sind durch Komma zu trennen.
So kann man zb die google-Kalender Farben auch in der TUI für eine gewohnte Anzeige nutzen.
timeshort
0 Zeit in _timeshort Readings im Format 00:00:00 - 00:00:00
1 Zeit in _timeshort Readings im Format 00:00 - 00:00
yobfield
_description - (der Standard) Geburtsjahr wird aus der Terminbechreibung gelesen
_location - Geburtsjahr wird aus dem Terminort gelesen
_summary - Geburtsjahr wird aus dem Termintiele gelesen (verwendet wird die erste folge von 4 Ziffern im String))
weekdayformat
formatiert den Namen im Reading weekdayname
- de-long - (default) Deutsch, lang zb Dienstag
- de-short - Deutsch, kurze zb Di
- en-long - English, lang zb Tuesday
- en-short - English, kurze zb Tue
CM11
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: CM11
CO20
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: CO20
Der CUL/CUN(O) ist eine Familie von Funkempfängern, die von der Firma
Busware verkauft wird.
Mit der OpenSource Firmware
culfw können sie verschiedene
868 MHz Funkprotokolle empfangen bzw. senden (FS20/FHT/S300/EM/HMS/MAX!).
Man kann diese Geräte auch zur Reichweitenverlängerung, siehe
CUL_RFR einsetzen.
Einige Protokolle (FS20, FHT und KS300) werden von diesem Modul in das FHZ
Format konvertiert, daher kann dasselbe logische Gerät verwendet werden,
egal ob das Funktelegramm von einem CUL oder einem FHZ Gerät empfangen
wird.
Andere Protokolle (S300/EM) benötigen ihre eigenen Module. S300
Geräte werden vom Modul CUL_WS verarbeitet, wenn das Signal von einem
CUL empfangen wurde, ähnliches gilt für EMWZ/EMGZ/EMEM: diese
werden vom CUL_EM Modul verarbeitet.
Es ist möglich mehr als ein Gerät zu verwenden, um einen besseren
Empfang zu erhalten, FHEM filtert doppelte Funktelegramme aus.
Bemerkung: Dieses Modul benötigt unter Umständen das
Device::SerialPort bzw. Win32::SerialPort Modul,
wenn Sie das Gerät über USB anschließen und das
Betriebssystem unübliche Parameter für serielle Schnittstellen
setzt.
Define
define <name> CUL <device> <FHTID>
Geräte, die an USB angeschlossen sind (CUL/CUN):
<device> gibt die serielle Schnittstelle an, mit der der CUL
kommuniziert. Der Name der seriellen Schnittstelle hängt von der
gewählten Distribution und USB-Treiber ab, unter Linux ist dies das
Kernel Modul cdc_acm und üblicherweise wird die Schnittstelle
/dev/ttyACM0 genannt. Wenn die Linux Distribution über kein Kernel
Modul cdc_acm verfügt, dann kann die Schnittstelle über
usbserial mit dem folgenden Befehl erzeugt werden:
modprobe usbserial vendor=0x03eb product=0x204b
In diesem Fall ist diese Schnittstelle dann wahrscheinlich
/dev/ttyUSB0.
Wenn der Name der Schnittstelle ein @ enthält, kann nachfolgend die
verwendete Baudrate angegeben werden, z.B.: /dev/ttyACM0@38400.
Wenn die Baudrate mit "directio" angegeben wird (z.B.:
/dev/ttyACM0@directio), wird das Perl Modul
Device::SerialPort nicht benötigt und FHEM öffnet
die Schnittstelle mit einfachem Dateizugriff. Dies sollte dann
funktionieren, wenn das Betriebssystem vernünftige Standardwerte
für die serielle Schnittstelle verwendet, wie z.B. einige Linux
Distributionen oder OSX.
Geräte, die mit dem Netzwerk verbunden sind (CUN(O)):
<device> gibt die Hostadresse:Port des Gerätes an, z.B.
192.168.0.244:2323
Wenn das Gerät mit none bezeichnet wird, wird keine Schnittstelle
geöffnet und man kann ohne angeschlossene Hardware
experimentieren.
Die FHTID ist eine 4-stellige hexadezimale Zahl und wird verwendet, wenn
der CUL FHT Telegramme sendet bzw. Daten anfragt. Diese sollte als 0000
gewählt werden, wenn man FHT80b Anfragen durch den CUL vermeiden will.
Set
reopen
Öffnet die Verbindung zum Gerät neu und initialisiert es.
raw
Sendet einen CUL Firmware Befehl. Siehe auch
hier für
nähere Erläuterungen der CUL Befehle.
freq / bWidth / rAmpl / sens
Nur in der Betriebsart SlowRF. Bestimmt die
CUL Frequenz / Bandbreite / Empfänger Amplitude /
Empfindlichkeit
Bitte mit Vorsicht verwenden, da es die verwendete Hardware
zerstören kann bzw. es zu illegalen Funkzuständen kommen
kann. Bemerkung: Die Parameter für die RFR Übermittlung
werden hierdurch nicht beeinflußt.
freq bestimmt sowohl die Empfangs- als auch die Sendefrequenz.
Bemerkung: Auch wenn der CC1101 zwischen den Frequenzen 315 und 915
MHz eingestellt werden kann, ist die Antennenanbindung bzw. die
Antenne des CUL exakt auf eine Frequenz eingestellt. Standard ist
868.3 MHz (bzw. 433 MHz).
bWidth kann zwischen 58 kHz und 812 kHz variiert werden.
Große Werte sind empfindlicher gegen Interferencen, aber
machen es möglich, nicht genau kalbrierte Signale zu
empfangen. Die Einstellung beeinflusst ebenso die Übertragung.
Standardwert ist 325 kHz.
rAmpl ist die Verstärkung des Empfängers mit Werten
zwischen 24 and 42 dB. Größere Werte erlauben den
Empfang von schwachen Signalen. Standardwert ist 42.
sens ist die Entscheidungsgrenze zwischen "on" und "off"
Zuständen und kann 4, 8, 12 oder 16 dB sein. Kleinere Werte
erlauben den Empfang von undeutlicheren Signalen. Standard ist 4
dB.
hmPairForSec
Nur in der Betriebsart HomeMatic. Versetzt den
CUL für die angegebene Zeit in Sekunden in den Anlern-Modus. Jedes
HM Gerät, das sich im Anlern-Modus befindet, wird an FHEM
angelernt.
hmPairSerial
Nur in der Betriebsart HomeMatic.
Versucht, das angegebene Gerät anzulernen (zu "pairen"). Der
Parameter ist eine 10-stellige Zeichenfolge, die normalerweise mit
Buchstaben beginnt und mit Ziffern endet; diese sind auf der
Rückseite der Geräte aufgedruckt. Wenn das Gerät ein
Empfänger ist, ist es nicht notwendig, das angegebene Gerät in
den Anlern-Modus zu versetzen.
led
Schaltet die LED des CUL: aus (00), an (01) oder blinkend (02).
ITClock
Setzt die IT clock fü Intertechno V1 Protokoll. Default 250.
Get
version
gibt die Version der CUL Firmware zurück
uptime
gibt die Betriebszeit des CULs zurück (Zeit seit dem letzten Reset
des CULs)
raw
Sendet einen CUL Firmware Befehl und wartet auf eine Rückgabe des
CULs. Siehe auch README der Firmware für nähere
Erläuterungen zu den CUL Befehlen.
fhtbuf
Der CUL hat einen Puffer für Nachrichten für FHT. Wenn der
Puffer voll ist, werden neu empfangene Telegramme ignoriert und eine
"EOB" Meldung wird in die FHEM Logdatei geschrieben.
fhtbuf gibt den freien Speicher dieses Puffers (in hex)
zurück, ein leerer Puffer im CUL V2 hat 74 Byte, im CUL V3/CUN(O)
hat 200 Byte. Eine Telegramm benötigt 3 + 2x(Anzahl der FHT
Befehle) Byte, dies ist ein Grund, warum man mehrere FHT Befehle mit
einem set senden sollte. Ein weiterer Grund ist,
dass diese FHT Befehle in einem "Paket" zum FHT Gerät gesendet werden.
ccconf
Liest einige CUL Register des CC1101 (Sende- und Empfängerchips)
aus (Frequenz, Bandbreite, etc.) und stellt diese in lesbarer Form dar.
cmds
In abhägigkeit der installierten Firmware hat der CUL/CUN(O)
unterschiedliche Befehlssätze. Nähere Informationen über
die Befehle bzw. deren Interpretation siehe README Datei der
verwendeten CUL Firmware. Siehe auch Anmerkungen beim raw Befehl.
credit10ms
Der Funkraum darf für eine Dauer von credit10ms*10 ms belegt
werden, bevor die gesetzliche 1% Grenze erreicht ist und eine
LOVF Meldung ausgegeben wird.
Attribute
addvaltrigger
Generiert Trigger für zusätzliche Werte. Momentan sind dies
RSSI und RAWMSG für die CUL Familie und RAWMSG für FHZ.
connectCommand
culfw Befehl, was nach dem Verbindungsaufbau mit dem USB-Gerät, nach
Senden der zum Initialisieren der konfigurierten rfmode benötigten
Befehle gesendet wird.
hmId
Setzt die HomeMatic ID des Gerätes. Wenn dieses Attribut fehlt,
wird die ID zu F1<FHTID> gesetzt. Bemerkung 1: Nach dem Setzen
bzw. Verändern dieses Attributes müssen alle HomeMatic
Geräte neu angelernt werden. Bemerkung 2: Der Wert muss
eine 6-stellige Hexadezimalzahl sein, 000000 ist ungültig. FHEM
überprüft nicht, ob die ID korrekt ist, im Zweifelsfall
funktioniert die Kommunikation nicht.
hmProtocolEvents
Generiert Ereignisse für HomeMatic Telegramme. Diese werden
normalerweise für die Fehlersuche verwendet, z.B. durch Aktivieren
von inform timer in einer telnet Sitzung bzw. im
Event Monitor Fenster im FHEMWEB Frontend.
Beispiel:
longids
Durch Kommata getrennte Liste von Device-Typen für Empfang von
langen IDs mit den CUL. Diese zusätzliche ID erlaubt es
Wettersensoren, welche auf dem gleichen Kanal senden zu unterscheiden.
Hierzu wird eine zufällig generierte ID hinzugefügt. Wenn Sie
longids verwenden, dann wird in den meisten Fällen nach einem
Batteriewechsel ein neuer Sensor angelegt.
Standardmäßig werden keine langen IDs verwendet.
Folgende Module verwenden diese Funktionalität:
14_Hideki, 41_OREGON, 14_CUL_TCM97001, 14_SD_WS07.
Beispiele:
# Keine langen IDs verwenden (Default Einstellung):
attr cul longids 0
# Immer lange IDs verwenden:
attr cul longids 1
# Verwende lange IDs für SD_WS07 Devices.
# Device Namen sehen z.B. so aus: SD_WS07_TH_3 for channel 3.
attr cul longids SD_WS07
rfmode
Konfiguriert den RF Transceiver des CULs (CC1101). Verfügbare
Argumente sind:
SlowRF
Für die Kommunikation mit FS20/FHT/HMS/EM1010/S300/Hoermann
Geräten @1 kHz Datenrate (Standardeinstellung).
HomeMatic
Für die Kommunikation mit HomeMatic Geräten @10 kHz
Datenrate.
MAX
Für die Kommunikation mit MAX! Geräten @10 kHz
Datenrate.
WMBus_S
WMBus_T
WMBus_C
Für die Kommunikation mit Wireless M-Bus Geräten wie
Wasser-, Gas- oder Elektrozählern. Wireless M-Bus verwendet
drei unterschiedliche Kommunikationsarten, S-Mode, T-Mode und C-Mode. In
diesem Modus ist der Empfang von anderen Protokollen wie SlowRF
oder HomeMatic nicht möglich.
sendpool
Wenn mehr als ein CUL verwendet wird, um einen größeren
Bereich abzudecken, können diese sich gegenseitig
beeinflussen. Dieses Phänomen wird auch Palm-Beach-Resort Effekt
genannt. Wenn man diese zu einen gemeinsamen Sende"pool"
zusammenschließt, wird das Senden der einzelnen Telegramme
seriell (d.h. hintereinander) durchgeführt.
Wenn z.B. drei CUN's zur
Verfügung stehen, werden folgende Attribute gesetzt: attr CUN1 sendpool CUN1,CUN2,CUN3
attr CUN2 sendpool CUN1,CUN2,CUN3
attr CUN3 sendpool CUN1,CUN2,CUN3
<code> ist der Code, der am EM Gerät eingestellt wird.
Gütige Werte sind 1 bis 12. 1-4 gilt für EMWZ, 5-8 für EMEM
und 9-12 für EMGZ Geräte.
corr1 ist der Kalibrierfaktor für den Momentanverbrauch,
corr2 für den Gesamtverbrauch.
für EMWZ Geräte wird die Umdrehungsgeschwindigkeit (U/kW)
des verwendeten Stromzählers (z.B. 150) für corr1 und 12 mal
diesen Wert für corr2 verwendet
für EMEM devices ist corr1 mit 0.01 und corr2 mit 0.001
anzugeben
CostPerUnit und BasicFeePerMonth werden dazu verwendet, die
tägliche bzw. monatliche Kosten zu berechnen. Die Kosten werden in der
Logdatei einmal täglich (ohne Fixkosten) bzw. monatlich (mit Fixkosten)
generiert und angezeigt.
Die Definition sollte in etwa so aussehen:
define emwz 1 75 900 0.15 12.50
und in der Logdatei sollten diese Zeilen erscheinen:
Tipp: Das EMWZ Gerät kann so konfiguriert werden, dass es in der CUM
Spalte des STATE Wertes den aktuellen Wert des Stromzählers anzeigt.
Hierfür muss der aktuell am Stromzähler abgelesene Wert mit corr1
(U/kW) multipliziert werden und der CUM Rohwert aus der aktuellen fhem
Messung ('reading') davon abgezogen werden. Dann muss dieser Wert als
Basiswert des EMWZ Gerätes (im Beispiel emwz) gesetzt werden.
maxPeak <number>
Gibt den maximal möglichen Spitzenwert für das EM-Meter an
("TOP:"-Wert in Logdatei). Spitzenwerte größer als dieser
Wert gelten als EM-Lesefehler und werden ignoriert.
Wenn es z.B. nicht möglich ist mehr zu 40kW Leistung
zu beziehen setzt man maxPeak auf 40 um das Auslesen des
Stromzählers robuster zu machen.
CounterOffset
Gibt den Unterschied zwischen dem tatsächlichen Zählerstand und
dem vom EMGZ gemeldeten Wert an.
CounterOffset = tatsächlicher Zählerstand - Reading "total"
Beispiel:
Dieses Modul hantiert die empfangen Daten von FHT80 TF "Fenster-Tür-Kontakt" Sensoren, welche
normalerweise nur mit den FHT80B Geräten kommunizieren. Mit diesen Modul können
FHT80 TFs in eingeschränkter Weise ähnlich wie HMS TFK Sensoren benutzt werden (weitere
Informationen sind unter Wiki zu lesen).
Der name des FHEM Moduls wurde so gewählt, weil a) nur der CUL die Daten empfangen kann und b) "TF" normalerweise
Temperatur- und Feuchtigkeitssensoren suggeriert. (Keine Ahnung, warum ELV diesen Sensor nicht TFK genannt hat,
wie die Sensoren von FS20 und HMS).
Mit dem letzten Build auf SVN
oder mit der nächsten offiziellen Version 1.62 oder höher, ist es möglich, FHT80 TF Daten zu senden.
Möglich mit einem CUL oder ähnlichen Geräten. So können bis zu vier Fenstersensoren mit einem Gerät
simuliert werden (siehe FHEM Wiki). Es muss lediglich das Attribut model mit dem
Wert "virtual" hinzugefügt oder geändert werden. Wichtig: Der Devicecode sollte nicht der FHTID entsprechen.
D
define <name> CUL_FHTTK <devicecode>
<devicecode> Ist eine sechstellige Hexadezimalzahl, welche zum Zeitpunkt der Produktion
des FHT80 TF gegeben wurde. Somit ist diese auch nicht mehr änderbar und bleibt auch nach einem Batteriewechsel
erhalten.
Examples:
define TK_TEST CUL_FHTTK 965AB0
Set
Nur vorhanden, wenn das Attribut model mit virtual definiert wurde.
set <name> <value>
wobei value folgendes sein kann:
Closed setzt den Fensterstatus zu Closed
Open setzt den Fensterstatus zu Open
Pair startet das Anlernen an das FHT80B (FHT80B muss sich im Sync mode befinden) - danach wird der state auf "Closed" gesetzt
ReSync neu synchronisieren des virtuellen Sensor mit dem FHT80b Module. Damit wird ein virtueller Batteriewechsel simuliert und der angelernte
Sensor wieder aufsynchronisiert. (aktuell nur mit Prototyp CUL FW verfügbar Forum 55774)
Spezielles zum "ReSync" von vorhanden FHT80TFs nach einem CUL Firmware Reset:
Nach einem Reset bzw. Neustart eines CUL Devices ist die Verbindung zwischen dem FHT80B und den virtuellen FHT80TFs unterbrochen. Dies kommt einem Batteriewechsel gleich.
Die Kontakte sind weiterhin am FHT80B angelernt. Ein neues Pairen entfällt. Wenn mehrere vitruelle Kontakte verwendet werden, empfiehlt es sich diese in großen Abständen
wieder zu synchronisieren!
Mithilfe des Aufrufes der Funktion CUL_FHTTK_ReSyncAll() werden alle virtuellen Fensterkontakte nacheinander mit den FHT80B wieder synchronisiert.
Der Abstand beträgt zwischen den einzelnen Sensoren 1 Stunde. Dies wird durch die 1% Regeln bestimmt, da pro Kontakt 480 credits innerhalb von 64 Sekunden verbraucht werden!
Eine korrekte Gerätedefinition ist der Schlüssel zur einfachen Handhabung der HM-Umgebung.
Hintergrund zur Definition:
HM-Geräte haben eine 3 Byte (6 stelliger HEX-Wert) lange HMid - diese ist Grundlage
der Adressierung. Jedes Gerät besteht aus einem oder mehreren Kanälen. Die HMid für einen
Kanal ist die HMid des Gerätes plus die Kanalnummer (1 Byte, 2 Stellen) in
hexadezimaler Notation.
Kanäle sollten für alle mehrkanaligen Geräte definiert werden. Einträge für Kanäle
können nicht angelegt werden wenn das zugehörige Gerät nicht existiert. Hinweis: FHEM
belegt das Gerät automatisch mit Kanal 1 falls dieser nicht explizit angegeben wird. Daher
ist bei einkanaligen Geräten keine Definition nötig.
Hinweis: Wird ein Gerät gelöscht werden auch die zugehörigen Kanäle entfernt. Beispiel einer
vollständigen Definition eines Gerätes mit 2 Kanälen:
livingRoomSwitch bezeichnet das zur Kommunikation verwendete Gerät. Dieses wird
vor den Kanälen definiert um entsprechende Verweise einstellen zu können.
LivingroomMainLight hat Kanal 01 und behandelt den Lichtstatus, Kanal-Peers
sowie zugehörige Kanalregister. Falls nicht definiert wird Kanal 01 durch die Geräteinstanz
abgedeckt. LivingRoomBackLight ist der zweite "Kanal", Kanal 02. Seine
Definition ist verpflichtend um die Funktion ausführen zu können.
Sonderfall Sender: HM behandelt jeden Knopf einer Fernbedienung, Drucktaster und
ähnliches als Kanal . Es ist möglich (nicht notwendig) einen Kanal pro Knopf zu
definieren. Wenn alle Kanäle definiert sind ist der Zugriff auf Pairing-Informationen
sowie auf Kanalregister möglich. Weiterhin werden Verknüpfungen durch Namen besser
lesbar.
define kann auch durch das autocreate
Modul aufgerufen werden, zusammen mit dem notwendigen subType Attribut.
Normalerweise erstellt man hmPairForSec und drückt dann den
zugehörigen Knopf am Gerät um die Verknüpfung herzustellen oder man verwendet hmPairSerial falls das Gerät ein Empfänger und die Seriennummer
bekannt ist. Autocreate wird dann ein FHEM-Gerät mit allen notwendigen Attributen anlegen.
Ohne Pairing wird das Gerät keine Befehle von FHEM akzeptieren. Selbst wenn das Pairing
scheitert legt FHEM möglicherweise das Gerät an. Erfolgreiches Pairen wird
durch den Eintrag CommandAccepted in den Details zum CUL_HM Gerät angezeigt.
Falls autocreate nicht verwendet werden kann muss folgendes spezifiziert werden:
Der <6-stellige-Hex-Code>oder HMid+ch <8-stelliger-Hex-Code>
Das ist eine einzigartige, festgelegte Geräteadresse die nicht geändert werden kann (nein,
man kann sie nicht willkürlich auswählen wie z.B. bei FS20 Geräten). Man kann sie feststellen
indem man das FHEM-Log durchsucht.
Das subType Attribut
Dieses lautet: switch dimmer blindActuator remote sensor swi
pushButton threeStateSensor motionDetector keyMatic winMatic
smokeDetector
Das model Attribut
ist entsprechend der HM Nomenklatur zu vergeben
Ohne diese Angaben kann FHEM nicht korrekt mit dem Gerät arbeiten.
Hinweise
Falls das Interface ein Gerät vom Typ CUL ist muss rfmode
des zugehörigen CUL/CUN Gerätes auf HomeMatic gesetzt werden.
Achtung: Dieser Modus ist nur für BidCos/Homematic. Nachrichten von FS20/HMS/EM/S300
werden durch diese Gerät nicht empfangen. Bereits definierte FS20/HMS
Geräte müssen anderen Eingängen zugeordnet werden (CUL/FHZ/etc).
Nachrichten eines Geräts werden nur richtig interpretiert wenn der Gerätetyp
bekannt ist. FHEM erhält den Gerätetyp aus einer"pairing request"
Nachricht, selbst wenn es darauf keine Antwort erhält (siehe hmPairSerial und hmPairForSec um Parinig zu ermöglichen).
Alternativ, setzen des richtigen subType sowie Modelattributes, für eine Liste der
möglichen subType-Werte siehe "attr hmdevice ?".
Die sogenannte "AES-Verschlüsselung" ist eigentlich eine Signaturanforderung: Ist sie
aktiviert wird ein Aktor den erhaltenen Befehl nur ausführen falls er die korrekte
Antwort auf eine zuvor durch den Aktor gestellte Anfrage erhält. Das bedeutet:
Die Reaktion auf Befehle ist merklich langsamer, da 3 Nachrichten anstatt einer übertragen
werden bevor der Befehl vom Aktor ausgeführt wird.
Jeder Befehl sowie seine Bestätigung durch das Gerät wird in Klartext übertragen, ein externer
Beobachter kennt somit den Status jedes Geräts.
Die eingebaute Firmware ist fehlerhaft: Ein "toggle" Befehl wir ausgeführt bevor die
entsprechende Antwort auf die Signaturanforderung empfangen wurde, zumindest bei einigen Schaltern
(HM-LC-Sw1-Pl und HM-LC-SW2-PB-FM).
Der HMLAN Konfigurator beantwortet Signaturanforderungen selbstständig,
ist dabei die 3-Byte-Adresse einer anderen CCU eingestellt welche noch immer das Standardpasswort hat,
kann dieser Signaturanfragen korrekt beantworten.
AES-Verschlüsselung wird durch HMLAN und CUL unterstützt. Bei Einsatz eines CUL
ist das Perl-Modul Crypt::Rijndael notwendig. Aufgrund dieser Einschränkungen ist der
Einsatz der Homematic-Verschlüsselung nicht zu empfehlen!
Set
Hinweis: Geräte die normalerweise nur senden (Fernbedienung/Sensor/etc.) müssen in den
Pairing/Lern-Modus gebracht werden um die folgenden Befehle zu empfangen.
Allgemeine Befehle (verfügbar für die meisten HM-Geräte):
clear <[rssi|readings|register|msgEvents|attack|all]>
Eine Reihe von Variablen kann entfernt werden.
readings: Alle Messwerte werden gelöscht, neue Werte werden normal hinzugefügt. Kann benutzt werden um alte Daten zu entfernen
register: Alle in FHEM aufgezeichneten Registerwerte werden entfernt. Dies hat KEINEN Einfluss auf Werte im Gerät.
msgEvents: Alle Anchrichtenzähler werden gelöscht. Ebenso wird der Befehlsspeicher zurückgesetzt.
rssi: gesammelte RSSI-Werte werden gelöscht.
attack: Einträge bezüglich einer Attack werden gelöscht.
all: alles oben genannte.
getConfig
Liest die Hauptkonfiguration eines HM_Gerätes aus. Angewendet auf einen Kanal
erhält man Pairing-Information, List0, List1 und List3 des ersten internen Peers.
Außerdem erhält man die Liste der Peers für den gegebenen Kanal. Wenn auf ein Gerät
angewendet so bekommt man mit diesem Befehl die vorherigen Informationen für alle
zugeordneten Kanäle. Ausgeschlossen davon sind Konfigurationen zusätzlicher Peers.
Der Befehl ist eine Abkürzung für eine Reihe anderer Befehle.
getRegRaw [List0|List1|List2|List3|List4|List5|List6]<peerChannel>
Auslesen der Rohdaten des Registersatzes. Eine Beschreibung der Register sprengt
den Rahmen dieses Dokuments.
Die Register sind in sog. Listen strukturiert welche einen Satz Register enthalten.
List0: Geräteeinstellungen z.B: Einstellungen für CUL-Pairing Temperaturlimit eines Dimmers.
List1: Kanaleinstellungen z.B. benötigte Zeit um Rollo hoch und runter zu fahren.
List3: "link" Einstellungen - d.h. Einstellungen für Peer-Kanal. Das ist eine große Datenmenge!
Steuert Aktionen bei Empfang eines Triggers vom Peer.
List4: Einstellungen für den Kanal (Taster) einer Fernbedienung.
<PeerChannel> verknüpfte HMid+ch, z.B. 4 byte (8 stellige) Zahl wie
'12345601'. Ist verpflichtend für List3 und List4 und kann ausgelassen werden
für List0 und 1.
'all' kann verwendet werden um Daten von jedem mit einem Kanal verknüpften Link zu bekommen.
'selfxx' wird verwendet um interne Kanäle zu adressieren (verbunden mit den eingebauten Schaltern
falls vorhanden). xx ist die Kanalnummer in dezimaler Notation.
Hinweis 1: Ausführung ist abhängig vom Entity. Wenn List1 für ein Gerät statt einem Kanal
abgefragt wird gibt der Befehl List1 für alle zugehörigen Kanäle aus.
List3 mit 'peerChannel = all' gibt alle Verbindungen für alle Kanäle eines Gerätes zurück.
Hinweis 2: für 'Sender' siehe auch remote
Hinweis 3: Das Abrufen von Informationen kann dauern - besonders für Geräte
mit vielen Kanälen und Verknüpfungen. Es kann nötig sein das Webinterface manuell neu zu laden
um die Ergebnisse angezeigt zu bekommen.
Hinweis 4: Direkte Schalter eines HM-Geräts sind standardmäßig ausgeblendet.
Dennoch sind sie genauso als Verknüpfungen implemetiert. Um Zugriff auf 'internal links'
zu bekommen ist es notwendig folgendes zu erstellen:
'set <name> regSet intKeyVisib visib'
oder
'set <name> regBulk RegL_0. 2:81'
Zurücksetzen lässt es sich indem '81' mit '01' ersetzt wird. example:
set mydimmer getRegRaw List1
set mydimmer getRegRaw List3 all
getSerial
Auslesen der Seriennummer eines geräts und speichern in Attribut serialNr.
inhibit [on|off]
Blockieren/Zulassen aller Kanaländerungen eines Aktors, d.h. Zustand des Aktors ist
eingefroren bis 'inhibit' wieder deaktiviert wird. 'Inhibit' kann für jeden Aktorkanal
ausgeführt werden aber natürlich nicht für Sensoren - würde auch keinen Sinn machen.
Damit ist es praktischerweise möglich Nachrichten ebenso wie verknüpfte Kanalaktionen
temporär zu unterdrücken ohne sie löschen zu müssen.
Beispiele:
# Ausführung blockieren
set keymatic inhibit on
pair
Verbinden eines Geräts bekannter Seriennummer (z.b. nach einem Reset)
mit einer FHEM-Zentrale. Diese Zentrale wird normalerweise durch CUL/CUNO,
HMLAN,... hergestellt.
Wenn verbunden melden Geräte ihren Status and FHEM.
Wenn nicht verbunden wird das Gerät auf bestimmte Anfragen nicht reagieren
und auch bestimmte Statusinformationen nicht melden. Pairing geschieht auf
Geräteebene. Kanäle können nicht unabhängig von einem Gerät mit der Zentrale
verbunden werden.
Siehe auch getPair und
unpair.
Nicht das Verbinden (mit einer Zentrale) mit verknüpfen (Kanal zu Kanal) oder
peerChan verwechseln.
peerBulk <peerch1,peerch2,...> [set|unset]
peerBulk fügt Peer-Kanäle zu einem Kanal hinzu. Alle Peers einer Liste werden
dabei hinzugefügt.
Peering setzt die Einstellungen einer Verknüpfung auf Standardwerte. Da Peers nicht in Gruppen
hinzugefügt werden werden sie durch HM standardmäßig als'single' für dieses Gerät
angelegt.
Eine ausgeklügeltere Funktion wird gegeben durch
peerChan.
peerBulk löscht keine vorhandenen Peers sondern bearbeitet nur die Peerliste.
Andere bereits angelegt Peers werden nicht verändert.
peerBulk kann verwendet werden um Peers zu löschen indem die unset Option
mit Standardeinstellungen aufgerufen wird.
Verwendungszweck dieses Befehls ist hauptsächlich das Wiederherstellen
von Daten eines Geräts.
Empfehlenswert ist das anschließende Wiederherstellen der Registereinstellung
mit regBulk.
Beispiel:
set myChannel peerBulk 12345601,
set myChannel peerBulk self01,self02,FB_Btn_04,FB_Btn_03,
set myChannel peerBulk 12345601 unset # entferne Peer 123456 Kanal 01
regBulk <reg List>:<peer> <addr1:data1> <addr2:data2>...
Dieser Befehl ersetzt das bisherige regRaw. Er erlaubt Register mit Rohdaten zu
beschreiben. Hauptzweck ist das komplette Wiederherstellen eines zuvor gesicherten
Registers.
Werte können mit getConfig ausgelesen werden. Die
zurückgegebenen Werte können direkt für diesen Befehl verwendet werden.
<reg List> bezeichnet die Liste in die geschrieben werden soll. Mögliches Format
'00', 'RegL_00', '01'...
<peer> ist eine optionale Angabe falls die Liste ein Peer benötigt.
Der Peer kann als Kanalname oder als 4-Byte (8 chars) HM-Kanal ID angegeben
werden.
<addr1:data1> ist die Liste der Register im Hex-Format.
Beispiel:
myblind setzt die maximale Zeit für das Hochfahren der Rollos auf 25,6 Sekunden
regSet [prep|exec] <regName> <value> <peerChannel>
Für einige Hauptregister gibt es eine lesbarere Version die Registernamen <regName>
und Wandlung der Werte enthält. Nur ein Teil der Register wird davon unterstützt.
Der optionale Parameter [prep|exec] erlaubt das Packen von Nachrichten und verbessert damit
deutlich die Datenübertragung.
Benutzung durch senden der Befehle mit Parameter "prep". Daten werden dann für das Senden gesammelt.
Der letzte Befehl muss den Parameter "exec" habe um die Information zu übertragen.
<value> enthält die Daten in menschenlesbarer Form die in das Register geschrieben werden.
<peerChannel> wird benötigt falls das Register 'peerChan' basiert definiert wird.
Kann ansonsten auf '0' gesetzt werden. Siehe getRegRaw für komplette Definition.
Unterstützte Register eines Geräts können wie folgt bestimmt werden:
set regSet ? 0 0
Eine verkürzte Beschreibung der Register wird zurückgegeben mit:
set regSet <regname> ? 0
reset
Rücksetzen des Geräts auf Werkseinstellungen. Muss danach erneut verbunden werden um es
mit FHEM zu nutzen.
sign [on|off]
Ein- oder ausschalten der Signierung (auch "AES-Verschlüsselung" genannt, siehe note). Achtung: Wird das Gerät über einen CUL eingebunden, ist schalten (oder
deaktivieren der Signierung) nur möglich, wenn das Perl-Modul Crypt::Rijndael installiert ist.
statusRequest
Aktualisieren des Gerätestatus. Für mehrkanalige Geräte sollte dies kanalbasiert
erfolgen.
unpair
Aufheben des "Pairings", z.B. um das verbinden mit einem anderen Master zu ermöglichen.
Siehe pair für eine Beschreibung.
virtual <Anzahl an Knöpfen>
Konfiguriert eine vorhandene Schaltung als virtuelle Fernbedienung. Die Anzahl der anlegbaren
Knöpfe ist 1 - 255. Wird der Befehl für die selbe Instanz erneut aufgerufen werden Knöpfe
hinzugefügt.
Beispiel für die Anwendung:
define vRemote CUL_HM 100000 # die gewählte HMid darf nicht in Benutzung sein
set vRemote virtual 20 # definiere eine Fernbedienung mit 20 Knöpfen
set vRemote_Btn4 peerChan 0 <actorchannel> # verknüpft Knopf 4 und 5 mit dem gewählten Kanal
set vRemote_Btn4 press
set vRemote_Btn5 press long
deviceRename <newName>
benennt das Device und alle seine Kanäle um.
fwUpdate [onlyEnterBootLoader] <filename> [<waitTime>]
update Fw des Device. Der User muss das passende FW file bereitstellen.
waitTime ist optional. Es ist die Wartezeit, um das Device manuell in den FW-update-mode
zu versetzen.
"onlyEnterBootLoader" schickt das Device in den Booloader so dass es vom eq3 Firmware Update
Tool geflashed werden kann. Hauptsächlich für Unterputz-Aktoren in Verbindung mit
FHEM Installationen die ausschliesslich HM-LANs nutzen interessant.
subType abhängige Befehle:
switch
on - setzt Wert auf 100%
off - setzt Wert auf 0%
on-for-timer <sec> -
Schaltet das Gerät für die gewählte Zeit in Sekunden [0-85825945] an. Hinweis:
off-for-timer wie bei FS20 wird nicht unterstützt. Kann aber über Kanalregister
programmiert werden.
on-till <time> - einschalten bis zum angegebenen Zeitpunkt.
set <name> on-till 20:32:10
Das momentane Maximum für eine Endzeit liegt bei 24 Stunden.
pressL <peer> [<repCount>] [<repDelay>]
simuliert einen Tastendruck eines lokalen oder anderen peers. <peer> peer auf den der Tastendruck bezogen wird. <repCount> automatische Wiederholungen des long press. <repDelay> timer zwischen den Wiederholungen. Beispiel:
set actor pressL FB_Btn01 # trigger long peer FB button 01
set actor pressL FB_chn-8 # trigger long peer FB button 08
set actor pressL self01 # trigger short des internen peers 01
set actor pressL fhem02 # trigger short des FHEM channel 2
pressS <peer>
simuliert einen kurzen Tastendruck entsprechend peerL
eventL <peer> <condition> [<repCount>] [<repDelay>]
simuliert einen Event mit zusätzlichem Wert. <peer> peer auf den der Tastendruck bezogen wird. <codition>wert des Events, 0..255 Beispiel:
set actor eventL md 30 # trigger vom Bewegungsmelder mit Wert 30
eventS <peer> <condition>
simuliert einen kurzen Event eines Peers des actors. Typisch senden Sensoren nur short Events.
dimmer, blindActuator
Dimmer können virtuelle Kanäle unterstützen. Diese werden automatisch angelegt falls vorhanden.
Normalerweise gibt es 2 virtuelle Kanäle zusätzlich zum primären Kanal. Virtuelle Dimmerkanäle sind
standardmäßig deaktiviert, können aber parallel zum ersten Kanal benutzt werden um das Licht zu steuern.
Die virtuellen Kanäle haben Standardnamen SW<channel>_V<nr> z.B. Dimmer_SW1_V1 and Dimmer_SW1_V2.
Virtuelle Dimmerkanäle unterscheiden sich komplett von virtuellen Knöpfen und Aktoren in FHEM, sind aber
Teil des HM-Geräts. Dokumentation und Möglichkeiten würde hier aber zu weit führen.
0 - 100 [on-time] [ramp-time]
Setzt den Aktor auf den gegeben Wert (In Prozent)
mit einer Auflösung von 0.5.
Bei Dimmern ist optional die Angabe von "on-time" und "ramp-time" möglich, beide in Sekunden mit 0.1s Abstufung.
"On-time" verhält sich analog dem "on-for-timer".
"Ramp-time" beträgt standardmäßig 2.5s, 0 bedeutet umgehend.
old - schaltet auf den vorigen Wert zurück. Nur dimmer.
pct <level> [<ontime>] [<ramptime>] - setzt Aktor auf gewünschten absolut Wert.
Optional können für Dimmer "ontime" und "ramptime" angegeben werden.
"Ontime" kann dabei in Sekunden angegeben werden. Kann auch als Endzeit angegeben werden im Format hh:mm:ss
up [changeValue] [<ontime>] [<ramptime>] Einen Schritt hochdimmen.
down [changeValue] [<ontime>] [<ramptime>] Einen Schritt runterdimmen.
"changeValue" ist optional und gibt den zu ändernden Wert in Prozent an. Mögliche Abstufung dabei ist 0.5%, Standard ist 10%.
"ontime" ist optional und gibt an wielange der Wert gehalten werden soll. '0' bedeutet endlos und ist Standard.
"ramptime" ist optional und definiert die Zeit bis eine änderung den neuen Wert erreicht. Hat nur für Dimmer Bedeutung.
remotes, pushButton
Diese Geräteart reagiert nicht auf Anfragen, außer sie befinden sich im Lernmodus. FHEM reagiert darauf
indem alle Anfragen gesammelt werden bis der Lernmodus detektiert wird. Manuelles Eingreifen durch
den Benutzer ist dazu nötig. Ob Befehle auf Ausführung warten kann auf Geräteebene mit dem Parameter
'protCmdPend' abgefragt werden.
trgEventS [all|<peer>] <condition>
Initiiert ein eventS fuer die peer entity. Wenn all ausgewählt ist wird das Kommando bei jedem der Peers ausgeführt. Siehe auch eventS <condition>: Ist der Wert welcher mit dem Event versendet wird. Bei einem Bewegungsmelder ist das bspw. die Helligkeit.
trgEventL [all|<peer>] <condition>
Initiiert ein eventL fuer die peer entity. Wenn all ausgewählt ist wird das Kommando bei jedem der Peers ausgeführt. Siehe auch eventL <condition>: is the condition being transmitted with the event. E.g. the brightness in case of a motion detector.
trgPressS [all|<peer>]
Initiiert ein pressS fuer die peer entity. Wenn all ausgewählt ist wird das Kommando bei jedem der Peers ausgeführt. Siehe auch pressS
trgPressL [all|<peer>]
Initiiert ein pressL fuer die peer entity. Wenn all ausgewählt ist wird das Kommando bei jedem der Peers ausgeführt. Siehe auch pressL
peerChan <btn_no> <actChan> [single|dual|reverse]
[set|unset] [both|actor|remote]
"peerChan" richtet eine Verbindung zwischen Sender-Kanal und
Aktor-Kanal ein, bei HM "link" genannt. "Peering" darf dabei nicht
mit "pairing" verwechselt werden. Pairing bezeichnet das Zuordnen eines Geräts zu einer Zentrale. Peering bezeichnet das faktische Verbinden von Kanälen.
Peering erlaubt die direkte Interaktion zwischen Sender und Aktor ohne den Einsatz einer CCU
Peering eines Senderkanals veranlaßt den Sender nach dem Senden eines Triggers auf die
Bestätigung eines - jeden - Peers zu warten. Positives Feedback (z.B. grüne LED)
gibt es dabei nur wenn alle Peers den Befehl bestätigt haben.
Peering eines Aktorkanals richtet dabei einen Satz von Parametern ein welche die auszuführenden Aktionen
definieren wenn ein Trigger dieses Peers empfangen wird. Dies bedeutet:
- nur Trigger von Peers werden ausgeführt
- die auszuführende Aktion muss für den zugehörigen Trigger eines Peers definiert werden
Ein Aktorkanal richtet dabei eine Standardaktion beim Peering ein - diese hängt vom Aktor ab.
Sie kann ebenfalls davon abhängen ob ein oder zwei Tasten ein einem Befehl gepeert werden.
Peert man einen Schalter mit 2 Tasten kann eine Taste für 'on' und eine andere für 'off' angelegt werden.
Wenn nur eine Taste definiert wird ist die Funktion wahrscheinlich 'toggle'.
Die Funktion kann durch programmieren des Register (vom Aktor abhängig) geändert werden.
Auch wenn der Befehl von einer Fernbedienung oder einem Taster kommt hat er direkten Effekt auf
den Aktor. Das Peering beider Seiten ist quasi unabhängig und hat unterschiedlich Einfluss auf
Sender und Empfänger.
Peering eines Aktorkanals mit mehreren Senderkanälen ist ebenso möglich wie das eines Senderkanals
mit mehreren Empfängerkanälen.
<actChan> ist der zu verknüpfende Aktorkanal.
<btn_no> ist der zu verknüpfende Senderkanal (Knopf). Wird
'single' gewählt werden die Tasten von 1 an gezählt. Für 'dual' ist btn_no
die Nummer des zu verwendenden Tasterpaares. Z.B. ist '3' iim Dualmodus das
dritte Tasterpaar welches mit Tasten 5 und 6 im Singlemodus übereinstimmt.
Wird der Befehl auf einen Kanal angewendet wird btn_no igroriert.
Muss gesetzt sein, sollte dabei 0 sein.
[single|dual]: Dieser Modus bewirkt das Standardverhalten des Aktors bei Benutzung eines Tasters. Ein Dimmer
kann z.B. an einen einzelnen oder ein Paar von Tastern angelernt werden.
Standardeinstellung ist "dual".
'dual' (default) Schalter verknüpft zwei Taster mit einem Aktor. Bei einem Dimmer
bedeutet das ein Taster für hoch- und einer für runterdimmen.
'reverse' identisch zu dual - nur die Reihenfolge der Buttons ist gedreht
'single' benutzt nur einen Taster des Senders. Ist z.B. nützlich für einen einfachen Schalter
der nur zwischen an/aus toggled. Aber auch ein Dimmer kann an nur einen Taster angelernt werden.
[set|unset]: Wählt aus ob Peer hinzugefügt oder entfernt werden soll.
Hinzufügen ist Standard.
'set' stellt Peers für einen Kanal ein.
'unset' entfernt Peer für einen Kanal.
[actor|remote|both] beschränkt die Ausführung auf Aktor oder Fernbedienung.
Das ermöglicht dem Benutzer das entfernen des Peers vom Fernbedienungskanal ohne
die Einstellungen am Aktor zu entfernen.
Standardmäßig gewählt ist "both" für beides.
Example:
set myRemote peerChan 2 mySwActChn single set #Peer zweiten Knopf mit Aktorkanal
set myRmtBtn peerChan 0 mySwActChn single set #myRmtBtn ist ein Knopf der Fernbedienung. '0' wird hier nicht verarbeitet
set myRemote peerChan 2 mySwActChn dual set #Verknüpfe Knöpfe 3 und 4
set myRemote peerChan 3 mySwActChn dual unset #Entferne Peering für Knöpfe 5 und 6
set myRemote peerChan 3 mySwActChn dual unset aktor #Entferne Peering für Knöpfe 5 und 6 nur im Aktor
set myRemote peerChan 3 mySwActChn dual set remote #Verknüpfe Knöpfe 5 und 6 nur mit Fernbedienung. Linkeinstellungen mySwActChn werden beibehalten.
Simuliert den Tastendruck am Aktor eines gepeerted Sensors
[long|short] soll ein langer oder kurzer Taastendrucl simuliert werden? Default ist kurz.
[<peer>] legt fest, wessen peer's trigger simuliert werden soll.Default ist self(channelNo).
[<repCount>] nur gueltig fuer long. wie viele messages sollen gesendet werden? (Laenge des Button press). Default ist 1.
[<repDelay>] nur gueltig fuer long. definiert die Zeit zwischen den einzelnen Messages.
virtTemp <[off -10..50]>
Simuliert ein Thermostat. Wenn mit einem Gerät gepeert wird periodisch eine Temperatur gesendet,
solange bis "off" gewählt wird. Siehe auch virtHum
virtHum <[off -10..50]>
Simuliert den Feuchtigkeitswert eines Thermostats. Wenn mit einem Gerät verknüpft werden periodisch
Luftfeuchtigkeit undTemperatur gesendet, solange bis "off" gewählt wird. Siehe auch virtTemp
valvePos <[off 0..100]>
steuert einen Ventilantrieb
smokeDetector
Hinweis: All diese Befehle funktionieren momentan nur wenn mehr als ein Rauchmelder
vorhanden ist, und diese gepeert wurden um eine Gruppe zu bilden. Um die Befehle abzusetzen
muss der Master dieser gruppe verwendet werden, und momentan muss man raten welcher der Master ist.
smokeDetector kann folgendermaßen in Gruppen eingeteilt werden:
peerChan. Alle Mitglieder müssen mit dem Master verknüpft werden. Auch der
Master muss mit peerChan zur Gruppe zugefügt werden - z.B. mit sich selbst verknüpft! Dadurch hat man volle
Kontrolle über die Gruppe und muss nicht raten.
teamCall - führt einen Netzwerktest unter allen Gruppenmitgliedern aus
text <btn_no> [on|off] <text1> <text2>
Zeigt Text auf dem Display eines Geräts an. Für diesen Zweck muss zuerst ein set-Befehl
(oder eine Anzahl davon) abgegeben werden, dann können im "teach-in" Menü des 4Dis mit
"Central" Daten übertragen werden.
Falls auf einen Kanal angewendet dürfen btn_no und on|off nicht verwendet werden, nur
reiner Text.
\_ wird durch ein Leerzeichen ersetzt.
Beispiel:
set 4Dis text 1 on On Lamp
set 4Dis text 1 off Kitchen Off
set 4Dis_chn4 text Kitchen Off
Climate-Control (HM-CC-TC)
desired-temp <temp>
Setzt verschiedene Temperaturen. <temp> muss zwischen 6°C und 30°C liegen, die Auflösung beträgt 0.5°C.
tempListSat [prep|exec] HH:MM temp ... 24:00 temp
tempListSun [prep|exec] HH:MM temp ... 24:00 temp
tempListMon [prep|exec] HH:MM temp ... 24:00 temp
tempListTue [prep|exec] HH:MM temp ... 24:00 temp
tempListThu [prep|exec] HH:MM temp ... 24:00 temp
tempListWed [prep|exec] HH:MM temp ... 24:00 temp
tempListFri [prep|exec] HH:MM temp ... 24:00 temp
Gibt eine Liste mit Temperaturintervallen an. Bis zu 24 Intervall können pro Wochentag definiert werden, die
Auflösung dabei sind 10 Minuten. Die letzte Zeitangabe muss 24:00 Uhr sein.
Beispiel: bis 6:00 soll die Temperatur 19°C sein, dann bis 23:00 Uhr 22.5°C, anschließend
werden bis Mitternacht 19°C gewünscht. set th tempListSat 06:00 19 23:00 22.5 24:00 19
partyMode <HH:MM><durationDays>
setzt die Steuerung für die angegebene Zeit in den Partymodus. Dazu ist die Endzeit sowie Anzahl an Tagen
die er dauern soll anzugeben. Falls er am nächsten Tag enden soll ist '1'
anzugeben
sysTime
setzt Zeit des Klimakanals auf die Systemzeit
Climate-Control (HM-CC-RT-DN|HM-CC-RT-DN-BoM)
controlMode <auto|boost|day|night>
controlManu <temp>
controlParty <temp><startDate><startTime><endDate><endTime>
setzt die Steuerung in den Partymodus, definiert Temperatur und Zeitrahmen.
Beispiel: set controlParty 15 03-8-13 20:30 5-8-13 11:30
sysTime
setzt Zeit des Klimakanals auf die Systemzeit
desired-temp <temp>
Setzt verschiedene Temperaturen. <temp> muss zwischen 6°C und 30°C liegen, die Auflösung beträgt 0.5°C.
tempListSat [prep|exec] HH:MM temp ... 24:00 temp
tempListSun [prep|exec] HH:MM temp ... 24:00 temp
tempListMon [prep|exec] HH:MM temp ... 24:00 temp
tempListTue [prep|exec] HH:MM temp ... 24:00 temp
tempListThu [prep|exec] HH:MM temp ... 24:00 temp
tempListWed [prep|exec] HH:MM temp ... 24:00 temp
tempListFri [prep|exec] HH:MM temp ... 24:00 temp
Gibt eine Liste mit Temperaturintervallen an. Bis zu 24 Intervall können pro Wochentag definiert werden, die
Auflösung dabei sind 10 Minuten. Die letzte Zeitangabe muss immer 24:00 Uhr sein.
Der optionale Parameter [prep|exec] erlaubt das packen der Nachrichten und verbessert damit deutlich
die Datenübertragung. Besonders nützlich wenn das Gerät im "Wakeup"-modus betrieben wird.
Benutzung durch senden der Befehle mit Parameter "prep". Daten werden dann für das Senden gesammelt.
Der letzte Befehl muss den Parameter "exec" habe um die Information zu übertragen.
Beispiel: bis 6:00 soll die Temperatur 19°C sein, dann bis 23:00 Uhr 22.5°C, anschließend
werden bis Mitternacht 19°C gewünscht. set th tempListSat 06:00 19 23:00 22.5 24:00 19
set th tempListSat prep 06:00 19 23:00 22.5 24:00 19
set th tempListSun prep 06:00 19 23:00 22.5 24:00 19
set th tempListMon prep 06:00 19 23:00 22.5 24:00 19
set th tempListTue exec 06:00 19 23:00 22.5 24:00 19
tempListTmpl =>"[verify|restore] [[<file>:]templateName] ...
Die Temperaturlisten für ein oder mehrere Devices können in einem File hinterlegt
werden. Es wird ein template für eine Woche hinterlegt. Der User kann dieses
template in ein Device schreiben lassen (restore). Er kann auch prüfen, ob das Device korrekt
nach dieser Templist programmiert ist (verify).
Default Opeartion ist verify.
Default File ist tempList.cfg.
Default templateName ist der name der Entity
Default für file und templateName kann mit dem Attribut tempListTmpl gesetzt werden.
Beispiel für ein templist File. room1 und room2 sind die Namen 2er Tempaltes: entities:room1
tempListSat>08:00 16.0 15:00 18.0 21:30 19.0 24:00 14.0
tempListSun>08:00 16.0 15:00 18.0 21:30 19.0 24:00 14.0
tempListMon>07:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
tempListTue>07:00 16.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0
tempListWed>07:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
tempListThu>07:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
tempListFri>07:00 16.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
entities:room2
tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
tempListSun>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
tempListTue>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0
tempListWed>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
tempListThu>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
Specials:
none: das Template wird ignoriert
defaultWeekplan: Es wird als Default jeden Tag 18.0 Grad eingestellt.
Sinnvoll nutzbar wenn man einen TC als Kontroller nutzt. Der Wochenplan des TC wird dann imlizit genutzt
tempTmplSet =>"[[ <file> :]templateName]
Setzt das Attribut und sendet die Änderungen an das Device.
templateDel =>" <template>
Löscht eine Templateeintrag an dieser entity.
OutputUnit (HM-OU-LED16)
led [off|red|green|yellow]
schaltet die LED des Kanals auf die gewünschte Farbe. Wird der Befehl auf ein Gerät angewandt so
werden alle LEDs auf diese Farbe gesetzt.
Experten können die LEDs separat durch eine 8-stellige Hex-Zahl ansteuern.
ilum <Helligkeit><Dauer>
<Helligkeit> [0-15] der Beleuchtung.
<Dauer> [0-127] in Sekunden, 0 bedeutet dauernd an.
OutputUnit (HM-OU-CFM-PL)
led <color>[,<color>..] [<repeat>..]
Mögliche Farben sind [redL|greenL|yellowL|redS|greenS|yellowS|pause]. Eine Folge von Farben
kann durch trennen der Farbeinträge mit ',' eingestellt werden.
Leerzeichen dürfen in der Liste nicht benutzt werden. 'S' bezeichnet kurze und
'L' lange Beleuchtungsdauer. repeat definiert wie oft die Sequenz ausgeführt werden soll. Standard ist 1.
playTone <MP3No>[,<MP3No>..] [<repeat>] [<volume>]
Spielt eine Reihe von Tönen. Die Liste muss mit ',' getrennt werden. Leerzeichen
dürfen in der Liste nicht benutzt werden. replay kann verwendet werden um den zuletzt gespielten Klang zu wiederholen. repeat definiert wie oft die Sequenz ausgeführt werden soll. Standard ist 1. volume kann im Bereich 0..10 liegen. 0 stoppt jeden aktuell gespielten Sound. Standard ist 10 (100%.
Beispiel:
set cfm_Mp3 playTone 3 # MP3 Titel 3 einmal
set cfm_Mp3 playTone 3 3 # MP3 Titel 3 dreimal
set cfm_Mp3 playTone 3 1 5 # MP3 Titel 3 mit halber Lautstärke
set cfm_Mp3 playTone 3,6,8,3,4 # MP3 Titelfolge 3,6,8,3,4 einmal
set cfm_Mp3 playTone 3,6,8,3,4 255# MP3 Titelfolge 3,6,8,3,4 255 mal
set cfm_Mp3 playTone replay # Wiederhole letzte Sequenz
set cfm_Led led redL 4 # rote LED dreimal lang blinken
set cfm_Led led redS,redS,redS,redL,redL,redL,redS,redS,redS 255 # SOS 255 mal
HM-RC-19xxx
alarm <count>
sendet eine Alarmnachricht an die Steuerung
service <count>
sendet eine Servicenachricht an die Steuerung
symbol <symbol> [set|unset]
aktiviert ein verfügbares Symbol auf der Steuerung
display <text> comma unit tone backlight <symbol(s)>
Steuert das Display der Steuerung
<text> : bis zu 5 Zeichen
comma : 'comma' aktiviert das Komma, 'no' läßt es aus
[unit] : setzt Einheitensymbole.
[off|Proz|Watt|x3|C|x5|x6|x7|F|x9|x10|x11|x12|x13|x14|x15]. Momentan sind
x3..x15 nicht getestet.
tone : aktiviert einen von 3 Tönen [off|1|2|3]
backlight: läßt die Hintergrundbeleuchtung aufblinken [off|on|slow|fast]
<symbol(s)> aktiviert die Anzeige von Symbolen. Mehrere Symbole
können zu selben Zeit aktiv sein, Verknüpfung erfolgt komma-getrennt. Dabei keine
Leerzeichen verwenden. Mögliche Symbole:
[bulb|switch|window|door|blind|scene|phone|bell|clock|arrowUp|arrowDown]
Beispiel:
# "Hello" auf dem Display, Symbol bulb an, Hintergrundbeleuchtung, Ton ausgeben
set FB1 display Hello no off 1 on bulb
# "1234,5" anzeigen mit Einheit 'W'. Symbole scene,phone,bell und
# clock sind aktiv. Hintergrundbeleuchtung blinikt schnell, Ausgabe von Ton 2
set FB1 display 12345 comma Watt 2 fast scene,phone,bell,clock
HM-Dis-WM55
displayWM help displayWM [long|short] <text1> <color1> <icon1> ... <text6> <color6> <icon6> displayWM [long|short] <lineX> <text> <color> <icon>
es können bis zu 6 Zeilen programmiert werden. lineX legt die zu ändernde Zeilennummer fest. Es können die 3 Parameter der Zeile geändert werden. textNo ist der anzuzeigende Text. Der Inhalt des Texts wird in den Buttonds definiert.
txt<BtnNo>_<lineNo> referenziert den Button und dessn jeweiligen Zeile.
Alternativ kann ein bis zu 12 Zeichen langer Freitext angegeben werden color kann sein white, red, orange, yellow, green, blue icon kann sein off, on, open, closed, error, ok, noIcon
Example:
set disp01 displayWM short txt02_2 green noIcon txt10_1 red error txt05_2 yellow closed txt02_2 orange open
set disp01 displayWM long line3 txt02_2 green noIcon
set disp01 displayWM long line2 nc yellow noIcon
set disp01 displayWM long line6 txt02_2
set disp01 displayWM long line1 nc nc closed
HM-Dis-EP-WM55
displayEP help displayEP <text1,icon1:text2,icon2:text3,icon3> <sound> <repetition> <pause> <signal>
bis zu 3 Zeilen werden adressiert.
Wenn help eingegeben wird wird eine hilfe zum Kommando ausgegeben. Optionen der Parameter werden ausgegeben. textx 12 char text für die Zeile.
Wenn leer wird der Wert gemäß Reading genutzt. Typisch bedeuted es, dass keine Änderung stattfindet.
text0-9 zeigt den vordefinierten Wert der Kanäle 4 bis 8 an.
0xHH erlaubt die anzeige eines hex Zeichens. iconx Icon der Zeile.
Typisch bedeuted es, dass keine Änderung stattfindet. sound sound zum Abspielen. repetition 0..15 pause 1..160 signal Signalfarbe zum Anzeigen
Note: param reWriteDisplayxx
Beim Druck einer Taste ueberschreibt das Geraet diemittleren 3 Zeilen. Wenn da Attribut
attr chan param reWriteDisplayxx
gesetzt ist werden die 3 Zeilen nach xx Sekunden auf den Orginalwert zurück geschrieben.
keyMatic
Keymatic verwendet eine AES-signierte Kommunikation. Die Steuerung von KeyMatic
ist mit HMLAN und mit CUL möglich.
Um die Keymatic mit einem CUL zu steuern, muss das Perl-Modul Crypt::Rijndael
installiert sein.
lock
Schließbolzen fährt in Zu-Position
unlock [sec]
Schließbolzen fährt in Auf-Position.
[sec]: Stellt die Verzögerung ein nach der sich das Schloss automatisch wieder verschließt.
0 - 65535 Sekunden
open [sec]
Entriegelt die Tür sodass diese geöffnet werden kann.
[sec]: Stellt die Verzögerung ein nach der sich das Schloss automatisch wieder
verschließt. 0 - 65535 Sekunden
winMatic
winMatic arbeitet mit 2 Kanälen, einem für die Fenstersteuerung und einem für den Akku.
level <level> <relockDelay> <speed>
stellt den Wert ein.
<level>: Bereich ist 0% bis 100%
<relockDelay>: Spanne reicht von 0 bis 65535 Sekunden. 'ignore' kann verwendet werden um den Wert zu ignorieren.
<speed>: Bereich ist 0% bis 100%
stop
stopt die Bewegung
CCU_FHEM
defIgnUnknown
Definieren die unbekannten Devices und setze das Attribut ignore.
Ddann loesche die Readings.
HM-Sys-sRP-Pl
legt Einträge für den Repeater an. Bis zu 36 Einträge können angelegt werden.
setRepeat <entry> <sender> <receiver> <broadcast>
<entry> [1..36] Nummer des Eintrags in der Tabelle.
<sender> Name oder HMid des Senders oder der Quelle die weitergeleitet werden soll
<receiver> Name oder HMid des Empfängers oder Ziels an das weitergeleitet werden soll
<broadcast> [yes|no] definiert ob Broadcasts von einer ID weitergeleitet werden sollen.
Kurzanwendung: setRepeat setAll 0 0 0
schreibt die gesamte Liste der Geräte neu. Daten kommen vom Attribut repPeers.
Das Attribut repPeers hat folgendes Format:
src1:dst1:[y/n],src2:dst2:[y/n],src2:dst2:[y/n],...
Formatierte Werte von repPeer:
Number src dst broadcast verify
number: Nummer des Eintrags in der Liste
src: Ursprungsgerät der Nachricht - aus Repeater ausgelesen
dst: Zielgerät der Nachricht - aus den Attributen abgeleitet
broadcast: sollen Broadcasts weitergeleitet werden - aus Repeater ausgelesen
verify: stimmen Attribute und ausgelesen Werte überein?
Debugging:
raw <data> ...
nur für Experimente benötigt.
Sendet eine Liste von "Roh"-Befehlen. Der erste Befehl wird unmittelbar gesendet,
die folgenden sobald der vorherige bestätigt wurde. Die Länge wird automatisch
berechnet und der Nachrichtenzähler wird erhöht wenn die ersten beiden Zeichen ++ sind.
Beispiel (AES aktivieren):
set hm1 raw ++A001F100001234560105000000001\
++A001F10000123456010802010AF10B000C00\
++A001F1000012345601080801\
++A001F100001234560106
Get
configSave <filename>
Sichert die Einstellungen eines Eintrags in einer Datei. Die Daten werden in
einem von der FHEM-Befehlszeile ausführbaren Format gespeichert.
Die Datei liegt im FHEM Home-Verzeichnis neben der fhem.cfg. Gespeichert wird
kumulativ- d.h. neue Daten werden an die Datei angehängt. Es liegt am Benutzer das
doppelte speichern von Einträgen zu vermeiden.
Ziel der Daten ist NUR die Information eines HM-Gerätes welche IM Gerät gespeichert ist.
Im Deteil sind das nur die Peer-Liste sowie die Register.
Durch die Register wird also das Peering eingeschlossen.
Die Datei ist vom Benutzer les- und editierbar. Zusätzlich gespeicherte Zeitstempel
helfen dem Nutzer bei der Validierung.
Einschränkungen:
Auch wenn alle Daten eines Eintrags in eine Datei gesichert werden so sichert FHEM nur
die zum Zeitpunkt des Speicherns verfügbaren Daten! Der Nutzer muss also die Daten
der HM-Hardware auslesen bevor dieser Befehl ausgeführt wird.
Siehe empfohlenen Ablauf unten.
Dieser Befehl speichert keine FHEM-Attribute oder Gerätedefinitionen.
Diese verbleiben in der fhem.cfg.
Desweiteren werden gesicherte Daten nicht automatisch zurück auf die HM-Hardware geladen.
Der Benutzer muss die Wiederherstellung auslösen.
Ebenso wie ander Befehle wird 'configSave' am besten auf ein Gerät und nicht auf einen
Kanal ausgeführt. Wenn auf ein Gerät angewendet werden auch die damit verbundenen Kanäle
gesichert.
Empfohlene Arbeitsfolge für ein Gerät 'HMdev':
set HMdev clear msgEvents # alte Events löschen um Daten besser kontrollieren zu können
set HMdev getConfig # Geräte- und Kanalinformation auslesen
# warten bis Ausführung abgeschlossen ist
# "protState" sollte dann "CMDs_done" sein
# es sollten keine Warnungen zwischen "prot" und den Variablen auftauchen
get configSave myActorFile
param <paramName>
Gibt den Inhalt der relevanten Parameter eines Eintrags zurück.
Hinweis: wird der Befehl auf einen Kanal angewandt und 'model' abgefragt so wird das Model
des inhalteanbietenden Geräts zurückgegeben.
reg <addr> <list> <peerID>
liefert den Wert eines Registers zurück. Daten werden aus dem Speicher von FHEM und nicht direkt vom Gerät geholt.
Falls der Registerinhalt nicht verfügbar ist muss "getConfig" sowie anschließend "getReg" verwendet werden.
<addr> Adresse des Registers in HEX. Registername kann alternativ verwendet werden falls in FHEM bekannt.
"all" gibt alle dekodierten Register eines Eintrags in einer Liste zurück.
<list> Liste aus der das Register gewählt wird. Wird der REgistername verwendet wird "list" ignoriert und kann auf '0' gesetzt werden.
<peerID> identifiziert die Registerbänke für "list3" und "list4". Kann als Dummy gesetzt werden wenn nicht benötigt.
regList
gibt eine Liste der von FHEM für dieses Gerät dekodierten Register zurück.
Beachten dass noch mehr Register für ein Gerät implemetiert sein können.
saveConfig <file>
speichert Peers und Register in einer Datei.
Gespeichert werden die Daten wie sie in FHEM verfügbar sind. Es ist daher notwendig vor dem Speichern die Daten auszulesen.
Der Befehl unterstützt Aktionen auf Geräteebene. D.h. wird der Befehl auf ein Gerät angewendet werden auch alle verbundenen Kanaleinträge gesichert.
Das Speichern der Datei erfolgt kumulativ. Wird ein Eintrag mehrfach in der selben Datei gespeichert so werden die Daten an diese angehängt.
Der Nutzer kann den Zeitpunkt des Speichern bei Bedarf auslesen.
Der Inhalt der Datei kann verwendet werden um die Geräteeinstellungen wiederherzustellen. Er stellt alle Peers und Register des Eintrags wieder her.
Zwänge/Beschränkungen:
vor dem zurückschreiben der Daten eines Eintrags muss das Gerät mit FHEM verbunden werden.
"restore" löscht keine verknüpften Kanäle, es fügt nur neue Peers hinzu.
listDevice
bei einer CCU gibt es eine Liste der Devices, welche den ccu service zum zuweisen der IOs zurück
beim ActionDetector wird eine Komma geteilte Liste der Entities zurückgegeben
get ActionDetector listDevice # returns alle assigned entities
get ActionDetector listDevice notActive# returns entities ohne status alive
get ActionDetector listDevice alive # returns entities mit status alive
get ActionDetector listDevice unknown # returns entities mit status unknown
get ActionDetector listDevice dead # returns entities mit status dead
aesCommReq
wenn gesetzt wird IO AES signature anfordern bevor ACK zum Device gesendet wird.
actAutoTry
actAutoTry 0_off,1_on
setzen erlaubt dem ActionDetector ein statusrequest zu senden falls das Device dead markiert werden soll.
Das Attribut kann fuer Devices nützlich sein, welche sich nicht von selbst zyklisch melden.
actCycle
actCycle <[hhh:mm]|off>
Bietet eine 'alive' oder besser 'not alive' Erkennung für Geräte. [hhh:mm] ist die maximale Zeit ohne Nachricht eines Geräts. Wenn innerhalb dieser Zeit keine Nachricht empfangen wird so wird das Event"<device> is dead" generiert.
Sendet das Gerät wieder so wird die Nachricht"<device> is alive" ausgegeben.
Diese Erkennung wird durch 'autocreate' für jedes Gerät mit zyklischer Statusmeldung angelegt.
Die Kontrollinstanz ist ein Pseudo-Gerät "ActionDetector" mit der HMId "000000".
Aufgrund von Performanceüberlegungen liegt die Antwortverzögerung bei 600 Sekunden (10min). Kann über das Attribut "actCycle" des "ActionDetector" kontrolliert werden.
Sobald die Überwachung aktiviert wurde hat das HM-Gerät 2 Attribute:
actStatus: Aktivitätsstatus des Geräts
actCycle: Detektionsspanne [hhh:mm]
Die gesamte Funktion kann über den "ActionDetector"-Eintrag überprüft werden. Der Status aller Instanzen liegt im READING-Bereich.
Hinweis: Diese Funktion kann ebenfalls für Geräte ohne zyklische Übertragung aktiviert werden. Es obliegt dem Nutzer eine vernünftige Zeitspanne festzulegen.
autoReadReg
'0' autoReadReg wird ignorert.
'1' wird automatisch in getConfig ausgeführt für das Device nach jedem reboot von FHEM.
'2' wie '1' plus nach Power on.
'3' wie '2' plus update wenn auf das Device geschreiben wird.
'4' wie '3' plus fordert Status an, wenn es nicht korrekt erscheint
'5' prüft Registerlisten und peerlisten. Wenn diese nicht komplett sind wird ein update angefordert
'8_stateOnly' es wird nur der Status geprüft, updates für Register werden nicht gemacht.
Ausführung wird verzögert ausgeführt. Wenn das IO eine gewisse Last erreicht hat wird
das Kommando weiter verzögert um eine Überlast zu vermeiden.
Empfohlene Zusammenhänge bei Nutzung:
Benutze das Attribut für das Device, nicht für jeden einzelnen Kanal
Das Setzen auf Level 5 wird für alle Devices und Typen empfohlen, auch wakeup Devices.
burstAccess
kann für eine Geräteinstanz gesetzt werden falls das Model bedingte Bursts erlaubt.
Das Attribut deaktiviert den Burstbetrieb (0_off) was die Nachrichtenmenge des HMLAN reduziert
und damit die Wahrscheinlichkeit einer Überlast von HMLAN verringert.
Einschalten (1_auto) erlaubt kürzere Reaktionszeiten eines Geräts. Der Nutzer muss nicht warten
bis das Gerät wach ist.
Zu beacht ist dass das Register "burstRx" im Gerät ebenfalls gesetzt werden muss.
expert
Dieses Attribut steuert die Sichtbarkeit der Register Readngs. Damit wird die Darstellung der Geräteparameter kontrolliert.
Es handdelt sich um einen binaer kodierten Wert mit folgenden Empfehlungen:
0_defReg : default Register
1_allReg : all Register
2_defReg+raw : default Register und raw Register
3_allReg+raw : alle Register und raw reading
4_off : no Register
8_templ+default: templates und default Register
12_templOnly : nur templates
251_anything : alles verfügbare
Wird 'expert' auf ein Gerät angewendet so gilt dies auch für alle verknüpften Kanäle.
Kann übergangen werden indem das Attribut ' expert' auch für den Gerätekanal gesetzt wird.
Das Attribut "showInternalValues" bei den globalen Werten muss ebenfalls überprüft werden.
"expert" macht sich diese Implementierung zu Nutze.
Gleichwohl setzt "showInternalValues" - bei Definition - 'expert' außer Kraft .
readOnly
beschränkt kommandos auf Lesen und Beobachten.
IOgrp
kann an Devices vergeben werden udn zeigt auf eine virtuelle ccu. Danach wird die ccu
beim Senden das passende IO für das Device auswählen. Es ist notwendig, dass die virtuelle ccu
definiert und alle erlaubten IOs eingetragen sind. Beim Senden wird die ccu prüfen
welches IO operational ist und welches den besten rssi-faktor für das Device hat.
Optional kann ein bevorzugtes IO definiert werden. In diesem Fall wird es, wenn operational,
genutzt - unabhängig von den rssi Werten.
wenn kein prefIO verfügbar ist und none erkannt wird wird das IO aus IODev gewählt
Beispiel:
levelRange
nur für Dimmer! Der Dimmbereich wird eingeschränkt.
Es ist gedacht um z.B. LED Lichter unterstützen welche mit 10% beginnen und bei 40% bereits das Maximum haben.
levelrange normalisiert den Bereich entsprechend. D.h. set 100 wird physikalisch den Dimmer auf 40%,
1% auf 10% setzen. 0% schaltet physikalisch aus.
Beeinflusst werdne Kommndos on, up, down, toggle und pct. Nicht beeinflusst werden Kommandos
die den Wert physikalisch setzen.
Zu beachten:
dimmer level von Peers gesetzt wird nicht beeinflusst. Dies wird durch Register konfiguriert.
Readings level könnte negative werden oder über 100%. Das kommt daher, dass physikalisch der Bereich 0-100%
ist aber auf den logischen bereicht normiert wird.
Sind virtuelle Dimmer Kanäle verfügbar muss das Attribut für jeden Kanal gesetzt werden
Beispiel:
tempListTmpl
Setzt das Default für Heizungskontroller. Ist es nicht gesetzt wird der default filename genutzt und der name
der entity als templatename. Z.B. ./tempList.cfg:RT_Clima
Um das template nicht zu nutzen kann man es auf '0'setzen.
Format ist <file>:<templatename>.
model,
subType
Diese Attribute werden bei erfolgreichem Pairing automatisch gesetzt.
Sie sollten nicht per Hand gesetzt werden und sind notwendig um Gerätenachrichten
korrekt interpretieren oder senden zu können.
param
'param' definiert modelspezifische Verhalten oder Funktionen. Siehe "models" für Details.
msgRepeat
Definiert die Nummer an Wiederholungen falls ein Gerät nicht rechtzeitig antwortet.
Für Geräte die nur den "Config"-Modus unterstützen sind Wiederholungen nicht erlaubt.
Bei Geräte mit wakeup-Modus wartet das Gerät bis zum nächsten Aufwachen. Eine längere Verzögerung
sollte in diesem Fall angedacht werden.
Wiederholen von Bursts hat Auswirkungen auf die HMLAN Übertragungskapazität.
rawToReadable
Wird verwendet um Rohdaten von KFM100 in ein lesbares Fomrat zu bringen, basierend auf
den gemessenen Werten. Z.B. langsames Füllen eines Tanks, während die Werte mit inform
angezeigt werden. Man sieht:
Anwenden dieser Werte: "attr KFM100 rawToReadable 10:0 50:20 79:40 270:100".
FHEM für damit eine lineare Interpolation der Werte in den gegebenen Grenzen aus.
unit
setzt die gemeldete Einheit des KFM100 falls 'rawToReadable' aktiviert ist. Z.B.
attr KFM100 unit Liter
autoReadReg
'0' autoReadReg wird ignoriert.
'1' führt ein "getConfig" für ein Gerät automatisch nach jedem Neustart von FHEM aus.
'2' verhält sich wie '1',zusätzlich nach jedem power_on.
'3' wie '2', zusätzlich bei jedem Schreiben auf das Gerät
'4' wie '3' und versucht außerdem den Status abzufragen falls dieser nicht verfügbar erscheint.
'5' kontrolliert 'reglist' und 'peerlist'. Falls das Auslesen unvollständig ist wird 'getConfig' ausgeführt
'8_stateOnly' aktualisiert nur Statusinformationen aber keine Konfigurationen wie Daten- oder
Peerregister.
Ausführung wird verzögert um eine Überlastung beim Start zu vermeiden . Daher werden Aktualisierung und Anzeige
von Werten abhängig von der Größe der Datenbank verzögert geschehen.
Empfehlungen und Einschränkungen bei Benutzung:
Dieses Attribut nur auf ein Gerät oder Kanal 01 anwenden. Nicht auf einzelne Kanäle eines mehrkanaligen
Geräts anwenden um eine doppelte Ausführung zu vermeiden.
Verwendung bei Geräten die nur auf den 'config'-Modus reagieren wird nicht empfohlen da die Ausführung
erst starten wird wenn der Nutzer die Konfiguration vornimmt
Anwenden auf Geräte mit 'wakeup'-Modus ist nützlich. Zu bedenken ist aber dass die Ausführung
bis zm "aufwachen" verzögert wird.
HM-Sen-RD-O
offAtPon: nur Heizkanäle: erzwingt Ausschalten der Heizung nach einem powerOn
onAtRain: nur Heizkanäle: erzwingt Einschalten der Heizung bei Status 'rain' und Ausschalten bei Status 'dry'
virtuals
noOnOff: eine virtuelle Instanz wird den Status nicht ändern wenn ein Trigger empfangen wird. Ist dieser Paramter
nicht gegeben so toggled die Instanz ihren Status mit jedem trigger zwischen An und Aus
msgReduce: falls gesetzt und der Kanal wird für genutzt wird jede Nachricht
außer die der Ventilstellung verworfen um die Nachrichtenmenge zu reduzieren
blind levelInverse während HM 100% als offen und 0% als geschlossen behandelt ist dies evtl. nicht
intuitiv für den Nutzer. Defaut für 100% ist offen und wird als 'on'angezeigt.
Das Setzen des Parameters invertiert die Anzeige - 0% wird also offen und 100% ist geschlossen.
ACHTUNG: Die Anpassung betrifft nur Readings und Kommandos. Register sind nicht betroffen. ponRestoreSmart bei powerup des Device fährt das Rollo in die vermeintlich nächstgelegene Endposition und anschliessend in die ursprüngliche Position. ponRestoreForce bei powerup des Device fährt das Rollo auf Level 0, dann auf Level 100 und anschliessend in die ursprüngliche Position.
sensRain siren powerMeter switch dimmer rgb showTimed wenn timedOn running ist wird -till an state gehängt. Dies führt dazu, dass ggf. on-till im State steht was das stateIcon handling verbessert.
HM-OU-LED16
color $value # in Hex - nur für Gerät
$value # in Hex - nur für Gerät
color [off|red|green|orange] # für Kanal
[off|red|green|orange] # für Kanal
remote/pushButton
battery [low|ok]
trigger [Long|Short]_$no trigger event from channel
swi
Btn$x Short
Btn$x Short (to $dest)
battery: [low|ok]
switch/dimmer/blindActuator
$val
powerOn [on|off|$val]
[unknown|motor|dim] [up|down|stop]:$val
timedOn [running|off] # "An" ist temporär - z.B. mit dem 'on-for-timer' gestartet
sensRain
$val
powerOn
level <val≥
timedOn [running|off] # "An" ist temporär - z.B. mit dem 'on-for-timer' gestartet
trigger [Long|Short]_$no trigger event from channel
smokeDetector
[off|smoke-Alarm|alive] # für Gruppen-Master
[off|smoke-forward|smoke-alarm] # für Gruppenmitglieder
[normal|added|addedStrong] #HM-CC-SCD
SDteam [add|remove]_$dname
battery [low|ok]
smoke_detect [none|<src>]
teamCall:from $src
Das Modul CUL_MAX wertet von einem CUL empfangene MAX! Botschaften aus.
Es wird mit Hilfe von autocreate automatisch generiert, es muss nur sichergestellt
werden, dass der richtige rfmode gesetzt wird, z.B. attr CUL0 rfmode MAX.
Define
define <name> CUL_MAX <addr>
Definiert ein CUL_MAX Gerät des Typs <type> und der Adresse <addr>.
Die Adresse darf nicht schon von einem anderen MAX! Gerät verwendet werden.
Set
pairmode
Versetzt den CUL_MAX für 60 Sekunden in den Pairing Modus, während dieser Zeit
kann das Gerät mit anderen Geräten gepaart werden (Heizkörperthermostate,
Eco-Taster, etc.). Auch das zu paarende Gerät muss manuell in den Pairing Modus
versetzt werden (z.B. beim Heizkörperthermostat durch Drücken der "Boost"
Taste für 3 Sekunden).
fakeSC <device> <open>
Sendet eine fingierte ShutterContactState Meldung <open>, dies muss 0 bzw. 1 für
"Fenster geschlossen" bzw. "Fenster offen" sein. Wenn das <device> eine Gruppen-ID
ungleich Null hat, beeinflusst diese fingierte ShutterContactState Meldung alle Geräte
mit dieser Gruppen-ID. Es muss sichergestellt werden, dass vorher alle Zielgeräte
mit fakeShutterContact verbunden werden.
fakeWT <device> <desiredTemperature> <measuredTemperature>
Sendet eine fingierte WallThermostatControl Meldung (beide Parameter können
eine Nachkommastelle haben, für desiredTemperature darf die Nachkommastelle nur 0 bzw. 5 sein).
Wenn das <device> eine Gruppen-ID ungleich Null hat, beeinflusst diese fingierte
WallThermostatControl Meldung alle Geräte mit dieser Gruppen-ID.
Es muss sichergestellt werden, dass vorher alle Zielgeräte
mit fakeWallThermostat verbunden werden.
Das CUL_TCM97001 Module verarbeitet von einem IO Gerät (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur \ Wind \ Rain - Sensoren.
Unterstütze Modelle:
ABS700
AURIOL
Eurochron
GT_WT_02
KW9010
NC_WS
TCM21....
TCM97...
PFR-130 (rain)
Prologue
Rubicson
W155 (wind/rain)
W174 (rain)
Neu empfangene Sensoren werden in der fhem Kategory CUL_TCM97001 per autocreate angelegt.
Define
Die empfangenen Sensoren werden automatisch angelegt.
Die ID der angelgten Sensoren sind die ersten zwei HEX Werte des empfangenen Paketes in dezimaler Schreibweise.
Generierte Events:
temperature: Die aktuelle Temperatur
humidity: Die aktuelle Luftfeutigkeit (falls verfügbar)
battery: Der Batteriestatus: low oder ok (falls verfügbar)
channel: Kanalnummer (falls verfügbar)
trend: Der Temperaturtrend (falls verfügbar)
israining: Aussage Regen zwichen zwei Messungen (falls verfügbar)
rain: Der Regenwert, eine fortlaufende Zahl bis zum Batteriewechsel (falls verfügbar)
Attribute
IODev
Spezifiziert das physische Gerät, das die Ausstrahlung der Befehle für das
"logische" Gerät ausführt. Ein Beispiel für ein physisches Gerät ist ein CUL.
max-deviation-temp: (Default:1, erlaubte Werte: 1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50)
Maximal erlaubte Abweichung der gemessenen Temperatur zum vorhergehenden Wert in Kelvin.
Das CUL_WS-Modul entschlüsselt die Nachrichten des Types S300, die von
dem CUL empfangen wurden.
Define
define <name> CUL_WS <code> [corr1...corr4]
<code> ist der Code, der an dem S300 eingestellt werden muss.
Gültige Werte sind 1 bis 8
corr1..corr4 entsprechen vier möglichen Korrekturwerten, die den
jeweiligen Werten hinzuaddiert werden, um die Geräte zu kalibrieren.
Hinweis: Bei den Werten für Regenmengen werden die Korrekturwerte
nicht hinzuaddiert, sondern als Faktor mit dem Regenwert multipliziert.
Set
N/A
Get
N/A
Attribute
IODev (!)
Achtung: mit diesem Attribut ist es möglich mehrere 8-er Sets an
S300-er in FHEM zu definieren. Wichtige Voraussetzung allerdings ist,
dass nur das spezifizierte CUL das S300 empfangen kann, z.Bsp. durch
Frequenztrennung (433MHz vs. 868MHz).
Lädt die spezifizierte Firmware von fhem.de und programmiert das
angeschlossene Gerät.
Z.Zt unterstützt wird das CUL und folgende Versionen:
CUL_V2, CUL_V2_HM, CUL_V3, CUL_V3_ZWAVE, CUL_V4.
Falls als fhem-device none angegeben wurde, dann muss sich das
angeschlossene Gerät bereits in flash-mode befinden. Achtung:Für CUL flashen muss dfu-programmer installiert und im
Pfad auffindbar sein, das ist der Fall bei dem Fritz!BOX 7390 Paket von
fhem.de
Beispiele:
CULflash CUL CUL_V3
CULflash none CUL_V3
Achtung: die Meldung "dfu-programmer: failed to release interface 0." ist
auf der FB7390 "normal".
Diese deutsche Übersetzung ist nicht mehr aktuell
(siehe bitte Forumsbeitrag).
Bitte hilf bei FHEM mit und aktualisiere diese Übersetzung. Die englischsprachige
Dokumentation ist immer aktuell.
Ein Kalender-Device ermittelt (Serien-) Termine aus einem Quell-Kalender. Dieser kann eine URL oder eine Datei sein.
Die Datei muss im iCal-Format vorliegen.
Beginnt die URL mit https://, muss das Perl-Modul IO::Socket::SSL installiert sein
(use cpan -i IO::Socket::SSL).
Hinweis für Nutzer des Google-Kalenders: Du kann direkt die private iCal-URL des Google Kalender nutzen.
Sollte Deine Google-Kalender-URL mit https:// beginnen und das Perl-Modul IO::Socket::SSL ist nicht auf Deinem Systeme installiert,
kannst Du in der URL https:// durch http:// ersetzen, falls keine automatische Umleitung auf die https:// URL erfolgt.
Solltest Du unsicher sein, ob dies der Fall ist, überprüfe es bitte zuerst mit Deinem Browser.
Der optionale Parameter interval bestimmt die Zeit in Sekunden zwischen den Updates. Default-Wert ist 3600 (1 Stunde).
set <name> update
Erzwingt das Einlesen des Kalenders von der definierten URL. Das nächste automatische Einlesen erfolgt in
interval Sekunden später.
set <name> reload
Dasselbe wie update, jedoch werden zuerst alle Termine entfernt.
Get
get <name> update
Entspricht set <name> update
get <name> reload
Entspricht set <name> reload
get <name> <format> <filter> [<max>]
Die Termine für den Kalender <name> werden Zeile für Zeile ausgegeben.
Folgende Selektoren/Filter stehen zur Verfügung:
Der Selektor <format> legt den zurückgegeben Inhalt fest:
<format>
Inhalt
uid
UID des Termins
text
Benutzer-/Monitorfreundliche Textausgabe.
summary
Übersicht (Betreff, Titel)
location
Ort
categories
Kategorien
alarm
Alarmzeit
start
Startzeit
end
Endezeit
full
Vollständiger Status
debug
wie <full> mit zusätzlichen Informationen zur Fehlersuche
Der Filter <filter> grenzt die Termine ein:
<filter>
Inhalt
mode=<regex>
alle Termine, deren Modus durch den regulären Ausdruck <regex> beschrieben werden.
<mode>
alle Termine mit Modus <mode>.
uid=<regex>
Alle Termine, deren UIDs durch den regulären Ausdruck <regex> beschrieben werden.
<uid>
Alle Termine mit der UID <uid>
<reading>
Alle Termine die im Reading <reading> aufgelistet werden (modeAlarm, modeAlarmed, modeStart, etc.)
- dieser Filter ist abgekündigt und steht in einer zukünftigen Version nicht mehr zur Verfügung, bitte mode=<regex> benutzen.
all
Alle Termine (vergangene, aktuelle und zukünftige)
next
Alle Termine, die noch nicht beendet sind. Bei Serienterminen der erste Termin. Benutzer-/Monitorfreundliche Textausgabe
Die Filter mode=<regex> und uid=<regex> sollten den Filtern
<mode> und <uid> vorgezogen werden.
Der optionale Parameter <max> schränkt die Anzahl der zurückgegebenen Zeilen ein.
Bitte beachte die Attribute hideOlderThan und
hideLaterThan für die Seletion von Terminen in einem bestimmten Zeitfenster.
Bitte berücksichtige, dass das globale ±400 Tageslimit gilt .
Beispiele: get MyCalendar text next get MyCalendar summary uid:435kjhk435googlecom 1 get MyCalendar summary 435kjhk435googlecom 1 get MyCalendar full all get MyCalendar text mode=alarm|start get MyCalendar text uid=.*6286.*
get <name> find <regexp>
Gibt Zeile für Zeile die UIDs aller Termine deren Zusammenfassungen durch den regulären Ausdruck <regex> beschrieben werden.
<regexp>.
get <name> vcalendar
Gibt den Kalender ICal-Format, so wie er von der Quelle gelesen wurde, zurück.
get <name> vevents
Gibt eine Liste aller VEVENT-Einträge des Kalenders <name>, angereichert um Ausgaben für die Fehlersuche, zurück.
Es werden nur Eigenschaften angezeigt, die während der Programmausführung beibehalten wurden. Es wird sowohl die Liste
der Termine, die von jedem VEVENT-Eintrag erzeugt wurden, als auch die Liste der ausgelassenen Termine angezeigt.
Attributes
update sync|async|none
Wenn dieses Attribut nicht gesetzt ist oder wenn es auf sync gesetzt ist,
findet die Verarbeitung des Kalenders im Vordergrund statt. Große Kalender werden FHEM
auf langsamen Systemen blockieren. Wenn das Attribut auf async gesetzt ist,
findet die Verarbeitung im Hintergrund statt, und FHEM wird während der Verarbeitung
nicht blockieren. Wenn dieses Attribut auf none gesetzt ist, wird der
Kalender überhaupt nicht aktualisiert.
removevcalendar 0|1
Wenn dieses Attribut auf 1 gesetzt ist, wird der vCalendar nach der Verarbeitung verworfen,
gleichzeitig reduziert sich der Speicherverbrauch des Moduls.
Ein Abruf über get <name> vcalendar ist dann nicht mehr möglich.
hideOlderThan <timespec> hideLaterThan <timespec>
Dieses Attribut grenzt die Liste der durch get <name> full|debug|text|summary|location|alarm|start|end ... gezeigten Termine ein.
Die Zeit wird relativ zur aktuellen Zeit t angegeben.
Wenn <hideOlderThan> gesetzt ist, werden Termine, die vor <t-hideOlderThan> enden, ingnoriert.
Wenn <hideLaterThan> gesetzt ist, werden Termine, die nach <t+hideLaterThan> anfangen, ignoriert.
Bitte beachten, dass eine Aktion, die durch einen Wechsel in den Modus "end" ausgelöst wird, nicht auf den Termin
zugreifen kann, wenn hideOlderThan 0 ist, weil der Termin dann schon versteckt ist. Besser hideOlderThan auf 10 setzen.
<timespec> muss einem der folgenden Formate entsprechen:
Format
Beschreibung
Beispiel
SSS
Sekunden
3600
SSSs
Sekunden
3600s
HH:MM
Stunden:Minuten
02:30
HH:MM:SS
Stunden:Minuten:Sekunden
00:01:30
D:HH:MM:SS
Tage:Stunden:Minuten:Sekunden
122:10:00:00
DDDd
Tage
100d
cutoffOlderThan <timespec>
Dieses Attribut schneidet alle Termine weg, die eine Zeitspanne cutoffOlderThan
vor der letzten Aktualisierung des Kalenders endeten. Der Zweck dieses Attributs ist es Speicher zu
sparen. Auf solche Termine kann gar nicht mehr aus FHEM heraus zugegriffen
werden. Serientermine ohne Ende (UNTIL) und
Termine ohne Endezeitpunkt (DTEND) werden nicht weggeschnitten.
onCreateEvent <perl-code>
Dieses Attribut führt ein Perlprogramm <perl-code> für jeden erzeugten Termin aus.
Weitere Informationen unter Plug-ins im Text.
SSLVerify
Dieses Attribut setzt die Art der Überprüfung des Zertifikats des Partners
bei mit SSL gesicherten Verbindungen. Entweder auf 0 setzen für
SSL_VERIFY_NONE (keine Überprüfung des Zertifikats) oder auf 1 für
SSL_VERIFY_PEER (Überprüfung des Zertifikats). Die Überprüfung auszuschalten
ist nützlich für lokale Kalenderinstallationen(e.g. OwnCloud, NextCloud)
ohne gütiges SSL-Zertifikat.
ignoreCancelled
Wenn dieses Attribut auf 1 gesetzt ist, werden Termine im Status "CANCELLED" ignoriert.
Dieses Attribut auf 1 setzen, falls Termine in einer
Serie zurückgegeben werden, die gelöscht sind.
quirks <values>
Parameter für spezielle Situationen. <values> ist
eine mit Kommas getrennte Liste der folgenden Schlüsselwörter:
ignoreDtStamp: wenn gesetzt, dann zeigt
ein verändertes DTSTAMP Attribut eines Termins nicht an, dass
der Termin verändert wurde.
Ein Kalender ist eine Menge von Terminen. Ein Termin hat eine Zusammenfassung (normalerweise der Titel, welcher im Quell-Kalender angezeigt wird), eine Startzeit, eine Endzeit und keine, eine oder mehrere Alarmzeiten. Die Termine werden
aus dem Quellkalender ermittelt, welcher über die URL angegeben wird. Sollten mehrere Alarmzeiten für einen Termin existieren, wird nur der früheste Alarmzeitpunkt beibehalten. Wiederkehrende Kalendereinträge werden in einem gewissen Umfang unterstützt:
FREQ INTERVAL UNTIL COUNT werden ausgewertet, BYMONTHDAY BYMONTH WKST
werden erkannt aber nicht ausgewertet. BYDAY wird für wöchentliche und monatliche Termine
korrekt behandelt. Das Modul wird es sehr wahrscheinlich falsch machen, wenn Du wiederkehrende Termine mit unerkannten oder nicht ausgewerteten Schlüsselwörtern hast.
Termine werden erzeugt, wenn FHEM gestartet wird oder der betreffende Eintrag im Quell-Kalender verändert
wurde oder der Kalender mit get <name> reload neu geladen wird. Es werden nur Termine
innerhalb ±400 Tage um die Erzeugungs des Termins herum erzeugt. Ziehe in Betracht, den Kalender von Zeit zu Zeit
neu zu laden, um zu vermeiden, dass die künftigen Termine ausgehen. Du kann so etwas wie define reloadCalendar at +*240:00:00 set MyCalendar reload dafür verwenden.
Manche dummen Kalender benutzen LAST-MODIFIED nicht. Das kann dazu führen, dass Veränderungen im
Quell-Kalender unbemerkt bleiben. Lade den Kalender neu, wenn Du dieses Problem hast.
Ein Termin wird durch seine UID identifiziert. Die UID wird vom Quellkalender bezogen. Um das Leben leichter zu machen, werden alle nicht-alphanumerischen Zeichen automatisch aus der UID entfernt.
Ein Termin kann sich in einem der folgenden Modi befinden:
upcoming
Weder die Alarmzeit noch die Startzeit des Kalendereintrags ist erreicht.
alarm
Die Alarmzeit ist überschritten, aber die Startzeit des Kalender-Ereignisses ist noch nicht erreicht.
start
Die Startzeit ist überschritten, aber die Ende-Zeit des Kalender-Ereignisses ist noch nicht erreicht.
end
Die Ende-Zeit des Kalender-Ereignisses wurde überschritten.
Ein Kalender-Ereignis wechselt umgehend von einem Modus zum Anderen, wenn die Zeit für eine Änderung erreicht wurde. Dies wird dadurch erreicht, dass auf die früheste zukünftige Zeit aller Alarme, Start- oder Endezeiten aller Kalender-Ereignisse gewartet wird.
Ein Kalender-Device hat verschiedene Readings. Mit Ausnahme von calname stellt jedes Reading eine Semikolon-getrennte Liste von UIDs von Kalender-Ereignisse dar, welche bestimmte Zustände haben:
calname
Name des Kalenders
modeAlarm
Ereignisse im Alarm-Modus
modeAlarmOrStart
Ereignisse im Alarm- oder Startmodus
modeAlarmed
Ereignisse, welche gerade in den Alarmmodus gewechselt haben
modeChanged
Ereignisse, welche gerade in irgendeiner Form ihren Modus gewechselt haben
modeEnd
Ereignisse im Endemodus
modeEnded
Ereignisse, welche gerade vom Start- in den Endemodus gewechselt haben
modeStart
Ereignisse im Startmodus
modeStarted
Ereignisse, welche gerade in den Startmodus gewechselt haben
modeUpcoming
Ereignisse im zukünftigen Modus
Für Serientermine werden mehrere Termine mit der selben UID erzeugt. In diesem Fall
wird die UID nur im interessantesten gelesenen Modus-Reading angezeigt.
Der interessanteste Modus ist der erste zutreffende Modus aus der Liste der Modi start, alarm, upcoming, end.
Die UID eines Serientermins wird nicht angezeigt, solange sich der Termin im Modus: modeEnd oder modeEnded befindet
und die Serie nicht beendet ist. Die UID befindet sich in einem der anderen mode... Readings.
Hieraus ergibts sich, das FHEM-Events nicht auf einem mode... Reading basieren sollten.
Weiter unten im Text gibt es hierzu eine Empfehlung.
Events
Wenn der Kalendar neu geladen oder aktualisiert oder eine Alarm-, Start- oder Endezeit
erreicht wurde, wird ein FHEM-Event erzeugt:
triggered
Man kann sich darauf verlassen, dass alle Readings des Kalenders in einem konsistenten und aktuellen
Zustand befinden, wenn dieses Event empfangen wird.
Wenn ein Termin geändert wurde, werden zwei FHEM-Events erzeugt:
changed: UID <mode> <mode>: UID
<mode> ist der aktuelle Modus des Termins nach der änderung. Bitte beachten: Im FHEM-Event befindet sich ein Doppelpunkt gefolgt von einem Leerzeichen.
FHEM-Events sollten nur auf den vorgenannten Events basieren und nicht auf FHEM-Events, die durch ändern eines mode... Readings ausgelöst werden.
Plug-ins
Experimentell, bitte mit Vorsicht nutzen.
Ein Plug-In ist ein kleines Perl-Programm, dass Termine nebenher verändern kann.
Das Perl-Programm arbeitet mit der Hash-Referenz $e.
Die wichtigsten Elemente sind:
code
description
$e->{start}
Startzeit des Termins, in Sekunden seit 1.1.1970
$e->{end}
Endezeit des Termins, in Sekunden seit 1.1.1970
$e->{alarm}
Alarmzeit des Termins, in Sekunden seit 1.1.1970
$e->{summary}
die Zusammenfassung (Betreff, Titel) des Termins
$e->{location}
Der Ort des Termins
Um für alle Termine mit dem Text "Tonne" in der Zusammenfassung die Alarmzeit zu ergänzen / zu ändern,
kann folgendes Plug-In benutzt werden:
Das doppelte Semikolon maskiert das Semikolon. Perl specials können nicht genutzt werden.
Anwendungsbeispiele
Alle Termine inkl. Details anzeigen
get MyCalendar full all
2767324dsfretfvds7dsfn3e4dsa234r234sdfds6bh874googlecom known alarm 31.05.2012 17:00:00 07.06.2012 16:30:00-07.06.2012 18:00:00 Erna for coffee
992hydf4y44awer5466lhfdsrgl7tin6b6mckf8glmhui4googlecom known upcoming 08.06.2012 00:00:00-09.06.2012 00:00:00 Vacation
Zeige Termine in Deinem Bilderrahmen
Füge eine Zeile in die layout description ein, um Termine im Alarm- oder Startmodus anzuzeigen:
text 20 60 { fhem("get MyCalendar text next 2") }
Dies kann dann z.B. so aussehen:
07.06.12 16:30 Erna zum Kaffee
08.06.12 00:00 Urlaub
Schalte das Licht ein, wenn Erna kommt
Finde zuerst die UID des Termins:
get MyCalendar find .*Erna.*
2767324dsfretfvds7dsfn3e4dsa234r234sdfds6bh874googlecom
Definiere dann ein notify: (Der Punkt nach dem zweiten Doppelpunkt steht für ein Leerzeichen)
define ErnaComes notify MyCalendar:start:.2767324dsfretfvds7dsfn3e4dsa234r234sdfds6bh874googlecom.* set MyLight on
Stell Dir einen Kalender vor, dessen Zusammenfassungen (Betreff, Titel) die Namen von Devices in Deiner fhem-Installation sind.
Du willst nun die entsprechenden Devices an- und ausschalten, wenn das Kalender-Ereignis beginnt bzw. endet.
define SwitchActorOn notify MyCalendar:start:.* {}
Dann auf DEF klicken und im DEF-Editor folgendes zwischen die beiden geschweiften Klammern {} eingeben:
my $reading="$EVTPART0";
my $uid= "$EVTPART1";
my $actor= fhem("get MyCalendar summary $uid");
if(defined $actor) {
fhem("set $actor on")
}
define SwitchActorOff notify MyCalendar:end:.* {}
Dann auf DEF klicken und im DEF-Editor folgendes zwischen die beiden geschweiften Klammern {} eingeben:
my $reading="$EVTPART0";
my $uid= "$EVTPART1";
my $actor= fhem("get MyCalendar summary $uid");
if(defined $actor) {
fhem("set $actor off")
}
Auch hier kann ein Logging aufgesetzt werden:
define LogActors notify MyCalendar:(start|end).* {}
Dann auf DEF klicken und im DEF-Editor folgendes zwischen die beiden geschweiften Klammern {} eingeben:
my $reading= "$EVTPART0";
my $uid= "$EVTPART1";
my $actor= fhem("get MyCalendar summary $uid");
Log 3 $NAME, 1, "Actor: $actor, Reading $reading";
Eingebettetes HTML
Das Modul stellt eine zusätzliche Funktion CalendarAsHtml(<name>,<options>) bereit.
Diese gibt den HTML-Kode für eine Liste von Terminen zurück. <name> ist der Name des
Kalendar-Device und <options> ist das, was Du hinter get <name> text ...
schreiben würdest.
Dieses Modul integriert den DFPlayerMini - FN-M16P Embedded MP3 Audio Modul in fhem.
Siehe auch das Datenblatt des Moduls für technische Details.
Der MP3-Spieler kann direkt mit einer seriellen Schnittstelle verbunden werden oder per Ethernet/WiFi mittels einer Hardware die eine transparente
serielle Übertragung per TCP/IP zur Verfügung stellt, z. B. ESPEasy Ser2Net.
Es ist auch möglich ein anderes fhem Device für den Datentransport zu nutzen, z. B. MYSENSORS.
Das Modul unterstützt alle Kommandos des DFPlayers und bietet weitere Funktionen wie
Integration von Text2Speech um einfach Sprach-MP3-Dateien herunterzuladen
einfachere Kontrolle darüber welche Dateien abgespielt werden sollen
Verwaltung aller Dateien die der DFPlayer abspielen kann
Wenn der Player direkt angeschlossen ist wird per <devicename> der Name der seriellen Schnittstelle angegeben
an die der DFPlayer Mini angeschlossen ist.
Der Name der seriellen Schnittstelle hängt von der Betriebssystemdistribution ab, unter Linux ist
das cdc_acm kernel Modul verantwortlich, und normalerweise wird ein
/dev/ttyACM0 oder /dev/ttyUSB0 Device angelegt.
Man kann auch eine Baudrate angeben in dem dem im Devicenamen nach dem @ Zeichen die Baudrate angegeben wird, z. B.
/dev/ttyACM0@9600
Das ist auch die standard Baudrate und sollte normalerweise nicht geändert werden da diese Baudrate beim
DFPlayer fest eingestellt ist.
Wenn als Baudrate "directio" angegeben wird (z. B.: /dev/ttyACM0@directio) dann wird das
perl Modul Device::SerialPort nicht benötigt und fhem öffnet das Device
mit simple file io. Das kann funktionieren wenn das Betriebssystem sinnvolle Voreinstellungen für die Parameter der
seriellen Schnittstelle verwendet, z. B. einige Linux Distributionen und OSX.
Wenn die Verbindung über TCP/IP statt findet spezifiziert <hostname:port> die IP Adresse und den Port des Device das
die transparente serielle Verbindung zum DFP bereit stellt, e.g. 192.168.2.28:23
Für andere Arten des Datentransports kann none als Device angegeben werden.
In diesem Fall sollte das Attribute sendCmd angegeben werden. Antworten vom DFPlayer sollten per set response
zurück an dieses Module übergeben werden.
Attribute
TTSDev
Der Name eines Text2Speech Devices. Dieses muss bereits vorher mit none als <alsadevice> als Server Device angelegt worden sein. Es sollte ausschließlich
für dieses Modul zur Verfügung stehen und nicht für andere Zwecke verwendet werden.
requestAck
Der DFPlayer kann fü jedes Kommando eine Bestätigung senden. Da das zu erhöhter Kommunikation führt kann es über dieses
Attribut abgeschaltet werden. Wenn es eingeschaltet ist wird das nächste Kommando erst dann zum DFPlayer wenn das vorherige bestätigt wurde.
Das stellt sicher, dass kein Kommando verloren geht selbst wenn der DFPlayer ausgelastet oder im Schlafzustand ist.
sendCmd
Ein fhem Kommando das verwendet wird um ein durch diese Modul erzeugtes DFPlayer Kommando an die DFPlayer Hardware zu senden.
Wenn dieses Attribut gesetzt ist wird kein andere Art der Kommunikation mit dem DFPlayer verwendet.
Es kann verwendet werden um andere fhem Devices für den Datentransport zu nutzen.
Um z. B. mittels eines MySensor Devices mit dem Namen mys_dfp zu kommunizieren kann
attr <dfp> sendCmd set mys_dfp value11 $msg
verwendet werden. Auf dem MySensors Devices muss eine passende Firmware installiert sein.
Dieses Modul wird dann ein Kommando an den DFP senden in dem $msg mit dem tatsächlichen Kommando <payload> ersetzt wird und dann das fhem Kommando
set mys_dfp value11 <payload>
ausgeführt wird.
Siehe set response für einen Weg um die Antwort des DFPlayers zurück an dieses Modul zu senden.
uploadPath
Der DFPlayer spielt Dateien von einer an ihn angeschlossenen SD-Karte oder USB-Stick ab. Die mp3/wav Dateien müssen vom Anwender auf dieses Speichermedium
kopiert werden.
Der Player erwartet die Dateien mit speziellen Namen und in spezifischen Verzeichnissen, im Datenblatt stehen die Einzelheiten.
Das Kopieren der Dateien kann auch von diesem Modul durchgeführt werden. Dazu muss das Speichermedium mit dem Rechner verbunden sein auf dem
fhem ausgeführt wird. Es muss dazu in dem Pfad gemounted sein der durch diese Attribut angegeben ist.
Siehe auch uploadTTS, uploadTTScache und readFiles Kommandos wo es verwendet wird.
rememberMissingTTS
Wenn gesetzt erzeugen tts Kommandos ohne eine passende Datei ein spezielles Reading. Siehe set tts und set uploadTTScache.
keepAliveInterval
Gibt das Intervall in Sekunden zwischen KeepAlive Kommandos an den DFP an. Das kann verwendet werden um automatisch zu prüfen, ob der DFP noch
funktioniert und erreichbar ist.
Nach drei fehlenden Antwortden wird der Status auf disconnected gesetzt.
Interval 0 schaltet die Funktion ab, die Voreinstellung ist 60 Sekunden.
Get
Alle Abfrage Kommandos die vom DFP unterstützt werden haben ein zugehöriges get Kommando:
get
DFP cmd byte
Parameter
Kommentar
storage
0x3F
status
0x42
volume
0x43
equalizer
0x44
noTracksRootUsb
0x47
noTracksRootSd
0x48
currentTrackUsb
0x4B
currentTrackSd
0x4C
noTracksInFolder
0x4E
Verzeichnisnummer
1-99
noFolders
0x4F
Set
Alle Kommandos die vom DFP angeboten werden haben ein zugehöriges set Kommando:
set
DFP cmd byte
Parameter
Kommentar
next
0x01
-
prev
0x02
-
trackNum
0x03
Nummer der Datei im Wurzelverzeichnis
zwischen 1 und 3000 (es wird die Reihenfolge verwendet in der die Dateien angelegt wurden!)
volumeUp
0x04
-
volumeDown
0x05
-
volumeStraight
0x06
Lautstärke
0-30
equalizer
0x07
Name des Equalizermodus
Normal, Pop, Rock, Jazz, Classic, Bass
repeatSingle
0x08
-
storage
0x09
SD oder USB
sleep
0x0A
-
vom DFP nicht unterstützt, danach muss er stromlos gemacht werden um wieder zu funktionieren
wake
0x0B
-
vom DFP nicht unterstützt, aber wahrscheinlich vom FN-M22P
reset
0x0C
-
play
0x0D
-
spielt die aktuelle Datei
play
0x0F, 0x12, 0x13, 0x14
Eine durch Leerzeichen getrennte Liste von Dateien die nacheinander abgespielt werden
Das korrekte DFP Kommando wird automatisch ermittelt.
Dateien können über den Namen ihres Readings, den Readingwert oder Verzeichnisname/Dateinummer angegeben werden. Siehe set readFiles
pause
0x0E
-
amplification
0x10
Verstärkungsstufe
0-31
repeatRoot
0x11
on, off
MP3TrackNum
0x12
Dateinummer
1-3000, aus dem Verzeichnis MP3
intercutAdvert
0x13
Dateinummer
1-3000, aus dem Verzeichnis ADVERT
folderTrackNum
0x0F
Verzeichnisnummer Dateinummer
Verzeichnis: 1-99, Datei: 1-255
folderTrackNum3000
0x14
Verzeichnisnummer Dateinummer
Verzeichnis: 1-15, Datei: 1-3000
stopAdvert
0x15
-
stop
0x16
-
repeatFolder
0x17
Verzeichnisnummer
1-99
shuffle
0x18
-
repeatCurrentTrack
0x19
on, off
DAC
0x1A
on, off
Alle anderen set Kommandos werden nicht an den DFPlayer geschickt sondern bieten Komfortfunktionen:
close
raw sendet ein in Hexadezimal kodiertes Kommando direkt und ohne Prüfung an den DFP
reopen
readFiles
ließt alle Dateien auf dem Speichermedium das in uploadPath gemounted ist. Wenn diese Dateien durch den DFP addressiert werden
können (d.h. sie entprechen den Namenskonventionen) so wird ein Reading dafür angelegt.
Der Readingname ist File_<Verzeichnis>/<Dateinummer>.
Das Verzeichnis kann ., MP3, ADVERT oder 00 bis 99 sein.
Der Readingwert ist der Dateiname ohne die Dateinummer und das Suffix.
Beispiel:
Für die Datei MP3/0003SongTitle.mp3 wird das Reading File_MP3/0003 mit dem Wert SongTitle angelegt.
Das set <dfp> play Kommando kann diese Readings verwenden, d.h. es ist möglich entweder set <dfp> play File_MP3/0003,
set <dfp> play MP3/3 oder set <dfp> play SongTitle zu verwenden, um die selbe Datei abzuspielen.
uploadTTS <destination path> <Text der in Sprache umgewandelt werden soll>
Der angegebene Text wird in eine MP3 Sprachdatei umgewandelt. Dafür wird das Text2Speech Device verwendet das mit attr TTSDev angegebene wurde.
Die MP3 Datei wird dann in das angegebene Zielverzeichnis unterhalb von uploadPath kopiert.
Beispiele: set <dfp> 01/0001Test Dies ist ein Test set <dfp> ADVERT/0099Hinweis Achtung
uploadTTScache
Kopiert alle Dateien aus dem cache Verzeichnis des TTSDev in uploadPath. Es wird zuerst in das Verzeichnis 01 kopiert.
Nach 3000 Dateien wird das nächste Verzeichnis verwendet. Der MD5 Hash wird als Dateiname verwendet. Zum Schluss wird set readFiles ausgeführt.
Das Kommando set tts verwendet die dadurch angelegten Readings.
tts <Text der in Sprache übersetzt werden soll> TTSDev wird verwendet um den MD5 Hash von <Text der in Sprache übersetzt werden soll> zu berechnen. Anschließend wird versucht die Datei mit diesem Hash abzuspielen.
Wenn kein Reading für diesen Hash existiert und das wenn das Attribute rememberMissingTTS gesetzt ist dann wird ein neues Reading Missing_MD5<md5>
mit dem Wert <Text der in Sprache übersetzt werden soll> angelegt.
Voraussetzungen:
Das funktioniert nur, wenn vorher der zu übersetzende Text bereits einmal übersetzt wurde und die daraus resultierende MP3 Datei im cache Verzeichnis
des TTSDev gespeichert wurde,
Die Dateien aus dem Cache müssen auf das Speichermedium mittels set uploadTTScache kopiert werden
uploadNumbers Zielverzeichnis
erzeugt MP3 Dateien für alle Sprachschnipsel die benötigt werden um beliebige deutsche Zahlen zu sprechen.
Beispiel: set <dfp> uploadNumbers 99
erzeugt die benötigten 31 MP3 Dateien im Verzeichnis 99.
sayNumber Zahl
übersetzt eine Zahl in Sprache und spielt die benötigten Dateien ab. Setzt voraus, dass vorher uploadNumbers verwendet wurde um die Sprachdateien zu erzeugen.
Beispiel:
sayNumber -34.7
entspricht
play minus vier und dreissig komma sieben
response 10 Byte Antwortnachricht vom DFP hexadezimal kodiert
DLNARenderer
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: DLNARenderer
DOIF (ausgeprochen: du if, übersetzt: tue wenn) ist ein universelles Modul mit UI, welches ereignis- und zeitgesteuert in Abhängigkeit definierter Bedingungen Anweisungen ausführt.
Mit diesem Modul ist es möglich, einfache wie auch komplexere Automatisierungsvorgänge zu definieren oder in Perl zu programmieren.
Ereignisse, Zeittrigger, Readings oder Status werden durch DOIF-spezifische Angaben in eckigen Klammern angegeben. Sie führen zur Triggerung des Moduls und damit zur Auswertung und Ausführung der definierten Anweisungen.
Das Modul verfügt über zwei Modi: FHEM-Modus und Perl-Modus. Der Modus eines definierten DOIF-Devices wird automatisch aufgrund der Definition vom Modul erkannt
(FHEM-Modus beginnt mit einer runden Klammer auf).
Der Perl-Modus kommt weitgehend ohne Attribute aus, er ist aufgrund seiner Flexibilität,
der Möglichkeit strukturiert zu programmieren und seiner hohen Performance insb. bei umfangreichen Automatisierungsaufgaben dem FHEM-Modus vorzuziehen. Hier geht´s zum Perl-Modus.
Beide Modi sind innerhalb eines DOIF-Devices nicht miteinander kombinierbar.
Syntax FHEM-Modus:
define <name> DOIF (<Bedingung>) (<Befehle>) DOELSEIF (<Bedingung>) (<Befehle>) DOELSEIF ... DOELSE (<Befehle>)
Die Angaben werden immer von links nach rechts abgearbeitet. Logische Abfragen werden in DOIF/DOELSEIF-Bedingungen vornehmlich mit Hilfe von and/or-Operatoren erstellt.
Zu beachten ist, dass nur die Bedingungen überprüft werden,
die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten.
Kommt ein Device in mehreren Bedingungen vor, so wird immer nur ein Kommando ausgeführt, und zwar das erste,
für das die dazugehörige Bedingung in der abgearbeiteten Reihenfolge wahr ist.
Das DOIF-Modul arbeitet mit Zuständen. Jeder Ausführungszweig DOIF/DOELSEIF..DOELSEIF/DOELSE stellt einen eigenen Zustand dar (cmd_1, cmd_2, usw.).
Das Modul merkt sich den zuletzt ausgeführten Ausführungszweig und wiederholt diesen standardmäßig nicht.
Ein Ausführungszweig wird erst dann wieder ausgeführt, wenn zwischenzeitlich ein anderer Ausführungszweig ausgeführt wurde, also ein Statuswechsel des DOIF-Moduls stattgefunden hat.
Dieses Verhalten ist sinnvoll, um zu verhindern, dass zyklisch sendende Sensoren (Temperatur, Feuchtigkeit, Helligkeit, usw.) zu ständiger Wiederholung des selben Befehls oder Befehlsabfolge führen.
Das Verhalten des Moduls im FHEM-Modus kann durch diverse Attribute verändert werden. Im FHEM-Modus wird maximal nur ein Zweig pro Ereignis- oder Zeit-Trigger ausgeführt, es gibt nur einen Wait-Timer.
Da die Definitionen im Laufe der Zeit recht umfangreich werden können, sollten die gleichen Regeln, wie auch beim Programmieren in höheren Programmiersprachen, beachtet werden.
Dazu zählen: das Einrücken von Befehlen, Zeilenumbrüche sowie das Kommentieren seiner Definition, damit man auch später noch die Funktionalität seines Moduls nachvollziehen kann.
Das Modul unterstützt dazu Einrückungen, Zeilenumbrüche an beliebiger Stelle und Kommentierungen beginnend mit ## bis zum Ende der Zeile.
Die Formatierungen lassen sich im DEF-Editor der Web-Oberfläche vornehmen.
So könnte eine Definition aussehen:
define di_Modul DOIF ([Switch1] eq "on" and [Switch2] eq "on")
## wenn Schalter 1 und Schalter 2 on ist
(set lamp on)
## wird Lampe eingeschaltet
DOELSE
## im sonst-Fall, also wenn einer der Schalter off ist
Vergleichende Abfragen werden in der Bedingung, mit Perl-Operatoren ==, !=, <, <=, >, >= bei Zahlen und mit eq, ne, lt, le, gt, ge, =~, !~ bei Zeichenketten angegeben.
Logische Verknüpfungen sollten zwecks Übersichtlichkeit mit and bzw. or vorgenommen werden.
Die Reihenfolge der Auswertung wird, wie in höheren Sprachen üblich, durch runde Klammern beeinflusst.
Status werden mit [<devicename>], Readings mit [<devicename>:<readingname>],
Internals mit [<devicename>:&<internal>] angegeben.
Anwendungsbeispiel: Einfache Ereignissteuerung, "remotecontrol" ist hier ein Device, es wird in eckigen Klammern angegeben. Ausgewertet wird der Status des Devices - nicht das Event.
Das Modul wird getriggert, sobald das angegebene Device hier "remotecontrol" ein Event erzeugt. Das geschieht, wenn irgendein Reading oder der Status von "remotecontrol" aktualisiert wird.
Ausgewertet wird hier der Zustand des Status von remotecontrol nicht das Event selbst. Im FHEM-Modus arbeitet das Modul mit Zuständen, indem es den eigenen Status auswertet.
Die Ausführung erfolgt standardmäßig nur ein mal, bis ein anderer DOIF-Zweig und damit eine Ändernung des eigenen Status erfolgt.
Das bedeutet, dass ein mehrmaliges Drücken der Fernbedienung auf "on" nur einmal "set garage on" ausführt. Die nächste mögliche Ausführung ist "set garage off", wenn Fernbedienung "off" liefert.
Wünscht man eine Ausführung des gleichen Befehls mehrfach nacheinander bei jedem Trigger, unabhängig davon welchen Status das DOIF-Modul hat,
weil z. B. Garage nicht nur über die Fernbedienung geschaltet wird, dann muss man das per "do always"-Attribut angeben:
attr di_garage do always
Bei der Angabe von zyklisch sendenden Sensoren (Temperatur, Feuchtigkeit, Helligkeit usw.) wie z. B.:
ist die Nutzung des Attributes do always nicht sinnvoll, da das entsprechende Kommando hier: "set heating on" jedes mal ausgeführt wird,
wenn der Temperatursensor in regelmäßigen Abständen eine Temperatur unter 20 Grad sendet.
Ohne do always wird hier dagegen erst wieder "set heating on" ausgeführt, wenn der Zustand des Moduls auf "cmd_2" gewechselt hat, also die Temperatur zwischendurch größer oder gleich 20 Grad war.
Soll bei Nicht-Erfüllung aller Bedingungen ein Zustandswechsel erfolgen, so muss man ein DOELSE am Ende der Definition anhängen. Ausnahme ist eine einzige Bedingung ohne do always, wie im obigen Beispiel,
hierbei wird intern ein virtuelles DOELSE angenommen, um bei Nicht-Erfüllung der Bedingung einen Zustandswechsel in cmd_2 zu provozieren, da sonst nur ein einziges Mal geschaltet werden könnte, da das Modul aus dem cmd_1-Zustand nicht mehr herauskäme.
Im Perl-Modus arbeitet das DOIF-Modul im Gegensatz zum FHEM-Modus ohne den eigenen Status auszuwerten. Es kommt immer zur Auswertung des definierten Block, wenn er getriggert wird.
Diese Verhalten entspricht dem Verhalten mit dem Attribut do always im FHEM-Modus. Damit bei zyklisch sendenden Sensoren nicht zum ständigen Schalten kommt, muss das Schalten unterbunden werden. Das obige Beispiel lässt sich, wie folgt definieren:
Abfragen nach Vorkommen eines Wortes innerhalb einer Zeichenkette können mit Hilfe des Perl-Operators =~ vorgenommen werden.
Anwendungsbeispiel: Garage soll beim langen Tastendruck öffnen, hier: wenn das Wort "Long" im Status vorkommt (bei HM-Komponenten stehen im Status noch weitere Informationen).
Weitere Möglichkeiten bei der Nutzung des Perl-Operators: =~, insbesondere in Verbindung mit regulären Ausdrücken, können in der Perl-Dokumentation nachgeschlagen werden.
Eine Alternative zur Auswertung von Status oder Readings ist das Auswerten von Ereignissen (Events) mit Hilfe von regulären Ausdrücken. Der Suchstring wird als regulärer Ausdruck in Anführungszeichen angegeben.
Die Syntax lautet: [<devicename>:"<regex>"]
Anwendungsbeispiel: wie oben, jedoch wird hier nur das Ereignis (welches im Eventmonitor erscheint) ausgewertet und nicht der Status von "remotecontrol" wie im vorherigen Beispiel
In diesem Beispiel wird nach dem Vorkommen von "on" innerhalb des Events gesucht.
Falls "on" gefunden wird, wird der Ausdruck wahr und der DOIF-Fall wird ausgeführt, ansonsten wird der DOELSEIF-Fall entsprechend ausgewertet.
Die Auswertung von reinen Ereignissen bietet sich dann an, wenn ein Modul keinen Status oder Readings benutzt, die man abfragen kann, wie z. B. beim Modul "sequence".
Die Angabe von regulären Ausdrücken kann recht komplex werden und würde die Aufzählung aller Möglichkeiten an dieser Stelle den Rahmen sprengen.
Weitere Informationen zu regulären Ausdrücken sollten in der Perl-Dokumentation nachgeschlagen werden.
Die logische Verknüpfung "and" mehrerer Ereignisse ist nicht sinnvoll, da zu einem Zeitpunkt immer nur ein Ereignis zutreffen kann.
Die alte Syntax [<devicename>:?<regex>] wird aus Kompatibilitätsgründen noch unterstützt, sollte aber nicht mehr benutzt werden.
Sollen Events verschiedener Devices ausgewertet werden, so lässt sich folgende Syntax anwenden: ["<device regex>:<event regex>"]
Im Gegensatz zum notify werden vom DOIF-Modul selbst keine Regex-Sonderzeichen hinzugefügt. Insb. wird kein ^ für Anfang vorangestellt, bzw. kein $ für Ende angehängt.
Beispiele für Regex-Angaben:
["FS"] triggert auf alle Devices, die "FS" im Namen beinhalten
["^FS"] triggert auf alle Devices, die mit "FS" im Namen anfangen
["FS:temp"] triggert auf alle Devices, die "FS" im Namen und "temp" im Event beinhalten
([":^temp"]) triggert auf beliebige Devices, die im Event mit "temp" beginnen
(["^FS$:^temp$"] triggert auf Devices, die genau "FS" heißen und im Event genau "temp" vorkommt
[""] triggert auf alles
In der Bedingung und im Ausführungsteil werden die Schlüsselwörter $SELF durch den eigenen Namen des DOIF-Moduls, $DEVICE durch das aktuelle Device, $EVENT durch die passende Eventzeile, $EVENTS kommagetrennt durch alle Eventzeilen des Triggers ersetzt.
Entsprechend können Perl-Variablen in der DOIF-Bedingung ausgewertet werden, sie werden in Kleinbuchstaben geschrieben. Sie lauten: $device, $event, $events
Anwendungsbeispiele:
"Fenster offen"-Meldung
define di_window_open (["^window_:open"]) (set Pushover msg 'alarm' 'open windows $DEVICE' '' 2 'persistent' 30 3600)
attr di_window_open do always
Hier werden alle Fenster, die mit dem Device-Namen "window_" beginnen auf "open" im Event überwacht.
Allgemeine Ereignistrigger können ebenfalls so definiert werden, dass sie nicht nur wahr zum Triggerzeitpunkt und sonst nicht wahr sind,
sondern Inhalte des Ereignisses zurückliefern. Initiiert wird dieses Verhalten durch die Angabe eines Default-Wertes.
Syntax:
["regex for trigger",<default value>]
Anwendungsbeispiel:
define di_warning DOIF ([":^temperature",0]< 0) (set pushmsg danger of frost $DEVICE) attr di_warning do always
Damit wird auf alle Devices getriggert, die mit "temperature" im Event beginnen. Zurückgeliefert wird der Wert, der im Event hinter "temperature: " steht.
Wenn kein Event stattfindet, wird der Defaultwert, hier 0, zurückgeliefert.
Ebenfalls kann ein Ereignisfilter mit Ausgabeformatierung angegeben werden.
Syntax:
["regex for trigger":"<regex filter>":<output>,<default value>]
Regex-Filter- und Output-Parameter sind optional. Der Default-Wert ist verpflichtend.
Wenn kein Filter, wie obigen Beispiel, angegeben wird, so wird intern folgende Regex vorbelegt: "[^\:]*: (.*)" Damit wird der Wert hinter der Readingangabe genommen.
Durch eigene Regex-Filter-Angaben kann man beliebige Teile des Events herausfiltern, ggf. über Output formatieren und in der Bedingung entsprechend auswerten,
ohne auf Readings zurückgreifen zu müssen.
Filtern nach Ausdrücken mit Ausgabeformatierungback
d - Der Buchstabe "d" ist ein Synonym für das Filtern nach Dezimalzahlen, es entspricht intern dem regulären Ausdruck "(-?\d+(\.\d+)?)". Ebenfalls lässt sich eine Dezimalzahl auf eine bestimmte Anzahl von Nachkommastellen runden. Dazu wird an das "d" eine Ziffer angehängt. Mit der Angabe d0 wird die Zahl auf ganze Zahlen gerundet.
<Regex>- Der reguläre Ausdruck muss in Anführungszeichen angegeben werden. Dabei werden Perl-Mechanismen zu regulären Ausdrücken mit Speicherung der Ergebnisse in Variablen $1, $2 usw. genutzt.
<Output> - ist ein optionaler Parameter, hier können die in den Variablen $1, $2, usw. aus der Regex-Suche gespeicherten Informationen für die Aufbereitung genutzt werden. Sie werden in Anführungszeichen bei Texten oder in Perlfunktionen angegeben. Wird kein Output-Parameter angegeben, so wird automatisch $1 genutzt.
Beispiele:
Es soll aus einem Reading, das z. B. ein Prozentzeichen beinhaltet, nur der Zahlenwert für den Vergleich genutzt werden:
Der Inhalt des Dummys Alarm soll in einem Text eingebunden werden:
[alarm:state:"(.*)":"state of alarm is $1"]
Die Definition von regulären Ausdrücken mit Nutzung der Perl-Variablen $1, $2 usw. kann in der Perldokumentation nachgeschlagen werden.
Angaben im Ausführungsteil (gilt nur für FHEM-Modus): back
Der Ausführungsteil wird durch runde Klammern eingeleitet. Es werden standardmäßig FHEM-Befehle angegeben, wie z. B.: ...(set lamp on)
Sollen mehrere FHEM-Befehle ausgeführt werden, so werden sie mit Komma statt mit Semikolon angegeben ... (set lamp1 on, set lamp2 off)
Falls ein Komma nicht als Trennzeichen zwischen FHEM-Befehlen gelten soll, so muss der FHEM-Ausdruck zusätzlich in runde Klammern gesetzt werden: ...((set lamp1,lamp2 on),set switch on)
Perlbefehle werden in geschweifte Klammern gesetzt: ... {system ("wmail Peter is at home")}. In diesem Fall können die runden Klammern des Ausführungsteils weggelassen werden.
Perlcode kann im DEF-Editor wie gewohnt programmiert werden: ...{my $name="Peter"; system ("wmail $name is at home");}
FHEM-Befehle lassen sich mit Perl-Befehlen kombinieren: ... ({system ("wmail Peter is at home")}, set lamp on)
Mit Hilfe der Aggregationsfunktion können mehrere gleichnamige Readings im System ausgewertet werden, die einem bestimmten Kriterium entsprechen. Sie wird in eckigen Klammern durch ein # (aggregierter Wert) oder @ (Liste der passeden Devices) eingeleitet.
Es kann bestimmt werden: die Anzahl der Readings bzw. Devices, Durchschnittswert, Summe, höchster Wert, niedrigster Wert oder eine Liste der dazugehörigen Devices.
Die Aggregationsfunktion kann in einer DOIF-Bedingungen, im Ausführungsteil oder mit Hilfe des state-Attributs im Status angegeben werden. In der Bedingung und im Status reagiert sie auf Ereignistrigger. Das lässt sich durch ein vorangestelltes Fragezeichen unterbinden.
Die Angabe des Readings kann weggelassen werden, dann wird lediglich nach entsprechenden Devices gesucht.
# Anzahl der betroffenen Devices, der folgende Doppelpunkt kann weggelassen werden @ kommagetrennte Liste Devices, der folgende Doppelpunkt kann weggelassen werden #sum Summe #max höchster Wert #min niedrigster Wert #average Durchschnitt @max Device des höchsten Wertes @min Device de niedrigsten Wertes
<format> d<number> zum Runden des Wertes mit Nachkommastellen, a für Aliasnamen bei Devicelisten, s(<splittoken>) <splittoken> sind Trennzeichen in der Device-Liste
"<regex Device>:<regex Event>" spezifiziert sowohl die betroffenen Devices, als auch den Ereignistrigger, die Syntax entspricht der DOIF-Syntax für Ereignistrigger.
Die Angabe <regex Event> ist im Ausführungsteil nicht sinnvoll und sollte weggelassen werden.
<reading> Reading, welches überprüft werden soll
"<regex reading>"; Regex für Readings, die überprüft werden sollen
<condition> Aggregations-Bedingung, $_ ist der Platzhalter für den aktuellen Wert des internen Schleifendurchlaufs, Angaben in Anführungszeichen der Art "<value>" entsprechen $_ =~ "<value>" , hier sind alle Perloperatoren möglich.
<default> Default-Wert, falls kein Device gefunden wird, entspricht der Syntax des Default-Wertes bei Readingangaben
<format>, <reading>, <condition>, <default> sind optional
Syntax-Beispiele im Ausführungteil
Anzahl der Devices, die mit "window" beginnen:
[#"^window"]
Liste der Devices, die mit "window" beginnen, es werden Aliasnamen ausgegeben, falls definiert:
[@:a"^window"]
Liste der Devices, die mit "windows" beginnen und ein Reading "myreading" beinhalten:
[@"^window":myreading]
Liste der Devices, die mit "windows" beginnen und im Status das Wort "open" vorkommt:
Kleinster Wert der Readings des Devices "abfall", in deren Namen "Gruenschnitt" vorkommt und die mit "_days" enden:
[#min:"^abfall$":"Gruenschnitt.*_days$"]
Durchschnitt von Readings aller Devices, die mit "T_" beginnen, in deren Reading-Namen "temp" vorkommt:
[#average:"^T_":"temp"]
In der Aggregationsbedingung können alle in FHEM definierten Perlfunktionen genutzt werden. Folgende Variablen sind vorbelegt und können ebenfalls benutzt werden:
$_ Inhalt des angegebenen Readings (s.o.) $number Nach Zahl gefilteres Reading $name Name des Devices $TYPE Devices-Typ $STATE Status des Devices (nicht das Reading state) $room Raum des Devices $group Gruppe des Devices
Beispiele für Definition der Aggregationsbedingung <condition>:
Liste der Devices, die mit "rooms" enden und im Reading "temperature" einen Wert größer 20 haben:
[@"rooms$":temperature:$_ > 20]
Liste der Devices im Raum "livingroom", die mit "rooms" enden und im Reading "temperature" einen Wert größer 20 haben:
[@"rooms$":temperature:$_ > 20 and $room eq "livingroom"]
Liste der Devices in der Gruppe "windows", die mit "rooms" enden, deren Status (nicht state-Reading) "on" ist:
[@"rooms$"::$STATE eq "on" and $group eq "windows"]
Liste der Devices, deren state-Reading "on" ist und das Attribut disable nicht auf "1" gesetzt ist:
[@"":state:$_ eq "on" and AttrVal($name,"disable","") ne "1"]
Aggregationsangaben in der DOIF-Bedingung reagieren zusätzlich auf Ereignistrigger, hier sollte die regex-Angabe für das Device um eine regex-Angabe für das zu triggernde Event erweitert werden.
Anzahl der Devices, die mit "window" beginnen. Getriggert wird, wenn eine Eventzeile beginnend mit "window" und dem Wort "open" vorkommt:
[#"^window:open"]
Anwendungsbeispiele
Statusanzeige: Offene Fenster:
define di_window DOIF
attr di_window state Offene Fenster: [@"^window:open":state:"open","keine"]
Statusanzeige: Alle Devices, deren Batterie nicht ok ist:
define di_battery DOIF
attr di_battery state [@":battery":battery:$_ ne "ok","alle OK"]
Statusanzeige: Durchschnittstemperatur aller Temperatursensoren in der Gruppe "rooms":
define di_average_temp DOIF
attr di_average_temp state [#average:d2:":temperature":temperature:$group eq "rooms"]
Fenster Status/Meldung:
define di_Fenster DOIF (["^Window:open"])
(push "Fenster $DEVICE wurde geöffnet. Es sind folgende Fenster offen: [@"^Window":state:"open"]")
DOELSEIF ([#"^Window:closed":state:"open"] == 0)
(push "alle Fenster geschlossen")
define di_temp DOIF (([08:00] or [20:00]) and [?#"^Rooms":temperature: $_ < 20] != 0)
(push "In folgenden Zimmern ist zu kalt [@"^Rooms":temperature:$_ < 20,"keine"]")
DOELSE
(push "alle Zimmmer sind warm")
attr di_temp do always
attr di_Raumtemp state In folgenden Zimmern ist zu kalt: [@"^Rooms":temperature:$_ < 20,"keine"])
Es soll beim Öffnen eines Fensters eine Meldung über alle geöffneten Fenster erfolgen:
define di_Fenster DOIF (["^Window:open"]) (push "Folgende Fenster: [@"^Window:state:"open"] sind geöffnet")
attr di_Fenster do always
Wenn im Wohnzimmer eine Lampe ausgeschaltet wird, sollen alle anderen Lampen im Wohnzimmer ebenfalls ausgeschaltet werden, die noch an sind:
Mit der Angabe des Default-Wertes "defaultdummy", wird verhindert, dass der set-Befehl eine Fehlermeldung liefert, wenn die Device-Liste leer ist. Der angegebene Default-Dummy muss zuvor definiert werden.
Für reine Perlangaben gibt es eine entsprechende Perlfunktion namens AggrDoIf(<function>,<regex Device>,<reading>,<condition>,<default>) diese liefert bei der Angabe @ ein Array statt einer Stringliste, dadurch lässt sie sich gut bei foreach-Schleifen verwenden.
Beispiele
define di_Fenster DOIF (["^Window:open"]) {foreach (AggrDoIf('@','^windows','state','"open"')) {Log3 "di_Fenster",3,"Das Fenster $_ ist noch offen"}}
define di_Temperature DOIF (["^room:temperature"]) {foreach (AggrDoIf('@','^room','temperature','$_ < 15')) {Log3 "di_Temperatur",3,"im Zimmer $_ ist zu kalt"}}
define di_light DOIF ([08:00] or [10:00] or [20:00]) (set switch on) DOELSEIF ([09:00] or [11:00] or [00:00]) (set switch off)
Perl-Modus: define di_light DOIF
{if ([08:00] or [10:00] or [20:00]) {fhem_set"switch on"}}
{if ([09:00] or [11:00] or [00:00]) {fhem_set"switch off"}}
Zeitangaben nach Zeitraster ausgerichtet alle X Stundenback
Format: [+[h]:MM] mit: h sind Stundenangaben zwischen 2 und 23 und MM Minuten zwischen 00 und 59
Anwendungsbeispiel: Es soll immer fünf Minuten nach einer vollen Stunde alle 2 Stunden eine Pumpe eingeschaltet werden, die Schaltzeiten sind 00:05, 02:05, 04:05 usw.
Anwendungsbeispiel: Radio soll am Wochenende und an Feiertagen um 08:30 Uhr eingeschaltet und um 09:30 Uhr ausgeschaltet werden. Am Montag und Mittwoch soll das Radio um 06:30 Uhr eingeschaltet und um 07:30 Uhr ausgeschaltet werden. Hier mit englischen Bezeichnern:
define di_radio DOIF ([06:30|Mo We] or [08:30|WE]) (set radio on) DOELSEIF ([07:30|Mo We] or [09:30|WE]) (set radio off) attr di_radio weekdays Su,Mo,Tu,We,Th,Fr,Sa,WE,WD
Bemerkung: Es ist unerheblich wie die definierten Wochenttagbezeichner beim Timer angegeben werden. Sie können mit beliebigen Trennzeichen oder ohne Trennzeichen direkt aneinander angegeben werden.
Anstatt einer direkten Wochentagangabe, kann ein Status oder Reading in eckigen Klammern angegeben werden. Dieser muss zum Triggerzeitpunkt mit der gewünschten Angabe für Wochentage, wie oben definiert, belegt sein.
Anwendungsbeispiel: Der Wochentag soll über einen Dummy bestimmt werden.
define dummy myweekday
set myweekday monday wednesday thursday weekend
define di_radio DOIF ([06:30|[myweekday]]) (set radio on) DOELSEIF ([07:30|[myweekday]]) (set radio off)
attr di_radio weekdays sunday,monday,thuesday,wednesday,thursday,friday,saturday,weekend,workdays
Zeitintervalle werden im Format angegeben: [<begin>-<end>],
für <begin> bzw. <end> wird das gleiche Zeitformat verwendet,
wie bei einzelnen Zeitangaben. Getriggert wird das Modul zum Zeitpunkt <begin> und zum Zeitpunkt <end>.
Soll ein Zeitintervall ohne Zeittrigger lediglich zur Abfrage dienen, so muss hinter der eckigen Klammer ein Fragezeichen angegeben werden (siehe Beispiele weiter unten).
Das Zeitintervall ist als logischer Ausdruck ab dem Zeitpunkt <begin> wahr und ab dem Zeitpunkt <end> nicht mehr wahr.
Anwendungsbeispiele:
Radio soll zwischen 8:00 und 10:00 Uhr an sein:
define di_radio DOIF ([08:00-10:00]) (set radio on) DOELSE (set radio off)
Oft möchte man keine festen Zeiten im Modul angeben, sondern Zeiten, die man z. B. über Dummys über die Weboberfläche verändern kann.
Statt fester Zeitangaben können Status, Readings oder Internals angegeben werden. Diese müssen eine Zeitangabe im Format HH:MM oder HH:MM:SS oder eine Zahl beinhalten.
Anwendungsbeispiel: Lampe soll zu einer bestimmten Zeit eingeschaltet werden. Die Zeit soll über den Dummy time einstellbar sein:
define time dummy
set time 08:00
define di_time DOIF ([[time]])(set lamp on)
attr di_time do always
Zeitberechnungen werden innerhalb der eckigen Klammern zusätzlich in runde Klammern gesetzt. Die berechneten Triggerzeiten können absolut oder relativ mit einem Pluszeichen vor den runden Klammern angegeben werden.
Es können beliebige Ausdrücke der Form HH:MM und Angaben in Sekunden als ganze Zahl in Perl-Rechenoperationen kombiniert werden.
Perlfunktionen, wie z. B. sunset(), die eine Zeitangabe in HH:MM liefern, werden in geschweifte Klammern gesetzt.
Zeiten im Format HH:MM bzw. Status oder Readings, die Zeitangaben in dieser Form beinhalten werden in eckige Klammern gesetzt.
Anwendungsbeispiele:
Lampe wird nach Sonnenuntergang zwischen 900 und 1500 (900+600) Sekunden zufällig zeitverzögert eingeschaltet. Ausgeschaltet wird die Lampe nach 23:00 Uhr um bis zu 600 Sekunden zufällig verzögert:
Zeitberechnung können ebenfalls in Zeitintervallen genutzt werden.
Licht soll eine Stunde vor gegebener Zeit eingeschaltet werden und eine Stunde danach wieder ausgehen:
define Fixtime dummy
set Fixtime 20:00
define di_light DOIF ([([Fixtime]-[01:00]) - ([Fixtime]+[01:00])]) (set lampe on)
DOELSE (set lampe off)
Hier das Gleiche wie oben, zusätzlich mit Zufallsverzögerung von 300 Sekunden und nur an Wochenenden:
define di_light DOIF ([([Fixtime]-[01:00]-int(rand(300))) - ([Fixtime]+[01:00]+int(rand(300)))]|7]) (set lampe on)
DOELSE (set lampe off)
Ein Änderung des Dummys Fixtime z. B. durch "set Fixtime ...", führt zur sofortiger Neuberechnung der Timer im DOIF-Modul.
Für die Zeitberechnung wird der Perlinterpreter benutzt, daher sind für die Berechnung der Zeit keine Grenzen gesetzt.
Es wird um 08:00, 08:30, 09:00, ..., 21:30 Uhr die Anweisung ausgeführt. Um 22:00 wird das letzte Mal getriggert, das Zeitintervall ist zu diesem Zeitpunkt nicht mehr wahr.
Es lassen sich ebenso indirekte Timer, Timer-Funktionen, Zeitberechnungen sowie Wochentage miteinander kombinieren.
Anwendungsbeispiel: Rollläden sollen an Arbeitstagen nach 6:25 Uhr hochfahren, wenn es hell wird, am Wochenende erst um 9:00 Uhr, herunter sollen sie wieder, wenn es dunkel wird:
define di_shutters DOIF ([sensor:brightness]>100 and [06:25-09:00|8] or [09:00|7]) (set shutters up) DOELSEIF ([sensor:brightness]<50) (set shutters down)
Zeitintervalle, Readings und Status ohne Triggerback
Angaben in eckigen Klammern, die mit einem Fragezeichen beginnen, führen zu keiner Triggerung des Moduls, sie dienen lediglich der Abfrage.
Anwendungsbeispiel: Licht soll zwischen 06:00 und 10:00 angehen, getriggert wird nur durch den Taster nicht um 06:00 bzw. 10:00 Uhr und nicht durch das Device Home
define di_motion DOIF ([?06:00-10:00] and [button] and [?Home] eq "present")(set lamp on-for-timer 600)
attr di_motion do always
Perl-Modus: define di_motion DOIF {if ([?06:00-10:00] and [button] and [?Home] eq "present"){fhem_set"lamp on-for-timer 600"}}
Nutzung von Readings, Status oder Internals im Ausführungsteilback
Anwendungsbeispiel: Wenn ein Taster betätigt wird, soll Lampe1 mit dem aktuellen Zustand der Lampe2 geschaltet werden:
Berechnungen können in geschweiften Klammern erfolgen. Aus Kompatibilitätsgründen, muss die Berechnung unmittelbar mit einer runden Klammer beginnen.
Innerhalb der Perlberechnung können Readings, Status oder Internals wie gewohnt in eckigen Klammern angegeben werden.
Anwendungsbeispiel: Es soll ein Vorgabewert aus zwei verschiedenen Readings ermittelt werden und an das set Kommando übergeben werden:
Ersatzwert für nicht existierende Readings oder Statusback
Es kommt immer wieder vor, dass in der Definition des DOIF-Moduls angegebene Readings oder Status zur Laufzeit nicht existieren. Der Wert ist dann leer.
Bei der Definition von Status oder Readings kann für diesen Fall ein Vorgabewert oder sogar eine Perlberechnung am Ende des Ausdrucks kommagetrennt angegeben werden.
Syntax:
[<device>,<default value>]
oder [<device>:<reading>,<default value>]
Möchte man stattdessen einen bestimmten Wert global für das gesamte Modul definieren,
so lässt sich das über das Attribut notexist bewerkstelligen. Ein angegebener Default-Wert beim Status oder beim Reading übersteuert das "notexist"-Attribut.
Verzögerungen für die Ausführung von Kommandos werden pro Befehlsfolge über das Attribut "wait" definiert. Syntax:
attr <DOIF-module> wait <Sekunden für Befehlsfolge des ersten DO-Falls>:<Sekunden für Befehlsfolge des zweiten DO-Falls>:...
Sollen Verzögerungen innerhalb von Befehlsfolgen stattfinden, so müssen diese Kommandos in eigene Klammern gesetzt werden, das Modul arbeitet dann mit Zwischenzuständen.
Beispiel: Bei einer Befehlssequenz, hier: (set lamp1 on, set lamp2 on), soll vor dem Schalten von lamp2 eine Verzögerung von einer Sekunde stattfinden.
Die Befehlsfolge muss zunächst mit Hilfe von Klammerblöcke in eine Befehlssequenz aufgespalten werden: (set lamp1 on)(set lamp2 on).
Nun kann mit dem wait-Attribut nicht nur für den Beginn der Sequenz, sondern für jeden Klammerblock eine Verzögerung, getrennt mit Komma, definieren werden,
hier also: wait 0,1. Damit wird lamp1 sofort, lamp2 eine Sekunde danach geschaltet. Die Verzögerungszeit bezieht sich immer auf den vorherigen Befehl.
Beispieldefinition bei mehreren DO-Blöcken mit Befehlssequenzen:
DOIF (Bedingung1)
(set ...) ## erster Befehl der ersten Sequenz soll um eine Sekunde verzögert werden
(set ...) ## zweiter Befehl der ersten Sequenz soll um 2 Sekunden nach dem ersten Befehl verzögert werden
DOELSEIF (Bedingung2)
(set ...) ## erster Befehl der zweiten Sequenz soll um 3 Sekunden verzögert werden
(set ...) ## zweiter Befehl der zweiten Sequenz soll um 0,5 Sekunden nach dem ersten Befehl verzögert werden
attr <DOIF-module> wait 1,2:3,0.5
Das Aufspalten einer kommagetrennten Befehlskette in eine Befehlssequenz, wie im obigen Beispiel, sollte nicht vorgenommen werden, wenn keine Verzögerungen zwischen den Befehlen benötigt werden.
Denn bei einer Befehlssequenz werden Zwischenzustände cmd1_1, cmd1_2 usw. generiert, die Events erzeugen und damit unnötig FHEM-Zeit kosten.
Für Kommandos, die nicht verzögert werden sollen, werden Sekundenangaben ausgelassen oder auf Null gesetzt. Die Verzögerungen werden nur auf Events angewandt und nicht auf Zeitsteuerung. Eine bereits ausgelöste Verzögerung wird zurückgesetzt, wenn während der Wartezeit ein Kommando eines anderen DO-Falls, ausgelöst durch ein neues Ereignis, ausgeführt werden soll.
Statt Sekundenangaben können ebenfalls Status, Readings in eckigen Klammern, Perl-Funktionen sowie Perl-Berechnung angegeben werden. Dabei werden die Trennzeichen Komma und Doppelpunkt in Klammern geschützt und gelten dort nicht als Trennzeichen.
Diese Angaben können ebenfalls bei folgenden Attributen gemacht werden: cmdpause, repeatcmd, repeatsame, waitsame, waitdel
Anwendungsbeispiel: Benachrichtigung "Waschmaschine fertig", wenn Verbrauch mindestens 5 Minuten unter 2 Watt (Perl-Code wird in geschweifte Klammern gesetzt):
Eine erneute Benachrichtigung wird erst wieder ausgelöst, wenn zwischendurch der Verbrauch über 2 Watt angestiegen war.
Anwendungsbeispiel: Rollladen um 20 Minuten zeitverzögert bei Sonne runter- bzw. hochfahren (wenn der Zustand der Sonne wechselt, wird die Verzögerungszeit zurückgesetzt):
Anwendungsbeispiel: Beschattungssteuerung abhängig von der Temperatur. Der Rollladen soll runter von 11:00 Uhr bis Sonnenuntergang, wenn die Temperatur über 26 Grad ist. Temperaturschwankungen um 26 Grad werden mit Hilfe des wait-Attributes durch eine 15 minutige Verzögerung ausgeglichen.
Anwendungsbeispiel: Belüftung in Kombination mit einem Lichtschalter mit Nachlaufsteuerung. Der Lüfter soll angehen, wenn das Licht mindestens 2 Minuten lang brennt oder die Luftfeuchtigkeit 65 % überschreitet, der Lüfter soll ausgehen, drei Minuten nachdem die Luftfeuchtigkeit unter 60 % fällt und das Licht aus ist bzw. das Licht ausgeht und die Luftfeuchtigkeit unter 60% ist. Definitionen lassen sich über die Weboberfläche (DEF-Eingabebereich) übersichtlich gestalten:
define di_fan DOIF ([light] eq "on")
(set fan on)
DOELSEIF ([sensor:humidity]>65)
(set fan on)
DOELSEIF ([light] eq "off" and [sensor:humidity]<60)
(set fan off)
attr di_fan wait 120:0:180
Zurücksetzen des Waittimers für das gleiche Kommandoback
Im Gegensatz zu do always wird ein Waittimer mit dem Attribut do resetwait auch dann zurückgesetzt, wenn die gleiche Bedingung wiederholt wahr wird.
Damit können Ereignisse ausgelöst werden, wenn etwas innerhalb einer Zeitspanne nicht passiert.
Das Attribut do resetwait impliziert eine beliebige Wiederholung wie do always. Diese lässt sich allerdings mit dem Attribut repeatsame einschränken s. u.
Anwendungsbeispiel: Meldung beim Ausbleiben eines Events
Zwangspause für das Ausführen eines Kommandos seit der letzten Zustandsänderungback
Mit dem Attribut cmdpause <Sekunden für cmd_1>:<Sekunden für cmd_2>:... wird die Zeitspanne in Sekunden angegeben für eine Zwangspause seit der letzten Zustandsänderung.
In der angegebenen Zeitspanne wird ein Kommando nicht ausgeführt, auch wenn die dazugehörige Bedingung wahr wird.
Anwendungsbeispiel: Meldung über Frostgefahr alle 60 Minuten
define di_frost DOIF ([outdoor:temperature] < 0) (set pushmsg "danger of frost")
attr di_frost cmdpause 3600
attr di_frost do always
Mit dem Attribut repeatsame <maximale Anzahl von cmd_1>:<maximale Anzahl von cmd_2>:... wird die maximale Anzahl hintereinander folgenden Ausführungen festgelegt.
Anwendungsbeispiel: Die Meldung soll maximal dreimal erfolgen mit einer Pause von mindestens 10 Minuten
Das Attribut repeatsame lässt sich mit do always oder do resetwait kombinieren.
Wenn die maximale Anzahl für ein Kommando ausgelassen oder auf Null gesetzt wird, so gilt für dieses Kommando der Defaultwert "einmalige Wiederholung";
in Kombination mit do always bzw. do resetwait gilt für dieses Kommando "beliebige Wiederholung".
Anwendungsbeispiel: cmd_1 soll beliebig oft wiederholt werden, cmd_2 maximal zweimal
attr di_repeat repeatsame 0:2
attr di_repeat do always
Ausführung eines Kommandos nach einer Wiederholung einer Bedingungback
Mit dem Attribut waitsame <Zeitspanne in Sekunden für cmd_1>:<Zeitspanne in Sekunden für das cmd_2>:... wird ein Kommando erst dann ausgeführt, wenn innerhalb einer definierten Zeitspanne die entsprechende Bedingung zweimal hintereinander wahr wird.
Für Kommandos, für die waitsame nicht gelten soll, werden die entsprechenden Sekundenangaben ausgelassen oder auf Null gesetzt.
Anwendungsbeispiel: Rollladen soll hoch, wenn innerhalb einer Zeitspanne von 2 Sekunden ein Taster betätigt wird
Löschen des Waittimers nach einer Wiederholung einer Bedingungback
Das Gegenstück zum repeatsame-Attribut ist das Attribut waitdel. Die Syntax mit Sekundenangaben pro Kommando entspricht der, des wait-Attributs. Im Gegensatz zum wait-Attribut, wird ein laufender Timer gelöscht, falls eine Bedingung wiederholt wahr wird.
Sekundenangaben können pro Kommando ausgelassen oder auf Null gesetzt werden.
Anwendungsbeispiel: Rollladen soll herunter, wenn ein Taster innerhalb von zwei Sekunden nicht wiederholt wird
"di_shuttersdown" kann nicht mit dem vorherigen Anwendungsbeispiel "di_shuttersup" innerhalb eines DOIF-Moduls kombiniert werden, da in beiden Fällen die gleiche Bedingung vorkommt. siehe auch Einknopf-Fernbedienung im Perl-Modus
Die Attribute wait und waitdel lassen sich für verschiedene Kommandos kombinieren. Falls das Attribut für ein Kommando nicht gesetzt werden soll, kann die entsprechende Sekundenzahl ausgelassen oder eine Null angegeben werden.
Beispiel: Für cmd_1 soll wait gelten, für cmd_2 waitdel
attr di_cmd wait 2:0
attr di_cmd waitdel 0:2 Readingauswertung bei jedem Event des Devicesback
Bei Angaben der Art [<Device>:<Reading>] wird das Modul getriggert, wenn ein Ereignis zum angegebenen Device und Reading kommt. Soll das Modul, wie bei Statusangaben der Art [<Device>], auf alle Ereignisse des Devices reagieren, so muss das Attribut auf Null gesetzt werden.
Bemerkung: In früheren Versionen des Moduls war checkReadingEvent 0 die Voreinstellung des Moduls. Da die aktuelle Voreinstellung des Moduls checkReadingEvent 1 ist, hat das Setzen von
checkReadingEvent 1 keine weitere Funktion mehr.
Bei Änderungen des Readings state wird in FHEM standardmäßig, im Gegensatz zu allen anderen Readings, der Readingname hier: "state: " im Event nicht vorangestellt.
Möchte man eindeutig eine Statusänderung eines Moduls erkennen, so lässt sich das mit dem Attribut addStateEvent bewerksteligen.
Bei Statusänderungen eines Devices wird bei der Angabe des Attributes addStateEvent im Event "state: " vorangestellt, darauf kann man dann gezielt im DOIF-Modul triggern.
Standardmäßig unterbindet das DOIF-Modul Selbsttriggerung. D. h. das Modul reagiert nicht auf Events, die es selbst direkt oder indirekt auslöst. Dadurch werden Endlosschleifen verhindert.
Wenn das Attribut selftrigger wait gesetzt ist, kann das DOIF-Modul auf selbst ausgelöste Events reagieren. Dazu müssen die entsprchenden Kommandos mit wait verzögert werden.
Bei der Angabe selftrigger all reagiert das Modul grundsätzlich alle selbst ausgelösten Trigger.
Zu beachten ist, dass der Zustand des Moduls erst nach der Ausführung des Befehls gesetzt wird, dadurch wird die Zustandsverwaltung (ohne do always) ausgehebelt.
Die Auswertung des eigenen Zustands z. B. über [$SELF:cmd] funktioniert dagegen korrekt, weil dieser immer bei der eigenen Triggerung bereits gesetzt ist.
Bei der Verwendung des Attributes selftrigger all sollte beachtet werden, dass bereits in der zweiten Rekursion,
wenn ein Befehl nicht durch wait verzögert wird, FHEM eine weitere Triggerung unterbindet, um Endlosschleifen zu verhindern.
Wenn das Attribut timerevent ungleich Null gesetzt ist, wird beim Setzen der Timer im DOIF-Modul ein Event erzeugt. Das kann z. B. bei FHEM2FHEM nützlich sein, um die Timer-Readings zeitnah zu aktualisieren.
Zeitspanne eines Readings seit der letzten Änderungback
Bei Readingangaben kann die Zeitspanne mit [<Device>:<Reading>:sec] in Sekunden seit der letzten Änderung bestimmt werden.
Anwendungsbeispiel: Licht soll angehen, wenn der Status des Bewegungsmelders in den letzten fünf Sekunden upgedatet wurde.
Bei HM-Bewegungsmelder werden periodisch Readings aktualisiert, dadurch wird das Modul getrigger, auch wenn keine Bewegung stattgefunden hat.
Der Status bleibt dabei auf "motion". Mit der obigen Abfrage lässt sich feststellen, ob der Status aufgrund einer Bewegung tatsächlich upgedatet wurde.
Bei der Abarbeitung der Bedingungen, werden nur die Bedingungen überprüft,
die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten. Mit dem Attribut checkall lässt sich das Verhalten so verändern,
dass bei einem Event-Trigger auch Bedingungen geprüft werden, die das triggernde Device nicht beinhalten.
Folgende Parameter können angegeben werden:
checkall event Es werden alle Bedingungen geprüft, wenn ein Event-Trigger auslöst. checkall timer Es werden alle Bedingungen geprüft, wenn ein Timer-Trigger auslöst. checkall all Es werden grundsätzlich alle Bedingungen geprüft.
Zu beachten ist, dass bei einer wahren Bedingung die dazugehörigen Befehle ausgeführt werden und die Abarbeitung immer beendet wird -
es wird also grundsätzlich immer nur ein Befehlszweig ausgeführt und niemals mehrere.
Darstellungselement mit Eingabemöglichkeit im Frontend und Schaltfunktionback
Die unter Dummy beschriebenen Attribute readingList und setList stehen auch im DOIF zur Verfügung. Damit wird erreicht, dass DOIF im WEB-Frontend als Eingabeelement mit Schaltfunktion dienen kann. Zusätzliche Dummys sind nicht mehr erforderlich. Es können im Attribut setList, die in FHEMWEB angegebenen Modifier des Attributs widgetOverride verwendet werden.
Anwendungsbeispiel: Eine Schaltuhr mit time-Widget für die Ein- u. Ausschaltzeiten und der Möglichkeit über eine Auswahlliste manuell ein und aus zu schalten.
Mit dem Attribut uiTable kann innerhalb eines DOIF-Moduls ein User Interface in Form einer Tabelle erstellt werden. Die Definition der Tabelle wird mit Hilfe von Perl sowie FHEM-Widgets kombiniert mit DOIF-Syntax vorgenommen.
Features:
- pro DOIF eine beliebige UI-Tabelle definierbar
- alle FHEM-Widgets nutzbar
- alle FHEM-Icons nutzbar
- DOIF-Syntax verwendbar
- alle Devices und Readings in FHEM direkt darstellbar und ansprechbar
- dynamische Styles (z. B. Temperaturfarbe abhängig vom Temperaturwert)
- es brauchen keine eigenen CSS- oder js-Dateien definiert werden
- Nutzung vordefinierter Templates aus Template-Dateien
Aufbau des uiTable-Attributs
{
<Perlblock für Definition von Template-Attributen, Zellenformatierungen, eigenen Perlfunktionen>
}
<Template-Methoden>
<Tabellendefinition>
Der Perlblock ist optional. Er wird in geschweiften Klammern mit wenigen Ausnahmen in Perl definiert. Hier können Template-Attribute für Zeichenketten, das Layout der Tabelle über HMTL-Zellenformatierungen sowie eigene Perlfunktionen definiert werden.
Im Anschluß an den Perlblock können optional Template-Methoden definiert werden, um komplexere wiederverwendbare Widget-Definitionen zu formulieren. Diese werden in der Tabellendefinition benutzt.
Die eigentliche Tabellendefinition wird über die Definition von Zellen vorgenommen. Zellen werden mit | voneinander abgegrenzt. Kommentare können an beliebiger Stelle beginnend mit ## bis zum Zeilenende eingefügt werden.
Die Tabellendefinition
<Zellendefinition erste Zeile erste Spalte> | <Zellendefinition erste Zeile zweite Spalte | ... # Definition der ersten Tabellenzeile
<Zellendefinition zweite Zeile erste Spalte> | <Zellendefinition zweite Zeile zweite Spalte | ... # Definition der zweiten Tabellenzeile
usw.
Endet eine Zeile mit |, so wird deren Definition in der nächsten Zeile fortgesetzt. Dadurch können längere Zeilendefinition einer Tabelle auf mehrerer Zeilen aufgeteilt werden.
Eine Zellendefinition kann sein:
1) <Perlausdruck mit [DOIF-Syntax]>
2) STY(<Perlausdruck mit [DOIF-Syntax]>,<css-Style-Definition mit [DOIF-Syntax]>)
3) WID([<DEVICE>:<READING>],<FHEM-Widget-Definition mit [DOIF-Syntax]>,"<set-/setreading-Kommando optional>")
Die oberen Definitionen können innerhalb einer Zelle mit Punkt bzw. Komma beliebig kombiniert werden. Beim Punkt werden die Ausdrücke aneinandergereiht, bei Komma werden die Ausdrücke mit Zeilenumbruch untereinander innerhalb einer Zelle angeordnet.
Zu 1)
Diese Definition wird verwendet für: Texte, Inhalte von Readings oder Rechenausdrücke. Angaben, die die Zelle aktualisieren sollen, müssen in gewohnte DOIF-Syntax angegeben werden.
Beispiele:
Es wird durch eine feste Vorgabe von saturation und lightness, linear ein Farbton (Hue) für value errechnet, dabei entspricht min_value min_hsv und max_value max_hsv.
Die gewünschten Werte für <min_hsv>,<max_hsv>,<saturation>,<lightness> können mit Hilfe eines Color-Pickers bestimmt werden.
Weiterhin lässt sich ebenfalls jede andere Perlfunktion verwenden, die eine beliebige css-Style-Formatierung vornimmt.
Zu 3)
Über die Funktion WID werden FHEM-Widgets definiert. Es können alle in FHEM vorhanden FHEM-Widgets verwendet werden.
Der Perlblock: Definition von Template-Attributen, Zellenformatierungen und Perl-Funktionen
Im ersten Bereich werden sog. Template-Attribute als Variablen definiert, um wiederholende Zeichenketten in Kurzform anzugeben. Template-Attribute werden intern als hash-Variablen abgelegt. Die Syntax entspricht weitgehend der Perl-Syntax.
Es können ebenfalls beliebige Perl-Funktionen definiert werden, die innerhalb der Tabellendefinition genutzt werden können. Sie sollten mit FUNC_ beginnen. Damit wird sichergestellt, dass die Funktionen systemweit eindeutig sind.
Bsp.
Funktion für temperaturabhängige Farbgebung
sub FUNC_temp
{
my ($temp)=@_
return ("font-weight:bold;font-size:12pt;color:".DOIF_hsv ($temp,15,35,210,360,60,90));
}
Steuerungsattribute
Ausblenden des Status in der Devicezeile:
$SHOWNOSTATE=1;
Standardmäßig werden Texte innerhalb der Tabelle, die einem vorhandenen FHEM-Device entsprechen als Link zur Details-Ansicht dargestellt. Soll diese Funktionalität unterbunden werden, so kann man dies über folgendes Attribut unterbinden:
$SHOWNODEVICELINK=1;
Die Gerätezeile wird ausgeblendet, wenn der "Reguläre Ausdruck" <regex room> zum Raumnamen passt, gilt nicht für den Raum Everything.
$SHOWNODEVICELINE = "<regex room>";
Die Detailansicht wird umorganisiert, hilfreich beim Editieren längerer uiTable-Definitionen.
$ATTRIBUTESFIRST = 1;
Template-Methoden
Bei Widgetdefinition, die mehrfach verwendet werden sollen, können Template-Methoden definiert werden. Die Definition beginnt mit dem Schlüsselwort DEF. Die Template_Methode muss mit TPL_ beginnen.
Syntax
DEF TPL_<name>(<Definition mit Platzhaltern $1,$2 usw.>)
<name> ist beliebig wählbar.
In der Tabellendefinition können die zuvor definierten Template-Methoden genutzt werden. Die Übergabeparameter werden an Stelle der Platzhalter $1, $2 usw. eingesetzt.
Beispiel
Template-Methoden-Definition:
DEF TPL_Thermostat(WID($1,$TPL{HKnob},"set"))
Nutzung der Template-Methode in der Tabellendefinition:
Mit Hilfe des Befehls IMPORT können Definitionen aus Dateien importiert werden. Damit kann der Perlblock sowie Template-Methoden in eine Datei ausgelagert werden. Der Aufbau der Datei entspricht dem des uiTable-Attributes. Tabellendefinitionen selbst können nicht importiert werden.
Der IMPORT-Befehl kann vor dem Perlblock oder vor dem Tabellendefintionsbereich angegeben werden. Ebenso können mehrere IMPORT-Befehle angegeben werden. Gleiche Definitionen von Funktionen, Templates usw. aus einer IMPORT-Datei überlagern die zuvor definierten.
Der IMPORT-Befehl kann ebenfalls innerhalb einer Import-Datei angegeben werden.
Syntax
IMPORT <Pfad mit Dateinamen>
Bespiel:
in uiTable
IMPORT /fhem/contrib/DOIF/mytemplates.tpl
## table definition
"outdoor" | TPL_temp([outdoor:temperature])
in mytemplates.tpl
## templates and functions
{
$TPL{unit}="°C";
sub FUNC_temp
{
my ($temp)=@_;
return ("height:6px;font-weight:bold;font-size:16pt;color:".DOIF_hsv ($temp,-10,30,210,360,60,90));
}
}
Der Status des Moduls wird standardmäßig mit cmd_1, cmd_2, usw., bzw. cmd1_1 cmd1_2 usw. für Befehlssequenzen belegt. Dieser lässt sich über das Attribut "cmdState" mit Komma bzw. | getrennt umdefinieren:
Pro Status können ebenfalls Status oder Readings in eckigen Klammern oder Perlfunktionen sowie Berechnungen in Klammern der Form {(...)} angegeben werden.
Die Trennzeichen Komma und | sind in Klammern und Anführungszeichen geschützt und gelten dort nicht als Trennzeichen.
Zustände cmd1_1, cmd1 und cmd2 sollen wie folgt umdefiniert werden:
attr di_mytwilight cmdState [mytwilight:ss_astro], {([mytwilight:twilight_weather]*2+10)}|My attribut is: {(Attr("mydevice","myattr",""))}
Reine Statusanzeige ohne Ausführung von Befehlenback
Der Ausführungsteil kann jeweils ausgelassen werden.
Anwendungsbeispiel: Aktuelle Außenfeuchtigkeit im Status
Anpassung des Status mit Hilfe des Attributes stateback
Es können beliebige Reading und Status oder Internals angegeben werden.
Anwendungsbeispiel: Aktuelle Außenfeuchtigkeit inkl. Klimazustand (Status des Moduls wurde mit cmdState definiert s. o.)
attr di_hum state The current humidity is [outdoor:humidity], it is [di_hum]
Es können beim Attribut state ebenfalls Berechnungen in geschweiften Klammern durchgeführt werden. Aus Kompatibilitätsgründen, muss die Berechnung mit einer runden Klammer beginnen.
Anwendungsbeispiel: Berechnung des Mittelwertes zweier Readings:
define di_average DOIF
attr di_average state Average of the two rooms is {([room1:temperature]+[room2:temperature])/2}
Der Status wird automatisch aktualisiert, sobald sich eine der Temperaturen ändert
Da man beliebige Perl-Ausdrücke verwenden kann, lässt sich z. B. der Mittelwert auf eine Stelle mit der Perlfunktion sprintf formatieren:
attr di_average state Average of the two rooms is {(sprintf("%.1f",([room1:temperature]+[room2:temperature])/2))}
Mit Hilfe des Attributes DOIF_Readings können eigene Readings innerhalb des DOIF definiert werden, auf die man im selben DOIF-Moduls zugreifen kann.
Die Nutzung ist insbesondere dann sinnvoll, wenn mehrfach die gleichen Berechnungen innerhalb eines DOIF-Modus vorgenommen werden sollen.
DOIF_Readings-Berechnungen funktionieren ressourcenschonend ohne Erzeugung FHEM-Events nach außen. Änderungen dieser Readings triggern allerdings das eigene DOIF-Modul, wenn sich deren Inhalt ändert.
<definition>: Beliebiger Perlausdruck ergänzt um DOIF-Syntax in eckigen Klammern. Angaben in eckigen Klammern wirken triggernd und aktualisieren das definierte Reading.
Beispiel: Push-Mitteilung über die durchschnittliche Temperatur aller Zimmer
define di_temp DOIF ([$SELF:temperature]>20) (push "Die Durchschnittstemperatur ist höher als 20 Grad, sie beträgt [$SELF:temperature]")
DOELSE
Hierbei wird der aufwändig berechnete Durchschnittswert nur einmal berechnet, statt zwei mal, wenn man die Aggregationsfunktion direkt in der Bedingung und im Ausführungsteil angeben würde.
Mit DOIF_Readings ist es ebenfalls möglich eine Wiederholung des Schaltens eines DOIF-Moduls mit do always zu provozieren und gleichzeitig zyklisch sendende Sensoren abzufragen.
Das Attribut do always ist in diesem Beispiel unkritisch, obwohl Temperatur zyklisch gesendet wird, da das Reading "frost" nur dann die Bedingung triggert, wenn sich dessen Inhalt ändert
Vorbelegung des Status mit Initialisierung nach dem Neustartback
Mit dem Attribut initialize Wird der Status vorbelegt, mit Initialisierung nach dem Neustart.
Anwendungsbeispiel: Nach dem Neustart soll der Zustand von di_lamp mit "initialized" vorbelegt werden. Das Reading cmd_nr wird auf 0 gesetzt, damit wird ein Zustandswechsel provoziert, das Modul wird initialisiert - der nächste Trigger führt zum Ausführen eines Kommandos.
attr di_lamp intialize initialized
Das ist insb. dann sinnvoll, wenn das System ohne Sicherung der Konfiguration (unvorhergesehen) beendet wurde und nach dem Neustart die zuletzt gespeicherten Zustände des Moduls nicht mit den tatsächlichen übereinstimmen.
Ausführen von Befehlsketten beim Starten von FHEMback
Beim Hochfahren von FHEM lässt sich eine bestimme Aktion ausführen. Es kann dazu genutzt werden, um sofort nach dem Hochfahren des Systems einen definierten Zustand des Moduls zu erreichen.
Dabei wird sichergestellt, dass die angegebenen Befehle erst dann ausgeführt werden, wenn FHEM komplett hochgefahren ist.
Symtax:
attr <DOIF-Modul> startup <FHEM-Befehl oder Perl-Befehl in geschweiften Klammern mit DOIF-Syntax>
Die Syntax entspricht der eines DOIF-Ausführungsteils (runde Klammern brauchen nicht angegeben werden).
Beispiele:
attr di_test startup set $SELF cmd_1 attr di_test startup set $SELF checkall attr di_test startup sleep 60;set lamp1 off;set lamp2 off attr di_test startup {myfunction()},set lamp1 on,set lamp2 on
Ein DOIF-Modul kann mit Hilfe des Attributes disable, deaktiviert werden. Dabei werden alle Timer und Readings des Moduls gelöscht.
Soll das Modul nur vorübergehend deaktiviert werden, so kann das durch set <DOIF-modul> disable geschehen.
Set-Befehle
Überprüfung aller DOIF-Bedingungen mit Ausführung eines DOIF-Zweigesback
Mit dem set-Befehl checkall werden wie beim gleichnamigen Attribut alle DOIF-Bedingung überprüft, sobald eine Bedingung als wahr geprüft ist, wird das dazugehörige Kommando ausgeführt.
Zu beachten ist, dass nur der erste wahre DOIF-Zweig ausgeführt wird und dass nur Zustandsabfragen sowie Zeitintervalle sinnvoll überprüft werden können.
Ereignisabfragen sowie Zeitpunkt-Definitionen, sind zum Zeitpunkt der checkall-Abfrage normalerweise nicht wahr.
Mit dem set-Befehl disable wird ein DOIF-Modul inaktiviert. Hierbei bleiben alle Timer aktiv, sie werden aktualisiert - das Modul bleibt im Takt, allerdings werden keine Befehle ausgeführt.
Das Modul braucht mehr Rechenzeit, als wenn es komplett über das Attribut disable deaktiviert wird. Ein inaktiver Zustand bleibt nach dem Neustart erhalten.
Ein inaktives Modul kann über set-Befehle enable bzw. initialize wieder aktiviert werden.
Mit dem set-Befehl enable wird ein inaktives DOIF-Modul wieder aktiviert. Im Gegensatz zum set-Befehl initialize wird der letzte Zustand vor der Inaktivierung des Moduls wieder hergestellt.
mit dem set-Befehl initialize wird ein DOIF-Modul initialisiert. Ein inaktives DOIF-Modul wieder aktiviert.
Im Gegensatz zum set-Befehl enable wird der letzte Zustand des Moduls gelöscht, damit wird ein Zustandswechsel herbeigeführt, der nächste Trigger führt zur Ausführung eines wahren DOIF-Zweiges.
Diese Eigenschaft kann auch dazu genutzt werden, ein bereits aktives Modul zu initialisieren.
Auführen von Befehlszweigen ohne Auswertung der Bedingungback
Mit set <DOIF-modul> cmd_<nr> lässt sich ein Befehlszweig (cmd_1, cmd_2, usw.) bedingunglos ausführen.
Der Befehl hat folgende Eigenschaften:
1) der set-Befehl übersteuert alle Attribute wie z. B. wait, do, usw.
2) ein laufender Wait-Timer wird unterbrochen
3) beim deaktivierten oder im Modus disable befindlichen Modul wird der set Befehl ignoriert
Anwendungsbeispiel: Schaltbare Lampe über Fernbedienung und Webinterface
Mit der Definition des Attributes devStateIcon führt das Anklicken des on/off-Lampensymbol zum Ausführen von set di_lamp cmd_1 bzw. set di_lamp cmd_2 und damit zum Schalten der Lampe.
Wenn mit cmdState eigene Zuständsbezeichnungen definiert werden, so können diese ebenfalls per set-Befehl angegeben werden.
attr di_lamp cmdState on|off
attr di_lamp setList on off
set di_lamp on entspricht hier set di_lamp cmd_1 und set di_lamp off set di_lamp cmd_2
Zusätzlich führt die Definition von setList zur Ausführung von set di_lamp on/off durch das Anlicken des Lampensymbols wie im vorherigen Beispiel.
Hiermit wird das Licht bei Bewegung eingeschaltet. Dabei wird, solange es brennt, bei jeder Bewegung die Ausschaltzeit neu auf 30 Sekunden gesetzt, "set light on" wird dabei nicht unnötig wiederholt. siehe auch Treppenhauslicht mit Bewegungsmelder im Perl-Modus
Die Beispiele stellen nur eine kleine Auswahl von möglichen Problemlösungen dar. Da sowohl in der Bedingung (hier ist die komplette Perl-Syntax möglich), als auch im Ausführungsteil, keine Einschränkungen gegeben sind, sind die Möglichkeiten zur Lösung eigener Probleme mit Hilfe des Moduls sehr vielfältig.
In jeder Bedingung muss mindestens ein Trigger angegeben sein (Angaben in eckigen Klammern). Die entsprechenden DO-Fälle werden nur dann ausgewertet, wenn auch das entsprechende Event oder Zeit-Trigger ausgelöst wird.
Zeitangaben der Art:
define di_light DOIF ([08:00] and [10:00]) (set switch on)
sind nicht sinnvoll, da diese Bedingung nie wahr sein wird.
Angaben, bei denen aufgrund der Definition kein Zustandswechsel erfolgen kann z. B.:
müssen mit Attribut do always definiert werden, damit sie nicht nur einmal, sondern jedes mal (hier jeden Tag) ausgeführt werden.
Bei Devices, die mit Zwischenzuständen arbeiten, insbesondere HM-Komponenten (Zwischenzustand: set_on, set_off), sollte die Definition möglichst genau formuliert werden, um unerwünschte Effekte zu vermeiden:
Namenskonvention: Da der Doppelpunkt bei Readingangaben als Trennzeichen gilt, darf er nicht im Namen des Devices vorkommen. In solchen Fällen bitte das Device umbenennen.
Standardmäßig, ohne das Attribut do always, wird das Wiederholen desselben Kommmandos vom Modul unterbunden. Daher sollte nach Möglichkeit eine Problemlösung mit Hilfe eines und nicht mehrerer DOIF-Module realisiert werden, getreu dem Motto "wer die Lampe einschaltet, soll sie auch wieder ausschalten".
Dadurch wird erreicht, dass unnötiges (wiederholendes) Schalten vom Modul unterbunden werden kann, ohne dass sich der Anwender selbst darum kümmern muss.
Mehrere Bedingungen, die zur Ausführung gleicher Kommandos führen, sollten zusammengefasst werden. Dadurch wird ein unnötiges Schalten aufgrund verschiedener Zustände verhindert.
Hier passiert das nicht mehr, da die ursprünglichen Zustände cmd_1 und cmd_2 jetzt nur noch einen Zustand cmd_1 darstellen und dieser wird nicht wiederholt.
Befehlstrennzeichen ist das Komma (<Befehl>, <Befehl>, ...)
Befehlssequenzen werden in runde Klammern gesetzt (<Befehlssequenz A>) (<Befehlssequenz B>) ...
Enthält ein Befehl Kommata, ist er zusätzlich in runde Klammern einzuschliessen (<Befehlsteil a>, <Befehlsteil b> ... )
Perl-Befehle {<Perl-Befehl>} sind in geschweifte Klammern einzuschliessen
Jede Berechnung{(<Berechnung>)〈<Berechnung>〉} in einem Befehl ist in geschweifte Klammern einzuschliessen und muss mit einer geöffneten runden Klammer beginnen.
Readings
Device
Name des auslösenden Gerätes
block_<block name>
Zeigt die Ausführung eines Perl-Blocks an (Perl).
cmd
Nr. des letzten ausgeführten Befehls als Dezimalzahl oder 0 nach Initialisierung des DOIF, in der Form <Nr. des Befehlszweiges>〈.<Nr. der Sequenz>〉
cmd_event
Angabe des auslösenden Ereignisses
cmd_nr
Nr. des letzten ausgeführten Befehlszweiges
cmd_seqnr
Nr. der letzten ausgeführten Befehlssequenz
e_<Device>_<Reading>|<Internal>|Events
Bezeichner und Wert der auslösenden Geräte mit Readings, Internals oder Events
matched_event_c<lfd. Nr. der Bedingung>_<lfd. Nr. des Events>
Wert, der mit dem Regulären Ausdruck übereinstimmt
mode
der Modus, in dem sich DOIF befindet: <enabled|disabled|deactivated>
state
Status des DOIF nach Befehlsausführung, Voreinstellung: cmd_<Nr. des Befehlszweiges>〈_<Nr. der Befehlssequenz>〉
timer_<lfd. Nr.>_c<Nr. des Befehlszweiges>
verwendete Timer mit Angabe des nächsten Zeitpunktes
timer_<timer name>
verwendete, benannte Timer mit Angabe des nächsten Zeitpunktes (Perl)
wait_timer
Angabe des aktuellen Wait-Timers
warning
Perl-Warnung bei der Auswertung einer Bedingung
<A-Z>_<readingname>
Readings, die mit einem Großbuchstaben und nachfolgendem Unterstrich beginnen, sind für User reserviert und werden auch zukünftig nicht vom Modul selbst benutzt.
Operanden in der Bedingung und den Befehlen und im Perl-Modus
Events[<Device>:"<Regex-Events>"] oder ["<Regex-Devices>:<Regex-Events>"] oder ["<Regex-Devices>"〈:"<Regex-Filter>"〉〈:<Output>〉,<Default>]
für <Regex> gilt: ^<ist eindeutig>$, ^<beginnt mit>, <endet mit>$, "" entspricht ".*", Regex-Filter ist mit [^\:]*: (.*) vorbelegt siehe auch Reguläre Ausdrücke und Events des Gerätes global
Zeit in Sekunden als direkte Angabe oder Berechnung, ein Doppelpunkt trennt die Timer der Bedingungsweige, ein Komma die Timer der Befehlssequenzen eines Bedingungszweiges.
always wiederholt den Ausführungsteil, wenn die selbe Bedingung wiederholt wahr wird. resetwait setzt den Waittimer zurück, wenn die selbe Bedingung wiederholt wahr wird.
Wartezeit in Sekunden als direkte Angabe oder Berechnung, für ein unmittelbar wiederholtes Zutreffen einer Bedingung.
Löschen des Waittimersattr <name> waitdel <timer_1_1>,<timer_1_2>,...:<timer_2_1>,<timer_2_2>,...:...
Zeit in Sekunden als direkte Angabe oder Berechnung, ein laufender Timer wird gelöscht und die Befehle nicht ausgeführt, falls eine Bedingung vor Ablauf des Timers wiederholt wahr wird.
lässt die Triggerung des Gerätes durch sich selbst zu. wait zugelassen für verzögerte Befehle, all zugelassen auch für nicht durch wait verzögerte Befehle; es ist nur eine Rekusion möglich
ersetzt die Standartwerte des Gerätestatus als direkte Angabe oder Berechnung, die Ersatzstatus von Befehlssequenzen werden durch Kommata, die von Befehlszweigen durch Pipe Zeichen getrennt.
event Alle Bedingungen werden geprüft, wenn ein Event-Trigger (Ereignisauslöser) auslöst. timer Alle Bedingungen werden geprüft, wenn ein Timer-Trigger (Zeitauslöser) auslöst. all Alle Bedingungen werden geprüft.
Die Befehle nach der ersten wahren Bedingung werden ausgeführt.
fügt einem Reading einen optionalen Widgetmodifier und eine Werteliste (, getrennt) hinzu. setList, widgetOverride, und webCmd
User Interface für DOIFattr <name> uiTable 〈{<perl code (format specification, template specification, function definition, control variable, ...)>}\n〉<template file import, method definition, table definition>
format specification:
$TABLE = "<CSS-Attribute>" ergänzt das table-Elemente um CSS-Attribute.
$TD{<rows>}{<columns>} = "<HTML Attribute>" ergänzt td-Elemente um HTML-Attribute.
$TR{<rows>} = "<HTML Attribute>" ergänzt tr-Elemente um HTML-Attribute.
$TC{<columns>} = "<HTML Attribute>" ergänzt zu columns gehörende td-Elemente um HTML-Attribute.
template specification:
$TPL{<name>} = "<Zeichenkette>" speichert ein Template.
function definition:
sub FUNC_<name> {<function BLOCK>} definiert eine Funktion.
control variables:
$ATTRIBUTESFIRST = 1; organisiert die Detailansicht um.
$SHOWNOSTATE = 1; blendet den Status in der Gerätezeile aus.
$SHOWNODEVICELINE = "<regex room>"; blendet die Gerätezeile aus, wenn <regex room> zum Raumnamen passt, gilt nicht für den Raum Everything.
$SHOWNODEVICELINK = 1; schaltet das Ersetzen des Gerätenamen durch einen Link auf die Detailseite aus.
template file import:
IMPORT <path with filename> importiert eine Templatedatei.
method definition:
DEF TPL_<name>(<definition with place holder $1,$2 usw.>) erzeugt ein Methodentemplate zur wiederholten Nutzung in der Tabellendefinition.
table definition:
Schreiben die nachstehenden Elemente HTML-Code in die Tabellenzelle, so wird er interpretiert.
↵ oder ↵↵ trennt Tabellenzeilen.
| oder |↵ trennt Tabellenzellen.
>↵ oder ,↵ sind zur Textstrukturierung zugelassen.
WID([<device>:<reading>],"<widget modifier>"〈,"<command>"〉) bindet ein Widget an <device>:<reading>, <command> steht für set oder setreading, siehe widgetOverride und FHEMWEB-Widgets
STY(<content>,<CSS style attributes>) schreibt den Inhalt von <content> in die Zelle und formatiert ihn mit <CSS style attributes>.
<content> schreibt den Inhalt von <content> in die Zelle.
<content> und <CSS style attributes> sind das Ergebnis von Perl-Ausdrücken. Enthalten sie DOIF-Syntax ([<device>:<reading>], usw.), werden sie dynamisch erzeugt.
PUP(<DOIF-name to show interface table>, <iconname[@color number]>)
gibt ein Link zum Öffnen eines Popup-Fensters zurück.
<DOIF-name to show interface table> Name des DOIF-Gerätes dessen Benutzerschnittstelle angezeigt werden soll.
<iconname[@color number]|string> gibt ein Icon an, wenn das Icon nicht verfügbar ist, wird <string> angezeigt.
gibt eine im HSV-Raum interpolierte HTML Farbnummer zurück, mit Prefix #
<current value> aktueller Wert, für den die Farbnummer erzeugt wird.
<lower value> unterer Wert, des Bereiches auf den die Farbnummer skaliert wird.
<upper value> oberer Wert, des Bereiches auf den die Farbnummer skaliert wird.
<lower HUE value> unterer HUE-Wert, der mit dem unteren Wert korrespondiert (0-360).
<upper HUE value> oberer HUE-Wert, der mit dem oberen Wert korrespondiert (0-360).
<saturation> Farbsättigung (0-100).
<lightness> Hellwert (0-100).
DOIF_rgb(<start color number>, <end color number>, <lower value>, <upper value>, <current value>)
gibt eine linear interpolierte RGB Farbnummer zurück, abhängig vom Prefix der Start- o. Endfarbnummer mit oder ohne Prefix #.
<start color number> Startfarbnummer des Farbbereiches, mit oder ohne Prefix #.
<end color number> Endfarbnummer des Farbbereiches, mit oder ohne Prefix #.
<lower value> unterer Wert, des Bereiches auf den die Farbnummer skaliert wird.
<upper value> oberer Wert, des Bereiches auf den die Farbnummer skaliert wird.
<current value> aktueller Wert, für den die Farbnummer erzeugt wird.
FW_makeImage(<iconname[@color number]>)
gibt HTML-Code zurück, der ein FHEM icon einbindet.
<color number> optionale Farbnummer in Großschreibung, mit oder ohne Prefix #.
weitere Infos im Quelltext von 01_FHEMWEB.pm.
Perl Modus
Der Perl-Modus ist sowohl für einfache, als auch für komplexere Automatisierungsabläufe geeignet. Der Anwender hat mehr Einfluss auf den Ablauf der Steuerung als im FHEM-Modus.
Die Abläufe lassen sich, wie in höheren Programmiersprachen üblich, strukturiert programmieren. Zum Zeitpunkt der Definition werden alle DOIF-spezifischen Angaben in Perl übersetzt, zum Zeitpunkt der Ausführung wird nur noch Perl ausgeführt, damit wird maximale Performance gewährleistet.
Syntax Perl-Modus:
define <name> DOIF <Blockname> {<Ereignisblock: Perlcode mit Ereignis-/Zeittriggern in eckigen Klammern>}
Ein Ereignisblock wird ausgeführt, wenn dieser bedingt durch Ereignis- und Zeittrigger in eckigen Klammern innerhalb des Blocks, getriggert wird.
Es wird die vollständige Perl-Syntax unterstützt. Es können beliebig viele Ereignisblöcke innerhalb eines DOIF-Devices definiert werden. Sie werden unabhängig voneinander durch passende Trigger ausgeführt. Der Name eines Ereignisblocks ist optional.
Der Status des Moduls wird nicht vom Modul gesetzt, er kann vom Anwender mit Hilfe der Funktion set_State verändert werden, siehe spezifische Perl-Funktionen im Perl-Modus.
FHEM-Befehle werden durch den Aufruf der Perlfunktion fhem("...") ausgeführt. Für den häufig genutzten fhem-Befehl set wurde eine kompatible Perlfunkton namens fhem_set definiert.
Sie ist performanter und sollte bevorzugt verwendet werden, da das Parsen nach dem FHEM set-Befehl entfällt.
Der Benutzer kann mit der Funktion set_Exec beliebig viele eigene Timer definieren, die unabhängig voneinander gesetzt und ausgewertet werden können, siehe Spezifische Perl-Funktionen im Perl-Modus.
Definitionen im FHEM-Modus mit do-Attribut der Form:
DOIF (<Bedingung mit Trigger>) (<FHEM-Befehle>) DOELSE (<FHEM-Befehle>)
lassen sich wie folgt in Perl-Modus übertragen:
DOIF {if (<Bedingung mit Trigger>) {fhem"<FHEM-Befehle>"} else {fhem"<FHEM-Befehle>"}}
Die Bedingungen des FHEM-Modus können ohne Änderungen in Perl-Modus übernommen werden.
Einfache Anwendungsbeispiele (vgl. Anwendungsbeispiele im FHEM-Modus): define di_rc_tv DOIF {if ([remotecontol:"on"]) {fhem"set tv on"} else {fhem"set tv off"}}
define di_clock_radio DOIF {if ([06:30|Mo Di Mi] or [08:30|Do Fr Sa So]) {fhem"set radio on"}} {if ([08:00|Mo Di Mi] or [09:30|Do Fr Sa So]) {fhem"set radio off"}}
Bemerkung: Im Gegensatz zum FHEM-Modus arbeitet der Perl-Modus ohne Zustandsauswertung, daher muss der Anwender selbst darauf achten, wiederholende Ausführungen zu vermeiden (im oberen Beispiel z.B. mit FILTER-Option)
Es können beliebig viele Ereignisblöcke definiert werden, die unabhängig von einander durch einen Trigger ausgewertet und zur Ausführung führen können:
DOIF
{ if (<Bedingung mit Trigger>) ... }
{ if (<Bedingung mit Trigger>) ... }
...
Es sind beliebige Hierarchietiefen möglich:
DOIF
{ if (<Bedingung>) {
if (<Bedingung>) {
if (...
...
}
}
}
}
Bemerkung: Innerhalb eines Ereignisblocks muss mindestens ein Trigger definiert werden, damit der gesamte Block beim passenden Trigger ausgeführt wird.
Inhaltsübersicht (Beispiele im Perlmodus sind besonders gekennzeichnet)
Ein besonderer Block ist der Block namens subs. In diesem Block werden Perlfunktionen definiert, die innerhalb des DOIFs genutzt werden.
Um eine möglichst hohe Kompatibilität zu Perl sicherzustellen, wird keine DOIF-Syntax in eckigen Klammern unterstützt, insb. gibt es keine Trigger, die den Block ausführen können.
Beispiel:
DOIF
subs { ## Definition von Perlfunktionen lamp_on und lamp_off
sub lamp_on {
fhem_set("lamp on");
set_State("on");
}
sub lamp_off {
fhem_set("lamp off");
set_State("off");
}
}
{[06:00];lamp_on()} ## Um 06:00 Uhr wird die Funktion lamp_on aufgerufen
{[08:00];lamp_off()} ## Um 08:00 Uhr wird die Funktion lamp_off aufgerufen
Eigene Funktionen mit Parametern
Unter Verwendung von Funktionsparamerter lassen sich Definitionen oft vereinfachen, das obige Beispiel lässt sich mit Hilfe nur einer Funktion kürzer wie folgt definieren:
DOIF
subs { ## Definition der Perlfunktion lamp
sub lamp {
my ($state)=@_;  # Variable $state mit dem Parameter belegen
fhem_set("lamp $state");
set_State($state);
}
}
{[06:00];lamp("on")} ## Um 06:00 Uhr wird die Funktion lamp mit Parameter "on" aufgerufen
{[08:00];lamp("off")} ## Um 08:00 Uhr wird die Funktion lamp mit dem Parameter "off" aufgerufen
Der Namensraum im Perl-Modus ist gekapselt. Selbstdefinierte Funktionen im DOIF-Device können nicht bereits existierende Perlfunktionen in FHEM (Namensraum main) überschreiben.
Funktionen aus dem Namensraum main müssen mit vorangestellem Doppelpunkt angegeben werden: ::<perlfunction>
Eigene Perlfunktionen, die in myutils ausgelagert sind, befinden sich ebenfalls im Namensraum main. Wenn sie ausschließich in DOIF-Devices benutzt werden sollen, so kann am Anfang vor deren Definition in myutils "package DOIF;" angegeben werden.
In diesen Fall sind auch diese Funktion im DOIF-Device bekannt - sie können dann ohne vorangestellten Doppelpunkt genutzt werden.
Folgende FHEM-Perlfunktonen wurden ebenfalls im DOIF-Namensraum definiert, sie können, wie gewohnt ohne Doppelpunkt genutzt werden:
FHEM set-Befehl ausführen: fhem_set(<content>), mit <content> Übergabeparameter des FHEM set-Befehls
Beispiel: Lampe ausschalten:
fhem_set("lamp off");
entspricht:
fhem("set lamp off");
Der Aufruf der fhem_set-Funktion ist performater, da das Parsen nach dem set-Befehl im Gegensatz zum Aufruf mit der Funkton fhem entfällt.
Ein beliebiges FHEM-Event absetzen: set_Event(<Event>)
Beispiel: Setze das Event "on":
set_Event("on");
Status setzen: set_State(<value>,<trigger>), mit <trigger>: 0 ohne Trigger, 1 mit Trigger, <trigger> ist optional, default ist 1
Beispiel: Status des eignen DOIF-Device auf "on" setzen:
set_State("on");
Status des eigenen DOIF-Devices holen: get_State()
Beispiel: Schalte lampe mit dem eigenen Status:
fhem_set("lamp ".get_State());
Reading des eigenen DOIF-Devices schreiben: set_Reading(<readingName>,<value>,<trigger>), mit <trigger>: 0 ohne Trigger, 1 mit Trigger, <trigger> ist optional, default ist 0
set_Reading("weather","cold");
Reading des eigenen DOIF-Devices holen: get_Reading(<readingName>)
Beispiel: Schalte Lampe mit dem Inhalt des eigenen Readings "dim":
fhem_set("lamp ".get_Reading("dim"));
Setzen mehrerer Readings des eigenen DOIF-Devices in einem Eventblock:
set_Reading_Begin() set_Reading_Update(<readingName>,<value>,<change>), <change> ist optional set_Reading_End(<trigger>), mit <trigger>: 0 ohne Trigger, 1 mit Trigger, <trigger>
Die obigen Funktionen entsprechen den FHEM-Perlfunktionen: readingsBegin, readingsBulkUpdate, readingsEndUpdate.
Beispiel:
Die Readings "temperature" und "humidity" sollen in einem Eventblock mit dem zuvor belegten Inhalt der Variablen $temp bzw. $hum belegt werden.
Mit Hilfe von Ausführungstimern können Anweisungen verzögert ausgeführt werden. Im Gegensatz zum FHEM-Modus können beliebig viele Timer gleichzeitig genutzt werden.
Ein Ausführungstimer wird mit einem Timer-Namen eindeutig definiert. Über den Timer-Namen kann die Restlaufzeit abgefragt werden, ebenfalls kann er vor seinem Ablauf gelöscht werden.
Timer setzen: set_Exec(<timerName>, <seconds>, <perlCode>, <parameter>), mit <timerName>: beliebige Angabe, sie spezifiziert eindeutig einen Timer,
welcher nach Ablauf den angegebenen Perlcode <perlCode> aufruft. Falls als Perlcode eine Perlfunktion angegeben wird, kann optional ein Übergabeparameter <parameter> angegeben werden. Die Perlfunkion muss eindeutig sein und in FHEM zuvor deklariert worden sein.
Wird set_Exec mit dem gleichen <timerName> vor seinem Ablauf erneut aufgerufen, so wird der laufender Timer gelöscht und neugesetzt.
Timer holen: get_Exec(<timerName>), Returnwert: 0, wenn Timer abgelaufen oder nicht gesetzt ist, sonst Anzahl der Sekunden bis zum Ablauf des Timers
Laufenden Timer löschen: del_Exec(<timerName>)
Beispiel: Funktion namens "lamp" mit dem Übergabeparameter "on" 5 Sekunden verögert aufrufen:
set_Exec("lamp_timer",30,'lamp','on');
alternativ
set_Exec("lamp_timer",30,'lamp("on")');
Beispiel: Lampe verzögert um 30 Sekunden ausschalten:
set_Exec("off",30,'fhem_set("lamp off")');
Beispiel: Das Event "off" 30 Sekunden verzögert auslösen:
set_Exec("off_Event",30,'set_Event("off")');
init-Block
Wird ein Ereignisblock mit dem Namen init benannt, so wird dieser Block beim Systemstart ausgeführt. Er bietet sich insb. an, um Device-Variablen des Moduls vorzubelegen.
Device-Variablen
Device-Variablen sind sogenannte Instanzvariablen, die global innerhalb eines DOIF-Devices genutzt werden können. Deren Inhalt bleibt während der Laufzeit des System erhalten. Sie beginnen mit $_ und müssen nicht deklariert werden.
Wenn sie nicht vorbelegt werden, gelten sie als nicht definiert. Das lässt sich abfragen mit:
if (defined $_...) ...
Instanzvariablen überleben nicht den Neustart, sie können jedoch z.B. im init-Block, der beim Systemstart ausgewertet wird, aus Readings vorbelegt werden.
Bsp. Vorbelgung einer Instanzvariablen beim Systemstart mit dem Status des Moduls:
init {$_status=get_State()}
Instanzvariablen lassen sich indizieren, z. B.:
my $i=0;
$_betrag{$i}=100;
Ebenso funktionieren hash-Variablen z. B.: $_betrag{heute}=100;
Blokierende Funktionsaufrufe (blocking calls)
DOIF verwaltet blockierende Funktionsaufrufe, d.h. die in diesem Zusammenhang gestarteten FHEM-Instanzen werden gelöscht, beim Herunterfahren (shutdown), Wiedereinlesen der Konfiguration (rereadcfg) Änderung der Konfiguration (modify) und Deaktivieren des Gerätes (disabled).
Die Handhabung von blockierenden Funktionsaufrufen ist im FHEMwiki erklärt, s. Blocking Call.
Der von der Funktion BlockingCall zurückgegebene Datensatz ist unterhalb von $_blockingcalls abzulegen, z.B.
Für unterschiedliche blockierende Funktionen ist jeweils ein eigener Name (<blocking call name>) unterhalb von $_blockingcalls anzulegen.
Wenn <blocking function>, <finish function> und <abort function> im Package DOIF definiert werden, dann ist dem Funktionsnamen DOIF:: voranzustellen, im Aufruf der Funktion BlockingCall, z.B. DOIF::<blocking function>
$_blockingcalls ist eine für DOIF reservierte Variable und darf nur in der beschriebener Weise verwendet werden.
define di_light DOIF {
if (["FS:motion"]) { # bei Bewegung
fhem_set("lamp on") if ([?lamp] ne "on"); # Lampe einschalten, wenn sie nicht an ist
set_Exec("off",30,'fhem_set("lamp off")'); # Timer namens "off" für das Ausschalten der Lampe auf 30 Sekunden setzen bzw. verlängern
}
}
Einknopf-Fernbedienung
Anforderung: Wenn eine Taste innerhalb von zwei Sekunden zwei mal betätig wird, soll der Rollladen nach oben, bei einem Tastendruck nach unten.
define di_shutter DOIF {
if (["FS:^on$"] and !get_Exec("shutter")){ # wenn Taste betätigt wird und kein Timer läuft
set_Exec("shutter",2,'fhem_set("shutter down")'); # Timer zum shutter down auf zwei Sekunden setzen
} else { # wenn Timer läuft, d.h. ein weitere Tastendruck innerhalb von zwei Sekunden
del_Exec("shutter"); # Timer löschen
fhem_set("shutter up"); # Rollladen hoch
}
}
Aktion auslösen, wenn innerhalb einer bestimmten Zeitspanne ein Ereignis x mal eintritt
Im folgenden Beispiel wird die Nutzung von Device-Variablen demonstriert.
define di_count DOIF {
if (["FS:on"] and !get_Exec("counter")) { # wenn Ereignis (hier "FS:on") eintritt und kein Timer läuft
$_count=1; # setze count-Variable auf 1
set_Exec("counter",3600,'Log (3,"count: $_count action") if ($_count > 10)'); # setze Timer auf eine Stunde zum Protokollieren der Anzahl der Ereignisse, wenn sie über 10 ist
} else {
$_count++; # wenn Timer bereits läuft zähle Ereignis
}
}
Verzögerte Fenster-offen-Meldung mit Wiederholung für mehrere Fenster
define di_window DOIF
subs {
sub logwin { # Definition der Funkton namens "logwin"
my ($window)=@_; # übernehme Parameter in die Variable $window
Log 3,"Fenster offen, bitte schließen: $window"; # protokolliere Fenster-Offen-Meldung
set_Exec ("$window",1800,"logwin",$window); # setze Timer auf 30 Minuten für eine wiederholte Meldung
}
}
{ if (["_window$:open"]) {set_Exec ("$DEVICE",600,'logwin("$DEVICE")')}} # wenn, Fenster geöffnet wird, dann setze Timer auf Funktion zum Loggen namens "logwin"
{ if (["_window$:closed"]) {del_Exec ("$DEVICE")}} # wenn, Fenster geschlossen wird, dann lösche Timer
define <name> DOIFtools
Es ist nur eine Definition pro FHEM Installation möglich. Die Definition wird mit den vorhanden DOIF-Namen ergänzt, daher erscheinen alle DOIF-Geräte in der Liste probably associated with. Zusätzlich wird in jedem DOIF-Gerät in dieser Liste auf das DOIFtool verwiesen.
set <name> deleteReadingInTargetDOIF <readings to delete name> deleteReadingInTargetDOIF löscht die benutzerdefinierten Readings im Ziel-DOIF
set <name> targetDOIF <target name> targetDOIF vor dem Löschen der Readings muss das Ziel-DOIF gesetzt werden.
set <name> deleteReadingInTargetDevice <readings to delete name> deleteReadingInTargetDevice löscht sichtbare Readings, ausser state im Ziel-Gerät. Bitte den Gefahrenhinweis zum Befehl deletereading beachten ! Commandref#deletereading
set <name> targetDevice <target name> targetDevice vor dem Löschen der Readings muss das Ziel-Gerät gesetzt werden.
set <name> sourceAttribute <readingList> sourceAttribute vor dem Erstellen einer ReadingsGroup muss das Attribut gesetzt werden aus dem die Readings gelesen werden, um die ReadingsGroup zu erstellen und zu beschriften. Default, readingsList
set <name> statisticsDeviceFilterRegex <regular expression as device filter> statisticsDeviceFilterRegex setzt einen Filter auf Gerätenamen, nur die gefilterten Geräte werden im Bericht ausgewertet. Default, ".*".
set <name> statisticsTYPEs <List of TYPE used for statistics generation> statisticsTYPEs setzt eine Liste von TYPE für die Statistikdaten erfasst werden, bestehende Statistikdaten werden gelöscht. Default, "".
set <name> statisticsShowRate_ge <integer value for event rate> statisticsShowRate_ge setzt eine Event-Rate, ab der ein Gerät in die Auswertung einbezogen wird. Default, 0.
set <name> specialLog <0|1> specialLog1 DOIF-Listing bei Status und Wait-Timer Aktualisierung im Debug-Logfile. Default, 0.
set <name> doStatistics <enabled|disabled|deleted> doStatistics deleted setzt die Statistik zurück und löscht alle stat_ Readings. disabled pausiert die Statistikdatenerfassung. enabled startet die Statistikdatenerfassung.
set <name> recording_target_duration <hours> recording_target_duration gibt an wie lange Daten erfasst werden sollen. Default, 0 die Dauer ist nicht begrenzt.
Get
get <name> DOIF_to_Log <DOIF names for logging> DOIF_to_Log erstellt eine FileLog-Definition, die für alle angegebenen DOIF-Definitionen loggt. Der Reguläre Ausdruck wird aus den, direkt in den DOIF-Greräte angegebenen und den wahrscheinlich verbundenen Geräten, ermittelt.
get <name> checkDOIF checkDOIF führt eine einfache Syntaxprüfung durch und empfiehlt Änderungen für DOIF-Modus FHEM.
get <name> readingsGroup_for <DOIF names to create readings groups> readingsGroup_for erstellt readingsGroup-Definitionen für die angegebenen DOIF-namen. sourceAttribute verweist auf das Attribut, dessen Readingsliste als Basis verwendet wird. Die Eingabeelemente im Frontend werden mit den Readingsnamen beschriftet.
get <name> userReading_nextTimer_for <DOIF names where to create real date timer readings> userReading_nextTimer_for erstellt userReadings-Attribute für Timer-Readings mit realem Datum für Timer, die mit Wochentagangaben angegeben sind, davon ausgenommen sind indirekte Wochentagsangaben.
get <name> statisticsReport statisticsReport erstellt einen Bericht aus der laufenden Datenerfassung.
Die Statistik kann genutzt werden, um Geräte mit hohen Ereignisaufkommen zu erkennen. Bei einer hohen Rate, sollte im Interesse der Systemperformance geprüft werden, ob die Events eingeschränkt werden können. Werden keine Events eines Gerätes weiterverarbeitet, kann das Attribut event-on-change-reading auf none oder eine andere Zeichenfolge, die im Gerät nicht als Readingname vorkommt, gesetzt werden.FHEM-Wiki: Events
get <name> runningTimerInDOIF runningTimerInDOIF zeigt eine Liste der laufenden Timer. Damit kann entschieden werden, ob bei einem Neustart wichtige Timer gelöscht werden und der Neustart ggf. verschoben werden sollte. Zeigt nachrichtlich das Ergebnis von blockinginfo an.
get <name> SetAttrIconForDOIF <DOIF names for setting the attribute icon to helper_doif> SetAttrIconForDOIF setzt für die ausgewählten DOIF das Attribut icon auf helper_doif.
get <name> linearColorGradient <start color number>,<end color number>,<minimal value>,<maximal value>,<step width> linearColorGradient erzeugt eine Tabelle mit linear abgestuften Farbnummern und RGB-Werten.
<start color number>, ist eine HTML-Farbnummer, Beispiel: #0000FF für Blau.
<end color number>, , ist eine HTML-Farbnummer, Beispiel: #FF0000 für Rot.
<minimal value>, der Minimalwert auf den die Startfarbnummer skaliert wird, Beispiel: 7.
<maximal value>, der Maximalwert auf den die Endfarbnummer skaliert wird, Beispiel: 30.
<step width>, für jeden Schritt wird ein Farbwert erzeugt, Beispiel: 0.5.
Beispiel: get DOIFtools linearColorGradient #0000FF,#FF0000,7,30,0.5
get <name> modelColorGradient <minimal value>,<middle value>,<maximal value>,<step width>,<color model> modelColorGradient erzeugt eine Tabelle mit modellbedingt abgestuften Farbnummern und RGB-Werten, siehe FHEM-Wiki Farbskala mit Color::pahColor
<minimal value>, der Minimalwert auf den die Startfarbnummer skaliert wird, Beispiel: 7.
<middle value>, der Mittenwert ist ein Fixpunkt zwischen Minimal- u. Maximalwert, Beispiel: 20.
<maximal value>, der Maximalwert auf den die Endfarbnummer skaliert wird, Beispiel: 30.
<step width>, für jeden Schritt wird ein Farbwert erzeugt, Beispiel: 1.
<color model>, die Angabe eines vordefinierten Modells <0|1|2> oder fünf RGB-Werte als Array [r1,g1,b1,r2,g2,b2,r3,g3,b3,r4,g4,b4,r5,g5,b5] für ein eigenes Model.
Beispiele: get DOIFtools modelColorGradient 7,20,30,1,0 get DOIFtools modelColorGradient 0,50,100,5,[255,255,0,127,255,0,0,255,0,0,255,255,0,127,255] Farbskala mit Color::pahColor
get <name> hsvColorGradient <HUE start value>,<HUE end value>,<minimal value>,<maximal value>,<step width>,<saturation>,<lightness> hsvColorGradient erzeugt eine Tabelle über HUE-Werte abgestufte Farbnummern und RGB-Werten.
<Hue start value>, der HUE-Startwert, Beispiel: 240 für Blau.
<HUE end value>, der HUE-Endwert, Beispiel: 360 für Rot.
<minimal value>, der Minimalwert auf den der HUE-Startwert skaliert wird, Beispiel: 7.
<maximal value>, der Maximalwert auf den der HUE-Endwert skaliert wird, Beispiel: 30.
<step width>, für jeden Schritt wird ein Farbwert erzeugt, Beispiel: 1.
<saturation>, die Angabe eines Wertes für die Farbsättigung <0-100>, Beispiel 80.
<lightness>, die Angabe eines Wertes für die Helligkeit <0-100>, Beispiel 80.
Beispiele: get DOIFtools hsvColorGradient 240,360,7,30,1,80,80
Attribute
attr <name> DOIFtoolsExecuteDefinition <0|1> DOIFtoolsExecuteDefinition1 führt die erzeugten Definitionen aus. Default 0, zeigt die erzeugten Definitionen an, sie können mit Raw definition importiert werden.
attr <name> DOIFtoolsExecuteSave <0|1> DOIFtoolsExecuteSave1, die Definitionen werden automatisch gespeichert. Default 0, der Benutzer kann die Definitionen speichern.
attr <name> DOIFtoolsTargetGroup <group names for target> DOIFtoolsTargetGroup gibt die Gruppen für die zu erstellenden Definitionen an. Default, die Gruppe der Ursprungs Definition.
attr <name> DOIFtoolsTargetRoom <room names for target> DOIFtoolsTargetRoom gibt die Räume für die zu erstellenden Definitionen an. Default, der Raum der Ursprungs Definition.
attr <name> DOIFtoolsReadingsPrefix <user defined prefix> DOIFtoolsReadingsPrefix legt den Präfix der benutzerdefinierten Readingsnamen für die Zieldefinition fest. Default, DOIFtools bestimmt den Präfix.
attr <name> DOIFtoolsEventMonitorInDOIF <1|0> DOIFtoolsEventMonitorInDOIF1, die Anzeige des Event-Monitors wird in DOIF ermöglicht. Default 0, kein Zugriff auf den Event-Monitor im DOIF.
attr <name> DOIFtoolsEMbeforeReadings <1|0> DOIFtoolsEMbeforeReading1, die Anzeige des Event-Monitors wird in DOIF direkt über den Readings angezeigt. Default 0, anzeige des Event-Monitors über den Internals.
attr <name> DOIFtoolsHideGetSet <0|1> DOIFtoolsHideGetSet1, verstecken der Set- und Get-Shortcuts. Default 0.
attr <name> DOIFtoolsNoLookUp <0|1> DOIFtoolsNoLookUp1, es werden keine Lookup-Fenster in DOIFtools geöffnet. Default 0.
attr <name> DOIFtoolsNoLookUpInDOIF <0|1> DOIFtoolsNoLookUpInDOIF1, es werden keine Lookup-Fenster in DOIF geöffnet. Default 0.
attr <name> DOIFtoolsHideStatReadings <0|1> DOIFtoolsHideStatReadings1, verstecken der stat_ Readings. Das Ändern des Attributs löscht eine bestehende Event-Aufzeichnung. Default 0.
attr <name> DOIFtoolsEventOnDeleted <0|1> DOIFtoolsEventOnDeleted1, es werden Events für alle stat_ erzeugt, bevor sie gelöscht werden. Damit könnten die erfassten Daten geloggt werden. Default 0.
attr <name> DOIFtoolsMyShortcuts <shortcut name>,<command>, ... DOIFtoolsMyShortcuts <Bezeichnung>,<Befehl>,... anzeigen eigener Shortcuts, siehe globales Attribut menuEntries.
Zusätzlich gilt, wenn ein Eintrag mit ## beginnt und mit ,, endet, wird er als HTML interpretiert. Beispiel: attr DOIFtools DOIFtoolsMyShortcuts ##<br>My Shortcuts:,,list DOIFtools,fhem?cmd=list DOIFtools menuEntries attr <name> DOIFtoolsMenuEntry <0|1> DOIFtoolsMenuEntry1, erzeugt einen Menüeintrag im FHEM-Menü. Default 0.
attr <name> DOIFtoolsLogDir <path to DOIFtools logfile> DOIFtoolsLogDir<path>, gibt den Pfad zum Logfile an Default ./log oder der Pfad aus dem Attribut global logdir.
Der Deutsche Wetterdienst (DWD) stellt Wetterdaten über den Open Data Server zur Verfügung. Die Verwendung dieses Dienstes und der vom DWD zur Verfügung gestellten Daten unterliegt den auf der OpenData Webseite beschriebenen Bedingungen. Einen Überblick über die verfügbaren Daten findet man in der Tabelle OpenData_weather_content.xls.
Eine Installationsbeschreibung findet sich in der FHEMWiki.
Eine detaillierte Modulbeschreibung gibt es auf Englisch - siehe die englische Modulhilfe von DWD_OpenData.
Erstellt eine Übersicht in der Gruppen angeordnet werden können. Dabei können die Gruppen mit Drag'n Drop frei positioniert
und in mehreren Spalten angeordnet werden. Auch kann die Breite und Höhe einer Gruppe über die Mindestgröße hinaus gezogen werden.
Sperrt das Dashboard so das keine Positionsänderungen vorgenommen werden können set <name> unlock
Entsperrt das Dashboard
Get
N/A
Attributes
dashboard_tabcount
Gibt die Anzahl der angezeigten Tabs an. (Dieser Parameter is veraletet, die Anzahl der Tabs wird aus der Dashboard-Konfiguration gelesen)
Standard: 1
dashboard_activetab
Gibt an welches Tab aktiviert ist. Kann manuell gesetzt werden, wird aber auch durch den Schalter "Set" auf das gerade aktive Tab gesetzt.
Standard: 1
dashboard_tabXname
Titel des X. Tab.
dashboard_tabXsorting
Enthält die Poistionierung jeder Gruppe im Tab X. Der Wert wird mit der Schaltfläche "Set" geschrieben. Es wird nicht empfohlen dieses Attribut manuelle zu ändern
dashboard_row
Auswahl welche Zeilen angezeigt werden sollen. top (nur Oben), center (nur Mitte), bottom (nur Unten) und den Kombinationen daraus.
Standard: center
dashboard_width
Zum bestimmen der Dashboardbreite. Der Wert kann in % (z.B. 80%) angegeben werden oder als absolute Breite (z.B. 1200) in Pixel.
Standard: 100%
dashboard_rowcenterheight
Höhe der mittleren Zeile, in der die Gruppen angeordnet werden.
Standard: 400
dashboard_rowcentercolwidth
Über dieses Attribut wird die Breite der einzelnen Spalten der mittleren Dashboardreihe festgelegt. Dabei kann je Spalte ein separater Wert hinterlegt werden.
Die Werte sind durch ein Komma (ohne Leerzeichen) zu trennen. Jeder Wert bestimmt die Spaltenbreite in %! Der erste Wert gibt die Breite der ersten Spalte an,
der zweite Wert die Breite der zweiten Spalte usw. Ist die Summe der Breite größer als 100 werden die Spaltenbreiten reduziert.
Sind mehr Spalten als Breiten definiert werden die fehlenden Breiten um die Differenz zu 100 festgelegt. Sind hingegen weniger Spalten als Werte definiert werden
die überschüssigen Werte ignoriert.
Standard: 100
dashboard_rowtopheight
Höhe der oberen Zeile, in der die Gruppen angeordnet werden.
Standard: 250
"dashboard_rowbottomheight
Höhe der unteren Zeile, in der die Gruppen angeordnet werden.
Standard: 250
dashboard_tab1groups
Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 1 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":<icon>@<farbe>"ergänzt werden
Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
Der Gruppenname kann ebenfalls einen regulären Ausdruck beinhalten, um alle Gruppen anzuzeigen, die darauf passen.
Beispiel: .*Licht.* zeigt alle Gruppen an, die das Wort "Licht" im Namen haben.
dashboard_tabXdevices
devspec Liste von Geräten, die im Tab angezeigt werden sollen. Das format ist:
GROUPNAME:devspec1,devspec2,...,devspecN:ICONNAME
Das Icon ist optional. Auch der Gruppenname muss nicht vorhanden sein. Im Falle dass dieser fehlt, werden die gefunden Geräte nicht gruppiert sondern als einzelne Widgets im Tab angezeigt. Für weitere Details bezüglich devspec:
Dev-Spec
dashboard_tabXicon
Zeigt am Tab ein Icon an. Es muss sich dabei um ein exisitereindes Icon mit modpath Verzeichnis handeln. Handelt es sich um ein SVG Icon kann der Suffix @colorname für die Farbe des Icons angegeben werden.
dashboard_colcount
Die Anzahl der Spalten in der Gruppen dargestellt werden können. Dennoch ist es möglich, mehrere Gruppen
in einer Spalte nebeneinander zu positionieren. Dies ist abhängig von der Breite der Spalten und Gruppen.
Gilt nur für die mittlere Spalte!
Standard: 1
dashboard_tabXcolcount
Die Anzahl der Spalten im Tab X in der Gruppen dargestellt werden können. Dennoch ist es möglich, mehrere Gruppen
in einer Spalte nebeneinander zu positionieren. Dies ist abhängig von der Breite der Spalten und Gruppen.
Gilt nur für die mittlere Spalte!
Standard:
dashboard_tabXbackgroundimage
Zeigt ein Hintergrundbild für den X-ten Tab an. Das Bild wird nicht gestreckt, es sollte also auf die Größe des Tabs passen oder diese überschreiten.
Standard:
dashboard_flexible
Hat dieser Parameter einen Wert > 0, dann können die Widgets in den Tabs frei positioniert werden und hängen nicht mehr an den Spalten fest. Der Wert gibt ebenfalls das Raster an, in dem die Positionierung "zu schnappt".
Standard: 0
dashboard_showfullsize
Blendet die FHEMWEB Raumliste (kompleter linker Bereich der Seite) und den oberen Bereich von FHEMWEB aus wenn der Wert auf 1 gesetzt ist.
Default: 0
dashboard_showtabs
Zeigt die Tabs/Schalterleiste des Dashboards oben oder unten an, oder blendet diese aus. Wenn die Schalterleiste ausgeblendet wird ist das Dashboard gespert.
Standard: tabs-and-buttonbar-at-the-top
dashboard_showtogglebuttons
Zeigt eine Schaltfläche in jeder Gruppe mit der man diese auf- und zuklappen kann.
Standard: 0
dashboard_backgroundimage
Zeig in Hintergrundbild im Dashboard an. Das Bild wird nicht gestreckt, es sollte daher auf die Größe des Dashboards passen oder diese überschreiten.
Default:
dashboard_debug
Zeigt Debug-Felder an. Sollte nicht gesetzt werden!
Standard: 0
Zunächst muss die Datenbank angelegt werden.
Beispielcode bzw. Scripts zum Erstellen einer MySQL/PostgreSQL/SQLite Datenbank ist im
SVN -> contrib/dblog/db_create_<DBType>.sql
enthalten.
(Achtung: Die lokale FHEM-Installation enthält im Unterverzeichnis ./contrib/dblog nicht die aktuellsten
Scripte !!)
Die Datenbank beinhaltet 2 Tabellen: current und history.
Die Tabelle current enthält den letzten Stand pro Device und Reading.
In der Tabelle history sind alle Events historisch gespeichert.
Beachten sie bitte unbedingt das Attribut DbLogType um die Benutzung der Tabellen
current und history festzulegen.
Die Tabellenspalten haben folgende Bedeutung:
TIMESTAMP
: Zeitpunkt des Events, z.B. 2007-12-30 21:45:22
DEVICE
: Name des Devices, z.B. Wetterstation
TYPE
: Type des Devices, z.B. KS300
EVENT
: das auftretende Event als volle Zeichenkette, z.B. humidity: 71 (%)
READING
: Name des Readings, ermittelt aus dem Event, z.B. humidity
VALUE
: aktueller Wert des Readings, ermittelt aus dem Event, z.B. 71
UNIT
: Einheit, ermittelt aus dem Event, z.B. %
Index anlegen
Für die Leseperformance, z.B. bei der Erstellung von SVG-PLots, ist es von besonderer Bedeutung dass der Index "Search_Idx"
oder ein vergleichbarer Index (z.B. ein Primary Key) angelegt ist.
Der Index "Search_Idx" kann mit diesen Statements, z.B. in der Datenbank 'fhem', angelegt werden (auch nachträglich):
MySQL
: CREATE INDEX Search_Idx ON `fhem`.`history` (DEVICE, READING, TIMESTAMP);
SQLite
: CREATE INDEX Search_Idx ON `history` (DEVICE, READING, TIMESTAMP);
PostgreSQL
: CREATE INDEX "Search_Idx" ON history USING btree (device, reading, "timestamp");
Für die Verbindung zur Datenbank wird eine Konfigurationsdatei verwendet.
Die Konfiguration ist in einer sparaten Datei abgelegt um das Datenbankpasswort nicht in Klartext in der
FHEM-Haupt-Konfigurationsdatei speichern zu müssen.
Ansonsten wäre es mittels des list Befehls einfach auslesbar.
Die Konfigurationsdatei wird z.B. nach /opt/fhem kopiert und hat folgenden Aufbau, den man an seine Umgebung
anpassen muß (entsprechende Zeilen entkommentieren und anpassen):
####################################################################################
# database configuration file
#
# NOTE:
# If you don't use a value for user / password please delete the leading hash mark
# and write 'user => ""' respectively 'password => ""' instead !
#
#
## for MySQL
####################################################################################
#%dbconfig= (
# connection => "mysql:database=fhem;host=<database host>;port=3306",
# user => "fhemuser",
# password => "fhempassword",
# # optional enable(1) / disable(0) UTF-8 support (at least V 4.042 is necessary)
# utf8 => 1
#);
####################################################################################
#
## for PostgreSQL
####################################################################################
#%dbconfig= (
# connection => "Pg:database=fhem;host=<database host>",
# user => "fhemuser",
# password => "fhempassword"
#);
####################################################################################
#
## for SQLite (username and password stay empty for SQLite)
####################################################################################
#%dbconfig= (
# connection => "SQLite:dbname=/opt/fhem/fhem.db",
# user => "",
# password => ""
#);
####################################################################################
Wird configDB genutzt, ist das Konfigurationsfile in die configDB hochzuladen !
Hinweis zu Sonderzeichen:
Werden Sonderzeichen, wie z.B. @, $ oder %, welche eine programmtechnische Bedeutung in Perl haben im Passwort verwendet,
sind diese Zeichen zu escapen.
Das heißt in diesem Beispiel wäre zu verwenden: \@,\$ bzw. \%.
Define
define <name> DbLog <configfilename> <regexp>
<configfilename> ist die vorbereitete Konfigurationsdatei. <regexp> ist identisch FileLog der Filelog-Definition.
Beispiel:
define myDbLog DbLog /etc/fhem/db.conf .*:.*
speichert alles in der Datenbank
Nachdem das DbLog-Device definiert wurde, ist empfohlen einen Konfigurationscheck auszuführen:
set <name> configCheck
Dieser Check prüft einige wichtige Einstellungen des DbLog-Devices und gibt Empfehlungen für potentielle Verbesserungen.
DbLog unterscheidet den synchronen (Default) und asynchronen Logmodus. Der Logmodus ist über das
Attribut asyncMode einstellbar. Ab Version 2.13.5 unterstützt DbLog einen gesetzten
Primary Key (PK) in den Tabellen Current und History. Soll PostgreSQL mit PK genutzt werden, muss PostgreSQL mindestens
Version 9.5 sein.
Der gespeicherte Wert des Readings wird optimiert für eine automatisierte Nachverarbeitung, z.B. yes wird transformiert
nach 1.
Die gespeicherten Werte können mittels GET Funktion angezeigt werden:
get myDbLog - - 2012-11-10 2012-11-10 KS300:temperature
FileLog-Dateien nach DbLog übertragen
Zur Übertragung von vorhandenen Filelog-Daten in die DbLog-Datenbank steht das spezielle Modul 98_FileLogConvert.pm
zur Verfügung.
Dieses Modul kann hier
bzw. aus dem Verzeichnis ./contrib geladen werden.
Weitere Informationen und Hilfestellung gibt es im entsprechenden
Forumthread .
Reporting und Management von DbLog-Datenbankinhalten
Mit Hilfe SVG können Datenbankinhalte visualisiert werden.
Darüber hinaus kann das Modul DbRep genutzt werden um tabellarische
Datenbankauswertungen anzufertigen oder den Datenbankinhalt mit den zur Verfügung stehenden Funktionen zu verwalten.
Troubleshooting
Wenn nach der erfolgreichen Definition das DbLog-Device nicht wie erwartet arbeitet,
können folgende Hinweise hilfreich sein:
Wurden die vorbereitenden Schritte gemacht, die in der commandref beschrieben sind ? (Softwarekomponenten installieren, Tabellen, Index anlegen)
Wurde ein "set <name> configCheck" nach dem Define durchgeführt und eventuelle Fehler beseitigt bzw. Empfehlungen umgesetzt ?
Falls configDB in Benutzung ... wurde das DB-Konfigurationsfile in configDB importiert (z.B. mit "configDB fileimport ./db.conf") ?
Beim Anlegen eines SVG-Plots erscheint keine Drop-Down Liste mit Vorschlagswerten -> Attribut "DbLogType" auf "Current/History" setzen.
Sollten diese Hinweise nicht zum Erfolg führen, bitte den verbose-Level im DbLog Device auf 4 oder 5 hochsetzen und
die Einträge bezüglich des DbLog-Device im Logfile beachten.
Zur Problemanalyse bitte die Ausgabe von "list <name>", das Ergebnis von "set <name> configCheck" und die
Ausgaben des DbLog-Device im Logfile im Forumthread posten.
Set
set <name> addCacheLine YYYY-MM-DD HH:MM:SS|<device>|<type>|<event>|<reading>|<value>|[<unit>]
Im asynchronen Modus wird ein neuer Datensatz in den Cache eingefügt und beim nächsten Synclauf mit abgearbeitet.
Beispiel:
set <name> addCacheLine 2017-12-05 17:03:59|MaxBathRoom|MAX|valveposition: 95|valveposition|95|%
set <name> addLog <devspec>:<Reading> [Value] [CN=<caller name>] [!useExcludes]
Fügt einen zusatzlichen Logeintrag einer Device/Reading-Kombination in die Datenbank ein.
<devspec>:<Reading> - Das Device kann als Geräte-Spezifikation angegeben werden.
Die Angabe von "Reading" wird als regulärer Ausdruck ausgewertet. Ist
das Reading nicht vorhanden und der Wert "Value" angegeben, wird das Reading
in die DB eingefügt wenn es kein regulärer Ausdruck und ein valider
Readingname ist.
Value - Optional kann "Value" für den Readingwert angegeben werden. Ist Value nicht angegeben, wird der aktuelle
Wert des Readings in die DB eingefügt.
CN=<caller name> - Mit dem Schlüssel "CN=" (Caller Name) kann dem addLog-Aufruf ein String,
z.B. der Name des aufrufenden Devices (z.B. eines at- oder notify-Devices), mitgegeben
werden. Mit Hilfe der im Attribut "valueFn" hinterlegten
Funktion kann dieser Schlüssel über die Variable $CN ausgewertet werden. Dadurch ist es
möglich, das Verhalten des addLogs abhängig von der aufrufenden Quelle zu beeinflussen.
!useExcludes - Ein eventuell im Quell-Device gesetztes Attribut "DbLogExclude" wird von der Funktion berücksichtigt. Soll dieses
Attribut nicht berücksichtigt werden, kann das Schüsselwort "!useExcludes" verwendet werden.
Das Datenbankfeld "EVENT" wird automatisch mit "addLog" belegt.
Es wird KEIN zusätzlicher Event im System erzeugt !
Beispiele:
set <name> addLog SMA_Energymeter:Bezug_Wirkleistung
set <name> addLog TYPE=SSCam:state
set <name> addLog MyWetter:(fc10.*|fc8.*)
set <name> addLog MyWetter:(wind|wind_ch.*) 20 !useExcludes
set <name> addLog TYPE=CUL_HM:FILTER=model=HM-CC-RT-DN:FILTER=subType!=(virtual|):(measured-temp|desired-temp|actuator)
set <name> addLog USV:state CN=di.cronjob
In der valueFn-Funktion wird der Aufrufer "di.cronjob" über die Variable $CN ausgewertet und davon abhängig der
Timestamp dieses addLog korrigiert:
Leert Readings die von verschiedenen DbLog-Funktionen angelegt wurden.
set <name> eraseReadings
Löscht alle Readings außer dem Reading "state".
set <name> commitCache
Im asynchronen Modus (Attribut asyncMode=1), werden die im Speicher gecachten Daten in die Datenbank geschrieben
und danach der Cache geleert. Der interne Timer des asynchronen Modus wird dabei neu gesetzt.
Der Befehl kann nützlich sein um manuell oder z.B. über ein AT den Cacheinhalt zu einem definierten Zeitpunkt in die
Datenbank zu schreiben.
set <name> configCheck
Es werden einige wichtige Einstellungen geprüft und Empfehlungen gegeben falls potentielle Verbesserungen
identifiziert wurden.
set <name> count
Zählt die Datensätze in den Tabellen current und history und schreibt die Ergebnisse in die Readings
countCurrent und countHistory.
set <name> countNbl
Die non-blocking Ausführung von "set <name> count".
Hinweis:
Obwohl die Funktion selbst non-blocking ist, muß das DbLog-Device im asynchronen Modus betrieben werden (asyncMode = 1)
um FHEM nicht zu blockieren !
set <name> deleteOldDays <n>
Löscht Datensätze in Tabelle history, die älter sind als <n> Tage sind.
Die Anzahl der gelöschten Datensätze wird in das Reading lastRowsDeleted geschrieben.
set <name> deleteOldDaysNbl <n>
Identisch zu Funktion "deleteOldDays" wobei deleteOldDaysNbl nicht blockierend ausgeführt wird.
Hinweis:
Obwohl die Funktion selbst non-blocking ist, muß das DbLog-Device im asynchronen Modus betrieben werden (asyncMode = 1)
um FHEM nicht zu blockieren !
set <name> exportCache [nopurge | purgecache]
Wenn DbLog im asynchronen Modus betrieben wird, kann der Cache mit diesem Befehl in ein Textfile geschrieben
werden. Das File wird per Default in dem Verzeichnis (global->modpath)/log/ erstellt. Das Zielverzeichnis kann mit
dem Attribut "expimpdir" geändert werden.
Der Name des Files wird automatisch generiert und enthält den Präfix "cache_", gefolgt von dem DbLog-Devicenamen und
dem aktuellen Zeitstempel, z.B. "cache_LogDB_2017-03-23_22-13-55".
Mit den Optionen "nopurge" bzw. "purgecache" wird festgelegt, ob der Cacheinhalt nach dem Export gelöscht werden
soll oder nicht. Mit "nopurge" (default) bleibt der Cacheinhalt erhalten.
Das Attribut "exportCacheAppend" bestimmt dabei, ob mit jedem Exportvorgang ein neues Exportfile
angelegt wird (default) oder der Cacheinhalt an das bestehende (neueste) Exportfile angehängt wird.
set <name> importCachefile <file>
Importiert ein mit "exportCache" geschriebenes File in die Datenbank.
Die verfügbaren Dateien werden per Default im Verzeichnis (global->modpath)/log/ gesucht und eine Drop-Down Liste
erzeugt sofern Dateien gefunden werden. Das Quellverzeichnis kann mit dem Attribut expimpdir geändert werden.
Es werden nur die Dateien angezeigt, die dem Muster "cache_", gefolgt von dem DbLog-Devicenamen entsprechen.
Zum Beispiel "cache_LogDB_2017-03-23_22-13-55", falls das Log-Device "LogDB" heißt.
Nach einem erfolgreichen Import wird das File mit dem Präfix "impdone_" versehen und erscheint dann nicht mehr
in der Drop-Down Liste. Soll ein Cachefile in eine andere als der Quelldatenbank importiert werden, kann das
DbLog-Device im Filenamen angepasst werden damit dieses File den Suchktiterien entspricht und in der Drop-Down Liste
erscheint.
set <name> listCache
Wenn DbLog im asynchronen Modus betrieben wird (Attribut asyncMode=1), können mit diesem Befehl die im Speicher gecachten Events
angezeigt werden.
set <name> purgeCache
Im asynchronen Modus (Attribut asyncMode=1), werden die im Speicher gecachten Daten gelöscht.
Es werden keine Daten aus dem Cache in die Datenbank geschrieben.
set <name> reduceLog <no>[:<nn>] [average[=day]] [exclude=device1:reading1,device2:reading2,...]
Reduziert historische Datensätze, die älter sind als <no> Tage und (optional) neuer sind als <nn> Tage
auf einen Eintrag (den ersten) pro Stunde je Device & Reading.
Innerhalb von device/reading können SQL-Wildcards "%" und "_" verwendet werden.
Das Reading "reduceLogState" zeigt den Ausführungsstatus des letzten reduceLog-Befehls.
Durch die optionale Angabe von 'average' wird nicht nur die Datenbank bereinigt, sondern alle numerischen Werte
einer Stunde werden auf einen einzigen Mittelwert reduziert.
Durch die optionale Angabe von 'average=day' wird nicht nur die Datenbank bereinigt, sondern alle numerischen
Werte eines Tages auf einen einzigen Mittelwert reduziert. (impliziert 'average')
Optional kann als letzer Parameter "exclude=device1:reading1,device2:reading2,...."
angegeben werden um device/reading Kombinationen von reduceLog auszuschließen.
Optional kann als letzer Parameter "include=device:reading" angegeben werden um
die auf die Datenbank ausgeführte SELECT-Abfrage einzugrenzen, was die RAM-Belastung verringert und die
Performance erhöht.
Beispiel:
set <name> reduceLog 270 average include=Luftdaten_remote:%
ACHTUNG: Es wird dringend empfohlen zu überprüfen ob der standard INDEX 'Search_Idx' in der Tabelle 'history' existiert!
Die Abarbeitung dieses Befehls dauert unter Umständen (ohne INDEX) extrem lange. FHEM wird durch den Befehl bis
zur Fertigstellung komplett blockiert !
set <name> reduceLogNbl <no>[:<nn>] [average[=day]] [exclude=device1:reading1,device2:reading2,...]
Führt die gleiche Funktion wie "set <name> reduceLog" aus. Im Gegensatz zu reduceLog wird mit FHEM wird durch den Befehl reduceLogNbl nicht
mehr blockiert da diese Funktion non-blocking implementiert ist !
Hinweis:
Obwohl die Funktion selbst non-blocking ist, muß das DbLog-Device im asynchronen Modus betrieben werden (asyncMode = 1)
um FHEM nicht zu blockieren !
set <name> reopen [n]
Schließt die Datenbank und öffnet sie danach sofort wieder wenn keine Zeit [n] in Sekunden angegeben wurde.
Dabei wird die Journaldatei geleert und neu angelegt.
Verbessert den Datendurchsatz und vermeidet Speicherplatzprobleme.
Wurde eine optionale Verzögerungszeit [n] in Sekunden angegeben, wird die Verbindung zur Datenbank geschlossen und erst
nach Ablauf von [n] Sekunden wieder neu verbunden.
Im synchronen Modus werden die Events in dieser Zeit nicht gespeichert.
Im asynchronen Modus werden die Events im Cache gespeichert und nach dem Reconnect in die Datenbank geschrieben.
set <name> rereadcfg
Schließt die Datenbank und öffnet sie danach sofort wieder. Dabei wird die Journaldatei geleert und neu angelegt.
Verbessert den Datendurchsatz und vermeidet Speicherplatzprobleme.
Zwischen dem Schließen der Verbindung und dem Neuverbinden werden die Konfigurationsdaten neu gelesen
set <name> userCommand <validSqlStatement>
BENUTZE DIESE FUNKTION NUR, WENN DU WIRKLICH (WIRKLICH!) WEISST, WAS DU TUST!!!
Führt einen beliebigen (!!!) sql Befehl in der Datenbank aus. Der Befehl und ein zurückgeliefertes
Ergebnis wird in das Reading "userCommand" bzw. "userCommandResult" geschrieben. Das Ergebnis kann nur
einzeilig sein.
Für SQL-Statements, die mehrzeilige Ergebnisse liefern, kann das Auswertungsmodul
DbRep genutzt werden.
Wird von der Datenbankschnittstelle kein Ergebnis (undef) zurückgeliefert, erscheint die Meldung "no result"
im Reading "userCommandResult".
Get
get <name> ReadingsVal <device> <reading> <default> get <name> ReadingsTimestamp <device> <reading> <default>
Liest einen einzelnen Wert aus der Datenbank, Benutzung und Syntax sind weitgehend identisch zu ReadingsVal() und ReadingsTimestamp().
get <name> <infile> <outfile> <from>
<to> <column_spec>
Liesst Daten aus der Datenbank. Wird durch die Frontends benutzt um Plots
zu generieren ohne selbst auf die Datenank zugreifen zu müssen.
<in>
Ein Parameter um eine Kompatibilität zum Filelog herzustellen.
Dieser Parameter ist per default immer auf - zu setzen.
Folgende Ausprägungen sind zugelassen:
current: die aktuellen Werte aus der Tabelle "current" werden gelesen.
history: die historischen Werte aus der Tabelle "history" werden gelesen.
-: identisch wie "history"
<out>
Ein Parameter um eine Kompatibilität zum Filelog herzustellen.
Dieser Parameter ist per default immer auf - zu setzen um die
Ermittlung der Daten aus der Datenbank für die Plotgenerierung zu prüfen.
Folgende Ausprägungen sind zugelassen:
ALL: Es werden alle Spalten der Datenbank ausgegeben. Inclusive einer Überschrift.
Array: Es werden alle Spalten der Datenbank als Hash ausgegeben. Alle Datensätze als Array zusammengefasst.
INT: intern zur Plotgenerierung verwendet
-: default
<from> / <to>
Wird benutzt um den Zeitraum der Daten einzugrenzen. Es ist das folgende
Zeitformat oder ein Teilstring davon zu benutzen:
YYYY-MM-DD_HH24:MI:SS
<column_spec>
Für jede column_spec Gruppe wird ein Datenset zurückgegeben welches
durch einen Kommentar getrennt wird. Dieser Kommentar repräsentiert
die column_spec.
Syntax: <device>:<reading>:<default>:<fn>:<regexp>
<device>
Der Name des Devices. Achtung: Gross/Kleinschreibung beachten!
Es kann ein % als Jokerzeichen angegeben werden.
<reading>
Das Reading des angegebenen Devices zur Datenselektion.
Es kann ein % als Jokerzeichen angegeben werden.
Achtung: Gross/Kleinschreibung beachten!
<default>
Zur Zeit noch nicht implementiert.
<fn>
Angabe einer speziellen Funktion:
int
Ermittelt den Zahlenwert ab dem Anfang der Zeichenkette aus der
Spalte "VALUE". Benutzt z.B. für Ausprägungen wie 10%.
int<digit>
Ermittelt den Zahlenwert ab dem Anfang der Zeichenkette aus der
Spalte "VALUE", inclusive negativen Vorzeichen und Dezimaltrenner.
Benutzt z.B. für Auspägungen wie -5.7°C.
delta-h / delta-d
Ermittelt die relative Veränderung eines Zahlenwertes pro Stunde
oder pro Tag. Wird benutzt z.B. für Spalten die einen
hochlaufenden Zähler enthalten wie im Falle für ein KS300 Regenzähler
oder dem 1-wire Modul OWCOUNT.
delta-ts
Ermittelt die vergangene Zeit zwischen dem letzten und dem aktuellen Logeintrag
in Sekunden und ersetzt damit den originalen Wert.
<regexp>
Diese Zeichenkette wird als Perl Befehl ausgewertet.
Die regexp wird vor dem angegebenen <fn> Parameter ausgeführt.
Bitte zur Beachtung: Diese Zeichenkette darf keine Leerzeichen
enthalten da diese sonst als <column_spec> Trennung
interpretiert werden und alles nach dem Leerzeichen als neue
<column_spec> gesehen wird. Schlüsselwörter
$val ist der aktuelle Wert die die Datenbank für ein Device/Reading ausgibt.
$ts ist der aktuelle Timestamp des Logeintrages.
Wird als $val das Schlüsselwort "hide" zurückgegeben, so wird dieser Logeintrag nicht
ausgegeben, trotzdem aber für die Zeitraumberechnung verwendet.
Wird als $val das Schlüsselwort "ignore" zurückgegeben, so wird dieser Logeintrag
nicht für eine Folgeberechnung verwendet.
Beispiele:
get myDbLog - - 2012-11-10 2012-11-20 KS300:temperature
get myDbLog current ALL - - %:temperature
Damit erhält man alle aktuellen Readings "temperature" von allen in der DB geloggten Devices.
Achtung: bei Nutzung von Jokerzeichen auf die history-Tabelle kann man sein FHEM aufgrund langer Laufzeit lahmlegen!
get myDbLog - - 2012-11-10_10 2012-11-10_20 KS300:temperature::int1
gibt Daten aus von 10Uhr bis 20Uhr am 10.11.2012
get myDbLog - all 2012-11-10 2012-11-20 KS300:temperature
get myDbLog - - 2012-11-10 2012-11-20 KS300:temperature KS300:rain::delta-h KS300:rain::delta-d
get myDbLog - - 2012-11-10 2012-11-20 MyFS20:data:::$val=~s/(on|off).*/$1eq"on"?1:0/eg
gibt 1 zurück für alle Ausprägungen von on* (on|on-for-timer etc) und 0 für alle off*
get myDbLog - - 2012-11-10 2012-11-20 Bodenfeuchte:data:::$val=~s/.*B:\s([-\.\d]+).*/$1/eg
Beispiel von OWAD: Ein Wert wie z.B.: "A: 49.527 % B: 66.647 % C: 9.797 % D: 0.097 V"
und die Ausgabe ist für das Reading B folgende: 2012-11-20_10:23:54 66.647
get DbLog - - 2013-05-26 2013-05-28 Pumpe:data::delta-ts:$val=~s/on/hide/
Realisierung eines Betriebsstundenzählers. Durch delta-ts wird die Zeit in Sek zwischen den Log-
Einträgen ermittelt. Die Zeiten werden bei den on-Meldungen nicht ausgegeben welche einer Abschaltzeit
entsprechen würden.
Liest Daten aus der Datenbank aus und gibt diese in JSON formatiert aus. Wird für das Charting Frontend genutzt
<name>
Der Name des definierten DbLogs, so wie er in der fhem.cfg angegeben wurde.
<in>
Ein Dummy Parameter um eine Kompatibilität zum Filelog herzustellen.
Dieser Parameter ist immer auf - zu setzen.
<out>
Ein Dummy Parameter um eine Kompatibilität zum Filelog herzustellen.
Dieser Parameter ist auf webchart zu setzen um die Charting Get Funktion zu nutzen.
<from> / <to>
Wird benutzt um den Zeitraum der Daten einzugrenzen. Es ist das folgende
Zeitformat zu benutzen:
YYYY-MM-DD_HH24:MI:SS
<device>
Ein String, der das abzufragende Device darstellt.
<querytype>
Ein String, der die zu verwendende Abfragemethode darstellt. Zur Zeit unterstützte Werte sind: getreadings um für ein bestimmtes device alle Readings zu erhalten getdevices um alle verfügbaren devices zu erhalten timerange um Chart-Daten abzufragen. Es werden die Parameter 'xaxis', 'yaxis', 'device', 'to' und 'from' benötigt savechart um einen Chart unter Angabe eines 'savename' und seiner zugehörigen Konfiguration abzuspeichern deletechart um einen zuvor gespeicherten Chart unter Angabe einer id zu löschen getcharts um eine Liste aller gespeicherten Charts zu bekommen. getTableData um Daten aus der Datenbank abzufragen und in einer Tabelle darzustellen. Benötigt paging Parameter wie start und limit. hourstats um Statistiken für einen Wert (yaxis) für eine Stunde abzufragen. daystats um Statistiken für einen Wert (yaxis) für einen Tag abzufragen. weekstats um Statistiken für einen Wert (yaxis) für eine Woche abzufragen. monthstats um Statistiken für einen Wert (yaxis) für einen Monat abzufragen. yearstats um Statistiken für einen Wert (yaxis) für ein Jahr abzufragen.
<xaxis>
Ein String, der die X-Achse repräsentiert
<yaxis>
Ein String, der die Y-Achse repräsentiert
<savename>
Ein String, unter dem ein Chart in der Datenbank gespeichert werden soll
<chartconfig>
Ein jsonstring der den zu speichernden Chart repräsentiert
<pagingstart>
Ein Integer um den Startwert für die Abfrage 'getTableData' festzulegen
<paginglimit>
Ein Integer um den Limitwert für die Abfrage 'getTableData' festzulegen
Beispiele:
get logdb - webchart "" "" "" getcharts
Liefert alle gespeicherten Charts aus der Datenbank
get logdb - webchart "" "" "" getdevices
Liefert alle verfügbaren Devices aus der Datenbank
get logdb - webchart "" "" ESA2000_LED_011e getreadings
Liefert alle verfügbaren Readings aus der Datenbank unter Angabe eines Gerätes
get logdb - webchart 2013-02-11_00:00:00 2013-02-12_00:00:00 ESA2000_LED_011e timerange TIMESTAMP day_kwh
Liefert Chart-Daten, die auf folgenden Parametern basieren: 'xaxis', 'yaxis', 'device', 'to' und 'from'
Die Ausgabe erfolgt als JSON, z.B.: [{'TIMESTAMP':'2013-02-11 00:10:10','VALUE':'0.22431388090756'},{'TIMESTAMP'.....}]
get logdb - webchart 2013-02-11_00:00:00 2013-02-12_00:00:00 ESA2000_LED_011e savechart TIMESTAMP day_kwh tageskwh
Speichert einen Chart unter Angabe eines 'savename' und seiner zugehörigen Konfiguration
get logdb - webchart "" "" "" deletechart "" "" 7
Löscht einen zuvor gespeicherten Chart unter Angabe einer id
Attribute
addStateEvent
attr <device> addStateEvent [0|1]
Bekanntlich wird normalerweise bei einem Event mit dem Reading "state" der state-String entfernt, d.h.
der Event ist nicht zum Beispiel "state: on" sondern nur "on".
Meistens ist es aber hilfreich in DbLog den kompletten Event verarbeiten zu können. Deswegen übernimmt DbLog per Default
den Event inklusive dem Reading-String "state".
In einigen Fällen, z.B. alten oder speziellen Modulen, ist es allerdings wünschenswert den state-String wie gewöhnlich
zu entfernen. In diesen Fällen bitte addStateEvent = "0" setzen.
Versuchen sie bitte diese Einstellung, falls es mit dem Standard Probleme geben sollte.
asyncMode
attr <device> asyncMode [1|0]
Dieses Attribut stellt den Arbeitsmodus von DbLog ein. Im asynchronen Modus (asyncMode=1), werden die zu speichernden Events zunächst in Speicher
gecacht. Nach Ablauf der Synchronisationszeit (Attribut syncInterval) oder bei Erreichen der maximalen Anzahl der Datensätze im Cache
(Attribut cacheLimit) werden die gecachten Events im Block in die Datenbank geschrieben.
Ist die Datenbank nicht verfügbar, werden die Events weiterhin im Speicher gehalten und nach Ablauf des Syncintervalls in die Datenbank
geschrieben falls sie dann verfügbar ist.
Im asynchronen Mode werden die Daten nicht blockierend mit einem separaten Hintergrundprozess in die Datenbank geschrieben.
Det Timeout-Wert für diesen Hintergrundprozess kann mit dem Attribut "timeout" (Default 86400s) eingestellt werden.
Im synchronen Modus (Normalmodus) werden die Events nicht gecacht und sofort in die Datenbank geschrieben. Ist die Datenbank nicht
verfügbar gehen sie verloren.
commitMode
attr <device> commitMode [basic_ta:on | basic_ta:off | ac:on_ta:on | ac:on_ta:off | ac:off_ta:on]
Ändert die Verwendung der Datenbank Autocommit- und/oder Transaktionsfunktionen.
Dieses Attribut ist ein advanced feature und sollte nur im konkreten Bedarfs- bzw. Supportfall geändert werden.
basic_ta:on - Autocommit Servereinstellung / Transaktion ein (default)
basic_ta:off - Autocommit Servereinstellung / Transaktion aus
ac:on_ta:on - Autocommit ein / Transaktion ein
ac:on_ta:off - Autocommit ein / Transaktion aus
ac:off_ta:on - Autocommit aus / Transaktion ein (Autocommit aus impliziert Transaktion ein)
cacheEvents
attr <device> cacheEvents [2|1|0]
cacheEvents=1: es werden Events für das Reading CacheUsage erzeugt wenn ein Event zum Cache hinzugefügt wurde.
cacheEvents=2: es werden Events für das Reading CacheUsage erzeugt wenn im asynchronen Mode der Schreibzyklus in die
Datenbank beginnt. CacheUsage enthält zu diesem Zeitpunkt die Anzahl der in die Datenbank zu schreibenden
Datensätze.
cacheLimit
attr <device> cacheLimit <n>
Im asynchronen Logmodus wird der Cache in die Datenbank weggeschrieben und geleert wenn die Anzahl <n> Datensätze
im Cache erreicht ist (Default: 500). Der Timer des asynchronen Logmodus wird dabei neu auf den Wert des Attributs "syncInterval"
gesetzt. Im Fehlerfall wird ein erneuter Schreibversuch frühestens nach syncInterval/2 gestartet.
colEvent
attr <device> colEvent <n>
Die Feldlänge für das DB-Feld EVENT wird userspezifisch angepasst. Mit dem Attribut kann der Default-Wert im Modul
verändert werden wenn die Feldlänge in der Datenbank manuell geändert wurde. Mit colEvent=0 wird das Datenbankfeld
EVENT nicht gefüllt. Hinweis:
Mit gesetztem Attribut gelten alle Feldlängenbegrenzungen auch für SQLite DB wie im Internal COLUMNS angezeigt !
colReading
attr <device> colReading <n>
Die Feldlänge für das DB-Feld READING wird userspezifisch angepasst. Mit dem Attribut kann der Default-Wert im Modul
verändert werden wenn die Feldlänge in der Datenbank manuell geändert wurde. Mit colReading=0 wird das Datenbankfeld
READING nicht gefüllt. Hinweis:
Mit gesetztem Attribut gelten alle Feldlängenbegrenzungen auch für SQLite DB wie im Internal COLUMNS angezeigt !
colValue
attr <device> colValue <n>
Die Feldlänge für das DB-Feld VALUE wird userspezifisch angepasst. Mit dem Attribut kann der Default-Wert im Modul
verändert werden wenn die Feldlänge in der Datenbank manuell geändert wurde. Mit colValue=0 wird das Datenbankfeld
VALUE nicht gefüllt. Hinweis:
Mit gesetztem Attribut gelten alle Feldlängenbegrenzungen auch für SQLite DB wie im Internal COLUMNS angezeigt !
DbLogType
attr <device> DbLogType [Current|History|Current/History|SampleFill/History]
Dieses Attribut legt fest, welche Tabelle oder Tabellen in der Datenbank genutzt werden sollen. Ist dieses Attribut nicht gesetzt, wird
per default die Einstellung history verwendet.
Bedeutung der Einstellungen sind:
Current
Events werden nur in die current-Tabelle geloggt.
Die current-Tabelle wird bei der SVG-Erstellung ausgewertet.
History
Events werden nur in die history-Tabelle geloggt. Es wird keine DropDown-Liste mit Vorschlägen bei der SVG-Erstellung
erzeugt.
Current/History
Events werden sowohl in die current- also auch in die hitory Tabelle geloggt.
Die current-Tabelle wird bei der SVG-Erstellung ausgewertet.
SampleFill/History
Events werden nur in die history-Tabelle geloggt. Die current-Tabelle wird bei der SVG-Erstellung ausgewertet und
kann zur Erzeugung einer DropDown-Liste mittels einem
DbRep-Device "set <DbRep-Name> tableCurrentFillup" mit
einem einstellbaren Extract der history-Tabelle gefüllt werden (advanced Feature).
Hinweis:
Die Current-Tabelle muß genutzt werden um eine Device:Reading-DropDownliste zur Erstellung eines
SVG-Plots zu erhalten.
DbLogSelectionMode
attr <device> DbLogSelectionMode [Exclude|Include|Exclude/Include]
Dieses, fuer DbLog-Devices spezifische Attribut beeinflußt, wie die Device-spezifischen Attributes
DbLogExclude und DbLogInclude (s.u.) ausgewertet werden.
Fehlt dieses Attribut, wird dafuer "Exclude" als Default angenommen.
Exclude: DbLog verhaelt sich wie bisher auch, alles was ueber die RegExp im DEF angegeben ist, wird geloggt, bis auf das,
was ueber die RegExp in DbLogExclude ausgeschlossen wird.
Das Attribut DbLogInclude wird in diesem Fall nicht beruecksichtigt
Include: Es wird nur das geloggt was ueber die RegExp in DbLogInclude (im Quelldevice) eingeschlossen wird.
Das Attribut DbLogExclude wird in diesem Fall ebenso wenig beruecksichtigt wie die Regex im DEF. Auch
der Devicename (des Quelldevice) geht in die Auswertung nicht mit ein.
Exclude/Include: Funktioniert im Wesentlichen wie "Exclude", nur das sowohl DbLogExclude als auch DbLogInclude
geprueft werden. Readings die durch DbLogExclude zwar ausgeschlossen wurden, mit DbLogInclude aber wiederum eingeschlossen werden,
werden somit dennoch geloggt.
DbLogInclude
attr <device> DbLogInclude regex:MinInterval,[regex:MinInterval] ...
Wenn DbLog genutzt wird, wird in allen Devices das Attribut DbLogInclude propagiert.
DbLogInclude funktioniert im Endeffekt genau wie DbLogExclude, ausser dass eben readings mit diesen RegExp
in das Logging eingeschlossen werden koennen, statt ausgeschlossen.
Siehe dazu auch das DbLog-Device-Spezifische Attribut DbLogSelectionMode, das beeinflußt wie
DbLogExclude und DbLogInclude ausgewertet werden. Beispiel attr MyDevice1 DbLogInclude .* attr MyDevice2 DbLogInclude state,(floorplantext|MyUserReading):300,battery:3600
DbLogExclude
attr <device> DbLogExclude regex:MinInterval,[regex:MinInterval] ...
Wenn DbLog genutzt wird, wird in alle Devices das Attribut DbLogExclude propagiert.
Der Wert des Attributes wird als Regexp ausgewertet und schliesst die damit matchenden Readings von einem Logging aus.
Einzelne Regexp werden durch Kommata getrennt. Ist MinIntervall angegeben, so wird der Logeintrag nur
dann nicht geloggt, wenn das Intervall noch nicht erreicht und der Wert des Readings sich nicht verändert hat.
Beispiel attr MyDevice1 DbLogExclude .* attr MyDevice2 DbLogExclude state,(floorplantext|MyUserReading):300,battery:3600
excludeDevs
attr <device> excludeDevs <devspec1>[#Reading],<devspec2>[#Reading],<devspec...>
Die Device/Reading-Kombinationen "devspec1#Reading", "devspec2#Reading" bis "devspec..." werden vom Logging in die
Datenbank global ausgeschlossen.
Die Angabe eines auszuschließenden Readings ist optional.
Somit können Device/Readings explizit bzw. konsequent vom Logging ausgeschlossen werden ohne Berücksichtigung anderer
Excludes oder Includes (z.B. im DEF).
Die auszuschließenden Devices können als Geräte-Spezifikation angegeben werden.
Für weitere Details bezüglich devspec siehe Geräte-Spezifikation.
Beispiel
attr <device> excludeDevs global,Log.*,Cam.*,TYPE=DbLog
# Es werden die Devices global bzw. Devices beginnend mit "Log" oder "Cam" bzw. Devices vom Typ "DbLog" vom Logging ausgeschlossen.
attr <device> excludeDevs .*#.*Wirkleistung.*
# Es werden alle Device/Reading-Kombinationen mit "Wirkleistung" im Reading vom Logging ausgeschlossen.
attr <device> excludeDevs SMA_Energymeter#Bezug_WirkP_Zaehler_Diff
# Es wird der Event mit Device "SMA_Energymeter" und Reading "Bezug_WirkP_Zaehler_Diff" vom Logging ausgeschlossen.
expimpdir
attr <device> expimpdir <directory>
In diesem Verzeichnis wird das Cachefile beim Export angelegt bzw. beim Import gesucht. Siehe set-Kommandos
"exportCache" bzw. "importCachefile". Das Default-Verzeichnis ist "(global->modpath)/log/".
Das im Attribut angegebene Verzeichnis muss vorhanden und beschreibbar sein.
Beispiel
attr <device> expimpdir /opt/fhem/cache/
exportCacheAppend
attr <device> exportCacheAppend [1|0]
Wenn gesetzt, wird beim Export des Cache ("set <device> exportCache") der Cacheinhalt an das neueste bereits vorhandene
Exportfile angehängt. Ist noch kein Exportfile vorhanden, wird es neu angelegt.
Ist das Attribut nicht gesetzt, wird bei jedem Exportvorgang ein neues Exportfile angelegt. (default)
noNotifyDev
attr <device> noNotifyDev [1|0]
Erzwingt dass NOTIFYDEV nicht gesetzt und somit nicht verwendet wird.
noSupportPK
attr <device> noSupportPK [1|0]
Deaktiviert die programmtechnische Unterstützung eines gesetzten Primary Key durch das Modul.
shutdownWait
attr <device> shutdownWait
FHEM wartet während des shutdowns fuer n Sekunden, um die Datenbank korrekt zu beenden
showproctime
attr <device> showproctime [1|0]
Wenn gesetzt, zeigt das Reading "sql_processing_time" die benötigte Abarbeitungszeit (in Sekunden) für die SQL-Ausführung der
durchgeführten Funktion. Dabei wird nicht ein einzelnes SQL-Statement, sondern die Summe aller notwendigen SQL-Abfragen innerhalb der
jeweiligen Funktion betrachtet. Das Reading "background_processing_time" zeigt die im Kindprozess BlockingCall verbrauchte Zeit.
showNotifyTime
attr <device> showNotifyTime [1|0]
Wenn gesetzt, zeigt das Reading "notify_processing_time" die benötigte Abarbeitungszeit (in Sekunden) für die
Abarbeitung der DbLog Notify-Funktion. Das Attribut ist für Performance Analysen geeignet und hilft auch die Unterschiede
im Zeitbedarf bei der Umschaltung des synchronen in den asynchronen Modus festzustellen.
syncEvents
attr <device> syncEvents [1|0]
es werden Events für Reading NextSync erzeugt.
syncInterval
attr <device> syncInterval <n>
Wenn DbLog im asynchronen Modus betrieben wird (Attribut asyncMode=1), wird mit diesem Attribut das Intervall in Sekunden zur Speicherung
der im Speicher gecachten Events in die Datenbank eingestellt. Der Defaultwert ist 30 Sekunden.
suppressAddLogV3
attr <device> suppressAddLogV3 [1|0]
Wenn gesetzt werden verbose3-Logeinträge durch die addLog-Funktion unterdrückt.
suppressUndef
attr <device> ignoreUndef
Unterdrueckt alle undef Werte die durch eine Get-Anfrage zb. Plot aus der Datenbank selektiert werden Beispiel #DbLog eMeter:power:::$val=($val>1500)?undef:$val
timeout
attr <device> timeout
Setzt den Timeout-Wert für den Schreibzyklus in die Datenbank im asynchronen Modus (default 86400s).
useCharfilter
attr <device> useCharfilter [0|1]
wenn gesetzt, werden nur ASCII Zeichen von 32 bis 126 im Event akzeptiert. (default: 0)
Das sind die Zeichen " A-Za-z0-9!"#$%&'()*+,-.\/:;<=>?@[\\]^_`{|}~".
Umlaute und "€" werden umgesetzt (z.B. ä nach ae, € nach EUR).
valueFn
attr <device> valueFn {}
Es kann über einen Perl-Ausdruck auf die Variablen $TIMESTAMP, $DEVICE, $DEVICETYPE, $READING, $VALUE (Wert des Readings) und
$UNIT (Einheit des Readingswert) zugegriffen werden und diese verändern, d.h. die veränderten Werte werden geloggt.
Außerdem hat man lesenden Zugriff auf $EVENT für eine Auswertung im Perl-Ausdruck.
Diese Variable kann aber nicht verändert werden.
Soll $TIMESTAMP verändert werden, muss die Form "yyyy-mm-dd hh:mm:ss" eingehalten werden, ansonsten wird der
geänderte $timestamp nicht übernommen.
Zusätzlich kann durch Setzen der Variable "$IGNORE=1" ein Datensatz vom Logging ausgeschlossen werden.
Beispiele
attr <device> valueFn {if ($DEVICE eq "living_Clima" && $VALUE eq "off" ){$VALUE=0;} elsif ($DEVICE eq "e-power"){$VALUE= sprintf "%.1f", $VALUE;}}
# ändert den Reading-Wert des Gerätes "living_Clima" von "off" zu "0" und rundet den Wert vom Gerät "e-power"
attr <device> valueFn {if ($DEVICE eq "SMA_Energymeter" && $READING eq "state"){$IGNORE=1;}}
# der Datensatz wird nicht geloggt wenn Device = "SMA_Energymeter" und das Reading = "state" ist
attr <device> valueFn {if ($DEVICE eq "Dum.Energy" && $READING eq "TotalConsumption"){$UNIT="W";}}
# setzt die Einheit des Devices "Dum.Energy" auf "W" wenn das Reading = "TotalConsumption" ist
verbose4Devs
attr <device> verbose4Devs <device1>,<device2>,<device..>
Mit verbose Level 4 werden nur Ausgaben bezüglich der in diesem Attribut aufgeführten Devices im Logfile protokolliert. Ohne dieses
Attribut werden mit verbose 4 Ausgaben aller relevanten Devices im Logfile protokolliert.
Die angegebenen Devices werden als Regex ausgewertet. Beispiel
attr <device> verbose4Devs sys.*,.*5000.*,Cam.*,global
# Es werden Devices beginnend mit "sys", "Cam" bzw. Devices die "5000" enthalten und das Device "global" protokolliert falls verbose=4
eingestellt ist.
Zweck des Moduls ist es, den Inhalt von DbLog-Datenbanken nach bestimmten Kriterien zu durchsuchen, zu managen, das Ergebnis hinsichtlich verschiedener
Aggregationen auszuwerten und als Readings darzustellen. Die Abgrenzung der zu berücksichtigenden Datenbankinhalte erfolgt durch die Angabe von Device, Reading und
die Zeitgrenzen für Auswertungsbeginn bzw. Auswertungsende.
Fast alle Datenbankoperationen werden nichtblockierend ausgeführt. Auf Ausnahmen wird hingewiesen.
Die Ausführungszeit der (SQL)-Hintergrundoperationen kann optional ebenfalls als Reading bereitgestellt
werden (siehe Attribute).
Alle vorhandenen Readings werden vor einer neuen Operation gelöscht. Durch das Attribut "readingPreventFromDel" kann eine Komma separierte Liste von Readings
angegeben werden die nicht gelöscht werden sollen.
Aktuell werden folgende Operationen unterstützt:
Selektion aller Datensätze innerhalb einstellbarer Zeitgrenzen
Darstellung der Datensätze einer Device/Reading-Kombination innerhalb einstellbarer Zeitgrenzen.
Selektion der Datensätze unter Verwendung von dynamisch berechneter Zeitgrenzen zum Ausführungszeitpunkt.
Dubletten-Hervorhebung bei Datensatzanzeige (fetchrows)
Berechnung der Anzahl von Datensätzen einer Device/Reading-Kombination unter Berücksichtigung von Zeitgrenzen
und verschiedenen Aggregationen.
Die Berechnung von Summen-, Differenz-, Maximum-, Minimum- und Durchschnittswerten numerischer Readings
in Zeitgrenzen und verschiedenen Aggregationen.
Speichern von Summen-, Differenz- , Maximum- , Minimum- und Durchschnittswertberechnungen in der Datenbank
Löschung von Datensätzen. Die Eingrenzung der Löschung kann durch Device und/oder Reading sowie fixer oder
dynamisch berechneter Zeitgrenzen zum Ausführungszeitpunkt erfolgen.
Export von Datensätzen in ein File im CSV-Format
Import von Datensätzen aus File im CSV-Format
Umbenennen von Device/Readings in Datenbanksätzen
Ändern von Reading-Werten (VALUES) in der Datenbank (changeValue)
automatisches Umbenennen von Device-Namen in Datenbanksätzen und DbRep-Definitionen nach FHEM "rename"
Befehl (siehe DbRep-Agent)
Ausführen von beliebigen Benutzer spezifischen SQL-Kommandos (non-blocking)
Ausführen von beliebigen Benutzer spezifischen SQL-Kommandos (blocking) zur Verwendung in eigenem Code (dbValue)
Backups der FHEM-Datenbank im laufenden Betrieb erstellen (MySQL, SQLite)
senden des Dumpfiles zu einem FTP-Server nach dem Backup incl. Versionsverwaltung
Restore von SQLite- und MySQL-Dumps
Optimierung der angeschlossenen Datenbank (optimizeTables, vacuum)
Ausgabe der existierenden Datenbankprozesse (MySQL)
leeren der current-Tabelle
Auffüllen der current-Tabelle mit einem (einstellbaren) Extrakt der history-Tabelle
Bereinigung sequentiell aufeinander folgender Datensätze mit unterschiedlichen Zeitstempel aber gleichen Werten (sequentielle Dublettenbereinigung)
Reparatur einer korrupten SQLite Datenbank ("database disk image is malformed")
Übertragung von Datensätzen aus der Quelldatenbank in eine andere (Standby) Datenbank (syncStandby)
Zur Aktivierung der Funktion Autorename wird dem definierten DbRep-Device mit dem Attribut "role" die Rolle "Agent" zugewiesen. Die Standardrolle nach Definition
ist "Client". Mehr ist dazu im Abschnitt DbRep-Agent beschrieben.
DbRep stellt dem Nutzer einen UserExit zur Verfügung. Über diese Schnittstelle kann der Nutzer in Abhängigkeit von
frei definierbaren Reading/Value-Kombinationen (Regex) eigenen Code zur Ausführung bringen. Diese Schnittstelle arbeitet
unabhängig von einer Eventgenerierung. Weitere Informationen dazu ist unter Attribut
"userExitFn" beschrieben.
Sobald ein DbRep-Device definiert ist, wird die Funktion DbReadingsVal zur Verfügung gestellt.
Mit dieser Funktion läßt sich, ähnlich dem allgemeinen ReadingsVal, der Wert eines Readings aus der Datenbank abrufen.
Die Funktionsausführung erfolgt blockierend.
Die Befehlssyntax ist:
Das Modul setzt den Einsatz einer oder mehrerer DbLog-Instanzen voraus. Es werden die Zugangsdaten dieser
Datenbankdefinition genutzt.
Es werden nur Inhalte der Tabelle "history" berücksichtigt wenn nichts anderes beschrieben ist.
Überblick welche anderen Perl-Module DbRep verwendet:
Net::FTP (nur wenn FTP-Transfer nach Datenbank-Dump genutzt wird)
Net::FTPSSL (nur wenn FTP-Transfer mit Verschlüsselung nach Datenbank-Dump genutzt wird)
POSIX
Time::HiRes
Time::Local
Scalar::Util
DBI
Color (FHEM-Modul)
IO::Compress::Gzip
IO::Uncompress::Gunzip
Blocking (FHEM-Modul)
Aus Performancegründen sollten zusätzlich folgender Index erstellt werden:
CREATE INDEX Report_Idx ON `history` (TIMESTAMP, READING) USING BTREE;
Definition
define <name> DbRep <Name der DbLog-Instanz>
(<Name der DbLog-Instanz> - es wird der Name der auszuwertenden DBLog-Datenbankdefinition angegeben nicht der Datenbankname selbst)
Set
Zur Zeit gibt es folgende Set-Kommandos. Über sie werden die Auswertungen angestoßen und definieren selbst die Auswertungsvariante.
Nach welchen Kriterien die Datenbankinhalte durchsucht werden und die Aggregation erfolgt, wird durch Attribute gesteuert.
averageValue [display | writeToDB]
- berechnet einen Durchschnittswert des Datenbankfelds "VALUE" in den
gegebenen Zeitgrenzen ( siehe Attribute).
Es muss das auszuwertende Reading über das Attribut "reading"
angegeben sein.
Mit dem Attribut "averageCalcForm" wird die Berechnungsvariante zur Mittelwertermittlung definiert.
Ist keine oder die Option "display" angegeben, werden die Ergebnisse nur angezeigt. Mit
der Option "writeToDB" werden die Berechnungsergebnisse mit einem neuen Readingnamen
in der Datenbank gespeichert.
Der neue Readingname wird aus einem Präfix und dem originalen Readingnamen gebildet,
wobei der originale Readingname durch das Attribut "readingNameMap" ersetzt werden kann.
Der Präfix setzt sich aus der Bildungsfunktion und der Aggregation zusammen.
Der Timestamp der neuen Readings in der Datenbank wird von der eingestellten Aggregationsperiode
abgeleitet, sofern kein eindeutiger Zeitpunkt des Ergebnisses bestimmt werden kann.
Das Feld "EVENT" wird mit "calculated" gefüllt.
Beispiel neuer Readingname gebildet aus dem Originalreading "totalpac":
avgam_day_totalpac
# <Bildungsfunktion>_<Aggregation>_<Originalreading>
cancelDump - bricht einen laufenden Datenbankdump ab.
changeValue - ändert den gespeicherten Wert eines Readings.
Ist die Selektion auf bestimmte Device/Reading-Kombinationen durch die
Attribute "device" bzw. "reading" beschränkt, werden sie genauso
berücksichtigt wie gesetzte Zeitgrenzen (Attribute time.*).
Fehlen diese Beschränkungen, wird die gesamte Datenbank durchsucht und der angegebene Wert
geändert.
Syntax:
set <name> changeValue "<alter String>","<neuer String>"
Die Strings werden in Doppelstrich eingeschlossen und durch Komma getrennt.
Dabei kann "String" sein:
<alter String> : * ein einfacher String mit/ohne Leerzeichen, z.B. "OL 12"
* ein String mit Verwendung von SQL-Wildcard, z.B. "%OL%"
<neuer String> : * ein einfacher String mit/ohne Leerzeichen, z.B. "12 kWh"
* Perl Code eingeschlossen in "{}" inkl. Quotes, z.B. "{($VALUE,$UNIT) = split(" ",$VALUE)}".
Dem Perl-Ausdruck werden die Variablen $VALUE und $UNIT übergeben. Sie können innerhalb
des Perl-Code geändert werden. Der zurückgebene Wert von $VALUE und $UNIT wird in dem Feld
VALUE bzw. UNIT des Datensatzes gespeichert.
Beispiele:
set <name> changeValue "OL","12 OL"
# der alte Feldwert "OL" wird in "12 OL" geändert.
set <name> changeValue "%OL%","12 OL"
# enthält das Feld VALUE den Teilstring "OL", wird es in "12 OL" geändert.
set <name> changeValue "12 kWh","{($VALUE,$UNIT) = split(" ",$VALUE)}"
# der alte Feldwert "12 kWh" wird in VALUE=12 und UNIT=kWh gesplittet und in den Datenbankfeldern gespeichert
set <name> changeValue "24%","{$VALUE = (split(" ",$VALUE))[0]}"
# beginnt der alte Feldwert mit "24", wird er gesplittet und VALUE=24 gespeichert (z.B. "24 kWh")
Zusammengefasst sind die zur Steuerung von changeValue relevanten Attribute:
device
: Selektion nur von Datensätzen die <device> enthalten
reading
: Selektion nur von Datensätzen die <reading> enthalten
time.*
: eine Reihe von Attributen zur Zeitabgrenzung
executeBeforeProc
: ausführen FHEM Kommando (oder perl-Routine) vor Start changeValue
executeAfterProc
: ausführen FHEM Kommando (oder perl-Routine) nach Ende changeValue
Hinweis:
Obwohl die Funktion selbst non-blocking ausgelegt ist, sollte das zugeordnete DbLog-Device
im asynchronen Modus betrieben werden um ein Blockieren von FHEMWEB zu vermeiden (Tabellen-Lock).
countEntries [history | current]
- liefert die Anzahl der Tabelleneinträge (default: history) in den gegebenen
Zeitgrenzen (siehe Attribute).
Sind die Timestamps nicht gesetzt werden alle Einträge gezählt.
Beschränkungen durch die Attribute Device bzw. Reading
gehen in die Selektion mit ein.
delEntries - löscht alle oder die durch die Attribute device und/oder
reading definierten Datenbankeinträge. Die Eingrenzung über Timestamps erfolgt
folgendermaßen:
"timestamp_begin" gesetzt -> gelöscht werden DB-Einträge ab diesem Zeitpunkt bis zum aktuellen Datum/Zeit
"timestamp_end" gesetzt -> gelöscht werden DB-Einträge bis bis zu diesem Zeitpunkt
beide Timestamps gesetzt -> gelöscht werden DB-Einträge zwischen diesen Zeitpunkten
"timeOlderThan" gesetzt -> gelöscht werden DB-Einträge älter als aktuelle Zeit minus "timeOlderThan"
"timeDiffToNow" gesetzt -> gelöscht werden DB-Einträge ab aktueller Zeit minus "timeDiffToNow" bis jetzt
Aus Sicherheitsgründen muss das Attribut "allowDeletion"
gesetzt sein um die Löschfunktion freizuschalten.
Die zur Steuerung von delEntries relevanten Attribute:
allowDeletion
: Freischaltung der Löschfunktion
device
: Selektion nur von Datensätzen die <device> enthalten
reading
: Selektion nur von Datensätzen die <reading> enthalten
time.*
: eine Reihe von Attributen zur Zeitabgrenzung
executeBeforeProc
: ausführen FHEM Kommando (oder perl-Routine) vor Start delEntries
executeAfterProc
: ausführen FHEM Kommando (oder perl-Routine) nach Ende delEntries
delSeqDoublets [adviceRemain | adviceDelete | delete] - zeigt bzw. löscht aufeinander folgende identische Datensätze.
Dazu wird Device,Reading und Value ausgewertet. Nicht gelöscht werden der erste und der letzte Datensatz
einer Aggregationsperiode (z.B. hour, day, week usw.) sowie die Datensätze vor oder nach einem Wertewechsel
(Datenbankfeld VALUE).
Die Attribute zur Aggregation,Zeit-,Device- und Reading-Abgrenzung werden dabei
berücksichtigt. Ist das Attribut "aggregation" nicht oder auf "no" gesetzt, wird als Standard die Aggregation
"day" verwendet. Für Datensätze mit numerischen Werten kann mit dem Attribut
"seqDoubletsVariance" eine Abweichung eingestellt werden, bis zu der aufeinander folgende numerische Werte als
identisch angesehen und gelöscht werden sollen.
adviceRemain
: simuliert die nach der Operation in der DB verbleibenden Datensätze (es wird nichts gelöscht !)
adviceDelete
: simuliert die zu löschenden Datensätze (es wird nichts gelöscht !)
delete
: löscht die sequentiellen Dubletten (siehe Beispiel)
Aus Sicherheitsgründen muss das Attribut "allowDeletion" für die "delete" Option
gesetzt sein.
Die Anzahl der anzuzeigenden Datensätze der Kommandos "delSeqDoublets adviceDelete", "delSeqDoublets adviceRemain" ist
zunächst begrenzt (default 1000) und kann durch das Attribut "limit" angepasst werden.
Die Einstellung von "limit" hat keinen Einfluss auf die "delSeqDoublets delete" Funktion, sondern beeinflusst NUR die
Anzeige der Daten.
Vor und nach der Ausführung von "delSeqDoublets" kann ein FHEM-Kommando bzw. Perl-Routine ausgeführt werden.
(siehe Attribute "executeBeforeProc", "executeAfterProc")
Beispiel - die nach Verwendung der delete-Option in der DB verbleibenden Datensätze sind fett
gekennzeichnet:
deviceRename - benennt den Namen eines Device innerhalb der angeschlossenen Datenbank (Internal
DATABASE) um.
Der Gerätename wird immer in der gesamten Datenbank umgesetzt. Eventuell gesetzte
Zeitgrenzen oder Beschränkungen durch die Attribute Device bzw.
Reading werden nicht berücksichtigt.
Beispiel:
set <name> deviceRename ST_5000,ST5100
# Die Anzahl der umbenannten Device-Datensätze wird im Reading "device_renamed" ausgegeben.
# Wird der umzubenennende Gerätename in der Datenbank nicht gefunden, wird eine WARNUNG im Reading "device_not_renamed" ausgegeben.
# Entsprechende Einträge erfolgen auch im Logfile mit verbose=3
Hinweis:
Obwohl die Funktion selbst non-blocking ausgelegt ist, sollte das zugeordnete DbLog-Device
im asynchronen Modus betrieben werden um ein Blockieren von FHEMWEB zu vermeiden (Tabellen-Lock).
diffValue [display | writeToDB]
- berechnet den Differenzwert des Datenbankfelds "VALUE" in den Zeitgrenzen (Attribute) "timestamp_begin", "timestamp_end" bzw "timeDiffToNow / timeOlderThan".
Es muss das auszuwertende Reading im Attribut "reading" angegeben sein.
Diese Funktion ist z.B. zur Auswertung von Eventloggings sinnvoll, deren Werte sich fortlaufend erhöhen und keine Wertdifferenzen wegschreiben.
Es wird immer die Differenz aus dem Value-Wert des ersten verfügbaren Datensatzes und dem Value-Wert des letzten verfügbaren Datensatzes innerhalb der angegebenen
Zeitgrenzen/Aggregation gebildet, wobei ein Übertragswert der Vorperiode (Aggregation) zur darauf folgenden Aggregationsperiode
berücksichtigt wird sofern diese einen Value-Wert enhtält.
Dabei wird ein Zählerüberlauf (Neubeginn bei 0) mit berücksichtigt (vergleiche Attribut "diffAccept").
Wird in einer auszuwertenden Zeit- bzw. Aggregationsperiode nur ein Datensatz gefunden, kann die Differenz in Verbindung mit dem
Differenzübertrag der Vorperiode berechnet werden. in diesem Fall kann es zu einer logischen Ungenauigkeit in der Zuordnung der Differenz
zu der Aggregationsperiode kommen. Deswegen wird eine Warnung im "state" und das
Reading "less_data_in_period" mit einer Liste der betroffenen Perioden wird erzeugt.
Hinweis:
Im Auswertungs- bzw. Aggregationszeitraum (Tag, Woche, Monat, etc.) sollten dem Modul pro Periode mindestens ein Datensatz
zu Beginn und ein Datensatz gegen Ende des Aggregationszeitraumes zur Verfügung stehen um eine möglichst genaue Auswertung
der Differenzwerte vornehmen zu können.
Ist keine oder die Option "display" angegeben, werden die Ergebnisse nur angezeigt. Mit
der Option "writeToDB" werden die Berechnungsergebnisse mit einem neuen Readingnamen
in der Datenbank gespeichert.
Der neue Readingname wird aus einem Präfix und dem originalen Readingnamen gebildet,
wobei der originale Readingname durch das Attribut "readingNameMap" ersetzt werden kann.
Der Präfix setzt sich aus der Bildungsfunktion und der Aggregation zusammen.
Der Timestamp der neuen Readings in der Datenbank wird von der eingestellten Aggregationsperiode
abgeleitet, sofern kein eindeutiger Zeitpunkt des Ergebnisses bestimmt werden kann.
Das Feld "EVENT" wird mit "calculated" gefüllt.
Beispiel neuer Readingname gebildet aus dem Originalreading "totalpac":
diff_day_totalpac
# <Bildungsfunktion>_<Aggregation>_<Originalreading>
dumpMySQL [clientSide | serverSide]
- erstellt einen Dump der angeschlossenen MySQL-Datenbank.
Abhängig von der ausgewählten Option wird der Dump auf der Client- bzw. Serverseite erstellt.
Die Varianten unterscheiden sich hinsichtlich des ausführenden Systems, des Erstellungsortes, der
Attributverwendung, des erzielten Ergebnisses und der benötigten Hardwareressourcen.
Die Option "clientSide" benötigt z.B. eine leistungsfähigere Hardware des FHEM-Servers, sichert aber alle
Tabellen inklusive eventuell angelegter Views.
Mit dem Attribut "dumpCompress" kann eine Komprimierung der erstellten Dumpfiles eingeschaltet werden.
Option clientSide
Der Dump wird durch den Client (FHEM-Rechner) erstellt und per default im log-Verzeichnis des Clients
gespeichert.
Das Zielverzeichnis kann mit dem Attribut "dumpDirLocal" verändert werden und muß auf
dem Client durch FHEM beschreibbar sein.
Vor dem Dump kann eine Tabellenoptimierung (Attribut "optimizeTablesBeforeDump") oder ein FHEM-Kommando
(Attribut "executeBeforeProc") optional zugeschaltet werden.
Nach dem Dump kann ebenfalls ein FHEM-Kommando (siehe Attribut "executeAfterProc") ausgeführt werden.
Achtung !
Um ein Blockieren von FHEM zu vermeiden, muß DbLog im asynchronen Modus betrieben werden wenn die
Tabellenoptimierung verwendet wird !
Über die Attribute "dumpMemlimit" und "dumpSpeed" kann das Laufzeitverhalten der
Funktion beeinflusst werden um eine Optimierung bezüglich Performance und Ressourcenbedarf zu erreichen.
Die für "dumpMySQL clientSide" relevanten Attribute sind:
dumpComment
: User-Kommentar im Dumpfile
dumpCompress
: Komprimierung des Dumpfiles nach der Erstellung
dumpDirLocal
: das lokale Zielverzeichnis für die Erstellung des Dump
dumpMemlimit
: Begrenzung der Speicherverwendung
dumpSpeed
: Begrenzung die CPU-Belastung
dumpFilesKeep
: Anzahl der aufzubwahrenden Dumpfiles
executeBeforeProc
: ausführen FHEM Kommando (oder perl-Routine) vor dem Dump
executeAfterProc
: ausführen FHEM Kommando (oder perl-Routine) nach dem Dump
optimizeTablesBeforeDump
: Tabelloptimierung vor dem Dump ausführen
Nach einem erfolgreichen Dump werden alte Dumpfiles gelöscht und nur die Anzahl Files, definiert durch
das Attribut "dumpFilesKeep" (default: 3), verbleibt im Zielverzeichnis "dumpDirLocal". Falls "dumpFilesKeep = 0"
gesetzt ist, werden alle Dumpfiles (auch das aktuell erstellte File), gelöscht.
Diese Einstellung kann sinnvoll sein, wenn FTP aktiviert ist
und die erzeugten Dumps nur im FTP-Zielverzeichnis erhalten bleiben sollen.
Die Namenskonvention der Dumpfiles ist: <dbname>_<date>_<time>.sql[.gzip]
Um die Datenbank aus dem Dumpfile wiederherzustellen kann das Kommmando:
set <name> restoreMySQL <filename>
verwendet werden.
Das erzeugte Dumpfile (unkomprimiert) kann ebenfalls mit:
mysql -u <user> -p <dbname> < <filename>.sql
auf dem MySQL-Server ausgeführt werden um die Datenbank aus dem Dump wiederherzustellen.
Option serverSide
Der Dump wird durch den MySQL-Server erstellt und per default im Home-Verzeichnis des MySQL-Servers
gespeichert.
Es wird die gesamte history-Tabelle (nicht current-Tabelle) im CSV-Format ohne
Einschränkungen exportiert.
Vor dem Dump kann eine Tabellenoptimierung (Attribut "optimizeTablesBeforeDump")
optional zugeschaltet werden .
Achtung !
Um ein Blockieren von FHEM zu vermeiden, muß DbLog im asynchronen Modus betrieben werden wenn die
Tabellenoptimierung verwendet wird !
Vor und nach dem Dump kann ein FHEM-Kommando (siehe Attribute "executeBeforeProc", "executeAfterProc") ausgeführt
werden.
Die für "dumpMySQL serverSide" relevanten Attribute sind:
dumpDirRemote
: das Erstellungsverzeichnis des Dumpfile auf dem entfernten Server
dumpCompress
: Komprimierung des Dumpfiles nach der Erstellung
dumpDirLocal
: Directory des lokal gemounteten dumpDirRemote-Verzeichnisses
dumpFilesKeep
: Anzahl der aufzubwahrenden Dumpfiles
executeBeforeProc
: ausführen FHEM Kommando (oder perl-Routine) vor dem Dump
executeAfterProc
: ausführen FHEM Kommando (oder perl-Routine) nach dem Dump
optimizeTablesBeforeDump
: Tabelloptimierung vor dem Dump ausführen
Das Zielverzeichnis kann mit dem Attribut "dumpDirRemote" verändert werden.
Es muß sich auf dem MySQL-Host gefinden und durch den MySQL-Serverprozess beschreibbar sein.
Der verwendete Datenbankuser benötigt das "FILE"-Privileg.
Hinweis:
Soll die interne Versionsverwaltung und die Dumpfilekompression des Moduls genutzt, sowie die Größe des erzeugten
Dumpfiles ausgegeben werden, ist das Verzeichnis "dumpDirRemote" des MySQL-Servers auf dem Client zu mounten
und im Attribut "dumpDirLocal" dem DbRep-Device bekannt zu machen.
Gleiches gilt wenn der FTP-Transfer nach dem Dump genutzt werden soll (Attribut "ftpUse" bzw. "ftpUseSSL").
# Der Dump wird remote auf dem MySQL-Server im Verzeichnis '/volume1/ApplicationBackup/dumps_FHEM/'
erstellt.
# Die interne Versionsverwaltung sucht im lokal gemounteten Verzeichnis '/sds1/backup/dumps_FHEM/'
vorhandene Dumpfiles und löscht diese bis auf die zwei letzten Versionen.
Wird die interne Versionsverwaltung genutzt, werden nach einem erfolgreichen Dump alte Dumpfiles gelöscht
und nur die Anzahl "dumpFilesKeep" (default: 3) verbleibt im Zielverzeichnis "dumpDirRemote".
FHEM benötigt in diesem Fall Schreibrechte auf dem Verzeichnis "dumpDirLocal".
Die Namenskonvention der Dumpfiles ist: <dbname>_<date>_<time>.csv[.gzip]
Ein Restore der Datenbank aus diesem Backup kann durch den Befehl:
set <name> <restoreMySQL> <filename>.csv[.gzip]
gestartet werden.
FTP Transfer nach Dump
Wenn diese Möglichkeit genutzt werden soll, ist das Attribut "ftpUse" oder
"ftpUseSSL" zu setzen. Letzteres gilt wenn eine verschlüsselte Übertragung genutzt werden soll.
Das Modul übernimmt ebenfalls die Versionierung der Dumpfiles im FTP-Zielverzeichnis mit Hilfe des Attributes
"ftpDumpFilesKeep".
Für die FTP-Übertragung relevante Attribute sind:
ftpUse
: FTP Transfer nach dem Dump wird eingeschaltet (ohne SSL Verschlüsselung)
ftpUser
: User zur Anmeldung am FTP-Server, default: anonymous
ftpUseSSL
: FTP Transfer mit SSL Verschlüsselung nach dem Dump wird eingeschaltet
ftpDebug
: Debugging des FTP Verkehrs zur Fehlersuche
ftpDir
: Verzeichnis auf dem FTP-Server in welches das File übertragen werden soll (default: "/")
ftpDumpFilesKeep
: Es wird die angegebene Anzahl Dumpfiles im <ftpDir> belassen (default: 3)
ftpPassive
: setzen wenn passives FTP verwendet werden soll
ftpPort
: FTP-Port, default: 21
ftpPwd
: Passwort des FTP-Users, default nicht gesetzt
ftpServer
: Name oder IP-Adresse des FTP-Servers. notwendig !
ftpTimeout
: Timeout für die FTP-Verbindung in Sekunden (default: 30).
dumpSQLite - erstellt einen Dump der angeschlossenen SQLite-Datenbank.
Diese Funktion nutzt die SQLite Online Backup API und ermöglicht es konsistente Backups der SQLite-DB
in laufenden Betrieb zu erstellen.
Der Dump wird per default im log-Verzeichnis des FHEM-Rechners gespeichert.
Das Zielverzeichnis kann mit dem Attribut "dumpDirLocal" verändert werden und muß
durch FHEM beschreibbar sein.
Vor dem Dump kann optional eine Tabellenoptimierung (Attribut "optimizeTablesBeforeDump")
zugeschaltet werden.
Achtung !
Um ein Blockieren von FHEM zu vermeiden, muß DbLog im asynchronen Modus betrieben werden wenn die
Tabellenoptimierung verwendet wird !
Vor und nach dem Dump kann ein FHEM-Kommando (siehe Attribute "executeBeforeProc", "executeAfterProc")
ausgeführt werden.
Die für diese Funktion relevanten Attribute sind:
dumpCompress
: Komprimierung des Dumpfiles nach der Erstellung
dumpDirLocal
: Directory des lokal gemounteten dumpDirRemote-Verzeichnisses
dumpFilesKeep
: Anzahl der aufzubwahrenden Dumpfiles
executeBeforeProc
: ausführen FHEM Kommando (oder perl-Routine) vor dem Dump
executeAfterProc
: ausführen FHEM Kommando (oder perl-Routine) nach dem Dump
optimizeTablesBeforeDump
: Tabelloptimierung vor dem Dump ausführen
Nach einem erfolgreichen Dump werden alte Dumpfiles gelöscht und nur die Anzahl Files, definiert durch das
Attribut "dumpFilesKeep" (default: 3), verbleibt im Zielverzeichnis "dumpDirLocal". Falls "dumpFilesKeep = 0" gesetzt, werden
alle Dumpfiles (auch das aktuell erstellte File), gelöscht. Diese Einstellung kann sinnvoll sein, wenn FTP aktiviert ist
und die erzeugten Dumps nur im FTP-Zielverzeichnis erhalten bleiben sollen.
Die Namenskonvention der Dumpfiles ist: <dbname>_<date>_<time>.sqlitebkp[.gzip]
Die Datenbank kann mit "set <name> restoreSQLite <Filename>" wiederhergestellt
werden.
Das erstellte Dumpfile kann auf einen FTP-Server übertragen werden. Siehe dazu die Erläuterungen
unter "dumpMySQL".
eraseReadings - Löscht alle angelegten Readings im Device, außer dem Reading "state" und Readings, die in der
Ausnahmeliste definiert mit Attribut "readingPreventFromDel" enthalten sind.
exportToFile [<File>]
- exportiert DB-Einträge im CSV-Format in den gegebenen Zeitgrenzen.
Einschränkungen durch die Attribute "device" bzw. "reading" gehen in die Selektion mit ein.
Der Dateiname wird durch das Attribut "expimpfile" bestimmt.
Alternativ kann die Datei (/Pfad/Datei) als Kommando-Option angegeben werden und übersteuert ein
eventuell gesetztes Attribut "expimpfile". Der Dateiname kann Wildcards enthalten (siehe Attribut "expimpfile").
Durch das Attribut "aggregation" wird der Export der Datensätze in Zeitscheiben der angegebenen Aggregation
vorgenommen. Ist z.B. "aggregation = month" gesetzt, werden die Daten in monatlichen Paketen selektiert und in
das Exportfile geschrieben. Dadurch wird die Hauptspeicherverwendung optimiert wenn sehr große Datenmengen
exportiert werden sollen und vermeidet den "died prematurely" Abbruchfehler.
Die für diese Funktion relevanten Attribute sind:
aggregation
: Festlegung der Selektionspaketierung
device
: Einschränkung des Exports auf ein bestimmtes Device
reading
: Einschränkung des Exports auf ein bestimmtes Reading
executeBeforeProc
: FHEM Kommando (oder perl-Routine) vor dem Export ausführen
executeAfterProc
: FHEM Kommando (oder perl-Routine) nach dem Export ausführen
expimpfile
: der Name des Exportfiles
time.*
: eine Reihe von Attributen zur Zeitabgrenzung
fetchrows [history|current]
- liefert alle Tabelleneinträge (default: history)
in den gegebenen Zeitgrenzen bzw. Selektionsbedingungen durch die Attribute
"device" und "reading".
Eine evtl. gesetzte Aggregation wird dabei nicht berücksichtigt.
Die Leserichtung in der Datenbank kann durch das Attribut
"fetchRoute" bestimmt werden.
Jedes Ergebnisreading setzt sich aus dem Timestring des Datensatzes, einem Index, dem Device
und dem Reading zusammen.
Die Funktion fetchrows ist in der Lage mehrfach vorkommende Datensätze (Dubletten) zu erkennen.
Solche Dubletten sind mit einem Index > 1 gekennzeichnet.
Dubletten können mit dem Attribut "fetchMarkDuplicates" farblich hervorgehoben werden.
Hinweis:
Hervorgehobene Readings werden nach einem Restart bzw. nach rereadcfg nicht mehr angezeigt da
sie nicht im statefile gesichert werden (Verletzung erlaubter Readingnamen durch Formatierung).
Dieses Attribut ist mit einigen Farben vorbelegt, kann aber mit dem colorpicker-Widget
überschrieben werden:
Zur besseren Übersicht sind die zur Steuerung von fetchrows relevanten Attribute hier noch einmal
dargestellt:
fetchRoute
: Leserichtung des Selekts innerhalb der Datenbank
limit
: begrenzt die Anzahl zu selektierenden bzw. anzuzeigenden Datensätze
fetchMarkDuplicates
: Hervorhebung von gefundenen Dubletten
device
: Selektion nur von Datensätzen die <device> enthalten
reading
: Selektion nur von Datensätzen die <reading> enthalten
time.*
: eine Reihe von Attributen zur Zeitabgrenzung
valueFilter
: filtert Datensätze des Datenbankfeldes "VALUE" mit einem regulären Ausdruck
Hinweis:
Auch wenn das Modul bezüglich der Datenbankabfrage nichtblockierend arbeitet, kann eine
zu große Ergebnismenge (Anzahl Zeilen bzw. Readings) die Browsersesssion bzw. FHEMWEB
blockieren. Aus diesem Grund wird die Ergebnismenge mit dem
Attribut "limit" begrenzt. Bei Bedarf kann dieses Attribut
geändert werden, falls eine Anpassung der Selektionsbedingungen nicht möglich oder
gewünscht ist.
insert - Manuelles Einfügen eines Datensatzes in die Tabelle "history". Obligatorisch sind Eingabewerte für Datum, Zeit und Value.
Die Werte für die DB-Felder Type bzw. Event werden mit "manual" gefüllt, sowie die Werte für Device, Reading aus den gesetzten Attributen genommen.
Eingabeformat: Datum,Zeit,Value,[Unit]
# Unit ist optional, Attribute "reading" und "device" müssen gesetzt sein
# Soll "Value=0" eingefügt werden, ist "Value = 0.0" zu verwenden.
Beispiel: 2016-08-01,23:00:09,TestValue,TestUnit
# Es sind KEINE Leerzeichen im Feldwert erlaubt !
Hinweis:
Bei der Eingabe ist darauf zu achten dass im beabsichtigten Aggregationszeitraum (Tag, Woche, Monat, etc.) MINDESTENS zwei
Datensätze für die Funktion diffValue zur Verfügung stehen. Ansonsten kann keine Differenz berechnet werden und diffValue
gibt in diesem Fall "0" in der betroffenen Periode aus !
importFromFile [<File>]
- importiert Datensätze im CSV-Format aus einer Datei in die Datenbank.
Der Dateiname wird durch das Attribut "expimpfile" bestimmt.
Alternativ kann die Datei (/Pfad/Datei) als Kommando-Option angegeben werden und übersteuert ein
eventuell gesetztes Attribut "expimpfile". Der Dateiname kann Wildcards enthalten (siehe
Attribut "expimpfile").
# Die Felder "TIMESTAMP","DEVICE","TYPE","EVENT","READING" und "VALUE" müssen gesetzt sein. Das Feld "UNIT" ist optional.
Der Fileinhalt wird als Transaktion importiert, d.h. es wird der Inhalt des gesamten Files oder, im Fehlerfall, kein Datensatz des Files importiert.
Wird eine umfangreiche Datei mit vielen Datensätzen importiert, sollte KEIN verbose=5 gesetzt werden. Es würden in diesem Fall sehr viele Sätze in
das Logfile geschrieben werden was FHEM blockieren oder überlasten könnte.
Die für diese Funktion relevanten Attribute sind:
executeBeforeProc
: FHEM Kommando (oder perl-Routine) vor dem Import ausführen
executeAfterProc
: FHEM Kommando (oder perl-Routine) nach dem Import ausführen
expimpfile
: der Name des Importfiles
maxValue [display | writeToDB]
- berechnet den Maximalwert des Datenbankfelds "VALUE" in den Zeitgrenzen
(Attribute) "timestamp_begin", "timestamp_end" bzw. "timeDiffToNow / timeOlderThan".
Es muss das auszuwertende Reading über das Attribut "reading"
angegeben sein.
Die Auswertung enthält den Zeitstempel des ermittelten Maximumwertes innerhalb der
Aggregation bzw. Zeitgrenzen.
Im Reading wird der Zeitstempel des letzten Auftretens vom Maximalwert ausgegeben
falls dieser Wert im Intervall mehrfach erreicht wird.
Ist keine oder die Option "display" angegeben, werden die Ergebnisse nur angezeigt. Mit
der Option "writeToDB" werden die Berechnungsergebnisse mit einem neuen Readingnamen
in der Datenbank gespeichert.
Der neue Readingname wird aus einem Präfix und dem originalen Readingnamen gebildet,
wobei der originale Readingname durch das Attribut "readingNameMap" ersetzt werden kann.
Der Präfix setzt sich aus der Bildungsfunktion und der Aggregation zusammen.
Der Timestamp der neuen Readings in der Datenbank wird von der eingestellten Aggregationsperiode
abgeleitet, sofern kein eindeutiger Zeitpunkt des Ergebnisses bestimmt werden kann.
Das Feld "EVENT" wird mit "calculated" gefüllt.
Beispiel neuer Readingname gebildet aus dem Originalreading "totalpac":
max_day_totalpac
# <Bildungsfunktion>_<Aggregation>_<Originalreading>
minValue [display | writeToDB]
- berechnet den Minimalwert des Datenbankfelds "VALUE" in den Zeitgrenzen
(Attribute) "timestamp_begin", "timestamp_end" bzw. "timeDiffToNow / timeOlderThan".
Es muss das auszuwertende Reading über das Attribut "reading"
angegeben sein.
Die Auswertung enthält den Zeitstempel des ermittelten Minimumwertes innerhalb der
Aggregation bzw. Zeitgrenzen.
Im Reading wird der Zeitstempel des ersten Auftretens vom Minimalwert ausgegeben
falls dieser Wert im Intervall mehrfach erreicht wird.
Ist keine oder die Option "display" angegeben, werden die Ergebnisse nur angezeigt. Mit
der Option "writeToDB" werden die Berechnungsergebnisse mit einem neuen Readingnamen
in der Datenbank gespeichert.
Der neue Readingname wird aus einem Präfix und dem originalen Readingnamen gebildet,
wobei der originale Readingname durch das Attribut "readingNameMap" ersetzt werden kann.
Der Präfix setzt sich aus der Bildungsfunktion und der Aggregation zusammen.
Der Timestamp der neuen Readings in der Datenbank wird von der eingestellten Aggregationsperiode
abgeleitet, sofern kein eindeutiger Zeitpunkt des Ergebnisses bestimmt werden kann.
Das Feld "EVENT" wird mit "calculated" gefüllt.
Beispiel neuer Readingname gebildet aus dem Originalreading "totalpac":
min_day_totalpac
# <Bildungsfunktion>_<Aggregation>_<Originalreading>
optimizeTables - optimiert die Tabellen in der angeschlossenen Datenbank (MySQL).
Vor und nach der Optimierung kann ein FHEM-Kommando ausgeführt werden.
(siehe Attribute "executeBeforeProc", "executeAfterProc")
Hinweis:
Obwohl die Funktion selbst non-blocking ausgelegt ist, muß das zugeordnete DbLog-Device
im asynchronen Modus betrieben werden um ein Blockieren von FHEMWEB zu vermeiden.
readingRename - benennt den Namen eines Readings innerhalb der angeschlossenen Datenbank (siehe Internal DATABASE) um.
Der Readingname wird immer in der gesamten Datenbank umgesetzt. Eventuell
gesetzte Zeitgrenzen oder Beschränkungen durch die Attribute
Device bzw. Reading werden nicht berücksichtigt.
Beispiel:
set <name> readingRename <alter Readingname>,<neuer Readingname>
# Die Anzahl der umbenannten Device-Datensätze wird im Reading "reading_renamed"
ausgegeben.
# Wird der umzubenennende Readingname in der Datenbank nicht gefunden, wird eine
WARNUNG im Reading "reading_not_renamed" ausgegeben.
# Entsprechende Einträge erfolgen auch im Logfile mit verbose=3.
Hinweis:
Obwohl die Funktion selbst non-blocking ausgelegt ist, sollte das zugeordnete DbLog-Device
im asynchronen Modus betrieben werden um ein Blockieren von FHEMWEB zu vermeiden (Tabellen-Lock).
repairSQLite - repariert eine korrupte SQLite-Datenbank.
Eine Korruption liegt im Allgemeinen vor wenn die Fehlermitteilung "database disk image is malformed"
im state des DbLog-Devices erscheint.
Wird dieses Kommando gestartet, wird das angeschlossene DbLog-Device zunächst automatisch für 10 Stunden
(36000 Sekunden) von der Datenbank getrennt (Trennungszeit). Nach Abschluss der Reparatur erfolgt
wieder eine sofortige Neuverbindung zur reparierten Datenbank.
Dem Befehl kann eine abweichende Trennungszeit (in Sekunden) als Argument angegeben werden.
Die korrupte Datenbank wird als <database>.corrupt im gleichen Verzeichnis gespeichert.
Beispiel:
set <name> repairSQLite
# Die Datenbank wird repariert, Trennungszeit beträgt 10 Stunden
set <name> repairSQLite 600
# Die Datenbank wird repariert, Trennungszeit beträgt 10 Minuten
Hinweis:
Es ist nicht garantiert, dass die Reparatur erfolgreich verläuft und keine Daten verloren gehen.
Je nach Schwere der Korruption kann Datenverlust auftreten oder die Reparatur scheitern, auch wenn
kein Fehler im Ablauf signalisiert wird. Ein Backup der Datenbank sollte unbedingt vorhanden
sein !
restoreMySQL <File> - stellt die Datenbank aus einem serverSide- oder clientSide-Dump wieder her.
Die Funktion stellt über eine Drop-Down Liste eine Dateiauswahl für den Restore zur Verfügung.
Verwendung eines serverSide-Dumps
Es wird der Inhalt der history-Tabelle aus einem serverSide-Dump wiederhergestellt.
Dazu ist das Verzeichnis "dumpDirRemote" des MySQL-Servers auf dem Client zu mounten
und im Attribut "dumpDirLocal" dem DbRep-Device bekannt zu machen.
Es werden alle Files mit der Endung "csv[.gzip]" und deren Name mit der
verbundenen Datenbank beginnt (siehe Internal DATABASE), aufgelistet.
Verwendung eines clientSide-Dumps
Es werden alle Tabellen und eventuell vorhandenen Views wiederhergestellt.
Das Verzeichnis, in dem sich die Dump-Files befinden, ist im Attribut "dumpDirLocal" dem
DbRep-Device bekannt zu machen.
Es werden alle Files mit der Endung "sql[.gzip]" und deren Name mit der
verbundenen Datenbank beginnt (siehe Internal DATABASE), aufgelistet.
Die Geschwindigkeit des Restores ist abhängig von der Servervariable "max_allowed_packet". Durch Veränderung
dieser Variable im File my.cnf kann die Geschwindigkeit angepasst werden. Auf genügend verfügbare Ressourcen (insbesondere
RAM) ist dabei zu achten.
Der Datenbankuser benötigt Rechte zum Tabellenmanagement, z.B.:
CREATE, ALTER, INDEX, DROP, SHOW VIEW, CREATE VIEW
restoreSQLite <File>.sqlitebkp[.gzip] - stellt das Backup einer SQLite-Datenbank wieder her.
Die Funktion stellt über eine Drop-Down Liste die für den Restore zur Verfügung stehenden Dateien
zur Verfügung. Die aktuell in der Zieldatenbank enthaltenen Daten werden gelöscht bzw.
überschrieben.
Es werden alle Files mit der Endung "sqlitebkp[.gzip]" und deren Name mit dem Namen der
verbundenen Datenbank beginnt, aufgelistet .
sqlCmd - führt ein beliebiges Benutzer spezifisches Kommando aus.
Enthält dieses Kommando eine Delete-Operation, muss zur Sicherheit das
Attribut "allowDeletion" gesetzt sein.
Bei der Ausführung dieses Kommandos werden keine Einschränkungen durch gesetzte Attribute
"device", "reading", "time.*" bzw. "aggregation" berücksichtigt.
Sollen die im Modul gesetzten Attribute "timestamp_begin" bzw.
"timestamp_end" im Statement berücksichtigt werden, können die Platzhalter
"§timestamp_begin§" bzw. "§timestamp_end§" dafür verwendet werden.
Soll ein Datensatz upgedated werden, ist dem Statement "TIMESTAMP=TIMESTAMP" hinzuzufügen um eine Änderung des
originalen Timestamps zu verhindern.
Beispiele für Statements:
set <name> sqlCmd select DEVICE, count(*) from history where TIMESTAMP >= "2017-01-06 00:00:00" group by DEVICE having count(*) > 800
set <name> sqlCmd select DEVICE, count(*) from history where TIMESTAMP >= "2017-05-06 00:00:00" group by DEVICE
set <name> sqlCmd select DEVICE, count(*) from history where TIMESTAMP >= §timestamp_begin§ group by DEVICE
set <name> sqlCmd select * from history where DEVICE like "Te%t" order by `TIMESTAMP` desc
set <name> sqlCmd select * from history where `TIMESTAMP` > "2017-05-09 18:03:00" order by `TIMESTAMP` desc
set <name> sqlCmd select * from current order by `TIMESTAMP` desc
set <name> sqlCmd select sum(VALUE) as 'Einspeisung am 04.05.2017', count(*) as 'Anzahl' FROM history where `READING` = "Einspeisung_WirkP_Zaehler_Diff" and TIMESTAMP between '2017-05-04' AND '2017-05-05'
set <name> sqlCmd delete from current
set <name> sqlCmd delete from history where TIMESTAMP < "2016-05-06 00:00:00"
set <name> sqlCmd update history set TIMESTAMP=TIMESTAMP,VALUE='Val' WHERE VALUE='TestValue'
set <name> sqlCmd select * from history where DEVICE = "Test"
set <name> sqlCmd insert into history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2017-05-09 17:00:14','Test','manuell','manuell','Tes§e','TestValue','°C')
Das Ergebnis des Statements wird im Reading "SqlResult" dargestellt.
Die Ergebnis-Formatierung kann durch das Attribut "sqlResultFormat" ausgewählt, sowie der verwendete
Feldtrenner durch das Attribut "sqlResultFieldSep" festgelegt werden.
Das Modul stellt optional eine Kommando-Historie zur Verfügung sobald ein SQL-Kommando erfolgreich
ausgeführt wurde.
Um diese Option zu nutzen, ist das Attribut "sqlCmdHistoryLength" mit der gewünschten Listenlänge
zu aktivieren.
Zur besseren Übersicht sind die zur Steuerung von sqlCmd relevanten Attribute hier noch einmal
dargestellt:
allowDeletion
: aktiviert Löschmöglichkeit
sqlResultFormat
: legt die Darstellung des Kommandoergebnis fest
sqlResultFieldSep
: Auswahl Feldtrenner im Ergebnis
sqlCmdHistoryLength
: Aktivierung Kommando-Historie und deren Umfang
Hinweis:
Auch wenn das Modul bezüglich der Datenbankabfrage nichtblockierend arbeitet, kann eine
zu große Ergebnismenge (Anzahl Zeilen bzw. Readings) die Browsersesssion bzw. FHEMWEB
blockieren. Wenn man sich unsicher ist, sollte man vorsorglich dem Statement ein Limit
hinzufügen.
sqlCmdHistory - Wenn mit dem Attribut "sqlCmdHistoryLength" aktiviert, kann
aus einer Liste ein bereits erfolgreich ausgeführtes sqlCmd-Kommando wiederholt werden.
Mit Ausführung des letzten Eintrags der Liste, "__purge_historylist__", kann die Liste gelöscht
werden.
Falls das Statement "," enthält, wird dieses Zeichen aus technischen Gründen in der
History-Liste als "<c>" dargestellt.
sqlSpecial - Die Funktion bietet eine Drop-Downliste mit einer Auswahl vorbereiter Auswertungen
an.
Das Ergebnis des Statements wird im Reading "SqlResult" dargestellt.
Die Ergebnis-Formatierung kann durch das Attribut "sqlResultFormat"
ausgewählt, sowie der verwendete Feldtrenner durch das Attribut
"sqlResultFieldSep" festgelegt werden.
Die für diese Funktion relevanten Attribute sind:
sqlResultFormat
: Optionen der Ergebnisformatierung
sqlResultFieldSep
: Auswahl des Trennzeichens zwischen Ergebnisfeldern
Es sind die folgenden vordefinierte Auswertungen auswählbar:
50mostFreqLogsLast2days
: ermittelt die 50 am häufigsten vorkommenden Loggingeinträge der letzten 2 Tage
allDevCount
: alle in der Datenbank vorkommenden Devices und deren Anzahl
allDevReadCount
: alle in der Datenbank vorkommenden Device/Reading-Kombinationen und deren Anzahl
sumValue [display | writeToDB]
- Berechnet die Summenwerte des Datenbankfelds "VALUE" in den Zeitgrenzen
(Attribute) "timestamp_begin", "timestamp_end" bzw. "timeDiffToNow / timeOlderThan".
Es muss das auszuwertende Reading im Attribut "reading"
angegeben sein. Diese Funktion ist sinnvoll wenn fortlaufend Wertedifferenzen eines
Readings in die Datenbank geschrieben werden.
Ist keine oder die Option "display" angegeben, werden die Ergebnisse nur angezeigt. Mit
der Option "writeToDB" werden die Berechnungsergebnisse mit einem neuen Readingnamen
in der Datenbank gespeichert.
Der neue Readingname wird aus einem Präfix und dem originalen Readingnamen gebildet,
wobei der originale Readingname durch das Attribut "readingNameMap" ersetzt werden kann.
Der Präfix setzt sich aus der Bildungsfunktion und der Aggregation zusammen.
Der Timestamp der neuen Readings in der Datenbank wird von der eingestellten Aggregationsperiode
abgeleitet, sofern kein eindeutiger Zeitpunkt des Ergebnisses bestimmt werden kann.
Das Feld "EVENT" wird mit "calculated" gefüllt.
Beispiel neuer Readingname gebildet aus dem Originalreading "totalpac":
sum_day_totalpac
# <Bildungsfunktion>_<Aggregation>_<Originalreading>
syncStandby <DbLog-Device Standby>
- Es werden die Datensätze aus der angeschlossenen Datenbank (Quelle) direkt in eine weitere
Datenbank (Standby-Datenbank) übertragen.
Dabei ist "<DbLog-Device Standby>" das DbLog-Device, welches mit der Standby-Datenbank
verbunden ist.
Es werden alle Datensätze übertragen, die durch Timestamp-Attribute
bzw. die Attribute "device", "reading" bestimmt sind.
Die Datensätze werden dabei in Zeitscheiben entsprechend der eingestellten Aggregation übertragen.
Hat das Attribut "aggregation" den Wert "no" oder "month", werden die Datensätze automatisch
in Tageszeitscheiben zur Standby-Datenbank übertragen.
Quell- und Standby-Datenbank können unterschiedlichen Typs sein.
Die zur Steuerung der syncStandby Funktion relevanten Attribute sind:
aggregation
: Einstellung der Zeitscheiben zur Übertragung (hour,day,week)
device
: Übertragung nur von Datensätzen die <device> enthalten
reading
: Übertragung nur von Datensätzen die <reading> enthalten
time.*
: Attribute zur Zeitabgrenzung der zu übertragenden Datensätze.
tableCurrentFillup - Die current-Tabelle wird mit einem Extrakt der history-Tabelle aufgefüllt.
Die Attribute zur Zeiteinschränkung bzw. device, reading werden ausgewertet.
Dadurch kann der Inhalt des Extrakts beeinflusst werden. Im zugehörigen DbLog-Device sollte sollte das Attribut
"DbLogType=SampleFill/History" gesetzt sein.
tableCurrentPurge - löscht den Inhalt der current-Tabelle. Es werden keine Limitierungen, z.B. durch die Attribute "timestamp_begin",
"timestamp_end", device, reading, usw. , ausgewertet.
vacuum - optimiert die Tabellen in der angeschlossenen Datenbank (SQLite, PostgreSQL).
Vor und nach der Optimierung kann ein FHEM-Kommando ausgeführt werden.
(siehe Attribute "executeBeforeProc", "executeAfterProc")
Hinweis:
Obwohl die Funktion selbst non-blocking ausgelegt ist, muß das zugeordnete DbLog-Device
im asynchronen Modus betrieben werden um ein Blockieren von FHEM zu vermeiden.
Für alle Auswertungsvarianten (Ausnahme sqlCmd,deviceRename,readingRename) gilt:
Zusätzlich zu dem auszuwertenden Reading kann das Device mit angegeben werden um das Reporting nach diesen Kriterien einzuschränken.
Sind keine Zeitgrenzen-Attribute angegeben jedoch das Aggregations-Attribut gesetzt, wird der Zeitstempel des ältesten
Datensatzes in der Datenbank als Startdatum und das aktuelle Datum/die aktuelle Zeit als Zeitgrenze genutzt.
Konnte der älteste Datensatz in der Datenbank nicht ermittelt werden, wird '1970-01-01 01:00:00' als Selektionsstart
genutzt (siehe get <name> minTimestamp).
Sind weder Zeitgrenzen-Attribute noch Aggregation angegeben, wird die Datenselektion ohne Timestamp-Einschränkungen
ausgeführt.
Hinweis:
In der Detailansicht kann ein Browserrefresh nötig sein um die Operationsergebnisse zu sehen sobald im DeviceOverview "state = done" angezeigt wird.
Get
Die Get-Kommandos von DbRep dienen dazu eine Reihe von Metadaten der verwendeten Datenbankinstanz abzufragen.
Dies sind zum Beispiel eingestellte Serverparameter, Servervariablen, Datenbankstatus- und Tabelleninformationen. Die verfügbaren get-Funktionen
sind von dem verwendeten Datenbanktyp abhängig. So ist für SQLite z.Zt. nur "svrinfo" verfügbar. Die Funktionen liefern nativ sehr viele Ausgabewerte,
die über über funktionsspezifische Attribute abgrenzbar sind. Der Filter ist als kommaseparierte Liste anzuwenden.
Dabei kann SQL-Wildcard (%) verwendet werden.
Hinweis:
Nach der Ausführung einer get-Funktion in der Detailsicht einen Browserrefresh durchführen um die Ergebnisse zu sehen !
blockinginfo - Listet die aktuell systemweit laufenden Hintergrundprozesse (BlockingCalls) mit ihren Informationen auf.
Zu lange Zeichenketten (z.B. Argumente) werden gekürzt ausgeschrieben.
dbstatus - Listet globale Informationen zum MySQL Serverstatus (z.B. Informationen zum Cache, Threads, Bufferpools, etc. ).
Es werden zunächst alle verfügbaren Informationen berichtet. Mit dem Attribut "showStatus" kann die
Ergebnismenge eingeschränkt werden, um nur gewünschte Ergebnisse abzurufen. Detailinformationen zur Bedeutung der einzelnen Readings
sind hier verfügbar.
Bespiel
get <name> dbstatus
attr <name> showStatus %uptime%,%qcache%
# Es werden nur Readings erzeugt die im Namen "uptime" und "qcache" enthalten
dbValue <SQL-Statement> -
Führt das angegebene SQL-Statement blockierend aus. Diese Funktion ist durch ihre Arbeitsweise
speziell für den Einsatz in usereigenen Scripten geeignet.
Die Eingabe akzeptiert Mehrzeiler und gibt ebenso mehrzeilige Ergebisse zurück.
Werden mehrere Felder selektiert und zurückgegeben, erfolgt die Feldtrennung mit dem Trenner
des Attributes "sqlResultFieldSep" (default "|"). Mehrere Ergebniszeilen
werden mit Newline ("\n") separiert.
Diese Funktion setzt/aktualisiert nur Statusreadings, die Funktion im Attribut "userExitFn"
wird nicht aufgerufen.
Bespiele zur Nutzung im FHEMWEB
{fhem("get <name> dbValue select device,count(*) from history where timestamp > '2018-04-01' group by device")}
get <name> dbValue select device,count(*) from history where timestamp > '2018-04-01' group by device
{CommandGet(undef,"Rep.LogDB1 dbValue select device,count(*) from history where timestamp > '2018-04-01' group by device")}
Erstellt man eine kleine Routine in 99_myUtils, wie z.B.:
sub dbval($$) {
my ($name,$cmd) = @_;
my $ret = CommandGet(undef,"$name dbValue $cmd");
return $ret;
}
kann dbValue vereinfacht verwendet werden mit Aufrufen wie:
Bespiele
{dbval("<name>","select count(*) from history")}
oder
$ret = dbval("<name>","select count(*) from history");
dbvars - Zeigt die globalen Werte der MySQL Systemvariablen. Enthalten sind zum Beispiel Angaben zum InnoDB-Home, dem Datafile-Pfad,
Memory- und Cache-Parameter, usw. Die Ausgabe listet zunächst alle verfügbaren Informationen auf. Mit dem
Attribut "showVariables" kann die Ergebnismenge eingeschränkt werden um nur gewünschte Ergebnisse
abzurufen. Weitere Informationen zur Bedeutung der ausgegebenen Variablen sind
hier verfügbar.
Bespiel
get <name> dbvars
attr <name> showVariables %version%,%query_cache%
# Es werden nur Readings erzeugt die im Namen "version" und "query_cache" enthalten
minTimestamp - Ermittelt den Zeitstempel des ältesten Datensatzes in der Datenbank (wird implizit beim Start von
FHEM ausgeführt).
Der Zeitstempel wird als Selektionsbeginn verwendet wenn kein Zeitattribut den Selektionsbeginn
festlegt.
procinfo - Listet die existierenden Datenbank-Prozesse in einer Tabelle auf (nur MySQL).
Typischerweise werden nur die Prozesse des Verbindungsusers (angegeben in DbLog-Konfiguration)
ausgegeben. Sollen alle Prozesse angezeigt werden, ist dem User das globale Recht "PROCESS"
einzuräumen.
Für bestimmte SQL-Statements wird seit MariaDB 5.3 ein Fortschrittsreporting (Spalte "PROGRESS")
ausgegeben. Zum Beispiel kann der Abarbeitungsgrad bei der Indexerstellung verfolgt werden.
Weitere Informationen sind
hier verfügbar.
svrinfo - allgemeine Datenbankserver-Informationen wie z.B. die DBMS-Version, Serveradresse und Port usw. Die Menge der Listenelemente
ist vom Datenbanktyp abhängig. Mit dem Attribut "showSvrInfo" kann die Ergebnismenge eingeschränkt werden.
Weitere Erläuterungen zu den gelieferten Informationen sind
hier zu finden.
Bespiel
get <name> svrinfo
attr <name> showSvrInfo %SQL_CATALOG_TERM%,%NAME%
# Es werden nur Readings erzeugt die im Namen "SQL_CATALOG_TERM" und "NAME" enthalten
tableinfo - ruft Tabelleninformationen aus der mit dem DbRep-Device verbundenen Datenbank ab (MySQL).
Es werden per default alle in der verbundenen Datenbank angelegten Tabellen ausgewertet.
Mit dem Attribut "showTableInfo" können die Ergebnisse eingeschränkt werden. Erläuterungen zu den erzeugten
Readings sind hier zu finden.
Bespiel
get <name> tableinfo
attr <name> showTableInfo current,history
# Es werden nur Information der Tabellen "current" und "history" angezeigt
Attribute
Über die modulspezifischen Attribute wird die Abgrenzung der Auswertung und die Aggregation der Werte gesteuert.
Hinweis zur SQL-Wildcard Verwendung:
Innerhalb der Attribut-Werte für "device" und "reading" kann SQL-Wildcards "%" angegeben werden.
Dabei wird "%" als Platzhalter für beliebig viele Zeichen verwendet.
Das Zeichen "_" wird nicht als SQL-Wildcard supported.
Dies gilt für alle Funktionen ausser "insert", "importFromFile" und "deviceRename".
Die Funktion "insert" erlaubt nicht, dass die genannten Attribute das Wildcard "%" enthalten. Character "_" wird als normales Zeichen gewertet.
In Ergebnis-Readings wird das Wildcardzeichen "%" durch "/" ersetzt um die Regeln für erlaubte Zeichen in Readings einzuhalten.
aggregation - Zusammenfassung der Device/Reading-Selektionen in Stunden,Tage,Kalenderwochen,Kalendermonaten
oder "no".
Liefert z.B. die Anzahl der DB-Einträge am Tag (countEntries), Summierung von
Differenzwerten eines Readings (sumValue), usw.
Mit Aggregation "no" (default) erfolgt keine Zusammenfassung in einem Zeitraum, sondern die
Ausgabe wird aus allen Werten einer Device/Reading-Kombination zwischen den definierten
Zeiträumen ermittelt.
allowDeletion - schaltet die Löschfunktion des Moduls frei
averageCalcForm - legt die Berechnungsvariante für die Ermittlung des Durchschnittswertes mit "averageValue"
fest.
Zur Zeit sind folgende Varianten implementiert:
avgArithmeticMean :
es wird der arithmetische Mittelwert berechnet (default)
avgDailyMeanGWS :
berechnet die Tagesmitteltemperatur entsprechend den
Vorschriften des deutschen Wetterdienstes (siehe "helpful hints" mit Funktion get versionNotes).
Diese Variante verwendet automatisch die Aggregation "day".
avgTimeWeightMean :
berechnet den zeitgewichteten Mittelwert
device - Abgrenzung der DB-Selektionen auf ein bestimmtes Device.
Es können Geräte-Spezifikationen (devspec) angegeben werden.
Innerhalb von Geräte-Spezifikationen wird SQL-Wildcard (%) als normales ASCII-Zeichen gewertet.
Die Devicenamen werden vor der Selektion aus der Geräte-Spezifikationen und den aktuell in FHEM
vorhandenen Devices abgeleitet.
diffAccept - gilt für Funktion diffValue. diffAccept legt fest bis zu welchem Schwellenwert eine berechnete positive Werte-Differenz
zwischen zwei unmittelbar aufeinander folgenden Datensätzen akzeptiert werden soll (Standard ist 20).
Damit werden fehlerhafte DB-Einträge mit einem unverhältnismäßig hohen Differenzwert von der Berechnung ausgeschlossen und
verfälschen nicht das Ergebnis. Sollten Schwellenwertüberschreitungen vorkommen, wird das Reading "diff_overrun_limit_<diffLimit>"
erstellt. (<diffLimit> wird dabei durch den aktuellen Attributwert ersetzt)
Es enthält eine Liste der relevanten Wertepaare. Mit verbose 3 werden diese Datensätze ebenfalls im Logfile protokolliert.
Beispiel Ausgabe im Logfile beim Überschreiten von diffAccept=10:
DbRep Rep.STP5000.etotal -> data ignored while calc diffValue due to threshold overrun (diffAccept = 10):
2016-04-09 08:50:50 0.0340 -> 2016-04-09 12:42:01 13.3440
# Der erste Datensatz mit einem Wert von 0.0340 ist untypisch gering zum nächsten Wert 13.3440 und führt zu einem zu hohen
Differenzwert.
# Es ist zu entscheiden ob der Datensatz gelöscht, ignoriert, oder das Attribut diffAccept angepasst werden sollte.
disable - deaktiviert das Modul
dumpComment - User-Kommentar. Er wird im Kopf des durch den Befehl "dumpMyQL clientSide" erzeugten Dumpfiles
eingetragen.
dumpCompress - wenn gesetzt, werden die Dumpfiles nach "dumpMySQL" bzw. "dumpSQLite" komprimiert
dumpDirLocal - Zielverzeichnis für die Erstellung von Dumps mit "dumpMySQL clientSide".
default: "{global}{modpath}/log/" auf dem FHEM-Server.
Ebenfalls werden in diesem Verzeichnis alte Backup-Files durch die interne Versionsverwaltung von
"dumpMySQL" gesucht und gelöscht wenn die gefundene Anzahl den Attributwert "dumpFilesKeep"
überschreitet. Das Attribut dient auch dazu ein lokal gemountetes Verzeichnis "dumpDirRemote"
DbRep bekannt zu machen.
dumpDirRemote - Zielverzeichnis für die Erstellung von Dumps mit "dumpMySQL serverSide".
default: das Home-Dir des MySQL-Servers auf dem MySQL-Host
dumpMemlimit - erlaubter Speicherverbrauch für das Dump SQL-Script zur Generierungszeit (default: 100000 Zeichen).
Bitte den Parameter anpassen, falls es zu Speicherengpässen und damit verbundenen Performanceproblemen
kommen sollte.
dumpSpeed - Anzahl der abgerufenen Zeilen aus der Quelldatenbank (default: 10000) pro Select durch "dumpMySQL ClientSide".
Dieser Parameter hat direkten Einfluß auf die Laufzeit und den Ressourcenverbrauch zur Laufzeit.
dumpFilesKeep - Es wird die angegebene Anzahl Dumpfiles im Dumpdir belassen (default: 3). Sind mehr (ältere) Dumpfiles
vorhanden, werden diese gelöscht nachdem ein neuer Dump erfolgreich erstellt wurde. Das globale
Attribut "archivesort" wird berücksichtigt.
executeAfterProc - Es kann ein FHEM-Kommando angegeben werden welches nach dem Dump ausgeführt werden soll.
Funktionen sind in {} einzuschließen.
# "bdump" ist eine in 99_myUtils definierte Funktion.
sub bdump {
my ($name) = @_;
my $hash = $defs{$name};
# die eigene Funktion, z.B.
Log3($name, 3, "DbRep $name -> Dump startet");
return;
}
expimpfile - Pfad/Dateiname für Export/Import in/aus einem File.
Der Dateiname kann Platzhalter enthalten die gemäß der nachfolgenden Tabelle ersetzt werden.
Weiterhin können %-wildcards der POSIX strftime-Funktion des darunterliegenden OS enthalten
sein (siehe auch strftime Beschreibung).
%L
: wird ersetzt durch den Wert des global logdir Attributs
%TSB
: wird ersetzt durch den (berechneten) Wert des timestamp_begin Attributs
Allgemein gebräuchliche POSIX-Wildcards sind:
%d
: Tag des Monats (01..31)
%m
: Monat (01..12)
%Y
: Jahr (1970...)
%w
: Wochentag (0..6); beginnend mit Sonntag (0)
%j
: Tag des Jahres (001..366)
%U
: Wochennummer des Jahres, wobei Wochenbeginn = Sonntag (00..53)
%W
: Wochennummer des Jahres, wobei Wochenbeginn = Montag (00..53)
Zur POSIX Wildcardverwendung siehe auch die Erläuterungen zu Filelog.
fetchMarkDuplicates
- Markierung von mehrfach vorkommenden Datensätzen im Ergebnis des "fetchrows" Kommandos
fetchRoute [descent | ascent] - bestimmt die Leserichtung des fetchrows-Befehl.
descent - die Datensätze werden absteigend gelesen (default). Wird
die durch das Attribut "limit" festgelegte Anzahl der Datensätze
überschritten, werden die neuesten x Datensätze angezeigt.
ascent - die Datensätze werden aufsteigend gelesen. Wird
die durch das Attribut "limit" festgelegte Anzahl der Datensätze
überschritten, werden die ältesten x Datensätze angezeigt.
ftpUse - FTP Transfer nach einem Dump wird eingeschaltet (ohne SSL Verschlüsselung). Das erzeugte
Datenbank Backupfile wird non-blocking zum angegebenen FTP-Server (Attribut "ftpServer")
übertragen.
ftpUseSSL - FTP Transfer mit SSL Verschlüsselung nach einem Dump wird eingeschaltet. Das erzeugte
Datenbank Backupfile wird non-blocking zum angegebenen FTP-Server (Attribut "ftpServer")
übertragen.
ftpUser - User zur Anmeldung am FTP-Server nach einem Dump, default: "anonymous".
ftpDebug - Debugging der FTP Kommunikation zur Fehlersuche.
ftpDir - Verzeichnis des FTP-Servers in welches das File nach einem Dump übertragen werden soll
(default: "/").
ftpDumpFilesKeep - Es wird die angegebene Anzahl Dumpfiles im <ftpDir> belassen (default: 3). Sind mehr
(ältere) Dumpfiles vorhanden, werden diese gelöscht nachdem ein neuer Dump erfolgreich
übertragen wurde.
ftpPassive - setzen wenn passives FTP verwendet werden soll
ftpPort - FTP-Port, default: 21
ftpPwd - Passwort des FTP-Users, default nicht gesetzt
ftpServer - Name oder IP-Adresse des FTP-Servers zur Übertragung von Files nach einem Dump.
ftpTimeout - Timeout für eine FTP-Verbindung in Sekunden (default: 30).
limit - begrenzt die Anzahl der resultierenden Datensätze im select-Statement von "fetchrows", bzw. der anzuzeigenden Datensätze
der Kommandos "delSeqDoublets adviceDelete", "delSeqDoublets adviceRemain" (default 1000).
Diese Limitierung soll eine Überlastung der Browsersession und ein
blockieren von FHEMWEB verhindern. Bei Bedarf entsprechend ändern bzw. die
Selektionskriterien (Zeitraum der Auswertung) anpassen.
optimizeTablesBeforeDump - wenn "1", wird vor dem Datenbankdump eine Tabellenoptimierung ausgeführt (default: 0).
Dadurch verlängert sich die Laufzeit des Dump.
Hinweis
Die Tabellenoptimierung führt zur Sperrung der Tabellen und damit zur Blockierung von
FHEM falls DbLog nicht im asynchronen Modus (DbLog-Attribut "asyncMode") betrieben wird !
reading - Abgrenzung der DB-Selektionen auf ein bestimmtes oder mehrere Readings.
Mehrere Readings werden als Komma separierte Liste angegeben.
SQL Wildcard (%) wird in einer Liste als normales ASCII-Zeichen gewertet.
readingNameMap - der Name des ausgewerteten Readings wird mit diesem String für die Anzeige überschrieben
readingPreventFromDel - Komma separierte Liste von Readings die vor einer neuen Operation nicht gelöscht
werden sollen
role - die Rolle des DbRep-Device. Standard ist "Client". Die Rolle "Agent" ist im Abschnitt
"DbRep-Agent" beschrieben.
Siehe auch Abschnitt DbRep-Agent.
seqDoubletsVariance - akzeptierte Abweichung (+/-) für das Kommando "set <name> delSeqDoublets".
Der Wert des Attributs beschreibt die Abweichung bis zu der aufeinanderfolgende numerische
Werte (VALUE) von Datensätze als gleich angesehen und gelöscht werden sollen.
"seqDoubletsVariance" ist ein absoluter Zahlenwert,
der sowohl als positive als auch negative Abweichung verwendet wird.
showproctime - wenn gesetzt, zeigt das Reading "sql_processing_time" die benötigte Abarbeitungszeit (in Sekunden)
für die SQL-Ausführung der durchgeführten Funktion. Dabei wird nicht ein einzelnes
SQl-Statement, sondern die Summe aller notwendigen SQL-Abfragen innerhalb der jeweiligen
Funktion betrachtet.
showStatus - grenzt die Ergebnismenge des Befehls "get <name> dbstatus" ein. Es können SQL-Wildcard (%) verwendet werden.
Bespiel:
attr <name> showStatus %uptime%,%qcache%
# Es werden nur Readings erzeugt die im Namen "uptime" und "qcache" enthalten
showVariables - grenzt die Ergebnismenge des Befehls "get <name> dbvars" ein. Es können SQL-Wildcard (%) verwendet werden.
Bespiel:
attr <name> showVariables %version%,%query_cache%
# Es werden nur Readings erzeugt die im Namen "version" und "query_cache" enthalten
showSvrInfo - grenzt die Ergebnismenge des Befehls "get <name> svrinfo" ein. Es können SQL-Wildcard (%) verwendet werden.
Bespiel:
attr <name> showSvrInfo %SQL_CATALOG_TERM%,%NAME%
# Es werden nur Readings erzeugt die im Namen "SQL_CATALOG_TERM" und "NAME" enthalten
showTableInfo - grenzt die Ergebnismenge des Befehls "get <name> tableinfo" ein. Es können SQL-Wildcard (%) verwendet werden.
Bespiel:
attr <name> showTableInfo current,history
# Es werden nur Information der Tabellen "current" und "history" angezeigt
sqlResultFieldSep - legt den verwendeten Feldseparator (default: "|") im Ergebnis des Kommandos
"set ... sqlCmd" fest.
sqlCmdHistoryLength
- aktiviert die Kommandohistorie von "sqlCmd" und legt deren Länge fest
sqlResultFormat - legt die Formatierung des Ergebnisses des Kommandos "set <name> sqlCmd" fest.
Mögliche Optionen sind:
separated - die Ergebniszeilen werden als einzelne Readings fortlaufend
generiert. (default)
mline - das Ergebnis wird als Mehrzeiler im Reading
SqlResult dargestellt.
sline - das Ergebnis wird als Singleline im Reading
SqlResult dargestellt. Satztrenner ist"]|[".
table - das Ergebnis wird als Tabelle im Reading
SqlResult dargestellt.
json - erzeugt das Reading SqlResult als
JSON-kodierten Hash.
Jedes Hash-Element (Ergebnissatz) setzt sich aus der laufenden Nummer
des Datensatzes (Key) und dessen Wert zusammen.
Die Weiterverarbeitung des Ergebnisses kann z.B. mit der folgenden userExitFn in 99_myUtils.pm erfolgen:
sub resfromjson {
my ($name,$reading,$value) = @_;
my $hash = $defs{$name};
if ($reading eq "SqlResult") {
# nur Reading SqlResult enthält JSON-kodierte Daten
my $data = decode_json($value);
foreach my $k (keys(%$data)) {
# ab hier eigene Verarbeitung für jedes Hash-Element
# z.B. Ausgabe jedes Element welches "Cam" enthält
my $ke = $data->{$k};
if($ke =~ m/Cam/i) {
my ($res1,$res2) = split("\\|", $ke);
Log3($name, 1, "$name - extract element $k by userExitFn: ".$res1." ".$res2);
}
}
}
return;
}
timeYearPeriod - Mit Hilfe dieses Attributes wird eine jährliche Zeitperiode für die Datenbankselektion bestimmt.
Die Zeitgrenzen werden zur Ausführungszeit dynamisch berechnet. Es wird immer eine Jahresperiode
bestimmt. Eine unterjährige Angabe ist nicht möglich.
Dieses Attribut ist vor allem dazu gedacht Auswertungen synchron zu einer Abrechnungsperiode, z.B. der eines
Energie- oder Gaslieferanten, anzufertigen.
Beispiel:
attr <name> timeYearPeriod 06-25 06-24
# wertet die Datenbank in den Zeitgrenzen 25. Juni AAAA bis 24. Juni BBBB aus.
# Das Jahr AAAA bzw. BBBB wird in Abhängigkeit des aktuellen Datums errechnet.
# Ist das aktuelle Datum >= 25. Juni und =< 31. Dezember, dann ist AAAA = aktuelles Jahr und BBBB = aktuelles Jahr+1
# Ist das aktuelle Datum >= 01. Januar und =< 24. Juni, dann ist AAAA = aktuelles Jahr-1 und BBBB = aktuelles Jahr
timestamp_begin - der zeitliche Beginn für die Datenselektion (*)
timestamp_end - das zeitliche Ende für die Datenselektion. Wenn nicht gesetzt wird immer die aktuelle
Datum/Zeit-Kombi für das Ende der Selektion eingesetzt. (*)
(*) Das Format von Timestamp ist wie in DbLog "YYYY-MM-DD HH:MM:SS". Für die Attribute "timestamp_begin", "timestamp_end"
kann ebenso eine der folgenden Eingaben verwendet werden. Dabei wird das timestamp-Attribut dynamisch belegt:
# Wertet die Datenbank in den Zeitgrenzen des aktuellen Jahres aus.
Hinweis
Wird das Attribut "timeDiffToNow" gesetzt, werden die eventuell gesetzten anderen Zeit-Attribute
("timestamp_begin","timestamp_end","timeYearPeriod") gelöscht.
Das Setzen von "timestamp_begin" bzw. "timestamp_end" bedingt die Löschung von anderen Zeit-Attribute falls sie vorher
gesetzt waren.
timeDiffToNow - der Selektionsbeginn wird auf den Zeitpunkt "<aktuelle Zeit> - <timeDiffToNow>"
gesetzt (z.b. werden die letzten 24 Stunden in die Selektion eingehen wenn das Attribut auf "86400" gesetzt
wurde). Die Timestampermittlung erfolgt dynamisch zum Ausführungszeitpunkt.
Eingabeformat Beispiel: attr <name> timeDiffToNow 86400
# die Startzeit wird auf "aktuelle Zeit - 86400 Sekunden" gesetzt attr <name> timeDiffToNow d:2 h:3 m:2 s:10
# die Startzeit wird auf "aktuelle Zeit - 2 Tage 3 Stunden 2 Minuten 10 Sekunden" gesetzt attr <name> timeDiffToNow m:600
# die Startzeit wird auf "aktuelle Zeit - 600 Minuten" gesetzt attr <name> timeDiffToNow h:2.5
# die Startzeit wird auf "aktuelle Zeit - 2,5 Stunden" gesetzt attr <name> timeDiffToNow y:1 h:2.5
# die Startzeit wird auf "aktuelle Zeit - 1 Jahr und 2,5 Stunden" gesetzt attr <name> timeDiffToNow y:1.5
# die Startzeit wird auf "aktuelle Zeit - 1,5 Jahre gesetzt
timeOlderThan - das Selektionsende wird auf den Zeitpunkt "<aktuelle Zeit> - <timeOlderThan>"
gesetzt. Dadurch werden alle Datensätze bis zu dem Zeitpunkt "<aktuelle
Zeit> - <timeOlderThan>" berücksichtigt (z.b. wenn auf 86400 gesetzt, werden alle
Datensätze die älter als ein Tag sind berücksichtigt). Die Timestampermittlung erfolgt
dynamisch zum Ausführungszeitpunkt.
Es gelten die gleichen Eingabeformate wie für das Attribut "timeDiffToNow".
timeout - das Attribut setzt den Timeout-Wert für die Blocking-Call Routinen in Sekunden
(Default: 86400)
userExitFn - stellt eine Schnittstelle zur Ausführung eigenen Usercodes zur Verfügung.
Um die Schnittstelle zu aktivieren, wird zunächst die aufzurufende Subroutine in
99_myUtls.pm nach folgendem Muster erstellt:
sub UserFunction {
my ($name,$reading,$value) = @_;
my $hash = $defs{$name};
...
# z.B. übergebene Daten loggen
Log3 $name, 1, "UserExitFn $name called - transfer parameter are Reading: $reading, Value: $value " ;
...
return;
}
Die Aktivierung der Schnittstelle erfogt durch Setzen des Funktionsnamens im Attribut.
Optional kann ein Reading:Value Regex als Argument angegeben werden. Wird kein Regex
angegeben, werden alle Wertekombinationen als "wahr" gewertet (entspricht .*:.*).
Beispiel:
attr userExitFn UserFunction .*:.*
# "UserFunction" ist die Subroutine in 99_myUtils.pm.
Grundsätzlich arbeitet die Schnittstelle OHNE Eventgenerierung bzw. benötigt zur Funktion keinen
Event. Sofern das Attribut gesetzt ist, erfolgt Die Regexprüfung NACH der Erstellung eines
Readings. Ist die Prüfung WAHR, wird die angegebene Funktion aufgerufen.
Zur Weiterverarbeitung werden der aufgerufenenen Funktion folgende Variablen übergeben:
$name - der Name des DbRep-Devices
$reading - der Namen des erstellen Readings
$value - der Wert des Readings
valueFilter - Regulärer Ausdruck zur Filterung von Datensätzen innerhalb bestimmter Funktionen. Der
Regex auf den gesamten selektierten Datensatz (inkl. Device, Reading usw.) angewendet.
Bitte vergleichen sie die Erläuterungen zu den entsprechenden Set-Kommandos.
Readings
Abhängig von der ausgeführten DB-Operation werden die Ergebnisse in entsprechenden Readings dargestellt. Zu Beginn einer neuen Operation
werden alle alten Readings einer vorangegangenen Operation gelöscht um den Verbleib unpassender bzw. ungültiger Readings zu vermeiden.
Zusätzlich werden folgende Readings erzeugt (Auswahl):
state - enthält den aktuellen Status der Auswertung. Wenn Warnungen auftraten (state = Warning) vergleiche Readings
"diff_overrun_limit_<diffLimit>" und "less_data_in_period"
errortext - Grund eines Fehlerstatus
background_processing_time - die gesamte Prozesszeit die im Hintergrund/Blockingcall verbraucht wird
diff_overrun_limit_<diffLimit> - enthält eine Liste der Wertepaare die eine durch das Attribut "diffAccept" festgelegte Differenz
<diffLimit> (Standard: 20) überschreiten. Gilt für Funktion "diffValue".
less_data_in_period - enthält eine Liste der Zeitperioden in denen nur ein einziger Datensatz gefunden wurde. Die
Differenzberechnung berücksichtigt den letzten Wert der Vorperiode. Gilt für Funktion "diffValue".
sql_processing_time - der Anteil der Prozesszeit die für alle SQL-Statements der ausgeführten
Operation verbraucht wird
SqlResult - Ergebnis des letzten sqlCmd-Kommandos. Die Formatierung erfolgt entsprechend
des Attributes "sqlResultFormat"
sqlCmd - das letzte ausgeführte sqlCmd-Kommando
DbRep Agent - automatisches Ändern von Device-Namen in Datenbanken und DbRep-Definitionen nach FHEM "rename" Kommando
Mit dem Attribut "role" wird die Rolle des DbRep-Device festgelegt. Die Standardrolle ist "Client". Mit der Änderung der Rolle in "Agent" wird das Device
veranlasst auf Umbenennungen von Geräten in der FHEM Installation zu reagieren.
Durch den DbRep-Agenten werden folgende Features aktiviert wenn ein Gerät in FHEM mit "rename" umbenannt wird:
in der dem DbRep-Agenten zugeordneten Datenbank (Internal Database) wird nach Datensätzen mit dem alten Gerätenamen gesucht und dieser Gerätename in
allen betroffenen Datensätzen in den neuen Namen geändert.
in dem DbRep-Agenten zugeordneten DbLog-Device wird in der Definition das alte durch das umbenannte Device ersetzt. Dadurch erfolgt ein weiteres Logging
des umbenannten Device in der Datenbank.
in den existierenden DbRep-Definitionen vom Typ "Client" wird ein evtl. gesetztes Attribut "device = alter Devicename" in "device = neuer Devicename"
geändert. Dadurch werden Auswertungsdefinitionen bei Geräteumbenennungen automatisch konstistent gehalten.
Mit der Änderung in einen Agenten sind folgende Restriktionen verbunden die mit dem Setzen des Attributes "role = Agent" eingeschaltet
und geprüft werden:
es kann nur einen Agenten pro Datenbank in der FHEM-Installation geben. Ist mehr als eine Datenbank mit DbLog definiert, können
ebenso viele DbRep-Agenten eingerichtet werden
mit der Umwandlung in einen Agenten wird nur noch das Set-Komando "renameDevice" verfügbar sein sowie nur ein eingeschränkter Satz von DbRep-spezifischen
Attributen zugelassen. Wird ein DbRep-Device vom bisherigen Typ "Client" in einen Agenten geändert, werden evtl. gesetzte und nun nicht mehr zugelassene
Attribute glöscht.
Die Aktivitäten wie Datenbankänderungen bzw. Änderungen an anderen DbRep-Definitionen werden im Logfile mit verbose=3 protokolliert. Damit die renameDevice-Funktion
bei großen Datenbanken nicht in ein timeout läuft, sollte das Attribut "timeout" entsprechend dimensioniert werden. Wie alle Datenbankoperationen des Moduls
wird auch das Autorename nonblocking ausgeführt.
Beispiel für die Definition eines DbRep-Device als Agent:
Hinweis:
Obwohl die Funktion selbst non-blocking ausgelegt ist, sollte das zugeordnete DbLog-Device
im asynchronen Modus betrieben werden um ein Blockieren von FHEMWEB zu vermeiden (Tabellen-Lock).
Dooya
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: Dooya
EC3000
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: EC3000
ECMD
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: ECMD
ECMDDevice
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: ECMDDevice
list => erzeugt eine neue Zeitplan Liste mit einem Eintrag : Wochentag(0-6) Startzeit(hh:mm) Endezeit(hh:mm) Kommando(on/off) Bsp. 1 10:00 11:30 on
mit Wochentag 00:00 24:00 on kann man den kompletten Tag einschalten
addlist => fügt eine neue Schaltzeit einer bestehenden Zeitplan Liste hinzu : Wochentag(0-6) Startzeit(hh:mm) Endtezeit(hh:mm) Kommando(on/off) Bsp. 1 10:00 11:30 on
dellist => löscht eine bestimmte Schaltzeit eines Tages : Wochentag(0-6) Startzeit(hh:mm) Endezeit(hh:mm) Bsp. 1 10:00 11:30
delete => löscht die Liste eines ganzen Tages : Wochentag(0-6)
day => schaltet die Zeitplanung eines Tages ein oder aus : Wochentag(0-6) on/off Bsp. 5 on
Get
info => Anzeige von MAC , Firmware Version , Modell , Name
power => zeigt alle Stromverbrauchswerte ( nur Modell SP-2101W )
schedule => zeigt alle internen Schaltzeiten (ACHTUNG : Firmware Version beachten !)
status => zeigt an/aus Status der Schaltdose
Attributes
interval => polling interval (default 60)
timeout => max. Wartezeit in Sekunden (default 2)
read-only => es ist nur lesen (Get) erlaubt (default 0)
Definiert eine einzelne Netzwerk-Steckdose vom EGPM2LAN. Diese Definition wird beim Einrichten eines EGPM2LAN automatisch erstellt,
wenn das globale FHEM-Attribut AUTOCREATE aktiviert wurde. Für weitere Informationen, siehe Beschreibung von EGPM2LAN.
Define
define <name> EGPM <device> <socket-nr>
Set
set <name> <[on|off|toggle]>
Schaltet die Steckdose ein oder aus.
set <name> <[on-for-timer|off-for-timer|on-till|off-till|blink|intervals]>
Schaltet die Steckdose fü einen bestimmten Zeitraum oder mehrfach hintereinander. Weitere Infos hierzu unter set extensions.
Das Modul erstellt eine Verbindung zu einer Gembird ® Energenie EG-PM2-LAN Steckdosenleiste und steuert 4 angeschlossene Geräte..
Falls mehrere Steckdosenleisten über das Netzwerk gesteuert werden, ist es ratsam, diese zuerst über die Web-Oberfläche zu konfigurieren und die einzelnen Steckdosen zu benennen. Die Namen werden dann automatisch in die
Oberfläche von FHEM übernommen. Bitte darauf achten, die Weboberfläche mit Logoff wieder zu verlassen, da der Zugriff sonst blockiert wird.
Set
set <name> <[on|off|toggle]> <socketnr.>
Schaltet die gewählte Steckdose ein oder aus.
set <name> <[on|off]> <all>
Schaltet alle Steckdosen gleichzeitig ein oder aus.
set <name> password [<mein-passwort>]
Speichert das Passwort verschlüsselt in FHEM ab. Zum Entfernen eines vorhandenen Passworts den Befehl ohne Parameter aufrufen.
Vor 04/2017 wurde das Passwort im Klartext gespeichert und mit dem DEFINE-Command übergeben.
set <name> <staterequest>
Aktualisiert die Statusinformation der Steckdosenleiste.
Wenn das globale Attribut autocreate aktiviert ist, wird für jede Steckdose ein EGPM-Eintrag erstellt.
set <name> <clearreadings>
Löscht alle ungültigen Einträge im Abschnitt <readings>.
Get
get <name> state
Gibt einen Text in diesem Format aus: "1: off 2: on 3: off 4: off" oder enthält die letzte Fehlermeldung.
Attribute
stateDisplay
Default: socketNumer wechselt zwischen socketNumer and socketName für jeden Statuseintrag. Verwende set statusrequest, um die Anzeige zu aktualisieren.
autocreate
Default: onEGPM-Einträge werden automatisch mit dem set-command erstellt.
Das ElectricityCalculator Modul berechnet den Verbrauch an elektrischer Energie (Stromverbrauch) und den verbundenen Kosten von einem oder mehreren Elektrizitätszählern.
Es ist kein eigenes Zählermodul sondern benötigt eine Regular Expression (regex or regexp) um das Reading mit den Zählimpulse von einem oder mehreren Electrizitätszählern zu finden.
Sobald das Modul in der fhem.cfg definiert wurde, reagiert das Modul auf jedes durch das regex definierte event wie beispielsweise ein myOWDEVICE:counter.* etc.
Das ElectricityCalculator Modul berechnet augenblickliche, historische statistische und vorhersehbare Werte von einem oder mehreren Elektrizitätszählern und erstellt die entsprechenden Readings.
Um zu verhindern, dass man bis zu 12 Monate warten muss, bis alle Werte der Realität entsprechen, müssen die Readings <DestinationDevice>_<SourceCounterReading>_CounterDay1st, <DestinationDevice>_<SourceCounterReading>_CounterMonth1st, <DestinationDevice>_<SourceCounterReading>_CounterYear1st und <DestinationDevice>_<SourceCounterReading>_CounterMeter1st
entsprechend mit dem setreading - Befehl korrigiert werden.
Diese Werte findet man unter Umständen auf der letzten Abrechnung des Elektrizitätsversorgers. Andernfalls dauert es bis zu 24h für die täglichen, 30 Tage für die monatlichen und bis zu 12 Monate für die jährlichen Werte bis diese der Realität entsprechen.
Intervalle kleienr als 10s werden ignoriert um Spitzen zu verhindern die von Blockaden des fhem Systems hervorgerufen werden (z.B. DbLog - reducelog).
Define
define <name> ElectricityCalculator <regex>
<name> :
Der Name dieses Berechnungs-Device. Empfehlung: "myElectricityCalculator".
<regex> :
Eine gültige Regular Expression (regex or regexp) von dem Event wo der Zählerstand gefunden werden kann
Die set - Funktion erlaubt individuelle Readings zu verändern um beispielsweise nach einem Stromausfall Werte zu korrigieren.
Die set - Funktion funktioniert nur für Readings welche im CalculatorDevice gespeichert wurden.
Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit set - Befehl gesetzt werden.
Get
Die get - Funktion liefert nur den Wert des jeweiligen Readings zurück.
Die get - Funktion funktioniert nur für Readings welche im CalculatorDevice gespeichert wurden.
Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit get - Befehl ausgelesen werden.
Attributes
Sollten die unten ausfeg&auuml;hrten Attribute bei der Definition eines entsprechenden Gerätes nicht gesetzt sein, so werden sie vom Modul mit Standard Werten automatisch gesetzt
Zusätzlich können die globalen Attribute wie room verwendet werden.
BasicPricePerAnnum :
Eine gültige float Zahl für die jährliche Grundgebühr in der gewählten Währung für die Elektrizitäts-Versorgung zum Endverbraucher.
Dieser Wert stammt vom Elektrizitätsversorger und steht auf der Abrechnung.
Der Standard Wert ist 0.00
Currency :
Eines der vordefinerten Währungssymbole: [€,£,$].
Der Standard Wert ist €
disable :
Deaktiviert das device. Das Modul wird nicht mehr auf die Events reagieren die durch die Regular Expression definiert wurde.
Der Standard Wert ist 0 = aktiviert.
ElectricityCounterOffset :
Eine gültige float-Zahl für den Unterschied = Offset (Nicht der Unterschied zwischen Zählimpulsen) zwischen dem am mechanischen Elektrizitätszählern und dem angezeigten Wert im Reading dieses Device.
Der Offset-Wert wird wie folgt ermittelt: WOffset = WMechanisch - WModule
Der Standard-Wert ist 0.00
ElectricityKwhPerCounts :
Eine gültige float-Zahl für die Menge kWh pro Zählimpulsen.
Der Wert ist durch das mechanische Zählwerk des Elektrizitätszählern vorgegeben. ElectricityKwhPerCounts = 0.001 bedeutet, dass jeder Zählimpuls ein Tausendstel einer kWh ist (=Wh).
Einige elektronische Zähler (Bsp.: HomeMatic HM-ES-TX-WM) stellen die gezählte Menge an elektrischer Energie als Wh bereit.
Aus diesem Grund muss dieses Attribut auf 0.001 gesetzt werden um eine korrekte Transformation in kWh zu ermöglichen.
Der Standard-Wert ist 1
ElectricityPricePerKWh :
Eine gültige float-Zahl für den Preis pro kWh.
Dieser Wert stammt vom Elektrizitätsversorger und steht auf der Abrechnung.
Der Standard-Wert ist 0.2567
MonthlyPayment :
Eine gültige float-Zahl für die monatlichen Abschlagszahlungen in der gewählten Währung an den Elektrizitätsversorger.
Der Standard-Wert ist 0.00
MonthOfAnnualReading :
Eine gültige Ganz-Zahl für den Monat wenn der mechanische Elektrizitätszähler jedes Jahr durch den Elektrizitätsversorger abgelesen wird.
Der Standard-Wert ist 5 (Mai)
ReadingDestination :
Eines der vordefinerten Device als Ziel der errechneten Readings: [CalculatorDevice,CounterDevice].
Das CalculatorDevice ist das mit diesem Modul erstellte Device.
Das CounterDevice ist das Device von welchem der mechanische Zähler ausgelesen wird.
Der Standard-Wert ist CalculatorDevice.
SiPrefixPower :
Ein Wert der vorgegebenen Auswahlliste: W (Watt), kW (Kilowatt), MW (Megawatt) or GW (Gigawatt).
Es definiert welcher SI-Prefix verwendet werden soll und teilt die Leistung entsprechend durch ein Vielfaches von 1000.
Der Standard-Wert ist W (Watt).
Readings
Sobald das Device in der Lage war mindestens 2 Werte des Zählers einzulesen, werden automatisch die entsprechenden Readings erzeugt:
Der Platzhalter <DestinationDevice> steht für das Device, welches man in dem Attribut ReadingDestination oben festgelegt hat. Dieser Platzhalter bleibt leer, sobald man dort CalculatorDevice ausgewählt hat.
Der Platzhalter <SourceCounterReading> steht für das Reading welches mit der Regular Expression definiert wurde.
Finanzielle Reserve basierend auf den Abschlagszahlungen die jeden Monat an den Elektrizitätsversorger gezahlt werden. Bei negativen Werten ist von einer Nachzahlung auszugehen.
Achtung: ab Fritz!OS 6.90 ist der benötigte Dienst deaktiviert,
bitte den Nachfolger FBAHAHTTP verwenden.
Dieses Modul verbindet sich mit dem AHA (AVM Home Automation) Server auf
einem FRITZ!Box. Es dient als "physikalisches" Gegenstück zum FBDECT Modul. Als erstes muss der Zugang zu diesen Daten
in der FRITZ!Box Web-Oberfläche aktiviert werden.
Define
define <name> FBAHA <device>
<host> ist normalerweise die Adresse der FRITZ!Box, wo das AHA Server
läuft (fritz.box oder localhost), <port> ist 2002.
<device> is entweder a eine Kombianation aus <host>:<port>,
wobei <host> die Adresse der FRITZ!Box ist (localhost AUF dem
FRITZ.BOX) und <port> 2002 ist, oder
UNIX:SEQPACKET:/var/tmp/me_avm_home_external.ctl, wobei das nur fuer
FHEM@FRITZ!BOX zur Verfügung steht. Mit FRITZ!OS 5.50 steht auch der
Netzwerkport zur Verfügung, auf manchen Laborvarianten nur das UNIX
socket.
Beispiel:
Da manchmal die FRITZ!Box die interne Nummer der FBDECT Geräte
neu vergibt, werden beim Verbindungsaufbau zum AHA Server die gespeicherten
Namen (FBNAME) mit dem aktuellen Wert verglichen. Damit das funktioniert,
müssen alle FBDECT Geräte auf dem FRITZ!Box einen eindeutigen Namen
bekommen, und in FHEM muss für alle Geräte "get FBDECTDEVICE
devInfo" ausgeführt werden, um FBNAME als Reading zu speichern.
FBAHAHTTP
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FBAHAHTTP
Dieses Modul wird verwendet, um AVM FRITZ!DECT Geräte via FHEM zu
steuern, siehe auch das FBAHA oder FBAHAHTTP Modul für die Anbindung an das FRITZ!Box.
Define
define <name> FBDECT [<FBAHAname>:]<id> props
Beispiel:
define lampe FBDECT 16 switch,powerMeter
Achtung:FBDECT Einträge werden normalerweise per
autocreate angelegt. Falls sie die zugeordnete
FBAHA oder FBAHAHTTP Instanz umbenennen, dann muss die FBDECT Definition
manuell angepasst werden.
Set
on/off
Gerät einschalten bzw. ausschalten.
desired-temp <value>
Gewünschte Temperatur beim Comet DECT setzen (nur mit FBAHAHTTP als
IODev).
Das FB_CALLLIST Modul erstellt eine Anrufliste für eine konfigurierte FB_CALLMONITOR Definition.
Es speichert alle Anrufe und zeigt sie in einer historischen Tabelle an.
Es wird eine bereits konfigurierte FB_CALLMONITOR Definition benötigt, von der FB_CALLLIST die Events entsprechend verarbeiten kann.
Abhängig von der Konfiguration der Attribute wird der Status als Icon oder als Textzeichen ausgegeben.
Um die Icons korrekt anzeigen zu können, muss das openautomation Icon-Set in der entsprechenden FHEMWEB-Instanz konfiguriert sein (siehe dazu FHEMWEB Attribut iconPath).
Die Icons haben verschiedene Farben:
blau - Eingehender Anruf (aktiv oder beendet)
grün - Ausgehender Anruf (aktiv oder beendet))
rot - Verpasster Anruf (eingehend)
Falls keine Icons verwendet werden sollen (siehe Attribut show-icons), wird der Status wie folgt angezeigt:
<= ((o))
- Ausgehender Anruf (klingelt)
=> ((o))
- Eingehender Anruf (klingelt)
<= [=]
- Ausgehender Anruf (laufendes Gespräch)
=> [=]
- Eingehender Anruf (laufendes Gespräch)
<= X
- Ausgehender, erfolgloser Anruf (Gegenseite nicht abgenommen)
Sofern aktiviert, werden Anrufe, welche durch einen internen Anrufbeantworter beantwortet werden, als "verpasster Anruf" gewertet. Diese Funktionalität ist nur relevant, wenn list-type auf "missed-call" gesetzt ist.
Mögliche Werte: 0 => deaktiviert, 1 => aktiviert (Anrufbeantworter gilt als "verpasster Anruf").
Standardwert ist 0 (deaktiviert)
Sofern aktiviert, werden für alle sichtbaren Anrufe in der Liste entsprechende Readings und Events erzeugt.
Es wird empfohlen das Attribut event-on-change-reading auf den Wert .* zu stellen um die hohe Anzahl an Events in bestimmten Fällen zu minimieren.
Mögliche Werte: 0 => keine Readings erstellen, 1 => Readings und Events werden erzeugt.
Standardwert ist 0 (keine Readings erstellen)
Optionales Attribut zur Deaktivierung der Anrufliste. Sofern aktiviert, werden keine Anruf-Events mehr verarbeitet und die Liste nicht weiter aktualisiert. Je nach gesetztem Wert verhält sich FB_CALLLIST unterschiedlich.
Mögliche Werte:
0 => Anrufliste ist aktiv, verarbeitet Events und aktualisiert die Darstellung kontinuierlich.
1 => Events werden NICHT verarbeitet. Die Darstellung wird NICHT aktualisiert (bleibt wie sie ist).
2 => Events werden NICHT verarbeitet. Die Darstellung zeigt nur "disabled" an (keine Einträge mehr).
3 => Events werden NICHT verarbeitet. Die Liste wird NICHT mehr angezeigt.
Optionales Attribut zur Deaktivierung der Anrufliste innerhalb von bestimmten Zeitintervallen.
Das Argument ist eine Leerzeichen-getrennte Liste von Minuszeichen-getrennten HH:MM Paaren (Stunde : Minute).
Falls die aktuelle Uhrzeit zwischen diese Werte fällt, dann wird die Ausführung, wie bei disable gleich 1, ausgesetzt.
Statt HH:MM kann man auch HH oder HH:MM:SS angeben.
Um einen Intervall um Mitternacht zu spezifizieren, muss man zwei einzelne Intervalle angeben, z.Bsp.:
Sofern gesetzt, werden Events weiterhin verarbeitet, selbst wenn FB_CALLLIST deaktiviert ist (siehe disabled und disabledForIntervals).
Sobald FB_CALLLIST wieder aktiviert wurde, stehen sämtliche Anrufe, während FB_CALLLIST deaktiviert war, zur Verfügung.
Mögliche Werte: 0 => keine Eventverabeitung wenn FB_CALLLIST deaktiviert ist, 1 => Events werden trotz deaktiviert FB_CALLLIST intern weiterhin verarbeitet.
Standardwert ist 0 (keine Eventverabeitung wenn deaktiviert)
Optionales Attribut um beendete Anrufe nach einem angegeben Zeitfenster automatisch aus der Anrufliste zu löschen.
Sobald ein beendetes Gespräch älter ist als das angegebene Zeitfenster, wird es automatisch aus der Liste entfernt.
Ein Zeitfenster kann wie folgt angegeben werden:
als Minuten: 1 minute oder 30 minutes
als Stunden: 1 hour oder 12 hours
als Tage: 1 day oder 5 days
als Monate: 1 month oder 6 months (ein Monat entspricht hierbei 30 Tagen month is here equal to 30 days)
als Jahr: 1 year oder 2 years (ein Jahr entspricht hierbei 365 Tagen)
WICHTIG: Es wird hierbei der Endezeitpunkt eines Gesprächs betrachtet, nicht der Beginn des Gesprächs.
Wenn keine Einheit angegeben ist, wird die angegebene Zahl als Sekunden interpretiert. Es können auch Fliesskommazahlen mit einem Punkt als Kommastelle angegeben werden (z.B. 0.5 day).
Der Wert 0 bedeutet, das keine Gespräche nach einem gewissen Zeitfenster gelöscht werden.
Standardwert ist 0 (keine Gespräche werden nach einem Zeitfenster gelöscht)
Definiert eine eigene Zuordnung der externen Anschlussbezeichnung (Reading: external_connection) zu eigenen Bezeichnungen. Die Zuordnung erfolgt über eine Hash-Struktur.
Das entsprechende Icon wird an Stelle des Original-Icons bzw. Text verwendet. Sofern SVG-basierte Icons verwendet werden, kann man die Farbe optional definieren durch das Anfügen via @ mit Name oder einem HTML Farbcode.
Mögliche Werte und ihre Standard-Icons sind:
incoming.ring => phone_ring@blue
outgoing.ring => phone_ring@green
incoming.connected => phone_ring_in@blue
outgoing.connected => phone_ring_in@green
incoming.missed => phone_missed_in@red
outgoing.missed => phone_missed_out@green
incoming.done => phone_call_end_in@blue
outgoing.done => phone_call_end_out@green
incoming.tam => phone_answering@blue
Standardwert ist nicht gesetzt (Keine Zuordnung, es werden die Standard-Icons verwendet, sofern Icons akitivert sind)
Dieses Attribut ermöglicht das Filtern der angezeigten Anrufe auf bestimmte interne Rufnummern sowie das Zuordnen von Namen zu den internen Rufnummern.
Es ist möglich eine kommaseparierte Liste an internen Rufnummern anzugeben oder eine Hash-Tabelle in der man den internen Rufnummern eine eigene Bezeichnung zuweist.
Wichtig: Je nach Telefonanbieter kann der Wert die Ortsvorwahl enthalten. Die Rufnummer muss genauso angegeben werden, wie sie ohne eine Zuordnung in der Anrufliste auftaucht.
Wenn dieses Attribut gesetzt ist, werden nur die eingestellten Rufnummern in der Liste angezeigt.
Standardwert ist nicht gesetzt (alle internen Rufnummern werden angezeigt)
Gibt an ob der neueste Anruf in der ersten Zeile (aufsteigend => descending) oder in der letzten Zeile (absteigend => ascending) in der Liste angezeigt werden soll. Dementsprechend rollt die Liste dann nach oben oder unten durch.
Standardwert ist "descending" (absteigend, neuester Anruf in der ersten Zeile)
Sofern aktiviert, wird die Überschriftenzeile ausserhalb der Liste inkl. Link auf die Detail-Seite der aktuellen Definition ausgeblendet.
Mögliche Werte: 0 => Überschriftenzeile wird angezeigt , 1 => Überschriftenzeile wird ausgeblendet
Standardwert ist 1 (Überschriftenzeile wird angezeigt)
Kann gesetzt werden, um ein FHEM-Befehl oder Perl-Code (in geschweiften Klammern: { ... } ) auszuführen, wenn man auf eine Rufnummer in der Anrufliste klickt.
Der Platzhalter $NUMBER wird dabei mit der entsprechenden Rufnummer der jeweiligen Zeile ersetzt.
Damit kann man beispielsweise einen Rückruf starten.
e.g.:
Im Normalfall wird der Status eines jeden Anrufs mit einem Icon angezeigt. Dazu muss das openautomation Icon-Set im iconpath-Attribut der entsprechenden FHEMWEB Instanz konfiguriert sein. Sollte man keine Icons wünschen, so kann man diese hiermit abschalten. Der Status wird dann mittels Textzeichen dargestellt.
Mögliche Werte: 0 => keine Icons , 1 => benutze Icons
Standardwert ist 1 (benutze Icons)
Definiert einen Formatierungs-String welcher benutzt wird um die Zeitangaben in der Anrufliste nach eigenen Wünschen anzupassen. Es stehen hier eine ganze Reihe an Platzhaltern zur Verfügung um die einzelnen Elemente einer Datums-/Zeitangabe einzeln zu setzen. Die möglichen Werte sind alle Standard POSIX strftime() Platzhalter. Gängige Platzhalter sind:
%a - Der abgekürzte Wochentagname
%b - Der abgekürzte Monatsname
%S - Die Sekunden als Dezimalzahl
%M - Die Minuten als Dezimalzahl
%H - Die Stunden als Dezimalzahl
%d - Der Tag im Monat als Dezimalzahl
%m - Der Monat als Dezimalzahl
%Y - Das Jahr als Dezimalzahl (4-stellig).
Es gibt hierfür noch weitere Platzhalter. Weitere Informationen dazu findet man in der Manpage von strftime() oder der Dokumentation des entsprechenden Perl Interpreters.
Standardwert ist "%a, %d %b %Y %H:%M:%S" (entspricht "So, 07 Jun 2015 12:50:09")
Definiert die Sprache in der die Anrufliste angezeigt werden soll (Tabellenkopf, Datum). Die entsprechende Sprache muss auch im Betriebssystem installiert und unterstützt werden.
Mögliche Werte: en => Englisch , de => Deutsch
Standardwert ist en (Englisch)
Legt fest, welche Spalten in welcher Reihenfolge (von links nach rechts) in der Anrufliste angezeigt werden sollen.
Es müssen nicht alle verfügbaren Spalten angezeigt werden.
Es kann auch eine Auswahl von einzelnen Spalten angezeigt werden.
Die möglichen Werte repräsentieren die jeweilige Spalte.
Der Wert "row" steht für die Zeilennummer innerhalb der Liste.
Mögliche Werte: Eine Kombination der folgenden Werte in der gewünschten Reihenfolge: row,state,timestamp,name,number,internal,external,connection,duration
Standardwert ist "row,state,timestamp,name,number,internal,external,connection,duration" (Anzeige aller Spalten)
Generierte Events:
Dieses Modul generiert Readings/Events sofern das Attribut create-readings aktiviert ist. Die Anzahl, sowie der Name der Readings ist von den gewählten Spalten (Attribut: visible-columns), sowie der Anzahl der anzuzeigenden Anrufe abhängig (Attribut: number-of-calls).
Einfach die entsprechende Kurzwahl auf irgend einem Telefon eingeben, welches an die Fritz!Box angeschlossen ist.
Nach ca. 3 Sekunden kann man einfach wieder auflegen. Nun ist der Callmonitor aktiviert.
Sobald der Callmonitor auf der Fritz!Box aktiviert wurde erzeugt das Modul entsprechende Events (s.u.) für alle externen Anrufe. Interne Anrufe werden nicht durch den Callmonitor erfasst.
Dieses Modul funktioniert mit allen Fritz!Box Modellen, welche Telefonie unterstützen (Namenszusatz: Fon).
Definition
define <name> FB_CALLMONITOR <IP-Addresse>[:Port]
Port 1012 ist der Standardport und muss daher nicht explizit angegeben werden.
Set-Kommandos
reopen - schliesst die Verbindung zur FritzBox und öffnet sie erneut
rereadCache - Liest den Cache aus der Datei neu ein (sofern konfiguriert, siehe dazu Attribut reverse-search-cache-file)
rereadPhonebook - Liest das Telefonbuch der FritzBox neu ein (per Datei, Telnet oder direkt lokal)
rereadTextfile - Liest die nutzereigene Textdatei neu ein (sofern konfiguriert, siehe dazu Attribut reverse-search-text-file)
password - speichert das FritzBox Passwort, welches für das Einlesen aller Telefonbücher direkt von der FritzBox benötigt wird. Dieses Kommando ist nur verfügbar, wenn ein Passwort benötigt wird um das Telefonbuch via Netzwerk einzulesen, siehe dazu Attribut fritzbox-remote-phonebook.
Get-Kommandos
search <Rufnummer> - gibt den Namen der Telefonnummer zurück (aus Cache, Telefonbuch oder Rückwärtssuche)
showPhonebookIds - gibt eine Liste aller verfügbaren Telefonbücher auf der FritzBox zurück (nicht verfügbar wenn das Telefonbuch via Telnet-Verbindung eingelesen wird)
showPhonebookEntries [Phonebook-ID] - gibt eine Liste aller bekannten Telefonbucheinträge, oder nur eines bestimmten Telefonbuchs, zurück (nur verfügbar, wenn eine Rückwärtssuche via Telefonbuch aktiviert ist)
showCacheEntries - gibt eine Liste aller bekannten Cacheeinträge zurück (nur verfügbar, wenn die Cache-Funktionalität der Rückwärtssuche aktiviert ist))
showTextEntries - gibt eine Liste aller Einträge aus der nutzereigenen Textdatei zurück (nur verfügbar, wenn eine Textdatei als Attribut definiert ist))
Optionales Attribut zur Deaktivierung des Callmonitors innerhalb von bestimmten Zeitintervallen.
Das Argument ist eine Leerzeichen-getrennte Liste von Minuszeichen-getrennten HH:MM Pärchen (Stunde : Minute).
Falls die aktuelle Uhrzeit zwischen diese Werte fällt, dann wird die Verarbeitung, wie bei disable, ausgesetzt.
Statt HH:MM kann man auch HH oder HH:MM:SS angeben.
Um einen Intervall um Mitternacht zu spezifizieren, muss man zwei einzelne Intervalle angeben, z.Bsp.:
Sofern aktiviert, werden Anrufe, welche durch einen internen Anrufbeantworter beantwortet werden, als "unbeantworteter Anruf" gewertet (siehe Reading "missed_call" unter Generated Events).
Mögliche Werte: 0 => deaktiviert, 1 => aktiviert (Anrufbeantworter gilt als "unbeantworteter Anruf").
Standardwert ist 0 (deaktiviert)
Aktiviert die Rückwärtssuche der externen Rufnummer (bei eingehenden/ausgehenden Anrufen).
Dieses Attribut enthält eine komma-separierte Liste mit allen Anbietern die für eine Rückwärtssuche benutzt werden sollen.
Die Rückwärtssuche prüft in der gegebenen Reihenfolge (von links nach rechts) ob der entsprechende Anbieter (Telefonbuch, Textdatei oder Internetanbieter) die Rufnummer auflösen können.
Das erste Resultat was dabei gefunden wird, wird als Ergebnis für die Rückwärtssuche verwendet.
Es ist möglich einen bestimmten Suchanbieter zu verwenden, welcher für die Rückwärtssuche verwendet werden soll.
Der Anbieter "textfile" verwendet die nutzereigene Textdatei, sofern definiert (siehe Attribut reverse-search-text-file).
Der Anbieter "phonebook" verwendet das Telefonbuch der FritzBox (siehe Attribut reverse-search-phonebook-file oder fritzbox-remote-phonebook).
Standardmäßig ist diese Funktion deaktiviert (nicht gesetzt)
Wenn dieses Attribut gesetzt ist, werden alle Ergebisse von Internetanbietern in einem modul-internen Cache gespeichert
und alle existierenden Ergebnisse aus dem Cache genutzt anstatt eine erneute Anfrage bei einem Internet-Anbieter durchzuführen.
Der Cache ist immer an die Internetanbieter gekoppelt und speichert nur Ergebnisse von Internetanbietern.
Da der Cache nur im Arbeitsspeicher existiert, ist er nicht persistent und geht beim stoppen von FHEM verloren.
Mit diesem Parameter werden alle Cache-Ergebnisse in eine Textdatei geschrieben (z.B. /usr/share/fhem/telefonbuch.txt)
und beim nächsten Start von FHEM wieder in den Cache geladen und genutzt.
Lädt eine nutzereigene Textdatei welche eine eigene Namenszuordnungen für Rufnummern enthält. Diese Datei enthält zeilenweise komma-separierte Werte nach folgendem Schema:
Mit diesem Attribut kann man optional den Pfad zu einer Datei angeben, welche ein Telefonbuch im FritzBox-Format (XML-Struktur) enthält.
Dadurch ist es möglich ein FritzBox-Telefonbuch zu verwenden, ohne das FHEM auf einer FritzBox laufen muss.
Sofern FHEM auf einer FritzBox läuft (und nichts abweichendes angegeben wurde), wird das interne File /var/flash/phonebook verwendet. Alternativ kann man das Telefonbuch in der FritzBox-Weboberfläche exportieren und dieses verwenden
Standardwert ist /var/flash/phonebook (entspricht dem Pfad auf einer FritzBox)
Wenn dieses Attribut aktiviert ist, wird die führende Null aus der externen Rufnummer (bei eingehenden & abgehenden Anrufen) entfernt. Dies ist z.B. notwendig bei Telefonanlagen.
Wenn dieses Attribut aktiviert ist, wird für jedes Gespräch eine eineindeutige Identifizierungsnummer verwendet. Dadurch lassen sich auch bereits beendete Gespräche voneinander unterscheiden. Dies ist z.B. notwendig bei der Verarbeitung der Events durch eine Datenbank.
Die Landesvorwahl wird benötigt um Telefonbucheinträge mit lokaler Landesvorwahl als Inlands-Rufnummern, als auch um Call-By-Call-Vorwahlen richtig zu erkennen (z.B. 0049 für Deutschland, 0043 für Österreich oder 001 für USA).
Wenn dieses Attribut aktiviert ist, werden eingehende Anrufe gegen die konfigurierten Rufsperren-Regeln aus der FritzBox geprüft. Wenn ein Anruf auf eine dieser Regeln passt, wird der Anruf ignoriert und es werden keinerlei Readings/Events für diesen Anruf generiert. Dies funktioniert nur, wenn man das Telefonbuch aus der FritzBox via TR-064 einliest (siehe Attribute fritzbox-remote-phonebook und fritzbox-remote-phonebook-via).
Wenn dieses Attribut aktiviert ist, wird das FritzBox Telefonbuch direkt von der FritzBox gelesen. Dazu ist das FritzBox Passwort und je nach FritzBox Konfiguration auch ein Username notwendig, der in den entsprechenden Attributen konfiguriert sein muss.
Setzt die Methode mit der das Telefonbuch von der FritzBox abgefragt werden soll. Bei der Methode "web", werden alle verfügbaren Telefonbücher (lokales sowie alle konfigurierten Online-Telefonbücher) über die Web-Oberfläche eingelesen. Bei der Methode "telnet" wird eine Telnet-Verbindung zur FritzBox aufgebaut um das lokale Telefonbuch abzufragen (keine Online-Telefonbücher). Dazu muss die Telnet-Funktion aktiviert sein (Telefon Kurzwahl: #96*7*). Bei der Methode "tr064" werden alle verfügbaren Telefonbücher über die TR-064 SOAP Schnittstelle ausgelesen.
Mögliche Werte: tr064,web,telnet
Standardwert ist "tr064" (Abfrage aller verfügbaren Telefonbücher über die TR-064-Schnittstelle)
Eine komma-separierte Liste von Telefonbuch-ID's oder Namen welche beim einlesen übersprungen werden sollen. Dieses Attribut greift nur beim einlesen der Telefonbücher via "web"- oder "tr064"-Methode (siehe Attribut fritzbox-remote-phonebook-via). Eine Liste aller möglichen Werte kann über das Get-KommandoshowPhonebookIds angezeigt werden.
Standardmäßig ist diese Funktion deaktiviert (alle Telefonbücher werden eingelesen)
Der Username, sofern das Telefonbuch direkt von der FritzBox via Netzwerk geladen werden soll (siehe Attribut: fritzbox-remote-phonebook). Dieses Attribut ist nur notwendig, wenn verschiedene Benutzernamen auf der FritzBox konfiguriert sind.
Der private API-Key von tel.search.ch um eine Rückwärtssuche via search.ch durchzuführen (siehe Attribut reverse-search). Ohne einen solchen API-Key ist eine Rückwärtssuche via search.ch nicht möglich
Wenn dieses Attribut gesetzt ist, wird ein zyklisches Keep-Alive im konfigurierten Zeitabstand an die FritzBox gesendet um die Verbindung aktiv zu halten. Dadurch bleibt die Verbindung bestehen, insbesondere wenn die verbundene FritzBox sich hinter einem weiteren NAT-Router befindet (z.B. einer weiteren FritzBox). Dadurch wird die Verbindung in so einem Fall nicht fälschlicherweise als "tot" erkannt und geblockt.
Mögliche Werte: none,5m,10m,15m,30m,1h
Standardwert ist "none" (es werden keine Keep-Alives gesendet)
Generierte Events:
event (call|ring|connect|disconnect) - Welches Event wurde genau ausgelöst. ("call" => ausgehender Rufversuch, "ring" => eingehender Rufversuch, "connect" => Gespräch ist zustande gekommen, "disconnect" => es wurde aufgelegt)
direction (incoming|outgoing) - Die Anruf-Richtung ("incoming" => eingehender Anruf, "outgoing" => ausgehender Anruf)
external_number - Die Rufnummer des Gegenübers, welcher anruft (event: ring) oder angerufen wird (event: call)
external_name - Das Ergebniss der Rückwärtssuche (sofern aktiviert). Im Fehlerfall kann diese Reading auch den Inhalt "unknown" (keinen Eintrag gefunden) enthalten. Im Falle einer Zeitüberschreitung bei der Rückwärtssuche und aktiviertem Caching, wird die Rufnummer beim nächsten Mal erneut gesucht.
internal_number - Die interne Rufnummer (Festnetz, VoIP-Nummer, ...) auf welcher man angerufen wird (event: ring) oder die man gerade nutzt um jemanden anzurufen (event: call)
internal_connection - Der interne Anschluss an der Fritz!Box welcher genutzt wird um das Gespräch durchzuführen (FON1, FON2, ISDN, DECT, ...)
external_connection - Der externe Anschluss welcher genutzt wird um das Gespräch durchzuführen ("POTS" => analoges Festnetz, "SIPx" => VoIP Nummer, "ISDN", "GSM" => Mobilfunk via GSM/UMTS-Stick)
call_duration - Die Gesprächsdauer in Sekunden. Dieser Wert wird nur bei einem disconnect-Event erzeugt. Ist der Wert 0, so wurde das Gespräch von niemandem angenommen.
call_id - Die Identifizierungsnummer eines einzelnen Gesprächs. Dient der Zuordnung bei zwei oder mehr parallelen Gesprächen, damit alle Events eindeutig einem Gespräch zugeordnet werden können
missed_call - Dieses Event wird nur generiert, wenn ein eingehender Anruf nicht beantwortet wird. Sofern der Name dazu bekannt ist, wird dieser ebenfalls mit angezeigt.
Zum remote (entfernten) FHEM auf Rechner <host> verbinden.
<portnr> ist der telnetPort des remote FHEM, Standardport ist 7072.
Der Zusatz :SSL wird benötigt, wenn das remote FHEM
SSL-Verschlüsselung voraussetzt. Auch auf dem lokalen Host muss dann
das Perl-Modul IO::Socket::SSL installiert sein.
Achtung:
Wenn das remote FHEM auf einem eigenen Host läuft, muss
"telnetPort" des remote FHEM mit der global Option definiert sein.
ab FHEM Version 5.9 wird in der ausgelieferten Initialversion der fhem.cfg
keine telnet Instanz vorkonfiguriert, man muss sie z.Bsp.
folgendermaßen definieren:
define telnetPort telnet 7072 global
Der nächste Parameter spezifiziert den Verbindungs-Typ:
LOG
Bei Verwendung dieses Verbindungstyps werden alle Ereignisse (Events) der
remote FHEM-Installation empfangen. Die Ereignisse sehen aus wie die, die
nach inform on Befehl erzeugt werden. Sie können
wie lokale Ereignisse durch FileLog oder notify genutzt werden und mit einem regulären
Ausdruck gefiltert werden. Die Syntax dafür ist unter der
notify-Definition beschrieben.
Einschränkungen: die Geräte der remote Installation werden nicht
lokal angelegt und können weder mit list angezeigt noch lokal
angesprochen werden. Auf beiden FHEM-Installationen können
Geräte gleichen Namens angelegt werden, aber wenn beide dasselbe
Ereignis empfangen (z.B. wenn an beiden Installationen CULs angeschlossen
sind), werden alle FileLogs und notifys doppelt ausgelöst.
Falls man lokal Geräte mit dem gleichen Namen (z.Bsp. als dummy)
angelegt hat, dann werden die Readings von dem lokalen Gerät
aktualisiert.
RAW
Bei diesem Verbindungstyp werden unaufbereitete Ereignisse (raw messages)
des remote FHEM-Geräts devicename genau so empfangen, als
wäre das Gerät lokal verbunden.
Einschränkungen: nur Geräte, welche die "Dispatch-Funktion"
unterstützen (CUL, FHZ, CM11, SISPM, RFXCOM, TCM, TRX, TUL) erzeugen
raw messages, und für jedes entfernte Gerät muss ein eigenes
FHEM2FHEM Objekt erzeugt werden. devicename muss mit demselben Namen und Typ wie das Remote Devive
angelegt sein, aber als Dummy, d.h. als device-node "none".
Zusätzlich müssen alle notwendigen Attribute lokal gesetzt sein
(z.B. rfmode, wenn die remote CUL im HomeMatic-Modus
läuft). Die Verwendung bereits bestehender lokaler Geräte ist zu
vermeiden, weil sonst die Duplikatsfilterung nicht richtig funktioniert
(siehe dupTimeout).
Der letzte Parameter enthält das Passwort des Remote-Servers, wenn dort
eines aktiviert ist portpassword.
Beispiele:
define ds1 FHEM2FHEM 192.168.178.22:7072 LOG:.*
define RpiCUL CUL none 0000 define ds2 FHEM2FHEM 192.168.178.22:7072 RAW:RpiCUL und auf dem RPi (192.168.178.22): rename CUL_0 RpiCUL
eventOnly
falls gesetzt, werden nur die Events generiert, und es wird kein
Reading aktualisiert. Ist nur im LOG-Mode aktiv.
addStateEvent
falls gesetzt, werden state Events als solche uebertragen. Zu beachten:
das Attribut ist nur für LOG-Mode relevant, beim Setzen wird eine
zusätzliche reopened Logzeile generiert, und die andere Seite muss
aktuell sein.
excludeEvents <regexp>
die auf das <regexp> zutreffende Events werden nicht
bereitgestellt.
FHEMWEB ist das default WEB-Frontend, es implementiert auch einen einfachen
Webserver (optional mit Basic-Auth und HTTPS).
Define
define <name> FHEMWEB <tcp-portnr> [global|IP]
Aktiviert das Webfrontend auf dem Port <tcp-portnr>. Mit dem
Parameter global werden Anfragen von allen Netzwerkschnittstellen
akzeptiert (nicht nur vom localhost / 127.0.0.1). Falls IP angegeben wurde,
dann werden nur Anfragen an diese IP Adresse akzeptiert.
Informationen für den Betrieb mit IPv6 finden Sie hier.
Set
rereadicons
Damit wird die Liste der Icons neu eingelesen, für den Fall, dass
Sie Icons löschen oder hinzufügen.
clearSvgCache
Im Verzeichnis www/SVGcache werden SVG Daten zwischengespeichert, wenn
das Attribut SVGcache gesetzt ist. Mit diesem Befehl leeren Sie diesen
Zwischenspeicher.
Get
icon <logical icon>
Liefert den absoluten Pfad des (logischen) Icons zurück. Beispiel:
get myFHEMWEB icon FS20.on
/data/Homeautomation/fhem/FHEM/FS20.on.png
pathlist
Zeigt diejenigen Verzeichnisse an, in welchen die verschiedenen Dateien
für FHEMWEB liegen.
Attribute
addHtmlTitle
Falls der Wert 0 ist, wird bei den set/get/attr Parametern in der
DetailAnsicht der Geräte kein title Attribut gesetzt. Das is bei
manchen Screenreadern erforderlich. Die Voreinstellung ist 1.
alias_<RoomName>
Falls man das Attribut alias_<RoomName> definiert, und dieses
Attribut für ein Gerät setzt, dann wird dieser Wert bei
Anzeige von <RoomName> verwendet.
Achtung: man kann im userattr auch alias_.* verwenden um alle
möglichen Räume abzudecken, in diesem Fall wird aber die
Attributauswahl in der Detailansicht für alias_.* nicht
funktionieren.
allowedCommands, basicAuth, basicAuthMsg
Diese Attribute müssen ab sofort bei dem passenden allowed Gerät angelegt werden, und sind
für eine FHEMWEB Instanz unerwünscht.
allowedHttpMethods
FHEMWEB implementiert die HTTP Methoden GET, POST und OPTIONS. Manche
externe Geräte benötigen HEAD, das ist aber in FHEMWEB nicht
korrekt implementiert, da FHEMWEB immer ein body zurückliefert, was
laut Spec falsch ist. Da ein body in manchen Fällen kein Problem
ist, kann man HEAD durch setzen dieses Attributes auf GET|POST|HEAD
aktivieren, die Voreinstellung ist GET|POST. OPTIONS ist immer
aktiviert.
closeConn
Falls gesetzt, wird pro TCP Verbindung nur ein HTTP Request
durchgeführt. Für iOS9 WebApp startups scheint es zu helfen.
cmdIcon
Leerzeichen getrennte Auflistung von cmd:iconName Paaren.
Falls gesetzt, wird das webCmd text durch den icon gesetzt.
Am einfachsten setzt man cmdIcon indem man "Extend devStateIcon" im
Detail-Ansicht verwendet, und den Wert nach cmdIcon kopiert.
Beispiel:
column
Damit werden mehrere Spalten für einen Raum angezeigt, indem
sie verschiedene Gruppen Spalten zuordnen. Beispiel:
attr WEB column LivingRoom:FS20,notify|FHZ,notify DiningRoom:FS20|FHZ
In diesem Beispiel werden im Raum LivingRoom die FS20 sowie die notify
Gruppe in der ersten Spalte, die FHZ und das notify in der zweiten
Spalte angezeigt.
Anmerkungen: einige Elemente, wie SVG Plots und readingsGroup
können nur dann Teil einer Spalte sein wenn sie in group stehen. Dieses Attribut kann man zum sortieren
der Gruppen auch dann verwenden, wenn man nur eine Spalte hat.
Leerzeichen im Raum- und Gruppennamen sind für dieses Attribut als
%20 zu schreiben. Raum- und Gruppenspezifikation ist jeweils ein
%regulärer Ausdruck.
confirmDelete
Löschaktionen weden mit einem Dialog bestätigt.
Falls dieses Attribut auf 0 gesetzt ist, entfällt das.
confirmJSError
JavaScript Fehler werden per Voreinstellung in einem Dialog gemeldet.
Durch setzen dieses Attributes auf 0 werden solche Fehler nicht
gemeldet.
CORS
Wenn auf 1 gestellt, wird FHEMWEB einen "Cross origin resource sharing"
Header bereitstellen, näheres siehe Wikipedia.
csrfToken
Falls gesetzt, wird der Wert des Attributes als fwcsrf Parameter bei
jedem über FHEMWEB abgesetzten Kommando verlangt, es dient zum
Schutz von Cross Site Resource Forgery Angriffen.
Falls der Wert random ist, dann wird ein Zufallswert beim jeden FHEMWEB
Start neu generiert, falls er none ist, dann wird kein Parameter
verlangt. Default ist random für featurelevel 5.8 und
größer, und none für featurelevel kleiner 5.8
csrfTokenHTTPHeader
Falls gesetzt (Voreinstellung), FHEMWEB sendet im HTTP Header den
csrfToken als X-FHEM-csrfToken, das wird von manchen FHEM-Clients
benutzt. Mit 0 kann man das abstellen, um Sites wie shodan.io die
Erkennung von FHEM zu erschweren.
CssFiles
Leerzeichen getrennte Liste von .css Dateien, die geladen werden.
Die Dateinamen sind relativ zum www Verzeichnis anzugeben. Beispiel:
attr WEB CssFiles pgm2/mystyle.css
Css
CSS, was nach dem CssFiles Abschnitt im Header eingefuegt wird.
defaultRoom
Zeigt den angegebenen Raum an falls kein Raum explizit ausgewählt
wurde. Achtung: falls gesetzt, wird motd nicht mehr angezeigt.
Beispiel:
attr WEB defaultRoom Zentrale
devStateIcon
Erste Variante:
Leerzeichen getrennte Auflistung von regexp:icon-name:cmd
Dreierpärchen, icon-name und cmd dürfen leer sein.
Wenn der Zustand des Gerätes mit der regexp übereinstimmt,
wird als icon-name das entsprechende Status Icon angezeigt, und (falls
definiert), löst ein Klick auf das Icon das entsprechende cmd aus.
Wenn fhem icon-name nicht finden kann, wird der Status als Text
angezeigt.
Beispiel:
Falls cmd noFhemwebLink ist, dann wird kein HTML-Link generiert, d.h.
es passiert nichts, wenn man auf das Icon/Text klickt.
Zweite Variante:
Perl regexp eingeschlossen in {}. Wenn der Code undef
zurückliefert, wird das Standard Icon verwendet; wird ein String
in <> zurück geliefert, wird dieser als HTML String interpretiert.
Andernfalls wird der String als devStateIcon gemäß der
ersten Variante interpretiert, siehe oben. Beispiel:
{'<div style="width:32px;height:32px;background-color:green"></div>'}
devStateStyle
Für ein best. Gerät einen best. HTML-Style benutzen.
Beispiel:
deviceOverview
Gibt an ob die Darstellung aus der Raum-Ansicht (Zeile mit
Gerüteicon, Stateicon und webCmds/cmdIcons) auch in der
Detail-Ansicht angezeigt werden soll. Kann auf always, onClick,
iconOnly oder never gesetzt werden. Der Default ist always.
editConfig
Falls dieses FHEMWEB Attribut (auf 1) gesetzt ist, dann kann man die
FHEM Konfigurationsdatei in dem "Edit files" Abschnitt bearbeiten. Beim
Speichern dieser Datei wird automatisch rereadcfg ausgefuehrt, was
diverse Nebeneffekte hat.
editFileList
Definiert die Liste der angezeigten Dateien in der "Edit Files"
Abschnitt. Es ist eine Newline getrennte Liste von Tripeln bestehend
aus Titel, Verzeichnis für die Suche als perl Ausdruck(!), und
Regexp. Die Voreinstellung ist:
Own modules and helper files:$MW_dir:^(.*sh|[0-9][0-9].*Util.*pm|.*cfg|.*holiday|myUtilsTemplate.pm|.*layout)$
Gplot files:$FW_gplotdir:^.*gplot$
Styles:$FW_cssdir:^.*(css|svg)$
Achtung: die Verzeichnis Angabe ist nicht flexibel: alle
.js/.css/_defs.svg Dateien sind in www/pgm2 ($FW_cssdir), .gplot
Dateien in $FW_gplotdir (www/gplot), alles andere in $MW_dir (FHEM).
endPlotNow
Wenn Sie dieses FHEMWEB Attribut auf 1 setzen, werden Tages und
Stunden-Plots zur aktuellen Zeit beendet. (Ähnlich wie
endPlotToday, nur eben minütlich).
Ansonsten wird der gesamte Tag oder eine 6 Stunden Periode (0, 6, 12,
18 Stunde) gezeigt. Dieses Attribut wird nicht verwendet, wenn das SVG
Attribut startDate benutzt wird.
endPlotToday
Wird dieses FHEMWEB Attribut gesetzt, so enden Wochen- bzw. Monatsplots
am aktuellen Tag, sonst wird die aktuelle Woche/Monat angezeigt.
fwcompress
Aktiviert die HTML Datenkompression (Standard ist 1, also ja, 0 stellt
die Kompression aus).
hiddengroup
Wie hiddenroom (siehe unten), jedoch auf Gerätegruppen bezogen.
Beispiel: attr WEBtablet hiddengroup FileLog,dummy,at,notify
hiddengroupRegexp
Ein regulärer Ausdruck, um Gruppen zu verstecken.
hiddenroom
Eine Komma getrennte Liste, um Räume zu verstecken, d.h. nicht
anzuzeigen. Besondere Werte sind input, detail und save. In diesem
Fall werden diverse Eingabefelder ausgeblendent. Durch direktes Aufrufen
der URL sind diese Räume weiterhin erreichbar!
Ebenso können Einträge in den Logfile/Commandref/etc Block
versteckt werden.
hiddenroomRegexp
Ein regulärer Ausdruck, um Räume zu verstecken. Beispiel:
attr WEB hiddenroomRegexp .*config
Achtung: die besonderen Werte input, detail und save müssen mit
hiddenroom spezifiziert werden.
HTTPS
Ermöglicht HTTPS Verbindungen. Es werden die Perl Module
IO::Socket::SSL benötigt, installierbar mit cpan -i
IO::Socket::SSL oder apt-get install libio-socket-ssl-perl; (OSX und
die FritzBox-7390 haben dieses Modul schon installiert.)
Ein lokales Zertifikat muss im Verzeichis certs erzeugt werden.
Dieses Verzeichnis muss im modpath
angegeben werden, also auf der gleichen Ebene wie das FHEM Verzeichnis.
Beispiel:
icon
Damit definiert man ein Icon für die einzelnen Geräte in der
Raumübersicht. Es gibt einen passenden Link in der Detailansicht
um das zu vereinfachen. Um ein Bild für die Räume selbst zu
definieren muss ein Icon mit dem Namen ico<Raumname>.png im
iconPath existieren (oder man verwendet roomIcons, s.u.)
iconPath
Durch Doppelpunkt getrennte Aufzählung der Verzeichnisse, in
welchen nach Icons gesucht wird. Die Verzeichnisse müssen unter
fhem/www/images angelegt sein. Standardeinstellung ist:
$styleSheetPrefix:fhemSVG:openautomation:default
Setzen Sie den Wert auf fhemSVG:openautomation um nur SVG Bilder zu
benutzen.
JavaScripts
Leerzeichen getrennte Liste von JavaScript Dateien, die geladen werden.
Die Dateinamen sind relativ zum www Verzeichnis anzugeben. Für
jede Datei wird ein zusätzliches Attribut angelegt, damit der
Benutzer dem Skript Parameter weiterreichen kann. Bei diesem
Attributnamen werden Verzeichnisname und fhem_ Präfix entfernt
und Param als Suffix hinzugefügt. Beispiel:
attr WEB JavaScripts codemirror/fhem_codemirror.js
attr WEB codemirrorParam { "theme":"blackboard", "lineNumbers":true }
longpoll [0|1|websocket]
Falls gesetzt, FHEMWEB benachrichtigt den Browser, wenn
Gerätestatuus, Readings or Attribute sich ändern, ein
Neuladen der Seite ist nicht notwendig. Zum deaktivieren 0 verwenden.
Falls websocket spezifiziert ist, läuft die Benachrichtigung des
Browsers über dieses Verfahren sonst über HTTP longpoll.
Achtung: ältere Browser haben keine websocket Implementierung.
longpollSVG
Lädt SVG Instanzen erneut, falls ein Ereignis dessen Inhalt
ändert. Funktioniert nur, falls die dazugehörige Definition
der Quelle in der .gplot Datei folgenden Form hat: deviceName.Event
bzw. deviceName.*. Wenn man den Plot Editor
benutzt, ist das übrigens immer der Fall. Die SVG Datei wird bei
jedem auslösenden Event dieses Gerätes neu geladen.
Die Voreinstellung ist aus. Achtung: das plotEmbed Attribute muss
gesetzt sein.
mainInputLength
Länge des maininput Eingabefeldes (Anzahl der Buchstaben,
Ganzzahl).
menuEntries
Komma getrennte Liste; diese Links werden im linken Menü angezeigt.
Beispiel:
attr WEB menuEntries fhem.de,http://fhem.de,culfw.de,http://culfw.de
attr WEB menuEntries
AlarmOn,http://fhemhost:8083/fhem?cmd=set%20alarm%20on
nameDisplay
Das Argument ist Perl-Code, was für jedes Gerät in der
Raum-Übersicht ausgeführt wird, um den angezeigten Namen zu
berechnen. Dabei kann man die Variable $DEVICE für den aktuellen
Gerätenamen, und $ALIAS für den aktuellen alias bzw. Name,
falls alias nicht gesetzt ist, verwenden. Z.Bsp. für eine FHEMWEB
Instanz mit ungarischer Anzeige fügt man ein global userattr
alias_hu hinzu, und man setzt nameDisplay für diese FHEMWEB
Instanz auf dem Wert:
AttrVal($DEVICE, "alias_hu", $ALIAS)
nrAxis
(bei mehrfach-Y-Achsen im SVG-Plot) Die Darstellung der Y Achsen
benötigt Platz. Hierdurch geben Sie an wie viele Achsen Sie
links,rechts [useLeft,useRight] benötigen. Default ist 1,1 (also 1
Achse links, 1 Achse rechts).
ploteditor
Gibt an ob der Plot Editor in der SVG detail
ansicht angezeigt werden soll. Kann auf always, onClick oder never
gesetzt werden. Der Default ist always.
plotEmbed 0
Falls gesetzt (auf 1), dann werden SVG Grafiken mit <embed> Tags
gerendert, da auf älteren Browsern das die einzige
Möglichkeit war, SVG dastellen zu können. Falls 0 (die
Voreinstellung), dann werden die SVG Grafiken "in-place" gezeichnet.
plotfork
Falls gesetzt, dann werden bestimmte Berechnungen (z.Bsp. SVG und RSS)
auf nebenläufige Prozesse verteilt. Voreinstellung ist 0. Achtung:
nicht auf Systemen mit wenig Hauptspeicher verwenden.
plotmode
Spezifiziert, wie Plots erzeugt werden sollen:
SVG
Die Plots werden mit Hilfe des SVG Moduls als SVG
Grafik gerendert. Das ist die Standardeinstellung.
gnuplot-scroll
Die plots werden mit dem Programm gnuplot erstellt. Das output
terminal ist PNG. Der einfache Zugriff auf historische Daten
ist möglich (analog SVG).
gnuplot-scroll-svg
Wie gnuplot-scroll, aber als output terminal wird SVG angenommen.
plotsize
gibt die Standardbildgröße aller erzeugten Plots an als
Breite,Höhe an. Um einem individuellen Plot die Größe zu
ändern muss dieses Attribut bei der entsprechenden SVG Instanz
gesetzt werden. Default sind 800,160 für Desktop und 480,160
für Smallscreen
plotWeekStartDay
Starte das Plot in der Wochen-Ansicht mit diesem Tag.
0 ist Sonntag, 1 ist Montag, usw.
redirectCmds
Damit wird das URL Eingabefeld des Browser nach einem Befehl geleert.
Standard ist eingeschaltet (1), ausschalten kann man es durch
setzen des Attributs auf 0, z.Bsp. um den Syntax der Kommunikation mit
FHEMWEB zu untersuchen.
refresh
Damit erzeugen Sie auf den ausgegebenen Webseiten einen automatischen
Refresh, z.B. nach 5 Sekunden.
reverseLogs
Damit wird das Logfile umsortiert, die neuesten Einträge stehen
oben. Der Vorteil ist, dass man nicht runterscrollen muss um den
neuesten Eintrag zu sehen, der Nachteil dass FHEM damit deutlich mehr
Hauptspeicher benötigt, etwa 6 mal so viel, wie das Logfile auf
dem Datenträger groß ist. Das kann auf Systemen mit wenig
Speicher (FRITZ!Box) zum Terminieren des FHEM Prozesses durch das
Betriebssystem führen.
roomIcons
Leerzeichen getrennte Liste von room:icon Zuordnungen
Der erste Teil wird als regexp interpretiert, daher muss ein
Leerzeichen als Punkt geschrieben werden. Beispiel:
attr WEB roomIcons Anlagen.EDV:icoEverything
sortby
Der Wert dieses Attributs wird zum sortieren von Geräten in
Räumen verwendet, sonst wäre es der Alias oder, wenn keiner
da ist, der Gerätename selbst. Falls der Wert des sortby
Attributes in {} eingeschlossen ist, dann wird er als ein perl Ausdruck
evaluiert. $NAME wird auf dem Gerätenamen gesetzt.
showUsedFiles
Zeige nur die verwendeten Dateien in der "Edit files" Abschnitt.
Achtung: aktuell ist das nur für den "Gplot files" Abschnitt
implementiert.
sortRooms
Durch Leerzeichen getrennte Liste von Räumen, um deren Reihenfolge
zu definieren.
Da die Räume in diesem Attribut als Regexp interpretiert werden,
sind Leerzeichen im Raumnamen als Punkt (.) zu hinterlegen.
Beispiel:
attr WEB sortRooms DG OG EG Keller
smallscreenCommands
Falls auf 1 gesetzt werden Kommandos, Slider und Dropdown Menüs im
Smallscreen Landscape Modus angezeigt.
sslVersion
Siehe das global Attribut sslVersion.
styleData
wird von dynamischen styles wie f18 werwendet
stylesheetPrefix
Präfix für die Dateien style.css, svg_style.css und
svg_defs.svg. Wenn die Datei mit dem Präfix fehlt, wird die Default
Datei (ohne Präfix) verwendet. Diese Dateien müssen im FHEM
Ordner liegen und können direkt mit "Select style" im FHEMWEB
Menüeintrag ausgewählt werden. Beispiel:
attr WEB stylesheetPrefix dark
Referenzdateien:
darksvg_defs.svg
darksvg_style.css
darkstyle.css
Anmerkung:Wenn der Parametername smallscreen oder touchpad
enthält, wird FHEMWEB das Layout/den Zugriff für entsprechende
Geräte (Smartphones oder Touchpads) optimieren
Standardmäßig werden 3 FHEMWEB Instanzen aktiviert: Port 8083
für Desktop Browser, Port 8084 für Smallscreen, und 8085
für Touchpad.
Wenn touchpad oder smallscreen benutzt werden, wird WebApp support
aktiviert: Nachdem Sie eine Seite am iPhone oder iPad mit Safari
angesehen haben, können Sie einen Link auf den Homescreen anlegen um
die Seite im Fullscreen Modus zu sehen. Links werden in diesem Modus
anders gerendert, um ein "Zurückfallen" in den "normalen" Browser zu
verhindern.
SVGcache
Plots die sich nicht mehr ändern, werden im SVGCache Verzeichnis
(www/SVGcache) gespeichert, um die erneute, rechenintensive
Berechnung der Grafiken zu vermeiden. Default ist 0, d.h. aus.
Siehe den clearSvgCache Befehl um diese Daten zu löschen.
title
Setzt den Titel der Seite. Falls in {} eingeschlossen, dann wird es
als Perl Ausdruck evaluiert.
viewport
Setzt das "viewport" Attribut im HTML Header. Das kann benutzt
werden um z.B. die Breite fest vorzugeben oder Zoomen zu verhindern.
Beispiel: attr WEB viewport
width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no
webCmd
Durch Doppelpunkte getrennte Auflistung von Befehlen, die für ein
bestimmtes Gerät gelten sollen. Funktioniert nicht mit
smallscreen, ein Ersatz dafür ist der devStateIcon Befehl.
Beispiel:
attr lamp webCmd on:off:on-for-timer 10
Der erste angegebene Befehl wird in der "set device ?" list
nachgeschlagen (Siehe das setList Attrib
für Dummy Geräte). Wenn dort bekannte Modifier sind,
wird ein anderes Widget angezeigt. Siehe auch widgetOverride.
Wenn der Befehl state ist, wird der Wert als Kommando interpretiert.
Beispiele:
Anmerkung: dies ist ein Attribut für das anzuzeigende Gerät,
nicht für die FHEMWEBInstanz.
webCmdLabel
Durch Doppelpunkte getrennte Auflistung von Texten, die vor dem
jeweiligen webCmd angezeigt werden. Der Anzahl der Texte muss exakt den
Anzahl der webCmds entsprechen. Um mehrzeilige Anzeige zu realisieren,
kann ein Return nach dem Text und vor dem Doppelpunkt eingefuehrt
werden.
webname
Der Pfad nach http://hostname:port/ . Standard ist fhem,
so ist die Standard HTTP Adresse http://localhost:8083/fhem
widgetOverride
Leerzeichen separierte Liste von Name/Modifier Paaren, mit dem man den
vom Modulautor für einen bestimmten Parameter (Set/Get/Attribut)
vorgesehene Widgets ändern kann. Folgendes ist die Liste der
bekannten Modifier:
uzsuToggle,zust1,zust2 - damit ist es möglich mit einem
Toggle-Button zwischen zwei Zuständen zu wählen. Der Erste ist
der aktive Zustand.
uzsuSelect,val1,val2,... - damit ist es mögliche in einer
Buttonleiste meherere Werte auszuwählen. Das Ergebnis ist
Komma-separiert.
uzsuSelectRadio,val1,val2,... - damit ist es mögliche in einer
Buttonleiste einen aus meherere Werten auszuwählen.
uzsuDropDown,val1,val2,... - damit ist es mögliche mit einem
DropDown Menü einen der Werte auszuwählen.
uzsuTimerEntry[,modifier2] - damit werden je ein uzsuSelect,
uzsuDropDown und uzsuToggle Widget kombiniert um einen Schaltzeitpunkt
auszuwählen. Über den optionalen modifier2 kann ein Widget zur
Auswahl des Schaltwertes angegeben werden. Siehe Beispiele unten. Das
Ergebniss is eine komma-separiert Liste von Wochentagen gefolgt vom
Zeitpunkt, eine Aktiv-Indikator und dem Schaltwert, jeweils durch |
abetrennt. Zum Beispiel: Mo,Di,Sa,So|00:00|enabled|19.5
uzsu[,modifier2] - damit werden mehrere uzsuTimerEntry Widets kombiniert
um eine beliebige Anzahl an Schaltzeiten einzugeben. Über den
optionalen modifier2 kann ein Widget zur Auswahl des Schaltwertes
angegeben werden. Siehe Beispiele unten. Das Ergebiss ist eine durch
leerzeichen getrennte Liste von uzsuTimerEntry Ergebnissen.
Beispiele:
Im Folgenden wird die Verwendung des modifier2 parameters von
uzsuTimerEntry und uzsu gezeigt um die Auswahl des Schaltzeitpunktes
mit der Auswahl des Schaltwertes zu kombinieren:
... widgetOverride state:uzsu,slider,0,5,100 -> ein slider
... widgetOverride state:uzsu,uzsuToggle,off,on -> ein on/off button
... widgetOverride state:uzsu,uzsuDropDown,18,19,20,21,22,23 -> ein dropDownMenue
... widgetOverride state:uzsu,knob,min:18,max:24,step:0.5,linecap:round,fgColor:red -> ein knob widget
... widgetOverride state:uzsu,colorpicker -> ein colorpicker
... widgetOverride state:uzsu,colorpicker,CT,2700,50,5000 -> ein colortemperature slider
:sortable,val1,val2,... - damit ist es möglich aus den gegebenen
Werten eine Liste der gewünschten Werte durch Drag & Drop
zusammenzustellen. Die Reihenfolge der Werte kann dabei entsprechend
geändert werden. Es müssen keine Werte explizit vorgegeben
werden, das Widget kann auch ohne vorgegebenen Werte benutzt werden. Es
können eigene Werte zur Liste hinzugefügt und einsortiert
werden. Das Ergebnis ist Komma-separiert entsprechend aufsteigend
sortiert.
:sortable-strict,val1,val2,... - damit ist es möglich aus den
gegebenen Werten eine Liste der gewünschten Werte durch Drag &
Drop zusammenzustellen. Die Reihenfolge der Werte kann dabei entsprechend
geändert werden. Es können jedoch keine eigenen Werte zur
Liste hinzugefügt werden. Das Ergebnis ist Komma-separiert
entsprechend aufsteigend sortiert.
:sortable-given,val1,val2,... - damit ist es möglich aus den
gegebenen Werten eine sortierte Liste der gewünschten Werte durch
Drag & Drop zusammenzustellen. Es können keine Elemente
gelöscht und hinzugefügt werden. Es müssen alle gegeben
Werte benutzt und entsprechend sortiert sein. Das Ergebnis ist
Komma-separiert entsprechend aufsteigend sortiert.
noArg - es wird kein weiteres Eingabefeld angezeigt.
time - zeigt ein Zeitauswahlmenü.
Beispiel: attr FS20dev widgetOverride on-till:time
textField - zeigt ein Eingabefeld.
Beispiel: attr WEB widgetOverride room:textField
textField-long - ist wie textField, aber beim Click im Eingabefeld wird
ein Dialog mit einer HTML textarea (60x25) wird geöffnet.
slider,<min>,<step>,<max>[,1] - zeigt einen
Schieberegler. Das optionale 1 (isFloat) vermeidet eine Rundung der
Fliesskommazahlen.
multiple,<val1>,<val2>,... - zeigt eine Mehrfachauswahl mit
einem zusätzlichen Eingabefeld. Das Ergebnis ist Komma
separiert.
multiple-strict,<val1>,<val2>,... - ist wie :multiple,
bloß ohne Eingabefeld.
selectnumbers,<min>,<step>,<max>,<number of
digits after decimal point>,lin|log10" zeigt ein HTML-select mit einer
Zahlenreihe vom Wert min bis Wert max mit Schritten von step
angezeigt.
Die Angabe lin erzeugt eine konstant ansteigende Reihe. Die Angabe
log10 erzeugt eine exponentiell ansteigende Reihe zur Basis 10,
step bezieht sich auf den Exponenten, z.B. 0.0625.
select,<val1>,<val2>,... - zeigt ein HTML select mit allen
Werten. Achtung: so ein Widget wird auch dann angezeigt, falls
kein passender Modifier gefunden wurde.
knob,min:1,max:100,... - zeigt das jQuery knob Widget.Die Parameter
werden als eine Komma separierte Liste von Key:Value Paaren spezifiziert,
wobei das data- Präfix entfällt.Für Details siehe die
jQuery knob Dokumentation. Beispiel:
attr dimmer widgetOverride dim:knob,min:1,max:100,step:1,linecap:round
Für die folgenden icon.* Widgets gilt:
<color> kann ein Farbname oder eine Farbnummer ohne führende # sein, z.B. orange oder FFA500. Abhängig vom Kontext ist @ zu escapen \@.
<icon> ist der Iconname.
[class<classname>@] als Prefix vor dem zweiten Parameter, weist den SVG-Icons eine CSS-Klasse zu.
Beispiele zum Import über Raw definition findet man im FHEM-Wiki unter FHEMWEB-Widgets
iconRadio,[class<classname>@][use4icon@]<select color>,<value>,<icon>[@<color>][,<value>,<icon>[@<color>]]...
- zeigt Icons als Radiobutton an und gibt Value bei Betätigung zurück.
<value> ist der Rückgabe- u.Vergleichswert. Wenn eine numerische Folge von <value> angegeben wird, dann passt der laufende Wert zum nächsten höheren Vergleichswert. Vor und hinter der numerischen Folge dürfen nicht numerische Werte angegeben werden, dazwischen nicht. Die numerische Folge muss auf- oder absteigend sein. Beispiel:iconRadio,808080,zu,control_arrow_down,10,fts_shutter_10,20,fts_shutter_20,30,fts_shutter_30,auf,control_arrow_up
<select color> die Hintergrundfarbe des gewählten Icons oder die Farbe des Icons wenn der Prefix use4icon@ vorangestellt wird.
Das Widget enthält eine CSS-Klasse "iconRadio_widget".
iconButtons,[class<classname>@][use4icon@]<select color>,<value>,<icon>[@<color>][,<value>,<icon>[@<color>]]...
- zeigt Icons als Tastenleiste an und gibt durch Komma getrennte Werte der betätigten Tasten zurück.
<value> ist der Rückgabewert.
<select color> die Hintergrundfarbe des gewählten Icons oder die Farbe des Icons wenn der Prefix use4icon@ vorangestellt wird.
Das Widget enthält eine CSS-Klasse "iconButton_widget".
iconLabel[,[class<classname>@]<reference value>,[<icon>][@<color>]][,<reference value>,[<icon>][@<color>]]...
- zeigt Zustände durch colorierte Werte, Beschriftungen und Icons an, wenn
der aktuelle Wert zum Vergleichswert passt. Ein Zustand wird durch
ein Parameterpaar beschrieben. Es können beliebig viele Paare angegeben
werden. Ein Paar besteht aus einem Vergleichswert <reference
value> und einem optionalen Anzeigewert mit optionaler mit
Farbangabe [,<reference value>,[<icon>][@<color>]].
<reference value> kann eine Zahl oder ein regulärer Ausdruck sein.
Wenn <icon> keinem Iconnamen entspricht, wird der Text angezeigt,
sonst das Icon. Wird <icon> nicht angegeben, wird der aktuelle
Wert angezeigt.
iconSwitch,[class<classname>@]<reference value>,[<icon>][@<color>][,<reference value>,[<icon>][@<color>]]...
- schaltet zyklisch nach jeder Betätigung in den angezeigten
Zustand, dabei wird der aktuelle Wert auf den Vergleichswert
gesetzt. Ein Zustand wird durch ein Parameterpaar beschrieben.
Es können beliebig viele Paare angegeben werden. Ein Paar
besteht aus einem Vergleichswert <reference value> und einem
optionalen Anzeigewert mit optionaler mit Farbangabe [,<reference
value>,[<icon>][@<color>]].
<reference value> kann eine Zahl oder eine Zeichenkette sein.
Wenn <icon> keinem Iconnamen entspricht, wird der Text
angezeigt, sonst das Icon. Wird <icon> nicht angegeben,
wird der Vergleichwert angezeigt.
Diese Strings können für notify oder
FileLog Definitionen verwendet werden.
Warnings können folgende Strings enthalten:
none, Battery low,Temperature too low, Window open,
Fault on window sensor
actuator (ohne Suffix) steht für alle Aktoren.
actuator or actuator1..8 kann folgende Werte verarbeiten:
<value>%
Das ist der Normalfall. Der Aktor wird angewiesen auf diesen
Wert zu öffnen.
offset <value>%
Der Aktor läuft mit diesem Offset.
lime-protection
Der Aktor wird angewiesen die lime-protection (Kalkschutz)
Prozedur auszuführen.
synctime
Wenn Sond/Sync beim FHT80B gewählt wird, wird ein
Countdown gesetzt.
test
Der Aktor wird vom FHT80b angewiesen zu piepsen (beep).
pair
Das FHT80b sendet ein "you-belong-to-me"
(Du-gehörst-zu-mir) an diesen Aktor.
Das FHT ist sehr sparsam (oder faul). Es akzeptiert eine Nachricht
vom FHZ1x00 alle 115+x Sekunden, wobei x von der fhtaddress
abhängt. Nicht überrascht sein wenn ein Befehl erst 10
Minuten später vom Gerät angenommen wird. Die FHT Befehle
werden im FHZ1x00/CUL gepuffert bis sie zum FHT geschickt werden.
Siehe den zugehörigen fhtbuf Eintrag im der get Abschnitt. Es können bis zu 8 Befehle in
einer Nachricht an ein FHT geschickt werden wenn diese alle als
Argumente im gleichen set Befehl zusammengefasst werden. Siehe
nachfolgendes Beispiel.
time setzt Stunde und Minute auf lokale Zeit
date setzt Jahr, Monat und Tag auf lokale Zeit
refreshvalues ist ein Alias für report1 255 report2 255
Alle *-temp Werte brauchen eine Temperatur als Argument welche auf
0.5°C gerundet wird. Temperatur Werte müssen zwischen
5.5°C und 30.5°C sein. Der Wert 5.5 setzt den Aktor auf OFF,
der Wert 30.5 setzt den Aktor auf ON
mode kann auto, manual, holiday or
holiday_short sein.
Wenn der mode holiday ist, schaltet dieser zurück auf entweder
auto oder manual um 00:00 des Tages der wie folgt spezifiziert wird:
holiday1 setzt Endtag des Urlaubs
holiday2 setzt den Endmonat des Urlaubs
Für holiday_short (Party Modus)
holiday1 setzt die absolute Stunde zu der von diesem Modus
zurück geschalten wird (in 10-Minuten Schritten, max.
144)
holiday2 setzt den Tag des Monats an dem von diesem Modus
zurück geschalten wird (kann nur heute oder morgen sein, da
holiday1 nur 24h akzeptiert.)
Beispiel:
Aktuelles Datum ist der 29. Januar, Uhrzeit ist 18:05
Es soll bis morgen 1:00Uhr in den Party Modus geschalten
sein
set holiday1 to 6 (6 x 10min = Std) and holiday2 to
30
Die Temperatur für den Urlaubszeitraum wird durch den
desired-temperature Parameter setzt. Bitte beachten, dass der
Holiday Mode nicht früher als auf Übermorgen eingestellt
werden kann. Alternativ muss hier holiday_short genutzt werden.
Weiterhin bitte beachten das diese Kommandos nur in einem
"Sammelkommando" erfolgen können. Beispiel:
set FHT1 mode holiday holiday1 24 holiday2 12 desired-temp 14
Die *-from1/*-from2/*-to1/*-to2 Wertetypen brauchen eine
Zeitspezifikation als Argument im Format HH:MM. Diese definieren den
Zeitraum in dem die day-temp gültig ist. Minuten (MM) werden
auf 10er gerundet, 24:00 bedeutet OFF.
Um die FHZ Zeit zu synchronisieren und um "stumme" Geräte
zu wecken, wird folgendes Kommando empfohlen: define fht_sync at
+*3:30 set TYPE=FHT time
report1 mit dem Parameter 255 fordert das Senden aller Einstellungen
von Montag bis Sonntag an. Das Argument ist ein Bitfeld um einzelne
Werte wie folgt anzufordern:
1: monday
2: tuesday
4: thursday
8: wednesday
16: friday
32: saturday
64: sunday
measured-temp und actuator werden mitgesendet wenn vom FHT als
notwendig erachtet.
Hinweis: Dieser Befehl erzeugt sehr viel Funkverkehr was zu
weiteren Problemen führen kann, besonders wenn Empfang nicht gut
ist.
report2 mit dem Parameter 255 fordert die Ausgabe der nachfolgenden
Einstellungen an: day-temp night-temp windowopen-temp
lowtemp-offset desired-temp measured-temp mode warnings. Das
Argument ist ein Bitfeld, um einzelne Werte abzufragen folgendes
anhängen:
1: warnings
2: mode
4: day-temp, night-temp, windowopen-temp
8: desired-temp
64: lowtemp-offset
measured-temp und actuator werden mitgesendet wenn vom FHT als
notwendig erachtet.
lowtemp-offset braucht eine Temperatur als Argument. Gültige
Werte müssen zwischen 1.0 und 5.0°C liegen. Wird eine
Warnung erzeugen wenn die desired-temp - measured-temp >
lowtemp-offset, jedoch frühestens 1,5Stunden nach der letzten
Änderung der desired-temp.
FHEM hat optional einen internen Softwarepuffer für FHT
Devices. Dieser Puffer soll vor Übertragungsfehlern
schützen. Wenn nach einem bestimmten Zeitraum keine
Bestätigung erhalten wurde wird FHEM den Befehl erneut senden.
Die Befehle in der Warteschlagen können mit list <fht-device> angezeigt werden. Siehe die
Attribute fhtsoftbuffer, retrycount und minfhtbuffer für weitere Details.
Befehle im Softwarepuffer werden in folgender Reihenfolge
gesendet:
desired-temp,mode,report1,report2,holiday1,holiday2,day-temp,night-temp,
[all other commands]
Get
N/A
Attribute
dummy Hinweis: Es macht Sinn ein FHT Device auch für ein FHT8b zu
definieren da sonst der Fehler "unknown FHT device, please define one"
für jedes FHT8b generiert wird, denn das CUL meldet die 8b
Nachrichten. Das dummy Attribut sollte bei diesen Devices gesetzt werden
da sonst der interne FHT Buffer des CUL mit 8b-Daten gefüllt wird
die niemals gebraucht werden. Wenn der Puffer dann voll ist werden "EOB"
Nachrichten vom CUL erzeugt, und Senden zu den 8b ist nicht mehr
möglich.
retrycount
Wenn das fhtsoftbuffer Attribut gesetzt ist,
dann werden die Befehle entsprechend dem retrycount n-mal erneut
versendet wenn nach 240 Sekunden keine Bestätigungsmeldung vom
entsprechenden FHZ Device empfangen wurde. Der Default-Wert ist
1.
minfhtbuffer
FHEM sendet keine Befehle mehr zum FHZ wenn der fhtbuffer-Wert diesen
Wert unterschritten hat. Default-Wert ist 0. Wenn dieser Wert zu niedrig
ist hat die Reihenfolge von fht-Befehlen weniger Einfluss da nur Befehle
im Softbuffer priorisiert werden können. (Siehe Hinweise in der FHT
Sektion set) Der Maximalwert sollte 7 unter dem
Hardware Maximum sein, siehe fhtbuf.
lazy
Wenn das Attribut lazy (faul) gesetzt wurde sendet FHEM keine Befehle
wenn die aktuell gelesenen Werte und der zu setzende Wert identisch sind.
Das spart Funkzeit und hilft Konflikte mit der Regelung die besagt, dass
maximal 1% der Zeit als Funkzeit verwendet werden darf, zu vermeiden.
Nicht standardmäßig aktiviert.
tmpcorr
Korrigiert die Werte die vom FHZ gemeldet werden um den angegebenen Wert.
Hinweis: nur die measured-temp Werte die von FHEM gemeldet (für
Logging genutzt) werden angepasst.
Fhem kann die Ventile vom Typ FHT8V durch einen CUL
direkt, ohne zwischengeschalteten FHT, ansteuern. Dieser Abschnitt
beschreibt einen der Bausteine, der andere ist das PID Device.
Define
define <name> FHT8V <Hauscode> [IODev|FHTID]
<Hauscode> ist eine vierstellige hexadezimale Zahl, die
folgende Beziehung zum zuständigen CUL-Device aufweisen muss:
Bei gegebenem Hauscode des CUL als AABB muss dieser Hauscode die Form CCBB
haben, wobei CC größer oder gleich AA, aber kleiner AA+8 sein muss.
Diese Form wurde gewählt, damit der CUL alle FHT8V-Ventilstellungen
innerhalb von zwei Minuten aktualisieren kann.
<IODev> muß angegeben werden, wenn der als letzter
definierte CUL nicht der zuständige ist. Normalerweise wird dies mit
dem IODev-Attribut gesetzt, da die
Überprüfung der Adresse aber während der Definition erfolgt,
brauchen wir hier eine Ausnahme.
Als Alternative kann man die FHTID des zuständigen IODev-Gerätes
(anstelle des IODev selbst) setzen. Diese Methode ist nötig, wenn man
FHT8V über FHEM2FHEM betreibt.
Beispiel:
define wz FHT8V 3232
Set
set <name> valve <Wert>
Öffnet das Ventil auf den angegebenen Wert (in Prozent, von 0 bis 100).
set <name> pair
Verbindet das Ventil mit dem CUL.
set <name> decalc
Startet einen Entkalkungslauf des angegebenen Ventils.
Get
get <name> valve
Liest die Ventilöffnung aus dem FHT-Puffer des CUL und wandelt sie
in Prozent (von 0 bis 100) um.
Fügt dem fhem-Menü einen zusätzlichen Menüpunkt "Floorplans" hinzu, der zu einer Anzeige ohne fhem-Menü, Räume oder device-Listen führt.
Geräte können an einer festlegbaren Koordinate auf dem Bildschirm angezeigt werden, üblicherweise mit einem anklickbaren icon, das das Ein- oder Aus-Schalten
des Geräts durch klicken erlaubt. Ein Hintergrundbild kann verwendet werden - z.B. ein Grundriss oder jegliches andere Bild.
Mit floorplanstyle.css kann die Formatierung angepasst werden.
Eine Schritt-für-Schritt-Anleitung zur Einrichtung ist verfügbar in
Englisch und
Deutsch.
Define
define <name> FLOORPLAN
Hinweis: Speichern Sie Ihr Hintergrundbild mit dem Dateinamen fp_<name>.png in Ihrem icon_ordner (www/images/default , www/pgm2 or FHEM) .
Beispiel:
define Grundriss FLOORPLAN
fp_Grundriss.png
Set
N/A
Get
get <name> config
Zeigt die Konfiguration des FLOORPLAN incl. allen Attributen an. Kann fuer ein include-file verwendet werden.
A userattr fp_<name> wird automatisch angelegt, sofern es noch nicht existiert.
top = Bildschirmposition, pixel vom oberen Bildschirmrand
left = Bildschirmposition, pixel vom linken Bildschirmrand
style =
0 nur icon/Status
1 Gerätename und icon/Status
2 Gerätename, icon/Status und Kommandos
3 Geräte-reading und optionale Beschreibung
4 S300TH-spezifisch, zeigt Temperatur und Luftfeuchtigkeit an
5 icon/Status und Kommandos (ohne Gerätename)
6 Geräte-reading, Zeitstempel und optionale Beschreibung
7 nur Kommandos
8 popup für kommandos
Eine ggf. angegebene Bschreibung wird anstelle des original-Gerätenamens angezeigt.
Beispiele:
attr lamp1 fp_Erdgeschoss 100,100
#display lamp1 with icon only at screenposition 100,100
attr lamp2 fp_Erdgeschoss 100,140,1,Art-Deco
#display lamp2 with description 'Art-Deco-Light' at 100,140
attr lamp2 fp_ErsteEtage 130,100,1
#display the same device at different positions on other floorplans
attr myFHT fp_Erdgeschoss 300,20,10,Temperature
#display given Text + FHT-temperature
Hinweis: Die Parameter müssen ohne Leerstellen aneinandergereiht werden.
fp_arrange
Aktiviert den "arrange-Modus" der ein zusätzliches Menü anzeigt,
mit dem Geräte auf dem Bildschirm angeordnet werden können. Bei aktiviertem arrange-mode können alle devices per drag&drop platziert werden.
Beispiel:
attr Erdgeschoss fp_arrange 1 attr Erdgeschoss fp_arrange WEB #Aktiviert den arrange-Modus nur für die Webinstanz WEB
stylesheet
Ermöglicht die Verwendung eines eigenen css-stylesheet für Ihren floorplan. Dieses Attribut hat Vorrang vor dem Standard-stylesheet.
Das Standard-stylesheet für floorplans ist floorplanstyle.css. Falls stylesheetPrefix in der korrespondierenden FHEMWEB-Instanz gesetzt ist, wird dieser
stylesheetPrefix auch dem stylesheet für floorplans vorangestellt (prepend).
Alle stylesheets werden im stylesheet-Ordner des fhem-Dateisystems abgelegt. Legen Sie dort
Ihr eigenes stylesheet neben floorplanstyle.css in demselben Ordner ab.
Beispiel:
attr Erdgeschoss stylesheet myfloorplanstyle.css
fp_default
Der floorplan-Startbildschirm wird übersprungen wenn dieses Attribut einem der von Ihnen definierten floorplans zugeordnet ist.
Beispiel:
attr Erdgeschoss fp_default 1
fp_noMenu
Blendet das floorplans-Menü aus, das normalerweise am linken Bildschirmrand angezeigt wird.
Beispiel:
attr Erdgeschoss fp_noMenu 1
commandfield
Fügt Ihrem floorplan ein fhem-Kommandofeld hinzu.
Beispiel:
attr Erdgeschoss commandfield 1
fp_backgroundimg
Gestattet die Bennung eine Hintergundbilds unabhängig vom floorplan-Namen. Hinweis: Das Attribut kann mittels notify geändert werden, um z.B. unterschiedliche Hintergundbidlder am Tag oder in der Nacht anzuzeigen.
Beispiel:
attr Erdgeschoss fp_backgroundimg foobar.png
fp_viewport
Gestattet die Verwendung eines abweichenden viewport-Wertes für die touchpad-Ausgabe.
Die Default-viewport-Angbe ist "width=768".
fp_roomIcons
Mit Leerstellen getrennte Liste von floorplan:icon -Paaren, um
einem Eintrag des floorplan-Menues icons zuzuordnen, genau wie
die entsprechende Funktionalitaet in FHEMWEB. Beispiel:
attr Grundriss fp_roomIcons Grundriss:control_building_empty Media:audio_eq
Steuert gewisse Funktionen eines Fritz!Box Routers. Verbundene Fritz!Fon's (MT-F, MT-D, C3, C4) können als Signalgeräte genutzt werden. MP3-Dateien und Text (Text2Speech) können als Klingelton oder einem angerufenen Telefon abgespielt werden.
Für detailierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.
Das Modul schaltet in den lokalen Modus, wenn FHEM auf einer Fritz!Box läuft (als root-Benutzer!). Ansonsten versucht es eine Web oder Telnet Verbindung zu "fritz.box" zu öffnen. D.h. Telnet (#96*7*) muss auf der Fritz!Box erlaubt sein. Für diesen Fernzugriff muss einmalig das Passwort gesetzt werden.
Die Steuerung erfolgt teilweise über die offizielle TR-064-Schnittstelle und teilweise über undokumentierte Schnittstellen zwischen Webinterface und Firmware Kern. Das Modul funktioniert am besten mit dem Fritz!OS 6.24. Bei den nachfolgenden Fritz!OS Versionen hat AVM einige interne Schnittstellen (telnet, webcm) ersatzlos gestrichen. Einige Modul-Funktionen sind dadurch nicht oder nur eingeschränkt verfügbar (siehe Anmerkungen zu benötigten API).
Bitte auch die anderen Fritz!Box-Module beachten: SYSMON und FB_CALLMONITOR.
Das Modul nutzt das Perlmodule 'Net::Telnet', 'JSON::XS', 'LWP', 'SOAP::Lite' für den Fernzugriff.
Define
define <name> FRITZBOX [host]
Das Attribut host ist die Web-Adresse (Name oder IP) der Fritz!Box. Fehlt es, so schaltet das Modul in den lokalen Modus oder nutzt die Standardadresse "fritz.box".
Beispiel: define Fritzbox FRITZBOX
Das FritzOS hat eine versteckte Funktion (Osterei).
define MyEasterEgg weblink htmlCode { FRITZBOX_fritztris("Fritzbox") }
Set
set <name> alarm <Nummer> [on|off] [time] [once|daily|Mo|Tu|We|Th|Fr|Sa|So]
Schaltet den Weckruf Nummer 1, 2 oder 3 an oder aus (Standard ist on). Setzt die Zeit und den Wochentag.
Benötigt die API: Telnet oder webcm.
set <name> call <number> [Dauer] [say:Text|play:MP3URL]
Ruf für 'Dauer' Sekunden (Standard 60 s) die angegebene Telefonnummer von einem internen Telefonanschluss an (Standard ist 1 oder das Attribut 'ringWithIntern'). Wenn der Angerufene abnimmt, hört er die Wartemusik oder den angegebenen Text oder Klang.
Der interne Telefonanschluss klingelt ebenfalls.
"say:" und "play:" benötigen die API: Telnet oder webcm.
set <name> checkAPIs
Startet eine erneute Abfrage der exitierenden Programmierschnittstellen der FRITZ!BOX.
set <name> customerRingTone <internalNumber> <MP3DateiInklusivePfad>
Lädt die MP3-Datei als Klingelton auf das angegebene Telefon. Die Datei muss im Dateisystem der Fritzbox liegen.
Das Hochladen dauert etwa eine Minute bis der Klingelton verfügbar ist. (API: Telnet)
set <name> dect <on|off>
Schaltet die DECT-Basis der Box an oder aus.
Benötigt die API: Telnet oder webcm.
set <name> diversity <number> <on|off>
Schaltet die Rufumleitung (Nummer 1, 2 ...) für einzelne Rufnummern an oder aus.
Die Rufumleitung muss zuvor auf der Fritz!Box eingerichtet werden. Benötigt die API: Telnet oder webcm.
Achtung! Es lassen sich nur Rufumleitungen für einzelne angerufene Telefonnummern (also nicht "alle") und ohne Abhängigkeit von der anrufenden Nummer schalten.
Es muss also ein diversity-Geräwert geben.
Benötigt die API: Telnet, webcm oder TR064 (>=6.50).
set <name> guestWLAN <on|off>
Schaltet das Gäste-WLAN an oder aus. Das Gäste-Passwort muss gesetzt sein. Wenn notwendig wird auch das normale WLAN angeschaltet.
set <name> moh <default|sound|customer> [<MP3DateiInklusivePfad|say:Text>]
Beispiel: set fritzbox moh customer say:Die Wanne ist voll set fritzbox moh customer /var/InternerSpeicher/warnung.mp3
ändert die Wartemusik ('music on hold') der Box. Mit dem Parameter 'customer' kann eine eigene MP3-Datei aufgespielt werden.
Alternativ kann mit "say:" auch ein Text gesprochen werden. Die Wartemusik hat immer eine Länge von 8,13 s. Sie wird kontinuierlich während des Makelns von Gesprächen aber auch bei Nutzung der internen Wählhilfe bis zum Abheben des rufenden Telefons abgespielt. Dadurch können über FHEM dem Angerufenen 8s-Nachrichten vorgespielt werden.
set <name> password <Passwort>
Speichert das Passwort für den Fernzugriff über Telnet.
set <name> ring <intNummern> [Dauer [Klingelton]] [show:Text] [say:Text | play:Link]
Beispiel:
set fritzbox ring 611,612 5 Budapest show:Es regnet set fritzbox ring 610 8 say:Es regnet set fritzbox ring 610 10 play:http://raspberrypi/sound.mp3
Lässt die internen Nummern für "Dauer" Sekunden und (auf Fritz!Fons) mit dem angegebenen "Klingelton" klingeln.
Mehrere interne Nummern müssen durch ein Komma (ohne Leerzeichen) getrennt werden.
Standard-Dauer ist 5 Sekunden. Es kann aber zu Verzögerungen in der Fritz!Box kommen. Standard-Klingelton ist der interne Klingelton des Gerätes.
Der Klingelton wird für Rundrufe (9 oder 50) ignoriert.
Wenn der Anruf angenommen wird, hört der Angerufene die Wartemusik (music on hold), welche ebenfalls zur Nachrichtenübermittlung genutzt werden kann.
Die Parameter Klingelton, show:, say: und play: benötigen die API Telnet oder webcm.
Wenn das Attribut 'ringWithIntern' existiert, wird der Text hinter 'show:' als Name des Anrufers angezeigt.
Er darf maximal 30 Zeichen lang sein.
Auf Fritz!Fons wird der Text (max. 100 Zeichen) hinter dem Parameter 'say:' direkt angesagt und ersetzt den Klingelton.
Alternativ kann mit 'play:' auch ein MP3-Link (vom einem Webserver) abgespielt werden. Dabei wird die Internetradiostation 39 'FHEM' erzeugt und translate.google.com für Text2Speech genutzt. Es wird immer der komplette Text/Klang abgespielt. Bis zum Ende der 'Klingeldauer' klingelt das Telefon dann mit seinem Standard-Klingelton.
Das Abspielen ist eventuell nicht auf mehreren Fritz!Fons gleichzeitig möglich.
Je nach Fritz!OS kann das beschriebene Verhalten abweichen.
set <name> sendMail [to:<Address>] [subject:<Subject>] [body:<Text>]
Sendet eine Email über den Emailbenachrichtigungsservice der als Push Service auf der Fritz!Box konfiguriert wurde.
Mit "\n" kann einen Zeilenumbruch im Textkörper erzeut werden.
Alle Parameter können ausgelassen werden. Bitte kontrolliert, dass die Email nicht im Junk-Verzeichnis landet.
Benötigt einen Telnet Zugang zur Box.
set <name> startRadio <internalNumber> [Name oder Nummer]
Startet das Internetradio auf dem angegebenen Fritz!Fon. Eine verfügbare Radiostation kann über den Namen oder die (Gerätewert)Nummer ausgewählt werden. Ansonsten wird die in der Box als Internetradio-Klingelton eingestellte Station abgespielt. (Also nicht die am Telefon ausgewählte.)
set <name> tam <number> <on|off>
Schaltet den Anrufbeantworter (Nummer 1, 2 ...) an oder aus.
Der Anrufbeantworter muss zuvor auf der Fritz!Box eingerichtet werden.
set <name> update
Startet eine Aktualisierung der Gerätewerte.
set <name> wlan <on|off>
Schaltet WLAN an oder aus.
Get
get <name> ringTones
Zeigt die Liste der Klingeltöne, die benutzt werden können.
get <name> shellCommand <Befehl>
Führt den angegebenen Befehl auf der Fritz!Box-Shell aus und gibt das Ergebnis zurück.
Kann benutzt werden, um Shell-Befehle auszuführen, die nicht im Modul implementiert sind.
Muss zuvor über das Attribute "allowShellCommand" freigeschaltet werden.
get <name> tr064Command <service> <control> <action> [[argName1 argValue1] ...]
Führt über TR-064 Aktionen aus (siehe Schnittstellenbeschreibung von AVM).
argValues mit Leerzeichen müssen in Anführungszeichen eingeschlossen werden.
Beispiel: get Fritzbox tr064Command X_AVM-DE_OnTel:1 x_contact GetDECTHandsetInfo NewDectID 1
Muss zuvor über das Attribute "allowTR064Command" freigeschaltet werden.
get <name> tr064ServiceListe
Zeigt die Liste der TR-064-Dienste und Aktionen, die auf dem Gerät erlaubt sind.
Attributes
allowShellCommand <0 | 1>
Freischalten des get-Befehls "shellCommand"
allowTR064Command <0 | 1>
Freischalten des get-Befehls "tr064Command" und "luaQuery"
boxUser <user name>
Benutzername für den TR064- oder einen anderen webbasierten Zugang. Normalerweise wird keine Benutzername für das Login benötigt.
Wenn die Fritz!Box anders konfiguriert ist, kann der Nutzer über dieses Attribut definiert werden.
defaultCallerName <Text>
Standard-Text, der auf dem angerufenen internen Telefon als "Anrufer" gezeigt wird.
Dies erfolgt, indem während des Klingelns temporär der Name der internen anrufenden Nummer geändert wird.
Es sind maximal 30 Zeichen erlaubt. Das Attribute "ringWithIntern" muss ebenfalls spezifiziert sein.
Benötigt die API: Telnet oder webcmd
defaultUploadDir <fritzBoxPath>
Dies ist der Standard-Pfad der für Dateinamen benutzt wird, die nicht mit einem / (Schrägstrich) beginnen.
Es muss ein Pfad auf der Fritz!Box sein. D.h., er sollte mit /var/InternerSpeicher starten, wenn es in Windows unter \\ip-address\fritz.nas erreichbar ist.
forceTelnetConnection <0 | 1>
Erzwingt den Fernzugriff über Telnet (anstatt über die WebGUI oder TR-064).
Dieses Attribut muss bei älteren Geräten/Firmware aktiviert werden.
fritzBoxIP <IP-Adresse>
Veraltet.
INTERVAL <Sekunden>
Abfrage-Interval. Standard ist 300 (Sekunden). Der kleinste mögliche Wert ist 60.
ringWithIntern <1 | 2 | 3>
Um ein Telefon klingeln zu lassen, muss in der Fritzbox eine Anrufer (Wählhilfe, Wert 'box_stdDialPort') spezifiziert werden.
Um während des Klingelns eine Nachricht (Standard: "FHEM") anzuzeigen, kann hier die interne Nummer 1-3 angegeben werden.
Der entsprechende analoge Telefonanschluss muss vorhanden sein.
telnetTimeOut <Sekunden>
Maximale Zeit, bis zu der während einer Telnet-Sitzung auf Antwort gewartet wird. Standard ist 10 s.
telnetUser <user name>
Benutzername für den Telnetzugang. Normalerweise wird keine Benutzername für das Login benötigt.
Wenn die Fritz!Box anders konfiguriert ist, kann der Nutzer über dieses Attribut definiert werden.
useGuiHack <0 | 1>
Falls die APIs der Box nicht mehr die änderung des Klingeltones unterstützen (Fritz!OS >6.24), kann dieses Attribute entsprechend der WIKI-Anleitung genutzt werden.
gsm_rssi - Indikator der empfangenen GSM-Signalstärke (0-100)
gsm_state - Status der Mobilfunk-Verbindung
gsm_technology - GSM-Technologie, die für die Datenübertragung genutzt wird (GPRS, EDGE, UMTS, HSPA)
mac_01_26_FD_12_01_DA - MAC Adresse und Name eines aktiven Netzwerk-Gerätes.
Bei einer WLAN-Verbindung wird "WLAN" und (von der Box gesehen) die Sende- und Empfangsgeschwindigkeit und die Empfangsstärke angehangen. Bei einer LAN-Verbindung wird der LAN-Port und die LAN-Geschwindigkeit angehangen. Gast-Verbindungen werden mit "gWLAN" oder "gLAN" gekennzeichnet.
Inaktive oder entfernte Geräte erhalten zuerst den Werte "inactive" und werden beim nächsten Update gelöscht.
radio01 - Name der Internetradiostation 01
tam1 - Name des Anrufbeantworters 1
tam1_newMsg - Anzahl neuer Nachrichten auf dem Anrufbeantworter 1
tam1_oldMsg - Anzahl alter Nachrichten auf dem Anrufbeantworter 1
tam1_state - Aktueller Status des Anrufbeantworters 1
user01 - Name von Nutzer/IP 1 für den eine Zugangsbeschränkung (Kindersicherung) eingerichtet ist
user01_thisMonthTime - Internetnutzung des Nutzers/IP 1 im aktuellen Monat (Kindersicherung)
user01_todaySeconds - heutige Internetnutzung des Nutzers/IP 1 in Sekunden (Kindersicherung)
user01_todayTime - heutige Internetnutzung des Nutzers/IP 1 (Kindersicherung)
FRM
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRM
FRM_AD
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRM_AD
FRM_I2C
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRM_I2C
FRM_IN
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRM_IN
FRM_LCD
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRM_LCD
FRM_OUT
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRM_OUT
FRM_PWM
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRM_PWM
FRM_RGB
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRM_RGB
FRM_ROTENC
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRM_ROTENC
FRM_SERVO
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRM_SERVO
FRM_STEPPER
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRM_STEPPER
FReplacer
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FReplacer
Das FS20 Protokoll wird von einem großen Spektrum an Geräten
verwendet. Diese stammen entweder aus der Kategorie Sensor/Sender oder
Aktor/Empfänger. Die Funknachrichten (868.35 MHz) können mit einem
FHZ oder einem CUL empfangen werden.
Dieses muss daher zuerst definiert werden.
Die Werte housecode, button, fg, lm, und gm können entweder hexadezimal
oder in der ELV-typischen quaternären Notation (Zahlen von 1-4)
eingegeben werden.
Hier und auch in späteren Beispielen wird als Referenz die ELV4
Notation verwendet. Die Notationen können auch gemischt werden da FHEM
die verwendete Notation durch zählen der Zeichen erkennt.
<housecode> ist eine 4 stellige Hex oder 8 stellige
ELV4 Zahl, entsprechend der Hauscode Adresse.
<button> ist eine 2 stellige Hex oder 4 stellige ELV4
Zahl, entsprechend dem Button des Transmitters.
Optional definiert <fgaddr> die Funktionsgruppe mit
einer 2 stelligen Hex oder 4 stelligen ELV4 Adresse. Bei Hex muss die
erste Stelle F, bei ELV4 die ersten zwei Stellen 44 sein.
Optional definiert <lmaddr> definiert einen local
master mit einer 2 stelligen Hex oder 4 stelligen ELV4 Adresse. Bei Hex
muss die letzte Stelle F, bei ELV4 die letzten zwei Stellen 44 sein.
Optional definiert gm den global master. Die Adresse muss FF bei HEX
und 4444 bei ELV4 Notation sein.
dim06% dim12% dim18% dim25% dim31% dim37% dim43% dim50%
dim56% dim62% dim68% dim75% dim81% dim87% dim93% dim100%
dimdown
dimup
dimupdown
off
off-for-timer
on # dimmer: Setze auf diesen Wert vor dem Ausschalten
on-for-timer # Siehe Hinweise
on-old-for-timer # Setze zum vorherigen (vor dem Einschalten)
ramp-on-time # Zeit bis zum erreichen des gewünschten Dim-Wertes
ramp-off-time # Zeit bis zum Ausschalten bei Dimmern
reset
sendstate
timer
toggle # zwischen aus und dem letztern Dim-Wert
set lamp on set lamp1,lamp2,lamp3 on set lamp1-lamp3 on set lamp on-for-timer 12
Hinweise:
reset nur mit Vorsicht verwenden: Auch der Hauscode wird
gelöscht.
Da das FS20 Protokoll 0.22Sek für eine Funksequenz benötigt
wird nach jeder Ausführung eine Pause von 0.22Sek eingefügt.
Das FS20ST schaltet für dim*% und dimup ein. Es reagiert nicht
auf sendstate.
Wenn ein Timer gesetzt ist (und dieser nicht 0 ist) werden on, dim*,
und *-for-timer berücksichtigt (zumindest beim FS20ST).
Das time Argument geht von 0.25Sek bis 4Std und 16Min.
Da time nur mit einem Byte dargestellt wird ergeben sich
hieraus nur 112 eindeutige Zeit-Werte die mit ansteigender
größe immer gröber aufgelöst werden. Das Programm
zeigt die exakte Restzeit an wenn die gewählte Auflösung
nicht eindeutig war. Die Auflösung ist is 0.25Sek von 0 bis 4
Sekunden, 0.5Sek von 4 bis 8Sek, 1Sek von 8 bis 16 Sek und so weiter.
Wenn eine höhere Genauigkeit bei großen Werten gebraucht
wird, dann hilft at mit einer Auflösung von
1Sek.
Get
N/A
Attribute
IODev
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.
eventMap
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:
attr store eventMap on:open off:closed
attr store eventMap /on-for-timer 10:open/off:closed/
set store open
dummy
Setzt das Attribut dummy um Devices zu definieren, die keine Funksignale
absetzen. Zugehörige notifys werden ausgeführt wenn das Signal
empfangen wird. Wird beispielsweise genutzt um auf Code eines Sender zu
reagieren, dennoch wird es auch dann kein Signal senden wenn es im Web
Frontend getriggert wird.
follow-on-for-timer
Plant ein "setstate off;trigger off" für die angegebene Zeit als
Argument zum on-for-timer Command. Oder das gleiche mit "on" wenn der
Befehl "follow-off-for-timer" war.
follow-on-timer
Wie follow-on-for-timer plant es ein "setstate off;trigger off", aber
diesmal als Argument in Sekunden zum Attribut. Wird verwendet um dem
vorprogrammierten Timer zu folgen welcher vorher durch den timer-Befehl,
oder manuell durch Drücken des Buttons gesetzt wurde. Im Handbuch
finden sich noch mehr Informationen. Beachtet bei on und dim Befehlen.
model
Das "model" Attribut bezeichnet den Modelltyp des Gerätes. Dieses
Attribut wird (derzeit) nicht direkt durch fhem.pl genutzt. Es kann
beispielsweise von externen Programmen oder Webinterfaces genutzt werden
um Geräteklassen zu unterscheiden und dazu passende Befehle zu senden
(z.B. "on" oder "off" an ein fs20st, "dim..%" an ein fs20du etc.). Die
Schreibweise des Modellnamens ist wie die in Anführungszeichen in
der Anleitung gedruckte Bezeichnung die jedem Gerät beiliegt.
Dieser Name wird ohne Leerzeichen ausschließlich in Kleinbuchstaben
verwendet. Gültige Zeichen sind a-z 0-9 und
-, andere Zeichen sind zu vermeiden. Hier ist eine Liste der
"offiziellen" Devices:
ignore
Ignoriere dieses Gerät, beispielsweise wenn es dem Nachbar
gehört. Das Gerät wird keine FileLogs/notifys triggern,
empfangene Befehle werden stillschweigend ignoriert (es wird kein
Funksignal gesendet, wie auch beim dummy
Attribut). Das Gerät wird weder in der Device-List angezeigt (es sei
denn, es wird explizit abgefragt), noch wird es in Befehlen mit
"Wildcard"-Namenspezifikation (siehe devspec)
erscheinen. Es kann mit dem "ignored=1" devspec dennoch erreicht werden.
Speichert Ereignisse in einer Log-Datei mit Namen <filename>. Das Log-Format ist
YYYY-MM-DD_HH:MM:SS <device> <event>
Der Ausdruck unter regexp wird anhand des Gerätenames überprüft und zwar
devicename:event oder der timestamp:devicename:event-Kombination.
Der regexp muss mit dem kompletten String übereinstimmen und nicht nur teilweise.
<filename> können %-wildcards der POSIX
strftime-Funktion des darunterliegenden OS enthalten (siehe auch strftime
Beschreibung).
Allgemein gebräuchliche Wildcards sind:
%d Tag des Monats (01..31)
%m Monat (01..12)
%Y Jahr (1970...)
%w Wochentag (0..6); beginnend mit Sonntag (0)
%j Tag des Jahres (001..366)
%U Wochennummer des Jahres, wobei Wochenbeginn = Sonntag (00..53)
%W Wochennummer des Jahres, wobei Wochenbeginn = Montag (00..53)
FHEM ersetzt %L mit dem Wert des global logdir Attributes.
Bevor %V für ISO 8601 Wochennummern verwendet werden,
muss überprüft werden, ob diese Funktion durch das Brriebssystem
unterstützt wird (Es kann sein, dass %V nicht umgesetzt wird, durch
einen Leerstring ersetzt wird oder durch eine falsche ISO-Wochennummer
dargestellt wird - besonders am Jahresanfang)
Bei der Verwendung von %V muss gleichzeitig für das Jahr
ein %G anstelle von %Y benutzt werden.
Falls man readonly spezifiziert, dann wird die Datei nur zum visualisieren
verwendet, und nicht zum Schreiben geöffnet.
Beispiele:
Erneutes Öffnen eines FileLogs nach händischen
Änderungen in dieser Datei.
clear
Löschen und erneutes Öffnen eines FileLogs.
addRegexpPart <device> <regexp>
Fügt ein regexp Teil hinzu, der als device:regexp aufgebaut ist.
Die Teile werden nach Regexp-Regeln mit | getrennt. Achtung: durch
hinzufügen können manuell erzeugte Regexps ungültig
werden.
removeRegexpPart <re>
Entfernt ein regexp Teil. Die Inkonsistenz von addRegexpPart /
removeRegexPart-Argumenten hat seinen Ursprung in der Wiederverwendung
von Javascript-Funktionen.
absorb secondFileLog
Führt den gegenwärtigen Log und den secondFileLog zu einer
gemeinsamen Datei zusammen, fügt danach die regexp des
secondFileLog dem gegenwärtigen Filelog hinzu und löscht dann
anschließend das secondFileLog.
Dieses Komanndo wird zur Erzeugung von kombinierten Plots (weblinks)
benötigt. Hinweise:
secondFileLog wird gelöscht (d.h. die FHEM-Definition und
die Datei selbst).
nur das aktuelle File wird zusammengeführt, keine
archivierten Versionen.
Weblinks, die das secondFilelog benutzen werden unbrauchbar, sie
müssen deshalb auf das neue Logfile angepasst oder
gelöscht werden.
Get
get <name> <infile> <outfile> <from>
<to> <column_spec>
Liest Daten aus einem Logfile und wird von einem Frontend benötigt, um
Daten ohne direkten Zugriff aus der Datei zu lesen.
<infile>
Name des Logfiles, auf das zugegriffen werden soll. Sonderfälle:
"-" steht für das aktuelle Logfile, und "CURRENT" öffnet die
zum "from" passende Datei.
<outfile>
Bei einem "-", bekommt man die Daten auf der aktuellen Verbindung
zurück, anderenfall ist es das Name (eigentlich Prefix, s.u.) des
Output-Files. Wenn mehr als ein File angesprochen wird, werden die
einzelnen Dateinamen durch ein "-" getrennt, anderenfalls werden die
Daten in einzelne Dateien geschrieben, die - beginnend mit 0 -
durchnummeriert werden.
<from> <to>
Bezeichnet den gewünschten Datenbereich. Die beiden Elemente
müssen ganz oder mit dem Anfang des Zeitformates
übereinstimmen.
<column_spec>
Jede column_spec sendet die gewünschten Daten entweder in eine
gesonderte Datei oder über die gegenwärtige Verbindung durch
"-" getrennt.
Syntax: <col>:<regexp>:<default>:<fn>
<col>
gibt die Spaltennummer zurück, beginnend mit 1 beim Datum.
Wenn die Spaltenmummer in doppelten Anführungszeichen steht,
handelt es sich um einen festen Text und nicht um eine
Spaltennummer.
<regexp>
gibt, falls vorhanden, Zeilen mit Inhalten von regexp zurück.
Groß- und Kleinschreibung beachten.
<default>
Wenn keine Werte gefunden werden, und der Default-Wert
(Voreinstellung) wurde gesetzt, wird eine Zeile zurückgegeben,
die den von-Wert (from) und diesen Default-Wert enthält.
Dieses Leistungsmerkmal ist notwendig, da gnuplot abbricht, wenn
ein Datensatz keine Daten enthält.
<fn>
Kann folgende Inhalte haben:
int
Löst den Integer-Wert zu Beginn eines Strings heraus. Wird
z.B. bei 10% gebraucht.
delta-h oder delta-d
Gibt nur den Unterschied der Werte-Spalte pro
Stunde oder pro Tag aus. Wird benötigt, wenn die Spalte
einen Zähler enthält, wie im Falles des KS300 in der
Spalte für die Regenmenge.
alles andere
Dieser String wird als Perl-Ausdruck ausgewertet. @fld enthaelt
die aktuelle Zeile getrennt durch Leerzeichen. Achtung:
Dieser String/Perl-Ausdruck darf keine Leerzeichen enthalten.
Beispiel:
get outlog out-2008.log - 2008-01-01 2008-01-08 4:IR:int: 9:IR::
archivecmd / archivedir / nrarchive
Wenn eine neue FileLog-Datei geöffnet wird, wird der FileLog
archiver aufgerufen. Das geschieht aber nur , wenn der Name der Datei
sich geändert hat(abhängig von den zeitspezifischen
Wildcards, die weiter oben unter FileLog
(define) beschrieben werden) und gleichzeitig ein neuer Datensatz
in diese Datei geschrieben werden muss.
Wenn das Attribut archivecmd benutzt wird, startet es als
shell-Kommando ( eine Einbettung in " ist nicht notwendig), und jedes %
in diesem Befehl wird durch den Namen des alten Logfiles ersetzt.
Wenn dieses Attribut nicht gesetzt wird, aber dafür nrarchive,
werden nrarchive viele Logfiles im aktuellen Verzeichnis gelassen, und
ältere Dateien in das Archivverzeichnis (archivedir) verschoben
(oder gelöscht, falls kein archivedir gesetzt wurde).
Achtung: "ältere Dateien" sind die, die in der alphabetisch
sortierten Liste oben sind.
Hinweis: Werden diese Attribute als global instance gesetzt, hat das
auschließlich auf das FHEM logfile
Auswirkungen.
archiveCompress
Falls nrarchive, archivedir und archiveCompress gesetzt ist, dann
werden die Dateien im archivedir komprimiert abgelegt.
createGluedFile
Falls gesetzt (1), und im SVG-Plot ein Zeitbereich abgefragt wird, was
in zwei Logdateien gespeichert ist, dann wird für die Anfrage eine
temporäre Datei mit dem Inhalt der beiden Dateien erzeugt.
eventOnThreshold
Falls es auf eine (nicht Null-) Zahl gesetzt ist, dann wird das
linesInTheFile Event generiert, falls die Anzahl der Zeilen in der
Datei ein Mehrfaches der gesetzen Zahl ist. Achtung: der Zähler ist
nur für solche Dateien korrekt, die nach dem Impementieren dieses
Features angelegt wurden. Ein Absturz/Abschuß von FHEM
verfälscht die Zählung.
logtype
Wird vom SVG Modul benötigt, um daten grafisch aufzubereiten.
Der String wird aus komma-separierten Tokens
(,) erzeugt, wobei jeder Token ein eigenes gnuplot-Programm bezeichnet.
Die Token können Doppelpunkte (:) enthalten. Der Teil vor dem
Doppelpunkt bezeichnet den Namen des Programms; der Teil nach dem
Doppelpunkt ist der String, der im Web.Frontend dargestellt werden
soll. Gegenwärtig sind folgende Typen von gnuplot-Programmen
implementiert:
fs20
Zeichnet on als 1 and off als 0. Die geeignete
filelog-Definition für das Gerät fs20dev lautet:
define fslog FileLog log/fs20dev-%Y-%U.log fs20dev
fht
Zeichnet die Ist-Temperatur/Soll-temperatur/Aktor Kurven. Die
passende FileLog-Definition (für das FHT-Gerät mit
Namen fht1)sieht wie folgt aus: define fhtlog1 FileLog log/fht1-%Y-%U.log
fht1:.*(temp|actuator).*
temp4rain10
Zeichnet eine Kurve aus der Temperatur und dem Niederschlag (pro
Stunde und pro Tag) eines KS300. Die dazu passende
FileLog-Definition (für das KS300
Gerät mit Namen ks300) sieht wie folgt aus:
define ks300log FileLog log/fht1-%Y-%U.log ks300:.*H:.*
hum6wind8
Zeichnet eine Kurve aus der Feuchtigkeit und der
Windgeschwindigkeit eines ks300. Die geeignete
FileLog-Definition ist identisch mit der vorhergehenden
Definition. Beide programme erzeugen das gleiche Log.
text
Zeigt das LogFile in seiner ursprünglichen Form (Nur
Text).Eine gnuplot-Definition ist nicht notwendig.
reformatFn
wird verwendet, um "fremde" Dateien für die SVG-Anzeige ins
FileLog-Format zu konvertieren. Es enthält nur den Namen einer
Funktion, der mit der ursprünglichen Zeile aufgerufen wird. Z.Bsp.
um die NTP loopstats Datei zu visualisieren kann man den Wert von
reformatFn auf ntpLoopstats setzen, und folgende Funktion in
99_myUtils.pm definieren:
sub
ntpLoopstats($)
{
my ($d) = @_;
return $d if($d !~ m/^(\d{5}) (\d+)\.(\d{3}) (.*)$/);
my ($r, $t) = ($4, FmtDateTime(($1-40587)*86400+$2));
$t =~ s/ /_/;
return "$t ntpLoopStats $r";
}
GAEBUS
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: GAEBUS
WLAN konfigurieren (bis Firmware 1.06):
Gerät in den AP modus bringen (Knopf für mehr als 3s drücken, diesen Schritt wiederholen bis die LED permanent leuchtet)
Nun einen Computer mit der SSID G-Home verbinden.
Im Browser zu 10.10.100.254 (username:passwort = admin:admin)
In STA Setting WLAN Einstellungen eintragen
WLAN konfigurieren:
Gerät in den AP modus bringen (Knopf für mehr als 3s drücken, diesen Schritt wiederholen bis die LED permanent leuchtet)
Mit der G-Homa App das WLAN des Zwischensteckers einstellen
Network Parameters settings (bis Firmware 1.06):
Other Setting -> Protocol auf TCP-Server
Other Setting -> Port ID (wird später für FHEM benötigt)
Other Setting -> Server Address (IP Adresse des FHEM Servers)
Network Parameters settings:
Über set ... ConfigAll des Server Gerätes die Parameter automatisch setzen.
Optional:
Im Router alle ausgehenden Verbindungen für G-Homa blockieren.
Define
define <name> GHoma <port>
Legt ein GHoma Server device an.
Neue Zwischenstecker werden beim ersten verbinden automatisch angelegt.
Diese können aber auch manuell angelegt werden: define <name> GHoma <Id>
Die Id besteht aus den letzten 6 Stellen der MAC Adresse des Zwischensteckers.
Beispiel: MAC= AC:CF:23:A5:E2:3B -> Id= A5E23B
Für Server Device:
set <name> ConfigAll [IP|hostname|FQDN]
Einstellen aller GHoma Zwischenstecker über UDP broadcast auf TCP client mit FHEM Server Adresse und Port des GHoma Server Devices.
Attributes
Für Zwischenstecker devices:
restoreOnStartup
Wiederherstellen der Portzustände nach Neustart
Standard: last, gültige Werte: last, on, off
restoreOnReinit
Wiederherstellen der Portzustände nach Neustart
Standard: last, gültige Werte: last, on, off
blocklocal
Wert im Reading State sofort nach Änderung über lokale Taste wiederherstellen
Standard: no, gültige Werte: no, yes
Für Server devices:
allowfrom
Regexp der erlaubten IP-Adressen oder Hostnamen. Wenn dieses Attribut
gesetzt wurde, werden ausschließlich Verbindungen von diesen
Adressen akzeptiert.
define <rg_FirstName> GUEST [<Device Name(n) der Bewohnergruppe(n)>]
Stellt ein spezielles virtuelles Device bereit, welches einen Gast zu Hause repräsentiert.
Basierend auf dem aktuellen Status und anderen Readings können andere Aktionen innerhalb von FHEM angestoßen werden.
Wird vom übergeordneten Modul RESIDENTS verwendet, kann aber auch einzeln benutzt werden.
Bei Mitgliedschaft mehrerer Bewohnergruppen werden diese durch Komma getrennt angegeben (siehe Beispiel unten).
Beispiele:
# Einzeln
define rg_Guest GUEST
# Typisches Gruppenmitglied
define rg_Guest GUEST rgr_Residents # um Mitglied der Gruppe rgr_Residents zu sein
# Mitglied in mehreren Gruppen
define rg_Guest GUEST rgr_Residents,rgr_Guests # um Mitglied der Gruppen rgr_Residents und rgr_Guests zu sein
Set
set <rg_FirstName> <command> [<parameter>]
Momentan sind die folgenden Kommandos definiert.
location - setzt das Reading 'location'; siehe auch Attribut rg_locations, um die in FHEMWEB angezeigte Liste anzupassen
mood - setzt das Reading 'mood'; siehe auch Attribut rg_moods, um die in FHEMWEB angezeigte Liste anzupassen
state home,gotosleep,asleep,awoken,absent,gone wechselt den Status; siehe auch Attribut rg_states, um die in FHEMWEB angezeigte Liste anzupassen
create
locationMap fügt ein vorkonfiguriertes weblink Device hinzu, welches eine Google Map anzeigt, sofern die Readings locationLat+locationLong vorhanden sind.
wakeuptimer fügt diverse Vorkonfigurationen auf Basis von RESIDENTS Toolkit hinzu. Siehe separate Sektion in der RESIDENTS Modul Kommandoreferenz.
Hinweis: Sofern der Zugriff auf administrative set-Kommandos (-> create) eingeschränkt werden soll, kann in einer FHEMWEB Instanz das Attribut allowedCommands ähnlich wie 'set,set-user' erweitert werden.
Die Zeichenfolge 'set-user' stellt dabei sicher, dass beim Zugriff auf FHEM über diese FHEMWEB Instanz nur nicht-administrative set-Kommandos ausgeführt werden können.
Mögliche Status und ihre Bedeutung
Dieses Modul unterscheidet 6 verschiedene Status:
home - Mitbewohner ist zu Hause und wach
gotosleep - Mitbewohner ist auf dem Weg ins Bett
asleep - Mitbewohner schläft
awoken - Mitbewohner ist gerade aufgewacht
absent - Mitbewohner ist momentan nicht zu Hause, wird aber bald zurück sein
none - Gast Device ist deaktiviert
Zusammenhang zwischen Anwesenheit/Presence und Aufenthaltsort/Location
Unter bestimmten Umständen führt der Wechsel des Status auch zu einer Änderung des Readings 'location'.
Wannimmer die Anwesenheit (bzw. das Reading 'presence') von 'absent' auf 'present' wechselt, wird 'location' auf 'home' gesetzt. Sofern das Attribut rg_locationHome gesetzt ist, wird die erste Lokation daraus anstelle von 'home' verwendet.
Wannimmer die Anwesenheit (bzw. das Reading 'presence') von 'present' auf 'absent' wechselt, wird 'location' auf 'underway' gesetzt. Sofern das Attribut rg_locationUnderway gesetzt ist, wird die erste Lokation daraus anstelle von 'underway' verwendet.
Auto-Status 'gone'
Immer wenn ein Mitbewohner auf 'absent' gesetzt wird, wird ein Zähler gestartet, der nach einer bestimmten Zeit den Status automatisch auf 'gone' setzt.
Der Standard ist nach 16 Stunden.
Dieses Verhalten kann über das Attribut rg_autoGoneAfter angepasst werden.
Anwesenheit mit anderen GUEST oder ROOMMATE Devices synchronisieren
Wenn Sie immer zusammen mit anderen Mitbewohnern oder Gästen das Haus verlassen oder erreichen, können Sie ihren Status ganz einfach auf andere Mitbewohner übertragen.
Durch das Setzen des Attributs rg_PassPresenceTo folgen die dort aufgeführten Mitbewohner ihren eigenen Statusänderungen nach 'home', 'absent' oder 'gone'.
Bitte beachten, dass Mitbewohner mit dem aktuellen Status 'none' oder 'gone' (im Falle von ROOMMATE Devices) nicht beachtet werden.
Zusammenhang zwischen Aufenthaltsort/Location und Anwesenheit/Presence
Unter bestimmten Umständen hat der Wechsel des Readings 'location' auch einen Einfluss auf den tatsächlichen Status.
Immer wenn eine Lokation mit dem Namen 'home' gesetzt wird, wird auch der Status auf 'home' gesetzt, sofern die Anwesenheit bis dahin noch auf 'absent' stand. Sofern das Attribut rg_locationHome gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'home' aus.
Immer wenn eine Lokation mit dem Namen 'underway' gesetzt wird, wird auch der Status auf 'absent' gesetzt, sofern die Anwesenheit bis dahin noch auf 'present' stand. Sofern das Attribut rg_locationUnderway gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'underway' aus. Diese Lokationen werden auch nicht in das Reading 'lastLocation' übertragen.
Immer wenn eine Lokation mit dem Namen 'wayhome' gesetzt wird, wird das Reading 'wayhome' auf '1' gesetzt, sofern die Anwesenheit zu diesem Zeitpunkt 'absent' ist. Sofern das Attribut rg_locationWayhome gesetzt wurde, so führt das VERLASSEN einer dort aufgeführten Lokation ebenfalls dazu, dass das Reading 'wayhome' auf '1' gesetzt wird. Es gibt also 2 Möglichkeiten den Nach-Hause-Weg-Indikator zu beeinflussen (implizit und explizit).
Die Ankunft zu Hause setzt den Wert von 'wayhome' zurück auf '0'.
Wenn Sie auch das GEOFANCY Modul verwenden, können Sie das Reading 'location' ganz einfach über GEOFANCY Ereignisse aktualisieren lassen. Definieren Sie dazu einen NOTIFY-Trigger wie diesen:
define n_rg_Manfred.location notify geofancy:currLoc_Manfred.* set rg_Manfred:FILTER=location!=$EVTPART1 location $EVTPART1
Durch das Anlegen von Geofencing-Zonen mit den Namen 'home' und 'wayhome' in der iOS App werden zukünftig automatisch alle Statusänderungen wie oben beschrieben durchgeführt.
Attribute
rg_autoGoneAfter - Anzahl der Stunden, nach denen sich der Status automatisch auf 'gone' ändert, wenn der aktuellen Status 'absent' ist; Standard ist 36 Stunden
rg_geofenceUUIDs - Mit Komma getrennte Liste von Geräte UUIDs, die ihren Standort über GEOFANCY aktualisieren. Vermeidet zusätzliche notify/DOIF/watchdog Geräte und kann als Ersatz für das GEOFANCY attribute devAlias dienen. (hier ehr als eine UUID/Device zu hinterlegen ist eher keine gute Idee da die Lokation dann womöglich anfängt zu springen)
rg_lang - überschreibt globale Spracheinstellung; hilft beim setzen von Device Attributen, um FHEMWEB Anzeigetext zu übersetzen
rg_locationHome - hiermit übereinstimmende Lokationen werden als zu Hause gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'home'
rg_locationUnderway - hiermit übereinstimmende Lokationen werden als unterwegs gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'underway'
rg_locationWayhome - das Verlassen einer Lokation, die hier aufgeführt ist, lässt das Reading 'wayhome' auf '1' setzen; mehrere Einträge durch Leerzeichen trennen; Standard ist "wayhome"
rg_locations - Liste der in FHEMWEB anzuzeigenden Lokationsauswahlliste in FHEMWEB; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
rg_moodDefault - die Stimmung, die nach Ankunft zu Hause oder nach dem Statuswechsel von 'awoken' auf 'home' gesetzt werden soll
rg_moodSleepy - die Stimmung, die nach Statuswechsel zu 'gotosleep' oder 'awoken' gesetzt werden soll
rg_moods - Liste von Stimmungen, wie sie in FHEMWEB angezeigt werden sollen; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
rg_noDuration - deaktiviert die kontinuierliche, nicht Event-basierte Berechnung der Zeitspannen (siehe Readings durTimer*)
rg_passPresenceTo - synchronisiere die Anwesenheit mit anderen GUEST oder ROOMMATE Devices; mehrere Devices durch Leerzeichen trennen
rg_presenceDevices - übernehmen des presence Status von einem anderen FHEM Device. Bei mehreren Devices diese mit Komma trennen, um ein Update des GUEST Devices auszulösen, sobald ALLE Devices entweder absent oder present sind. Optional kann auch durch : abgetrennt ein Reading Name angegeben werden, ansonsten werden die Readings presence und state berücksichtigt.
rg_realname - wo immer GUEST den richtigen Namen verwenden möchte nutzt es den Wert des Attributs alias oder group; Standard ist group
rg_showAllStates - die Status 'asleep' und 'awoken' sind normalerweise nicht immer sichtbar, um einen einfachen Zubettgeh-Prozess über das devStateIcon Attribut zu ermöglichen; Standard ist 0
rg_states - Liste aller in FHEMWEB angezeigter Status; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Status führen zu Fehlern
rg_wakeupDevice - Referenz zu versklavten DUMMY Geräten, welche als Wecker benutzt werden (Teil von RESIDENTS Toolkit's wakeuptimer)
Generierte Readings/Events:
durTimerAbsence - Timer, der die Dauer der Abwesenheit in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
durTimerAbsence_cr - Timer, der die Dauer der Abwesenheit in Computer lesbarem Format anzeigt (Minuten)
durTimerPresence - Timer, der die Dauer der Anwesenheit in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
durTimerPresence_cr - Timer, der die Dauer der Anwesenheit in Computer lesbarem Format anzeigt (Minuten)
durTimerSleep - Timer, der die Schlafdauer in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
durTimerSleep_cr - Timer, der die Schlafdauer in Computer lesbarem Format anzeigt (Minuten)
lastArrival - Zeitstempel der letzten Ankunft zu Hause
lastAwake - Zeitstempel des Endes des letzten Schlafzyklus
lastDeparture - Zeitstempel des letzten Verlassens des Zuhauses
lastDurAbsence - Dauer der letzten Abwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
lastDurAbsence_cr - Dauer der letzten Abwesenheit in Computer lesbarem Format (Minuten)
lastDurPresence - Dauer der letzten Anwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
lastDurPresence_cr - Dauer der letzten Anwesenheit in Computer lesbarem Format (Minuten)
lastDurSleep - Dauer des letzten Schlafzyklus in normal lesbarem Format (Stunden:Minuten:Sekunden)
lastDurSleep_cr - Dauer des letzten Schlafzyklus in Computer lesbarem Format (Minuten)
lastLocation - der vorherige Aufenthaltsort
lastMood - die vorherige Stimmung
lastSleep - Zeitstempel des Beginns des letzten Schlafzyklus
lastState - der vorherige Status
lastWakeup - Zeit der letzten Wake-up Timer Ausführing
lastWakeupDev - Device Name des zuletzt verwendeten Wake-up Timers
location - der aktuelle Aufenthaltsort
mood - die aktuelle Stimmung
nextWakeup - Zeit der nächsten Wake-up Timer Ausführung
nextWakeupDev - Device Name des als nächstes ausgefährten Wake-up Timer
presence - gibt den zu Hause Status in Abhängigkeit des Readings 'state' wieder (kann 'present' oder 'absent' sein)
state - gibt den aktuellen Status wieder
wakeup - hat den Wert '1' während ein Weckprogramm dieses Bewohners ausgeführt wird
wayhome - abhängig vom aktullen Aufenthaltsort, kann der Wert '1' werden, wenn die Person auf dem weg zurück nach Hause ist
Die folgenden Readings werden auf '-' gesetzt, sobald der Status auf 'none' steht:
lastArrival, lastDurAbsence, lastLocation, lastMood, location, mood
Zusammen mit dem Device GardenaSmartDevice stellt dieses FHEM Modul die Kommunikation zwischen der GardenaCloud und Fhem her. Es können damit Rasenmäher, Bewässerungscomputer und Bodensensoren überwacht und gesteuert werden
Das Perl-Modul "SSL Packet" wird benötigt.
Unter Debian (basierten) System, kann dies mittels "apt-get install libio-socket-ssl-perl" installiert werden.
Das Gardena-Gateway und alle damit verbundenen Geräte und Sensoren müssen vorab in der GardenaApp eingerichtet sein.
Define
define <name> GardenaSmartBridge
Beispiel:
define Gardena_Bridge GardenaSmartBridge
Das Bridge Device wird im Raum GardenaSmart angelegt und danach erfolgt das Einlesen und automatische Anlegen der Geräte. Von nun an können die eingebundenen Geräte gesteuert werden. Änderungen in der APP werden mit den Readings und dem Status syncronisiert.
Readings
address - Adresse, welche in der App eingetragen wurde (Langversion)
authorized_user_ids -
city - PLZ, Stadt
devices - Anzahl der Geräte, welche in der GardenaCloud angemeldet sind (Gateway zählt mit)
lastRequestState - Letzter abgefragter Status der Bridge
latitude - Breitengrad des Grundstücks
longitude - Längengrad des Grundstücks
name - Name für das Grundstück – Default „My Garden“
state - Status der Bridge
token - SessionID
zones -
set
getDeviceState - Startet eine Abfrage der Daten.
getToken - Holt eine neue Session-ID
gardenaAccountPassword - Passwort, welches in der GardenaApp verwendet wurde
deleteAccountPassword - l&oml;scht das Passwort aus dem Passwortstore
Attribute
debugJSON - JSON Fehlermeldungen
disable - Schaltet die Datenübertragung der Bridge ab
interval - Abfrageinterval in Sekunden (default: 300)
gardenaAccountEmail - Email Adresse, die auch in der GardenaApp verwendet wurde
Zusammen mit dem Device GardenaSmartDevice stellt dieses FHEM Modul die Kommunikation zwischen der GardenaCloud und Fhem her.
Wenn das GardenaSmartBridge Device erzeugt wurde, werden verbundene Geräte automatisch erkannt und in Fhem angelegt.
Von nun an können die eingebundenen Geräte gesteuert werden. Änderungen in der APP werden mit den Readings und dem Status syncronisiert.
Readings
battery-charging - Ladeindikator (0/1) oder mit neuerer Firmware (false/true)
battery-level - Ladezustand der Batterie in Prozent
battery-rechargeable_battery_status - Zustand der Batterie (Ausser Betrieb/Kritischer Batteriestand, wechseln Sie jetzt/Niedrig/oK)
device_info-category - Eigenschaft des Gerätes (Mäher/Bewässerungscomputer/Bodensensor)
device_info-last_time_online - Zeitpunkt der letzten Funkübertragung
device_info-manufacturer - Hersteller
device_info-product - Produkttyp
device_info-serial_number - Seriennummer
device_info-sgtin -
device_info-version - Firmware Version
firmware-firmware_command - Firmware Kommando (Nichts zu tun/Firmwareupload unterbrochen/Firmwareupload/nicht unterstützt)
firmware-firmware_status - Firmware Status
firmware-firmware_update_start - Firmwareupdate (0/1) oder mit neuerer Firmware (false/true)
firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
firmware-inclusion_status - Einbindungsstatus
internal_temperature-temperature - Interne Geräte Temperatur
mower-error - Aktuelle Fehler Meldung
Kein Fehler
Außerhalb des Arbeitsbereichs
Kein Schleifensignal
Falsches Schleifensignal
Problem Schleifensensor, vorne
Problem Schleifensensor, hinten
Eingeschlossen
Steht auf dem Kopf
Niedriger Batteriestand
Batterie ist leer
Kein Antrieb
Angehoben
Eingeklemmt in Ladestation
Ladestation blockiert
Problem Stoßsensor hinten
Problem Stoßsensor vorne
Radmotor rechts blockiert
Radmotor links blockiert
Problem Antrieb, rechts
Problem Antrieb, links
Schneidsystem blockiert
Fehlerhafte Verbindung
Standardeinstellungen
Elektronisches Problem
Problem Ladesystem
Kippsensorproblem
Rechter Radmotor überlastet
Linker Radmotor überlastet
Ladestrom zu hoch
Vorübergehendes Problem
SK 1 nicht gefunden
SK 2 nicht gefunden
SK 3 nicht gefunden
Problem die Ladestation zu finden
Kalibration des Suchkabels beendet
Kalibration des Suchkabels fehlgeschlagen
Kurzzeitiges Batterieproblem
Batterieproblem
Alarm! Mäher ausgeschalten
Alarm! Mäher gestoppt
Alarm! Mäher angehoben
Alarm! Mäher gekippt
Verbindung geändert
Verbindung nicht geändert
COM board nicht verfügbar
Rutscht
mower-manual_operation - Manueller Betrieb (0/1) oder mit neuerer Firmware (false/true)
mower-override_end_time - Zeitpunkt wann der manuelle Betrieb beendet ist
mower-source_for_next_start - Grund für den nächsten Start
Kein Grund
Mäher wurde geladen
SensorControl erreicht
Wochentimer erreicht
Stoppuhr Timer
Undefiniert
mower-status - Mäher Status (siehe state)
mower-timestamp_next_start - Zeitpunkt des nächsten geplanten Starts
radio-connection_status - Status der Funkverbindung
radio-quality - Indikator für die Funkverbindung in Prozent
radio-state - radio state (schlecht/schwach/gut/Undefiniert)
state - Staus des Mähers
Pausiert
Mähen
Suche Ladestation
Lädt
Mähen
Wird aktualisiert ...
Wird eingeschaltet ...
Geparkt nach Zeitplan
Geparkt
Der Mäher ist ausgeschaltet
Deaktiviert. Abdeckung ist offen oder PIN-Code erforderlich
Unbekannter Status
Fehler
Neustart ...
Deaktiviert. Manueller Start erforderlich
Manuelles Mähen
Geparkt durch SensorControl
Abgeschlossen
Attribute
readingValueLanguage - Änderung der Sprache der Readings (de,en/wenn nichts gesetzt ist, dann Englisch es sei denn deutsch ist als globale Sprache gesetzt)
model -
set
parkUntilFurtherNotice - Parken des Mähers unter Umgehung des Zeitplans
parkUntilNextTimer - Parken bis zum nächsten Zeitplan
Das GasCalculator Modul berechnet den Gas - Verbrauch und den verbundenen Kosten von einem oder mehreren Gas-Zählern.
Es ist kein eigenes Zählermodul sondern benötigt eine Regular Expression (regex or regexp) um das Reading mit den Zähl-Impulse von einem oder mehreren Gaszählern zu finden.
Sobald das Modul in der fhem.cfg definiert wurde, reagiert das Modul auf jedes durch das regex definierte event wie beispielsweise ein myOWDEVICE:counter.* etc.
Das GasCalculator Modul berechnet augenblickliche, historische statistische und vorhersehbare Werte von einem oder mehreren Gas-Zählern und erstellt die entsprechenden Readings.
Um zu verhindern, dass man bis zu 12 Monate warten muss, bis alle Werte der Realität entsprechen, müssen die Readings <DestinationDevice>_<SourceCounterReading>_Vol1stDay, <DestinationDevice>_<SourceCounterReading>_Vol1stMonth, <DestinationDevice>_<SourceCounterReading>_Vol1stYear und <DestinationDevice>_<SourceCounterReading>_Vol1stMeter entsprechend mit dem setreading - Befehl korrigiert werden.
Diese Werte findet man unter Umständen auf der letzten Gas-Rechnung. Andernfalls dauert es bis zu 24h für die täglichen, 30 Tage für die monatlichen und bis zu 12 Monate für die jährlichen Werte bis diese der Realität entsprechen.
Define
define <name> GasCalculator <regex>
<name> :
Der Name dieses Berechnungs-Device. Empfehlung: "myGasCalculator".
<regex> :
Eine gültige Regular Expression (regex or regexp) von dem Event wo der Zählerstand gefunden werden kann
Die set - Funktion erlaubt individuelle Readings zu verändern um beispielsweise nach einem Stromausfall Werte zu korrigieren.
Die set - Funktion funktioniert nur für Readings welche im CalculatorDevice gespeichert wurden.
Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit set - Befehl gesetzt werden.
Get
Die get - Funktion liefert nur den Wert des jeweiligen Readings zurück.
Die get - Funktion funktioniert nur für Readings welche im CalculatorDevice gespeichert wurden.
Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit get - Befehl ausgelesen werden.
Attributes
Sollten die unten ausfeg&auuml;hrten Attribute bei der Definition eines entsprechenden Gerätes nicht gesetzt sein, so werden sie vom Modul mit Standard Werten automatisch gesetzt
Zusätzlich können die globalen Attribute wie room verwendet werden.
BasicPricePerAnnum :
Eine gültige float Zahl für die jährliche Grundgebühr in der gewählten Währung für die Gas-Versorgung zum End-Verbraucher.
Dieser Wert stammt vom Gas-Zulieferer und steht auf der Gas-Rechnung.
Der Standard Wert ist 0.00
Currency :
Eines der vordefinerten Währungssymbole: [€,£,$].
Der Standard Wert ist €
disable :
Deaktiviert das devive. Das Modul wird nicht mehr auf die Events reagieren die durch die Regular Expression definiert wurde.
Der Standard Wert ist 0 = ativiert.
GasCounterOffset :
Eine gültige float-Zahl für den Volumen Unterschied = Offset (Nicht der Unterschied zwischen Zählimpulsen) zwischen dem am mechanischen Gaszähler und dem angezeigten Wert im Reading dieses Device.
Der Offset-Wert wird wie folgt ermittelt: VOffset = VMechanisch - VModule
Der Standard-Wert ist 0.00
GasCubicPerCounts :
Eine gültige float-Zahl für die Menge an Zählimpulsen pro gewählter Volumen-Grundeinheit.
Der Wert ist durch das mechanische Zählwerk des Gaszählers vorgegeben. GasCubicPerCounts = 0.01 bedeutet, dass jeder Zählimpuls ein hunderstel der gewählten Volumengrundeinheit.
Der Standard-Wert ist 0.01
GasNominalHeatingValue :
Eine gültige float-Zahl für den Heizwert des gelieferten Gases in [kWh/ gewählter Volumeneinheit].
Dieser Wert stammt vom Gas-Zulieferer und steht auf der Gas-Rechnung.
Der Standard-Wert ist 10.00
GaszValue :
Eine gültige float-Zahl für die Zustandszahl des Gases basierend auf der Relation based on the local installation of the mechganical gas meter in relation of the gas providers main supply station.
Dieser Wert stammt vom Gas-Zulieferer und steht auf der Gas-Rechnung.
Der Standard-Wert ist 1.00
GasPricePerKWh :
Eine gültige float-Zahl für den Gas Preis in der gewählten Währung pro kWh.
Dieser Wert stammt vom Gas-Zulieferer und steht auf der Gas-Rechnung.
Der Standard-Wert ist 0.0654
MonthlyPayment :
Eine gültige float-Zahl für die monatlichen Abschlagszahlungen in der gewählten Währung an den Gas-Lieferanten.
Der Standard-Wert ist 0.00
MonthOfAnnualReading :
Eine gültige Ganz-Zahl für den Monat wenn der mechanische Gas-Zähler jedes Jahr durch den Gas-Lieferanten abgelesen wird.
Der Standard-Wert ist 5 (Mai)
ReadingDestination :
Eines der vordefinerten Device als Ziel der errechneten Readings: [CalculatorDevice,CounterDevice].
Das CalculatorDevice ist das mit diesem Modul erstellte Device.
Das CounterDevice ist das Device von welchem der mechanische Zähler ausgelesen wird.
Der Standard-Wert ist CalculatorDevice.
Volume :
Eine der vordefinierten Volumensymbole für die Volumeneinheit [m³,ft³].
Der Standard-Wert ist m³
Readings
Sobald das Device in der Lage war mindestens 2 Werte des Zählers einzulesen, werden automatisch die entsprechenden Readings erzeugt:
Der Platzhalter <DestinationDevice> steht für das Device, welches man in dem Attribut ReadingDestination oben festgelegt hat. Dieser Platzhalter bleibt leer, sobald man dort CalculatorDevice ausgewählt hat.
Der Platzhalter <SourceCounterReading> steht für das Reading welches mit der Regular Expression definiert wurde.
Finanzielle Reserve basierend auf den Abschlagszahlungen die jeden Monat an den Gas-Versorger gezahlt werden. Bei negativen Werten ist von einer Nachzahlung auszugehen.
Das HEATRONIC Modul wertet die Nachrichten aus, die über den HT-Bus von einer Junkers-Heizung übertragen werden.
Mögliche Adapter werden unter http://www.mikrocontroller.net/topic/317004 vorgestellt.
interval_ch_time, interval_ch_Tflow_measured, interval_dhw_Tmeasured, interval_dhw_Tcylinder
Intervall (in Sekunden) zum Update der entsprechenden Werte
minDiff_ch_Tflow_measured
Minimaldifferenz (in Grad, z.B. 0.2) zum Update der entsprechenden Werte
In Kombination mit HEOSMaster and HEOSPlayer steuert dieses FHEM Modul das Denon Multiroom-Soundsystem mit Hilfe einer telnet Socket-Verbindung und dem HEOS Command Line Interface (CLI).
Nachdem der Master einmal angelegt ist werden die Player und Gruppierungen des Systems automatisch erkannt und in FHEM angelegt. Von da an können die Player und Gruppierungen gesteuert werden und Veränderungen in der HEOS App oder am Reveiver werden mit dem Status und den Media Readings der Player und Gruppierungen synchronisiert.
Gruppierungen können aus einem Player heraus mit "groupWithMember" erzeugt werden.
Beispiel:
set Wohnzimmer groupWithMember Küche
... erzeugt eine Gruppierung namens "Wohnzimmer+Küche" mit dem Player "Wohnzimmer" als Leader und dem Player "Küche" als Mitglied.
Readings
channel - Nr des gerade abgespielten Favoriten
currentAlbum - Name des gerade abgespielten Albums
currentArtist - Name des gerade abgespielten Künstlers
currentImageUrl - URL des Albumcovers, Senderlogos, etc.
currentMedia - Medientyp des gerade abgespielten Streams (song|station|genre|artist|album|container)
currentMid - media ID
currentQid - queue ID
currentSid - source ID
currentStation - Name des gerade abgespielten Senders
currentTitle - Name des gerade abgespielten Titels
In Kombination mit HEOSPlayer und HEOSGroup steuert dieses FHEM Modul das Denon Multiroom-Soundsystem mit Hilfe einer telnet Socket-Verbindung und dem HEOS Command Line Interface (CLI).
Voraussetzung
Installation der folgenden Pakete: apt-get install libjson-perl libnet-telnet-perl libencode-perl
Define
define <name> HEOSMaster <IP address>
Example:
define MyMasterBox HEOSMaster 192.168.178.67
<IP address> ist die IP-Adresse des HEOS Receivers oder der HEOS Box. Das Master Device wird im Raum HEOS angelegt und danach erfolgt das Einlesen und automatische Anlegen der Player.
Von nun an können die Player gesteuert werden. Außerdem wird der Status und die Media Readings der Player entsprechend geändert, wenn man in der HEOS-App oder direkt am Receiver etwas ändert.
Readings
enableChangeEvents - Status der Event Wiedergabe auf dem CLI Master
heosAccount - signed_out | signed_in as <HEOSAccount>
lastCommand - zuletzt ausgeführtes Kommando
lastPlayerId - Player-Id des Geräts, welches das Kommando ausgeführt hat
lastPlayerName - Player-Name des Geräts, welches das Kommando ausgeführt hat
lastResult - Ergebnis des zuletzt ausgeführten Kommandos
state - Status des HEOSMaster
set
checkAccount - prüft das HEOS Konto
enableChangeEvents - aktiviert die Event Wiedergabe auf dem CLI Master
getGroups - holt eine Liste aller Gruppen und legt die Devices an, sofern noch nicht geschehen
getPlayers - holt eine Liste aller Player und legt die Devices an, sofern noch nicht vorhanden
password - setzt das Passwort des HEOS Kontos
reboot - rebootet das CLI Interface am Master
reopen - versucht eine neue Socket-Verbindung zum CLI Master aufzubauen
In Kombination mit HEOSMaster and HEOSGroup steuert dieses FHEM Modul das Denon Multiroom-Soundsystem mit Hilfe einer telnet Socket-Verbindung und dem HEOS Command Line Interface (CLI).
Nachdem der Master einmal angelegt ist werden die Player und Gruppierungen des Systems automatisch erkannt und in FHEM angelegt. Von da an können die Player und Gruppierungen gesteuert werden und Veränderungen in der HEOS App oder am Reveiver werden mit dem Status und den Media Readings der Player und Gruppierungen synchronisiert.
Readings
channel - Nr des gerade abgespielten Favoriten
currentAlbum - Name des gerade abgespielten Albums
currentArtist - Name des gerade abgespielten Künstlers
currentImageUrl - URL des Albumcovers, Senderlogos, etc.
currentMedia - Medientyp des gerade abgespielten Streams (song|station|genre|artist|album|container)
currentMid - media ID
currentQid - queue ID
currentSid - source ID
currentStation - Name des gerade abgespielten Senders
currentTitle - Name des gerade abgespielten Titels
error - letzte Fehlermeldung
gid - ID der Gruppe, in der der Player Mitglied ist
ip-address - IP-Adresse des Players
lineout - lineout level type (variable|Fixed)
model - Modell des HEOS Lautsprechers (z.B. HEOS 1)
mute - Player mute Status (on|off)
name - Name des Players (aus der App übernommen)
Das HMLAN ist das fhem-Modul für den eQ-3 HomeMatic LAN Configurator welcher als IO
in FHEM fungiert. Siehe HM-CFG-LAN_LAN_Konfigurations-Adapter zur Konfiguration.
Eine weitere Beschreibung, wie der HomeMatic USB Konfigurations-Adapter
(HM-CFG-USB)
verwendet werden kann, ist unter dem angegebenen Link zu finden.
Dieses Gerät kann gleichzeitig mit einer CCU und (nur lesend) mit FHEM verwendet werden.
Hierfür ist wie folgt vorzugehen:
Starten des fhem/contrib/tcptee.pl Programms
Umleiten der CCU zum local host
Ausschalten der LAN-Encryption auf der CCU für den LAN-Configurator
Setzen des dummy Attributes für das HMLAN Gerät in FHEM
Der Standard-Port lautet: 1000.
Wenn keine IP-Adresse angegeben wird, wird auch kein Gerät geöffnet; man kann
also auch ohne angeschlossene Hardware experimentieren.
reassignIDs
Synchronisiert die im HMLAN eingetragenen IDs mit der von FHEM verwalteten Liste.
I.a. findet dies automatisch statt, koennte aber in reset Fällen abweichen.
logIDs
Schaltet selektives Aufzeichnen der HMLAN Meldungen ein. Eine Liste der
HMIds oder Namen, die aufgezeichnet werden sollen, können - getrennt durch
Kommata - eingegeben werden.
Die Attribute erlauben ausschließlich die Angabe von Device-IDs und keine Kanal-IDs.
Die Kanal-IDs werden automatisch in Device-IDs umgewandelt. all zeichnet die Original-Meldungen für alle HMIds auf. sys zeichnet alle systemrelevanten Meldungen wie keep-alive auf. all,sys damit wird die Aufzeichnung aller Meldungen eingeschaltet
loadLevel
loadlevel mapped den Auslastungslevel auf die Namen in ein Reading.
0:low,30:mid,40:batchLevel,90:high,99:suspended
Der batchLevel Wert wird auf 40 gesetzt., sollte er fehlen.
Das ist der Levelbei dem die Hintergrundnachrichten z.B. durch autoReadReg gestoppt werden
hmKey5
AES Schlüssel für den HMLAN Adapter.
Der Schlüssel wird in eine hash-Zeichenfolge umgewandelt. Wenn eine Hash-Folge unmittelbar
eingegeben wird, erfolgt keine Umwandlung, sondern eine eine direkte Benutzung der Hash-Folge.
Deshalb kann der Originalschlüssel auch nicht entschlüsselt werden.
respTime
Definiert die maximale Antwortzeit des HMLAN-Adapters in Sekunden. Standardwert ist 1 Sekunde.
Längere Zeiten können übergangsweise in langsamen und instabilen Systemen oder in
LAN-Konfigurationen verwendet werden.
wdTimer
Zeit in Sekunden, um den HMLAN zu triggern. Werte zwischen 5 und 25 sind zulässig.
Standardwert ist 25 Sekunden.
Es wird davon abgeraten diesen Timer zu verändern. Wenn Probleme mit
HMLAN-Abbrüchen bestehen wird empfohlen die Ursache des Problems zu finden
und zu beheben und nicht die Symptom.
hmLanQlen
Definiert die Länge der Warteschlange des HMLAN Interfaces. Es ist deshalb die Anzahl
der gleichzeitig zu sendenden Meldungen. Erhöhung des Wertes kann eine Steigerung der
Übertragungsgeschwindigkeit verursachen, ebenso können wiederholte Aussendungen
Datenverlust bewirken.
Die Auswirkungen werden durch die Ereignisse im Protokoll sichtbar.
1 - ist ein Wert auf der sicheren Seite und deshalb der Standardwert
5 - ist eine kritische Länge und verursacht wahrscheinlich Meldungsverluste
assignedIDsCnt
Anzahl der IDs, die von FHEM einem HMLAN zugeordnet sind.
Sollte die Anzahl von der im HMLAN abweichen wird dies als 'reported' gemeldet.
Wird eine Abweichung festgestellt kann man mit dem Kommando assignIDs das HMLAN synchronisieren.
msgKeepAlive
Güte der keep-alive Meldungen. dlyMax: maximale Verzögerungsdauer zwischen dem geplanten Meldungszeitpunkt
und der tatsächlich gesendeten Meldung. bufferMin: minimal verfügbarer Speicher bevor HMLAN voraussichtlich
unterbrochen wird bedingt durch die fehlende keepAlive Meldung. bufferMin
wird auf 30 Sekunden zurückgesetzt wenn das Attribut wdTimer verändert wird.
Wenn dlyMax hoch ist (mehrere Sekunden) oder bufferMin geht gegen "0" (normal ist 4)
leidet das System unter den internen Verzögerungen. Den Gründen hierfür muss
nachgegangen werdensystem. Als schnelle Lösung kann der Wert für wdTimer
verkleinert werden, um HMLAN schneller zu triggern.
msgLoadCurrent
Aktuelle Funklast des HMLAN. Da HMLAN nur eine begrenzte Kapzität je Stunde hat
Telegramme abzusetzen stellt es bei 100% das Senden ein. Siehe auch
loadLevel
msgParseDly
Kalkuliert die Verzögerungen einer Meldung vom Zeitpunkt des Abschickens im HMLAN
bis zu Verarbeitung in FHEM. Deshalb ist dies ein Indikator für die Leistungsfähigkeit
des Systems von FHEM.
Der Hauscode kann sich ändern wenn die Batterie gewechselt wird.
Um sich das Leben einfacher zu machen kann man ein "Wildcard"
(Platzhalter) Device für jeden Typ von HMS Gerät anlegen.
Zuerst wird die echte Device-ID geprüft, danach die Wildcard-ID.
Wildcards sind:
1000 für das HMS100-TF
1001 für das HMS100-T
1002 für das HMS100-WD
1003 für das RM100-2
1004 für das HMS100-TFK
1006 für das HMS100-MG
1008 für das HMS100-CO
100e für das HMS100-FIT
Einige "Batteriestand niedrig" Benachrichtigungen sind noch nicht
implemeniert (RM100, HMS100WD).
Die Installation ist zu testen bevor man sich auf die
Funktionalität verlässt.
Das Modul HMUARTLGW ermöglicht die Anbindung des eQ-3 HomeMatic Wireless
LAN Gateways (HM-LGW-O-TW-W-EU) und des eQ-3 HomeMatic UART Moduls
(HM-MOD-UART), welches Teil des HomeMatic-Moduls für den Raspberry Pi
(HM-MOD-RPI-PCB) ist.
Define
define <name> HMUARTLGW <device>
Der Parameter <device> hängt vom eingesetzten Gerätetyp ab:
HM-MOD-UART: <device> ist die zu benutzende serielle
Schnittstelle. Die Baudrate ist fest auf 115200 eingestellt und muss
nicht angegeben werden.
Falls der HM-MOD-UART über einen Seriell-zu-Ethernet-Konverter
mit dem Netzwerk verbunden ist, muss die Definition in einem
an URLs angelehnten Format geschehen
(uart://ip:port).
HM-LGW-O-TW-W-EU: <device> gibt die IP-Adresse oder den
Hostnamen des Gateways an, optional gefolgt von einem Doppelpunkt
und der Portnummer des BidCos-Ports (Default falls nicht angegeben:
2000).
Beispiele:
Lokaler HM-MOD-UART an der Schnittstelle /dev/ttyAMA0: define myHmUART HMUARTLGW /dev/ttyAMA0
LAN Gateway mit der IP-Adresse 192.168.42.23: define myHmLGW HMUARTLGW 192.168.42.23
Entfernter HM-MOD-UART unter Verwendung von socat auf einem Raspberry Pi: define myRemoteHmUART HMUARTLGW uart://192.168.42.23:12345
open
Öffnet die Verbindung zum Gerät und initialisiert es.
reopen
Schlißt und öffnet die Verbindung zum Gerät und re-initialisiert es.
restart
Rebootet das Gerät.
updateCoPro </path/to/firmware.eq3>
Aktualisierung der Koprozessor-Firmware (Reading D-firmware) mit der
angegebenen Datei. Quelle für Firmware-Images (Version 1.4.1,
offizielles eQ-3 Repository):
HM-LGW-O-TW-W-EU: coprocessor_update_hm_only.eq3 (Version 1.4.1)
Bitte zusätzlich sicherstellen, dass die Version der
D-LANfirmware mindestens 1.1.5 beträgt. Um auf diese Version
zu aktualisieren können die eQ-3 CLI Tools (siehe Wiki) oder
der eQ-3 Netfinder genutzt werden. Das passende Image ist:
hm-lgw-o-tw-w-eu_update.eq3 Die Datei hm-lgw-o-tw-w-eu_update.eq3 nicht mit updateCoPro flashen!
Get
assignIDs
Gibt die aktuell diesem IO-Gerät zugeordneten HomeMatic-Geräte
zurück.
Attribute
csmaCa
Aktiviert oder deaktiviert CSMA/CA (Carrier sense multiple access with
collision avoidance), auch bekannt als Listen-Before-Talk.
Default: 0 (deaktiviert)
dummy
Ermöglicht die Definition des Geräts ohne jegliche Interaktion
mit einem physikalischen Gerät.
Default: nicht gesetzt
dutyCycle
Aktiviert oder deaktiviert die Überprüfung des Arbeitszyklus
(1%-Regel) durch das Sendemodul.
Die Abschaltung dieser Funktion kann in verschiedenen Ländern gegen
das Gesetz verstossen, weshalb zuerst die Situation anhand lokaler
Richtlinien zu prüfen ist!
Default: 1 (aktiviert)
lgwPw
AES-Passwort für das eQ-3 HomeMatic Wireless LAN Gateway. Das initiale
Passwort befindet sich auf der Rückseite des Geräts, kann aber
durch den Benutzer geändert werden. Falls die AES gesicherte
Kommunikation aktiviert ist (Auslieferungszustand), muss dieses Attribut
auf den richtigen Wert gesetzt werden, da ansonsten keine Kommunikation
möglich ist. Zusätzlich muss das Perl-Modul Crypt::Rijndael
(stellt den AES-Algorithmus bereit) installiert sein.
loadEvents
Aktiviert die Erzeugung von Log-Nachrichten über die Funklast
des Interfaces (in Prozent der erlaubten Sendezeit).
Default: 0 (deaktiviert)
logIDs
Aktiviert die gezielte Erzeugung von Log-Nachrichten. Der Parameter ist
eine durch Komma getrennte Liste an HMIds oder HM Geräte-/Kanalnamen,
deren Nachrichten aufgezeichnet werden sollen.
all: Zeichnet die Rohnachrichten aller HMIds auf
sys: Zeichnet Systemnachrichten (z.B. Keep-Alive) auf
Um alle möglichen Nachrichten aufzuzeichnen, kann all,sys
genutzt werden.
qLen
Maximale Anzahl an Kommandos in der internen Warteschlange des
HMUARTLGW-Moduls. Neue Kommandos werden verworfen, wenn die Warteschlange
gefüllt ist. Jedes Kommando hat eine Lebensdauer von 3s, sobald es
aktiv verarbeitet wird. Die Verzögerung eines Kommandos beträgt
im schlechtesten Fall also qLen * 3s (3 Minuten mit den Defaulteinstellungen).
Default: 60
Das Modul HMinfo ermöglicht einen Überblick über eQ-3 HomeMatic Geräte, die mittels CUL_HM definiert sind.
Status Informationen und Zähler
HMinfo gibt einen Überlick über CUL_HM Installationen einschliesslich aktueller Zustände.
Readings und Zähler werden aus Performance Gründen nicht automatisch aktualisiert.
Mit dem Kommando update können die Werte aktualisiert werden.
set hm update
Die Webansicht von HMinfo stellt Details über CUL_HM Instanzen mit ungewöhnlichen Zuständen zur Verfügung. Dazu gehören:
Action Detector Status
CUL_HM Geräte und Zustände
Ereignisse im Zusammenhang mit Kommunikationsproblemen
Zähler für bestimmte Readings und Zustände (z.B. battery) - attribut controlled
Zähler für Readings, die auf Fehler hindeuten (z.B. overheat, motorErr) - attribut controlled
Weiterhin stehen HM Kommandos zur Verfügung, z.B. für das Speichern aller gesammelten Registerwerte.
Ein Kommando wird für alle HM Instanzen der kompletten Installation ausgeführt.
Die Ausführung ist jedoch auf die dazugehörigen Instanzen beschränkt.
So wird rssi nur auf Geräte angewendet, da Kanäle RSSI Werte nicht unterstützen.
set <name> <cmd> <filter> [<param>]
wobei sich filter aus Typ und Name zusammensetzt
[-dcasev] [-f <filter>]
Typ
d - device :verwende Gerät
c - channels :verwende Kanal
v - virtual :unterdrücke virtuelle Instanz
p - physical :unterdrücke physikalische Instanz
a - aktor :unterdrücke Aktor
s - sensor :unterdrücke Sensor
e - empty :verwendet das Resultat auch wenn die Felder leer sind
2 - alias :2ter name alias anzeigen
und/oder Name:
-f <filter> :Regulärer Ausdruck (regexp), um die Instanznamen zu filtern
Beispiel:
set hm param -d -f dim state # Zeige den Parameter 'state' von allen Geräten, die "dim" im Namen enthalten
set hm param -c -f ^dimUG$ peerList # Zeige den Parameter 'peerList' für alle Kanäle mit dem Namen "dimUG"
set hm param -dcv expert # Ermittle das Attribut expert für alle Geräte, Kanäle und virtuelle Instanzen
peerCheck[filter]
validiert die Einstellungen der Paarungen (Peers). Hat ein Kanal einen Peer gesetzt, muss dieser auch auf
der Gegenseite gesetzt sein.
peerXref[filter]
erzeugt eine komplette Querverweisliste aller Paarungen (Peerings)
configCheck[filter]
Plausibilitätstest aller HM Einstellungen inklusive regCheck und peerCheck
configChkResult
gibt das Ergebnis eines vorher ausgeführten configCheck zurück
templateList [<name>]
zeigt eine Liste von Vorlagen. Ist kein Name angegeben, werden alle Vorlagen angezeigt
templateUsg <template> [sortPeer|sortTemplate]
Liste der genutzten templates.
template filtert die Einträge nach diesem template
msgStat[filter]
zeigt eine Statistik aller Meldungen der letzen Woche
protoEvents[filter]
vermutlich die wichtigste Auflistung für Meldungsprobleme.
Informationen über ausstehende Kommandos und fehlgeschlagene Sendevorgänge
für alle Geräte in Tabellenform.
Mit clear msgEvents kann die Statistik gelöscht werden.
rssi [filter]
Statistik über die RSSI Werte aller HM Instanzen.
templateChk[filter] <template> <peer:[long|short]> [<param1> ...]
Verifiziert, ob die Registerwerte mit der Vorlage in Einklang stehen.
Die Parameter sind identisch mit denen aus templateSet.
Wenn kein Peer benötigt wird, stattdessen none verwenden.
Beispiele für die Überprüfung von Einstellungen
set hm templateChk -f RolloNord BlStopUpLg none 1 2 # RolloNord, no peer, parameter 1 and 2 given
set hm templateChk -f RolloNord BlStopUpLg peerName:long # RolloNord peerName, long only
set hm templateChk -f RolloNord BlStopUpLg peerName # RolloNord peerName, long and short
set hm templateChk -f RolloNord BlStopUpLg peerName:all # RolloNord peerName, long and short
set hm templateChk -f RolloNord BlStopUpLg all:long # RolloNord any peer, long only
set hm templateChk -f RolloNord BlStopUpLg all # RolloNord any peer,long and short
set hm templateChk -f Rollo.* BlStopUpLg all # each Rollo* any peer,long and short
set hm templateChk BlStopUpLg # each entities
set hm templateChk # all assigned templates
set hm templateChk sortTemplate # all assigned templates, sort by template
set hm templateChk sortPeer # all assigned templates, sort by peer
archConfig[filter] [<file>]
Führt saveConfig für alle Instanzen aus, sobald sich deren Konfiguration ändert.
Es schont gegenüber saveConfig die Resourcen, da es nur vollständige Konfigurationen sichert.
Die Option -a erzwingt das sofortige Archivieren für alle Geräte, die eine vollständige Konfiguration aufweisen.
loadConfig[filter] [<file>]
Lädt Register und Peers aus einer zuvor mit saveConfig gesicherten Datei.
Es sollte mit Vorsicht verwendet werden, da es Daten zu FHEM hinzufügt, die nicht verifiziert sind.
Readings werden nicht ersetzt, nur fehlende Readings werden hinzugefügt. Der Befehl ist dazu geignet, um Readings
zu erstellen, die schwer zu erhalten sind. Readings von Geräten, die nicht dauerhaft empfangen sondern nur auf Tastendruck
aufwachen (z.B. Türsensoren), können nicht ohne Weiteres gelesen werden.
Daher liegt es in der Verantwortung des Benutzers gültige Werte zu verwenden. Es sollte autoReadReg für Geräte verwendet werden,
die einfach ausgelesen werden können.
Der Befehl aktualisiert lediglich FHEM Readings und Attribute. Die Programmierung des Gerätes wird nicht verändert.
purgeConfig[filter] [<file>]
Bereinigt die gespeicherte Konfigurationsdatei. Durch die kumulative Speicherung der Registerwerte bleiben die
zuletzt gespeicherten Werte erhalten und alle älteren werden gelöscht.
Siehe CUL_HM saveConfig.
verifyConfig[filter] [<file>]
vergleicht die aktuellen Daten mit dem configFile und zeigt unterschiede auf.
Es ist hilfreich wenn man eine bekannt gute Konfiguration gespeichert hat und gegen diese vergleiche will.
Ein purge vorher macht sinn.
Siehe CUL_HM purgeConfig.
tempList[filter][save|restore|verify] [<file>]
Diese Funktion ermöglicht die Verarbeitung von temporären Temperaturlisten für Thermostate.
Die Listen können in Dateien abgelegt, mit den aktuellen Werten verglichen und an das Gerät gesendet werden.
save speichert die aktuellen tempList Werte des Systems in eine Datei.
Zu beachten ist, dass die aktuell in FHEM vorhandenen Werte benutzt werden. Der Benutzer muss selbst sicher stellen,
dass diese mit den Werten im Gerät überein stimmen.
Der Befehl arbeitet nicht kummulativ. Alle evtl. vorher in der Datei vorhandenen Werte werden überschrieben.
restore in der Datei gespeicherte Termperaturliste wird direkt an das Gerät gesendet.
verify vergleicht die Temperaturliste in der Datei mit den aktuellen Werten in FHEM. Der Benutzer muss
selbst sicher stellen, dass diese mit den Werten im Gerät überein stimmen.
status gibt einen Ueberblick aller genutzten template files. Ferner werden vorhandene templates in den files gelistst.
genPlot erzeugt einen Satz Daten um temp-templates graphisch darzustellen
Aus den gegebenen template-file wird ein .log erweitertes file erzeugt welches log-formatierte daten beinhaltet.
Zeitmarken sind auf Beginn 2000 terminiert.
Ein .gplot file wird in der gplt directory erzeugt.
Eine Logfile-entity _Log, falls nicht vorhanden, wird erzeugt.
Eine SVG-entity _SVG, falls nicht vorhanden, wird erzeugt.
entities mittels Komma getrennte Liste der Instanzen für die die nachfolgende Liste bestimmt ist.
Es muss die tatsächlich für die Temperaturliste zuständige Instanz angegeben werden. Bei RTs ist das der Kanal 04,
bei TCs der Kanal 02.
tempList... Zeiten und Temperaturen sind genau wie im Befehl "set tempList" anzugeben
cpRegs <src:peer> <dst:peer>
ermöglicht das Kopieren von Registern, Einstellungen und Verhalten zwischen gleichen Kanälen, bei einem Peer auch
zwischen unterschiedlichen Kanälen. Das Kopieren kann daher sowohl von Gerät zu Gerät, als auch innerhalb eines
Gerätes stattfinden. src:peer ist die Quell-Instanz. Der Peer muss angegeben werden, wenn dessen Verhalten kopiert werden soll. dst:peer ist die Ziel-Instanz.
Beispiel:
set hm cpRegs blindR blindL # kopiert alle Register (list 1) des Kanals von blindR nach blindL einschliesslich z.B. der
Rolladen Fahrzeiten. Register, die den Peer betreffen (list 3/4), werden nicht kopiert.
set hm cpRegs blindR:Btn1 blindL:Btn2 # kopiert das Verhalten der Beziehung Btn1/blindR nach Btn2/blindL
set hm cpRegs blindR:Btn1 blindR:Btn2 # kopiert das Verhalten der Beziehung Btn1/blindR nach Btn2/blindR, hier
innerhalb des Aktors
Einschränkungen:
cpRegs verändert keine Peerings oder liest direkt aus den Geräten. Die Readings müssen daher aktuell sein.
cpRegs kann nur auf identische Gerätemodelle angewendet werden
cpRegs erwartet aktuelle Readings. Dies muss der Benutzer sicher stellen.
templateDef <name> <param> <desc> <reg1:val1> [<reg2:val2>] ...
definiert eine Vorlage. param definiert die Namen der Parameters, die erforderlich sind, um die Vorlage auszuführen.
Diese sind abhängig von der Vorlage und können onTime oder brightnesslevel sein.
Bei einer Liste mehrerer Parameter müssen diese mittels Kommata separiert werden.
param1:param2:param3
Der Parameter del führt zur Löschung der Vorlage. desc eine Beschreibung für die Vorlage reg:val der Name des Registers und der dazugehörige Zielwert.
Wenn das Register zwischen long und short unterscheidet, muss das führende sh oder lg weggelassen werden.
Parameter müssen mit p angegeben werden, p0 für den ersten, p1 für den zweiten usw.
Beispiel
set hm templateDef SwOnCond level:cond "my description" CtValLo:p0 CtDlyOn:p1 CtOn:geLo
set hm templateDef SwOnCond del # lösche template SwOnCond
set hm templateDef SwOnCond fromMaster <masterChannel> <peer:[long|short]># masterKanal mit peer wird als Vorlage genommen
set hm templateDef SwOnCond fromMaster myChannel peerChannel:long
templateSet <entity> <template> <peer:[long|short]> [<param1> ...]
setzt mehrere Register entsprechend der angegebenen Vorlage. Die Parameter müssen entsprechend der Vorlage angegeben werden.
templateSet akkumuliert alle Änderungen und schreibt das Ergebnis gesammelt. entity: ist die Quell-Instanz. Der Peer muss angegeben werden, wenn dessen Verhalten kopiert werden soll. template: eine der vorhandenen Vorlagen peer: [long|short]:falls erforderlich muss der Peer angegeben werden. Wird kein Peer benötigt, '0' verwenden.
Bei einem Peer muss für den Tastendruck long oder short angegeben werden. param: Nummer und Bedeutung des Parameters hängt von der Vorlage ab.
Ein Beispiel könnte sein (theoretisch, ohne die Vorlage anzugeben)
set hm templateSet Licht1 staircase FB1:short 20
set hm templateSet Licht1 staircase FB1:long 100
Einschränkungen:
Der Benutzer muss aktuelle Register/Konfigurationen sicher stellen.
templateSet konfiguriert ggf. nur einzelne Register und keinen vollständigen Satz. Dies hängt vom Design der Vorlage ab.
templateDel <entity> <template> <peer:[long|short]>
entfernt ein Template das mit templateSet eingetragen wurde
templateExe <template>
führt das templateSet erneut aus. Die Register werden nochmals geschrieben, falls sie nicht zum template passen.
x-deviceReplace <oldDevice> <newDevice>
Ersetzen eines alten oder defekten Device. Das neue Ersatzdevice muss kompatibel zum Alten sein - FHEM prüft das nur rudimentär. Der Anwender sollt es sorgsam prüfen.
Das Kommando muss aus Sicherheitsgründen 2-fach ausgeführt werden. Der erste Aufruf wird mit einem CAUTION quittiert. Nach Auslösen den Kommandos ein 2. mal werden die Devices umbenannt und umkonfiguriert. Er werden alle peerings, Register und Templates im neuen Device UND allen peers umgestellt.
ACHTUNG: Nach dem Auslösen kann die Änderung nicht mehr automatisch rückgängig gemacht werden. Manuell ist das natürlich möglich.
Auch ein ückspring auf eine ältere Konfiguration erlaubt KEIN Rückgängigmachen!!!
Sollte das Device und seine Kanäle über Templates definiert sein - also die Registerlisten - kann im Falle von Problemen in der Übertragung - problemlos wieder hergestellt werden.
sumStatus
erzeugt eine Liste von Warnungen. Die zu untersuchenden Readings werden mittels Komma separiert angegeben.
Die Readings werden, so vorhanden, von allen Instanzen ausgewertet, gezählt und getrennt nach Readings mit
gleichem Inhalt ausgegeben.
Beispiel:
Anmerkung: Zähler mit Werten von '0' werden nicht angezeigt. HMinfo findet alle vorhanden Werte selbstständig.
Das Setzen des Attributes ermöglicht einen schnellen Überblick über systemkritische Werte.
sumERROR
Ähnlich sumStatus, jedoch mit dem Fokus auf signifikante Fehler.
Hier können Reading Werte angegeben werden, die dazu führen, dass diese nicht angezeigt werden.
Damit kann beispielsweise verhindert werden, dass der zu erwartende Normalwert oder ein anderer nicht
kritischer Wert angezeigt wird.
Beispiel:
autoUpdate
führt den Befehl periodisch aus.
Beispiel:
attr hm autoUpdate 00:10
führt den Befehl alle 10 Minuten aus
autoArchive
Sobald neue Daten verfügbar sind, wird das configFile aktualisiert.
Für die Aktualisierung ist autoUpdate zwingend erforderlich.
siehe auch archConfig
hmAutoReadScan
definiert die Zeit in Sekunden bis zum nächsten autoRead durch CUL_HM. Trotz dieses Zeitwertes stellt
FHEM sicher, dass zu einem Zeitpunkt immer nur ein Gerät gelesen wird, auch wenn der Minimalwert von 1
Sekunde eingestellt ist. Mit dem Timer kann der Zeitabstand
ausgeweitet werden - bis zu 300 Sekunden zwischen zwei Ausführungen.
Das Herabsetzen erhöht die Funkbelastung, Heraufsetzen erhöht die Wartzezeit.
hmIoMaxDly
maximale Zeit in Sekunden für die CUL_HM Meldungen puffert, wenn das Gerät nicht sendebereit ist.
Ist das Gerät nicht wieder rechtzeitig sendebereit, werden die gepufferten Meldungen verworfen und
IOErr ausgelöst.
Hinweis: Durch die Pufferung kann es vorkommen, dass Aktivität lange nach dem Absetzen des Befehls stattfindet.
Standard ist 60 Sekunden, maximaler Wert ist 3600 Sekunden.
configDir
Verzeichnis für das Speichern und Lesen der Konfigurationsdateien, sofern in einem Befehl nur ein Dateiname ohne
Pfad angegen wurde.
Verwendung beispielsweise bei tempList oder saveConfig
configTempFile<;configTempFile2><;configTempFile3>
Liste der Templfiles (weekplan) welche in HM berücksichtigt werden
Die Files werden kommasepariert eingegeben. Das erste File ist der Default. Dessen Name muss beim Template nicht eingegeben werden.
hmManualOper
auf 1 gesetzt, verhindert dieses Attribut jede automatische Aktion oder Aktualisierung seitens CUL_HM.
hmDefaults
setzt default Atribute fuer HM devices. Mehrere Attribute sind moeglich, Komma separiert.
Beispiel:
attr hm hmDefaults hmProtocolEvents:0_off,rssiLog:0
autoLoadArchive
das Register Archive sowie Templates werden nach reboot automatischgeladen.
Siehe loadConfig fuer details
I_autoReadPend: Info: Liste der Instanzen, für die das Lesen von Konfiguration und Status ansteht,
üblicherweise ausgelöst durch autoReadReg.
ERR___rssiCrit: Fehler: Liste der Geräte mit kritischem RSSI Wert
W_unConfRegs: Warnung: Liste von Instanzen mit unbestätigten Änderungen von Registern.
Die Ausführung von getConfig ist für diese Instanzen erforderlich.
I_rssiMinLevel: Info: Anzahl der niedrigen RSSI Werte je Gerät, in Blöcken angeordnet.
ERR__protocol: Fehler: Anzahl nicht behebbarer Protokollfehler je Gerät.
Protokollfehler sind NACK, IOerr, ResendFail, CmdDel, CmdPend.
Gezählt wird die Anzahl der Geräte mit Fehlern, nicht die Anzahl der Fehler!
ERR__protoNames: Fehler: Liste der Namen der Geräte mit nicht behebbaren Protokollfehlern
I_HM_IOdevices: Info: Liste der IO Geräte, die von CUL_HM Instanzen verwendet werden
I_actTotal: Info: Status des Actiondetectors, Zähler für Geräte mit bestimmten Status
ERRactNames: Fehler: Namen von Geräten, die der Actiondetector als ausgefallen meldet
C_sumDefined: Count: In CUL_HM definierte Instanzen. Instanzen können als Gerät UND
als Kanal gezählt werden, falls die Funktion des Kanals durch das Gerät
selbst abgedeckt ist. Ähnlich virtual
ERR_<reading>: Fehler: Anzahl mittels Attribut sumERROR
definierter Readings, die nicht den Normalwert beinhalten.
ERR_names: Fehler: Namen von Instanzen, die in einem ERR_<reading> enthalten sind.
W_sum_<reading> Warnung: Anzahl der mit Attribut sumStatus definierten Readings.
HOMBOT - LG Homebot Staubsaugerroboter
Dieses Modul gibt Euch die Möglichkeit Euren Hombot nach erfolgreichen Hack in FHEM ein zu binden.
Voraussetzung ist das Ihr den Hombot Hack gemacht und einen WLAN Stick eingebaut habt. Als Schnittstelle zwischen FHEM und Bot wird der Luigi HTTP Server verwendet. Was genau könnt Ihr nun mit dem Modul machen:
Readings über den Status des Hombots werden angelegt
Auswahl des Reinigungsmodus ist möglich
Starten der Reinigung
Beenden der Reinigung
zurück zur Homebase schicken
Namen vergeben
Wochenprogramm einstellen
Repeat und Turbo aktivieren
!!! Voraussetzungen schaffen !!!
Ihr benötigt zum verwenden des Modules die Programme ssh und sshpass. Desweiteren muß im Homeverzeichnis des fhem Users das Verzeichniss .ssh existieren und darin die Datei known_hosts. Diese sollte eine Passphrass des Bots beinhalten. Am besten Ihr macht als normaler User eine ssh Session zum Bot und kopiert danach die known_hosts Eures normalen Users in das .ssh Verzeichnis des fhem Users. Rechte anpassen nicht vergessen.
Das Device für den Hombot legt Ihr wie folgt in FHEM an.
Define
define <name> HOMBOT <IP-ADRESSE>
Beispiel:
define Roberta HOMBOT 192.168.0.23
Diese Anweisung erstellt ein neues HOMBOT-Device im Raum HOMBOT.Der Parameter <IP-ADRESSE> legt die IP Adresse des LG Hombot fest.
Das Standard Abfrageinterval ist 180 Sekunden und kann über das Attribut intervall geändert werden. Das Interval ist in Abhängigkeit des Arbeitsstatus dynamisch. Im Status WORKING beträgt es z.B. 30 Sekunden.
Nach anlegen der Geräteinstanz sollten bereits die ersten Readings erscheinen.
Readings
at_* - Reading für das Wochenprogramm. Startzeit für den jeweiligen Tag
batteryPercent - Status der Batterie in %
cleanMode - aktuell eingestellter Reinigungsmodus
cpu_* - Informationen über die Prozessorauslastung
currentBumping - Anzahl der Zusammenstöße mit Hindernissen
firmware - aktuell installierte Firmwareversion
hombotState - Status des Hombots
lastClean - Datum und Uhrzeit der letzten Reinigung
lastSetCommandError - letzte Fehlermeldung vom set Befehl
lastSetCommandState - letzter Status vom set Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
lastStatusRequestError - letzte Fehlermeldung vom statusRequest Befehl
lastStatusRequestState - letzter Status vom statusRequest Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
luigiSrvVersion - Version des Luigi HTTP Servers auf dem Hombot
nickname - Name des Hombot
num* - Bisher begonnene und beendete Reinigungen im entsprechenden Modus
repeat - Reinigung wird wiederholt Ja/Nein
state - Modulstatus
turbo - Turbo aktiv Ja/Nein
Set
cleanMode - setzen des Reinigungsmodus (ZZ-ZickZack / SB-Cell by Cell / SPOT-Spiralreinigung
cleanStart - Reinigung starten
homing - Beendet die Reinigung und lässt die Bot zurück zur Bases kommen
nickname - setzt des Bot-Namens. Wird im Reading erst nach einem neustart des Luigiservers oder des Bots sichtbar
pause - lässt den Reinigungsproßess pausieren
repeat - Reinigung wiederholen? (true/false)
schedule - setzen des Wochenprogrammes Bsp. set Roberta schedule Mo=13:30 Di= Mi=14:00,ZZ Do=15:20 Fr= Sa=11:20 So= Man kann also auch den Modus mitgeben!
statusRequest - Fordert einen neuen Statusreport beim Device an
turbo - aktivieren des Turbomodus (true/false)
HOMEMODE
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: HOMEMODE
Stellt einen Webhook für WLAN-basierte Wetterstationen bereit, die das PWS Protokoll von Weather Underground verwenden (z.B. HP1000, WH2600, WH2601, WH2621, WH2900, WH2950 Wetterstation von Fine Offset Electronics - manchmal auch bekannt als Ambient Weather WS-1001-WIFI oder ähnliches). In Deutschland werden die Geräte zumeist von froggit oder von Conrad unter dem Markennamen Renkforce vertrieben.
Es muss noch eine dedizierte FHEMWEB Instanz angelegt werden, wo das Attribut webname auf "weatherstation" gesetzt wurde.
Kein anderer Name funktioniert, da dieser fest in der Wetterstation hinterlegt ist!
Sofern notwendig, erstellt dieses Modul eine passende FHEMWEB Instanz namens WEBweatherstation während der initialen Definition.
Da die URI ebenfalls fest kodiert ist, kann mit einer einzelnen FHEM Installation maximal eine Instanz dieses Moduls gleichzeitig verwendet werden.
Beispiel:
# ungeschützte Instanz bei der ID und PASSWORD ignoriert werden
define WeatherStation HP1000
# geschützte Instanz: Die Wetterstation muss so konfiguriert sein, dass sie
# diese ID und PASSWORD sendet, damit Daten akzeptiert werden
define WeatherStation HP1000 MyHouse SecretPassword
WICHTIG: Im Gerät selbst muss sichergestellt sein, dass ein DNS Name statt einer IP Adresse verwendet wird, da einige Revisionen damit nicht umgehen können.
Ggf. sollte man hier einmal nach einer neueren Firmware schauen.
Explizite Angabe der FHEMWEB Instanzen, äber die Dateneingaben erlaubt sind (Standard ist weatherstation)
wu_id
Weather Underground (Wunderground) Stations ID
wu_password
Weather Underground (Wunderground) Passwort
wu_dataValues
Ersetzt Werte oder fügt neue Werte hinzu, bevor diese zu Weather Underground übertragen werden.
Das Format entspricht key=value wobei value im Format set magic sein kann.
wu_indoorValues
Gibt an, ob die Innenraumwerte mit zu Weather Underground übertragen werden sollen (Standard ist 1=an)
wu_push
Pushen der Daten zu Weather Underground aktivieren oder deaktivieren (Standard ist 0=aus)
wu_pushValues
Schränkt die Werte ein, die an Weather Underground übertragen werden.
Andernfalls werden alle Werte übertragen.
wu_realtime
Sendet die Daten an den WU Echtzeitserver statt an den Standard Server (Standard ist 1=an)
HProtocolGateway
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: HProtocolGateway
HProtocolTank
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: HProtocolTank
HTTPMOD
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: HTTPMOD
HTTPSRV
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: HTTPSRV
HUEBridge
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: HUEBridge
HUEDevice
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: HUEDevice
HXB
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: HXB
HXBDevice
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: HXBDevice
Bildet ein Wochenprofil für ein <device>, zb. Heizkörper, ab.
Es können für jeden Tag unterschiedliche Schaltzeiten angegeben werden.
Ist das <device> ein Heizkörperthermostat (zb. FHT8b, MAX) so wird bei FHT8b/MAX die
zu setzende Temperatur im <profile> automatisch mittels
set <device> (desired-temp|desiredTemperature) <temp>
gesendet.
Struktuen von Heizkörperthermostaten bekommen aufgrund des fhem-Typs auch desired-temp gesendet:
Nutze bitte explizite Kommandos wenn Strukturen von MAX Heizthermostaten gesteuert werden sollen.
Ist eine <condition> angegeben und ist zum Schaltpunkt der Ausdruck unwahr,
so wird dieser Schaltpunkt nicht ausgeführt.
Alternativ zur Automatik kann stattdessen eigener Perl-Code im <command> ausgeführt werden.
Folgende Parameter sind im Define definiert:
device
Name des zu schaltenden Device.
language
Spezifiziert die Sprache für die Definition und die Anzeige der Profile in der Weboberfläche.
Zurzeit sind de,en,fr definiert. Der Parameter ist optional.
wochentage
Spezifiziert die Tage für alle Timer eines Heating_Control.
Der Parameter ist optional. Bitte für Details zur Definition siehe wochentage im part profile.
profile
Angabe des Wochenprofils. Die einzelnen Schaltzeiten sind durch Leerzeichen getrennt
Die Angabe der Schaltzeiten ist nach folgendem Muster definiert:
[<Wochentage>|]<Uhrzeit>|<Parameter>
Wochentage: optionale Angabe, falls nicht gesetzt wird der Schaltpunkt jeden Tag ausgeführt.
Für die Tage an denen dieser Schaltpunkt aktiv sein soll, ist jeder Tag mit seiner
Tagesnummer (Mo=1, ..., So=0) oder Name des Tages (Mo, Di, ..., So) einzusetzen.
0,so Sonntag
1,mo Montag
2,di Dienstag
3,mi Mittwoch
4 ...
7,$we Wochenende ($we)
8,!$we Wochentag (!$we)
Es ist möglich $we or !$we in der Tagesliste zu definieren.
So ist es auf einfache Art möglich die Schaltzeitpunkte für das Wochenende oder Wochetage zu definieren.
$we und!$we werden als 7 bzw. 8 spezifiziert, wenn die numerische Variante der Tagesliste gewählt wird.
Uhrzeit:Angabe der Uhrzeit zu der geschaltet werden soll, Format: HH:MM:[SS](HH im 24 Stunden Format) oder eine Perlfunction wie {sunrise_abs()}.
In {} kannst du die Variable $date(epoch) nutzen, um die Schaltzeiten der Woche zu berechnen. Beispiel: {sunrise_abs_dat($date)}
Parameter:Angabe der zu setzenden Temperatur als Zahl mit Format 99.9 oder als symbolische Konstante eco
or comfort - was immer das Heizkörperthermostat versteht.
Symbolischen Werten kann ein zusätzlicher Parameter angehängt werden: dayTemp:16 night-temp:15. Unten folgen Beispiele
command
Falls keine Condition in () angegeben wurde, so wird alles weitere als Command
interpretiert. Perl-Code ist in {} zu setzen.
Wichtig: Falls ein Command definiert ist, so wird zu den definierten Schaltzeiten
nur(!) das Command ausgeführt. Falls ein desired-temp Befehl abgesetzt werde soll,
so muss dies explizit angegeben werden.
Folgende Parameter werden ersetzt:
$NAME => das zu schaltende Device
$EVENT => die zu setzende Temperatur
condition
Bei Angabe einer Condition ist diese in () zu setzen und mit validem Perl-Code zu versehen.
Der Rückgabedatentyp der condition muss boolean sein.
Die Parameter $NAME und $EVENT werden interpretiert.
Beispiele:
define HCW Heating_Control Bad_Heizung 12345|05:20|21 12345|05:25|comfort 17:20|21 17:25|eco
Mo-Fr wird die Temperatur um 05:20Uhr auf 21°C, und um 05:25Uhr auf comfort gesetzt.
Jeden Tag wird die Temperatur um 17:20Uhr auf 21°C und 17:25Uhr auf eco gesetzt.
define HCW Heating_Control WZ_Heizung 07:00|16 Mo,Di,Mi|16:00|18.5 20:00|12
{fhem("set dummy on"); fhem("set $NAME desired-temp $EVENT");}
Zu den definierten Schaltzeiten wird nur(!) der in {} angegebene Perl-Code ausgeführt.
define HCW Heating_Control WZ_Heizung Sa-So,Mi|08:00|21 (ReadingsVal("WeAreThere", "state", "no") eq "yes")
Die zu setzende Temperatur wird nur gesetzt, falls die Dummy Variable WeAreThere = "yes" ist.
define HCW Heating_Control WZ_Heizung en Su-Fr|{sunrise_abs()}|21 Mo-Fr|{sunset_abs()}|16
Das Gerät wird bei Sonnenaufgang und Sonnenuntergang geschaltet. Sprache: Englisch.
define HCW Heating_Control WZ_Heizung en Mo-Fr|{myFunction}|night-temp:18 Mo-Fr|{myFunction()}|dayTemp:16
Das Gerät wird bei myFunction() geschaltet. Es wird das Kommando "night-temp 18" bzw. "dayTemp 16" gesendet.
Wenn du beispielsweise nach einer Temperaturabsenkungsphase erreichen willst, dass alle Heating_Controls ihren aktuellen Wert
einstellen sollen, kannst du die Funktion Heating_Control_SetTemp("HC-device") or Heating_Control_SetAllTemps() aufrufen.
Dieser Aufruf kann per notify automatisch an ein dummy gekoppelt werden: define HeizStatus2 notify Heizung:.* {Heating_Control_SetAllTemps()}
Einige Definitionen ohne weitere Erklärung:
define hc Heating_Control HeizungKueche de 7|23:35|25 34|23:30|22 23:30|16 23:15|22 8|23:45|16
define hc Heating_Control HeizungKueche de fr,$we|23:35|25 34|23:30|22 23:30|16 23:15|22 12|23:45|16
define hc Heating_Control HeizungKueche de 20:35|25 34|14:30|22 21:30|16 21:15|22 12|23:00|16
define hw Heating_Control HeizungKueche de mo-so, $we|{sunrise_abs_dat($date)}|18 mo-so, $we|{sunset_abs_dat($date)}|22
define ht Heating_Control HeizungKueche de mo-so,!$we|{sunrise_abs_dat($date)}|18 mo-so,!$we|{sunset_abs_dat($date)}|22
define hh Heating_Control HeizungKueche de {sunrise_abs_dat($date)}|19 {sunset_abs_dat($date)}|21
define hx Heating_Control HeizungKueche de 22:35|25 23:00|16
Die Tagesliste kann global für das ganze Heating_Control angegeben werden:
define HeizungWohnen_an_wt Heating_Control HeizungWohnen de !$we 09:00|19 (heizungAnAus("Ein"))
define HeizungWohnen_an_we Heating_Control HeizungWohnen de $we 09:00|19 (heizungAnAus("Ein"))
define HeizungWohnen_an_we Heating_Control HeizungWohnen de 78 09:00|19 (heizungAnAus("Ein"))
define HeizungWohnen_an_we Heating_Control HeizungWohnen de 57 09:00|19 (heizungAnAus("Ein"))
define HeizungWohnen_an_we Heating_Control HeizungWohnen de fr,$we 09:00|19 (heizungAnAus("Ein"))
es ist möglich den Parameter als Perlcode zu spezifizieren:
ein detailiertes Beispiel ist in Heating_Control(EN) beschrieben
Setset <name> <value>
where value is one of:
enable # enables the Heating_Control
disable # disables the Heating_Control
Examples:
set hc disable set hc enable
Get
N/A
Attributes
delayedExecutionCond
definiert eine Veroegerungsfunktion. Wenn die Funktion wahr liefert, wird die Schaltung des Geraets solage verzoegert, bis die Funktion wieder falsch liefert. Das Verhalten entspricht einem Fensterkontakt.
switchInThePast
Definiert, dass ein abhängiges Gerät in der Start- oder Definitionsphase mit einem Wert aus der Vergangheit geschaltet wird auch wenn das Gerät nicht als Heizung erkannt wurde.
Heizungen werden immer mit einem Wert aus der Vergangenheit geschaltet.
windowSensor Definiert eine Liste mit Fensterkontakten. Wenn das Reading window state eines Fensterkontakts open ist, wird der aktuelle Schaltvorgang verzögert.
Alle anderen, welche das Hideki Protokoll verwenden
Hinweis, Aktuell sind nur temp/feuchte Sensoren implementiert. Bitte sendet uns Daten zu anderen Sensoren.
Define
define <name> Hideki <code>
<code> besteht aus dem Sensortyp und der Kanalnummer (1..5) oder wenn das Attribut longid im IO Device gesetzt ist aus einer Zufallsadresse, die durch den Sensor beim einlegen der
Batterie generiert wird (Die Adresse aendert sich bei jedem Batteriewechsel).
Wenn autocreate aktiv ist, dann wird der Sensor automatisch in FHEM angelegt. Das ist der empfohlene Weg, neue Sensoren hinzuzufügen.
Generated Readings
state (T:x H:y B:z)
temperature (°C)
humidity (0-100)
battery (ok oder low)
channel (Der Sensor Kanal)
- Hideki spezifisch -
comfort_level (Status: Humidity OK... , Wet größer 69% RH, Dry weiniger als 40% RH, Temperature and humidity comfortable)
package_number (Paketnummer in der letzten Signalfolge, startet bei 1)
Mit Hyperion ist es möglich auf einem Hyperion Server die Farbe oder den Effekt einzustellen.
Es ist auch möglich eine komplette Farbkalibrierung vorzunehmen (Änderungen sind temporär und werden nicht in die Konfigurationsdatei geschrieben).
Der Hyperion Server muss dem JSON Server aktiviert haben.
Es ist auch möglich Hyperion mit verschiedenen Konfigurationsdateien zu starten (z.B. mit anderem Eingang/Grabber)
Define
define <name> Hyperion <IP oder HOSTNAME> <PORT> [<INTERVAL>]
<INTERVAL> ist optional für automatisches Abfragen.
Nach dem Definieren des Gerätes wird einmalig und automatisch "get <name> statusRequest" aufgerufen um den aktuellen Status und die verfügbaren Effekte vom Hyperion Server zu holen.
Beispiel für Hyperion auf dem lokalen System:
define Ambilight Hyperion localhost 19444 10
Beispiel für Hyperion auf einem entfernten System:
define Ambilight Hyperion 192.168.1.4 19444 10
set <benötigt> [optional]
addEffect <eigener_name>
fügt den aktuellen Effekt mit dem übergebenen Namen den eigenen Effekten hinzu
kann nachträglich im Attribut hyperionCustomEffects geändert werden
Gerät muss dazu im Effekt Modus in einen nicht-eigenen Effekt sein und der übergebene Name muss ein einmaliger Effektname sein
adjustBlue <0,0,255>
Justiert jede Farbe von Blau separat (Komma separiert) (R,G,B)
Werte von 0 bis 255 in Schritten von 1
adjustGreen <0,255,0>
Justiere jede Farbe von Grün separat (Komma separiert) (R,G,B)
Werte von 0 bis 255 in Schritten von 1
adjustRed <255,0,0>
Justiert jede Farbe von Rot separat (Komma separiert) (R,G,B)
Werte von 0 bis 255 in Schritten von 1
blacklevel <0.00,0.00,0.00>
Justiert den Schwarzwert von jeder Farbe separat (Komma separiert) (R,G,B)
Werte von 0.00 bis 1.00 in Schritten von 0.01
clear <1000>
einen bestimmten Prioritätskanal löschen
clearall
alle Prioritätskanäle löschen / Umschaltung auf Ambilight
colorTemperature <255,255,255>
Justiert die Temperatur von jeder Farbe separat (Komma separiert) (R,G,B)
Werte von 0 bis 255 in Schritten von 1
configFile <Dateiname>
Neustart des Hyperion Servers mit der angegebenen Konfigurationsdatei (Dateien werden automatisch aufgelistet aus Verzeichnis welches im Attribut hyperionConfigDir angegeben ist)
Bitte die doppelte Endung weglassen (.config.json)
Nur verfügbar nach erfolgreichem "get <name> configFiles"
correction <255,255,255>
Justiert die Korrektur von jeder Farbe separat (Komma separiert) (R,G,B)
Werte von 0 bis 255 in Schritten von 1
dim <Prozent> [Dauer] [Priorität]
Dimmt das RGB Licht auf angegebenen Prozentwert, mit optionaler Dauer in Sekunden und optionaler Priorität
dimDown [delta]
Abdunkeln des RGB Lichts um angegebenen Prozentwert oder um Prozentwert der im Attribut hyperionDimStep eingestellt ist (Voreinstellung: 10)
dimUp [delta]
Aufhellen des RGB Lichts um angegebenen Prozentwert oder um Prozentwert der im Attribut hyperionDimStep eingestellt ist (Voreinstellung: 10)
effect <effect> [Dauer] [Priorität] [effectargs]
Stellt gewählten Effekt ein (ersetzte Leerzeichen mit Unterstrichen) mit optionaler Dauer in Sekunden und optionaler Priorität
effectargs können ebenfalls übermittelt werden - muss ein JSON String ohne Leerzeichen sein
gamma <1.90,1.90,1.90>
Justiert Gamma von jeder Farbe separat (Komma separiert) (R,G,B)
Werte von 0.00 bis 5.00 in Schritten von 0.01
luminanceGain <1.00>
Justiert Helligkeit
Werte von 0.00 bis 5.00 in Schritten von 0.01
luminanceMinimum <0.00>
Justiert Hintergrundbeleuchtung
Werte von 0.00 bis 5.00 in Schritten von 0.01
mode <clearall|effect|off|rgb>
Setzt das Licht im gewählten Modus mit dem zuletzt für diesen Modus eingestellten Wert
off
Schaltet aus mit Farbe schwarz
on
Schaltet mit letztem Modus und letztem Wert ein
rgb <RRGGBB> [Dauer] [Priorität]
Setzt Farbe im RGB Hex Format mit optionaler Dauer in Sekunden und optionaler Priorität
saturationGain <1.10>
Justiert Sättigung
Werte von 0.00 bis 5.00 in Schritten von 0.01
saturationLGain <1.00>
Justiert minimale Sättigung
Werte von 0.00 bis 5.00 in Schritten von 0.01
threshold <0.16,0.16,0.16>
Justiert den Schwellenwert von jeder Farbe separat (Komma separiert) (R,G,B)
Werte von 0.00 bis 1.00 in Schritten von 0.01
toggle
Schaltet zwischen an und aus hin und her
toggleMode
Schaltet alle Modi durch
valueGain <1.70>
Justiert Helligkeit vom Ambilight
Werte von 0.00 bis 5.00 in Schritten von 0.01
whitelevel <0.70,0.80,0.90>
Justiert den Weißwert von jeder Farbe separat (Komma separiert) (R,G,B)
Werte von 0.00 bis 1.00 in Schritten von 0.01
Get
configFiles
Holt die verfügbaren Konfigurationsdateien aus dem Verzeichnis vom Attribut hyperionConfigDir
Es müssen mindestens zwei Konfigurationsdateien im Verzeichnis vorhanden sein. Die Dateien dürfen keine Leerzeichen enthalten und müssen mit .config.json enden!
devStateIcon
Zeigt den Wert des aktuellen devStateIcon
statusRequest
Holt den aktuellen Status vom Hyperion Server,
holt auch die Internals vom Hyperion Server inklusive verfügbarer Effekte
Attribute
disable
Abfragen beenden und Verbindung trennen
Voreinstellung: 0
hyperionBin
Pfad zum Hyperion Daemon
OpenELEC Benutzer müssen eventuell hyperiond.sh als Daemon einstellen
Voreinstellung: /usr/bin/hyperiond
hyperionConfigDir
Pfad zu den Hyperion Konfigurationsdateien
Voreinstellung: /etc/hyperion/
hyperionCustomEffects
Leerzeichen separierte Liste von JSON Strings (ohne Leerzeichen - bitte Leerzeichen in Effektnamen durch Unterstriche ersetzen)
muss name (als Anzeigename), oname (Name des basierenden Effekts) und args (die eigentlichen unterschiedlichen Effekt Argumente) beinhalten (auch genau in dieser Reihenfolge, sonst kommt beim Übernehmen des Attributs ein Fehler und das Attribut wird nicht gespeichert)
Beispiel: {"name":"Knight_Rider_speed_2","oname":"Knight_rider","args":{"color":[255,0,255],"speed":2}} {"name":"Knight_Rider_speed_4","oname":"Knight_rider","args":{"color":[0,0,255],"speed":4}}
hyperionDefaultDuration
Voreinstellung für Dauer
Voreinstellung: 0 = unendlich
hyperionDefaultPriority
Voreinstellung für Priorität
Voreinstellung: 0 = höchste Priorität
hyperionDimStep
Dimmstufen für dimDown/dimUp
Voreinstellung: 10 (Prozent)
hyperionGainStep
valueGain Dimmstufen für valueGainDown/valueGainUp
Voreinstellung: 0.1
hyperionNoSudo
Deaktiviert sudo für nicht root SSH Benutzer
Voreinstellung: 0
hyperionSshUser
Benutzername mit dem SSH Befehle ausgeführt werden sollen
Voreinstellung: pi
hyperionToggleModes
Modi und Reihenfolge von toggleMode als kommaseparierte Liste (min. 2 Werte, max. 4 Werte, jeder Mode nur 1x)
Voreinstellung: clearall,rgb,effect,off
hyperionVersionCheck
Deaktiviert Hyperion Versionüberprüfung um (eventuell) ältere Hyperion Versionen zu unterstützen
DAS GESCHIEHT AUF EIGENE VERANTWORTUNG! FHEM KÖNNTE UNERWARTET ABSTÜRTZEN!
Voreinstellung: 1
queryAfterSet
Wenn gesetzt auf 0 wird der Status des Hyperion Server nach einem set Befehl nicht abgerufen, stattdessen wird der Status zum nächsten eingestellten Interval abgerufen.
Das wird nur verwendet wenn das priodische Abfragen aktiviert ist, ohne dieses Abfragen wird der Status automatisch nach dem set Befehl abgerufen.
Voreinstellung: 1
Readings
adjustBlue
jede Farbe von Blau separat (Komma separiert) (R,G,B)
adjustGreen
jede Farbe von Grün separat (Komma separiert) (R,G,B)
adjustRed
jede Farbe von Rot separat (Komma separiert) (R,G,B)
blacklevel
Schwarzwert von jeder Farbe separat (Komma separiert) (R,G,B)
colorTemperature
Temperatur von jeder Farbe separat (Komma separiert) (R,G,B)
configFile
aktive/zuletzt geladene Konfigurationsdatei, doppelte Endung (.config.json) wird weggelassen
correction
Korrektur von jeder Farbe separat (Komma separiert) (R,G,B)
dim
aktive/letzte Dimmstufe (RGB Licht)
duration
aktive/letzte/verbleibende primäre Dauer in Sekunden oder infinite für unendlich
effect
aktiver/letzter Effekt
effectArgs
aktive/letzte Effekt Argumente als JSON
gamma
Gamma von jeder Farbe separat (Komma separiert) (R,G,B)
id
ID vom Hyperion Server
lastError
letzter aufgetretener Fehler während der Kommunikation mit dem Hyperion Server
luminanceGain
aktive Helligkeit
luminanceMinimum
aktive Hintergrundbeleuchtung
mode
aktiver Modus
mode_before_off
letzter Modus vor aus
priority
aktive/letzte Priorität
rgb
aktive/letzte RGB Farbe
saturationGain
aktive Sättigung
saturationLGain
aktive minimale Sättigung
serverResponse
letzte Hyperion Server Antwort (success/ERROR)
state
aktiver Status
threshold
Schwellenwert von jeder Farbe separat (Komma separiert) (R,G,B)
valueGain
aktive Helligkeit vom Ambilight
whitelevel
Weißwert von jeder Farbe separat (Komma separiert) (R,G,B)
I2C_BH1750
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: I2C_BH1750
Ermöglicht die Verwendung eines digitalen (Luft)druck/feuchtesensors BME280 über den I2C Bus des Raspberry Pi.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
set <name> readValues
Aktuelle Temperatur, Feuchte und Luftdruck Werte vom Sensor lesen.
Attribute
oversampling_t,oversampling_h,oversampling_p
Steuert das jeweils das Oversampling der Temperatur-, Feuchte-, oder Druckmessung im Sensor.
Standard: 1, gültige Werte: 0, 1, 2, 3, 4, 5
0 deaktiviert die jeweilige Messung
1 to 5 entspricht einem Oversampling von 2^zahl/2
poll_interval
Definiert das Poll Intervall in Minuten für das Auslesen einer neuen Messung.
Default: 5, gültige Werte: 1, 2, 5, 10, 20, 30
roundTemperatureDecimal, roundHumidityDecimal, roundPressureDecimal
Rundet jeweils den Temperatur-, Feuchte-, oder Druckwert mit den angegebenen Nachkommastellen.
Standard: 1, gültige Werte: 0, 1, 2
altitude
Wenn dieser Wert definiert ist, wird diese Angabe zusä für die Berechnung des
Luftdrucks bezogen auf Meereshöhe (Normalnull) NN herangezogen.
Bemerkung: Dies ist ein globales Attribut.
Dieses Modul ermöglicht das Auslesen der digitalen (Luft)drucksensoren
BMP085 und BMP180 über den I2C Bus des Raspberry Pi.
Es gibt zwei Möglichkeiten das Modul mit dem I2C Bus zu verbinden:
Über das RPII2C Modul
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein.
Über die HiPi Bibliothek
Diese beiden Zeilen müssen in die Datei /etc/modules angefügt werden,
um die Kernel Module automatisch beim Booten des Raspberry Pis zu laden.
Um die Rechte für die I2C Devices anzupassen, folgende Datei:
/etc/udev/rules.d/98_i2c.rules
mit diesem Inhalt anlegen:
SUBSYSTEM=="i2c-dev", MODE="0666"
Reboot
Falls der Sensor am zweiten I2C Bus am Stecker P5 (nur in Version 2 des
Raspberry Pi) verwendet werden soll, muss die fett gedruckte Zeile
des folgenden Codes in das FHEM Start Skript aufgenommen werden:
case "$1" in
'start')
sudo hipi-i2c e 0 1
...
Define
define BMP180 <BMP180_name> <I2C_device>
<I2C device> darf nicht verwendet werden, wenn der I2C Bus über das RPII2C Modul angesprochen wird. Für HiPi ist es allerdings notwendig.
Liest die aktuelle Temperatur und den Luftdruck des Sensors aus.
Dies wird automatisch nach Ablauf des definierten Intervalls ausgeführt.
Wenn der aktuelle Wert gelesen werden soll, kann dieser Befehl auch manuell
ausgeführt werden.
Get
N/A
Attribute
oversampling_settings
Steuert das Oversampling der Druckmessung im Sensor.
Default: 3, gültige Werte: 0, 1, 2, 3
poll_interval
Definiert das Poll Intervall in Minuten für das Auslesen einer neuen Messung.
Default: 5, gültige Werte: 1, 2, 5, 10, 20, 30
roundTemperatureDecimal
Rundet den Temperaturwert mit den angegebenen Nachkommastellen.
Default: 1, gültige Werte: 0, 1, 2
roundPressureDecimal
Rundet die Drucksensorwerte mit den angegebenen Nachkommastellen.
Default: 1, valid values: 0, 1, 2
altitude
Wenn dieser Wert definiert ist, wird diese Angabe zusätzlich für die Berechnung des
Luftdrucks bezogen auf Meereshöhe (Normalnull) NN herangezogen.
Bemerkung: Dies ist ein globales Attribut.
attr global altitude 220
Hinweise
I2C-Bustiming
Zur Abfrage des Sensors wird von einer I2C-Schnittstelle mit blockierendem IO-Zugriff (z.B. RPII2C) ausgegangen.
Bei I2C-Schnittstellen, die nicht-blockierend arbeiten (z.B. FRM mit Ethernet), kann es zu Verarbeitungsfehlern kommen,
insbesondere wenn das Attribut oversampling_settings auf einen Wert größer 1 eingestellt wird.
Dies lässt sich je nach I2C-Schnittstelle kompensieren. Bei Firmata empfiehlt es sich,
das Attribut i2c-config im Modul FRM auf einen Wert von ca. 30000 Mikrosekunden einzustellen.
I2C_DS1307
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: I2C_DS1307
Ermöglicht die Verwendung I2C EEPROM.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_EEPROM <I2C Address>
Der Wert <I2C Address> ist ohne das Richtungsbit
Set
set <name> <byte address> <value>
<byte address> ist die Registeradresse (0..IC abhängig) und <value> der Registerinhalt (0..255)
Beide Zahlen können sowohl eine Dezimal- als auch eine Hexadezimalzahl sein.
Beispiel:
set eeprom1 0x02 0xAA set eeprom1 2 170
Get
get <name>
Aktualisierung aller Werte
get <name> <byte address> [Bit<bitnumber(0..7)>]
Gibt den Inhalt des in <byte address> angegebenen Registers zurück, bzw. ein einzelnes Bit davon.
Achtung mit diesem Befehl werden nur die Werte aus den Readings angezeigt und nicht der Registerinhalt selbst!
Attribute
poll_interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: -, gültige Werte: Dezimalzahl
Ermöglicht die Verwendung eines digitalen Temperatur EMC1001 über den I2C Bus des Raspberry Pi.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
Ermöglicht die Verwendung eines I2C_HDC1008 I2C Feuchtesensors von Texas Instruments.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_HDC1008 [<I2C Address>]
Der Wert <I2C Address> ist ein zweistelliger Hex-Wert
Set
set <name> Update
Aktuelle Temperatur und Feuchte Werte vom Sensor lesen.
set <name> Reset
Setzt den Sensor zurück
set <name> Heater {on|off}
Schaltet das Heizelement des Sensors an oder aus
Attribute
interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: 5, gültige Werte: 1,2,5,10,20,30
Resolution_Temperature
Genauigkeit mit der die Temperatur gemessen werden soll.
Standard: 14Bit, gültige Werte: 11Bit, 14Bit
Resolution_Humidity
Genauigkeit mit der die Feuchtigkeit gemessen werden soll.
Standard: 14Bit, gültige Werte: 8Bit, 11Bit, 14Bit
roundHumidityDecimal
Anzahl Dezimalstellen für den Feuchtewert
Standard: 1, gültige Werte: 0 1 2
roundTemperatureDecimal
Anzahl Dezimalstellen für den Temperaturwert
Standard: 1, gültige Werte: 0,1,2
Ermöglicht die Verwendung eines K30 CO2 Sensors von SenseAir. Der Sensor
muss über I2C angeschlossen sein (siehe z.B.
Application Note 142 "K-30/K-33 I2C on Raspberry Pi"
von co2meters.com).
Auf meinem Raspberry Pi 2 musste ich die I2C-Frequenz auf 90 kHz reduzieren, sonst sind die meisten I2C-Zugriffe fehlgeschlagen
("options i2c_bcm2708 baudrate=90000", z.B. in /etc/modprobe.d/i2c-options.conf eintragen). Nach wie vor gehen ca. 5 % der Zugriffe schief,
aber das scheint normal zu sein - zumindest warnt das Datenblatt, dass I2C-Zugriffe fehlschlagen können, wenn der Microcontroller auf dem
Sensor gerade mit einer CO2-Messung beschäftigt ist.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_K30 [<I2C Address>]
Der Wert <I2C Address> ist die konfigurierte I2C-Adresse des Sensors (Standard: 104 bzw. 0x68)
Set
set <name> readValues
Aktuellen CO2 Wert vom Sensor lesen.
Attribute
poll_interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: 5, gültige Werte: 1,2,5,10,20,30
Ermöglicht die Verwendung eines LM75A I2C Temperatursensors..
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_LM75A [<I2C Address>]
Der Wert <I2C Address> ist ein zweistelliger Hex-Wert
Set
set <name> readValues
Aktuelle Temperatur Werte vom Sensor lesen.
Attribute
poll_interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: 5, gültige Werte: 1,2,5,10,20,30
roundTemperatureDecimal
Anzahl Dezimalstellen für den Temperaturwert
Standard: 1, gültige Werte: 0 1 2
Ermöglicht die Verwendung eines MCP23008 I2C 8 Bit Portexenders.
Auf einem Raspberry Pi kann der Interrupt Pin des MCP23008 mit einem GPIO verbunden werden und über die Interrupt Funktionen von RPI_GPIO lässt sich dann ein get für den MCP23008 bei Pegeländerung auslösen.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_MCP23008 <I2C Address>
Der Wert <I2C Address> ist ohne das Richtungsbit
Set
set <name> <port[,port[...]]> <value>
<port> kann PortA0 bis PortA7 annehmen und <value> folgende Werte:
off
on
Beispiel:
set mod1 PortA4 on set mod1 PortA4,PortA6 off set mod1 PortA4,A6 on
Get
get <name>
Aktualisierung aller Werte
Attribute
poll_interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: -, gültige Werte: Dezimalzahl
OutputPorts
Durch Komma getrennte Ports die als Ausgänge genutzt werden sollen.
Nur Ports in dieser Liste können gesetzt werden.
Standard: -, gültige Werte: A0-A7
OnStartup
Durch Komma getrennte Output Ports und ihr gewünschter Status nach dem Start.
Ohne dieses Attribut werden alle Ausgänge nach dem Start auf den letzten Status gesetzt.
Standard: -, gültige Werte: <port>=on|off|last wobei <port> = A0-A7
Pullup
Durch Komma getrennte Input Ports, bei denen der interne 100k pullup aktiviert werden soll.
Standard: -, gültige Werte: A0-A7
Interrupt
Durch Komma getrennte Input Ports, die einen Interrupt auf IntA/B auslösen.
Standard: -, gültige Werte: A0-A7
invert_input
Durch Komma getrennte Input Ports, die reverse Logik nutzen.
Standard: -, gültige Werte: A0-A7
InterruptOut
Einstellungen für den INT Pin
gültige Werte:
Ermöglicht die Verwendung eines MCP23017 I2C 16 Bit Portexenders.
Auf einem Raspberry Pi kann der Interrupt Pin des MCP23017 mit einem GPIO verbunden werden und über die Interrupt Funktionen von RPI_GPIO lässt sich dann ein get für den MCP23017 bei Pegeländerung auslösen.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_MCP23017 <I2C Address>
Der Wert <I2C Address> ist ohne das Richtungsbit
Set
set <name> <port[,port[...]]> <value>
<port> kann PortA0 bis PortA7 / PortB0 bis PortB7 annehmen und <value> folgende Werte:
off
on
Beispiel:
set mod1 PortA4 on set mod1 PortA4,PortB6 off set mod1 PortA4,B6 on
Get
get <name>
Aktualisierung aller Werte
Attribute
poll_interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: -, gültige Werte: Dezimalzahl
OutputPorts
Durch Komma getrennte Ports die als Ausgänge genutzt werden sollen.
Nur Ports in dieser Liste können gesetzt werden.
Standard: -, gültige Werte: A0-A7, B0-B7
OnStartup
Durch Komma getrennte Output Ports und ihr gewünschter Status nach dem Start.
Ohne dieses Attribut werden alle Ausgänge nach dem Start auf den letzten Status gesetzt.
Standard: -, gültige Werte: <port>=on|off|last wobei <port> = A0-A7, B0-B7
Pullup
Durch Komma getrennte Input Ports, bei denen der interne 100k pullup aktiviert werden soll.
Standard: -, gültige Werte: A0-A7, B0-B7
Interrupt
Durch Komma getrennte Input Ports, die einen Interrupt auf IntA/B auslösen.
Standard: -, gültige Werte: A0-A7, B0-B7
invert_input
Durch Komma getrennte Input Ports, die reverse Logik nutzen.
Standard: -, gültige Werte: A0-A7, B0-B7
InterruptOut
Einstellungen für die INTA/INTB Pins
gültige Werte:
separate_active-low (INTA/INTB sind für PortA/PortB getrennt und mit active low Logik)
separate_active-high (INTA/INTB sind für PortA/PortB getrennt und mit active high Logik)
separate_open-drain (INTA/INTB sind für PortA/PortB getrennt und arbeiten als open drain)
connected_active-low (INTA/INTB sind intern verbunden und mit active low Logik)
connected_active-high (INTA/INTB sind intern verbunden und mit active high Logik)
connected_open-drain (INTA/INTB sind intern verbunden und arbeiten als open drain)
Ermöglicht die Verwendung eines MCP3422/3/4 I2C A/D Wandler.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_MCP342x [[<I2C Address>] <n channels>]
Der Wert <I2C Address> ist die I2C Adresse ohne Richtungsbit und <n channels> die Anzahl der A/D Kanäle.
Get
get <name> [[[<channel>] <resolution> ] <gain>]
Aktuelle Werte vom entstrechenden <channel> lesen. <resolution> und <gain> überschreiben die entsprechenden Attribute für diesen Lesevorgang
Attribute
poll_interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: 5, gültige Werte: 1,2,5,10,20,30
Folgende Attribute existieren separat für alle Kanäle.
ch1resolution
Auflösung des Kanals
Je größer die Auflösung desto länger die Lesezeit.
Standard: 12, gültige Werte: 12,14,16,18
ch1gain
Verstärkungsfaktor
Wichtig: Der Verstärkungsfaktor verringert den Messbereich entsprechend und kann zu einem Überlauf führen. In diesem Fall wird "overflow" an das reading angehängt.
Standard: 1, gültige Werte: 1,2,4,8
ch1factor
Korrekturfaktor (Wird zum Kanalwert multipliziert.)
Standard: 1, gültige Werte: Zahl
ch1roundDecimal
Anzahl Dezimalstellen für den Messwert
Standard: 3, gültige Werte: 0,1,2,3
Ermöglicht die Verwendung eines PCA9532 I2C 16 Kanal PWM IC.
Das PCA9532 hat 2 unabhängige PWM Stufen. Jeder Kanal kanne einer der Stufen zugeordnet werden oder direkt auf off/on gesetzt werden.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_PCA9532 <I2C Address>
Der Wert <I2C Address> ist ein zweistelliger Hex-Wert
Set
set <name> <port> <value>
wenn als <port> Port0 bis Port15 verwendet wird, dann ist <value> einer dieser Werte:
off
on
PWM0 (Port wird auf PWM0 Frequenz- und Pulsweiteneinstellung gesetzt)
PWM1 (Port wird auf PWM1 Frequenz- und Pulsweiteneinstellung gesetzt)
wenn als <port> PWM0 oder PWM1 verwendet wird, ist <value> ein Wert zwischen 0 und 255 ensprechend der Pulsweite der PWM Stufe.
Beispiele:
set mod1 Port4 PWM1 set mod1 PWM1 128
Get
get <name>
Aktualisierung aller Werte
Attribute
poll_interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: -, gültige Werte: Dezimalzahl
OutputPorts
Durch Komma getrennte Portnummern die als Outputs genutzt werden.
Nur Ports in dieser Liste können geschrieben werden.
Standard: no, gültige Werte: 0 1 2 .. 15
OnStartup
Durch Komma getrennte Output Ports/PWM Register und ihr gewünschter Status nach dem Start.
Ohne dieses Attribut werden alle Ausgänge nach dem Start auf den letzten Status gesetzt.
Standard: -, gültige Werte: <port>=on|off|PWM0|PWM1|last oder PWM0|PWM1=0..255|last wobei <port> = 0 - 15
T0/T1
Änderung der Frequenzwerte von PWM0/PWM1 nach der Formel: Fx = 152/(Tx + 1). Der entsprechende Frequenzwert wird unter Internals angezeigt.
Standard: 0 (152Hz), gültige Werte: 0-255
Ermöglicht die Verwendung eines PCA9685 I2C 16 Kanal PWM IC.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_PCA9685 <I2C Address> [<I2C Buffer Size>]
Der Wert <I2C Address> ist ein zweistelliger Hex-Wert im Format 0xnn oder eine Dezimalzahl <I2C Buffer Size> gibt die maximale Anzahl von Datenbytes pro I2C Datenpaket an. Nicht angegeben, wird der Wert 30 verwendet
( entspricht 32 Bytes incl. Adresse und Registernummer). RPII2C kann mit beliebig großen Paketlängen umgehen, daher ist diese Option dort inaktiv.
Set
set <name> <port> <dimvalue> [<delay>]
Als <port> kann Port00 bis Port15 verwendet werden <dimvalue> kann folgende Werte annehmen:
off
on
0..4095
<delay> gibt den Wert innerhalb der Zählschleife an, an dem der Ausgang eingeschaltet wird.
Damit lassen sich die 16 Ausgänge zu unterschiedlichen Zeiten einschalten um Stromspitzen zu minimieren.
Dieser Wert hat keinerlei Einfluss auf die Pulsbreite. Stardartwert ist 0, mögliche Werte sind 0..4095
Um mehrer Ports mit einem Befehl zu ändern können mehrere Befehle per Komma getrennt eingegeben werden.
Dabei kann jeder Port auf einen separaten, oder alle Ports auf den selben Wert gesettz werden.
Fär letzteres darf nur der letzte Befehl dimvalue (und delay) enthalten.
Aufeinanerfolgene Ports werden mit einem Befehl geschrieben. So können beispielsweise multicolor LED's ohne flackern geschaltet werden.
Anstelle von Port kann auch einfach ein P verwendet werden.
Examples:
set mod1 Port04 543 set mod1 Port4 434 765 set mod1 Port1, Port2, Port14 434 765 set mod1 Port1 on, P14 434 765
Get
get <name>
Aktualisierung aller Werte
Attribute
SUBADR1,SUBADR2,SUBADR3,ALLCALLADR
Alternative slave Adressen, zum kontrollieren mehrerer PCA9685 mit einem define
Zusätzlich zu diesen Registern müssen die Passenden Bits in modereg1 gesetzt werden.
Standard: SUBADR1=113,SUBADR2=114,SUBADR3=116,ALLCALLADR=112, gültige Werte: I2C Adresse
OnStartup
Kommagetrennte Liste der Ports mit den gewünschten Startwerten.
Nicht gelistete Ports werden auf en letzte state wiederhergestellt.
Standard: last, gültige Werte: <port>=on|off|0..4095|last wobei <port> = 0 - 15
prescale
PWM Frequenz setzen. Formel: Fx = 25MHz/(4096 * (prescale + 1)).
Die eingestellte Frequenz wird in den Internals angezeigt.
Wenn das Attribut extclock angegeben ist, wird dieses zur Frequenzberechnung verwendet. Andernfalls 25MHz.
Standard: 30 (200Hz für 25MHz clock), gültige Werte: 0-255
modereg1
Durch Komma getrennte Liste von:
EXTCLK
Anstelle des internen 25MHz Oszillators wird ein extern Angeschlossener verwendet.
Die Frequenz des externen Oszillators kann über das Attribut extclock angegeben werden.
SUBADR1
Wenn gesetzt, antwortet der PCA9685 auf I2C-bus Subadresse 1.
SUBADR2
Wenn gesetzt, antwortet der PCA9685 auf I2C-bus Subadresse 2.
SUBADR3
Wenn gesetzt, antwortet der PCA9685 auf I2C-bus Subadresse 3.
ALLCALLADR
Wenn gesetzt, antwortet der PCA9685 auf I2C-bus ALLCALLADR Adresse.
modereg2
Durch Komma getrennte Liste von:
INVRT
Wenn gesetzt, werden die Ausgänge invertiert.
OCH
Wenn gesetzt, werden die Ports nach jedem ACK gesetzt (also nach jedem gesendeten Byte).
Andernfalls werden sie nach einem STOP Kommando gesetzt (Bus Schreibaktion fertig, also nach einem Datenpaket)
OUTDRV
Wenn gesetzt, werden die Ausgänge als totem pole konfiguriert.
Andernfalls sind sie open-drain.
Verhalten bei OE = 1 (wenn OE = 0 verhalten sich die Ausgänge wie in OUTDRV eingestellt):
OUTNE0
Wenn gesetzt:
LEDn = 1 wenn OUTDRV = 1
LEDn = hochohmig wenn OUTDRV = 0
Wenn nicht gesetzt:
LEDn = 0.
OUTNE1
LEDn = hochohmig.
Wenn OUTNE1 gesetzt wird OUTNE0 ignoriert.
Ermöglicht die Verwendung eines PCF8574 I2C 8 Bit Portexenders.
Auf einem Raspberry Pi kann der Interrupt Pin des PCF8574 mit einem GPIO verbunden werden und ¨ber die Interrupt Funktionen von RPI_GPIO l&aml;sst sich dann ein get für den PCF8574 bei Pegel&aml;nderung ausl&oml;sen.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_PCF8574 <I2C Address>
Der Wert <I2C Address> ist ohne das Richtungsbit
Set
set <name> <port[,port[...]]> <value>
<port> kann Port0 bis Port7 annehmen und <value> folgende Werte:
off
on
Beispiel:
set mod1 Port4 on set mod1 Port4,Port6 off set mod1 Port4,6 on
Get
get <name>
Aktualisierung aller Werte
Attribute
poll_interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: -, gültige Werte: Dezimalzahl
InputPorts
Durch Komma getrennte Portnummern die als Inputs genutzt werden.
Ports in dieser Liste können nicht geschrieben werden.
Standard: -, gültige Werte: 0 - 7
InvrtPorts
Durch Komma getrennte Portnummern die invertiert werden.
Standard: -, gültige Werte: 0 - 7
OnStartup
Durch Komma getrennte Output Ports und ihr gewünschter Status nach dem Start.
Ohne dieses Attribut werden alle Ausgänge nach dem Start auf den letzten Status gesetzt.
Standard: -, gültige Werte: <port>=on|off|last wobei <port> = 0 - 7
Ermöglicht die Verwendung eines SHT21 I2C Feuchtesensors von Sensirion.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_SHT21 [<I2C Address>]
Der Wert <I2C Address> ist ein zweistelliger Hex-Wert
Set
set <name> readValues
Aktuelle Temperatur und Feuchte Werte vom Sensor lesen.
Attribute
poll_interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: 5, gültige Werte: 1,2,5,10,20,30
roundHumidityDecimal, roundTemperatureDecimal
Anzahl Dezimalstellen für den Feuchte-, oder Temperaturwert
Standard: 1, gültige Werte: 0 1 2
Ermöglicht die Verwendung eines SHT30/SHT31 I2C Feuchtesensors von Sensirion.
I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM
oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden. Das Attribut IODev muss definiert sein. Define
define <name> I2C_SHT3x [<I2C Address>]
Der Wert <I2C Address> ist ein zweistelliger Hex-Wert:
ADDR (Pin 2) verbunden mit VSS (Versorgungsspannung): 0x44 (Standardwert, wenn <I2C Address> nicht angegeben)
ADDR (pin 2) verbunden mit VDD (Masse): 0x45
Für kompatible Sensoren können auch andere Werte als 0x44 oder 0x45 angegeben werden.
Set
set <name> readValues
Aktuelle Temperatur und Feuchte Werte vom Sensor lesen.
Attribute
poll_interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: 5, gültige Werte: 1,2,5,10,20,30
roundHumidityDecimal, roundTemperatureDecimal
Anzahl Dezimalstellen für den Feuchte- oder Temperaturwert
Standard: 1, gültige Werte: 0 1 2
IF (<Bedingung>) (<FHEM-Kommandos1>) ELSE (<FHEM-Kommandos2>)
Es werden <FHEM-Kommandos1> ausgeführt, wenn <Bedingung> erfüllt ist, sonst werden <FHEM-Kommanodos2> ausgeführt.
Beim IF-Befehl (IF in Großbuchstaben) handelt es sich um einen FHEM-Befehl. Der Befehl kann überall dort genutzt werden, wo FHEM-Befehle vorkommen dürfen.
Im Gegensatz zu Perl-if (if in Kleinbuchstaben) bleibt man auf der FHEM-Ebene und muss nicht auf die Perl-Ebene, um FHEM-Befehle mit Hilfe der fhem-Funktion auszuführen.
IF ist kein eigenständig arbeitendes Modul, sondern ein FHEM-Befehl, der nur in Kombination mit anderen Modulen, wie z. B. notify oder at, sinnvoll eingesetzt werden kann.
Es gibt inzwischen ein neueres DOIF-Modul, welches auf der Syntax vom IF-Befehl aufbaut.
Es arbeitet im Gegensatz zu IF als Modul selbstständig ereignis- und zeitgesteuert ohne notify bzw. at. Damit lassen sich viele Problemlösungen eleganter, jeweils mit einem einzigen Modul, realisieren.
In der Bedingung des IF-Befehls wird die vollständige Syntax des Perl-if unterstützt. Stati und Readings von Devices werden in eckigen Klammern angegeben.
Beispiele:
IF in Kombination mit at-Modul, Readingangabe [<Device>:<Reading>] in der Bedingung:
define check at +00:10 IF ([outdoor:humidity] > 70) (set switch1 off) ELSE (set switch1 on)
IF Statusabfrage des Devices "outdoor" in der Bedingung:
define check at +00:10 IF ([outdoor] eq "open") (set switch1 on)
entspricht mit Angabe des Internals mit &:
define check at +00:10 IF ([outdoor:&STATE] eq "open") (set switch1 on)
Wenn der Reading "state" abgefragt werden soll, dann wird der Readingname ohne & angegeben:
define check at +00:10 IF ([outdoor:state] eq "open") (set switch1 on)
Geschachtelte Angabe von mehreren IF-Befehlen kann in mehreren Zeilen mit Einrückungen zwecks übersichtlicher
Darstellung über FHEM-Weboberfläche in der DEF-Eingabe eingegeben werden.
Die erste Zeile "define test notify lamp " muss mit einem Leerzeichen enden, bevor die Zeile mit Enter umgebrochen wird - das ist eine Eigenschaft von notify und nicht von IF:
define test notify lamp
IF ([lamp] eq "on") (
IF ([outdoor:humidity] < 70)
(set lamp off)
ELSE
(set lamp on)
) ELSE
(set switch on)
Mehrzeilige Eingaben in der cfg-Datei müssen dagegen jeweils am Zeilenende mit \ verknüpft werden (das ist eine Eigenschaft von FHEM und nicht von IF):
define test notify lamp \
IF ([lamp] eq "on") (\
IF ([outdoor:humidity] < 70)\
(set lamp off)\
ELSE\
(set lamp on)\
) ELSE\
(set switch on)
Filtern nach Zahlen im Reading "temperature":
define settemp at 22:00 IF ([tempsens:temperature:d] >= 10) (set heating on)
Filtern nach "on" und "off" im Status des Devices "move":
define activity notify move IF ([move:&STATE:[(on|off)]] eq "on" and $we) (set lamp off)
Beispiel für die Nutzung des Status eines Devices im Ausführungsteil. Hier: "lamp1" wird mit dem Status von "lamp2" geschaltet:
define temp at 18:00 IF ([outdoor:temperature] > 10) (set lamp1 [lamp2])
Falls bei einem FHEM-Befehl ein Perl-Ausdruck mit Readings zuvor ausgewertet werden soll, so muss er in geschweifte und runde Klammern gesetzt werden.
Beispiel: Wenn um 18:00 Uhr die Außentemperatur höher ist als 10 Grad, dann wird die Solltemperatur um 1 Grad erhöht.
define temp at 18:00 IF ([outdoor:temperature] > 10) (set thermostat desired-temp {([thermostat:desired-temp:d]+1)})
Mehrerer Befehle werden durch ein Komma statt durch ein Semikolon getrennt, dadurch entfällt das Doppeln, Vervierfachen usw. des Semikolons:
define check at +00:10 IF ([outdoor:humidity] > 10) (set switch1 off,set switch2 on) ELSE (set switch1 on,set switch2 off)
Falls ein Komma im FHEM-Ausdruck vorkommt, muss dieser zusätzlich geklammert werden, damit das Komma nicht als Trennzeichen erkannt wird:
define check at +00:10 IF ([outdoor:humidity] > 10) ((set switch1,switch2 off))
IF in Kombination mit einem define at mit mehreren set-Befehlen (Eingabe muss wegen der Semikolons im DEF-Editor erfolgen,
einfaches Semikolon ist nicht erlaubt - es würde vom FHEM-Parser "geschluckt" werden und beim IF nicht mehr ankommen):
define check at *10:00 IF ([indoor] eq "on") (define a_test at +00:10 set lampe1 on;;set lampe2 off;;set temp desired 20)
Man kann die Problematik des Doppelns von Semikolons wie folgt umgehen:
define check at *10:00 IF ([indoor] eq "on") (define a_test at +00:10 IF (1) (set lampe1 on,set lampe2 off,set temp desired 20))
Das Komma als Trennzeichen zwischen den FHEM-Befehlen lässt sich mit ;; kombinieren, z. B.:
define check at *10:00 IF ([indoor] eq "on") (set lamp1 on,define a_test at +00:10 set lampe2 on;;set lampe3 off;;set temp desired 20)
sleep kann mit Komma verwendet werden, dabei wirkt das sleep nicht blockierend:
define check at *10:00 IF ([indoor] eq "on") (sleep 2,set lampe1 on,sleep 3,set lampe2 on)
Zeitabhängig schalten: In der Zeit zwischen 20:00 und 22:00 Uhr soll das Licht ausgehen, wenn es an war und ich den Raum verlasse:
define n_lamp_off notify sensor IF ($hms gt "20:00" and $hms lt "22:00" and [sensor] eq "absent") (set lamp:FILTER=STATE!=off off)
Kombination von Perl und FHEM-Befehlen ($NAME sowie $EVENT können ebenso benutzt werden):
define mail notify door:open IF ([alarm] eq "on")({system("wmail $NAME:$EVENT")},set alarm_signal on)
Der IF-Befehl dient in erster Linie zur Vereinfachung der Schreibweise in Kombination mit anderen FHEM-Modulen wie at, notify oder DOIF.
Intern wird der IF-Befehl zur Ausführung in einen Perl if-Befehl umgesetzt. Das soll anhand von Beispielen verdeutlicht werden:
Das InterTechno 433MHZ Protokoll wird von einer Vielzahl von Geräten
benutzt. Diese gehören entweder zur Kategorie Sender/Sensoren oder zur
Kategorie Empfänger/Aktoren. Es ist das Senden sowie das Empfangen von InterTechno
Befehlen möglich. Geräten kötnnen z.B.
Schalter, Dimmer usw. sein.
Von diesem Modul wird sowohl das Protolkoll 1 sowie das Protokoll 3 unterstützt.
Neu empfangene Pakete werden per autocreate in Fhem unter der Kategorie IT angelegt.
Hinweis: Für ein AutoCreate muss die Taste innerhalb von 30 Sek 2 mal gedrückt werden.
Define
define <name> IT <housecode> <on-code> <off-code>
[<dimup-code>] [<dimdown-code>] oder define <name> IT <ITRotarySwitches|FLS100RotarySwitches> oder define <name> IT <Adresse 26 Bit> <Group bit> <Unit Code> oder define <name> IT HE800 <Transmitter ID> <Receiver ID>
Der Wert von Hauscode ist abhängig vom verwendeten Gerät und besteht aus zehn Ziffern InterTechno-Code Protokoll 1.
Da dieser ein tri-State-Protokoll ist, können die Ziffern jeweils die Werte 0/1/F annehmen.
Bit 11/12 werden für Schalten oder Dimmen verwendet. Da die Hersteller verschiedene Codes verwenden, können hier die
(2-stelligen) Codes für an, aus, heller und dunkler (on/off/dimup/dimdown) als tri-State-Ziffern (0/1/F) festgelegt werden.
Der Wert des ITRotary-Schalters setzt sich aus dem Wert des Buchstaben-Schalters A-P und dem numerischen Schalter 1-16
des InterTechno-Gerätes zusammen, z.B. A1 oder G12.
Der Wert des FLS100Rotary-Schalters setzt sich aus dem Wert des Schalters I,II,II,IV und dem numerischen Schalter 1-4
des InterTechno-Gerätes zusammen, z.B. I2 oder IV4.
Die Werte der ITRotary-Schalter und FLS100Rotary-Schalter werden intern in Hauscode-Werte umgewandelt.
Für Intertechno Protokoll 3 besteht der Hauscode aus 26 Ziffern. Zusätzlich werden noch 4 Ziffern als Unit Code sowie eine Ziffer als Group code benötigt.
Neues IT Element in FHEM anlegen: define IT myITSwitch IT
Intertechno Protokoll 1 (ITv1)
<housecode> 10 Ziffern lange tri-State-Zahl (0/1/F) abhängig vom benutzten Gerät.
<on-code> <off-code> jeweils 2 Ziffern lange quad-State-Zahl (0/1/F/D), die den Einschaltbefehl enthält;
die Zahl wird an den <housecode> angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
optional <dimup-code> <dimdown-code> jeweils 2 Ziffern lange quad-State-Zahl (0/1/F/D),
die den Befehl zum Herauf- und Herunterregeln enthält;
die Zahl wird an den <housecode> angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
Hinweis: orginal ITv1 devices werden nur beim on Befehl angelegt.
Die nicht orginal ITv1 devices können wie folgt angelegt werden:
Zum anlegen mit autocreate 2 mal auf "on" drücken: 2016.11.27 11:47:37.753 4: sduinoD IT: 001F001000 not defined (Switch code: 11) 2016.11.27 11:47:37.755 2: autocreate: define IT_001F001000 IT 001F001000 0F F0
Nun auf "off" oder eine andere Taste drücken: 2016.11.27 11:48:32.004 3: sduinoD IT: Code 1D not supported by IT_001F001000.
Da dies keine orginal Intertechno Steckdose ist, passt der on/off code im define nicht und muss angepasst werden DEF 001F001000 11 1D
EV1527
Wenn im housecode ein nicht gültiger (10) ITv1 Tristatecode enthalten ist, dann wird es per autocreate als EV1527 angelegt. <housecode> 1527xabcde , abcde ist der empfangene housecode im Hex Format <on-code> <off-code> jeweils 4 Ziffern lange Bin Zahl (0/1), die den Einschaltbefehl enthält;
die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
optional <dimup-code> <dimdown-code> jeweils 4 Ziffern lange Bin Zahl (0/1),
die den Befehl zum Herauf- und Herunterregeln enthält;
die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
Nach dem anlegen per autocreate muss noch der on/off- und optional der dimcode beim define (DEF) angepasst werden.
SBC_FreeTec
<housecode> 8 Ziffern lange tri-State-Zahl (0/1/F) abhängig vom benutzten Gerät.
<on-code> 4 Ziffern lange tri-State-Zahl, die den Einschaltbefehl enthält;
die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
<off-code> 4 Ziffern lange tri-State-Zahl, die den Ausschaltbefehl enthält;
die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
define lamp IT 01FF010101 11 00 01 10 define roll1 IT 111111111F 11 00 01 10 define otherlamp IT 000000000F 11 10 00 00 define otherroll1 IT FFFFFFF00F 11 10 define IT_1527xe0fec IT 1527xe0fec 1001 0000 define SBC_FreeTec_Steck1 IT FFF00FFF 000F 0000 define itswitch1 IT A1 define lamp IT J10 define flsswitch1 IT IV1 define lamp IT II2 define HE800_TID1_SW1 IT HE800 1 1
Für Intertechno Protokoll 3 (ITv3) ist der <housecode> eine 26-stellige Zahl. Zusätzlich wird noch ein 1 stelliger Gruppen-Code, sowie
ein 4-stelliger <unit code> verwendet.
<address> ist eine 26-stellige Nummer (0/1)
<group> ist eine 1-stellige Nummer (0/1)
<unit> ist eine 4-stellige Nummer (0/1)
Beispiele:
define myITSwitch IT 00111100110101010110011111 0 0000
Set
set <name> <value> [<time>]
wobei value eines der folgenden Schlüsselwörter ist:
set lamp on set lamp1,lamp2,lamp3 on set lamp1-lamp3 on set lamp off
Anmerkungen:
on-till erfordert eine Zeitangabe im "at"-Format (HH:MM:SS, HH:MM
oder { <perl code> }, wobei dieser Perl-Code eine Zeitangabe zurückgibt).
Ist die aktuelle Zeit größer als die Zeitangabe, wird der Befehl verworfen,
andernfalls wird ein Einschaltbefehl gesendet und für die Zeitangabe ein
Ausschaltbefehl mittels "at"-Befehl angelegt.
Get
N/A (nicht vorhanden)
Attributes
IODev
Spezifiziert das physische Gerät, das die Ausstrahlung der Befehle für das
"logische" Gerät ausführt. Ein Beispiel für ein physisches Gerät ist ein CUL oder ein SIGNALduino.
Anmerkung: Beim Start weist fhem einem InterTechno-Gerät kein IO-Gerät zu.
Das Attribut IODev ist daher IMMER zu setzen.
eventMap
Ersetzt Namen von Ereignissen (wie on und off) und set-Parametern. Die Liste besteht dabei
aus mit Doppelpunkt verbundenen Wertepaaren, die durch Leerzeichen getrennt
sind. Der erste Teil des Wertepaares ist der zu ersetzende Wert, der zweite der neue/gewünschte Wert.
Man kann Leerzeichen innerhalb der neuen/gewünschten Werte verwenden, muss dann aber Fhem signalisieren, dass das die Werte nicht mehr durch Leerzeichen getrennt werden. Die geschieht, indem das erste Zeichen der Werteliste ein Komma (,) oder ein Schrägsstrich (/) wird. Dieses Komma bzw der Schrägstrich werden dann als Listenzeichen verwendet. Beispiele:
attr store eventMap on:open off:closed
attr store eventMap /on-for-timer 10:open/off:closed/
set store open
dummy
Mit der Eigenschaft dummy lassen sich Geräte definieren, die keine physikalischen Befehle
senden sollen. Verknüpfte notifys werden trotzdem ausgeführt. Damit kann z.B. auf Sendebefehle
reagiert werden, die über die Weboberfläche ausgelöst wurden, ohne dass der Befehl physikalisch
gesendet wurde.
model
Hiermit kann das Modell des IT-Geräts näher beschrieben werden. Diese
Eigenschaft wird (im Moment) nicht von Fhem ausgewertet.
Mit Hilfe dieser Information können externe Programme oder Web-Interfaces
Geräteklassen unterscheiden, um geeignete Kommandos zu senden (z.B. "on"
oder "off" an Schalter, aber "dim..%" an Dimmer usw.). Die Schreibweise
der Modellbezeichnung sollten der dem Gerät mitgelieferten Dokumentation
in Kleinbuchstaben ohne Leerzeichen entsprechen.
Andere Zeichen als a-z 0-9 und - (Bindestrich)
sollten vermieden werden. Dies ist die Liste der "offiziellen" Modelltypen: Sender/Sensor: itremote Dimmer: itdimmer Empfänger/Actor: itswitch EV1527: ev1527
ignore
Durch das Setzen dieser Eigenschaft wird das Gerät nicht durch Fhem beachtet,
z.B. weil es einem Nachbarn gehört. Aktivitäten dieses Gerätes erzeugen weder
Log-Einträge noch reagieren notifys darauf, erzeugte Kommandos werden ignoriert
(wie bei Verwendung des Attributes dummy werden keine
Signale gesendet). Das Gerät ist weder in der Ausgabe des list-Befehls enthalten
(außer es wird explizit aufgerufen), noch wird es bei Befehlen berücksichtigt,
die mit Platzhaltern in Namensangaben arbeiten (siehe devspec).
Sie werden weiterhin mit der speziellen devspec (Gerätebeschreibung) "ignored=1" gefunden.
ITclock
ITclock ist die kleinste Basispulslänge beim Senden des Intertechno V1 Protokolls.
Ein Signal beim IT-Protokoll besteht immer aus einer Sequenz von HIGH und LOW, die mit einer bestimmten Pulslänge gesendet werden. Typischerweise stehen die Pulslängen dabei im Verhältnis 1:3 (also z.B. LOW=Basispulslänge und HIGH=3*Basispulslänge).
Voreingestellt ist 250 für Original-IT-Geräte. Andere Hersteller verwenden manchmal andere Werte, dennoch sollte ITclock nur dann verändert werden, wenn es Probleme beim Schalten mit Fhem gibt. Achten Sie in dem Fall auch darauf, ob nicht vielleicht das Signal zu schwach ist oder gestört wird, um regelmässig empfangen zu werden.
- Hier ist eine Beschreibung für die Ermittlung des ITclock beim Signalduino: Nach Drücken einer Taste an der Fernbedienung steht die empfangene raw Nachricht im log und in der device-Ansicht des IT-device, also etwa
MS;P0=357;P2=-1128;P3=1155;P4=-428;P5=-11420;D=05023402020202020202020202020202020202023402340234;CP=0;SP=5;
Die Ziffer hinter "CP=" gibt die Pattern-Nr des clock an, also z.B. folgt aus CP=0 --> P0, das am Anfang der Nachricht definiert ist, hier ist also die clock 357.
- Beim CUL kann die ITclock aus den raw Daten (X31) ermittelt werden.
ITfrequency
Setzt die Sendefrequenz.
ITrepetition
Setzt die Sendewiederholungen (Default=6).
userV1setCodes
Damit können beim ITv1 Protokoll eigene setcodes zugefügt werden. Beispiele:
Dieses Modul liest Daten von Messgeräten (z.B. Stromzähler, Gaszähler oder Wärmezähler, so genannte Smartmeter),
welche OBIS kompatible Daten im JSON-Format auf einem Webserver oder auf dem FHEM-Dateisystem zur Verfügung stellen.
Für detaillierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.
[Abfrageintervall]
Optional. Standardmäßig 300 Sekunden. Der kleinste mögliche Wert ist 30.
Bei 0 kann die Geräteabfrage nur manuell gestartet werden.
<Gerätetyp>
Definiert den Pfad und den Port, um die JSON-Datei einzulesen.
Mit dem Attribute 'pathString' können Login Information an den URL-Pfad von vordefinierten Geräte angehangen werden.
ITF - FROETEC Simplex ME Eintarifzähler (N-ENERGY) (ITF Fröschl)
EFR - EFR Smart Grid Hub für Stromzähler (EON, N-ENERGY, EnBW)
Die Login-Information wird über das Attribute 'pathstring' angegeben.
?LogName=Benutzer&LogPSWD=Passwort
url - benutzt die URL, welche durch das Attribut 'pathString' und 'port' definiert wird.
file - benutzt die Datei, welche durch das Attribut 'pathString' definiert wird (im FHEM Dateisystem)
Set
activeTariff < 0 - 9 >
Erlaubt die gezielte, separate Erfassung der statistischen Verbrauchswerte (doStatistics = 1) für verschiedene Tarife (Doppelstromzähler), wenn der Stromzähler dies selbst nicht unterscheiden kann (z.B. LS110) oder wenn geprüft werden soll, ob ein zeitabhängiger Tarif preiswerter wäre. Dieser Wert muss entsprechend des vorhandenen oder geplanten Tarifes zum jeweiligen Zeitpunkt z.B. durch den FHEM-Befehl "at" gesetzt werden.
0 = tariflos
INTERVAL <Abfrageinterval>
Abfrageinterval in Sekunden
resetStatistics <statWerte>
Löscht die ausgewählten statisischen Werte: all, statElectricityConsumed..., statElectricityConsumedTariff..., statElectricityPower...
restartJsonAnalysis
Neustart der Analyse der json-Datei zum Auffinden bekannter Gerätewerte (kompatibel zum OBIS Standard).
Diese Analysie wird normaler Weise nur einmalig durchgeführt, nachdem Gerätewerte gefunden wurden.
statusRequest
Aktualisieren der Gerätewerte
Get
jsonFile
Liest die JSON-Datei ein und zeigt sie an.
jsonAnalysis
Extrahiert die JSON-Daten und zeigt das Resultat der JSON-Analyse.
Attributes
alwaysAnalyse < 0 | 1 >
Führt bei jeder Abfrage der Gerätewerte eine Analyse der JSON-Datenstruktur durch.
Dies ist sinnvoll, wenn sich die JSON-Struktur ändert. Normalerweise wird die analysierte Struktur
zwischengespeichert, um die CPU-Last gering zu halten.
doStatistics < 0 | 1 >
Bildet tägliche, monatliche und jährliche Statistiken bestimmter Gerätewerte (Mittel/Min/Max oder kumulierte Werte).
Für grafische Auswertungen können die Werte der Form 'statReadingNameLast' genutzt werden.
pathString <Zeichenkette>
Gerätetyp 'file': definiert den lokalen Dateinamen und -pfad
Gerätetyp 'url': Definiert den URL-Pfad
Andere: Kann benutzt werden um Login-Information zum URL Pfad von vordefinierten Geräten hinzuzufügen
port <Nummer>
Beim Gerätetyp 'url' kann hier der URL-Port festgelegt werden. (standardmäßig 80)
timeOut <Sekunden>
Gibt an, nach wieviel Sekunden das Einlesen der Rohdaten abgebrochen werden soll. (standardmäßig 10)
Die Laufzeit des Einlesevorganges wird bei "get <device> jsonFile" angezeigt.
Dieses Modul verbindet sich mit dem Jabber Netzwerk, sendet und empfängt Nachrichten von und zu einem Jabber Server.
Jabber ist eine andere Beschreibung für "XMPP", ein Kommunikationsprotokoll für Nachrichtenorientierte "middleware", basierend
auf XML.
Fester bestandteil des Protokolls ist die Verschlüsselung zwischen Client und Server.
Für den Benutzer ist es ähnlich anderer Chat-Plattformen wie zum Beispiel dem facebook Chat, ICQ oder Google Hangouts -
jedoch frei Verfügbar, open Source und normalerweise Verschlüsselt (was Serverabhängig ist).
Für dieses Modul brauchst du einen Account auf einem Jabber Server. Kostenlose accounts und Server findet man unter jabber.org
Diskussionen zu diesem Modul findet man im FHEM Forum hier.
Dieses Modul benötigt die folgenden Perl Module (inkl. SSL Möglichkeit)
Net::Jabber
Net::XMPP
Authen::SASL
XML::Stream
Net::SSLeay
Seit Version 1.5 kann dieses Modul in Multi-User-Channel (sogenannte MUC) beitreten und Off-the-Record (OTR) Ende-zu-Ende Verschlüsselung benutzen.
Wenn du OTR benutzen möchtest musst du dir Crypt::OTR von CPAN selbst installieren.
OTR ist nochmal ein zusätzlicher Sicherheitsrelevater Punkt, da die Kommunikation wirklich von Endgerät zu FHEM verschlüsselt wird und man sich nicht auf die Jabber Server Transportverschlüsselung verlassen muss.
set <name> msg <username> <msg>
Sendet eine Nachricht "msg" an den Jabberuser "username"
Beispiel:
set JabberClient1 msg myname@jabber.org It is working!
set <name> msgmuc <channel> <msg>
Sendet eine Nachricht "msg" an dieJabber-MUC-Gruppe "channel".
Dabei wird ein eventuell mitgegebener Nickname von "channel" entfernt, so kann man direkt das Reading LastMessageJID benutzen.
Beispiel:
set JabberClient1 msgmuc roomname@jabber.org Woot!
set <name> msgotr <username> <msg>
Sendet eine OTR verschlüsselte Nachricht an den "username", wenn keine aktive OTR Sitzung aufgebaut ist, wird versucht eine aufzubauen.
Wenn der Empfänger OTR nicht versteht, wird die Nachricht verworfen, d.h. sie wird auf keinen Fall im Klartext übertragen.
Beispiel:
set JabberClient1 msgotr myname@jabber.org Wir sehen uns heute um 18:00 Uhr :*
set <name> subscribe <username>
Frägt eine Authorisierung beim "username" an (normalerweise wird das nicht benötigt)
Beispiel:
set JabberClient1 subscribe myname@jabber.org
Get
N/A
Attribute
OnlineStatus available|unavailable
Setzt den Online-status, ob der Client anderen gegenüber Online ist (available) oder Offline erscheint (unavailable)
Es ist möglich dass einige Server eingehende Nachrichten trotzdem FHEM zustellen obwohl er "unavailable" ist
Standard: available
ResourceName <name>
In der Jabber-Welt kann ein Client mit einem Usernamen öfter mit einem Server verbunden sein (z.b. Handy, Computer, FHEM).
Der "resource name" ergibt die finale Jabber-ID und macht die verschiedenen Verbindungen einzigartig (z.B. bios@jabber.org/FHEM).
Hier kannst du den "resource name" setzen.
Standard: FHEM
PollTimer <seconds>
Dies ist der Intervall in der überprüft wird ob neue Nachrichten zur Verarbeitung beim Jabber Server anstehen.
Ebenfalls wird hiermit die Verbindung zum Server überprüft (Timeouts, DSL Disconnects etc.).
Setze es nicht über 10 Sekunden, die Verbindung kann sonst die ganze Zeit getrennt werden, Sie wird zwar wieder aufgebaut, aber nach 10 Sekunden brechen die meisten Server die Verbindung automatisch ab.
Standard: 2
RecvWhitelist <Regex>
Nur wenn die Jabber-ID einer privaten empfangenen Nachricht auf diese Regex zutrifft, akzeptiert FHEM die Nachricht und gibt sie an Notifys weiter. Alles andere wird verworfen.
MucJoin channel1@server.com/mynick[:passwort]
Tritt dem MUC mit dem spezifizierten Nickname und dem optionalem Passwort bei.
Standard: nicht definiert
Beispiele:
Einen Raum betreten: channel1@server.com/mynick
Mehrere Räume betreten: channel1@server.com/mynick,channel2@server.com/myothernick
Einen Raum mit Passwort betreten: channel1@server.com/mynick:password
MucRecvWhitelist <Regex>
Selbe funktion wie RecvWhitelist, aber für Gruppenräume: Nur wenn die Regex zutrifft, wird die Nachricht verarbeitet. Alles andere wird ignoriert.
Standard: nicht definiert (keine Nachricht wird akzeptiert)
Beispiele:
Alle Nachrichten aller betretenen Räume erlauben: .*
Alle Nachrichten bestimmter betretenen Räume erlauben: mychannel@jabber.org
Nur bestimmte User in bestimmten betretenen Räumen erlauben: mychannel@jabber.org/NickOfFriend
OTREnable 1|0
Schaltet die Verschlüsselungsfunktionen von Crypt::OTR für sichere Ende-zu-Ende Kummunikation in FHEM an oder aus.
Es muss zwangsläufig dafür Crypt::OTR installiert sein. Ein Privater Schlüssel wird bei Erstbenutzung generiert, das kann mehr als 2 Stunden dauern!
Dafür ist das eine einmalige Sache und FHEM wird dadurch nicht blockiert. Im Device sieht man im OTR_STATE wenn der Private Schlüssel fertig ist.
Erst danach ist OTR aktiv.
Default: nicht definiert (OTR deaktiviert)
OTRSharedSecret aSecretKeyiOnlyKnow@@*
Optionales geheimes Passwort, dass man vom Endgerät an FHEM schicken kann um zu beweisen, dass es sich tatsächlich um FHEM handelt und nicht um einen
Hacker der sich (z.b. bei dem Internetprovider) zwischengeschaltet hat.
Normalerweise bekommt das Endgerät eine Warnung wenn sich an einer bereits verifizierten Verbindung etwas geändert hat.
Diese Warnung sollte man dann sehr ernst nehmen.
Default: nicht definiert, setze hier dein geheimes Passwort.
OTRMessage - Komplette entschlüsselte Nachricht inkl. JID und Text
OTRLastMessage - Nur der Textteil der Nachricht
OTRLastSenderJID - Nur die Sender-JID der Nachricht
MUC Raum Nachrichten (wenn MUCJoin gesetzt ist)
MucMessage - Komplette Nachricht (Raumname/Nickname und Text)
MucLastMessage - Nur der Textteil der Nachricht
MucLastSenderJID - Nur die Sender-JID der Nachricht
Notizen des Entwicklers:
Mit folgendem Notify-Beispiel kannst du auf eingehende Nachrichten reagieren, dieses Beispiel schickt das Reading "Temperatur" des Sensors "BU_Temperatur" bei jeder ankommenden Nachricht an den Sender zurück:
define Jabber_Notify notify JabberClient1:Message.* {
my $lastsender=ReadingsVal("JabberClient1","LastSenderJID","0");
my $lastmsg=ReadingsVal("JabberClient1","LastMessage","0");
my $temperature=ReadingsVal("BU_Temperatur","temperature","0");
fhem("set JabberClient1 msg ". $lastsender . " Temp: ".$temperature);
}
Auf MUC Nachrichten lässt sich folgend reagieren, Augenmerk darauf legen dass der Nickname aus $lastsender in der msgmuc Funktion entfernt wird, damit die Nachricht an den Raum geht
define Jabber_Notify notify JabberClient1:MucMessage.* {
my $lastsender=ReadingsVal("JabberClient1","LastSenderJID","0");
my $lastmsg=ReadingsVal("JabberClient1","LastMessage","0");
my $temperature=ReadingsVal("BU_Temperatur","temperature","0");
fhem("set JabberClient1 msgmuc ". $lastsender . " Temp: ".$temperature);
}
Auf OTR Nachrichten wird reagiert, wie auf normale private Nachrichten auch, jedoch wird mit der msgotr Funktion geantwortet:
define Jabber_Notify notify JabberClient1:OTRMessage.* {
my $lastsender=ReadingsVal("JabberClient1","LastSenderJID","0");
my $lastmsg=ReadingsVal("JabberClient1","LastMessage","0");
my $temperature=ReadingsVal("BU_Temperatur","temperature","0");
fhem("set JabberClient1 msgotr ". $lastsender . " Temp: ".$temperature);
}
JawboneUp
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: JawboneUp
JeeLink
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: JeeLink
Dieses Befehl sollte in der FHEMWEB oder telnet Eingabezeile ausgeführt
werden, kann aber auch direkt über HTTP abgerufen werden über
http://fhemhost:8083/fhem?cmd=jsonlist2&XHR=1
Es liefert die JSON Darstellung der internen Variablen, Readings und
Attribute zurück.
Wenn valueX angegeben ist, dann wird nur der entsprechende Internal (DEF,
TYPE, usw), Reading (actuator, measured-temp) oder Attribut
zurückgeliefert für alle Geräte die in devspec angegeben sind.
Achtung: die alte Version dieses Befehls (jsonlist, ohne 2 am Ende) is
überholt, und wird in der Zukunft entfernt.
KM271
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: KM271
KM273
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: KM273
KNX
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: KNX
KODI
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: KODI
KOPP_FC
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: KOPP_FC
KOSTALPIKO
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: KOSTALPIKO
Fhem kann KS300 bzw. KS555 Funktelegramme mit einem FHZ,
einem WS300 oder einem CUL empfangen.
Daher muss eines von diesen zuerst definiert sein. Dieses Modul behandelt
Nachrichten die mittels CUL oder FHZ empfangen werden.
<housecode> ist ein vierstelliger HEX-Wert, der aus
historischen Gründen angegeben werden muss, es wird ignoriert. Der
ml/raincounter hat einen Default-Wert von 255ml, und muss angegeben sein
wenn man den Wind-Faktor setzen will. Dieser hat einen Default-Wert von
1.0.
Beispiele:
rainadjustment
Wenn dieses Attribut gesetzt ist, Regenmesser resets werden automatisch
berücksichtigt. Resets treten beim Wechsel der Batterie und nach
Beobachtung einiger Benutzer auch nach zufälligen Schaltzyklen
auf. Die Voreinstellung ist 0 (aus).
KeyValueProtocol
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: KeyValueProtocol
Dieses Modul steuert SmartTV's des Herstellers LG welche zwischen 2012 und 2014 produziert wurden über die Netzwerkschnittstelle.
Es bietet die Möglichkeit den aktuellen TV Kanal zu steuern, sowie Apps zu starten, Fernbedienungsbefehle zu senden, sowie den aktuellen Status abzufragen.
Es werden alle TV Modelle unterstützt, welche mit der LG TV Remote Smartphone App steuerbar sind.
Bei der Definition eines LGTV_IP12-Moduls wird eine interne Routine in Gang gesetzt, welche regelmäßig
(einstellbar durch den optionalen Parameter <Status_Interval>; falls nicht gesetzt ist der Standardwert 30 Sekunden)
den Status des TV abfragt und entsprechende Notify-/FileLog-Definitionen triggert.
Sofern 2 Interval-Argumente übergeben werden, wird der erste Parameter <Off_Interval> genutzt
sofern der TV ausgeschaltet ist. Der zweiter Parameter <On_Interval>
wird verwendet, sofern der TV eingeschaltet ist.
Beispiel:
define TV LGTV_IP12 192.168.0.10
# Mit modifiziertem Status Interval (60 Sekunden)
define TV LGTV_IP12 192.168.0.10 60
# Mit gesetztem "Off"-Interval (60 Sekunden) und "On"-Interval (10 Sekunden)
define TV LGTV_IP12 192.168.0.10 60 10
Set-Kommandos
set <Name> <Kommando> [<Parameter>]
Aktuell werden folgende Kommandos unterstützt.
channel <Nummer> - wählt den aktuellen TV-Kanal aus
channelUp - schaltet auf den nächsten Kanal um
channelDown - schaltet auf den vorherigen Kanal um
removePairing - löscht das Pairing zwischen FHEM und dem TV
showPairCode - zeigt den Pair-Code auf dem TV-Bildschirm an. Dieser Code muss im Attribut pairingcode gesetzt werden, damit FHEM mit dem TV kommunizieren kann.
Aktuell stehen via GET lediglich die Werte der Readings zur Verfügung. Eine genaue Auflistung aller möglichen Readings folgen unter "Generierte Readings/Events".
Optionales Attribut zur Deaktivierung der zyklischen Status-Updates innerhalb von bestimmten Zeitintervallen.
Das Argument ist eine Leerzeichen-getrennte Liste von Minuszeichen-getrennten HH:MM Paaren (Stunde : Minute).
Falls die aktuelle Uhrzeit zwischen diese Werte fällt, dann werden zyklische Status-Updates, wie bei disable, ausgesetzt.
Statt HH:MM kann man auch HH oder HH:MM:SS angeben.
Um einen Intervall um Mitternacht zu spezifizieren, muss man zwei einzelne Intervalle angeben, z.Bsp.:
Dieses Attribut speichert den Pairing Code um sich gegenüber dem TV als vertrauenswürdigen Controller zu authentifizieren. Der Pairing-Code kann via Set-Kommando showPairCode angezeigt werden.
Generierte Readings/Events:
3D - Status des 3D-Wiedergabemodus ("true" => 3D Wiedergabemodus aktiv, "false" => 3D Wiedergabemodus nicht aktiv)
channel - Die Nummer des aktuellen TV-Kanals
channelName - Der Name des aktuellen TV-Kanals
currentProgram - Der Name der laufenden Sendung
input - Die aktuelle Eingangsquelle (z.B. Antenna, Sattelite, HDMI1, ...)
inputLabel - Die benutzerdefinierte Bezeichnung der aktuellen Eingangsquelle
Dieses Modul steuert SmartTV's des Herstellers LG mit dem Betriebssystem WebOS über die Netzwerkschnittstelle. Es bietet die Möglichkeit den aktuellen TV Kanal zu steuern, sowie Apps zu starten, Fernbedienungsbefehle zu senden, sowie den aktuellen Status abzufragen.
Definition define <name> LGTV_WebOS <IP-Addresse>
Bei der Definition eines LGTV_WebOS-Moduls wird eine interne Routine in Gang gesetzt, welche regelmäßig alle 15s den Status des TV abfragt und entsprechende Notify-/FileLog-Definitionen triggert.
Beispiel: define TV LGTV_WebOS 192.168.0.10
Set-Kommandos set <Name> <Kommando> [<Parameter>]
Aktuell werden folgende Kommandos unterstützt.
connect - Verbindet sich zum Fernseher unter der IP wie definiert, führt beim ersten mal automatisch ein pairing durch
pairing - Berechtigungsanfrage an den Fernseher, hier muss die Anfrage mit der Fernbedienung bestätigt werden
screenMsg <Text> - zeigt für ca 3-5s eine Nachricht auf dem Fernseher oben rechts an
mute on, off - Schaltet den Fernseher Stumm, je nach Anschluss des Audiosignals, muss dieses am Verstärker (AV Receiver) geschehen (siehe Volume)
volume 0-100, Schieberegler - Setzt die Lautstärke des Fernsehers, je nach Anschluss des Audiosignals, muss dieses am Verstärker (AV Receiver) geschehen (siehe mute)
volumeUp - Erhöht die Lautstärke um den Wert 1
volumeDown - Verringert die Lautstärke um den Wert 1
channelUp - Schaltet auf den nächsten Kanal um
channelDown - Schaltet auf den vorherigen Kanal um
getServiceList - Fragrt die Laufenden Dienste des Fernsehers an (derzeit noch in Beta-Phase)
on - Schaltet den Fernseher ein, wenn WLAN oder LAN ebenfalls im Aus-Zustand aktiv ist (siehe Bedienungsanleitung da Typabhängig)
off - Schaltet den Fernseher aus, wenn eine Connection aktiv ist
launchApp <Anwendung> - Aktiviert eine Anwendung aus der Liste (Maxdome, AmazonVideo, YouTube, Netflix, TV, GooglePlay, Browser, Chili, TVCast, Smartshare, Scheduler, Miracast, TV) Achtung: TV ist hier eine Anwendung, und kein Geräteeingang
3D on,off - 3D Modus kann hier ein- und ausgeschaltet werden, je nach Fernseher können mehrere 3D Modi unterstützt werden (z.B. Side-by-Side, Top-Bottom)
clearInputList - Löscht die Liste der Geräteeingänge
input - Wählt den Geräteeingang aus (Abhängig von Typ und angeschossenen Geräten) Beispiele: extInput_AV-1, extInput_HDMI-1, extInput_HDMI-2, extInput_HDMI-3)
Get-Kommandosget <Name> <Readingname>
Aktuell stehen via GET lediglich die Werte der Readings zur Verfügung. Eine genaue Auflistung aller möglichen Readings folgen unter "Generierte Readings/Events".
Attribute
disable
Optionales Attribut zur Deaktivierung des zyklischen Status-Updates. Ein manuelles Update via statusRequest-Befehl ist dennoch möglich.
Optionales Attribut zur Deaktivierung der zyklischen Updates des TV-Guides, dieses beansprucht je nach Hardware einigen Netzwerkverkehr und Prozessorlast
Die Luxtronik 2.0 and 2.1 ist eine Heizungssteuerung der Firma Alpha InnoTec AIT, welche in Wärmepumpen von Alpha InnoTec, Buderus (Logamatic HMC20, HMC20 Z), CTA All-In-One (Aeroplus), Elco, Nibe (AP-AW10), Roth (ThermoAura®, ThermoTerra), Novelan (WPR NET) und Wolf Heiztechnik (BWL/BWS) verbaut ist. Sie besitzt einen Ethernet (RJ45) Anschluss, so dass sie direkt in lokale Netzwerke (LAN) integriert werden kann.
Das Modul wurde bisher mit folgender Steuerung-Firmware getestet: V1.51, V1.54C, V1.60, V1.64, V1.69, V1.70, V1.73, V1.77, V1.80, V1.81.
Mehr Infos im entsprechenden Artikel der FHEM-Wiki.
Define
define <name> LUXTRONIK2 <IP-Adresse[:Port]> [Abfrageintervall]
Wenn das Abfrage-Interval nicht angegeben ist, wird es auf 300 (Sekunden) gesetzt. Der kleinste mögliche Wert ist 10.
Die Angabe des Portes kann gewöhnlich entfallen.
Beispiel: define Heizung LUXTRONIK2 192.168.0.12 600
Set
Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpen mit ungetesteter Firmware nicht unabsichtlich beschädigt werden.
activeTariff < 0 - 9 >
Erlaubt die gezielte, separate Erfassung der statistischen Verbrauchswerte (doStatistics = 1) für verschiedene Tarife (Doppelstromzähler)
Dieser Wert muss entsprechend des vorhandenen oder geplanten Tarifes zum jeweiligen Zeitpunkt z.B. durch den FHEM-Befehl "at" gesetzt werden.
0 = tariflos
heatingCurveEndPoint <Temperatur>
Einstellung des Heizkurven-Parameters. In 0.1er Schritten einstellbar.
heatingCurveOffset <Temperatur>
Einstellung des Heizkurven-Parameters. In 0.1er Schritten einstellbar.
heatingSystemCircPumpDeaerate <on | off>
Schaltet die Umwälzpumpe des Heizkreislaufes an oder aus. Damit werden auch im Sommer alle Heizkreise auf gleicher Temperatur gehalten und es findet eine geringfügige Umverteilung von Wärme und Kühle statt.
Achtung! Es wird die Entlüftungsfunktion der Steuerung genutzt. Dadurch taktet die Pumpe jeweils 5 Minuten ein und 5 Minuten aus.
hotWaterCircPumpDeaerate <on | off>
Schaltet die externe Warmwasser-Zirkulationspumpe an oder aus. Durch die Zirkulation wird das Abkühlen des Warmwassers in den Hausleitungen verhindert. Der Wärmeverbrauch steigt jedoch drastisch.
Achtung! Es wird die Entlüftungsfunktion der Steuerung genutzt. Dadurch taktet die Pumpe jeweils 5 Minuten ein und 5 Minuten aus.
hotWaterTemperatureTarget <Temperatur>
Soll-Temperatur des Heißwasserspeichers in °C
opModeHotWater <Betriebsmodus>
Betriebsmodus des Heißwasserspeichers ( Auto | Party | Off )
resetStatistics <statWerte>
Löscht die ausgewählten statistischen Werte: all, statBoilerGradientCoolDownMin, statAmbientTemp..., statElectricity..., statHours..., statHeatQ...
returnTemperatureHyst <Temperatur>
Sollwert-Hysterese der Heizungsregelung. 0.5 K bis 3 K. In 0.1er Schritten einstellbar.
returnTemperatureSetBack <Temperatur>
Absenkung oder Anhebung der Rücklauftemperatur von -5 K bis + 5K. In 0.1er Schritten einstellbar.
INTERVAL <Sekunden>
Abfrageintervall in Sekunden
statusRequest
Aktualisieren der Gerätewerte
synchClockHeatPump
Abgleich der Uhr der Steuerung mit der FHEM Zeit. Diese Änderung geht verloren, sobald die Steuerung ausgeschaltet wird!!
Get
heatingCurveParameter <Aussentemp1 Solltemp1 Aussentemp2 Solltemp2>
Ermittelt rekursiv anhand zweier Punkte auf der Heizkurve die entsprechenden Heizkurven-Parameter heatingCurveEndPoint und heatingCurveOffset.
Diese können dann über die entsprechenden set-Befehl einstellt werden.
rawData
Zeigt alle von der Steuerung auslesbaren Parameter und Betriebswerte an.
Diese können dann mit den Attributen userHeatpumpParameters und userHeatpumpValues einem Gerätewert zugeordnet werden.
Attribute
allowSetParameter < 0 | 1 >
Die internen Parameter der Wärmepumpensteuerung können
nur geändert werden, wenn dieses Attribut auf 1 gesetzt ist.
autoSynchClock <Zeitunterschied>
Die Uhr der Wärmepumpe wird automatisch korrigiert, wenn ein gewisser Zeitunterschied (10 s - 600 s)
gegenüber der FHEM Zeit erreicht ist. Zuvor wird die Kompatibilität der Firmware überprüft. (Ein Gerätewert 'delayDeviceTimeCalc' <= 2 s ist auf die internen Berechnungsintervalle der
Wärmepumpensteuerung zurückzuführen.)
compressor2ElectricalPowerWatt
Betriebsleistung des zweiten Kompressors zur Berechnung der Arbeitszahl (erzeugte Wärme pro elektrische Energieeinheit)
und Abschätzung des elektrischen Verbrauches (Auswertungen noch nicht implementiert)
doStatistics < 0 | 1 | 2 >
Berechnet statistische Werte: statBoilerGradientHeatUp, statBoilerGradientCoolDown,
statBoilerGradientCoolDownMin (Wärmeverlust des Boilers)
Bildet tägliche, monatliche und jährliche Statistiken bestimmter Gerätewerte.
Für grafische Auswertungen können die Werte der Form 'statReadingNameLast' genutzt werden.
heatPumpElectricalPowerWatt <E-Leistung in Watt>
Elektrische Leistungsaufnahme der Wärmepumpe in Watt bei einer Vorlauftemperatur von 35°C zur Berechnung der Arbeitszahl (erzeugte Wärme pro elektrische Energieeinheit)
und Abschätzung des elektrischen Verbrauches
heatPumpElectricalPowerFactor
Änderung der elektrischen Leistungsaufnahme pro 1 K Vorlauf-Temperaturdifferenz zu 35°C
(z.B. 2% pro 1 K = 0,02)
heatRodElectricalPowerWatt <E-Leistung in Watt>
Elektrische Leistungsaufnahme der Heizstäbe in Watt zur Abschätzung des elektrischen Verbrauches
ignoreFirmwareCheck < 0 | 1 >
Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpen
mit ungetesteter Firmware nicht unabsichtlich beschädigt werden. Wenn dieses Attribute auf 1
gesetzt ist, dann wird der Firmware-Test ignoriert und neue Firmware kann getestet werden.
Dieses Attribut wird jedoch ignoriert, wenn die Steuerung-Firmware bereits als nicht kompatibel berichtet wurde.
statusHTML
Wenn gesetzt, dann wird ein HTML-formatierter Wert "floorplanHTML" erzeugt,
welcher vom Modul FLOORPLAN genutzt werden kann.
Momentan wird nur geprüft, ob der Wert dieses Attributes ungleich NULL ist,
der entsprechende Gerätewerte besteht aus dem aktuellen Wärmepumpenstatus und der Warmwassertemperatur.
userHeatpumpParameters <Index [Name][,Index2 [Name2],Index3 [Name3] ...]>
Erlaubt das Auslesen der Werte benutzerspezifischer Parameter. Die Indizes der verfügbaren Parameterwerte können mit dem get-Befehl rawData ermittelt werden.
In der Attributdefinition kann der Name hinter den Index getrennt durch ein Leerzeichen geschrieben werden. Der jeweilige Parameter-Wert wird entweder mit dem Präfix "userParameter..." oder unter dem angegebenen Namen angezeigt.
Mehrere Indizes werden durch Kommas getrennt.
Nicht mehr benötigte Gerätewerte können mit dem FHEM-Befehl deleteReading gelöscht werden.
userHeatpumpValues <Index Name[,Index2 Name2,Index3 Name3 ...]>
Erlaubt das Auslesen benutzerspezifische Betriebswerte. Vorgehen wie bei userHeatpumpParameters.
Das Modul sendet FHEM Systemlog-Einträge und/oder Events an einen externen Syslog-Server weiter oder agiert als
Syslog-Server um Syslog-Meldungen anderer Geräte zu empfangen.
Die Implementierung des Syslog-Protokolls erfolgte entsprechend den Vorgaben von RFC5424 (IETF),
RFC3164 (BSD) sowie dem TLS Transport Protokoll nach
RFC5425.
Voraussetzungen
Es werden die Perl Module "IO::Socket::INET" und "IO::Socket::SSL" (wenn SSL benutzt) benötigt und müssen installiert sein.
Das Modul kann über CPAN oder mit
apt-get install libio-socket-multicast-perl (auf Debian Linux Systemen)
installiert werden.
Definition und Verwendung
Je nach Verwendungszweck kann ein Syslog-Server (MODEL Collector) oder ein Syslog-Client (MODEL Sender) definiert
werden.
Der Collector empfängt Meldungen im Syslog-Format anderer Geräte und generiert daraus Events/Readings zur Weiterverarbeitung in
FHEM. Das Sender-Device leitet FHEM Systemlog Einträge und/oder Events an einen externen Syslog-Server weiter.
Der Collector (Syslog-Server)
Definition eines Collectors
define <name> Log2Syslog
Die Definition benötigt keine weiteren Parameter.
In der Grundeinstellung wird der Syslog-Server mit dem Port=1514/UDP und dem Parsingprofil "IETF" initialisiert.
Mit dem Attribut "parseProfile" können alternativ andere Formate (z.B. BSD) ausgewählt werden.
Der Syslog-Server ist sofort betriebsbereit, parst die Syslog-Daten entsprechend der Richtlinien nach RFC5424 und generiert
aus den eingehenden Syslog-Meldungen FHEM-Events (Daten sind im Eventmonitor sichtbar).
Beispiel für einen Collector:
define SyslogServer Log2Syslog
Im Eventmonitor können die generierten Events kontrolliert werden.
Beispiel von generierten Events mit Attribut parseProfile=IETF:
Zwischen den einzelnen Feldern wird der Trenner "||" verwendet.
Die Bedeutung der Felder in diesem Beispiel sind:
HOST
der Sender des Datensatzes
FAC
Facility (Kategorie) nach RFC5424
SEV
Severity (Schweregrad) nach RFC5424
ID
Ident-Tag
CONT
der Nachrichtenteil der empfangenen Meldung
Der Timestamp der generierten Events wird aus den Syslogmeldungen geparst. Sollte diese Information nicht mitgeliefert
werden, wird der aktuelle Timestamp des Systems verwendet.
Der Name des Readings im generierten Event entspricht dem aus der Syslogmeldung geparsten Hostnamen.
Ist der Hostname in der Meldung nicht enthalten, wird die IP-Adresse des Senders aus dem Netzwerk Interface abgerufen und
der Hostname ermittelt sofern möglich.
In diesem Fall wird der ermittelte Hostname bzw. die IP-Adresse als Reading im Event genutzt.
Nach der Definition des Collectors werden die Syslog-Meldungen im IETF-Format gemäß RFC5424 erwartet. Werden die Daten
nicht in diesem Format geliefert bzw. können nicht geparst werden, erscheint im Reading "state" die Meldung
"parse error - see logfile" und die empfangenen Syslog-Daten werden im Logfile im raw-Format ausgegeben. Das Reading
"Parse_Err_No" enthält die Anzahl der Parse-Fehler seit Modulstart.
In diesem Fall kann mit dem Attribut "parseProfile" ein anderes vordefiniertes Parse-Profil
eingestellt bzw. ein eigenes Profil definiert werden.
Zur Definition einer eigenen Parse-Funktion wird
"parseProfile = ParseFn" eingestellt und im Attribut "parseFn" eine spezifische
Parse-Funktion hinterlegt.
Die im Event verwendeten Felder und deren Reihenfolge können aus einem Wertevorrat mit dem
Attribut "outputFields" bestimmt werden. Je nach verwendeten Parse-Funktion können alle oder
nur eine Untermenge der verfügbaren Felder verwendet werden. Näheres dazu in der Beschreibung des Attributes "parseProfile".
Das Verhalten der Eventgenerierung kann mit dem Attribut "makeEvent" angepasst werden.
Host (Name oder IP-Adresse) auf dem der Syslog-Server läuft
[ident:<ident>]
optionaler Programm Identifier. Wenn nicht gesetzt wird per default der Devicename benutzt.
[event:<regexp>]
optionaler regulärer Ausdruck zur Filterung von Events zur Weiterleitung
[fhem:<regexp>]
optionaler regulärer Ausdruck zur Filterung von FHEM Logs zur Weiterleitung
Direkt nach der Definition sendet das neue Device alle neu auftretenden FHEM Systemlog Einträge und Events ohne weitere
Einstellungen an den Zielhost, Port=514/UDP Format=IETF, wenn reguläre Ausdrücke für Events/FHEM angegeben wurden.
Wurde kein Regex gesetzt, erfolgt keine Weiterleitung von Events oder FHEM Systemlogs.
Die Verbose-Level der FHEM Systemlogs werden in entsprechende Schweregrade der Syslog-Messages umgewandelt.
Weiterhin wird der Meldungstext der FHEM Systemlogs und Events nach den Signalwörtern "warning" und "error" durchsucht
(Groß- /Kleinschreibung wird nicht beachtet). Davon abhängig wird der Schweregrad ebenfalls äquivalent gesetzt und übersteuert
einen eventuell bereits durch Verbose-Level gesetzten Schweregrad.
Umsetzungstabelle Verbose-Level in Syslog-Schweregrad Stufe:
Der Aufbau der Payload unterscheidet sich je nach verwendeten logFormat.
logFormat IETF:
"<PRIVAL>IETFVERS TIME MYHOST IDENT PID MID [SD-FIELD] :MESSAGE"
PRIVAL
Priority Wert (kodiert aus "facility" und "severity")
IETFVERS
Version der benutzten RFC5424 Spezifikation
TIME
Timestamp nach RFC5424
MYHOST
Internal MYHOST
IDENT
Ident-Tag aus DEF wenn angegeben, sonst der eigene Devicename. Die Angabe wird mit "_fhem" (FHEM-Log) bzw. "_event" (Event-Log) ergänzt.
PID
fortlaufende Payload-ID
MID
fester Wert "FHEM"
[SD-FIELD]
Structured Data Feld. Enthält Informationen zur verwendeten Modulversion (die Klammern "[]" sind Bestandteil des Feldes)
MESSAGE
der zu übertragende Datensatz
logFormat BSD:
"<PRIVAL>MONTH DAY TIME MYHOST IDENT[PID]:MESSAGE"
PRIVAL
Priority Wert (kodiert aus "facility" und "severity")
MONTH
Monatsangabe nach RFC3164
DAY
Tag des Monats nach RFC3164
TIME
Zeitangabe nach RFC3164
MYHOST
Internal MYHOST
IDENT
Ident-Tag aus DEF wenn angegeben, sonst der eigene Devicename. Die Angabe wird mit "_fhem" (FHEM-Log) bzw. "_event" (Event-Log) ergänzt.
PID
Die ID der Mitteilung (= Sequenznummer)
MESSAGE
der zu übertragende Datensatz
Set
reopen
Schließt eine bestehende Client/Server-Verbindung und öffnet sie erneut.
Der Befehl kann z.B. bei "broken pipe"-Fehlern hilfreich sein.
sendTestMessage [<Message>]
Mit einem Devicetyp "Sender" kann abhängig vom Attribut "logFormat" eine Testnachricht im BSD- bzw. IETF-Format
gesendet werden. Wird eine optionale eigene <Message> angegeben, wird diese Nachricht im raw-Format ohne
Formatanpassung (BSD/IETF) gesendet. Das Attribut "disable = maintenance" legt fest, dass keine Daten ausser eine
Testnachricht an den Empfänger gesendet wird.
Get
certinfo
Zeigt auf einem Sender-Device Informationen zum Serverzertifikat an sofern eine TLS-Session aufgebaut wurde
(Reading "SSL_Version" ist nicht "n.a.").
versionNotes
Zeigt Release Informationen und Hinweise zum Modul an. Es sind nur Informationen mit Bedeutung für den Modulnutzer
enthalten.
Attribute
addTimestamp
Das Attribut ist nur für "Sender" verwendbar. Wenn gesetzt, werden FHEM Timestamps im Content-Feld der Syslog-Meldung
mit übertragen.
Per default werden die Timestamps nicht im Content-Feld hinzugefügt, da innerhalb der Syslog-Meldungen im IETF- bzw.
BSD-Format bereits Zeitstempel gemäß RFC-Vorgabe erstellt werden.
Die Einstellung kann hilfeich sein wenn mseclog in FHEM aktiviert ist.
Beispielausgabe (raw) eines Splunk Syslog Servers:
Das Attribut ist nur für "Sender" verwendbar. Wenn gesetzt, werden state-events mit dem Reading "state" ergänzt.
Die Standardeinstellung ist ohne state-Ergänzung.
contDelimiter
Das Attribut ist nur für "Sender" verwendbar. Es enthält ein zusätzliches Zeichen welches unmittelber vor das
Content-Feld eingefügt wird.
Diese Möglichkeit ist in manchen speziellen Fällen hilfreich (z.B. kann das Zeichen ':' eingefügt werden um eine
ordnungsgemäße Anzeige im Synology-Protokollcenter zu erhalten).
disable [1 | 0 | maintenance]
Das Device wird aktiviert, deaktiviert bzw. in den Maintenance-Mode geschaltet. Im Maintenance-Mode kann mit dem
"Sender"-Device eine Testnachricht gesendet werden (siehe "set <name> sendTestMessage").
logFormat [ BSD | IETF ]
Das Attribut ist nur für "Sender" verwendbar. Es stellt das Protokollformat ein. (default: "IETF")
makeEvent [ intern | no | reading ]
Das Attribut ist nur für "Collector" verwendbar. Mit dem Attribut wird das Verhalten der Event- bzw.
Readinggenerierung festgelegt.
intern
Events werden modulintern generiert und sind nur im Eventmonitor sichtbar. Readings werden nicht erstellt.
no
es werden nur Readings der Form "MSG_<Hostname>" ohne Eventfunktion erstellt
reading
es werden Readings der Form "MSG_<Hostname>" erstellt. Events werden in Abhängigkeit der "event-on-.*"-Attribute generiert
octetCount
Das Attribut ist nur für "Sender" verfügbar.
Wenn gesetzt, wird das Syslog Framing von Non-Transparent-Framing (default) in Octet-Framing geändert.
Der Syslog-Empfänger muss Octet-Framing unterstützen !
Für weitere Informationen siehe RFC6587 "Transmission of Syslog Messages
over TCP".
outputFields
Das Attribut ist nur für "Collector" verwendbar.
Über eine sortierbare Liste können die gewünschten Felder des generierten Events ausgewählt werden.
Die abhängig vom Attribut "parseProfil" sinnvoll verwendbaren Felder und deren Bedeutung ist der Beschreibung
des Attributs "parseProfil" zu entnehmen.
Ist "outputFields" nicht gesetzt, wird ein vordefinierter Satz Felder zur Eventgenerierung verwendet.
parseFn {<Parsefunktion>}
Das Attribut ist nur für Device-MODEL "Collector" verwendbar. Es wird die eingegebene Perl-Funktion auf die
empfangene Syslog-Meldung angewendet. Der Funktion werden folgende Variablen übergeben die zur Verarbeitung
und zur Werterückgabe genutzt werden können. Leer übergebene Variablen sind als "" gekennzeichnet.
Das erwartete Rückgabeformat einer Variable wird in "()" angegeben sofern sie Restriktionen unterliegt.
Ansonsten ist die Variable frei verfügbar.
$PRIVAL
"" (0 ... 191)
$FAC
"" (0 ... 23)
$SEV
"" (0 ... 7)
$TS
Zeitstempel (YYYY-MM-DD hh:mm:ss)
$HOST
""
$DATE
"" (YYYY-MM-DD)
$TIME
"" (hh:mm:ss)
$ID
""
$PID
""
$MID
""
$SDFIELD
""
$CONT
""
$DATA
übergebene Rohdaten der Syslog-Mitteilung (keine Rückgabeauswertung!)
$IGNORE
0 (0|1), wenn $IGNORE==1 wird der Syslog-Datensatz ignoriert
Die Variablennamen korrespondieren mit den Feldnamen und deren ursprünglicher Bedeutung angegeben im Attribut
"parseProfile" (Erläuterung der Felddaten).
Beispiel:
# Quelltext: '<4> <;4>LAN IP and mask changed to 192.168.2.3 255.255.255.0'
# Die Zeichen '<;4>' sollen aus dem CONT-Feld entfernt werden
Auswahl eines Parsing-Profiles. Das Attribut ist nur für Device-Model "Collector" verwendbar.
BSD
Parsing der Meldungen im BSD-Format nach RFC3164
IETF
Parsing der Meldungen im IETF-Format nach RFC5424 (default)
...
Es werden weitere angepasste Parsingprofile für ausgewählte Geräte angeboten
ParseFn
Verwendung einer eigenen spezifischen Parsingfunktion im Attribut "parseFn".
raw
kein Parsing, die Meldungen werden wie empfangen in ein Event umgesetzt
Die geparsten Informationen werden in Feldern zur Verfügung gestellt. Die im Event erscheinenden Felder und deren
Reihenfolge können mit dem Attribut "outputFields" bestimmt werden.
Abhängig vom verwendeten "parseProfile" werden die folgenden Felder mit Werten gefüllt und es ist dementsprechend auch
nur sinnvoll die benannten Felder in Attribut "outputFields" zu verwenden. Im raw-Profil werden die empfangenen Daten
ohne Parsing in ein Event umgewandelt.
Die sinnvoll im Attribut "outputFields" verwendbaren Felder des jeweilgen Profils sind:
-> keine Auswahl sinnvoll, es wird immer die Originalmeldung in einen Event umgesetzt
Erläuterung der Felddaten:
PRIVAL
kodierter Priority Wert (kodiert aus "facility" und "severity")
FAC
Kategorie (Facility)
SEV
Schweregrad der Meldung (Severity)
TS
Zeitstempel aus Datum und Zeit (YYYY-MM-DD hh:mm:ss)
HOST
Hostname / Ip-Adresse des Senders
DATE
Datum (YYYY-MM-DD)
TIME
Zeit (hh:mm:ss)
ID
Gerät oder Applikation welche die Meldung gesendet hat
PID
Programm-ID, oft belegt durch Prozessname bzw. Prozess-ID
MID
Typ der Mitteilung (beliebiger String)
SDFIELD
Metadaten über die empfangene Syslog-Mitteilung
CONT
Inhalt der Meldung
DATA
empfangene Rohdaten
port <Port>
Der verwendete Port. Für einen Sender ist der default-Port 514, für einen Collector (Syslog-Server) der Port 1514.
protocol [ TCP | UDP ]
Setzt den Protokolltyp der verwendet werden soll. Es kann UDP oder TCP gewählt werden.
Standard ist "UDP" wenn nichts spezifiziert ist.
rateCalcRerun <Zeit in Sekunden>
Wiederholungszyklus für die Bestimmung der Log-Transferrate (Reading "Transfered_logs_per_minute") in Sekunden (>=60).
Eingegebene Werte <60 Sekunden werden automatisch auf 60 Sekunden korrigiert.
Default sind 60 Sekunden.
respectSeverity
Es werden nur Nachrichten übermittelt (Sender) bzw. beim Empfang berücksichtigt (Collector), deren Schweregrad im
Attribut enthalten ist.
Ist "respectSeverity" nicht gesetzt, werden Nachrichten aller Schweregrade verarbeitet.
ssldebug
Debugging Level von SSL Messages. Das Attribut ist nur für Device-MODEL "Sender" verwendbar.
Ein Client (Sender) baut eine gesicherte Verbindung zum Syslog-Server auf.
Ein Syslog-Server (Collector) stellt eine gesicherte Verbindung zur Verfügung.
Das Protokoll schaltet automatisch auf TCP um.
Damit ein Collector TLS verwenden kann, muss ein Zertifikat erstellt werden bzw. vorhanden sein.
Mit folgenden Schritten kann ein Zertifikat erzeugt werden:
1. im FHEM-Basisordner das Verzeichnis "certs" anlegen:
Das Attribut ist nur für "Sender" verwendbar.
Timeout für die Verbindung zum Syslog-Server (TCP). Default: 0.5s.
verbose
Verbose-Level entsprechend dem globalen Attribut "verbose".
Die Ausgaben der Verbose-Level von Log2Syslog-Devices werden ausschließlich im lokalen FHEM Logfile ausgegeben und
nicht weitergeleitet um Schleifen zu vermeiden.
Readings
MSG_<Host>
die letzte erfolgreich geparste Syslog-Message von <Host>
Parse_Err_No
die Anzahl der Parse-Fehler seit Start
SSL_Algorithm
der verwendete SSL Algorithmus wenn SSL eingeschaltet und aktiv ist
SSL_Version
die verwendete TLS-Version wenn die Verschlüsselung aktiv ist
Transfered_logs_per_minute
die durchschnittliche Anzahl der übertragenen/empfangenen Logs/Events pro Minute
LuftdatenInfo ist das FHEM Modul um Feinstaub-, Temperatur- und
Luftfeuchtichkeitswerte von den selbstbau Feinstaub Sensoren von
Luftdaten.info auszulesen.
Dabei können die Werte direkt vom Server oder auch lokal abgefragt
werden.
Bei einer lokalen Abfrage werden durch eine
alternative Firmware
noch weitere Sensoren unterstützt.
Vorraussetzungen
Das Perl-Modul "JSON" wird benötigt.
Unter Debian (basierten) System, kann dies mittels
"apt-get install libjson-perl" installiert werden.
Define
define <name> LuftdatenInfo remote
<SENSORID1> [<SENSORID2> ..]
define <name> LuftdatenInfo local <IP>
define <name> LuftdatenInfo
slave <master-name> <sensor1 sensor2 ...>
Für eine Abfrage der Daten vom Server müssem alle betroffenenen
SensorIDs angegeben werden. Die IDs vom SDS01 stehen rechts auf der Seite
http://maps.luftdaten.info/
. Die DHT22 SensorID entspricht normalerweise der SDS011 SensorID + 1.
Bei einer Abfrage werden die die Positionsangaben verglichen und bei
einer Abweichung eine Meldung ins Log geschrieben.
Für eine lokale Abfrage der Daten muss die IP Addresse oder der
Hostname angegeben werden.
Werden mehrere ähnliche Sensoren betrieben lassen sich die doppelten
Werte in einem anderen Gerät geschrieben werden.
Set
statusRequest
Startet eine Abfrage der Daten.
Get
sensors
Listet alle Sensoren auf.
Readings
altitude
Höhe über NN
humidity
Relative Luftfeuchtgkeit in %
illuminanceFull
Helligkeit des vollen Bereich in lux
illuminanceIR
Helligkeit des IR Bereich in lux
illuminanceUV
Helligkeit des UV Bereich in lux
illuminanceVisible
Helligkeit des sichtbaren Bereich in lux
latitude
Längengrad
location
Standort als "Postleitzahl Ort"
Nur bei remote Abfrage verfügbar.
longitude
Breitengrad
PM1
Menge der Partikel mit einem Durchmesser von weniger als 1 µm in µg/m³
PM2.5
Menge der Partikel mit einem Durchmesser von weniger als 2.5 µm in µg/m³
PM10
Menge der Partikel mit einem Durchmesser von weniger als 10 µm in µg/m³
pressure
Luftdruck in hPa
pressureNN
Luftdruck für Normal Null in hPa
Wird bei aktivem Luftdruck- und Temperatursensor berechnet, sofern sich
der Sensor nicht auf Normal Null befindet.
Hierzu ist die Höhe, kann über Kartendienste oder SmartPhone ermittelt
werden, auf der Konfigurationsseite anzugeben.
signal
WLAN Signalstärke in dBm
Nur bei local Abfrage verfügbar.
temperature
Temperatur in °C
UVIntensity
UV Intensität in W
UVRisk
UV Risiko von 1 bis 5
Attribute
disable 1
Es werden keine Abfragen mehr gestartet.
Verarbeitet MAX! Geräte, die von der eQ-3 MAX! Gruppe hergestellt werden.
Falls Heizkörperthermostate eine Temperatur von Null Grad zeigen, wurde von ihnen
noch nie Daten an den MAX Cube gesendet. In diesem Fall kann das Senden von Daten an
den Cube durch Einstellen einer Temeratur direkt am Gerät (nicht über fhem)
erzwungen werden.
Define
define <name> MAX <type> <addr>
Erstellt ein MAX Gerät des Typs <type> und der RF Adresse <addr>.
Als <type> kann entweder HeatingThermostat (Heizkörperthermostat),
HeatingThermostatPlus (Heizkörperthermostat Plus),
WallMountedThermostat (Wandthermostat), ShutterContact (Fensterkontakt)
oder PushButton (Eco-Taster) gewählt werden.
Die Adresse <addr> ist eine 6-stellige hexadezimale Zahl.
Da autocreate diese vergibt, sollte diese nie händisch gewählt
werden müssen.
Es ist empfehlenswert, das Atribut event-on-change-reading zu setzen, z.B.
attr MAX_123456 event-on-change-reading .* da ansonsten der "Polling" Mechanismus
alle 10 s ein Ereignis erzeugt.
Beispiel:
define switch1 MAX PushButton ffc545
Set
desiredTemperature <value> [until <date>]
Nur für Heizkörperthermostate. <value> kann einer aus folgenden Werten sein
Grad Celsius zwischen 3,5 und 30,5 Grad in 0,5 Kelvin Schritten
"on" oder "off" versetzt den Thermostat in volle bzw. keine Heizleistung
"eco" oder "comfort" mit der eco/comfort Temperatur, die direkt am Gerät
eingestellt wurde (änhlich wie die rechte Taste am Gerät selbst)
"auto <temperature>". Damit wird das am Thermostat eingestellte Wochenprogramm
abgearbeitet. Wenn optional die Temperatur <temperature> angegeben wird, wird diese
bis zum nästen Schaltzeitpunkt des Wochenprogramms als
desiredTemperature gesetzt.
"boost" aktiviert den Boost Modus, wobei für boostDuration Minuten
das Ventil boostValveposition Prozent geöffnet wird.
Alle Werte außer "auto" können zusäzlich den Wert "until" erhalten,
wobei <date> in folgendem Format sein muß: "dd.mm.yyyy HH:MM"
(Minuten nur "30" bzw. "00"!), um kurzzeitige eine andere Temperatur bis zu diesem Datum/dieser
Zeit einzustellen. Bitte sicherstellen, dass der Cube bzw. das Gerät die korrekte Systemzeit hat.
groupid <id>
Nur für Heizkörperthermostate.
Schreibt die angegebene Gruppen ID in den Speicher des Gerätes.
Um alle Geräte in einem Raum zu synchronisieren, können diese derselben Gruppen ID
zugeordnet werden, diese muß größer Null sein.
ecoTemperature <value>
Nur für Heizkörperthermostate. Schreibt die angegebene eco Temperatur in den Speicher
des Gerätes. Diese kann durch Drücken der rechten Taste am Gerät aktiviert werden.
comfortTemperature <value>
Nur für Heizkörperthermostate. Schreibt die angegebene comfort Temperatur in den Speicher
des Gerätes. Diese kann durch Drücken der rechten Taste am Gerät aktiviert werden.
measurementOffset <value>
Nur für Heizkörperthermostate. Schreibt die angegebene offset Temperatur in den Speicher
des Gerätes. Wenn der interne Temperatursensor nicht korrekt kalibriert ist, kann dieses einen
systematischen Fehler erzeugen. Mit dem Wert measurementOffset, kann dieser Fehler
kompensiert werden. Die ausgelese Temperatur ist gleich der gemessenen
Temperatur + measurementOffset. Normalerweise ist die intern gemessene Temperatur höher
als die Raumtemperatur, da der Sensor näher am Heizkörper ist und man verwendet einen
kleinen negativen Offset, der zwischen -3,5 und 3,5 Kelvin sein muß.
minimumTemperature <value>
Nur für Heizkörperthermostate. Schreibt die angegemene minimum Temperatur in der Speicher
des Gerätes. Diese begrenzt die Temperatur, die am Gerät manuell eingestellt werden kann.
maximumTemperature <value>
Nur für Heizkörperthermostate. Schreibt die angegemene maximum Temperatur in der Speicher
des Gerätes. Diese begrenzt die Temperatur, die am Gerät manuell eingestellt werden kann.
windowOpenTemperature <value>
Nur für Heizkörperthermostate. Schreibt die angegemene window open Temperatur in den Speicher
des Gerätes. Das ist die Tempereratur, die an der Heizung kurzfristig eingestellt wird, wenn ein
geöffnetes Fenster erkannt wird. Der Wert 4,5 Grad bzw. "off" schaltet die Reaktion auf
ein offenes Fenster aus.
windowOpenDuration <value>
Nur für Heizkörperthermostate. Schreibt die angegebene window open Dauer in den Speicher
des Gerätes. Dies ist die Dauer, während der die Heizung kurzfristig die window open Temperatur
einstellt, wenn ein offenes Fenster durch einen schnellen Temperatursturz erkannt wird.
(Wird nicht verwendet, wenn das offene Fenster von ShutterControl erkannt wird.)
Parameter muss zwischen Null und 60 Minuten sein als Vielfaches von 5.
decalcification <value>
Nur für Heizkörperthermostate. Schreibt die angegebene Zeit für decalcification
in den Speicher des Gerätes. Parameter muss im Format "Sat 12:00" sein, wobei die Minuten
"00" sein müssen. Zu dieser angegebenen Zeit wird das Heizkörperthermostat das Ventil
kurz ganz öffnen, um vor Schwergängigkeit durch Kalk zu schützen.
boostDuration <value>
Nur für Heizkörperthermostate. Schreibt die angegebene Boost Dauer in den Speicher
des Gerätes. Der gewählte Parameter muss einer aus 5, 10, 15, 20, 25, 30 oder 60 sein
und gibt die Dauer der Boost-Funktion in Minuten an.
boostValveposition <value>
Nur für Heizkörperthermostate. Schreibt die angegebene Boost Ventilstellung in den Speicher
des Gerätes. Dies ist die Ventilstellung (in Prozent) die bei der Boost-Fumktion eingestellt wird.
maxValveSetting <value>
Nur für Heizkörperthermostate. Schreibt die angegebene maximale Ventilposition in den Speicher
des Gerätes. Der Heizkörperthermostat wird das Ventil nicht weiter öffnen als diesen Wert
(Angabe in Prozent).
valveOffset <value>
Nur für Heizkörperthermostate. Schreibt den angegebenen offset Wert der Ventilstellung
in den Speicher des Gerätes Der Heizkörperthermostat wird diesen Wert während der Regelung
zu den berechneten Ventilstellungen hinzuaddieren.
factoryReset
Setzt das Gerät auf die Werkseinstellungen zurück. Das Gerät muss anschließend neu
angelernt werden.
ACHTUNG: Wenn dies in Kombination mit einem Fensterkontakt und dem MAXLAN Modul
verwendet wird, muss der Fensterkontakt einmal manuell ausgelöst werden, damit das
Zurücksetzen auf Werkseinstellungen beendet werden kann.
associate <value>
Verbindet ein Gerät mit einem anderen. <value> kann entweder der Name eines MAX Gerätes oder
seine 6-stellige hexadezimale Adresse sein.
Wenn ein Fensterkontakt mit einem {Heizkörper-/Wand-}Thermostat verbunden wird, sendet der
Fensterkontakt automatisch die windowOpenTemperature Temperatur wenn der Kontakt
geöffnet ist. Das Thermostat muss ebenfalls mit dem Fensterkontakt verbunden werden, um diese
Botschaften zu verarbeiten.
Achtung: Nach dem Senden der Botschaft zum Verbinden an den Fensterkontakt muss der Knopf am
Fensterkontakt gedrückt werden um den Fensterkonakt einzuschalten und den Befehl zu verarbeiten.
Details über das erfolgreiche Verbinden finden sich in der fhem Logdatei!
Das Verbinden eines Heizkörperthermostates und eines Wandthermostates synchronisiert deren
desiredTemperature und verwendet die am Wandthermostat gemessene Temperatur für
die Regelung.
deassociate <value>
Löst die Verbindung, die mit associate gemacht wurde, wieder auf.
weekProfile [<day> <temp1>,<until1>,<temp2>,<until2>]
[<day> <temp1>,<until1>,<temp2>,<until2>] ...
Erlaubt das Setzen eines Wochenprofils. Nur für Heizk&oum;rperthermostate bzw. Wandthermostate.
Beispiel: set MAX_12345 weekProfile Fri 24.5,6:00,12,15:00,5 Sat 7,4:30,19,12:55,6
stellt das folgende Profil ein Freitag: 24.5 °C von 0:00 - 6:00, 12 °C von 6:00 - 15:00, 5 °C von 15:00 - 0:00
Samstag: 7 °C von 0:00 - 4:30, 19 °C von 4:30 - 12:55, 6 °C von 12:55 - 0:00
und behält die Profile für die anderen Wochentage bei.
Definiert ein Mediaportal Interface für die Kommunikation mit einem Wifiremote-Plugin einer Mediaportal Installation.
host[:port] Der Hostname und der Port eines laufenden Mediaportal-Wifiremote-Plugins. Wenn der Port nicht angegeben wurde, wird 8017 als Standard verwendet.
Set
Grundsätzliches
connect Erzwingt eine sofortige Verbindung zu Mediaportal. Normalerweise würde die normale Verbindungswiederholung von Fhem (30s) abgewartet werden.
powermode <mode> Eins aus (logoff, suspend, hibernate, reboot, shutdown, exit). Setzt den powermode, z.B. shutdown, zum Herunterfahren des Computers des Mediaportal-Systems.
reconnect Erzwingt eine sofortige Trennung und Neuverbindung zu Mediaportal.
Control-Befehle
command <command> Eins aus (stop, record, pause, play, rewind, forward, replay, skip, back, info, menu, up, down, left, right, ok, volup, voldown, volmute, chup, chdown, dvdmenu, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, clear, enter, teletext, red, blue, yellow, green, home, basichome, nowplaying, tvguide, tvrecs, dvd, playlists, first, last, fullscreen, subtitles, audiotrack, screenshot). Sendet das entsprechende Kommando an den Player.
key <keyvalue> Sendet die entsprechende Taste an den Player.
sleep Startet den Hibernate-Modus. Dieser Befehl ist ein Shortcut für "powermode hibernate"
wakeup Weckt den Mediaportal-Rechner auf (WakeUp-On-LAN).
playfile <fileType> <filePath> Spielt die entsprechende Datei mit dem angegebenen Typ ab. FileType kann (audio, video) sein.
playlist <command> <param> Sendet das entsprechende Playlist-Kommando mit dem gegebenen Parameter. Das Kommando kann (play, loadlist, loadlist_shuffle, loadfrompath, loadfrompath_shuffle) sein.
status Sendet eine Aufforderung für das Senden einer status-Nachricht. Liefert dann asynchron die Informationen "Title" und "PlayStatus".
nowplaying Sendet eine Aufforderung für das Senden einer nowplaying-Nachricht. Liefert dann asynchron die Informationen "Duration", "Position" und "File"".
Attribute
Grundsätzliches
disable <value> Eins aus (0, 1). Mit diesem Attribut kann das Modul deaktiviert werden.
generateNowPlayingUpdateEvents <value> Eins aus (0, 1). Mit diesem Attribut kann die Erzeugung eines NowPlayingUpdate-Events an- oder abgeschaltet werden. Wenn auf "1" gesetzt, generiert Fhem ein Event pro Sekunde mit den angepassten Zeitangaben. Standard ist "0".
HeartbeatInterval <intervall> In Sekunden. Legt das Intervall für die Prüfung der Verbindung zu Mediaportal fest. Mit "0" kann die Prüfung deaktiviert werden. Wenn kein Wert angeggeben wird, wird "15" verwendet.
macaddress <address> Gibt die Mac-Adresse des Mediaportal-Rechners an. Das wird für die WakeUp-Funktionalität benötigt. z.B. "90:E6:BA:C2:96:15"
Authentifizierung
authmethod <value> Eins aus (none, userpassword, passcode, both). Hiermit wird der Authentifizierungsmodus festgelegt.
password <value> Hiermit wird das Passwort für die Authentifzierung festgelegt.
username <value> Hiermit wird der Benutzername für die Authentifizerung festgelegt.
MOBILEALERTS ist ein FHEM-Modul fü die deutschen MobileAlerts Gerä und TFA WEATHERHUB.
Dieses FHEM Modul stellt jeweils ein MobileAlerts Gerät dar. Die Verbindung wird durch das
MOBILELAERTSGW Modul bereitgestellt.
Aktuell werden unterstüzt: MA10100, MA10101, MA10200, MA10230, MA10300, MA10650, MA10320PRO, MA10350, MA10410, MA10450, MA10660, MA10700, TFA 30.3312.02, MA10800, WL2000, TFA30.3060.01.IT, MA10120PRO
Unterstüzt aber ungetestet: ./.
deviceID ist der Sensorcode auf dem Sensor.
corrTempIn optional: Korrekturwert für Temperatur (bzw. Temperatur in)
corrHumIn optional: Korrekturwert für die Luftfeuchte
corrTempOut optional: Korrekturwert für Temperatur Out / Sensor 1
corrHumOut optional: Korrekturwert für die Luftfeuchte Out / Sensor 1
corrTemp2 optional: Korrekturwert für Temperatur Sensor 2
corrHum2 optional: Korrekturwert für die Luftfeuchte Sensor 2
corrTemp3 optional: Korrekturwert für Temperatur Sensor 3
corrHum3 optional: Korrekturwert für die Luftfeuchte Sensor 3
Readings
lastMsg Die letzte empfangene Nachricht (immer für unbekannte Geräte, für bekannte nur wenn das Attribut lastMsg gesetzt ist).
deviceType Der Gerätetyü.
lastRcv Timestamp der letzten Nachricht.
actStatus Zeigt 'unknown', 'alive', 'dead', 'switchedOff' abhängig vom Attribut actCycle
txCounter Counter des letzten Nachricht (wird 0 nach Batteriewechsel).
triggered 1=letzte Nachricht wurde von einem Ereignis ausgelöst.
tempertature, prevTemperature, temperatureIn, temperatureOut, prevTemperatureIn, prevTemperatureOut Temperatur (abhänging vom Gerät und dem Attribut expert).
tempertatureString, prevTemperatureString, temperatureInString, temperatureOutString, prevTemperatureInString, prevTemperatureOutString Temperatur als Zeichkette.
state State of device (short actual reading)
humidity, prevHumidity, humidityIn, humidityOut, prevHumidityIn, prevHumidityOut Luftfeuchte (abhänging vom Gerät und dem Attribut expert).
humidityString, prevHumidityString, humidityInString, humidityOutString, prevHumidityInString, prevHumidityOutString Luftfeuchte als Zeichenkette
wetness Zeigt ob der Sensors Wasser entdeckt.
lastEvent, lastEvent<X> ,lastEventString, lastEvent<X>String Zeitpunkt wann das letzte Event (Regen) stattgefunden hat (nur MA10650).
mmRain, mmRainActHour, mmRainLastHour, mmRainActDay, mmRainYesterday Regen seit dem letzten Reset des Counters, in der aktuellen Stunde, seit der letzten Stunden, am aktuellen Tagn, gestern.
direction, directionInt Richtung des Winds.
windSpeed, gustSpeed Windgeschwindigkeit.
Set
set <name> clear <readings|counters>
Löscht die Readings (alle) oder Counter (wie mmRain).
lastMsg
Wenn dieser Wert auf 1 gesetzt ist, wird die letzte erhaltene Nachricht als Reading gelogt auch wenn das Gerä bekannt ist.
actCycle <[hhh:mm]|off>
Dieses Attribut ermölicht eine 'nicht erreichbarkeit' Erkennung.
[hhh:mm] ist die maximale Zeit, innerhalb der keine Nachrichten empfrangen wird.
Das Reading actStatus zeigt den Status 'unknown', 'alive', 'dead' an.
expert
Gibt an wie detailiert die Readings angezeigt werden (0=nur aktuelle, 1=mit vorhergehenden, 4=alle).
MOBILEALERTSGW ist ein FHEM-Modul für das deutsche MobileAlerts Gateway und TFA WEATHERHUB.
Dieses FHEM-Modul simuliert einen http-proxy, um Nachrichten vom Gateway abzufangen.
Um dies zu erreichen, muss das Gateway so konfiguriert werden, dass es den FHEM-Server mit dem definierten Port als
Proxy nutzt. Sie können dies entweder mit der App oder dem Kommando initgateway erreichen.
Es erkennt automatisch Geräte. Die Gerä werden durch das MOBILELAERTS Modul
bereitgestellt. MOBILEALERTS nutzt dieses Modul als Backend.
Define
define <name> MOBILEALERTSGW <port>
port ist der Port auf dem der Proxy-Server hört. Der Port muss frei sein.
Readings
Gateways Liste der bekannten Gateways
GW_<Gateway-MAC>_lastSeen Zeitpunkt when zuletzt eine Nachricht empfangen wurde
GW_<Gateway-MAC>_ip IP-Adresse des Gateways
GW_<Gateway-MAC>_serial Seriennummer des Gateways
GW_<Gateway-MAC>_proxy on, off: Einstellung des Proxies (nur verfünach einem get config)
GW_<Gateway-MAC>_proxyname Name/IP der Proxy (nur verfünach einem get config)
GW_<Gateway-MAC>_proxyport Port der Proxy (nur verfünach einem get config)
GW_<Gateway-MAC>_config Komplette Konfiguration als HEX-Wert (nur verfünach einem get config)
Set
set <name> clear <readings>
Löscht die Readings.
set <name> initgateway <gatewayid>
Setzt den Proxy im Gateway auf dem FHEM-Server. Es kann ein Neustart (reboot) des Gateways nötig sein, damit die
Einstellung wirksam wird.
set <name> rebootgateway <gatewayid>
Startet das Gateway neu.
Get
get <name> config <IP or gatewayid>
Holt die Konfiguration eines oder aller Gateways im lokalen Netz. IP bzw. die GatewayId sind optional.
Wenn keines von beiden angegeben ist, werden alle Gateways im lokalen Netz gesucht (Broadcast).
Attributes
forward
Wenn dieser Wert auf 1 gesetzt ist, werden die Daten zusätzlich zum MobileAlerts Server http://www.data199.com/gateway/put gesendet.
FHEM Modul zur Steuerung des MPD (oder Mopidy) ähnlich dem MPC (MPC = Music Player Command, das Kommando Zeilen Interface für den
Music Player Daemon ) (englisch)
Um den MPD auf einem Raspberry Pi zu installieren finden sich im Internet zahlreiche gute Dokumentaionen
z.B. hier
Thread im FHEM Forum : Modul für MPD
Das Modul benötigt zwingend JSON, installation z.B. mit sudo apt-get install libjson-perl Define
define <name> MPD <IP MPD Server | default localhost> <Port MPD Server | default 6600>
Beispiel :
define myMPD MPD 192.168.0.99 7000
wenn FHEM und der MPD auf dem gleichen PC laufen :
define myMPD MPD
Set
set <name> <was>
z.Z. unterstützte Kommandos
play => spielt den aktuellen Titel der MPD internen Playliste
clear => löscht die MPD interne Playliste
stop => stoppt die Wiedergabe
pause => Pause an/aus
previous => spielt den vorherigen Titel in der Playliste
next => spielt den nächsten Titel in der Playliste
random => zufällige Wiedergabe an/aus
repeat => Wiederholung an/aus
toggle => wechselt von play nach stop bzw. stop/pause nach play
volume (%) => ändert die Lautstärke von 0 - 100%
volumeUp => Lautstärke schrittweise erhöhen , Schrittweite = ( attr volumeStep size )
volumeDown => Lautstärke schrittweise erniedrigen , Schrittweite = ( attr volumeStep size )
playlist (name|SongNr|Position) => lade Playliste aus der MPD Datenbank und starte die Wiedergabe
Werden SongNr und/oder Position nicht mit übergeben, startet die Wiedergabe mit dem ersten Titel (Song=0) am Anfang (Position=0)
playfile (file) => erzeugt eine MPD interne Playliste mit file als Inhalt und spielt dieses ab
updateDb => wie MPC update, Update der MPD Datenbank
reset => reset des FHEM MPD Moduls
mpdCMD (cmd) => sende cmd direkt zum MPD Server ( siehe auch MPD Comm Ref )
IdleNow => sendet das Kommando idle zum MPD und wartet auf Ereignisse
clear_readings => löscht sehr viele Readings
mute => on,off,toggle
seekcur (zeit) => Format: [[hh:]mm:]ss. nicht vor MPD Version 0.20
forward => Springt im laufenden Track um einen optional per seekStep oder seekStepSmall definierten Wert nach vorne bzw. defaultmäßig um 7%.
rewind => Springt so wie bei forward beschrieben entsprechend zurück.
channel => Wechsele zur Playliste mit der angegebenen Nummer
channelUp => wechselt zur nächsten Playliste
channelDown => wechselt zur vorherigen Playliste
save_bookmark => speichert den aktuellen Zustand (Tracknummer und Position innerhalb des Tracks für die gerade geladene Playliste .
dies sunktioniert nur, wenn die Playliste mit dem Modul geladen wurde und wenn das Attribut bookmarkDir gesetzt ist.
load_bookmark => stellt den zuletzt gespeicherten Zustand (set bookmark) der geladenen Playliste wieder her und springt zum gespeicherten Track und Position
wird zusätzlich mit übergeben wird zuvor die entsprechend Playliste geladen
Get
get <name> <was>
z.Z. unterstützte Kommandos
music => zeigt alle Dateien der MPD Datenbank
playlists => zeigt alle Playlisten der MPD Datenbank
playlistsinfo => zeigt Informationen der aktuellen Playliste
webrc => HTML Ausgabe einer einfachen Web Fernbedienung Bsp :.
statusRequest => hole aktuellen MPD Status
currentsong => zeigt Informationen zum aktuellen Titel der MPD internen Playliste
outputs => zeigt Informationen der definierten MPD Ausgabe Kanäle ( aus /etc/mpd.conf )
bookmarks => zeigt eine Liste aller bisher gespeicherten Bookmarks
Attribute
password => Password falls in der mpd.conf definiert
loadMusic 1|0 => lade die MPD Titel beim FHEM Start : mpd.conf - music_directory
loadPlaylists 1|0 => lade die MPD Playlisten beim FHEM Start : mpd.conf - playlist_directory
volumeStep x => Schrittweite für Volume +/-
titleSplit 1|0 => zerlegt die aktuelle Titelangabe am ersten Vorkommen von - (BlankMinusBlank) in die zwei Felder Artist und Titel,
wenn im abgespielten Titel die Interpreten Information nicht verfügbar ist (sehr oft bei Radio-Streams default 1)
Liegen keine Titelangaben vor wird die Ausgabe durch den Namen der Radiostation ersetzt
timeout (default 1) => Timeoutwert in Sekunden für die Verbindung fhem-mpd
waits (default 60) => Überwachungszeit in Sekunden für den Idle Prozess. In Verbindung mit refresh_song der Aktualisierungs Intervall für die aktuellen Songparamter,
(z.B. um den Fortschrittsbalken bei TabletUI aktuell zu halten)
stateMusic 1|0 => zeige Musikliste als DropDown im Webfrontend
statePlaylists 1|0 => zeige Playlisten als DropDown im Webfrontend
player mpd|mopidy|forked-daapd (default mpd) => welcher Player wird gesteuert ACHTUNG : Mopidy unterstützt nicht alle Kommandos des echten MPD ! (siehe Mopidy Dokumentation)
cache (default lfm => /fhem/www/lfm) Zwischenspeicher für die JSON und PNG Dateien Wichtig : Der User unter dem der fhem Prozess ausgeführt wird (default fhem) muss Lese und Schreibrechte in diesem Verzeichniss haben !
Das Verzeichnis sollte auch unterhalb von www liegen, damit der fhem Webserver direkten Zugriff auf die Bilder hat.
unknown_artist_image => Ersatzimage wenn kein anderes Image zur Verfügung steht (default : /fhem/icons/1px-spacer)
bookmarkDir => ein vom FHEM User les- und beschreibbares Verzeichnis. Wennn dieses definiert wird, ist das Speichern und Wiederherstellen von Playlistzuständen mit Hilfe von set/get bookmark möglich
autoBookmark => wenn dies auf 1 gesetzt wird, dann werden automatisch Playlistenzustände geladen und gespeichert, immer wenn die Playliste mit diesem Modul gewechselt wird
seekStep => wenn definiert, wird dadurch die Sprungweite von forward und rewind gesetzt. Der Wert gilt als Prozentwert. default: 7
seekStepSmall => Wenn diesem Attribut kann für den Anfang eines Tracks innerhalb der ersten per seekStepSmall definierten Prozent eine kleinere Sprungweite definiert werden,
um so z.B. die Intromusik von Hörspielen oder Hörbüchern überspringen zu können. default: 1
seekStepSmallThreshold => unterhalb dieses Wertes wird seekStepSmall benutzt, oberhalb seekStep default: 0 (ohne Funktion)
no_playlistcollection (default 0) => wenn auf 1 gesetzt wird das Reading playlistcollection nicht erzeugt
Readings
- alle MPD internen Werte
- vom Modul direkt erzeugte Readings :
playlistinfo : (TabletUI Medialist)
playlistcollection : (TabletUI)
playlistname : (TabletUI)
artist_image : (bei Nutzung von Last.fm)
artist_image_html : (bei Nutzung von Last.fm)
album_image : (bei Nutzung von Last.fm)
album_image_html : (bei Nutzung von Last.fm)
artist_content : (bei Nutzung von Last.fm)
artist_summary : (bei Nutzung von Last.fm)
playlistinfo : (z.B. für die TabletUI Medialist)
playlistcollection : (TabletUI) Liste der Playlisten
playlistname : (TabletUI) Name der aktuellen Playliste aus playlistcollection
playlist_num : Playlisten Nr. (0 .. n) der aktuellen Playliste aus playlistcollection
playlist_json : (notwendig fü das Medialist Modul)
Cover : Cover Bild zum aktuellen Song aus playlist_json
currentTrackProvider : Radio / Bibliothek - Unterscheidung Radio Stream oder lokale Datei
rawTitle : Title Information ohne Veränderungen durch das Modul
MQTT
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MQTT
MQTT2_DEVICE
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MQTT2_DEVICE
MQTT2_SERVER
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MQTT2_SERVER
MQTT_BRIDGE
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MQTT_BRIDGE
MQTT_DEVICE
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MQTT_DEVICE
Dieses Modul ist eine MQTT-Bridge, die gleichzeitig mehrere FHEM-Devices erfasst und deren Readings
per MQTT weiter gibt bzw. aus den eintreffenden MQTT-Nachrichten befuellt oder diese als 'set'-Befehl
an dem konfigurierten FHEM-Geraet ausfuert.
Es wird ein MQTT-Geraet als IODev benoetigt.
Die (minimale) Konfiguration der Bridge selbst ist grundsaetzlich sehr einfach.
Der erste ist ein Prefix fuer die Steuerattribute, worueber die zu ueberwachende Geraete (s.u.)
konfiguriert werden. Defaultwert ist 'mqtt'.
Wird dieser z.B. als 'hugo' redefiniert, heissen die Steuerungsattribute entsprechend hugoPublish etc.
Der zweite Parameter ('devspec') erlaubt die Menge der zu ueberwachenden Geraeten
zu begrenzen (sonst werden einfach alle ueberwacht, was jedoch Performance kosten kann).
Beispiel fuer devspec: 'TYPE=dummy' oder 'dummy1,dummy2'. Bei kommaseparierten Liste duerfen keine Leerzeichen verwendet werden!
s.a. devspec
get:
version
Zeigt Modulversion an.
devlist [<name (regex)>]
Liefert Liste der Namen der von dieser Bridge ueberwachten Geraete deren Namen zu dem optionalen regulaerem Ausdruck entsprechen.
Fehlt der Ausdruck, werden alle Geraete aufgelistet.
devinfo [<name (regex)>]
Gibt eine Liste der ueberwachten Geraete aus, deren Namen zu dem optionalen regulaerem Ausdruck entsprechen.
Fehlt der Ausdruck, werden alle Geraete aufgelistet. Zusaetzlich werden bei 'publish' und 'subscribe'
verwendete Topics angezeigt incl. der entsprechenden Readinsnamen.
readings:
device-count
Anzahl der ueberwachten Geraete
incoming-count
Anzahl eingehenden Nachrichten
outgoing-count
Anzahl ausgehende Nachrichten
updated-reading-count
Anzahl der gesetzten Readings
updated-set-count
Anzahl der abgesetzten 'set' Befehle
transmission-state
letze Uebertragunsart
Attribute:
folgende Attribute werden unterstuetzt:
IODev
Dieses Attribut ist obligatorisch und muss den Namen einer funktionierenden MQTT-Modulinstanz enthalten.
Modul MQTT2_SERVER wird nicht unterstuetzt.
disable
Wert 1 deaktiviert die Bridge
Beispiel: attr <dev> disable 1
globalDefaults
Definiert Defaults. Diese greifen in dem Fall, wenn in dem jeweiligen Geraet definierte Werte nicht zutreffen.
s.a. mqttDefaults.
globalAlias
Definiert Alias. Diese greifen in dem Fall, wenn in dem jeweiligen Geraet definierte Werte nicht zutreffen.
s.a. mqttAlias.
globalPublish
Definiert Topics/Flags fuer die Uebertragung per MQTT. Diese werden angewendet, falls in dem jeweiligen Geraet
definierte Werte nicht greifen oder nicht vorhanden sind.
s.a. mqttPublish.
globalSubscribe ! TODO - wird derzeit nicht unterstuetzt und wird moeglicherweise gar nicht implementiert !
Definiert Topics/Flags fuer die Aufnahme der Werte aus der MQTT-Uebertragung. Sie greifen, falls in dem jeweiligen Geraet
definierte Werte nicht greifen oder nicht vorhanden sind. s.a. mqttSubscribe.
globalTypeExclude
Definiert (Geraete-)Typen und Readings, die nicht bei der Uebertragung beruecksichtigt werden.
Werte koennen getrennt fuer jede Richtung (buplish oder subscribe) vorangestellte Prefixe 'pub:' und 'sub:' angegeben werden.
Ein einzelner Wert bedeutet, dass ein Geraet diesen Types komplett ignoriert wird (also fuer alle seine Readings und beide Richtungen).
Durch ein Doppelpunkt getrennte Paare werden als [sub:|pub:]Type:Reading interptretiert.
Das Bedeutet, dass an dem gegebenen Type die genannte Reading nicht uebertragen wird.
Ein Stern anstatt Type oder auch Reading bedeutet, dass alle Readings eines Geretaetyps
bzw. genannte Readings an jedem Geraetetyp ignoriert werden.
globalDeviceExclude
Definiert Geraetenamen und Readings, die nicht uebertragen werden.
Werte koennen getrennt fuer jede Richtung (buplish oder subscribe) vorangestellte Prefixe 'pub:' und 'sub:' angegeben werden.
Ein einzelner Wert bedeutet, dass ein Geraet mit diesem Namen komplett ignoriert wird (also fuer alle seine Readings und beide Richtungen).
Durch ein Doppelpunkt getrennte Paare werden als [sub:|pub:]Device:Reading interptretiert.
Das Bedeutet, dass an dem gegebenen Geraet die genannte Reading nicht uebertragen wird.
Beispiel: attr <dev> globalDeviceExclude Test Bridge:transmission-state
Fuer die ueberwachten Geraete wird eine Liste der moeglichen Attribute automatisch um mehrere weitere Eintraege ergaenzt.
Sie fangen alle mit vorher in der Bridge definiertem Prefix an. Ueber diese Attribute wird die eigentliche MQTT-Anbindung konfiguriert.
Defaultmaessig werden folgende Attributnamen verwendet: mqttDefaults, mqttAlias, mqttPublish, mqttSubscribe.
Die Bedeutung dieser Attribute wird im Folgenden erklaert.
mqttDefaults
Hier wird eine Liste der "key=value"-Paare erwartet. Folgende Keys sind dabei moeglich:
'qos' definiert ein Defaultwert fuer MQTT-Paramter 'Quality of Service'.
'retain' erlaubt MQTT-Nachrichten als 'retained messages' zu markieren.
'base' wird als Variable ($base) bei der Konfiguration von konkreten Topics zur Verfuegung gestellt.
Sie kann entweder Text oder eine Perl-Expression enthalten.
Perl-Expression muss in geschweifte Klammern eingeschlossen werden.
In einer Expression koennen folgende Variablen verwendet werden:
$base = entsprechende Definition aus dem 'globalDefaults',
$reading = Original-Readingname,
$device = Devicename und $name = Readingalias (s. mqttAlias.
Ist kein Alias definiert, ist $name=$reading).
Alle diese Werte koennen durch vorangestelle Prefixe ('pub:' oder 'sub') in ihrer Gueltigkeit
auf nur Senden bzw. nur Empfangen begrenzt werden (soweit sinnvoll).
Werte fuer 'qos' und 'retain' werden nur verwendet,
wenn keine explizite Angaben darueber fuer ein konkretes Topic gemacht worden sind.
mqttAlias
Dieses Attribut ermoeglicht Readings unter einem anderen Namen auf MQTT-Topic zu mappen.
Eigentlich nur sinnvoll, wenn Topicdefinitionen Perl-Expressions mit entsprechenden Variablen sind.
Auch hier werden 'pub:' und 'sub:' Prefixe unterstuetzt (fuer 'subscribe' gilt das Mapping quasi umgekehrt).
Alias fuer subscribe ist derzeit nicht implementiert!
mqttPublish
Hier werden konkrette Topics definiet und den Readings zugeordnet (Format: <reading>:topic=<topic>).
Weiterhin koennen diese einzeln mit 'qos'- und 'retain'-Flags versehen werden.
Topics koennen auch als Perl-Expression mit Variablen definiert werden ($reading, $device, $name, $base).
'topic' kann auch als 'readings-topic' geschrieben werden.
Werte fuer mehrere Readings koennen auch gemeinsam gleichzeitig definiert werden,
indem sie, mittels '|' getrennt, zusammen angegeben werden.
Wird anstatt eines Readingsnamen ein '*' verwendet, gilt diese Definition fuer alle Readings,
fuer die keine explizite Angaben gemacht wurden.
Ebenso koennen auch Attributwerte gesendet werden ('atopic' oder 'attr-topic').
Weiterhin koennen auch Expressions (reading:expression=...) definiert werden.
Die Expressions koenne sinnvollerweise entweder Variablen ($value, $topic, $qos, $retain, $message) veraendern, oder einen Wert != undef zurrueckgeben.
Der Rueckhgabe wert wird als neue Nachricht-Value verwendet, die Aenderung der Variablen hat dabei jedoch Vorrang.
Ist der Rueckgabewert undef, dann wird das Setzen/Ausfuehren unterbunden.
Ist die Rueckgabe ein Hash (nur 'topic'), werden seine Schluesselwerte als Topic verwendet,
die Inhalte der Nachrichten sind entsprechend die Werte aus dem Hash.
Option 'resendOnConnect' erlaubt eine Speicherung der Nachrichten,
wenn keine Verbindung zu dem MQTT-Server besteht.
Die zu sendende Nachrichten in einer Warteschlange gespeichet.
Wird die Verbindung aufgebaut, werden die Nachrichten in der ursprungichen Reihenfolge verschickt.
Moegliche Werte:
none alle verwerfen
last immer nur die letzte Nachricht speichern
first immer nur die erste Nachricht speichern danach folgende verwerfen
all alle speichern, allerdings existiert eine Obergrenze von 100,
wird es mehr, werden aelteste ueberzaelige Nachrichten verworfen.
mqttSubscribe
Dieses Attribut konfiguriert das Empfangen der MQTT-Nachrichten und die entsprechenden Reaktionen darauf.
Die Konfiguration ist aehnlich der fuer das 'mqttPublish'-Attribut. Es koennen Topics fuer das Setzen von Readings ('topic' oder auch 'readings-topic') und
Aufrufe von 'set'-Befehl an dem Geraet ('stopic' oder 'set-topic') definiert werden.
Ebenso koennen auch Attribute gesetzt werden ('atopic' oder 'attr-topic').
Mit Hilfe von zusaetzlichen auszufuehrenden Perl-Expressions ('expression') kann das Ergebnis vor dem Setzen/Ausfueren noch beeinflusst werden.
In der Expression sind folgende Variablen verfuegbar: $device, $reading, $message (initial gleich $value).
Die Expression kann dabei entweder Variable $value veraendern, oder einen Wert != undef zurueckgeben. Redefinition der Variable hat Vorrang.
Ist der Rueckgabewert undef, dann wird das Setzen/Ausfuehren unterbunden (es sei denn, $value hat einen neuen Wert).
Ist die Rueckgabe ein Hash (nur fuer 'topic' und 'stopic'), dann werden seine Schluesselwerte als Readingsnamen bzw. 'set'-Parameter verwendet,
die zu setzenden Werte sind entsprechend die Werte aus dem Hash.
Weiterhin kann das Attribut 'qos' angegeben werden ('retain' macht dagegen keinen Sinn).
In der Topic-Definition koennen MQTT-Wildcards (+ und #) verwendet werden.
Falls der Reading-Name mit einem '*'-Zeichen am Anfang definiert wird, gilt dieser als 'Platzhalter'.
Der tatsaechliche Name der Reading (und ggf. des Geraetes) wird dabei durch Variablen aus dem Topic
definiert ($device (nur fuer globale Definition in der Bridge), $reading, $name).
Im Topic wirken diese Variablen als Wildcards, macht natuerlich nur Sinn, wenn Reading-Name auch nicht fest definiert ist (also faengt mit '*' an).
Die Variable $name wird im Unterschied zu $reading ggf. ueber die in 'mqttAlias' definierten Aliases beeinflusst.
Auch Verwendung von $base ist erlaubt.
Bei Verwendung von 'stopic' wird das 'set'-Befehl als 'set <dev> <reading> <value>' ausgefuert.
Fuer ein 'set <dev> <value>' soll als Reading-Name 'state' verwendet werden.
Alle Readings eines Sensors (mit ihren Namen wie sie sind) per MQTT versenden: defmod sensor XXX
attr sensor mqttPublish *:topic={"/sensor/$reading"}
Topicsdefinition mit Auslagerung von dem gemeinsamen Teilnamen in 'base'-Variable: defmod sensor XXX
attr sensor mqttDefaults base={"/$device/$reading"}
attr sensor mqttPublish *:topic={$base}
Topicsdefinition nur fuer bestimmte Readings mit deren gleichzeitigen Umbennenung (Alias): defmod sensor XXX
attr sensor mqttAlias temperature=temp humidity=hum
attr sensor mqttDefaults base={"/$device/$name"}
attr sensor mqttPublish temperature:topic={$base} humidity:topic={$base}
Beispiel fuer eine zentralle Konfiguration in der Bridge fuer alle Devices, die Reading 'temperature' besitzen: defmod mqttGeneric MQTT_GENERIC_BRIDGE
attr mqttGeneric IODev mqtt
attr mqttGeneric defaults sub:qos=2 pub:qos=0 retain=0
attr mqttGeneric publish temperature:topic={"/haus/$device/$reading"}
Beispiel fuer eine zentralle Konfiguration in der Bridge fuer alle Devices
(wegen einer schlechte uebersicht und einer unnoetig grossen Menge eher nicht zu empfehlen): defmod mqttGeneric MQTT_GENERIC_BRIDGE
attr mqttGeneric IODev mqtt
attr mqttGeneric defaults sub:qos=2 pub:qos=0 retain=0
attr mqttGeneric publish *:topic={"/haus/$device/$reading"}
Einschraenkungen:
Wenn mehrere Readings das selbe Topic abonieren, sind dabei keine unterschiedlichen QOS moeglich.
Wird in so einem Fall QOS ungleich 0 benoetigt, sollte dieser entweder fuer alle Readings gleich einzeln definiert werden,
oder allgemeinguetltig ueber Defaults.
Ansonsten wird beim Erstellen von Abonements der erst gefundene Wert verwendet.
Abonements werden nur erneuert, wenn sich das Topic aendert, QOS-Flag-Aenderung alleine wirkt sich daher erst nach einem Neustart aus.
MSwitch
MSwitch ist ein Hilfsmodul , das sowohl event-, als auch zeitgesteuert arbeitet.
Für eine umfangreche Beschreibung siehe Wiki: https://wiki.fhem.de/wiki/MSwitch
Define
define < Name > MSwitch;
Beispiel:
define Schalter MSwitch
Der Befehl legt ein Device vom Typ MSwitch an mit dem Namen Schalter.
sämtliche weitere Konfiguration erfolgt zu einem späteren Zeitpunkt und kann innerhalb des Devices jerderzeit verändert und angepasst werden
Set
inactive - setzt das Device inaktiv
active - setzt das Device aktiv
backup MSwitch - legt eine Backupdatei mit der Konfiguration aller MSwitchdevices an
del_delays - löscht alle anstehenden timer für zeitversetzte Befehle
exec_cmd1 - sofortiges Ausführen des Kommandozweiges1
exec_cmd2 - sofortiges Ausführen des Kommandozweiges2
fakeevent [event] - simulation eines eingehenden Events
wait [sek] - keine annahme von Events für vorgegebenen Zeitraum
Get
active_timer show - zeigt eine Liste aller anstehenden Timer und Delays
active_timer delete - löscht alle anstehenden Timer und Delays. Timer werden neu berechnet
get_config - zeigt den dem Device zugeordneten Configsatz
restore_Mswitch_date this_device - restore des Devices aus dem Backupfile
restore_Mswitch_date all_devices - restore aller MSwitchdevices aus dem Backupfile
Attribute
MSwitch_Help:0,1 - zeigt Hilfebuttons zu allen relevanten Feldern
MSwitch_Debug:0,1,2 - 1. schaltet Prüffelder zu Conditions etc. an / 2. Testmode shreibt alle Aktionen in ein seperates Log, führt diese aber nicht aus / 3. reiner Entwicklungsmode
MSwitch_Expert:0,1 - 1. aktiviert Zusatzoptionenv wi z.B globales triggern, prioritätsauswahl, Befehlswiederholungesn etc.
MSwitch_Delete_Delays:0,1 - 1. löscht alle anstehenden Delays bei erneutem eintreffen eines passenden Events
MSwitch_Include_Devicecmds:0,1 - 1. alles Devices mit eigenem Befehlssatz (set ?) werden in affected Devices einbezogen
MSwitch_Include_Webcmds:0,1 - 1. alles Devices mit vorhandenen WbCmds werden in affected Devices einbezogen
MSwitch_Include_MSwitchcmds:0,1 - 1. alles Devices mit vorhandenen MSwitchcmds werden in affected Devices einbezogen
MSwitch_Activate_MSwitchcmds:0,1 - 1. aktiviert in allen Devices das Attribut MSwitchcmds
MSwitch_Lock_Quickedit:0,1 - 1. aktiviert die sperre des Auswahlfeldes 'affected devices'
MSwitch_Ignore_Types: - Liste aller DeviceTypen , die nicht in den 'affected devices' dargestellt werden'
MSwitch_Trigger_Filter - Liste aller zu ignorierenden Events
ModbusTrovis5576 verwendet das Modul Modbus für die Kommunikation mit der Samson Trovis 5576 Heizungssteuerung.
Hier wurden die wichtigsten (der über 2000 verfügbaren) Werte aus den Holding-Registern und Coils-Statuswerten definiert und werden im angegebenen Intervall abgefragt und aktualisiert.
Vorraussetzungen
Dieses Modul benötigt das Basismodul Modbus für die Kommunikation, welches wiederum das Perl-Modul Device::SerialPort oder Win32::SerialPort benötigt.
Physikalische Verbindung zur Heizungssteuerung
Im Handbuch auf Seite 124 steht die Pinbelegung der RS232-Schnittstelle. Diese befindet sich nicht vorne am Reglermodul, sondern, von vorne gesehen, an der linken Seite des Reglers. Diese Schnittstelle ist mit einem Schutzdeckel verschlossen, den man einfach abziehen kann.
Man benötigt nur die üblichen Pins für TD und RD, sowie Ground.
Besonderheiten der Readings und des Reglers
Man kann mit diesem Modul z.B. die Betriebsart der jeweiligen Regelkreise umschalten. Da der Drehschalter am Regler selbst natürlich immer noch auf der alten Stellung steht, wird diese "Umgehung" durch die Anzeige "GLT" (steht für "Gebäudeleittechnik", also für die zentrale Steuerungsübernahme) im Display deutlich gemacht. Gleichzeitig dazu wird das entsprechende Ebenen-Bit ("_EBN") auf "GLT" gesetzt.
Um jetzt wieder auf die hardwaremäßig gesetzte Einstellung zurückzuschalten, muss das entsprechende Ebenen-Bit auf "Autark" gesetzt werden. Das dazugehörende Reading wird im Anschluß auf den nun im Regler gültigen Wert gesetzt.
Wenn man eine Betriebsart auf "Standby" umschaltet, kann es sein, dass die Heizungsanlage diese auf "Mond" (zurück-)umstellt. Das wird dann mit dem Bit für Frostschutzbetrieb angezeigt, und erfolgt, wenn die gemessene Aussentemperatur unter 3°C liegt.
Hinweis:
Es ist sehr empfehlenswert das Attribut event-on-change-reading auf .* zu setzen. Sonst werden sehr viele unnötige Events erzeugt.
Define
define <name> ModbusTrovis5576 <ID> <Interval>
Das Modul verbindet sich zur Samson Trovis 5576 Heizungssteuerung mit der angegebenen Modbus Id <ID> über ein bereits fertig definiertes Modbus-Device und fragt die gewünschten Werte im Abstand von <Interval> Sekunden ab.
Beispiel: define heizung ModbusTrovis5576 255 60
Set-Kommandos
Die folgenden Werte können gesetzt werden:
Regelkreis 1 (Normalerweise Wandheizkörper):
RK1_Betriebsart: Die Betriebsart des Regelkreis 1. Kann Standby, Mond oder Sonne sein, und entspricht der Einstellung am Regler selbst (siehe auch Reading RK1_Schalter).
RK1_Betriebsart_EBN: Das Ebenen-Bit zur Betriebsart. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
RK1_Stellsignal: Der Öffnungsgrad in Prozent des Stellglieds zur Wärmeübertragung.
RK1_Stellsignal_EBN: Das Ebenen-Bit zum Stellsignal. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
RK1_Umwaelzpumpe: Der Zustand der Umwälzpumpe, Kann An oder Aus sein.
RK1_Umwaelzpumpe_EBN: Das Ebenen-Bit zur Umwälzpumpe. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
Regelkreis 2 (Normalerweise Fußbodenheizung):
RK2_Betriebsart: Die Betriebsart des Regelkreis 2. Kann Standby, Mond oder Sonne sein, und entspricht der Einstellung am Regler selbst (siehe auch Reading RK2_Schalter).
RK2_Betriebsart_EBN: Das Ebenen-Bit zur Betriebsart. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
RK2_Stellsignal: Der Öffnungsgrad in Prozent des Stellglieds zur Wärmeübertragung.
RK2_Stellsignal_EBN: Das Ebenen-Bit zum Stellsignal. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
RK2_Umwaelzpumpe: Der Zustand der Umwälzpumpe, Kann An oder Aus sein.
RK2_Umwaelzpumpe_EBN: Das Ebenen-Bit zur Umwälzpumpe. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
Trinkwasserspeicher:
Wasser_Betriebsart: Die Betriebsart des Trinkwasserkreises. Kann Standby, Mond oder Sonne sein, und entspricht der Einstellung am Regler selbst (siehe auch Reading Wasser_Schalter).
Wasser_Betriebsart_EBN: Das Ebenen-Bit zur Betriebsart. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
Wasser_Speicherladepumpe: Der Zustand der Speicherladepumpe. Kann An oder Aus sein.
Wasser_Speicherladepumpe_EBN: Das Ebenen-Bit zur Speicherladepumpe. Kann GLT oder Autark sein, und gibt an, ob die Pumpe Autark läuft, oder übersteuert wurde.
Wasser_Zirkulationspumpe: Der Zustand der Zirkulationspumpe. Kann An oder Aus sein.
Wasser_Zirkulationspumpe_EBN: Das Ebenen-Bit zur Zirkulationspumpe. Kann GLT oder Autark sein, und gibt an, ob die Pumpe Autark läuft, oder übersteuert wurde.
Wasser_ThermischeDesinfektion: Gibt an, ob gerade eine thermische Desinfektion läuft (=An) oder nicht (=Aus).
Wasser_Temp_Soll: Die Solltemperatur des Trinkwasserspeichers.
Wasser_Temp_Minimum: Die Minimaltemperatur des Trinkwasserspeichers.
Wasser_Temp_Desinfektion: Die Solltemperatur der thermischen Desinfektion.
Hier der Vollständigkeit halber die Bedeutung der restlichen Readings (die nur gelesen werden können):
Grundsätzliches:
Modellnummer: Gibt die gemeldete Modellnummer an. Sollte "5576" sein.
Aussen_Temp: Gibt die gemessene Aussentemperatur in °C an.
Fehlerstatusregister_CL1: Gibt den Zustand des aktuellen Status Register zurück.
Regelkreis 1 (Normalerweise Wandheizkörper):
RK1_Schalter: Gibt die Schalterstellung am Regler an. Kann PA, Auto, Standby, Hand, Sonne oder Mond sein.
RK1_Frostschutzbetrieb: Gibt an, ob der Heizungsregelkreis 1 im Frostschutzbetrieb läuft.
RK1_Vorlauf_Temp: Gibt die Heizungsvorlauftemperatur in °C an.
RK1_Ruecklauf_Temp: Gibt die Heizungsrücklauftemperatur in °C an.
Regelkreis 2 (Normalerweise Fußbodenheizung):
RK2_Schalter: Gibt die Schalterstellung am Regler an. Kann PA, Auto, Standby, Hand, Sonne oder Mond sein.
RK2_Frostschutzbetrieb: Gibt an, ob der Heizungsregelkreis 2 im Frostschutzbetrieb läuft.
RK2_Vorlauf_Temp: Gibt die Heizungsvorlauftemperatur in °C an.
RK2_Ruecklauf_Temp: Gibt die Heizungsrücklauftemperatur in °C an.
Trinkwasserspeicher:
Wasser_Schalter: Gibt die Schalterstellung am Regler an. Kann PA, Auto, Standby, Hand, Sonne oder Mond sein.
Wasser_Frostschutzbetrieb: Gibt an, ob der Trinkwasserregelkreis im Frostschutzbetrieb läuft.
Wasser_Temp: Gibt die Trinkwasserspeichertemperatur in °C an.
Get-Kommandos
Alle Readings sind auch als get-Kommando verfügbar. Intern führt ein get einen Request an die Heizungssteuerung aus, und aktualisiert den entsprechenden Readings-Wert (und gibt ihn als Ergebnis des Aufrufs zurück). Damit kann man eine zusätzliche Aktualisierung des Wertes erzwingen.
Attribute
Nur zentral definierte Attribute werden untstützt. Im speziellen:
Dieses Modul verbindet fhem über IP mit dem net4home Bus. Zusätzlich müssen Objekte über den Typ
N4MODULE definiert werden, um Daten an den net4home-Bus zu senden oder zu lesen.
Weitere technische Informationen gibt es auf der Homepage unter net4home.de
Define
define <name> N4HBUS <device>
<device> ist eine Kombination aus IP Adresse des net4home Busconnectors und dem Port (default:3478).
Beispiel:
define net4home N4HBUS 192.168.1.69:3478
Das Device kann sich auch mit dem Busconnector auf dem selben System verbinden.
Der Default-Port für die Kommunikation ist 3478. Sollte es nötig sein den Port zu verändern, so muss dies ebenfalls
in der Konfiguration des Services durchgeführt werden.
Readings
state - aktueller Status der Verbindung zum net4home Busconnector
Attributes
MI - die eindeutige MI in der net4home Umgebung (default:65281)
OBJADR - die eindeutige OBJADR in der net4home Umgebung (default:32700)
Erstellt ein net4home Modul-Device welches mit dem N4HBUS Device kommuniziert.
Beispiel:
define MyN4HMODULEice N4HMODULE 24 26004
Derzeit werden folgende Typen unterstützt: Messwerte
24 - Messwert,Temperatur
25 - Messwert,Helligkeit
26 - Messwert,Feuchte
34 - TLH-Regler H,Sollwert,Temperatur
95 - Ausgang, Jal, Motor AJ3
210 - RF Reader
240 - Messwert,Wind
242 - Messwert,Luftdruck
245 - Messwert,Regenmenge
Readings
Die Readings werden Abhängig vom Modultyp angegeben.
Attributes
Interval
Das Interval bestimmt bei Messwerten die Zeit zwischen dem Senden der Daten auf den Bus. Ist kein Attribut definiert, so wird der Standardwert genutzt.
Dieses Modul steuert NEUTRINO basierte Geräte wie die Coolstream über eine Netzwerkverbindung.
Für definierte NEUTRINO Geräte wird ein interner Task angelegt, welcher periodisch die Readings aktualisiert. Der Standartpollintervall ist 45 Sekunden.
Beispiele:
define SATReceiver NEUTRINO 192.168.0.10
# Alternativer Port
define SATReceiver NEUTRINO 192.168.0.10 8080
NUKIBridge - Steuert das Nuki Smartlock über die Nuki Bridge
Das Nuki Bridge Modul verbindet FHEM mit der Nuki Bridge und liest dann alle auf der Bridge verfügbaren Smartlocks ein. Desweiteren werden automatisch die erkannten Smartlocks als eigenständige Devices an gelegt.
Define
define <name> NUKIBridge <HOST> <API-TOKEN>
Beispiel:
define NBridge1 NUKIBridge 192.168.0.23 F34HK6
Diese Anweisung erstellt ein NUKIBridge Device mit Namen NBridge1 und der IP 192.168.0.23 sowie dem Token F34HK6.
Nach dem anlegen des Bridge Devices werden alle zur verfügung stehende Smartlock automatisch in FHEM an gelegt.
Readings
0_nukiId - ID des ersten gefundenen Nuki Smartlocks
0_name - Name des ersten gefunden Nuki Smartlocks
smartlockCount - Anzahl aller gefundenen Smartlock
bridgeAPI - API Version der Bridge
bridgeType - Hardware oder Software/App Bridge
currentTime - aktuelle Zeit auf der Bridge zum zeitpunkt des Info holens
firmwareVersion - aktuell auf der Bridge verwendete Firmwareversion
hardwareId - ID der Hardware Bridge
lastError - gibt die letzte HTTP Errormeldung wieder
serverConnected - true/false gibt an ob die Hardwarebridge Verbindung zur Nuki-Cloude hat.
serverId - gibt die ID des Cloudeservers wieder
uptime - Uptime der Bridge in Sekunden
wifiFirmwareVersion- Firmwareversion des Wifi Modules der Bridge
Die vorangestellte Zahl ist forlaufend und gibt beginnend bei 0 die Eigenschaften Eines Smartlocks wieder.
Set
autocreate - Veranlasst ein erneutes Einlesen aller Smartlocks von der Bridge und falls noch nicht in FHEM vorhanden das autimatische anlegen.
callbackRemove - Löschen einer Callback Instanz auf der Bridge. Die Instanz ID kann mittels get callbackList ermittelt werden
clearLog - löscht das Logfile auf der Bridge
fwUpdate - schaut nach einer neueren Firmware und installiert diese sofern vorhanden
info - holt aktuellen Informationen über die Bridge
reboot - veranlässt ein reboot der Bridge
Get
callbackList - Gibt die Liste der eingetragenen Callback URL's wieder. Die Bridge nimmt maximal 3 auf.
NUKIDevice - Steuert das Nuki Smartlock
Das Nuki Modul verbindet FHEM über die Nuki Bridge mit einem Nuki Smartlock. Es ist dann möglich das Schloss zu ver- und entriegeln.
In der Regel werden die Nuki Devices automatisch durch das Bridgemodul angelegt.
Define
define <name> NUKIDevice <Nuki-Id> <IODev-Device>
Beispiel:
define Haustür NUKIDevice 1 NBridge1
Diese Anweisung erstellt ein NUKIDevice mit Namen Haustür, der NukiId 1 sowie dem IODev Device NBridge1.
Nach dem anlegen des Devices wird automatisch der aktuelle Zustand des Smartlocks aus der Bridge gelesen.
Readings
state - Status des Smartlock bzw. Fehlermeldung von Fehler vorhanden.
Die Network UPS Tools (www.networkupstools.org) bieten Unterstützung für Unterbrechungsfreie Stromversorgungen (USV)
und ähnliches. Dieses Modul ermöglicht den Zugriff auf einen NUT-Server, womit man Daten auslesen kann (z.B. den Status, Restlaufzeit, Eingangsspannung, manchmal
auch Temperatur u.ä.) und zukünftig die USV auch steuern kann (Test aktivieren, USV herunterfahren u.ä.).
Welche Readings zur Verfügung stehen, bestimmt das Attribut asReadings. Welche Werte eine USV zur Verfügung stellt, kann man mit
list dieUSV unter Helper: ablesen. Nur ups.status wird immer ausgelesen und ergibt den Status des Geräts.
Define
define <name> NUT <ups> [<host>[:<port>]]
<ups> ist der im NUT-Server definierte Name der USV.
[<host>[:<port>]] ist Host und Port des NUT-Servers. Default ist localhost:3493.
pollState
Polling-Intervall in Sekunden für den Status der USV. Default: 10
pollVal
Polling-Intervall für die anderen Werte. Dieser Wert wird auf ein Vielfaches von pollState gerundet. Default: 60
asReadings
Mit Kommata getrennte Liste der USV-Werte, die als Readings verwendet werden sollen (ups.status wird auf jeden Fall gelesen).
Beispiel: attr dieUSV asReadings battery.charge,battery.runtime,input.voltage,ups.load,ups.power,ups.realpower
Das Nello Modul ermöglicht die Steuerung des nello one Chips.
Um es aufzusetzen, muss zunächst ein neuer Nutzer mit Admin-Rechten in der Nello-App angelegt werden, der nur für FHEM verwendet wird - eine Nutzung per App ist mit diesem Account dann nicht mehr möglich.
Anschließend kann das Gerät angelegt werden. Sobald das Gerät erstellt wurde, kann der Login durchgeführt werden. ACHTUNG: Sollte der Login fehlschlagen, versuche das Passwort über die recoverPassword Funktion zurückzusetzen. Dringend empfohlen: Für verzögerungsfreie Events die detectDeviceID Funktion nach dem Login aufrufen.
recoverPassword <username>
setzt das Passwort zurück
detectDeviceID
erkennt die Geräte-ID des Nellos durch einmaliges Öffnen der Tür und erstellt MQTT-Helper-Geräte für verzögerungsfreie Ereignisse
open [ <location_id> ]
öffnet die Tür
update
aktualisiert Aktionen und Ereignisse
Get
N/A
Attribute
updateInterval
das Intervall in Sekunden, in dem Ereignisse gepollt werden (nur relevant, wenn deviceID nicht erkannt wurde)
default: 900 (wenn Geräte-ID erkannt wurde), ansonten 15
NetIO230B
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: NetIO230B
The Netzer realisiert ein Ethernetinterface auf PIC-Basis. Es agiert als Gateway zwischen TCP/IP und verschiedenen seriellen Busses wie I2C, SPI oder UART. Es können bis zu 13 GPIO Pins angesprochen (gelesen oder geschrieben) werden.
This Modul ermöglicht den Zugriff auf diese GPIO Pin's auf einem Netzer mit IO_base in Version 1.5.
Es gibt zwei als ADC nutzbare Pin's channel, 2 als PMW Ausgänge, drei als Zähler sowie drei die einen Interrupt auslösen können.
Die GPIO Pin's sind standardmäßig als Eingänge konfiguriert. Bevor ein Pin anderweitig genutzt werden kann, muss er über die eingebaute Website entsprechend eingestellt werden.
Ist einer der Eingänge als Inerrupteingang eingestellt, werden bei jedem Interrupereignis die Weter sämtlicher Ports aktualisiert.
Define
define <name> Netzer <host:port>
Set
set <name> <port[_counter]> <value>
Dabei ist <value> ein dem Port entsprechender Buchstabe zwischen a und m. Besitzt der Port das Attribut cnt so kann ein weiterer Wert <port_counter> gesetzt werden.
Ausschließlich Port's die über Attribut Port_[a-m] auf PWM oder out gesetzt sind können benutzt werden.
Bei Port Attribut:
PWM <value> kann ein Wert zwischen 0 und 1023 sein
out <value> kann ein Wert zwischen 0 und 1 sein
cnt <port_counter> <value> kann ein Wert zwischen 0 und 32767 sein
Get
get <name> [<port[_counter]>]
Ohne <port> werde alle Werte aktualisiert.
Wenn <port> ein Buchstabe zwischen a und m ist, wird der Portwert aktualisiert und bei Port Attribut cnt kann ein weiterer Zählerwert <port_counter> gelesen werden.
Attributes
poll_interval
Aktualisierungsintervall aller Werte in Minuten.
Standard: 5, gültige Werte: Dezimalzahl
Port_<port>
Konfiguration des jeweiligen GPIO.
<port> ist ein Buchstabe zwischen a und m.
in: Port ist Eingang. Kann auch weggelassen werden, da Standard. Set ist für diesen Port nicht verfügbar.
Nutzbar für alle Port's
out: Port ist Ausgang. Set kann <value> zwischen 0 und 1 haben.
Nutzbar für alle Port's
cnt: Port ist Eingang. Set ist für diesen Port nicht verfügbar.
Ein weiteres Reading: Port_<port>_counter ist verfügbar.
Dieses kann auch mit get gelesen und mit set verändert werden.
Port_<port>_counter <value> = 0-32767 oder overflow wenn es ausserhalb dieses Bereichs liegt.
Nutzbar für Port's a,b,c
ADC: Port ist Analogeingang. get <value> ist 0-1023 entsprechend der Spannung am Port. Set ist für diesen Port nicht verfügbar.
Nutzbar für Port's e,f
PWM: Port ist PWM-Ausgang. set und get <value> ist 0-1023 entsprechend des Dutycycle am Port.
Nutzbar für Port's d,j
Ermöglicht den Zugriff auf die I2C Schnittstelle des Netzer. über logische Module. Register von I2C IC's können auch direkt gelesen und geschrieben werden.
Vorbereitung:
Bevor dieses Modul verwendet werden kann muss der Serielle Server des Netzers und auf I2C gestellt werden.
Define
define <name> NetzerI2C <Device-Address:Port> <Device-Address:Port> ist die Adresse/IP-Adresse und Serial Server TCP-Port des Netzer
Set
Schreibe ein Byte (oder auch mehrere nacheinander) direkt auf ein I2C device (manche I2C Module sind so einfach, das es nicht einmal mehrere Register gibt): set <name> writeByte <I2C Address> <value>
Schreibe ein Byte (oder auch mehrere nacheinander) direkt auf ein Register des adressierten I2C device: set <name> writeByteReg <I2C Address> <Register Address> <value>
Schreibe n-bytes auf einen Registerbereich, beginnend mit dem angegebenen Register: set <name> writeBlock <I2C Address> <Register Address> <value>
Beispiele:
Schreibe 0xAA zu Modul mit I2C Addresse 0x60 set test1 writeByte 60 AA
Schreibe 0xAA zu Register 0x01 des Moduls mit der I2C Adresse 0x6E set test1 writeByteReg 6E 01 AA
Schreibe 0xAA zu Register 0x01 des Moduls mit der I2C Adresse 0x6E, schreibe danach 0x55 zu Register 0x01 set test1 writeByteReg 6E 01 AA 55
Schreibe 0xA4 zu Register 0x03, 0x00 zu Register 0x04 und 0xDA zu Register 0x05 des Moduls mit der I2C Adresse 0x60 als Block set test1 writeBlock 60 03 A4 00 DA
Get
get <name> read <I2C Address> [<Register Address> [<number of registers>]]
Auslesen der Registerinhalte des I2C Moduls
Examples:
Lese Byte vom Modul mit der I2C Adresse 0x60 get test1 writeByte 60
Lese den Inhalt des Registers 0x01 vom Modul mit der I2C Adresse 0x6E. get test1 read 6E 01 AA 55
Lese den Inhalt des Registerbereichs 0x03 bis 0x06 vom Modul mit der I2C Adresse 0x60. get test1 read 60 03 4
poll_interval
Interval in Minuten in dem alle Werte gelesen (und auch an die log. Devices weitergeleitet) werden.
Standard: -, gültige Werte: Dezimalzahl
wsFilter
Filter um die liste der Geräte zu limitieren welche websocket events generieren sollen
Standard: all, gültige Werte: all, ai, ao, input, led, relay, wd
logicalDev
Filter um Geräte zu limitieren die logische Devices anlegen und mit ihnen kommunizieren.
Standard: ao, input, led, relay, gültige Werte: ai, ao, input, led, relay, wd
Weitere set values sind abhängig von den jeweiligen Subdevice Funktionen.
Details dazu sind in der UniPi Evok Dokumentation zu finden.
Get
get <name> <value>
value:
refresh: aktualisiert alle readings
config: gibt das Konfigurations JSON zurück
Attribute
poll_interval
Interval in Minuten in dem alle Werte gelesen werden.
Standard: -, gültige Werte: Dezimalzahl
restoreOnStartup
Readings nach Neustart wiederherstellen
Standard: last, gültige Werte: last, on, off
aomax
Maxwert für den Schieberegler beim Analogen Ausgang
Standard: 10, gültige Werte: Dezimalzahl
skipreadings
Werte, die vom Gerät gesendet, aber nicht als Reading dargestellt werden sollen.
Standard: relay_type,typ,dev,circuit,glob_dev_id,value,pending; gültige Werte: kommaseparierte Liste
ownsets
Werte, die vom Gerät gesendet, und über set verändert werden können. Schickt das Gerät feste Auswahllisten für einen Wert dann werden die sets automatisch angelegt.
Standard: debounce;counter;interval;pwm_freq;pwm_duty:slider,0,0.1,100; gültige Werte: semikolonseparierte Liste
autoalias
Wenn auf 1 wird das reading alias automatisch als Attribut alias gesetzt.
Standard: 0, gültige Werte: 0,1
Nmap ist das FHEM Modul um einen Netzwerkscan mit Nmap durchzuführen
und Informationen über die erreichbaren Netzwerkgeräte
darzustellen.
Wird ein neues Gerät erkannt wird ein Event
"<name> new host: <hostname> (<IPv4>)"
erzeugt.
Wird erkannt, dass ein Gerät mit bekannter MAC-Adresse eine neue IP
erhalten hat wird ein Event
"<name> new IP: <hostname> (<IPv4>)"
erzeugt.
Vorraussetzungen:
Das Programm "Nmap" sowie das Perl-Modul "Nmap::Parser" werden
benötigt.
Unter Debian (basierten) System, können diese mittels
"apt-get install nmap libnmap-parser-perl"
installiert werden.
Define
define <name> Nmap <target specification>
In der <target specification> stehen alle Zielhosts, die gescannet
werden sollen.
Der einfachste Fall ist die Beschreibung einer IP-Zieladresse oder eines
Zielhostnamens zum Scannen.
Um ein ganzes Netzwerk benachbarter Hosts zu scannen unterstützt
Nmap Adressen im CIDR-Stil. Es können /numbits an eine IPv4-Adresse
oder an einen Hostnamen angefügt werden, und Nmap wird alle
IP-Adressen scannen, bei denen die ersten numbits mit denen der gegebenen
IP oder des gegebenen Hostnamens übereinstimmen. Zum Beispiel
würde 192.168.10.0/24 die 256 Hosts zwischen 192.168.10.0 und
192.168.10.255 scannen. 192.168.10.40/24 würde genau dieselben Ziele
scannen. Es ist auch möglich mehrere Netzwerke zur gleichen Zeit zu
scannen. Zum Beispiel würde 192.168.1.0/24 192.168.2.0/24 die 512
Hosts zwischen 192.168.1.0 und 192.168.2.255 scannen.
Siehe
Nmap Man Page (Angabe von Zielen).
Set
clear readings
Löscht alle Readings außer "state".
deleteOldReadings <s>
Löscht alle Readings die älter sind als <s> Sekunden.
interrupt
Bricht einen laufenden Scan ab.
statusRequest
Startet einen Netzwerkscan.
Readings
Allgemeine Readings:
NmapVersion
Die Versionsnummer des installierten Nmap Programms.
hostsScanned
Die Anzahl der gescannten Adressen.
hostsUp
Die Anzahl der erreichbaren Netzwerkgeräte.
knownHosts
Die Anzahl der bekannten Netzwerkgeräte.
scanDuration
Die Scan-Dauer in Sekunden.
state
Initialized
Nmap wurde definiert oder enabled.
running
Ein Netzwerkscan wird ausgeführt.
done
Der Netzwerkscan wurde erfolgreich abgeschlossen.
aborted
Der Netzwerkscan wurde aufgrund einer Zeitüberschreitung oder
durch den Benutzer abgebrochen.
disabled
Nmap wurde deaktiviert.
Hostspezifische Readings:
<metaReading>_alias
Alias welcher unter dem Attribut "devAlias" für das Netzwerkgerät
angegeben ist. Ist kein Alias angegeben wird der Hostname angezeigt.
<metaReading>_hostname
Hostname des Netzwerkgeräts. Kann dieser nicht ermittel werden
wird die IPv4-Adresse angezeigt.
<metaReading>_ip
IPv4-Adresse des Netzwerkgeräts.
<metaReading>_lastSeen
Der Zeitpunkt zu dem das Netzwerkgerät das letzte mal als gesehen
wurde.
<metaReading>_macAddress
MAC-Adresse des Netzwerkgeräts. Diese kann nur ermittelt werden,
wenn der Scan mit Root-Rechten ausgeführt wird.
<metaReading>_macVendor
Vermutlicher Hersteller des Netzwerkgeräts. Dieser kann nur
ermittelt werden, wenn der Scan mit Root-Rechten ausgeführt wird.
<metaReading>_state
Status des Netzwerkgeräts. Kann entweder "absent" oder "present"
sein.
<metaReading>_uptime
Zeit in Sekunden seit der das Netzwerkgerät erreichbar ist.
<metaReading>_uptimeText
Zeit in "d days, hh hours, mm minutes, ss seconds" seit der das
Netzwerkgerät erreichbar ist.
Attribute
absenceThreshold <n>
Die Anzahl an Netzwerkscans, welche in "absent" resultieren
müssen, bevor der Status eines Netzwerkgeräts auf "absent"
wechselt. Mit dieser Funktion kann man die Abwesenheit eines
Gerätes verifizieren bevor der Status final auf "absent"
geändert wird. Wenn dieses Attribut auf einen Wert >1 gesetzt
ist, verbleibt das Reading "<metaReading>_state" auf "present",
bis der Status final auf "absent" wechselt.
args <args>
Argumente für den Nmap-Scan.
Die Vorgabe ist "-sn".
deleteOldReadings <s>
Nach einem Netzwerkscan werden alle hostspezifischen Readings, die
älter sind als <s> Sekunden, gelöscht
devAlias <ID>:<ALIAS> <ID2>:<ALIAS2> ...
Eine Leerzeichen-getrennte getrennte Liste von <ID>:<ALIAS>
Paaren, die dazu genutzt werden kann um Netzwerkgeräten einen
Alias zu geben.
Die ID kann dabei MAC-Adresse, hostname oder IPv4-Adresse sein.
Beispiele:
disable 1
Ein laufender Scan wird abgebrochen und es werden keine neuen Scans
gestartet.
excludeHosts <target specification>
In der <target specification> stehen alle Zielhosts, die beim
Scan übersprungen werden sollen.
interval <seconds>
Intervall in Sekunden in dem der Scan durchgeführt wird.
Der Vorgabewert ist 900 Sekunden und der Mindestwert 30 Sekunden.
keepReadings 1
Wird für ein Gertät mit bekannter MAC-Adresse eine neue IP-Adresse
erkannt, werden die ungültig gewordenen Readings gelöscht es sei denn
dieses Attribut ist gesetzt.
leadingZeros 1
Bei den Readings-Namen werden die IPv4-Adressen mit führenden
Nullen dargestellt.
metaReading <metaReading>
Als <metaReading> kann "alias", "hostname", "ip" oder
"macAddress" angegeben werden und ist der Bezeichner für die
Readings.
Die Vorgabe is "ip".
path
Pfad unter dem das Nmap Programm zu erreichen ist.
Die Vorgabe ist "/urs/bin/nmap".
sudo 1
Der Scan wird mit Root-Rechten ausgeführt.
Voraussetzung ist, dass der Benutzer unter dem FHEM ausgeführt
diese Rechte besitzt. Für den Benutzer "fhem", auf einem Debian
(basierten) System, lassen sich diese in der Datei "/etc/sudoers"
festlegen. Dafür muss im Abschnitt "# User privilege
specification" die Zeile "fhem ALL=(ALL) NOPASSWD: /usr/bin/nmap"
eingefügt werden.
NotifyAndroidTV
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: NotifyAndroidTV
offset_feed offset_energy
Wenn das Smartmeter hinter einem Zähler des EVU's sitzt, kann hiermit der Zähler des
Smartmeters an den des EVU's angepasst werden.
channels
Hiermit können die einzelnen Kanal-Readings mittels RegExes umbenannt werden.
Beispiel: attr myOBIS channels {"1.0.96.5.5.255"=>"Status","1.0.0.0.0.255"=>"Info","16.7"=>"Verbrauch"}>
directions
Manche SmartMeter senden im Statusbyte die Stromrichtung.
In diesem Fall gibt es ein extra Reading "dir_total_consumption" welches standardmäßig "in" and "out" beinhaltet
Hiermit kann dieser Text geändert werden, z.B.:
attr myOBIS directions {">" => "pwr consuming", "<"=>"pwr feeding"}
interval
Abrufinterval der Daten. (Bringt nur im Polling-Mode was)
algignTime
Richtet den Zeitpunkt von nach einer bestimmten Uhrzeit aus.
pollingMode
Hiermit wird von Direktbenachrichtigung auf Polling umgestellt.
Bei Smartmetern, welche von selbst im Sekundentakt senden,
kann das zu einer spürbaren Senkung der Prozessorleistung führen.
unitReadings
Hängt bei den Readings auch die Einheiten an, zB w, wH, A usw.
valueBracket
Legt fest, ob der Wert aus dem ersten oder zweiten Klammernpaar genommen wird.
Standard ist "second"
Das Modul extrahiert Wetterdaten über die "openweather"-Schnittstelle (API) von www.wetter.com.
Zuvor ist eine Registrierung auf der Webseite notwendig.
Das Modul nutzt die Perl-Module HTTP::Request, LWP::UserAgent, HTML::Parse und Digest::MD5.
Für detailierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.
Um die unteren Parameter zu erhalten, ist die Registrierung eines neuen Projektes auf www.wetter.com notwendig.
<Projekt>
Name des benutzerspezifischen 'openweather'-Projektes (erzeugt über ein Konto auf wetter.com).
<Ortscode>
Code des Ortes, für den die Wettervorhersage benötigt wird. Er kann direkt aus der Adresszeile der jeweiligen Vorhersageseite genommen werden. Zum Beispiel DE0009042 aus:
http://www.wetter.com/wetter_aktuell/aktuelles_wetter/deutschland/rostock/DE0009042.html
<apiSchlüssel>
Geheimer Schlüssel, den man erhält, nachdem man ein neues 'Openweather'-Projekt auf der Website registriert hat.
[Sprache]
Optional. Standardsprache für die Wettersituation ist Deutsch. Mit en kann man zu Englisch und mit es zu Spanisch wechseln.
Über die Funktion OPENWEATHER_Html wird ein HTML-Code für ein vertikal arrangierte Wettervorhersage erzeugt.
Beispiel:
define MyForecast weblink htmlCode { OPENWEATHER_Html("MyWeather") }
Set
set <name> update
Startet sofort ein neues Auslesen der Wetterdaten.
Get
get <name> apiResponse
Zeigt die Rückgabewerte der Website an.
Attribute
disable <0 | 1>
Automatische Aktualisierung ist angehalten, wenn der Wert auf 1 gesetzt wird.
INTERVAL <Abfrageintervall>
Abfrageintervall in Sekunden (Standard und kleinster Wert ist 3600 = 1 Stunde). 0 stoppt die automatische Aktualisierung
Definiert ein 1-Wire- Gerät. 1-Wire- Geräte werden anhand ihrer Adresse <address> definiert. Diese wird
durch den zuvor eingerichteten OWServer bereitgestellt.
Geräte hinter 1-wire-Hubs (DS2409, Adressfamilie 1F) müssen über den vollen Pfad adressiert werden, z.B.
1F.0AC004000000/main/26.A157B6000000 (kein führender Schrägstrich). Sie werden nicht
automatisch erkannt.
Wird zusätzlich <interval> angegeben, ruft OWServer alle <interval> Sekunden
einen Datensatz des Gerätes ab.
Jedes OWDevice ist ein eigenständiges Gerät. Seine Eigenschaften werden erstmals zum Zeitpunkt der Definition
abgefragt. Die durch "get" oder "set" erzeugten, sowie durch den zyklischen Abruf gelieferten readings,
können mit dem Kommando list <name> angezeigt werden.
Folgende 1-Wire- und iButton- Komponenten werden aktuell unterstützt:
DS2401 - Im Chip integrierte Seriennummer
DS1990A - iButton mit fester Seriennummer
DS2405 - Adressierbarer Schalter
DS18S20 - Hochpräzisions-Digital-Thermosensor
DS1920 - iButton-Thermosensor
DS2406, DS2407 - Dualer adressierbarer Schalter mit 1 kbit Speicher
DS2436 - Batterie-ID/Monitor- Schaltkreis
DS2423 - Dual-Zählerbaustein mit Speicherfunktion
DS2450 - Vierfach-A/D Umsetzer
DS1822 - Econo-Thermosensor
DS2433 - 4kbit 1-Wire RAM
DS2415 - Zeitgeber- Schaltkreis
DS1904 - iButton-Echtzeituhr
DS2438 - Smart-Batterie-Monitor
DS2417 - Zeitgeber-Schaltkreis mit Interrupt
DS18B20 - Thermosensor mit programmierbarer Auflösung
DS2408 - 8-kanaliger adressierbarer Schalter
DS2413 - 2-kanaliger adressierbarer Schalter
DS1825 - Thermosensor mit programmierbarer Auflösung und ID
EDS0066 - Vielfachsensor für Temperatur und Luftdruck
LCD - LCD-Ansteuerung von Louis Swart
Das Hinzufügen weiterer Geräte ist im Modulcode (subroutine OWDevice_GetDetails) sehr einfach möglich.
Achtung: Dieses Modul ist weder verwandt noch verwendbar mit den 1-Wire Modulen, deren Namen nur aus Großbuchstaben bestehen!
Bitte beachten: Um einer Verwechselung entgegenzuwirken, stößt das reading "state" der Geräte keine Events an.
Beispiele zur Einrichtung:
define myOWServer OWServer localhost:4304
get myOWServer devices
10.487653020800 DS18S20
define myT1 10.487653020800
list myT1 10.487653020800
Internals:
...
Readings:
2012-12-22 20:30:07 temperature 23.1875
Fhem:
...
getters:
address
family
id
power
type
temperature
templow
temphigh
polls:
temperature
setters:
alias
templow
temphigh
...
Set-Befehle
set <name> interval <value> value überschreibt das Abrufintervall der Datensätze. Der Wert ist in Sekunden anzugeben.
set <name> <reading> <value>
Setzt das <reading> auf <value> für das 1-Wire-Gerät <name>. Die verwendbaren Werte werden durch die
jeweiligen 1-wire-Geräte bestimmt.
Beispiel:
set myT1 templow 5
Get-Befehle
get <name> <reading> <value>
Holt das <reading> des 1- Wire Geräte- <name>. Die verwendbaren Werte werden durch die
jeweiligen 1-wire-Geräte bestimmt.
Beispiel:
get myT1 temperature
Attribute
IODev:
Bestimmt die OWServer-Instanz, welche für das Senden und Abrufen der Daten
eines OWDevice-Gerätes genutzt werden soll. Hinweis: Während des Starts
ordnet FHEM die neuen OWDevice-Geräte der jeweils zuletzt definierten OWServer-Instanz zu.
Deshalb verfährt man idealerweise so, dass man zuerst eine OWServer-Instanz und
anschließend die zugehörigen OWDevice-Geräte definiert. Danach definiert man die
nächste OWServer-Instanz, gefolgt von den zugehörigen OWDevice-Geräten, usw.
trimvalues: Entfernt voran- und nachgestellte Leerzeichen aus den readings. Standartwert ist 1 (ein).
cstrings: Interpretiert die readings als C-String, d.h. hört mit dem ersten 0-Byte zu lesen auf. Standardwert ist 0 (off).
polls: Eine per Komma getrennte Liste der abzurufenden readings. Mit diesem Attribut unterdrückt man alle standartmäßig abgerufenen readings und ersetzt sie durch die eigene Zusammenstellung.
interfaces: Ersetzt die durch dieses Gerät erzeugten Interfaces.
model: Angabe des Gerätetyps, z.B.: DS18S20.
resolution: Angabe der Auflösung für die Temperaturmessung in bits, zur Verfügung stehen: 9, 10, 11 oder 12.
Hinweis: Geringere Auflösungen bewirken schnellere Reaktionen des Busses. Dies kann z.B. bei umfangreichen 1-Wire- Installationen hilfreich sein,
um eventuelle Stillstände von FHEM zu vermindern.
Definiert eine logische OWServer-Instanz, die sich mit einem owserver
verbindet. owserver ist die Serverkomponente des
1-Wire Dateisystems. Sie ermöglicht den Zugriff auf
alle 1-Wire-Busteilnehmer eines Systems.
<protocol> hat das Format <hostname>:<port>.
Nähere Informationen dazu gibt es in
der owserver Dokumentation.
Die OWServer-Instanz verwendet
OWNet.pm von Sourceforge,
um sich mit dem owserver zu verbinden.
Gegenwärtig werden OWNet-Module für die Versionen 2.8p17 and 3.1p5
mit FHEM verteilt. Man kann manuell weitere Versionen hinzufügen,
indem man OWNet.pm aus
einer der
verfügbaren Versionen extrahiert und als
FHEM/lib/OWNet-<version>.pm in der FHEM-Verzeichnisstruktur
speichert.
Die erste Verbindung mit dem owserver wird mit der Version 3.1p5 aufgebaut,
es sei denn, dass man ausdrücklich eine andere Version mit dem
optionalen Parameter
<version> vorschlägt. Man sollte eine
OWNet-Modulversion vorschlagen, die der tatsächlichen Version von
owserver entspricht, falls FHEM nach dem Verbindungsaufbau zum owserver
hängt.
Die OWServer-Instanz erkennt die Version von owserver automatisch und
wählt das passende OWNet-Modul aus der Liste der verfügbaren
OWNet-Module aus. Wenn kein passendes OWNet-Modul gefunden wird, wird die
ursprünglich vorgeschlagene Version verwendet. Die alptraumhafte Situation
mit zwei OWServer-Instanzen, die sich mit owserver-Instanzen in
unterschiedlichen Versionen verbinden, wird nicht korrekt gehandhabt.
Die Versionen von Server und Modul werden zum Nachschauen in den Internals der
OWServer-Instanz gespeichert.
Die ow*-Pakete in der Version 3.1p5 bei Debian Stretch und
die ow*-Pakete in der Version 2.8p17 bei Debian Jessie sind gut.
Die ow*-Pakete in der Version 2.9 bei Debian Jessie in Kombination mit den
OWNet-Modulen bei FHEM können Auffälligkeiten zeigen (Rückmeldung
willkommen). Für
Debian Jessie kann man
owfs_2.8p17-1_all.zip
auspacken und owserver, Abhängigkeiten und was man sonst so braucht
mittels dpkg -i <package>.deb installieren.
Eine typische funktionierende Konfigurationsdatei /etc/owfs.conf sieht so aus:
# server uses device /dev/onewire
server: device = /dev/onewire
# clients other than server use server
! server: server = localhost:4304
# port
server: port = 4304
# owhttpd
http: port = 2121
# owftpd
ftp: port = 2120
Die vorhandenen 1-Wire- Busteilnehmer werden als OWDevice -Geräte definiert.
Wenn autocreate aktiviert ist, werden beim Start von FHEM alle Geräte automatisch erkannt und eingerichtet.
Achtung: Dieses Modul ist weder verwandt noch verwendbar mit den 1-Wire Modulen, deren Namen nur aus Großbuchstaben bestehen!
Hinweis: Sollten keine Geräte erkannt werden, kann man versuchen in der owserver- Konfigurationsdatei (owfs.conf) zwei Servereinträge anzulegen:
Einen mit localhost und einen mit dem "FQDN", bzw. dem Hostnamen, oder der IP-Adresse des Computers, auf dem die Software "owserver" läuft.
Set- Befehle
set <name> <value>
wobei value für einen der folgenden Befehle steht:
reopen
Erneuert die Verbindung zum owserver.
owserver (OWFS) -spezifische Einstellungen:
timeout/directory
timeout/ftp
timeout/ha7
timeout/network
timeout/presence
timeout/serial
timeout/server
timeout/stable
timeout/uncached
timeout/usb
timeout/volatile
timeout/w1
units/pressure_scale
units/temperature_scale
Nähere Informationen zu diesen Einstellungen gibt es im owserver- Manual.
Get- Befehle
get <name> <value>
wobei value für einen der folgenden Befehle steht:
devices
Gibt eine Liste der Adressen und Typen aller von owserver erkannten Geräte aus. Außerdem
werden die entsprechenden OWDevice- Namen angezeigt, soweit sie bereits definiert sind.
errors
Liefert eine Fehlerstatistik zurück.
owserver (OWFS) -spezifische Einstellungen:
/settings/timeout/directory
/settings/timeout/ftp
/settings/timeout/ha7
/settings/timeout/network
/settings/timeout/presence
/settings/timeout/serial
/settings/timeout/server
/settings/timeout/stable
/settings/timeout/uncached
/settings/timeout/usb
/settings/timeout/volatile
/settings/timeout/w1
/settings/units/pressure_scale
/settings/units/temperature_scale
/uncached/alarm
Nähere Informationen zu diesen Einstellungen gibt es im owserver- Manual.
Attribute
nonblocking
Holt alle readings (OWServer / OWDevice) über einen Tochterprozess. Dieses Verfahren stellt sicher,
dass FHEM während der Kommunikation mit owserver nicht angehalten wird.
Beispiel: attr <name> nonblocking 1
Mit Hilfe dieses Moduls lassen sich Philips Audio Netzwerk Player wie z.B. MCi, Streamium oder Fidelio im lokalen Netzwerk steuern.
Geräte, die über die myRemote App oder einen internen HTTP Server am Port 8889 sollten theoretisch ebenfalls bedient werden können.
(http://[ip Nummer des Gerätes]:8889/index)
# 60 Sekunden Intervall für "off" und 10 Sekunden für "on"
define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15 60 10
Bemerkung: Aufgrund der relativ langsamen Verarbeitung von Befehlen durch den Player selbst wurde das minimale Intervall auf 5 Sekunden limitiert. Dadurch sollten potentielle Gerätefreezes reduziert werden.
Set
set <name> <command> [<parameter>]
Bemerkung: Befehle und Parameter sind case-sensitive
favoriteAdd – Fügt den aktuellen Audiostream zu Favoriten hinzu
favoriteRemove – Löscht den aktuellen Audiostream aus den Favoriten
getFavorites – Liest aus die gespeicherten Favoriten aus dem Gerät (kann einige Zeit dauern...)
getMediaRendererDesc – Liest aus Gerätspezifische Informationen aus (siehe auch deviceInfo reading)
getPresets – Liest aus die gespeicherten Presets aus dem Gerät (kann einige Zeit dauern...)
input – Schaltet auf den folgenden Eingang
analogAux – AUX input (nur AW9000)
digital1Coaxial – digital coaxial input (nur AW9000)
digital2Optical – digital optical input (nur AW9000)
internetRadio – Internet Radio
mediaLibrary – Media Library (UPnP/DLNA server) (nicht verfügbar beim AW9000)
mp3Link – Analoger MP3 Link (nicht verfügbar beim AW9000)
onlineServices – Online Services
mute [ on | off ] – Stummschaltung (an/aus)
player – Player-Befehle
next – Nächstee Audiostream
prev – Letzter Audiostream
play-pause – Play/pause des aktuellen Audiostreams
stop – Stoppt das Abspielen des aktuellen Audiostreams
repeat [ single | all | off] – Stellt den repeat mode ein
selectFavorite [ name ] – Wählt einen Favoriten. Leer falls keine Favoriten vorhanden (s. getFavorites)
selectFavoriteByNumber [ number ] – Wählt einen Favoriten anhand seiner Speichernummer. Leer falls keine Favoriten vorhanden (s. getFavorites)
selectPreset [ name ] – Wählt einen Preset. Leer falls keine Presets vorhanden (s. getPresets)
selectPresetByNumber [ number ] – Wählt einen Preset anhand seiner Speichernummer. Leer falls keine Presets vorhanden (see also getPresets)
selectStream [ name ] – Context-sensitive. Wählt einen Audiostream. Hängt vom aktuellen Inhalt der Playerlist ab. Ein 'c'-Präfix repräsentiert einen 'Container' (Directory). ein 'i'-Präfix repräsentiert ein 'Item' (audio stream).
shuffle [ on | off ] – Wählt den gewünschten Shuffle Modus
standbyButton – Emuliert den standby-Knopf. Toggelt zwischen standby und power on
volume – Setzt die relative Lautstärke 0...100%
volumeDown – Setzt die Lautstärke um ein Dekrement herunter
volumeStraight – Setzt die devicespezifische Lautstärke 0...64
volumeUp – Setzt die Lautstärke um ein Inkrement herauf
Get
get <name> <reading> <reading name>
deviceInfo – Liefert devicespezifische Information
reading
input – Liefert den aktuellen Eingang oder '-' falls kein Audiostream aktiv
listItem_xxx – Liefert Einträge der Playerliste (limitiert auf 999 Einträge)
networkError – Liefert einen potentiellen Netzwerkfehler
networkRequest – Liefert die aktuelle Netzwerkaktivität (idle/busy)
power – Liefert den Power-Status (on/off)
playerAlbum – Liefert den Albumnamen des aktiven Audiostreams
playerAlbumArt – Liefert die Albumart des aktiven Audiostreams
playerListStatus – Liefert den aktuellen Zusatand der Playlist (busy/ready)
playerListTotalCount – Liefert die Anzahl der Playlisteinträge
playerPlayTime – Liefert die aktuell Audiostreamspieldauer
playerPlaying – Zeigt an, ob Audiostream abgespielt wird (yes/no)
playerRadioStation – Liefert den Stationsnamen des Radiosenders
playerRadioStationInfo – Liefert zusätzliche Informationen des Radiosenders
playerRepeat – Zeigt den Reapeat Mode an (off/single/all)
playerShuffle – Zeigt den aktuellen Shuffle mode an (on/off)
playerState – Zeigt den Playerzustand an (home/browsing/playing)
playerStreamFavorite – Zeigt an, ob aktueller Audiostream ein Favorit ist (yes/no)
playerStreamRating – Zeigt das rating des Audiostreams
playerTitle – Zeigt den Titel des Audiostreams an
playerTotalTime – Zeigt die Audiostreamdauer an
presence – Liefert den presence status (present/absent)
state – Lifert den aktuellen Gerätestatus (on/off)
totalFavorites – Liefert die Anzahl gepseicherter Favoriten (s. getFavorites)
totalPresets – Liefert die Anzahl gepseicherter Presets (see getPresets)
volume – Liefert die relative Lutstärke (0...100%)
volumeStraight – Liefert die devicespezifische Lautstärke (0...64)
Attribute
autoGetFavorites – Automatisches Auslesen der Favoriten beim Modulstart falls keine vorhanden (default off)
autoGetPresets – Automatisches Auslesen der Presets beim Modulstart falls keine vorhanden (default off)
do_not_notify
httpBufferTimeout – Optionalles Attribut für den internen http buffer timeount (default 10 Sekunden)
maxListItems – Definiert die max. Anzahl der anzuzeigenden Playerlisteinträge (default 100)
playerBrowsingTimeout – Definiert den Inaktivitäts-Timeout beim Browsen der Playerlist. Nach diesem Timeout fällt das Modul in den "home"-State zurück. Die Playerreadings werden wieder aktualisiert (default 180 Sekunden)
readingFnAttributes
requestTimeout – Optionalles Attribut für http responses (default 4 Sekunden)
Dieses Modul erlaubt es einen Pioneer AV Receiver via Fhem zu steuern (nur die MAIN-Zone, etwaige andere Zonen können mit dem Modul PIONEERAVRZONE gesteuert werden) wenn eine Datenverbindung via Ethernet oder RS232 hergestellt werden kann.
Es erlaubt Fhem
Den Receiver ein/auszuschalten
die Lautstärke zu ändern
die Eingangsquelle auszuwählen
und weitere Parameter zu kontrollieren
Dieses Modul basiert auf der Pioneer documentation
und ist mit einem Pioneer AV Receiver VSX-923 von Pioneer getestet.
Achtung: Dieses Modul benötigt die Perl-Module Device::SerialPort oder Win32::SerialPort
wenn die Datenverbindung via USB bzw. rs232 Port erfolgt.
Dieses Modul versucht
die Datenverbindung zwischen Fhem und Pioneer AV Receiver offen zu halten. Wenn die Verbindung abbricht, versucht das Modul
einmal die Verbindung wieder herzustellen
Daten vom/zum Pioneer AV Receiver dem Modul PIONEERAVRZONE (für die Kontrolle weiterer Zonen des Pioneer AV Receiver)
zur Verfügung zu stellen.
Solange die Datenverbindung zwischen Fhem und dem Pioneer AV Receiver offen ist, kann kein anderes Gerät (z.B. ein Smartphone)
auf dem gleichen Port eine Verbindung zum Pioneer AV Receiver herstellen.
Einige Pioneer AV Receiver bieten mehr als einen Port für die Datenverbindung an. Pioneer empfiehlt Port 23 sowie 49152-65535, "Invalid number:00000,08102".
Define
define <name> PIONEERAVR telnet <IPAddress:Port>
or
define <name> PIONEERAVR serial <SerialDevice>[<@BaudRate>]
Definiert ein Fhem device für einen Pioneer AV Receiver (Kommunikationsschnittstelle und Steuerung der Main - Zone). Die Schlüsselwörter telnet bzw.
serial sind fix. Der Standard Port für die Ethernet Verbindung bei Pioneer AV Receiver ist 23
(laut der oben angeführten Pioneer Dokumentation) - oder 8102 (laut Fhem-Forumsberichten).
Note: PIONEERAVRZONE-Devices zur Steuerung der Zone2, Zone3 und/oder HD-Zone werden per autocreate beim Eintreffen der ersten Nachricht für eine der Zonen erzeugt.
Beispiele:
define VSX923 PIONEERAVR telnet 192.168.0.91:23 define VSX923 PIONEERAVR serial /dev/ttyS0 define VSX923 PIONEERAVR serial /dev/ttyUSB0@9600
Set
set <name> <was> [<value>]
"was" ist eines von
bass <-6 ... 6> - Bass von -6dB bis + 6dB (funktioniert nur wenn tone = on und der ListeningMode es erlaubt)
channel <1 ... 9> - Setzt den Tuner Preset ("gespeicherten Sender"). Nur verfügbar, wenn Input = 2 (Tuner), wie in http://www.fhemwiki.de/wiki/DevelopmentGuidelinesAV beschrieben
channelDown - Setzt den nächst niedrigeren Tuner Preset ("gespeicherten Sender"). Wenn vorher channel = 2, so wird nachher channel = 1. Nur verfügbar, wenn Input = 2 (Tuner).
channelStraight -
Setzt den Tuner Preset ("gespeicherten Sender") mit Werten, wie sie im Display des Pioneer AV Receiver angezeigt werden (z.B. A1). Nur verfügbar, wenn Input = 2 (Tuner).
channelUp - Setzt den nächst höheren Tuner Preset ("gespeicherten Sender"). Nur verfügbar, wenn Input = 2 (Tuner).
down - "Pfeiltaste nach unten". Für die gleichen Eingangsquellen wie "play"
enter - "Eingabe" - Entspricht der "Enter-Taste" der Fernbedienung. Für die gleichen Eingangsquellen wie "play"
eq - Schalten den Equalizer ein oder aus.
fwd - Schnellvorlauf. Für die gleichen Eingangsquellen wie "play"
hdmiOut <1+2|1|2|off> - Schaltet die HDMI-Ausgänge 1 und/oder 2 des Pioneer AV Receivers ein bzw. aus.
input - Schaltet die Eingangsquelle (z.B. CD, HDMI 1,...) auf die Ausgänge der Main-Zone. Die Liste der verfügbaren (also der nicht deaktivierten)
Eingangsquellen wird beim Start von Fhem und auch mit get statusRequest eingelesen. Wurden die Eingänge am Pioneer AV Receiver umbenannt, wird der neue Name des Eingangs angezeigt.
inputDown - vorherige Eingangsquelle der Main Zone auswählen
inputUp - nächste Eingangsquelle der Main Zone auswählen
left - "Pfeiltaste nach links". Für die gleichen Eingangsquellen wie "play"
listeningMode - Setzt einen ListeningMode, z.B. autoSourround, direct, action,...
mcaccMemory <1...6> - Setzt einen der bis zu 6 gespeicherten MCACC Einstellungen der Main Zone
menu - "Menu-Taste" der Fernbedienung. Für die gleichen Eingangsquellen wie "play"
mute - Stummschalten der Main Zone des Pioneer AV Receivers. "mute = on" bedeutet: stumm
networkStandby - Schaltet Network standby ein oder aus. Um einen Pioneer AV Receiver mit diesem Modul aus dem Standby einzuschalten, muss Network Standby = on sein. Mit set <name> networkStandby on sollte sich das machen lassen.
next - für die gleichen Eingangsquellen wie "play"
off - Ausschalten der Main Zone in den Standby Modus.
on - Einschalten der Main Zone aus dem Standby Modus. Das funktioniert nur, wenn am Pioneer AV Receiver "Network Standby" "on" eingestellt ist. Siehe dazu auch "networkStandby" weiter unten.
pause - Unterbricht die Wiedergabe für die gleichen Eingangsquellen wie "play"
play - Startet die Wiedergabe für folgende Eingangsquellen:
usbDac
ipodUsb
xmRadio
homeMediaGallery
sirius
adapterPort
internetRadio
pandora
mediaServer
favorites
mhl
prev - Wechselt zum vorherigen Titel. Für die gleichen Eingangsquellen wie "play".
raw - Sendet den Befehl unverändert an den Pioneer AV Receiver. Eine Liste der verfügbaren Pioneer Kommandos ist in dem Link zur Pioneer Dokumentation oben enthalten
remoteControl - wobei eines von folgenden sein kann:
cursorDown
cursorRight
cursorLeft
cursorEnter
cursorReturn
homeMenu
statusDisplay
audioParameter
hdmiOutputParameter
videoParameter
homeMenu
Simuliert die Tasten der Fernbedienung. Achtung: mit cursorXX können die Eingänge nicht beeinflusst werden -> set up ... kann zur Steuerung der Inputs verwendet werden.
reopen - Versucht die Datenverbindung zwischen Fhem und dem Pioneer AV Receiver wieder herzustellen
repeat - Wiederholung für folgende Eingangsquellen: AdapterPort, Ipod, Favorites, InternetRadio, MediaServer. Wechselt zyklisch zwischen
keine Wiederholung
Wiederholung des aktuellen Titels
Wiederholung aller Titel
return - "Zurück"... Entspricht der "Return-Taste" der Fernbedienung. Für die gleichen Eingangsquellen wie "play"
rev - "Rückwärtssuchlauf". Für die gleichen Eingangsquellen wie "play"
right - "Pfeiltaste nach rechts". Für die gleichen Eingangsquellen wie "play"
selectLine01 - selectLine08 - für die gleichen Eingangsquellen wie "play".Wird am Bildschirm ein Pioneer-Menu angezeigt, kann hiermit die gewünschte Zeile direkt angewählt werden
shuffle - Zufällige Wiedergabe für die gleichen Eingangsquellen wie "repeat". Wechselt zyklisch zwischen Zufallswiedergabe "ein" und "aus".
signalSelect - Setzt den zu verwendenden Eingang (bei Eingängen mit mehreren Anschlüssen)
speakers - Schaltet die Lautsprecherausgänge ein/aus.
standingWave - Schaltet Standing Wave der Main Zone aus/ein
statusRequest - Fragt Informationen vom Pioneer AV Receiver ab und aktualisiert die readings entsprechend
stop - Stoppt die Wiedergabe für die gleichen Eingangsquellen wie "play"
toggle - Ein/Ausschalten der Main Zone in/von Standby
tone - Schaltet die Klangsteuerung ein bzw. auf bypass
treble <-6 ... 6> - Höhen (treble) von -6dB bis + 6dB (funktioniert nur wenn tone = on und der ListeningMode es erlaubt)
up - "Pfeiltaste nach oben". Für die gleichen Eingangsquellen wie "play"
volume <0 ... 100> - Lautstärke der Main Zone in % der Maximallautstärke
volumeDown - Lautstärke der Main Zone um 0.5dB verringern
volumeUp - Lautstärke der Main Zone um 0.5dB erhöhen
volumeStraight<-80.5 ... 12> - Direktes Einstellen der Lautstärke der Main Zone mit einem Wert, wie er am Display des Pioneer AV Receiver angezeigt wird
Schließt und öffnet erneut die Datenverbindung von Fhem zum Pioneer AV Receiver.
Kann nützlich sein, wenn die Datenverbindung nicht automatisch wieder hergestellt werden kann.
Get
get <name> raw <Befehl>
liefert bei diesem Modul keine Werte zurück, sondern fragt den Pioneer AVR nach dem aktuellen Status (z.B. der Lautstärke). Sobald der Pioneer AVR antwortet (die Zeit, bis der Pioneer AVR antwortet, ist nicht vorhersehbar), aktualisiert das Modul die Readings bzw. Internals des PioneerAVR devices.
Falls unten keine Beschreibung für das "get-Kommando" angeführt ist, siehe gleichnamiges "Set-Kommando"
loadInputNames - liest die Namen der Eingangsquellen vom Pioneer AV Receiver und überprüft, ob sie aktiviert sind
audioInfo - Holt die aktuellen Audio Parameter vom Pioneer AV receiver (z.B. audioInputSignal, audioInputFormatXX, audioOutputFrequency)
display - Aktualisiert das reading 'display' und 'displayPrevious' mit der aktuellen Anzeige des Displays Pioneer AV Receiver
bass - aktualisiert das reading 'bass'
channel -
currentListIpod - aktualisiert die readings currentAlbum, currentArtist, etc.
currentListNetwork -
input -
listeningMode -
listeningModePlaying -
macAddress -
avrModel - Versucht vom Pioneer AV Receiver die Modellbezeichnung (z.B. VSX923) einzulesen und im gleichnamigen INTERNAL abzuspeichern
mute -
networkPorts - Versucht vom Pioneer AV Receiver die offenen Ethernet Ports einzulesen und als INTERNAL networkPort1 ... networkPort4 abzuspeichern
networkSettings - Versucht vom Pioneer AV Receiver die Netzwerkparameter (IP, Gateway, Netmask, Proxy, DHCP, DNS1, DNS2) einzulesen und in INTERNALS abzuspeichern
networkStandby - Versucht vom Pioneer AV Receiver den Parameter networkStandby (kann on oder off sein) einzulesen und als INTERNAL abzuspeichern
power - Versucht vom Pioneer AV Receiver in Erfahrung zu bringen, ob die Main Zone eingeschaltet oder in Standby ist.
signalSelect -
softwareVersion - Fragt den Pioneer AV Receiver nach der aktuell im Receiver verwendeten Software Version und speichert diese als INTERNAL
speakers -
speakerSystem - Fragt die aktuell verwendete Lautsprecheranwendung vom Pioneer AV Receiver ab. Mögliche Werte sind z.B. "ZONE 2", "Normal(SB/FH)", "5.1ch C+Surr Bi-Amp",...
tone -
tunerFrequency - Fragt die aktuell eingestellte Frequenz des Tuners ab
tunerChannelNames - Sollten für die Tuner Presets Namen im Pioneer AV Receiver gespeichert sein, werden sie hiermit abgefragt
treble -
volume -
Attribute
connectionCheck 1..120,off Pingt den Pioneer AV Receiver alle X Sekunden um den Datenverbindungsstatus zu überprüfen. Standard: 60 Sekunden.
timeout 1,2,3,4,5,7,10,15 Zeit in Sekunden, innerhalb der der Pioneer AV Receiver auf einen Ping antwortet. Standard: 3 Sekunden.
statusUpdateStart <enable|disable> - Ein-/Ausschalten des Status Updates (lesen aller Parameter vom Pioneer AV Receiver, dauert bis zu einer Minute) beim Start des Moduls.
Mit "disable" lässt sich das Status Update abschalten, FHEM startet schneller, das Pioneer Modul zeigt eventuell nicht korrekte readings.
statusUpdateReconnect <enable|disable> - Ein-/Ausschalten des Status Updates (lesen aller Parameter vom Pioneer AV Receiver, dauert bis zu einer Minute) nach dem Wiederherstellen der Datenverbindung zum Pioneer AV Receiver.
Mit "disable" lässt sich das Status Update abschalten, FHEM bleibt reaktiver beim reconnect, das Pioneer Modul zeigt eventuell nicht korrekte readings.
logTraffic <loglevel> - Ermöglicht das Protokollieren ("Loggen") der Datenkommunikation vom/zum Pioneer AV Receiver.
Steuerzeichen werden angezeigt z.B. ein doppelter Rückwärts-Schrägstrich wird als einfacher Rückwärts-Schrägstrich angezeigt,
\n wird für das Steuerzeichen "line feed" angezeigt, etc.
verbose - Beeinflusst die Menge an Informationen, die dieses Modul protokolliert. 0: möglichst wenig in die Fhem Logdatei schreiben, 5: möglichst viel in die Fhem Logdatei schreiben
volumeLimit <0 ... 100> - beschränkt die maximale Lautstärke (in %). Selbst wenn manuell am Pioneer AV Receiver eine höher Lautstärke eingestellt wird, regelt Fhem die Lautstärke auf volumeLimit zurück.
volumeLimitStraight < -80 ... 12> - beschränkt die maximale Lautstärke (Werte wie am Display des Pioneer AV Receiver angezeigt). Selbst wenn manuell am Pioneer AV Receiver eine höher Lautstärke eingestellt wird, regelt Fhem die Lautstärke auf volumeLimit zurück.
Generated Readings/Events:
audioAutoPhaseControlMS - aktuell konfigurierte Auto Phase Control in ms
audioAutoPhaseControlRevPhase - aktuell konfigurierte Auto Phase Control reverse Phase -> 1 bedeutet: reverse phase
audioInputFormat - Zeigt ob im Audio Eingangssignal der Kanal XXX vorhanden ist (1 bedeutet: ist vorhanden)
audioInputFrequency - Frequenz des Eingangssignals
audioInputSignal - Art des Inputsignals (z.B. ANALOG, PCM, DTS,...)
audioOutputFormat - Zeigt ob im Audio Ausgangssignal der Kanal XXX vorhanden ist (1 bedeutet: ist vorhanden)
audioOutputFrequency - Frequenz des Ausgangssignals
bass - aktuell konfigurierte Bass-Einstellung
channel - Tuner Preset (1...9)
channelStraight - Tuner Preset wie am Display des Pioneer AV Receiver angezeigt, z.B. A2
display - Text, der aktuell im Display des Pioneer AV Receivers angezeigt wird
displayPrevious - Zuletzt im Display angezeigter Text
eq - Status des Equalizers des Pioneer AV Receivers (on|off)
hdmiOut - welche HDMI-Ausgänge sind aktiviert?
input - welcher Eingang ist ausgewählt
inputsList - Mit ":" getrennte Liste der aktivierten/verfügbaren Eingänge
listeningMode - Welcher Hörmodus (Listening Mode) ist eingestellt
listeningModePlaying - Welcher Hörmodus (Listening Mode) wird aktuell verwendet
mcaccMemory - MCACC Voreinstellung
mute - Stummschaltung
power - Main Zone eingeschaltet oder in Standby?
pqlsWorking - aktuelle PQLS Einstellung
presence - Kann der Pioneer AV Receiver via Ethernet erreicht werden?
screenHirarchy - Hierarchie des aktuell angezeigten On Screen Displays (OSD)
screenLine01...08 - Inhalt der Zeile 01...08 des OSD
screenLineHasFocus - Welche Zeile des OSD hat den Fokus?
screenLineNumberFirst - Lange Listen werden im OSD zu einzelnen Seiten mit je 8 Zeilen angezeigt. Die oberste Zeile im OSD repräsentiert welche Zeile in der gesamten Liste?
screenLineNumberLast - Lange Listen werden im OSD zu einzelnen Seiten mit je 8 Zeilen angezeigt. Die unterste Zeile im OSD repräsentiert welche Zeile in der gesamten Liste?
screenLineNumbersTotal - Wie viele Zeilen hat die im OSD anzuzeigende Liste insgesamt?
screenLineNumbers - Wie viele Zeilen hat das OSD
screenLineType01...08 - Welchen Typs ist die Zeile 01...08? Z.B. "directory", "Now playing", "current Artist",...
screenName - Name des OSD
screenReturnKey - Steht die "Return-Taste" in diesem OSD zur Verfügung?
screenTopMenuKey - Steht die "Menu-Taste" in diesem OSD zur Verfügung?
screenToolsKey - Steht die "Tools-Taste" (Menu, Edit, iPod control) in diesem OSD zur Verfügung?
screenType - Typ des OSD, z.B. "message", "List", "playing(play)",...
speakerSystem - Zeigt, wie die hinteren Surround-Lautsprecheranschlüsse und die B-Lautsprecheranschlüsse verwendet werden
speakers - Welche Lautsprecheranschlüsse sind aktiviert?
standingWave - Einstellung der Steuerung stark resonanter tiefer Frequenzen im Hörraum
state - Wird beim Verbindungsaufbau von Fhem mit dem Pioneer AV Receiver gesetzt. Mögliche Werte sind disconnected, innitialized, off, on, opened
stateAV - Status aus der Sicht des USers: Kombiniert die readings presence, power, mute und playStatus zu einem Status (on|off|absent|stopped|playing|paused|fast-forward|fast-rewind).
tone - Ist die Klangsteuerung eingeschalten?
treble - Einstellung des Höhenreglers
tunerFrequency - Tunerfrequenz
volume - Eingestellte Lautstärke (0%-100%)
volumeStraight - Eingestellte Lautstärke, so wie sie auch am Display des Pioneer AV Receivers angezeigt wird
Definiert ein PioneerAVR device für eine Zone Zone (zone2, zone3 or hdZone).
Im Allgemeinen verwendet das logische device PIONEERAVRZONE das zuletzt definierte PIONEERAVR device für die Kommunikation mit dem Pioneer AV Receiver.
Mit dem Atribut IODev kann das PIONEERAVRZONE device jedes PIONEERAVR device zur Kommunikation verwenden,
z.B. attr myPioneerAvrZone2 IODev myPioneerAvr.
Mit diesem Kommando wird ein neues PLAYBULB Device im Raum PLAYBULB angelegt. Der Parameter <MAC-ADDRESS> definiert die Bluetooth MAC Address der Mipow Smart Leuchte.
Vorbedingungen: Es wird ein Bluetooth LE 4.0 Stick, sowie eine funktionierende bluez Installation oder aehnlich vorausgesetzt. (Eine gute Anleitung findedsich hier: http://www.elinux.org/RPi_Bluetooth_LE)
Derzeit sieht es so aus, als ob die Devices nur eine aktive Verbindung akzeptieren.
Readings
battery - Batterielevel in Prozent
color - Zeigt an ob der Farbmodus an oder aus ist
devicename - Geraetename
effect - Zeigt an, welcher effect ausgewaehlt ist: (Flash; Pulse; RainbowJump; RainbowFade; Candle; none)
onoff - Zeigt an, ob das Geraet an (1) oder aus (0) ist
rgb - Zeigt die gewaehlte Farbe in HEX vom Typ rgb (Beispiel: FF0000 ist satt rot)
sat - Zeigt die gewaehlte Saettigung von 0 bis 255 (scheint invertiert zu sein; 0 ist volle Saettigung)
speed - Zeigt die gewaehlte Effektgeschwindigkeit (moeglich sind: 20; 70; 120; 170)
state - Aktueller Zustand des Devices
Set
on - Schaltet das Geraet ein
off - Schaltet das Geraet aus
rgb - Farbwaehler,RGB; ermoeglicht jede Farbe, Saettigung und Helligkeit einzustellen
sat - Schieber zur Einstellung der Saettigungvon 0 bis 255, Schrittweite 5
effect - Flash,Pulse,RainbowJump,RainbowFade,Candle,none; aktiviert den gewaehlten Effekt
speed - Schieberegler: Werte sind 170, 120, 70, 20
color - on,of; Schaltet das Geraet auf RGB oder weiss
statusRequest - Ist notwendig, um den Zustand des Geraetes abzufragen
deviceName - Aendert den Namen des Bluetoothdevice z.B. "PlaybulbCandle"
Get na
Attributes
model BTL300_v5 # Candle Firmware 5 BTL300_v6 # Candle Firmware 6 BTL201_v2 # Smart BTL201M_V16 # Smart (1/2017) BTL505_v1 # Stripe BTL400M_v18 # Garden BTL100C_v10 # Color LED
sshHost - IP oder FQDN für SSH remote Kontrolle
state
set attribut model - wird nach der Erstdefinition angezeigt
Das PRESENCE Module bietet mehrere Möglichkteiten um die Anwesenheit von Handys/Smartphones oder anderen mobilen Geräten (z.B. Tablets) zu erkennen.
Dieses Modul bietet dazu mehrere Modis an um Anwesenheit zu erkennen. Diese sind:
lan-ping - Eine Erkennung auf Basis von Ping-Tests im lokalen LAN/WLAN
fritzbox - Eine Erkennung aufgrund der internen Abfrage des Status auf der FritzBox (nur möglich, wenn FHEM auf einer FritzBox läuft)
local-bluetooth - Eine Erkennung auf Basis von Bluetooth-Abfragen durch den FHEM Server. Das Gerät muss dabei in Empfangsreichweite sein, aber nicht sichtbar sein
function - Eine Erkennung mithilfe einer selbst geschriebenen Perl-Funktion, welche den Anwesenheitsstatus ermittelt.
shellscript - Eine Erkennung mithilfe eines selbst geschriebenen Skriptes oder Programm (egal in welcher Sprache).
event - Eine Erkennung basierend auf Events einer anderen Definition in FHEM.
lan-bluetooth - Eine Erkennung durch Bluetooth-Abfragen via Netzwerk (LAN/WLAN) in ein oder mehreren Räumen
Jeder Modus kann optional mit spezifischen Prüf-Intervallen ausgeführt werden.
check-interval - Das normale Prüfinterval in Sekunden für eine Anwesenheitsprüfung. Standardwert: 30 Sekunden
present-check-interval - Das Prüfinterval in Sekunden, wenn ein Gerät anwesend (present) ist. Falls nicht angegeben, wird der Wert aus check-interval verwendet
Prüft ob ein Gerät welches per WLAN mit der FritzBox verbunden ist, erreichbar durch Abfrage des Status mit dem Befehl ctlmgr_ctl.
Der Gerätename (Parameter: <Gerätename>) muss dem Namen entsprechen, welcher im Menüpunkt "Heimnetz" auf der FritzBox-Oberfläche angezeigt wird oder kann durch die MAC-Adresse im Format XX:XX:XX:XX:XX:XX ersetzt werden.
Dieser Modus ist nur verwendbar, wenn FHEM auf einer FritzBox läuft! Die Erkennung einer Abwesenheit kann ca. 10-15 Minuten dauern!
Prüft ob ein Bluetooth-Gerät abgefragt werden kann und meldet dies als Anwesenheit. Für diesen Modus wird der Shell-Befehl "hcitool" benötigt
(wird durch das Paket bluez bereitgestellt), sowie ein funktionierender Bluetooth-Empfänger (intern oder als USB-Stick)
Prüft den Anwesenheitsstatus mithilfe eines selbst geschrieben Skripts oder Programmes (egal in welcher Programmier-/Skriptsprache)
Der Aufruf dieses Skriptes muss eine 0 (Abwesend) oder 1 (Anwesend) auf der Kommandozeile (STDOUT) ausgeben. Alle anderen Werte/Ausgaben werden als Fehler behandelt.
Lauscht auf Events von anderen Definitionen innerhalb von FHEM um die Anwesenheit darzustellen.
Die regulären Ausdrücke für An- und Abwesenheit entsprechen dabei der Syntax von notify.
Sobald innerhalb von FHEM ein Event gefeuert wird, welches auf die Abwesend-Regexp bzw. Anwesend-Regexp passt, wird der Status entsprechend in PRESENCE gesetzt.
Prüft ein Bluetooth-Gerät auf Anwesenheit über Netzwerk mit Hilfe von presenced oder collectord. Diese können auf jeder Maschine installiert werden,
welche eine Standard-Perl-Umgebung bereitstellt und über Netzwerk erreichbar ist.
Der presenced ist ein Perl Netzwerkdienst, welcher eine Bluetooth-Anwesenheitserkennung von ein oder mehreren Geräten über Netzwerk bereitstellt.
Dieser lauscht standardmäßig auf TCP Port 5111 nach eingehenden Verbindungen von dem PRESENCE Modul oder einem collectord.
Usage:
presenced -d [-p <port>] [-P <filename>]
presenced [-h | --help]
Options:
-p, --port
TCP Port which should be used (Default: 5111)
-P, --pid-file
PID file for storing the local process id (Default: /var/run/presenced.pid)
-d, --daemon
detach from terminal and run as background daemon
-v, --verbose
Print detailed log output
-h, --help
Print detailed help screen
Zur Bluetooth-Abfrage wird der Shell-Befehl "hcitool" verwendet (Paket: bluez)
um sogenannte "Paging-Request" an die gewünschte Bluetooth Adresse (z.B. 01:B4:5E:AD:F6:D3) durchzuführen. Das Gerät muss dabei nicht sichtbar sein, allerdings ständig aktiviert sein
um Bluetooth-Anfragen zu beantworten.
Wenn ein Gerät anwesend ist, wird dies an FHEM übermittelt zusammen mit dem Gerätenamen als Reading.
.deb Paket für Debian/Raspbian (architekturunabhängig): presenced-1.5.deb
lepresenced
lepresenced ist ein Perl Netzwerkdienst, der analog zu presenced eine
Bluetooth-Anwesenheitserkennung von ein oder mehreren Geräten
über Netzwerk bereitstellt. Im Gegensatz zu presenced unterstützt
lepresenced Bluetooth 4.0 (Low Energy) Geräte wie z. B. Gigaset G-Tags,
FitBit Charges.
lepresenced lauscht standardmäßig auf TCP Port 5333 und wartet
auf eingehende Verbindungen des PRESENCE-Moduls bzw. von collectord.
Der collectord ist ein Perl Netzwerk Dienst, welcher Verbindungen zu mehreren presenced-Instanzen verwaltet um eine koordinierte Suche nach ein oder mehreren Bluetooth-Geräten über Netzwerk durchzuführen.
Er lauscht auf TCP port 5222 nach eingehenden Verbindungen von einem PRESENCE Modul.
Usage:
collectord -c <configfile> [-d] [-p <port>] [-P <pidfile>]
collectord [-h | --help]
Options:
-c, --configfile <configfile>
The config file which contains the room and timeout definitions
-p, --port
TCP Port which should be used (Default: 5222)
-P, --pid-file
PID file for storing the local process id (Default: /var/run/collectord.pid)
-d, --daemon
detach from terminal and run as background daemon
-v, --verbose
Print detailed log output
-l, --logfile <logfile>
log to the given logfile
-h, --help
Print detailed help screen
Bevor der collectord verwendet werden kann, benötigt er eine Konfigurationsdatei in welcher alle Räume mit einem presenced-Agenten eingetragen sind. Diese Datei sieht wie folgt aus:
# Raum Definitionen
# =================
#
[Raum-Name] # Name des Raumes
address=192.168.0.10 # IP-Adresse oder Hostname
port=5111 # TCP Port welcher benutzt werden soll (standardmäßig 5111)
presence_timeout=120 # Prüfinterval in Sekunden für jede Abfrage eines Gerätes, welches anwesend ist
absence_timeout=20 # Prüfinterval in Sekunden für jede Abfrage eines Gerätes, welches abwesend ist
[Wohnzimmer]
address=192.168.0.11
port=5111
presence_timeout=180
absence_timeout=20
Wenn ein Gerät in irgend einem Raum anwesend ist, wird dies an FHEM übermittelt, zusammen mit dem Gerätenamen und dem Raum, in welchem das Gerät erkannt wurde.
power - Startet den powerCmd-Befehl welche durch den Parameter powerCmd angegeben ist (Nur wenn das Attribut "powerCmd" definiert ist)
overrideInterval - Übersteuert das Prüfinterval auf die übergebene Dauer in Sekunden (Nicht im Modus "event" und "lan-bluetooth" anwendbar)
clearOverride - Entfernt eine zuvor gesetzte Übersteuerung des Prüfintervals (Nur anwendbar, wenn zuvor eine Übersteuerung mit dem Set-Befehl overrideInterval stattgefunden hat)
(Nicht im Modus "event" anwendbar)
Die Anzahl an Checks, welche in "absent" resultieren müssen, bevor der Status der PRESENCE-Definition auf "absent" wechselt.
Mit dieser Funktion kann man die Abwesenheit eines Gerätes verifizieren bevor der Status final auf "absent" geändert wird.
Wenn dieses Attribut auf einen Wert >1 gesetzt ist, werden die Readings "state" und "presence" auf den Wert "maybe absent" gesetzt,
bis der Status final auf "absent" wechselt.
Standardwert ist 1 (keine Abwesenheitsverifizierung)
(Nicht im Modus "event" anwendbar)
Die Anzahl an Checks, welche in "present" resultieren müssen, bevor der Status der PRESENCE-Definition auf "present" wechselt.
Mit dieser Funktion kann man die Anwesenheit eines Gerätes verifizieren bevor der Status final auf "present" geändert wird.
Wenn dieses Attribut auf einen Wert >1 gesetzt ist, werden die Readings "state" und "presence" auf den Wert "maybe present" gesetzt,
bis der Status final auf "present" wechselt.
Standardwert ist 1 (keine Anwesenheitsverifizierung)
(Nur im Modus "event" anwendbar)
Die Dauer, die nach einem "absent"-Event gewartet werden soll, bis der Status der PRESENCE-Definition tatsächlich auf "absent" geändert werden soll.
Die Dauer kann dabei im Format HH:MM:SS angegeben werden, wobei Stunden und Minuten optional sind.
Wenn dieses Attribut auf einen gültigen Wert gesetzt ist, werden die Readings "state" und "presence" bei einem "absent"-Event zunächst auf den Wert "maybe absent" gesetzt.
Sobald das parametrisierte Zeitfenster um ist, wird der Status final auf "absent" gesetzt.
Standardwert ist 0 Sekunden (keine Statusverzögerung)
(Nur im Modus "event" anwendbar)
Die Dauer, die nach einem "present"-Event gewartet werden soll, bis der Status der PRESENCE-Definition tatsächlich auf "present" geändert werden soll.
Die Dauer kann dabei im Format HH:MM:SS angegeben werden, wobei Stunden und Minuten optional sind.
Wenn dieses Attribut auf einen gültigen Wert gesetzt ist, werden die Readings "state" und "presence" bei einem "present"-Event zunächst auf den Wert "maybe present" gesetzt.
Sobald das parametrisierte Zeitfenster um ist, wird der Status final auf "present" gesetzt.
Standardwert ist 0 Sekunden (keine Statusverzögerung)
(Nicht im Modus "event" oder "lan-bluetooth" anwendbar)
Das Prüfinterval, welches im Falle eines vorzeitig abgebrochenen Checks genutzt wird, um eine Wiederholung auszuführen. Dazu wird im Falle eines abgebrochenen
Checks der nächste Check nach der übergebenen Dauer in Sekunden ausgeführt. Diese sollte geringer sein als das reguläre Prüfinterval.
(Nicht im Modus "event" oder "lan-bluetooth" anwendbar)
Die maximale Anzahl an Wiederholungen, sollte ein Check vorzeitig abgebrochen werden. Sobald ein Check vorzeitigabbricht, werden maximal die übergebene Anzahl an Wiederholung
innerhalb des in retryInterval konfigurierten Interval ausgeführt um in kürzerer Zeit ein valides Ergebnis zu erhalten.
(Nur im Modus "ping" anwendbar)
Verändert die Anzahl der Ping-Pakete die gesendet werden sollen um die Anwesenheit zu erkennen.
Je nach Netzwerkstabilität können erste Pakete verloren gehen oder blockiert werden.
(Nur im Modus "local-bluetooth" anwendbar)
Sofern man mehrere Bluetooth-Empfänger verfügbar hat, kann man mit diesem Attribut ein bestimmten Empfänger auswählen, welcher zur Erkennung verwendet werden soll (bspw. hci0, hci1, ...). Es muss dabei ein vorhandener HCI-Gerätename angegeben werden wie z.B. hci0.
(Nur im Modus "fritzbox")
Zusätzlich zum Status des Geräts wird die aktuelle Verbindungsgeschwindigkeit ausgegeben
Das macht nur bei WLAN Geräten Sinn, die direkt mit der FritzBox verbunden sind. Bei abwesenden Geräten wird als Geschwindigkeit 0 ausgegeben.
Mögliche Werte: 0 => Geschwindigkeit nicht prüfen, 1 => Geschwindigkeit prüfen
Standardwert ist 0 (Keine Geschwindigkeitsprüfung)
Wenn der power-Befehl ausgeführt wird (set-Befehl: power) werden folgende Platzhalter durch ihre entsprechenden Werte ersetzt:
$NAME - Name der PRESENCE-Definition
$ADDRESS - Die überwachte Addresse der PRESENCE Definition, wie sie im define-Befehl angegeben wurde.
$ARGUMENT - Das Argument, was dem Set-Befehl "power" übergeben wurde. (z.B. "on" oder "off")
Beispielhafte FHEM-Befehle:
set PowerSwitch_1 on
set PowerSwitch_1 $ARGUMENT
"/opt/power_on.sh $ADDRESS"
{powerOn("$ADDRESS", "username", "password")}
Generierte Readings/Events:
Generelle ReadingsEvents:
state: (absent|maybe absent|present|maybe present|disabled|error|timeout) - Der Anwesenheitsstatus eine Gerätes (absent = abwesend; present = anwesend) oder "disabled" wenn das disable-Attribut aktiviert ist
presence: (absent|maybe absent|present|maybe present) - Der Anwesenheitsstatus eine Gerätes (absent = abwesend; present = anwesend). Der Wert "maybe absent" (vielleicht abwesend) tritt nur auf, sofern das Attribut absenceThreshold aktiviert ist. Der Wert "maybe present" (vielleicht anwesend) tritt nur auf, sofern das Attribut presenceThreshold aktiviert ist.
powerCmd: (executed|failed) - Ausführung des power-Befehls war erfolgreich.
Bluetooth-spezifische Readings/Events:
device_name: $name - Der Name des Bluetooth-Gerätes, wenn es anwesend (Status: present) ist
FRITZ!Box-spezifische Readings/Events:
speed: $speed - Die Netzwerkdeschwindigkeit des Gerätes, sofern das Attribut fritzboxCheckSpeed aktiviert ist.
command_accepted: $command_accepted (yes|no) - Wurde das letzte Kommando an den presenced/collectord akzeptiert (yes = ja, no = nein)?
room: $room - Wenn das Modul mit einem collectord verbunden ist, zeigt dieses Event den Raum an, in welchem dieses Gerät erkannt wurde (Raumname entsprechend der Konfigurationsdatei des collectord)
Das Modul extrahiert Wetterdaten von der Website www.proplanta.de.
Es stellt eine Vorhersage für 12 Tage zur Verfügung - während der ersten 7 Tage im 3-Stunden-Intervall.
Dieses Modul erzeugt eine hohe CPU-Last. Es wird deshalb empfohlen, die auszulesenden Vorhersagetage zu reduzieren.
Es nutzt die Perl-Module HTTP::Request, LWP::UserAgent und HTML::Parse.
Für detaillierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.
Define
define <Name> PROPLANTA [Stadt] [Ländercode]
Beispiel:
define wetter PROPLANTA Bern ch define wetter PROPLANTA Wittingen+(Niedersachsen)
[Stadt]
Optional. Die Stadt muss auf www.proplanta.de auswählbar sein.
Wichtig!! Auf die großen Anfangsbuchstaben achten. Leerzeichen im Stadtnamen werden durch ein + (Plus) ersetzt.
[Ländercode]
Optional. Mögliche Werte: de (Standard), at, ch, fr, it
Über die Funktion PROPLANTA_Html wird ein HTML-Code für eine Vorhersage für die angegebenen Anzahl Tage (standardmäßig 3) erzeugt.
Beispiel:
define Vorschau weblink htmlCode {PROPLANTA_Html("Wetter"[, Tage])}
Set
set <name> update
Startet sofort ein neues Auslesen der Wetterdaten.
Attribute
forecastDays <4-14>
Anzahl Tage, für die die Vorhersage ausgelesen werden soll. Standard ist 14 Tage (inkl. heute).
INTERVAL <Abfrageintervall>
Abfrageintervall in Sekunden (Standard 3600 = 1 Stunde)
URL <Internetadresse>
Internetadresse, von der die Daten ausgelesen werden (überschreibt die Werte im 'define'-Term)
PiXtend ist eine speicherprogrammierbare Steuerung auf Basis des Raspberry Pi.
Dieses FHEM-Modul ermöglicht dabei den Zugriff auf die Funktionen des PiXtendV2-Boards in der FHEM-Oberfläche.
Der PiXtend bietet dabei eine Vielzahl an digitalen und analogen Ein- und Ausgängen, die nach Industrie-Standards ausgelegt sind
und ist aufgrund der sicheren Anschlüsse auch ideal für die Hausautomatisierung geeignet.
Für mehr Informationen über PiXtend(R) und das FHEM-Modul besuchen Sie unsere Website
www.PiXtend.de oder
www.PiXtend.com.
Define
define <name> PiXtendV2 <optional>
Der Parameter "optional" bestimmt für welches Hardware-Modell ein FHEM-Gerät angelegt werden soll, z.B. S oder L.
Wird der Parameter weggelassen, wird automatisch ein FHEM-Gerät für Model -S- angelegt.
Beispiel:
define pix PiXtendV2 => erzeugt ein FHEM-Gerät für Model S define pix PiXtendV2 S => erzeugt ein FHEM-Gerät für Model S define pix PiXtendV2 L => erzeugt ein FHEM-Gerät für Model L
Set
Kommandos um die Basiskonfiguration für den PiXtend durchzuführen, beginnen mit einem "_".
Unterstützt ein Kommando mehrere Kanäle, muss das "#"-Zeichen durch die Kanal-Nummer ersetzt werden.
Alle Set-Kommandos sind unabhängig von der Groß-/Kleinschreibung um die einfache Benutzung zu ermöglichen.
Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im
Downloadbereich
unserer Hompage nach.
Beispiel:
set pix relayOut0 on set pix Relayout0 On set pix rElAyoUT0 oFf
_GPIO#Ctrl [input,output,DHT11,DHT22]
Mit dieser Einstellung kann die Funktion des GPIO eingestellt werden. [input], [output] oder [DHT11] und [DHT22] wenn ein DHT-Sensor an den GPIO angeschlossen ist.
Wenn ein DHT-Sensor angeschlossen ist und verwendet wird, kann die normale Funktion des GPIO als Eingang/Ausgang nicht gleichzeitig verwendet werden.
_GPIOPullupsEnable [yes,no]
Diese Einstellung aktiviert [yes] oder deaktiviert [no] für alle GPIOs die Möglichkeit die internen PullUp-Widerstände durch GPIOOut zu setzen.
_JumperSettingAI# [5V,10V]
Diese Einstellung beeinflusst die Berechnung der Spannung durch die analogen Eingänge und bezieht sich dabei auf die tatsächliche Position des Jumpers
auf dem PiXtend-Board [5V,10V]. Wenn kein Jumper verwendet wird, entspricht das der Standardeinstellung von [10V].
_StateLEDDisable [yes,no]
Diese Einstellung deaktiviert [yes] oder aktiviert [no] die Status-LED auf dem PiXtend. Wenn die LED deaktiviert ist, leuchtet sie im Fehlerfall nicht auf.
_WatchdogEnable [disable,125ms,1s,8s]
Diese Einstellung ermöglicht die Konfiguration des Watchdog-Timers. Wenn der Watchdog konfiguriert ist, geht der PiXtend in den Sicheren Zustand
über, falls innerhalb der eingestellten Zeit keine gültige Übertragung zwischen PiXtend und Raspberry Pi stattgefunden hat.
Im Sicheren Zustand kann der PiXtend erst wieder angesprochen werden, nachdem ein Reset des PiXtend durchgeführt wurde.
AnalogOut# []
Stellt am analogen Ausgang eine Spannung ein. Der übergebene Wert kann eine Spannung zwischen 0 V und 10 V
oder ein Rohwert zwischen 0 und 1023 sein. Um den Wert als Spannung zu übergeben, muss der Wert ein "." enthalten,
auch wenn der Wert ganzzahlig ist.
Beispiel:
set pix analogout0 2.5 => Setzt den analogen Ausgang 0 auf 2,5 V set pix analogout0 4.0 => Setzt den analogen Ausgang 0 auf 4 V set pix analogout0 223 => Setzt den analogen Ausgang 0 auf 10*(233/1024) = 1,09 V
DigitalDebounce# [0-255]
Ermöglicht das Entprellen der digitalen Eingänge. Die Einstellung beeinflusst dabei immer zwei Kanäle.
DigitalDebounce01 beeinflusst somit DigitalIn0 und DigitalIn1.
Die resultierende Verzögerung berechnet sich dabei durch (eingestellten Wert)*(100 ms).
Der übergebene Wert kann eine beliebige Zahl zwischen 0 und 255 sein.
Entprellen kann sinnvoll sein, falls an den Eingängen Schalter oder Taster angeschlossen sind.
Beispiel:
set pix digitaldebounce01 20 => entprellt DigitalIn0 und DigitalIn1 über (20*100ms) = 2s
DigitalOut# [on,off,toggle]
Setzt den digitalen Ausgang auf HIGH [on] oder LOW [off] oder [toggle]t ihn.
GPIODebounce# [0-255]
Ermöglicht das Entprellen der GPIO Eingänge. Die Einstellung beeinflusst dabei immer zwei Kanäle.
GPIODebounce01 beeinflusst somit GPIOIn0 und GPIOIn1.
Die resultierende Verzögerung berechnet sich dabei durch (eingestellten Wert)*(100 ms).
Der übergebene Wert kann eine beliebige Zahl zwischen 0 und 255 sein.
Entprellen kann sinnvoll sein, falls an den Eingängen Schalter oder Taster angeschlossen sind.
Beispiel:
set pix gpiodebounce23 33 => entprellt GPIOIn2 und GPIOIn3 über (33*100ms) = 3,3s
GPIOOut# [on,off,toggle]
Setzt den GPIO auf HIGH [on] oder LOW [off] oder [toggle]t ihn, falls er als Ausgang konfiguriert ist.
Wenn der GPIO als Eingang konfiguriert ist, kann mit diesem Kommando der interne PullUp-Widerstand aktiviert [on], deaktiviert [off] oder
ge[toggle]t werden. Dazu muss die Möglichkeit allerdings global durch _GPIOPullupsEnable aktiviert werden.
PWM
PiXtendV2 unterstützt mehrere PWM-Modi, die mit diesen Einstellungen konfiguriert werden können.
Zum Beispiel wird ein Servo-Mode um Modellbau-Servomotoren anzusteuern, ein Frequency-Mode oder ein Duty-Cycle-Mode unterstüzt.
Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im
Downloadbereich
unserer Hompage nach.
PWM#Ctrl0 benötigt einen Wert zwischen 0 und 255
PWM#Ctrl1 benötigt einen Wert zwischen 0 und 65535 (oder einen Wert zwischen 0 und 255, siehe Ausnahme Model -S-)
PWM#A/B benötigt einen Wert zwischen 0 und 65535 (oder einen Wert zwischen 0 und 255, siehe Ausnahme Model -S-)
RelayOut# [on,off,toggle]
Setzt das Relay auf HIGH [on] oder LOW [off] oder [toggle]t es.
Reset
Setzt den Controller auf dem PiXtend zurück, z.B. wenn er sich im Sicheren Zustand befindet, um ihn erneut konfigurieren zu können.
RetainCopy [on,off]
Wenn RetainCopy aktiviert [on] ist, werden die geschriebenen Daten RetainDataOut vom PiXtend in RetainDataIn zurückgegeben.
Die Aktivierung kann in Situationen sinnvoll sein, wenn überprüft werden soll, welche Daten an den PiXtend geschickt wurden.
Ist die Funktion deaktiviert [off] werden die zuletzt gespeicherten Daten in RetainDataIn zurückgegeben.
RetainDataOut [0-(RetainSize-1)] [0-255]
Der PiXtendV2 unterstüzt die Speicherung remanenter/persistenter Daten - auch Retain genannt. Diese Daten werden im Falle
einer Betribsspannungsunterbrechung, beim Auslösen des Watchdog-Timers oder beim Entritt in den Sicheren Zustand gespeichert,
sofern diese Funktion aktiviert wurde. Die Retain-Daten sind dabei in Bytes organisiert, wobei jedes Byte
individuell mit einem Wert zwischen 0 und 255 beschrieben werden kann.
Als ersten Parameter erwartet das Kommando den Index des Bytes, der zwischen 0 und (RetainSize-1) liegt. RetainSize ist in den "Internals" zu finden.
Als zweiter Parameter wird der Wert erwartet, der gespeichert werden soll.
Beispiel:
set pix retaindataout 0 34 => speichert 34 in Retain-Data-Byte 0 set pix retaindataout 30 222 => speichert 222 in Retain-Data-Byte 30
RetainEnable [on,off]
Die Funktion um Retain-Daten auf dem PiXtend zu speichern muss erst aktiviert [on] werden. Andernfalls [off] werden keine Daten gespeichert.
Es ist zu beachten, dass für den Retain-Speicherbereich 10.000 Schreibzyklen unterstützt werden. Dementsprechend
sollte die Funktion nur aktiviert werden, wenn sie tatsächlich benötigt wird.
SafeState
Mit dieser Einstellung kann der PiXtend in den Sicheren Zustand versetzt werden. Wenn die Retain-Speicherung aktiviert ist, werden die Daten gesichert.
Im Sicheren Zustand kommuniziert der PiXtend nicht mehr mit FHEM. Um den PiXtend neuzustarten muss ein Reset durchgeführt werden.
Get
Unterstützt ein Kommando mehrere Kanäle, muss das "#"-Zeichen durch die Kanal-Nummer ersetzt werden.
Alle Get-Kommandos sind unabhängig von der Groß-/Kleinschreibung um die einfache Benutzung zu ermöglichen.
Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im
Downloadbereich
unserer Hompage nach.
Die Werte können als Text, wobei die Werte in eckigen Klammern stehen oder als rohe Werte zurückgegeben werden.
Die Einstellung für das Format ist in den Attributen ("PiXtend_GetFormat") zu finden.
AnalogIn#
Gibt den Wert des ausgewählten analogen Eingangs zurück.
Der Wert hängt dabei von der Einstellung _JumperSettingAI# und der tatsächlichen Jumper-Position auf dem Board ab, sowie der Messmethode des Kanals ab.
AnalogIn4 und AnalogIn5 bei Modell -L- sind z.B. Stromeingänge.
DigitalIn#
Gibt den Status on (HIGH) oder off (LOW) des digitalen Eingangs zurück.
GPIOIn#
Gibt den Status on (HIGH) oder off (LOW) des GPIOs zurück, unabhängig von der Konfiguration (input, output, ..).
RetainDataIn [0-(RetainSize-1)]
Gibt den Wert des ausgewählten RetainDataIn-Bytes zurück.
Sensor# [temperature,humidity]
Wenn ein DHT-Sensor an den entsprechenden GPIO angeschlossen ist und _GPIO#Ctrl auf DHT11 oder DHT22 gesetzt ist
wird die Temperatur und Luftfeuchtigkeit gemessen und kann ausgelesen werden.
Beispiel:
set pix _GPIO0Ctrl DHT11 get pix Sensor0 temperature
SysState
Gibt den Systemstatus [defined, active, error] des FHEM-Moduls zurück.
UCState
Gibt den Status des PiXtend zurück. Ist der Status 1, ist alles in Ordnung. Ist der Status allerdings größer als 1 ist ein Fehler aufgetreten
oder steht noch an. In diesem Fall kann der PiXtend nicht konfiguriert werden.
Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im
Downloadbereich
unserer Hompage nach.
UCWarnings
Der zurückgegebene Wert repräsentiert die Warnungen des PiXtendV2.
Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im
Downloadbereich
unserer Hompage nach.
Version
Gibt die Version des FHEM-Moduls sowie die PiXtend-Version [Model-Hardware-Firmware] zurück.
Readings
Das FHEM-Modul des PiXtend unterstüzt mehrere Readings, von denen die meisten ein Event auslösen, sobald sie sich ändern.
Die Bedeutung der Readings ist ähnlich zu den Get-Kommandos.
AnalogIn#
Zeigt das Ergebnis der Messungen der analogen Eingänge in V beziehungsweise in mA an.
DigitalIn#
Zeigt den Status on (HIGH) oder off (LOW) der digitalen Eingänge an.
Firmware
Zeigt die Firmware-Version an.
GPIOIn#
Zeigt den Status on (HIGH) oder off (LOW) der GPIOs, unabhängig von deren Konfiguration (input, output, ..).
Hardware
Zeigt die Hardware-Version an.
Model
Zeigt das Model an.
RetainDataIn
Zeigt die Werte von RetainDataIn an. Die Werte von RetainDataIn sind dabei in einer Zeile
zusammengefasst. Der am weitsten links stehende Wert entspricht Byte0 / RetainDataIn0.
Die Werte sind durch ein Leerzeichen " " voneinander getrennt und können somit einfach in Perl ausgewertet werden:
Beispiel:
my ($str) = ReadingsVal(pix, "RetainDataIn", "?") if($str ne "?"){ my @val = split(/ /, $str); => $val[0] enthält nun Byte0, $val[1] Byte1, usw ... }
Sensor#T/H
Zeigt die Temperatur (T) in °C und die Luftfeuchtigkeit (H) in % des Sensors an, der an den entsprechenden GPIO angeschlossen ist.
UCState
Zeigt den Status des PiXtend an. Ist der Status 1, ist alles in Ordnung. Ist der Status allerdings größer als 1 ist ein Fehler aufgetreten
oder steht noch an. In diesem Fall kann der PiXtend nicht konfiguriert werden.
Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im
Downloadbereich
unserer Hompage nach.
UCWarnings
Der angezeigte Wert repräsentiert die Warnungen des PiXtendV2.
Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im
Downloadbereich
unserer Hompage nach.
Attributes
Für den Attribut-Namen muss die Groß-/Kleinschreibung beachtet werden.
PiXtend_GetFormat [text,value]
Ändert die Darstellung, wie die Werte durch die Get-Kommandos zurückgegeben werden. Die Werte können entweder in einer Nachricht [text] oder als rohe Werte [value] zurückgegeben werden.
Standard ist die Ausgabe als Text.
PiXtend_Parameter
Dieses Attribut kann verwendet werden, um die Einstellungen zur Basiskonfiguration (Set-Kommandos beginnend mit "_") als Attribut zu speichern. Attribute werden im Gegensatz zu Set-Kommandos in der Config-Datei gespeichert.
Einzelne Kommandos werden durch ein Leerzeichen voneinander getrennt und erhalten ihre Werte nach einem Doppelpunkt.
Modul für das Plugwise-System.
Achtung: Dieses Modul benötigt folgende Perl-Module:
Device::SerialPort oder Win32::SerialPort
digest:CRC
Define
define <name> Plugwise <device>
<device> Gibt den COM-Port des Plugwise-Stick an.
Unter Linux ist dies im Normalfall /dev/ttyUSBx, wobei x eine fortlaufende Nummer ist. (zB /dev/ttyUSB0)
Wobei es unter Linux sinnvoller ist, den Port mittels UDEV-Regeln oder mittels /dev/by-id/ anzugeben.
Der Plugwise-Stick läuft fix auf 115200 Baud
PushNotifier ist ein Dienst, um Benachrichtigungen von einer vielzahl
von Quellen auf Deinem Smartphone oder Tablet zu empfangen.
Du brauchst einen Account um dieses Modul zu verwenden.
F��r weitere Informationen besuche FhemWiki PushNotifier.
Pushbullet ist ein Dienst, um Benachrichtigungen an unterschiedliche Endgeräte zu senden. Pushbullet
bietet Apps für iPhone, Android, Windows (Beta) und Mac OS X sowie Plugins für Chrome, Firefox und Safari an.
Für weitere Informationen über den Dienst besuche pushbullet.com.
Notiz:
JSON muss auf dem FHEM Host installiert sein.
Registriere dich auf pushbullet.com um deine accessToken zu bekommen.
Set
clear
Löscht alle Device Readings
contactAdd name | email
Fügt einen neuen Kontakt hinzu. Leerzeichen im Namen sind erlaubt.
deviceDelete deviceName
Löscht das Device.
deviceRename deviceName | neuerDeviceName
Benennt das Device um.
link [| Titel | Device]
Sendet einen Link mit optionalen Titel und Device. Wenn kein Device angegeben ist, geht der Push an alle deine Devices.
list Item1[, Item2, Item3, ... | Titel | Device]
Sendet eine Liste mit einem oder mehreren Items, optionalen Titel und Device. Wenn kein Device angegeben ist, geht der Push an alle deine Devices.
message [| Titel | Device]
Sendet eine Nachricht mit optionalen Titel und Device. Wenn kein Device angegeben ist, geht der Push an alle deine Devices.
Beispiele:
set Pushbullet message Das ist eine Nachricht
Sendet eine Push Benachrichtigung mit der Nachricht "Das ist eine Nachricht" ohne vorbestimmten Titel an alle deine Devices.
set Pushbullet message Das ist eine Nachricht | Ein Titel
Sendet eine Push Benachrichtigung mit der Nachricht "Das ist eine Nachricht" mit dem Titel "Ein Titel" an alle deine Devices.
set Pushbullet message This is a message | Ein Titel | iPhone
Sendet eine Push Benachrichtigung mit der Nachricht "Das ist eine Nachricht" mit dem Titel "Ein Titel" an deinen Device iPhone.
set Pushbullet message This is a message | Ein Titel | Max Mustermann
Sendet eine Push Benachrichtigung mit der Nachricht "Das ist eine Nachricht" mit dem Titel "Ein Titel" an deinen Kontakt Max Mustermann.
Notiz:
Leerstellen vor und nach dem Trenner | werden nicht benötigt.
Get
devices
Liest alle Geräte und Kontakte ein und setzt die entsprechenden Readings.
Attributes
defaultDevice
Standart Device für Pushnachrichten.
defaultTitle
Standart Titel für Pushnachrichten. Wenn nicht gesetzt ist der Standart Titel FHEM
Pushover ist ein Dienst, um Benachrichtigungen von einer vielzahl
von Quellen auf Deinem Smartphone oder Tablet zu empfangen.
Du brauchst einen Account um dieses Modul zu verwenden.
Für weitere Informationen über den Dienst besuche pushover.net.
Die Installation des Perl Moduls IO::Socket::SSL ist Voraussetzung zur Nutzung dieses Moduls (z.B. via 'cpan -i IO::Socket::SSL').
Es wird empfohlen Perl-JSON zu installieren, um erweiterte Funktion wie Supplementary URLs nutzen zu können.
Das Attribut infix ist optional, um einen FHEMWEB uri Namen für die Pushover API Callback Funktion zu definieren.
Die Callback URL Callback URL kann dann mit dem Attribut callbackUrl gesetzt werden (siehe unten).
Hinweis: Eine infix uri can innerhalb einer FHEM Instanz nur einmal verwendet werden!
set <Pushover_device> msg <text> [<option1>=<value> <option2>="<value with space in it>" ...]
Die folgenden Optionen können genutzt werden, um den Nachrichteninhalt und die Zustellung zu beeinflussen::
message - Typ: Text - Dein Nachrichtentext. Die Nutzung dieser Option hat Vorrang; Text außerhalb wird verworfen. device - Typ: Text - Dein selbst vergebener Gerätename, um die Nachricht direkt an dieses Gerät zu senden anstatt an alle Geräte gleichzeitig (mehrere Geräte können mit Komma getrennt angegeben werden). Hier kann auch explizit ein User oder Group Key angegeben werden. Um gezielt ein Gerät einer/s speziellen User/Group anzusprechen, zuerst den User/Group Key angeben, gefolgt vom Gerätenamen und einem Doppelpunkt als Trennzeichen. title - Typ: Text - Dein Nachrichten Titel, andernfalls wird der App Name wie in der Pushover API festgelegt verwendet. action - Typ: Text - Entweder ein auszuführendes FHEM Kommando, wenn der Empfänger den Link anklickt oder eine supplementary URL, die mit der Nachricht zusammen angezeigt werden soll. url_title - Typ: Text - Ein Titel für das FHEM Kommando oder die supplementary URL, andernfalls wird die URL direkt angezeigt. priority - Typ: Integer - Sende mit -2, um keine/n Benachrichtigung/Alarm zu generieren. Sende mit -1, um immer eine lautlose Benachrichtigung zu senden. Sende mit 1, um die Nachricht mit hoher Priorität anzuzeigen und die Ruhezeiten des Empfängers zu umgehen. Oder sende mit 2, um zusätzlich eine Bestätigung des Empfängers anzufordern. retry - Typ: Integer - Verpflichtend bei einer Nachrichten Priorität >= 2. expire - Typ: Integer - Verpflichtend bei einer Nachrichten Priorität >= 2. cancel_id - Typ: Text - Benutzerdefinierte ID, um Nachrichten mit einer Priorität >= 2 sofort ablaufen zu lassen und die wiederholte Benachrichtigung auszuschalten. timestamp - Typ: Integer - Ein Unix Zeitstempfel mit Datum und Uhrzeit deiner Nachricht, die dem Empfänger statt der Uhrzeit des Einganges auf den Pushover Servern angezeigt wird. Hat Vorrang bei gesetztem Attribut timestamp=1. sound - Typ: Text - Der Name eines vom Empfängergerät unterstützten Klangs, um den vom Empfänger ausgewählten Klang zu überschreiben. attachment - Typ: Text - Pfad zu einer Bilddatei, welche an die Nachricht angehängt werden soll. Der Basispfad ist relativ zum FHEM Verzeichnis und kann über das storage Attribut überschrieben werden.
Beispiele:
set Pushover1 msg Meine erste Pushover Nachricht. set Pushover1 msg Meine zweite Pushover Nachricht.\nDiesmal mit zwei Zeilen. set Pushover1 msg "Eine andere Pushover Nachricht in doppelten Anfährungszeichen." set Pushover1 msg 'Eine andere Pushover Nachricht in einfachen Anfährungszeichen.' set Pushover1 msg message="Pushover Nachricht, die die explizite Nachrichten Option für den Textinhalt verwendet." Dieser Teil des Textes wird ignoriert. set Pushover1 msg Dies ist eine Nachricht mit einem Titel. title="Dies ist ein Betreff" set Pushover1 msg Diese Nachricht hat einen Anhang! attachment="demolog/pictures/p1.jpg" set Pushover1 msg title="Dies ist auch ein Betreff!" Dies ist eine weitere Nachricht mit einem Titel, der am Anfang des Kommandos gesetzt ist. set Pushover1 msg title=Notfall priority=2 retry=30 expire=3600 Sicherheits-Alarm im Wohnzimmer. set Pushover1 msg title=Link Schau dir mal diese Website an: url_title="Öffnen" action="http://fhem.de/" expire=3600 set Pushover1 msg title=Hinweis expire=3600 Dies ist eine Erinnerung, um etwas zu tun. Der Link verliert in 1h seine Gültigkeit. url_title="Hier klicken, um den Befehl auszuführen" action="set device something" set Pushover1 msg title=Notfall priority=2 retry=30 expire=3600 Sicherheits-Alarm im Wohnzimmer. sound=siren url_title="Hier klicken, um den Befehl auszuführen" action="set device something"
msgCancel
set <Pushover_device> msgCancel <ID>
Stoppt vorzeitig die wiederkehrende Aufforderung zur Bestätigung bei Nachrichten mit Priorität >= 2.
Beispiel:
set Pushover1 msg title=Notfall priority=2 retry=30 expire=3600 Sicherheits-Alarm im Wohnzimmer. sound=siren cancel_id=SicherheitsAlarm set Pushover1 msgCancel SicherheitsAlarm
set Pushover1 msg 'Dies ist ein Text.' set Pushover1 msg 'Titel' 'Dies ist ein Text.' set Pushover1 msg 'Titel' 'Dies ist ein Text.' '' 0 '' set Pushover1 msg 'Notfall' 'Sicherheitsproblem im Wohnzimmer.' '' 2 'siren' 30 3600 set Pushover1 msg 'Erinnerung' 'Dies ist eine Erinnerung an etwas' '' 0 '' 0 3600 'Hier klicken, um Aktion auszuführen' 'set device irgendwas' set Pushover1 msg 'Notfall' 'Sicherheitsproblem im Wohnzimmer.' '' 2 'siren' 30 3600 'Hier klicken, um Aktion auszuführen' 'set device something'
Anmerkungen:
Bei der Verwendung der ersten beiden Beispiele müssen die entsprechenden Attribute als Ersatz für die fehlenden Parameter belegt sein (s. Attribute)
Wenn device leer ist, wird die Nachricht an alle Geräte geschickt.
Wenn device ein User oder Group Key ist, wird die Nachricht stattdessen hierhin verschickt. Möchte man trotzdem ein dediziertes Device angeben, trennt man den Namen mit einem Doppelpunkt ab.
Wenn sound leer ist, dann wird die Standardeinstellung in der App verwendet.
Wenn die Priorität höher oder gleich 2 ist müssen retry und expire definiert sein.
glance
set <Pushover_device> glance [<text>] [<option1>=<value> <option2>="<value with space in it>" ...]
Aktualisiert die Pushover glances auf einer Apple Watch.
Die folgenden Optionen können genutzt werden, um den Nachrichteninhalt und die Zustellung zu beeinflussen::
title - type: text(100 characters) - Eine Beschreibung der Daten, die angezeigt werden, beispielsweise "Verkaufte Dinge". text - type: text(100 characters) - Textzeile, die in den meisten Ansichten verwendet wird. Die Nutzung dieser Option hat Vorrang; Text außerhalb wird verworfen. subtext - type: text(100 characters) - Eine zweite Zeile mit Text. count - type: integer(may be negative) - Wird auf kleineren Ansichten dargestellt; nützlich für einfache Zählerstände. percent - type: integer(0-100) - Wird bei einigen Ansichten als Fortschrittsbalken/-kreis angezeigt. device - Typ: Text - Dein selbst vergebener Gerätename, um die Nachricht direkt an dieses Gerät zu senden anstatt an alle Geräte gleichzeitig (mehrere Geräte können mit Komma getrennt angegeben werden). Hier kann auch explizit ein User oder Group Key angegeben werden. Um gezielt ein Gerät einer/s speziellen User/Group anzusprechen, zuerst den User/Group Key angeben, gefolgt vom Gerätenamen und einem Doppelpunkt als Trennzeichen.
callbackUrl
Setzt die Callback URL, um Nachrichten mit Emergency Priorität zu bestätigen.
timestamp
Sende den Unix-Zeitstempel mit jeder Nachricht.
title
Wird beim Senden als Titel verwendet, sofern dieser nicht als Aufrufargument angegeben wurde.
device
Wird beim Senden als Gerätename verwendet, sofern dieser nicht als Aufrufargument angegeben wurde. Kann auch generell entfallen, bzw. leer sein, dann wird an alle Geräte gesendet.
priority
Wird beim Senden als Priorität verwendet, sofern diese nicht als Aufrufargument angegeben wurde. Zulässige Werte sind -1 = leise / 0 = normale Priorität / 1 = hohe Priorität
expire
Wenn die Nachrichten Priorität 2 ist, wird dieser Wert als Standard für expire verwendet, falls dieser nicht in der Nachricht angegeben wurde. Muss 30 oder höher sein.
retry
Wenn die Nachrichten Priorität 2 ist, wird dieser Wert als Standard für retry verwendet, falls dieser nicht in der Nachricht angegeben wurde.
sound
Wird beim Senden als Titel verwendet, sofern dieser nicht als Aufrufargument angegeben wurde. Kann auch generell entfallen, dann wird der eingestellte Ton der App verwendet.
storage
Wird als Standardpfad beim Versand von Anhängen verwendet, ansonsten wird das globale Attribut modpath benutzt.
Pushsafer ist ein Dienst, um Benachrichtigungen von einer Vielzahl
unterschiedlicher Quellen auf einem iOS-, Android-, Windows 10 Phone oder Desktop-Gerät zu empfangen.
Es wird ein personalisierter Account benötigt um dieses Modul zu verwenden.
Weitere Information zum Pushsafer-Dienst gibt es unter pushsafer.com.
Dieses Modul dient lediglich zum Versand von Nachrichten über Pushsafer.
Define
define <Name> Pushsafer <Schlüssel>
Der Parameter <Schlüssel> muss eine alphanumerische Zeichenkette sein. Hierbei kann es sich um einen regulären privaten Schlüssel (20 Zeichen lang) handeln oder um einen Email-Alias-Schlüssel (15 Zeichen lang), welcher in einem Account entsprechend eingerichtet sein muss.
set <Name> message <Nachricht> [<Option1>=<Wert> <Option2>=<Wert> ...]
Aktuell wird nur das "message"-Kommando unterstützt um Nachrichten zu versenden.
Der einfachste Anwendungsfall ist das Versenden einer einfachen Textnachricht wie im folgenden Beispiel:
set PushsaferAccount message "Meine erste Pushsafer Nachricht."
Um eine mehrzeilige Nachricht zu schicken, kann man den Platzhalter "\n" für einen Zeilenumbruch verwenden:
set PushsaferAccount message "Meine zweite Pushsafer Nachricht.\nDiesmal mit zwei Zeilen."
Optionale Zusatzparameter
Es ist möglich die zu versendende Nachricht durch zusätzliche Optionen an die eigenen Wünsche anzupassen. Diese Optionen können hinter dem Nachrichtentext beliebig kombiniert werden um die Nachricht zu individualisieren. Die möglichen Optionen sind:
title - Kurzform: t - Typ: Text - Eine Überschrift, die über der Nachricht hervorgehoben angezeigt werden soll. device - Kurzform: d - Typ: Text - Die Geräte-ID als Ganzzahl an welche die Nachricht gezielt geschickt werden soll. Um eine Gruppen-ID direkt zu addressieren muss der ID das Präfix "gs" vorangestellt werden (Bsp. "gs23" für die Gruppen-ID 23). Standardmäßig wird eine Nachricht immer an alle Geräte geschickt, die mit dem Account verknüpft sind. sound - Kurzform: s - Typ: Ganzzahl - Die Nummer eines Tons, welcher beim Empfang der Nachricht auf dem Zielgerät ertönen soll (siehe pushsafer.com für eine Liste möglicher Werte). icon - Kurzform: i - Typ: Ganzzahl - Die Nummer eines Icons, welches zusammen mit der Nachricht auf dem Zielgerät angezeigt werden soll (siehe Pushsafer.com für eine Liste möglicher Werte). vibration - Kurzform: v - Typ: Ganzzahl - Die Anzahl, wie oft das Zielgerät vibrieren soll beim Empfang der Nachricht (maximal 3 mal; nur für iOS-/Android-Geräte nutzbar). Falls nicht benutzt, wird die geräteinterne Einstellung verwendet. url - Kurzform: u - Typ: Text - Eine URL, welche der Nachricht angehangen werden soll. Dies kann eine normale http:// bzw. https:// URL sein, es sind jedoch auch weitere spezielle Schemas möglich. Eine Liste aller möglichen URL-Schemas gibt es unter pushsafer.com . urlText - Kurzform: ut - Typ: Text - Der Text, welcher zum Anzeigen der URL benutzt werden soll anstatt der Zieladresse. key - Kurzform: k - Typ: Text - Übersteuert den zu nutzenden Schlüssel zur Identifikation aus dem define-Kommando. Es kann hierbei auch ein Email-Alias-Schlüssel benutzt werden. ttl - Kurzform: l - Typ: Ganzzahl - Die Lebensdauer der Nachricht in Minuten. Sobald die Lebensdauer erreicht ist, wird die Nachricht selbstständig auf allen Geräten gelöscht. Der mögliche Wertebereich liegt zwischen 1 - 43200 Minuten (entspricht 30 Tagen). picture - Kurzform: p - Typ: Text - Anhängen eines Bildes zur Nachricht. Dies kann ein Dateipfad zu einer Bilddatei sein (z.B. picture=/home/user/Bild.jpg) oder der Name einer IPCAM-Instanz (im Format: picture=IPCAM:<Name>) um die letzte Aufnahme zu senden (Bsp. picture=IPCAM:IpKamera_Einganstuer). Es werden die Dateiformate JPG, PNG und GIF unterstüzt. picture2 - Kurzform: p2 - Typ: Text - Gleiche Syntax wie die Option "picture". picture3 - Kurzform: p3 - Typ: Text - Gleiche Syntax wie die Option "picture".
Beispiele:
set PushsaferAccount message "Dies ist eine Nachricht mit Überschrift." title="Sehr Wichtig!!" set PushsaferAccount message "Komm runter\nwir warten" title="Mittag ist fertig" device=100 set PushsaferAccount message "Server ist nicht erreichbar" sound=25 icon=5 vibration=3 set PushsaferAccount message "Hier sind die Urlaubsfotos" url="http://www.foo.de/fotos" urlText="Sommerurlaub"
It is also possible to use the short-term versions of options:
set PushsaferAccount message "Dies ist eine Nachricht mit Überschrift." t="Sehr Wichtig!!" set PushsaferAccount message "Komm runter\nwir warten" t="Mittag ist fertig" d=100 set PushsaferAccount message "Server ist nicht erreichbar" s=25 i5 v=3 set PushsaferAccount message "Hier sind die Urlaubsfotos" u="http://www.foo.de/fotos" ut="Sommerurlaub"
Mit hilfe dieses Moduls, kann auf einfache Weise eine URL generiert werden, mit
der vom Dienstleister TEC-IT ein QRCode abgerufen werden kann.
Ein Device dieses Moduls kann außerdem den QRCode auch selbst direkt in FHEMWEB
darstellen und auch anderen Devices (bspw. weblink) als HTML zur Verfügung stellen.
HINWEIS: Es ist ohne schriftliche Genehmigung des Dienstaanbieters nur erlaubt,
maximal 30 QRCode-Abrufe / Minute durchzuführen.
Siehe dazu auch die Nutzungsbedingungen von TEC-IT: http://qrcode.tec-it.com/de#TOS
Define
define <name> QRCode
Set
set <name> update
Führt eine aktualisierung der QRCode-Url durch.
Attributes
QRCode-URL-relevante Attribute
Die folgenden Attribute sind für die Erzeugung der Abruf-URL relevant und haben somit
direkten Einfluß auf die Erzeugung des QRCode-Images.
Für diese Attribute wird bei Änderung, standardmäßig ein automatisches Udate der QRCode-URL
durchgeführt. Dies kann durch setzen des Attirbutes qrNoAutoUpdate (s.w.u.) deaktiviert werden.
qrData
Dieses Attribut legt die Daten fest, die im QRCode kodiert werden sollen.
Ist dieses Attribut nicht gesetzt, wird beim update eine entsprechende
Fehlermeldung erzeugt.
qrSize
Dieses Attribut legt die Größe fest, in der das QRCode-Image erstellt werden
soll. Mögliche Ausprägungen sind small, medium (default), large.
qrResolutionDPI
Dieses Attribut legt die Auflösung fest, in der das QRCode-Image erstellt werden
soll. Mögliche Werte liegen zwischen 96 und 600 (Default ist 300dpi)
qrColor
Dieses Attribut legt die Vordergrundfarbe fest, in der das QRCode-Image erstellt werden
soll. Der Wert ist ein RGB-Farbwert in Hexadezimaler schreibweise (Bspw. FF0000 für rot)
Default ist 000000 (schwarz)
qrBackColor
Dieses Attribut legt die Hintergrundfarbe fest, in der das QRCode-Image erstellt werden
soll. Der Wert ist ein RGB-Farbwert in Hexadezimaler schreibweise (Bspw. 0000FF für blau)
Default ist FFFFFF (weiß).
qrTransparent
Dieses Attribut legt fest, ob der Hintergrund transparent sein soll.
Mögliche Werte sind True für transparenten Hintergrund und False für nicht-transparenten
Hintergrund (default)
qrQuietZone
Über diesen Wert kann eine Ruhe-Zone, also ein Rand um den eigentlichen QRCode festgelegt
werden. Dies ermöglicht ggf. ein erleichtertes Erfassen des QRCodes beim Scannen.
Mögliche Werte sind positive numerische Werte. Default ist 0, wenn das Attribut nicht gesetzt ist.
qrQuietUnit
Über diesen Wert kann die Maßeinheit für das Festlegen einer Ruhe-Zone eingestellt werden.
Mögliche Ausptägungen sind mm (default), in (=inch), mil (=mils), mod (=Module) oder px (=Pixel).
qrCodepage
Über diesen Wert kann die Zeichentabelle für die QRCode-Erzeugung festgelegt werden.
Mögliche Werte sind UTF8 (default), Cyrillic oder Ansi
qrErrorCorrection
Über diesen Wert kann Fehlerkorrektur für die QRCode-Erzeugung festgelegt werden.
Mögliche Werte sind L (default), M,Q oder H
darstellungsrelevante Attribute
Die folgenden Attribute haben nur Einfluß auf das Verhalten und die Darstellung in FHEMWEB
in der Deatailansicht des QRCode-Devices, bzw. beim Abruf der HTML-Daten mittels
QRCode_getHtml (s.u.)
Im Fehlerfall wird weder der QRCode, noch qrDisplayText dargestellt, sondern eine entsprechend
Fehlermeldung stattdessen eingeblendet.
qrDisplayWidth
Breite des Images bei der Darstellung in FHEMWEB in der Detailübersicht
Default ist 200
qrDisplayHeight
Höhe des Images bei der Darstellung in FHEMWEB in der Detailübersicht
Default ist 200
qrDisplayData
Wenn dieses Attribut gesetzt ist, wird unterhalb des QRCodes der Datenteil als einfacher
Text dargestellt.
qrDisplaNoImage
Wenn dieses Attribut gesetzt ist, der QRCode nicht in der Detailansicht dargestellt.
qrDisplaText
Hier kann ein beliebiger Text eingetragen werden, der unterhalb des QRCodes eingeblendet werden soll.
qrDisplaNoText
Ist dieses Attribut gesetzt, so wird der, im Attribut qrDisplayText eingetragene Text nicht
eingeblendet, auch ohne das Attribut qrDisplayText zu löschen.
qrNoAutoUpdate
Ist dieses Attribut gesetzt, so wird bei Änderung eines für die QRCode-Erzeugung relevanten
Attributs kein automatisches Update der QRCode-URL durchgeführt.
data
Dieses Reading enthält die vom QRCode zu kodierenden Daten.
Das ist im Normalfall der Inhalt aus dem Attribut qrData.
Im Fehlerfall steht hier stattdessen der entsprechende Fehlertext.
qrcode_url
Dies ist die durch set update erzeugte URL, die für den Abruf des QRCode-Image
verwendet wird.
state
Status des QRCode-Device.
Das ist entweder defined, oder der Zeitpunkt des letzten set update, bzw. auto-update
Enthaltene Funktionen
Es gibt im Modul eine Funktion, die auch für andere Anwendungsfälle einsetzbar ist, wie bspw. in einem weblink
QRCode_getHtml($;$$)
Die Funktion gibt den HTML-Code zurück, wie er auch für die Darstellung im QRCode-Device in der
Detail-Ansicht verwendet wird.
Parameter:
QRCodeDevice
Hier ist der Name des QRCode-Devices anzugeben, dessen HTML-Code abgerufen werden soll.
noImage (Optional)
Entspricht dem Attribut qrDisplayNoImage
Wenn dieser Parameter angezeigt wird, wird also keine Referenz auf QRCode-Image im HTML-Code
erzeugt.
noText (Optional)
Entspricht dem Attribut qrDisplayNoText
Wenn dieser Parameter angezeigt wird, wird also Benutzerdefinierter Text unterhalb des QRCode
im HTML-Code erzeugt.
Beispiel:
QRCode_getHtml('MyQRCode',1,0)
Damit wird der HTML-Code für das (QRCode-)Device MyQRCode abgerufen, das nur das Image enthält,
aber nicht den Benutzerdefinierten text.
Stellt ein spezielles virtuelles Device bereit, um eine Gruppe von Personen zu repräsentieren, die zusammen wohnen.
Es kombiniert dabei logisch die individuellen Status von ROOMMATE und GUEST Devices und erlaubt den Status für alle Mitglieder zeitgleich zu ändern. Basierend auf dem aktuellen Status und anderen Readings können andere Aktionen innerhalb von FHEM angestoßen werden.
Beispiele:
# Einzeln
define rgr_Residents RESIDENTS
Set
set <rgr_ResidentsName> <command> [<parameter>]
Momentan sind die folgenden Kommandos definiert.
addGuest - erstellt ein neues GUEST Device und fügt es der aktuellen RESIDENTS Gruppe hinzu. Einfach den Platzhalternamen eingeben und das wars.
addRoommate - erstellt ein neues ROOMMATE Device und fügt es der aktuellen RESIDENTS Gruppe hinzu. Einfach den Vornamen eingeben und das wars.
removeGuest - zeigt alle Mitglieder vom Typ GUEST an und ermöglicht ein einfaches löschen des dazugehörigen Dummy Devices.
removeRoommate - zeigt alle Mitglieder vom Typ ROOMMATE an und ermöglicht ein einfaches löschen des dazugehörigen Dummy Devices.
state home,gotosleep,asleep,awoken,absent,gone wechselt den Status für alle Gruppenmitglieder gleichzeitig; siehe Attribut rgr_states, um die angezeigte Liste in FHEMWEB abzuändern
create wakeuptimer fügt diverse Vorkonfigurationen auf Basis von RESIDENTS Toolkit hinzu. Siehe separate Sektion.
Hinweis: Sofern der Zugriff auf administrative set-Kommandos (-> addGuest, addRoommate, removeGuest, create) eingeschränkt werden soll, kann in einer FHEMWEB Instanz das Attribut allowedCommands ähnlich wie 'set,set-user' erweitert werden.
Die Zeichenfolge 'set-user' stellt dabei sicher, dass beim Zugriff auf FHEM über diese FHEMWEB Instanz nur nicht-administrative set-Kommandos ausgeführt werden können.
Mögliche Status und ihre Bedeutung
Dieses Modul unterscheidet 7 verschiedene Status:
home - Bewohner sind zu Hause und mindestens einer schläft nicht
gotosleep - alle anwesenden Bewohner sind auf dem Weg ins Bett (wenn sie nicht schon schlafen)
asleep - alle anwesenden Bewohner schlafen
awoken - mindestens einer der anwesenden Bewohner ist gerade aufgewacht
absent - keiner der Bewohner ist momentan zu Hause; mindestens einer ist aber in Kürze zurück
gone - alle Bewohner sind für längere Zeit verreist
none - kein Mitglied aktiv
Hinweis: Der Status 'none' kann nicht explizit gesetzt werden. Das setzen von 'gone' wird bei Mitgliedern vom Typ GUEST als 'none' behandelt.
Attribute
rgr_lang - überschreibt globale Spracheinstellung; hilft beim setzen von Device Attributen, um FHEMWEB Anzeigetext zu übersetzen
rgr_noDuration - deaktiviert die kontinuierliche, nicht Event-basierte Berechnung der Zeitspannen (siehe Readings durTimer*)
rgr_showAllStates - die Status 'asleep' und 'awoken' sind normalerweise nicht immer sichtbar, um einen einfachen Zubettgeh-Prozess über das devStateIcon Attribut zu ermöglichen; Standard ist 0
rgr_states - Liste aller in FHEMWEB angezeigter Status; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Status führen zu Fehlern
rgr_wakeupDevice - Referenz zu versklavten DUMMY Geräten, welche als Wecker benutzt werden (Teil von RESIDENTS Toolkit's wakeuptimer)
Generierte Readings/Events:
lastActivity - der letzte Status Wechsel eines Gruppenmitglieds
lastActivityBy - der Name des Gruppenmitglieds, dessen Status zuletzt geändert wurde
lastArrival - Zeitstempel der letzten Ankunft zu Hause
lastAwake - Zeitstempel des Endes des letzten Schlafzyklus
lastDeparture - Zeitstempel des letzten Verlassens des Zuhauses
lastDurAbsence - Dauer der letzten Abwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
lastDurAbsence_cr - Dauer der letzten Abwesenheit in Computer lesbarem Format (Minuten)
lastDurPresence - Dauer der letzten Anwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
lastDurPresence_cr - Dauer der letzten Anwesenheit in Computer lesbarem Format (Minuten)
lastDurSleep - Dauer des letzten Schlafzyklus in normal lesbarem Format (Stunden:Minuten:Sekunden)
lastDurSleep_cr - Dauer des letzten Schlafzyklus in Computer lesbarem Format (Minuten)
lastSleep - Zeitstempel des Beginns des letzten Schlafzyklus
lastState - der vorherige Status
lastWakeup - Zeit der letzten Wake-up Timer Ausführing
lastWakeupDev - Device Name des zuletzt verwendeten Wake-up Timers
nextWakeup - Zeit der nächsten Wake-up Timer Ausführung
nextWakeupDev - Device Name des als nächstes ausgefährten Wake-up Timer
presence - gibt den zu Hause Status in Abhängigkeit des Readings 'state' wieder (kann 'present' oder 'absent' sein)
residentsAbsent - Anzahl der Bewohner mit Status 'absent'
residentsAbsentDevs - Gerätename der Bewohner mit Status 'absent'
residentsAbsentNames - Gerätealias der Bewohner mit Status 'absent'
residentsAsleep - Anzahl der Bewohner mit Status 'asleep'
residentsAsleepDevs - Gerätename der Bewohner mit Status 'asleep'
residentsAsleepNames - Gerätealias der Bewohner mit Status 'asleep'
residentsAwoken - Anzahl der Bewohner mit Status 'awoken'
residentsAwokenDevs - Gerätename der Bewohner mit Status 'awoken'
residentsAwokenNames - Gerätealias der Bewohner mit Status 'awoken'
residentsGone - Anzahl der Bewohner mit Status 'gone'
residentsGoneDevs - Gerätename der Bewohner mit Status 'gone'
residentsGoneNames - Gerätealias der Bewohner mit Status 'gone'
residentsGotosleep - Anzahl der Bewohner mit Status 'gotosleep'
residentsGotosleepDevs - Gerätename der Bewohner mit Status 'gotosleep'
residentsGotosleepNames - Gerätealias der Bewohner mit Status 'gotosleep'
residentsHome - Anzahl der Bewohner mit Status 'home'
residentsHomeDevs - Gerätename der Bewohner mit Status 'home'
residentsHomeNames - Gerätealias der Bewohner mit Status 'home'
residentsTotal - Summe aller aktiven Bewohner unabhängig von ihrem aktuellen Status
residentsTotalAbsent - Summe aller aktiven Bewohner, die unterwegs sind
residentsTotalAbsentDevs - Gerätename aller aktiven Bewohner, die unterwegs sind
residentsTotalAbsentNames - Gerätealias aller aktiven Bewohner, die unterwegs sind
residentsTotalGuests - Anzahl der aktiven Gäste, welche momentan du den Bewohnern dazugezählt werden
residentsTotalGuestsAbsent - Anzahl der aktiven Gäste, die momentan unterwegs sind
residentsTotalGuestsAbsentDevs - Gerätename der aktiven Gäste, die momentan unterwegs sind
residentsTotalGuestsAbsentNames - Gerätealias der aktiven Gäste, die momentan unterwegs sind
residentsTotalGuestsPresent - Anzahl der aktiven Gäste, die momentan zu Hause sind
residentsTotalGuestsPresentDevs - Gerätename der aktiven Gäste, die momentan zu Hause sind
residentsTotalGuestsPresentNames - Gerätealias der aktiven Gäste, die momentan zu Hause sind
residentsTotalRoommates - Anzahl der Bewohner, die als permanente Bewohner behandelt werden
residentsTotalRoommatesAbsent - Anzahl der Besitzer, die momentan unterwegs sind
residentsTotalRoommatesAbsentDevs - Gerätename der Besitzer, die momentan unterwegs sind
residentsTotalRoommatesAbsentNames - Gerätealias der Besitzer, die momentan unterwegs sind
residentsTotalRoommatesPresent - Anzahl der Besitzer, die momentan zu Hause sind
residentsTotalRoommatesPresentDevs - Gerätename der Besitzer, die momentan zu Hause sind
residentsTotalRoommatesPresentNames - Gerätealias der Besitzer, die momentan zu Hause sind
residentsTotalPresent - Summe aller aktiven Bewohner, die momentan zu Hause sind
residentsTotalPresentDevs - Gerätename aller aktiven Bewohner, die momentan zu Hause sind
residentsTotalPresentNames - Gerätealias aller aktiven Bewohner, die momentan zu Hause sind
residentsTotalWakeup - Summe aller Bewohner, bei denen aktuell ein Weckprogramm ausgeführt wird
residentsTotalWakeupDevs - Gerätename aller Bewohner, bei denen aktuell ein Weckprogramm ausgeführt wird
residentsTotalWakeupNames - Gerätealias aller Bewohner, bei denen aktuell ein Weckprogramm ausgeführt wird
residentsTotalWayhome - Summe aller aktiven Bewohner, die momentan auf dem Weg zurück nach Hause sind
residentsTotalWayhomeDevs - Gerätename aller aktiven Bewohner, die momentan auf dem Weg zurück nach Hause sind
residentsTotalWayhomeNames - Gerätealias aller aktiven Bewohner, die momentan auf dem Weg zurück nach Hause sind
residentsTotalWayhomeDelayed - Summe aller Bewohner, die momentan mit Verspätung auf dem Weg zurück nach Hause sind
residentsTotalWayhomeDelayedDevs - Gerätename aller Bewohner, die momentan verspätet auf dem Weg zurück nach Hause sind
residentsTotalWayhomeDelayedNames - Gerätealias aller Bewohner, die momentan verspätet auf dem Weg zurück nach Hause sind
state - gibt den aktuellen Status wieder
wakeup - hat den Wert '1' während ein Weckprogramm dieser Bewohner-Gruppe ausgeführt wird
RESIDENTS Toolkit
Mit dem set-Kommando create können zur Vereinfachung vorkonfigurierte Konfigurationen zu RESIDENTS, ROOMMATE oder GUEST Geräten hinzugefügt werden.
Die folgenden Kommandos sind momentan verfügbar:
wakeuptimer - fügt ein Dummy Gerät mit erweiterten Funktionen als Wecker hinzu, um darauf Weck-Automationen aufzubauen.
Ein notify Gerät wird als Makro erstellt, um die eigentliche Automation auszuführen. Das Makro wird durch ein normales at-Gerät ausgelöst und kann ebenfalls angepasst werden. Die Hauptfunktion wird dabei trotzdem von einer speziellen RESIDENTS Toolkit funktion gehandhabt.
Die Zeit aktiver Wecker kann mittels + oder - relativ erhöht bzw. verringert werden. Die Angabe als +HH:MM ist auch möglich.
Die Weckfunktion kann wie folgt über Attribute beinflusst werden:
wakeupAtdevice - Backlink zum at Gerät (notwendig)
wakeupDays - Makro nur an bestimmten Tagen auslösen. Mon=1,Di=2,Mi=3,Do=4,Fr=5,Sa=6,So=0 (optional)
wakeupDefaultTime - Stellt die Weckzeit nach dem auslösen zurück auf diesen Standardwert (optional)
wakeupEnforced - Forciertes wecken (optional; 0=nein, 1=ja, 2=wenn Weckzeit ungleich wakeupDefaultTime, 3=wenn Weckzeit früher ist als wakeupDefaultTime)
wakeupHolidays - Makro u.U. an Feiertagen oder Nicht-Feiertagen ausführen (optional; andHoliday=an Feiertagen ggf. zusammen mit wakeupDays, orHoliday=an Feiertagen unabhängig von wakeupDays, andNoHoliday=an Nicht-Feiertagen ggf. zusammen mit wakeupDays, orNoHoliday=an Nicht-Feiertagen unabhängig von wakeupDays)
wakeupMacro - Name des notify Makro Gerätes (notwendig)
wakeupOffset - Wert in Minuten, die das Makro früher ausgelöst werden soll, z.B. bei komplexen Weckprogrammen über einen Zeitraum von 30 Minuten (Standard ist 0)
wakeupResetSwitcher - das DUMMY Device, welches zum schnellen ein/aus schalten der Resetfunktion verwendet wird (optional, Device wird automatisch angelegt)
wakeupResetdays - sofern wakeupDefaultTime gesetzt ist, kann der Reset hier auf betimmte Tage begrenzt werden. Mon=1,Di=2,Mi=3,Do=4,Fr=5,Sa=6,So=0 (optional)
wakeupUserdevice - Backlink zum RESIDENTS, ROOMMATE oder GUEST Gerät, um dessen Status zu prüfen (notwendig)
wakeupWaitPeriod - Schwelle der Wartezeit in Minuten bis das Weckprogramm erneut ausgeführt werden kann, z.B. wenn manuell eine frühere Weckzeit gesetzt wurde als normal während wakeupDefaultTime verwendet wird. Greift nicht, wenn die Weckzeit während dieser Zeit geändert wurde; Standard ist 360 Minuten / 6h (optional)
Dieses modul verbindet auf einfache Art separate FHEM isnatllationen.
Man kann damit einfache Befehle an andere Installationen sendne oder automatisch senden lassen.
Define
define <Name> RFHEM <hostname[:port]> <[pw]>
define remotePI RFHEM christian-pi test123
Set
set <Name> cmd <fhem befehl>
set remotePI cmd set lampe on
Attribute
RFHEMdevs
Eine durch Komma getrennte Liste von Geräten.
Alle Events dieser Geräte werden autom. an die entfernte Installation gesendet. Auf der entfernten Seite muss es das Gerät mit selben Namen geben (zb ein Dummy).
RFHEMevents
Eine durch Komma getrennte Liste von Events.
Alle diese Events ( der Geräte aus RFHEMdevs) werden autom. an die entfernte Installation gesendet
Man kann dieses Modul zb auch in verbindung mit notify nutzen:
define <rr_FirstName> ROOMMATE [<Device Name(n) der Bewohnergruppe(n)>]
Stellt ein spezielles virtuelles Device bereit, welches einen Mitbewohner repräsentiert.
Basierend auf dem aktuellen Status und anderen Readings können andere Aktionen innerhalb von FHEM angestoßen werden.
Wird vom übergeordneten Modul RESIDENTS verwendet, kann aber auch einzeln benutzt werden.
Bei Mitgliedschaft mehrerer Bewohnergruppen werden diese durch Komma getrennt angegeben (siehe Beispiel unten).
Beispiele:
# Einzeln
define rr_Manfred ROOMMATE
# Typisches Gruppenmitglied
define rr_Manfred ROOMMATE rgr_Residents # um Mitglied der Gruppe rgr_Residents zu sein
# Mitglied in mehreren Gruppen
define rr_Manfred ROOMMATE rgr_Residents,rgr_Parents # um Mitglied der Gruppen rgr_Residents und rgr_Parents zu sein
location - setzt das Reading 'location'; siehe auch Attribut rr_locations, um die in FHEMWEB angezeigte Liste anzupassen
mood - setzt das Reading 'mood'; siehe auch Attribut rr_moods, um die in FHEMWEB angezeigte Liste anzupassen
state home,gotosleep,asleep,awoken,absent,gone wechselt den Status; siehe auch Attribut rr_states, um die in FHEMWEB angezeigte Liste anzupassen
create
locationMap fügt ein vorkonfiguriertes weblink Device hinzu, welches eine Google Map anzeigt, sofern die Readings locationLat+locationLong vorhanden sind.
wakeuptimer fügt diverse Vorkonfigurationen auf Basis von RESIDENTS Toolkit hinzu. Siehe separate Sektion in der RESIDENTS Modul Kommandoreferenz.
Hinweis: Sofern der Zugriff auf administrative set-Kommandos (-> create) eingeschränkt werden soll, kann in einer FHEMWEB Instanz das Attribut allowedCommands ähnlich wie 'set,set-user' erweitert werden.
Die Zeichenfolge 'set-user' stellt dabei sicher, dass beim Zugriff auf FHEM über diese FHEMWEB Instanz nur nicht-administrative set-Kommandos ausgeführt werden können.
Mögliche Status und ihre Bedeutung
Dieses Modul unterscheidet 6 verschiedene Status:
home - Mitbewohner ist zu Hause und wach
gotosleep - Mitbewohner ist auf dem Weg ins Bett
asleep - Mitbewohner schläft
awoken - Mitbewohner ist gerade aufgewacht
absent - Mitbewohner ist momentan nicht zu Hause, wird aber bald zurück sein
gone - Mitbewohner ist für längere Zeit verreist
Zusammenhang zwischen Anwesenheit/Presence und Aufenthaltsort/Location
Unter bestimmten Umständen führt der Wechsel des Status auch zu einer Änderung des Readings 'location'.
Wannimmer die Anwesenheit (bzw. das Reading 'presence') von 'absent' auf 'present' wechselt, wird 'location' auf 'home' gesetzt. Sofern das Attribut rr_locationHome gesetzt ist, wird die erste Lokation daraus anstelle von 'home' verwendet.
Wannimmer die Anwesenheit (bzw. das Reading 'presence') von 'present' auf 'absent' wechselt, wird 'location' auf 'underway' gesetzt. Sofern das Attribut rr_locationUnderway gesetzt ist, wird die erste Lokation daraus anstelle von 'underway' verwendet.
Auto-Status 'gone'
Immer wenn ein Mitbewohner auf 'absent' gesetzt wird, wird ein Zähler gestartet, der nach einer bestimmten Zeit den Status automatisch auf 'gone' setzt.
Der Standard ist nach 36 Stunden.
Dieses Verhalten kann über das Attribut rr_autoGoneAfter angepasst werden.
Anwesenheit mit anderen ROOMMATE oder GUEST Devices synchronisieren
Wenn Sie immer zusammen mit anderen Mitbewohnern oder Gästen das Haus verlassen oder erreichen, können Sie ihren Status ganz einfach auf andere Mitbewohner übertragen.
Durch das Setzen des Attributs rr_PassPresenceTo folgen die dort aufgeführten Mitbewohner ihren eigenen Statusänderungen nach 'home', 'absent' oder 'gone'.
Bitte beachten, dass Mitbewohner mit dem aktuellen Status 'gone' oder 'none' (im Falle von Gästen) nicht beachtet werden.
Zusammenhang zwischen Aufenthaltsort/Location und Anwesenheit/Presence
Unter bestimmten Umständen hat der Wechsel des Readings 'location' auch einen Einfluss auf den tatsächlichen Status.
Immer wenn eine Lokation mit dem Namen 'home' gesetzt wird, wird auch der Status auf 'home' gesetzt, sofern die Anwesenheit bis dahin noch auf 'absent' stand. Sofern das Attribut rr_locationHome gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'home' aus.
Immer wenn eine Lokation mit dem Namen 'underway' gesetzt wird, wird auch der Status auf 'absent' gesetzt, sofern die Anwesenheit bis dahin noch auf 'present' stand. Sofern das Attribut rr_locationUnderway gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'underway' aus. Diese Lokationen werden auch nicht in das Reading 'lastLocation' übertragen.
Immer wenn eine Lokation mit dem Namen 'wayhome' gesetzt wird, wird das Reading 'wayhome' auf '1' gesetzt, sofern die Anwesenheit zu diesem Zeitpunkt 'absent' ist. Sofern das Attribut rr_locationWayhome gesetzt wurde, so führt das VERLASSEN einer dort aufgeführten Lokation ebenfalls dazu, dass das Reading 'wayhome' auf '1' gesetzt wird. Es gibt also 2 Möglichkeiten den Nach-Hause-Weg-Indikator zu beeinflussen (implizit und explizit).
Die Ankunft zu Hause setzt den Wert von 'wayhome' zurück auf '0'.
Wenn Sie auch das GEOFANCY Modul verwenden, können Sie das Reading 'location' ganz einfach über GEOFANCY Ereignisse aktualisieren lassen. Definieren Sie dazu einen NOTIFY-Trigger wie diesen:
define n_rr_Manfred.location notify geofancy:currLoc_Manfred.* set rr_Manfred:FILTER=location!=$EVTPART1 location $EVTPART1
Durch das Anlegen von Geofencing-Zonen mit den Namen 'home' und 'wayhome' in der iOS App werden zukünftig automatisch alle Statusänderungen wie oben beschrieben durchgeführt.
Attribute
rr_autoGoneAfter - Anzahl der Stunden, nach denen sich der Status automatisch auf 'gone' ändert, wenn der aktuellen Status 'absent' ist; Standard ist 36 Stunden
rr_geofenceUUIDs - Mit Komma getrennte Liste von Geräte UUIDs, die ihren Standort über GEOFANCY aktualisieren. Vermeidet zusätzliche notify/DOIF/watchdog Geräte und kann als Ersatz für das GEOFANCY attribute devAlias dienen. (hier ehr als eine UUID/Device zu hinterlegen ist eher keine gute Idee da die Lokation dann womöglich anfängt zu springen)
rr_lang - überschreibt globale Spracheinstellung; hilft beim setzen von Device Attributen, um FHEMWEB Anzeigetext zu übersetzen
rr_locationHome - hiermit übereinstimmende Lokationen werden als zu Hause gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'home'
rr_locationUnderway - hiermit übereinstimmende Lokationen werden als unterwegs gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'underway'
rr_locationWayhome - das Verlassen einer Lokation, die hier aufgeführt ist, lässt das Reading 'wayhome' auf '1' setzen; mehrere Einträge durch Leerzeichen trennen; Standard ist "wayhome"
rr_locations - Liste der in FHEMWEB anzuzeigenden Lokationsauswahlliste in FHEMWEB; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
rr_moodDefault - die Stimmung, die nach Ankunft zu Hause oder nach dem Statuswechsel von 'awoken' auf 'home' gesetzt werden soll
rr_moodSleepy - die Stimmung, die nach Statuswechsel zu 'gotosleep' oder 'awoken' gesetzt werden soll
rr_moods - Liste von Stimmungen, wie sie in FHEMWEB angezeigt werden sollen; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
rr_noDuration - deaktiviert die kontinuierliche, nicht Event-basierte Berechnung der Zeitspannen (siehe Readings durTimer*)
rr_passPresenceTo - synchronisiere die Anwesenheit mit anderen ROOMMATE oder GUEST Devices; mehrere Devices durch Leerzeichen trennen
rr_presenceDevices - übernehmen des presence Status von einem anderen FHEM Device. Bei mehreren Devices diese mit Komma trennen, um ein Update des ROOMMATE Devices auszulösen, sobald ALLE Devices entweder absent oder present sind. Optional kann auch durch : abgetrennt ein Reading Name angegeben werden, ansonsten werden die Readings presence und state berücksichtigt.
rr_realname - wo immer ROOMMATE den richtigen Namen verwenden möchte nutzt es den Wert des Attributs alias oder group; Standard ist group
rr_showAllStates - die Status 'asleep' und 'awoken' sind normalerweise nicht immer sichtbar, um einen einfachen Zubettgeh-Prozess über das devStateIcon Attribut zu ermöglichen; Standard ist 0
rr_states - Liste aller in FHEMWEB angezeigter Status; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Status führen zu Fehlern
rr_wakeupDevice - Referenz zu versklavten DUMMY Geräten, welche als Wecker benutzt werden (Teil von RESIDENTS Toolkit's wakeuptimer)
Generierte Readings/Events:
durTimerAbsence - Timer, der die Dauer der Abwesenheit in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
durTimerAbsence_cr - Timer, der die Dauer der Abwesenheit in Computer lesbarem Format anzeigt (Minuten)
durTimerPresence - Timer, der die Dauer der Anwesenheit in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
durTimerPresence_cr - Timer, der die Dauer der Anwesenheit in Computer lesbarem Format anzeigt (Minuten)
durTimerSleep - Timer, der die Schlafdauer in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
durTimerSleep_cr - Timer, der die Schlafdauer in Computer lesbarem Format anzeigt (Minuten)
lastArrival - Zeitstempel der letzten Ankunft zu Hause
lastAwake - Zeitstempel des Endes des letzten Schlafzyklus
lastDeparture - Zeitstempel des letzten Verlassens des Zuhauses
lastDurAbsence - Dauer der letzten Abwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
lastDurAbsence_cr - Dauer der letzten Abwesenheit in Computer lesbarem Format (Minuten)
lastDurPresence - Dauer der letzten Anwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
lastDurPresence_cr - Dauer der letzten Anwesenheit in Computer lesbarem Format (Minuten)
lastDurSleep - Dauer des letzten Schlafzyklus in normal lesbarem Format (Stunden:Minuten:Sekunden)
lastDurSleep_cr - Dauer des letzten Schlafzyklus in Computer lesbarem Format (Minuten)
lastLocation - der vorherige Aufenthaltsort
lastMood - die vorherige Stimmung
lastSleep - Zeitstempel des Beginns des letzten Schlafzyklus
lastState - der vorherige Status
lastWakeup - Zeit der letzten Wake-up Timer Ausführing
lastWakeupDev - Device Name des zuletzt verwendeten Wake-up Timers
location - der aktuelle Aufenthaltsort
mood - die aktuelle Stimmung
nextWakeup - Zeit der nächsten Wake-up Timer Ausführung
nextWakeupDev - Device Name des als nächstes ausgefährten Wake-up Timer
presence - gibt den zu Hause Status in Abhängigkeit des Readings 'state' wieder (kann 'present' oder 'absent' sein)
state - gibt den aktuellen Status wieder
wakeup - hat den Wert '1' während ein Weckprogramm dieses Bewohners ausgeführt wird
wayhome - abhängig vom aktullen Aufenthaltsort, kann der Wert '1' werden, wenn die Person auf dem weg zurück nach Hause ist
Ermöglicht den Zugriff auf die I2C Schnittstellen des Raspberry Pi, BBB, Cubie über logische Module. Register von I2C IC's können auch direkt gelesen und geschrieben werden.
Dieses Modul funktioniert grunsätzlich auf allen Linux Systemen, die /dev/i2c-x bereitstellen.
Vorbereitung:
I2C Kernelmodule laden (chose one of the following options):
I2C Kernelmodule laden:
modules Datei öffnen
sudo nano /etc/modules
folgendes einfügen
i2c-dev
i2c-bcm2708
Seit Kernel 3.18.x auf dem Raspberry Pi und evtl. auch auf anderen Systemen ist der "Device tree support" implementiert und standardmäßig aktiviert.
Um I2C Unterstützung zu aktivieren muß
device_tree_param=i2c0=on,i2c1=on
zur /boot/config.txt hinzu gefügt werden.
Wenn nur einer der Busse genutzt wird, kann der andere einfach aus der Zeile entfernt werden.
Bei Raspbian Images seit 2015 kann der I2C Bus einfach über sudo raspi-config aktiviert werden. Die Parameter werden automatisch in die /boot/config.txt eingetragen.
Neustart
Eine der folgenden drei Möglichkeiten wählen um dem FHEM User Zugriff auf /dev/i2c-* zu geben:
Folgende Zeilen entweder in die Datei /etc/init.d/fhem vor perl fhem.pl in start, oder in die Datei /etc/rc.local eingefügen:
sudo chown fhem /dev/i2c-*
sudo chgrp dialout /dev/i2c-*
sudo chmod +t /dev/i2c-*
sudo chmod 660 /dev/i2c-*
Für das Raspberry Pi kann alternativ das gpio Utility der WiringPi Bibliothek benutzt werden um FHEM Schreibrechte auf die I2C Schnittstelle zu bekommen.
WiringPi Installation ist hier beschrieben: RPI_GPIO
Das gpio Utility wird, wenn vorhanden, automatisch verwendet
Wichtig: um den I2C-0 am P5 Stecker des Raspberry nutzen zu können muss das Attribut swap_i2c0 verwendet werden.
Optional: Hardwarezugriff via IOCTL wird standardmäßig genutzt (EMPFOHLEN), wenn Device::SMBus nicht installiert ist
Soll der Hardwarezugriff über das Perl Modul Device::SMBus erfolgen sind diese Schritte notwendig:
Nur für Raspbian Nutzer
Um I2C-0 am P5 Stecker auf Raspberry Pi modell B mit neueren Raspbian Versionen zu nutzen, welche auch das Raspberry Pi model B+ unterstützen, muss folgende Zeile in die /boot/cmdline.txt eingefügt werden:
bcm2708.vc_i2c_override=1
Define
define <name> RPII2C <I2C Bus Number>
Die <I2C Bus Number> ist die Nummer des I2C Bus an den die I2C IC's angeschlossen werden
Set
Schreibe ein Byte (oder auch mehrere nacheinander) direkt auf ein I2C device (manche I2C Module sind so einfach, das es nicht einmal mehrere Register gibt): set <name> writeByte <I2C Address> <value>
Schreibe n-bytes auf einen Registerbereich (als Folge von Einzelbefehlen), beginnend mit dem angegebenen Register: set <name> writeByteReg <I2C Address> <Register Address> <value> [<value> [..]]
Schreibe n-bytes auf ein I2C device (als Blockoperation): set <name> writeBlock <I2C Address> <value> [<value> [..]]
Schreibe n-bytes auf einen Registerbereich (als Blockoperation), beginnend mit dem angegebenen Register: set <name> writeBlockReg <I2C Address> <Register Address> <value> [<value> [..]]
Beispiele:
Schreibe 0xAA zu Modul mit I2C Addresse 0x60 set test1 writeByte 60 AA
Schreibe 0xAA zu Register 0x01 des Moduls mit der I2C Adresse 0x6E set test1 writeByteReg 6E 01 AA
Schreibe 0xAA zu Register 0x01 des Moduls mit der I2C Adresse 0x6E, schreibe danach 0x55 in das Register 0x02 als einzelne Befehle set test1 writeByteReg 6E 01 AA 55
Schreibe 0xA4 zu Register 0x03, 0x00 zu Register 0x04 und 0xDA zu Register 0x05 des Moduls mit der I2C Adresse 0x60 zusammen als ein Blockbefehl set test1 writeBlockReg 60 03 A4 00 DA
Get
Auslesen der Registerinhalte des I2C Moduls: get <name> read <I2C Address> [<Register Address> [<number of registers>]]
Blockweises Auslesen des I2C Moduls (ohne separate Register): get <name> readblock <I2C Address> [<number of registers>]
Blockweises Auslesen der Registerinhalte des I2C Moduls: get <name> readblockreg <I2C Address> <Register Address> [<number of registers>]
Beispiele:
Lese Byte vom Modul mit der I2C Adresse 0x60 get test1 read 60
Lese den Inhalt des Registers 0x01 vom Modul mit der I2C Adresse 0x6E. get test1 read 6E 01 AA 55
Lese den Inhalt des Registerbereichs 0x03 bis 0x06 vom Modul mit der I2C Adresse 0x60. get test1 read 60 03 4
Attribute
swap_i2c0
Umschalten von I2C-0 des Raspberry Pi Rev. B von J5 auf P5
Dieses Attribut ist nur für das Raspberry Pi vorgesehen und benötigt das gpio utility wie unter dem Punkt Vorbereitung beschrieben.
Standard: keiner, gültige Werte: on, off
useHWLib
Ändern der Methode des Hardwarezugriffs.
Dieses Attribut existiert nur, wenn beide Zugriffsmethoden verfügbar sind
Standard: IOCTL, gültige Werte: IOCTL, SMBus
Das Raspberry Pi ermöglicht direkten Zugriff zu einigen GPIO's über den Pfostenstecker P1 (und P5 bei V2). Die Steckerbelegung ist in den Tabellen unter Define zu finden.
Dieses Modul ermöglicht es, die herausgeführten GPIO's direkt als Ein- und Ausgang zu benutzen. Die Eingänge können zyklisch abgefragt werden oder auch sofort bei Pegelwechsel gesetzt werden.
Neben dem Raspberry Pi können auch die GPIO's von BBB, Cubie, Banana Pi und jedem Linuxsystem, das diese im Userspace zugägig macht, genutzt werden. Wichtig: Niemals Spannung an einen GPIO anlegen, der als Ausgang eingestellt ist! Die interne Logik der GPIO's arbeitet mit 3,3V. Ein überschreiten der 3,3V zerstört den GPIO und vielleicht auch den ganzen Prozessor!
Vorbereitung:
Auf GPIO Pins wird im Modul über sysfs zugegriffen. Die Dateien befinden sich unter /system/class/gpio und sind in der aktuellen Raspbian Distribution (ab Jan 2014) in der Gruppe gpio. Es funktioniert auch mit der Jessie Version. Allerdings NICHT wenn ein Kernelupgrade durchgeführt wird
Nach dem ausführen folgender Befehle sind die GPIO's von PRI_GPIO aus nutzbar:
sudo adduser fhem gpio
sudo reboot
Wenn das Attribut pud_resistor verwendet werden soll und für ältere Raspbian Distributionen, muss zusätzlich das gpio Tool der WiringPi
Bibliothek installiert werden, um den internen Pullup/down Widerstand zu aktivieren, bzw. GPIO's zu exportieren und die korrekten Nutzerrechte zu setzen (für den zweiten Fall funktioniert das active_low Attribut nicht).
Installation WiringPi:
Für Linux Systeme bei denen der Zugriff auf /system/class/gpio nur mit root Rechten erfolgen kann, müssen die GPIO's vor FHEM start exportiert und von den Rechten her angepasst werden.
Dazu in die /etc/rc.local folgendes einfügen (Beispiel für GPIO22 und 23):
readval aktualisiert das reading Pinlevel und, wenn attr toggletostate nicht gesetzt ist, auch state
Beispiele:
set Pin12 off set Pin11,Pin12 on
Get
get <name>
Gibt "high" oder "low" entsprechend dem aktuellen Pinstatus zurück und schreibt den Wert auch in das reading Pinlevel
Attributes
direction
Setzt den GPIO auf Ein- oder Ausgang.
Standard: input, gültige Werte: input, output
active_low
Invertieren des logischen Wertes
Standard: off, gültige Werte: on, off
interrupt kann nur gewählt werden, wenn der GPIO als Eingang konfiguriert ist
Aktiviert Flankenerkennung für den GPIO
bei jedem interrupt Ereignis werden die readings Pinlevel und state aktualisiert
Standard: none, gültige Werte: none, falling, rising, both
Bei "both" wird ein reading Longpress angelegt, welches auf on gesetzt wird solange der Pin länger als 1s gedrückt wird
Bei "falling" und "rising" wird ein reading Toggle angelegt, das bei jedem Interruptereignis toggelt und das Reading Counter, das bei jedem Ereignis um 1 hochzählt
poll_interval
Fragt den Zustand des GPIO regelmäßig ensprechend des eingestellten Wertes in Minuten ab
Standard: -, gültige Werte: Dezimalzahl
toggletostate Funktioniert nur bei auf falling oder rising gesetztem Attribut interrupt
Wenn auf "yes" gestellt wird bei jedem Triggerereignis das state reading invertiert
Standard: no, gültige Werte: yes, no
pud_resistor
Interner Pullup/down Widerstand Funktioniert aussließlich mit installiertem gpio Tool der WiringPi Bibliothek.
Standard: -, gültige Werte: off, up, down
debounce_in_ms
Wartezeit in ms bis nach ausgelöstem Interrupt der entsprechende Pin abgefragt wird. Kann zum entprellen von mechanischen Schaltern verwendet werden
Standard: 0, gültige Werte: Dezimalzahl
unexportpin
Führe unexport über /sys/class/gpio/unexport aus wenn die Pin-Definition gelöscht wird (z.B. durch rereadcfg, delete,...)
Standard: yes, , gültige Werte: yes, no
restoreOnStartup
Wiederherstellen der Portzustände nach Neustart
Standard: last, gültige Werte: last, on, off, no
longpressinterval Funktioniert nur bei auf both gesetztem Attribut interrupt
Zeit in Sekunden, die ein GPIO auf high verweilen muss, bevor das Reading longpress auf on gesetzt wird
Standard: 1, gültige Werte: 0.1 - 10
Robonect ist ein Nachr¨stmodul für automower, die auf der Husky-G3-Steuerung basieren. Es wurde von Fabian H. entwickelt und kann unter www.robonect.de bezogen werden. Dieses Modul gibt Euch Zugriff auf die nötigsten Kommandos. Dieses Modul benötigt libjson-perl. Bitte NICHT VERGESSEN zu installieren!
Define
define <name> Robonect <IP-Adresse oder Name>
Mit gesetztem Winterschlaf wird die Kommunikation zum Mäher unterbunden.
Die Zugangsinformationen können im Klartext bei der Definition angegeben werden. Wahlweise auch per Attribut. Standardmäßig wird der Status vom RObonect alle 90s aktualisiert.
auto
Dies versetzt den Mäher in den Automatikmodus. Der Mäher reagiert nur auf den internen Timer, bis eine andere Betriebsart gewählt wird. Der Mäher kann mit Stop jederzeit
angehalten werden. Es wird erst wieder begonnen zu mähen, wenn der Timer (wieder) ein aktives Fenster hat UND Start gesendet wurde.
manuell
Dies versetzt den Mäher in den manuellen modus. Der interne Timer wird nicht beachtet. Der Mäher reagiert nur auf Start oder Stopp Befehle von FHEM.
home
Dies schickt den Mäher direkt nach hause. Weiteres mähen wird verhindert, bis auf manuell oder auto umgeschalten wird.
feierabend
Dies schickt den Mäher für den aktuellen Timerslot direkt nach hause. Beim nächsten aktiven Timerslot wird weitergemäht.
start
Startet den Mähvorgang im manuellen Modus oder im Automatikmodus bei aktivem Zeitslot.
stop
Beendet den Mähvorgang. Der Mäher fährt nicht nach Hause und beginnt nicht wieder zu mähen. Er bleibt stehen, bis die Batterie leer ist. Nur mit Bedacht benutzen!
maehauftrag
Hiermit wird ein (einmaliger) Auftrag an den Mäher abgesetzt. Es können beliebig viele Parameter mitgegeben werden. So kann zum Beispiel der Modus nach dem Auftrag,
sowie Start- oder Stoppzeit beeinflusst werden.
Die Parameter müssen wie in der API des Robonect beschrieben lauten. Es erfolgt keine syntaktische Prüfung!
Beispiel:
Startzeit 15 Uhr, Dauer 120 Minuten, keinen Fernstartpunkt verwenden, keine Betriebsartenumschaltung nach Auftragsende
set myMower maehauftrag start=15:00 duration=120 remotestart=0 after=4
winterschlaf <on, off>
Wenn aktiviert, wird das Pollen unterbunden. Empfiehlt sich für die Winterpause.
user <user>
Alternativ zur Angabe per Argument kann per Set-Befehl der Benutzername zur Anmeldung am Robonect hier einmalig eingegeben werden. Er wird im Klartext in FhemUtils oder der DB gespeichert.
Wenn angegeben, werden die Attribute zur Authentisierung ignoriert.
password <password>
Alternativ zur Angabe per Argument kann per Set-Befehl das Passwort zur Anmeldung am Robonect hier einmalig eingegeben werden. Er wird im Klartext in FhemUtils oder der DB gespeichert.
Wenn angegeben, werden die Attribute zur Authentisierung ignoriert.
Get
Get
status
Holt den aktuellen Status des Mähers. Wird normalerweise nicht benötigt, da automatisch gepolled wird.
health
Mit diesem Kommando können detailliertere Informationen vom Mäher gelesen werden. Beispielsweise sind einge Spannungen und Umweltbedingungen verfügbar.
Es werden NICHT ALLE MÄHER UNTERSTÜTZT!!!
Wenn das entsprechende Attribut gesetzt ist, wird health analog status gepolled.
This one gets more detailed information - like voltages and temperatures. It is NOT SUPPORTED BY ALL MOWERS!!!
If enabled via attribute, health is polled accordingly status.
Hier kann ein Link auf ein credentials-file angegeben werden. Die Zugansinformationen werden dann aus der Datei geholt. Dieser Mechanismus überschreibt basicAuth.
basicAuth
Hier werden die Zugangsinformationen entweder im Klartext oder base-64-codiert übergeben. Base64-encoder gibts bei google.
Hier kann das polling-interval in Sekunden angegeben werden. Default sind 90s.
timeout
Für das holen der Daten per Wlan kann hier ein Timeout angegeben werden. Default sind 4s.
useHealth
Wenn dieses Attribut auf 1 gesetzt wird, wird der health-status analog dem normalen Status gepolled.
Bitte beachtet, dass NICHT ALLE MÄHER UNTERSTÜTZT WERDEN!
Wenn die Funktion nicht gegeben zu sein scheint, bitte den LAST_COMM_STATUS und das Logfile beachten.
This module connects a SIEMENS PLC (S7,S5,SIEMENS Logo!). The TCP communication (S7, Siemens LOGO!) module is based on settimino (http://settimino.sourceforge.net). The serial Communication is based on a libnodave portation.
You can found a german wiki here: httl://www.fhemwiki.de/wiki/S7
For the communication the following modules have been implemented:
S7 … sets up the communication channel to the PLC
S7_ARead … Is used for reading integer Values from the PLC
S7_AWrite … Is used for write integer Values to the PLC
S7_DRead … Is used for read bits
S7_DWrite … Is used for writing bits.
Reading work flow:
The S7 module reads periodically the configured DB areas from the PLC and stores the data in an internal buffer. Then all reading client modules are informed. Each client module extracts his data and the corresponding readings are set. Writing work flow:
At the S7 module you need to configure the PLC writing target. Also the S7 module holds a writing buffer. Which contains a master copy of the data needs to send.
(Note: after configuration of the writing area a copy from the PLC is read and used as initial fill-up of the writing buffer)
Note: The S7 module will send always the whole data block to the PLC. When data on the clients modules is set then the client module updates the internal writing buffer on the S7 module and triggers the writing to the PLC.
PLC_address … IP address of the S7 PLC (For S5 see below)
rack … rack of the PLC
slot … slot of the PLC
Interval … Intervall how often the modul should check if a reading is required
Note: For Siemens logo you should use a alternative (more simply configuration method):
define logo S7 LOGO7 10.0.0.241
Note: For Siemens S5 you must use a alternative (more simply configuration method):
define logo S7 S5 /dev/tty1 in this case the PLC_address is the serial port number
Attr
The following attributes are supported:
MaxMessageLength
receiveTimeoutMs
Intervall
MaxMessageLength ... restricts the packet length if lower than the negioated PDULength. This could be used to increate the processing speed. 2 small packages may be smaler than one large package
receiveTimeoutMs ... timeout in ms for TCP receiving packages. Default Value 500ms.
This module is a logical module of the physical module S7.
This module provides analog data (signed / unsigned integer Values).
Note: you have to configure a PLC reading at the physical module (S7) first.
This module is a logical module of the physical module S7.
This module provides digital data (ON/OFF).
Note: you have to configure a PLC reading at the physical modul (S7) first.
Neu empfangene Sensoren werden in FHEM per autocreate angelegt.
Define
Die empfangenen Sensoren werden automatisch angelegt.
Die ID der angelgten Sensoren ist entweder der Kanal des Sensors, oder wenn das Attribut longid gesetzt ist, dann wird die ID aus dem Kanal und einer Reihe von Bits erzeugt, welche der Sensor beim Einschalten zufällig vergibt.
Das SD_WS07 Modul verarbeitet von einem IO Geraet (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur-Sensoren.
Unterstützte Modelle:
Eurochon EAS800z
Technoline WS6750/TX70DTH
TFA 30320902
FreeTec Aussenmodul fuer Wetterstation NC-7344
Neu empfangene Sensoren werden in FHEM per autocreate angelegt.
Define
Die empfangenen Sensoren werden automatisch angelegt.
Die ID der angelegten Sensoren ist entweder der Kanal des Sensors, oder wenn das Attribut longid gesetzt ist, dann wird die ID aus dem Kanal und einer Reihe von Bits erzeugt, welche der Sensor beim Einschalten zufällig vergibt.
Generierte Readings:
state: (T: H:)
temperature: (°C)
humidity: (Luftfeuchte (10-99)
battery: (low oder ok)
channel: (Der Sensor Kanal)
Attribute
correction-temp
Damit kann die Temperatur korrigiert werden. Z.B. mit 10 wird eine um 10 Grad höhere Temperatur angezeigt.
correction-hum
Damit kann die Luftfeuchtigkeit korrigiert werden.
Das SD_WS09 Module verarbeitet von einem IO Gerät (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur-Sensoren.
Perl-Modul Digest::CRC erforderlich.
cpan install Digest::CRC oder auch
sudo apt-get install libdigest-crc-perl
Unterstütze Modelle:
WS-0101 --> Model: WH1080
TFA 30.3189 / WH1080 --> Model: WH1080
1073 (WS1080) --> Model: WH1080
WH3080 --> Model: WH1080
CTW600 --> Model: CTW600
Neu empfangene Sensoren werden in FHEM per autocreate angelegt.
Define
Die empfangenen Sensoren werden automatisch angelegt.
Die ID der angelegten Sensoren wird nach jedem Batteriewechsel geändert, welche der Sensor beim Einschalten zufällig vergibt.
CRC Checksumme wird zur Zeit noch nicht überprüft, deshalb werden Sensoren bei denen die Luftfeuchte < 0 oder > 100 ist, nicht angelegt.
windSpeed/windgust (Einheit siehe Unit_of_Wind) and windDirection (N-O-S-W)
Rain (mm)
windDirectionAverage
Als Ergebnis wird die Windrichtung zurück geliefert, die aus dem aktuellen und
vergangenen Werten über eine Art exponentiellen Mittelwert berechnet werden.
Dabei wird zusätzlich die jeweilige Windgeschwindigkeit mit berücksichtigt (höhere Geschwindigkeit
bedeutet höhere Gewichtung).
windKorrektur
Korrigiert die Nord-Ausrichtung des Windrichtungsmessers, wenn dieser nicht richtig nach Norden ausgerichtet ist.
-3,-2,-1,0,1,2,3
Unit_of_Wind
Hiermit wird der Einheit eingestellt und im State die entsprechenden Werte + Einheit angezeigt.
m/s,km/h,ft/s,mph,bft,knot
WindDirAverageTime
default ist 600s, Zeitspanne die für die Berechung berücksichtig werden soll
WindDirAverageMinSpeed
da bei sehr geringer Windgeschwindigkeit die Windrichtung üblicherweise nicht
eindeutig ist, kann mit minspeed ein Schwellwert angegeben werden
Ist die (gewichtetete) mittlere Geschwindigkeit < minspeed wird undef zurück geliefert
WindDirAverageDecay
1 -> alle Werte werden gleich gewichtet
0 -> nur der aktuelle Wert wird verwendet.
in der Praxis wird man Werte so um 0.75 nehmen
WS09_CRCAUS
Wird im Signalduino-Modul (00_SIGNALduino.pm) gesetzt
0: CRC-Prüfung bei WH1080 CRC-Summe = 0
2: CRC-Summe = 49 (x031) bei WH1080 wird als OK verarbeitet
Das SD_WS_Maverick Module verarbeitet von einem IO Geraet (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur-Sensoren.
Unterstützte Modelle:
Maverick 732/733
Neu empfangene Sensoren werden in FHEM per autocreate angelegt (sofern autocreate in global aktiv ist).
Define
Die empfangenen Sensoren werden automatisch angelegt.
Da das Maverick bei jedem Start eine neue zufällige ID erzeugt kann das Gerät nicht mit dem fhem-device gekoppelt werden.
Das bedeutet, dass es nicht möglich ist in fhem zwei Mavericks parallel zu betreiben.
Generierte Readings:
State (Food: BBQ: )
temp-food (°C)
temp-bbq (°C)
Sensor-1-food_state (connected, disconnected oder inactiv)
Sensor-2-bbq_state (connected, disconnected oder inactiv)
messageType (sync bei Start oder resync, sonst normal)
checksum (experimentell)
Attribute
inactivityinterval
Das Interval nach dem Sensor-1-food_state und/oder Sensor-2-bbq_state auf inactiv gesetzt werden, wenn keine Signale mehr empfangen werden.
Hilfreich zum erkennen einer leeren Batterie oder eines defekten Termperaturfühlers. default: 360
Das SIGNALduino_un module ist ein Hilfsmodul um unbekannte Nachrichten debuggen und analysieren zu koennen.
Das Modul legt keinerlei Geräte oder ähnliches an.
Definedefine <name> SIGNALduino_un <code>
Es ist moeglich ein Geraet manuell zu definieren, aber damit passiert ueberhaupt nichts.
Autocreate wird auch keinerlei Geraete aus diesem Modul anlegen.
Die einzgeste Funktion dieses Modules ist, ab Verbose 4 Logmeldungen über die Empfangene Nachricht ins Log zu schreiben. Dabei kann man sich leider nicht darauf verlassen, dass die Nachricht korrekt dekodiert wurde.
Dieses Modul wird alle Nachrichten verarbeiten, welche von anderen Modulen nicht verarbeitet wurden.
Set
set <name> <SIP Passwort>
Speichert das Passwort des SIP Users. Ohne gespeichertes Passwort sind die set call und set listen Funktionen gesperrt !
WICHTIG : wird das SIP Device umbenannt muss dieser Befehl unbedingt wiederholt werden !
set <name> reset
Stoppt laufende listen-Prozess und initalisiert das Device.
set <name> call <nummer> [<maxtime>] [<nachricht>]
Startet einen Anruf an die angegebene Nummer.
Optional kann die maximale Zeit angegeben werden. Default ist 30.
Optional kann eine Nachricht in Form eines Audiofiles angegeben werden . Das File ist mit dem vollen Pfad oder dem relativen ab dem Verzeichnis mit fhem.pl anzugeben..
set <name> listen
Attribut sip_listen = dtmf :
Der SIP-Client wird in einen Status versetzt in dem er Anrufe annimmt. Der Ton wird als Echo zurückgespielt. Über die Eingabe von # gefolgt von 2 unterschiedlichen Zahlen und anschließendem Auflegen kann eine Zahl in das Reading dtmf übergeben werden.
Attribut sip_listen = wfp :
Der SIP-Client wird in einen Status versetzt in dem er auf Anrufe wartet. Erfolgt an Anruf an den Client, wechselt der Status zu ringing. Nun kann das Gespräch via set-Command fetch angenommen werden. Das als sip_audiofile angegebene File wird abgespielt. Anschließend wechselt der Status wieder zu listenwfp.
Attributes
sip_user
User Name des SIP-Clients. Default ist 620 (Fritzbox erstes SIP Telefon)
sip_registrar
Hostname oder IP-Addresse des SIP-Servers mit dem sich das Modul verbinden soll. (Default fritz.box)
sip_from
SIP-Client-Info. Syntax : sip:sip_user@sip_registrar Default ist sip:620@fritz.box
sip_ip
Die IP-Addresse von FHEM im Heimnetz. Solange das Attribut nicht gesetzt ist versucht das Modul diese beim Start zu ermitteln.
sip_port
Optinale Portnummer die vom Modul benutzt wird.
Wenn dem Attribut kein Wert zugewiesen wurde verwendet das Modul eine zufällige Portnummer zwichen 44000 und 45000
Audiofiles
Audiofiles können einfach mit dem externen Programm sox erzeugt werden :
sox <file>.wav -t raw -r 8000 -c 1 -e a-law <file>.al
Unterstützt werden nur die beiden RAW Audio Formate a-law und u-law !
Statt eines echten Audiofiles kann auch eine Text2Speech Nachricht eingetragen werden.
Bsp : attr mySIP sip_audiofile_call !Hier ist dein FHEM Server
sip_audiofile_wfp
Audiofile das nach dem Command fetch abgespielt wird.
sip_audiofile_call
Audiofile das dem Angerufenen bei set call vorgespielt wird.
sip_audiofile_dtmf
Audiofile das dem Anrufer bei listen_for_dtmf abgespielt wird.
sip_audiofile_ok
Audiofile das bei erkannter DTMF Sequenz abgespielt wird.
sip_listen (none , dtmf, wfp)
sip_ringtime
Klingelzeit für eingehende Anrufe bei listen_for_dtmf
sip_dtmf_size
1 bis 4 , default 2 Legt die Läge des erwartenden DTMF Events fest.
sip_dtmf_loop once oder loop , default once
sip_waittime
Maximale Wartezeit im Status listen_for_wfp bis das Gespräch automatisch angenommen wird.
T2S_Device
Name des Text2Speech Devices (Wird nur benötigt wenn Sprachnachrichten statt Audiofiles verwendet werden)
T2S_Timeout
Wartezeit in Sekunden wie lange maximal auf Text2Speech gewartet wird.
audo_converter sox oder ffmpeg, default sox
Ist f¨r Text2Speech unbedingt erforderlich um die mp3 Dateien in Raw Audio umzuwandeln.
Installation z.B. mit sudo apt-get install sox und noch die mp3 Unterstützung mit sudo apt-get install libsox-fmt-mp3
sip_force_interval default 300
sip_force_max default 99
phonebook default none , Dateiname des eigenen Telefonbuchs. Inhalt: zeilenweise Nr,Name
history_size default 0 , max Anzahl von Zeilen in der Ruf/Anrufer Liste
history_file default none, Dateiname der Ruf/Anrufer Liste
SISPM
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SISPM
SIS_PMS
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SIS_PMS
Definiert ein SMA Energy Meter (SMAEM), einen bidirektionalen Stromzähler, der häufig in Photovolatikanlagen der Firma SMA zum Einsatz kommt.
Sie brauchen mindest ein SMAEM in Ihrem lokalen Netzwerk oder hinter einen multicastfähigen Netz von Routern, um die Daten des SMAEM über die
Multicastgruppe 239.12.255.254 auf udp/9522 zu empfangen. Die Multicastpakete werden vom SMAEM einmal pro Sekunde ausgesendet (firmware 1.02.04.R, März 2016).
Das update interval kann über das Attribut "interval" gesetzt werden. Wenn es nicht gesetzt wird, werden updates per default alle 60 Sekunden durchgeführt.
Da das SMAEM seine Daten sekündlich aktualisiert, kann das update interval auf bis zu einer Sekunde reduziert werden. Das wird nicht empfohlen, da FHEM
sonst unter große Last gesetzt wird.
Der Parameter "disableSernoInReading" ändert die Art und Weise, wie die Readings des SMAEN bezeichnet werden: ist der Parameter false
oder nicht gesetzt, werden die Readings mit "SMAEM<serialnumber_>....." bezeichnet.
Wird der Parameter auf true gesetzt, wird das Prefix "SMAEM<serialnumber_>....." weg gelassen.
Sie können diesen Parameter auf true setzen, wenn Sie nicht mehr als ein SMAEM-Gerät in Ihrem Netzwerk haben und kürzere Namen für die Readings wünschen.
Falls Sie unsicher sind, setzen Sie diesen Parameter nicht.
Sie benötigen das Perl-Module IO::Socket::Multicast für dieses FHEM Modul. Unter Debian (basierten) System, kann dies
mittels apt-get install libio-socket-multicast-perl installiert werden.
Attribute
disableSernoInReading : unterdrückt das Prefix "SMAEM<serialnumber_>....."
feedinPrice : die individuelle Höhe der Vergütung pro Kilowattstunde
interval : Auswertungsinterval in Sekunden
disable : 1 = das Modul ist disabled
diffAccept : diffAccept legt fest, bis zu welchem Schwellenwert eine berechnete positive Werte-Differenz
zwischen zwei unmittelbar aufeinander folgenden Zählerwerten (Readings mit *_Diff) akzeptiert werden
soll (Standard ist 10).
Damit werden eventuell fehlerhafte Differenzen mit einem unverhältnismäßig hohen Differenzwert von der Berechnung
ausgeschlossen und der Messzyklus verworfen.
powerCost : die individuelle Höhe der Stromkosten pro Kilowattstunde
timeout : Einstellung timeout für Hintergrundverarbeitung (default 60s). Der timeout-Wert muss größer als das Wert von "interval" sein.
Readings
Die meisten erzeugten Readings von SMAEM sind selbsterklärend.
Es gibt allerdings Readings die einer Erläuterung bedürfen.
<Phase>_THD : (Total Harmonic Distortion) - Verzerrungs- oder Gesamtklirrfaktor - Verhältnis oder
Anteil des Gesamteffektivwert aller Oberschwingungen zum Effektivwert der
Grundschwingung. Gesamtanteil an Oberschwingungen und Störung der reinen Sinuswelle
in % bzw. Verhältnis vom nutzbaren Grundschwingungsstrom zu den
nicht nutzbaren Oberschwingungsströmen. Es ist ein Maß für Störungen. d ist 0, wenn bei
sinusförmiger Spannung ein sinusförmiger Strom fließt. Je größer d, um so mehr
Oberschwingungen sind vorhanden. Nach EN 50160/1999 z.B. darf der Wert 8 % nicht
überschreiten. Wenn eine Stromstörung so stark ist, dass sie eine Spannungsstörung
(THD) von über 5 % verursacht, deutet dies auf ein Potentialproblem hin.
Modul zur Einbindung eines SMA Wechselrichters über Speedwire (Ethernet).
Getestet mit Sunny Tripower 6000TL-20 und Sunny Island 4.4 mit Speedwire/Webconnect Piggyback.
pin: Benutzer-Passwort des SMA STP Wechselrichters. Default ist 0000. Kann über die Windows-Software "Sunny Explorer" geändert werden
hostname/ip: Hostname oder IP-Adresse des Wechselrichters (bzw. dessen Speedwire Moduls mit Ethernetanschluss)
Der Port des Wechselrichters ist 9522. Dieser Port muss in der Firewall freigeschaltet sein !
Arbeitsweise
Das Modul schickt Befehle an den Wechselrichter und überprüft, ob diese unterstützt werden.
Bei einer positiven Antwort werden die Daten gesammelt und je nach Detail-Level in den Readings dargestellt.
Sind mehr als ein Wechselrichter installiert, sind die Attribute "target-susyid" und "target-serial" entsprechend zu setzen um die korrekte
Funktion zu gewährleisten.
Die normale Betriebszeit des Wechselrichters wird in der Zeit vom Sonnenaufgang bis Sonnenuntergang angenommen. In dieser Periode werden die Wechselrichterdaten
abgefragt. Die Ermittlung von Sonnenaufgang / Sonnenuntergang wird über die Funktionen des FHEM-Moduls 99_SUNRISE_EL.pm vorgenommen. Zu diesem Zweck sollten die globalen
Attribute longitude und latitude gesetzt sein um den Standort der Anlage genau zu ermitteln. (siehe Commandref SUNRISE_EL)
Mit dem Attribut "suppressSleep" kann der Schlafmodus unterdrückt werden. Das Attribut "offset" dient dazu den effektiven Zeitpunkt des Sonnenaufgangs / Sonnenuntergangs
um den Betrag "offset" vorzuziehen (Sonnenaufgang) bzw. zu verzögern (Sonnenuntergang) und somit die Abfrageperiode des Wechselrichters zu verlängern.
Im Betriebsmodus "automatic" wird der Wechselrichter entsprechend des eingestellten Attributs "interval" abgefragt. Der Betriebsmodus kann in "manual"
umgestellt werden um eine manuelle Abfrage zu realisieren (z.B. Synchronisierung mit einem SMA Energymeter über ein Notify).
Während der Betriebszeit des Wechselrichters wird die durchschnittliche Energieerzeugung der letzten 5, 10, 15 Minuten berechnet und in den Readings
"avg_power_lastminutes_05", "avg_power_lastminutes_10" und "avg_power_lastminutes_15" ausgegeben. Hinweis: Um eine korrekte Berechnung zu
ermöglichen, sollte auch im Betriebsmodus "manual" das tatsächliche Abfrageinterval im Attribute "interval" hinterlegt werden !
Die Abfrage des Wechselrichters wird non-blocking ausgeführt. Der Timeoutwert für diesen Hintergrundprozess kann mit dem Attribut "timeout" eingestellt werden.
Get
get <name> data
Die Datenabfrage des Wechselrichters wird ausgeführt. Diese Möglichkeit ist speziell für den Betriebsmodus "manual" vorgesehen (siehe Attribut "mode").
Attribute
interval : Abfrageinterval in Sekunden
detail-level : "0" - Nur Leistung und Energie / "1" - zusätzlich Strom und Spannung / "2" - Alle Werte
disable : 1 = das Modul ist disabled
mode : automatic = die Wechselrichterwerte werden im eingestellten Interval abgefragt, manual = Abfrage nur mit "get <name> data"
offset : Zeit in Sekunden um die der Sonnenaufgang vorgezogen bzw. Sonnenuntergang verzögert wird (0 ... 7200). Dadurch wird die
effektive Aktivzeit des Moduls erweitert.
suppressSleep : der Schlafmodus (nach Sonnenuntergang, vor Sonnenaufgang) wird ausgeschaltet und der WR abgefragt.
showproctime : zeigt die für den Hintergrundprozess und die Abfrage des Wechselrichter verbrauchte Zeit.
SBFSpotComp : 1 = die Readings werden kompatibel zu SBFSpot-Ausgaben erzeugt
target-susyid : Im Falle eines Multigate kann die Ziel-SUSyID definiert werden. Ist mehr als ein Wechselrichter installiert,
muß die Wechselreichter-SUSyID gesetzt werden um den Wechselrichter der Device-Definition eindeutig zuzuweisen.
Default ist 0xFFFF (=keine Einschränkung)
target-serial : Im Falle eines Multigate kann die Ziel-Seriennummer definiert werden. Ist mehr als ein Wechselrichter installiert,
muß die Wechselreichter-Seriennummer gesetzt werden um den Wechselrichter der Device-Definition eindeutig zuzuweisen.
Default ist 0xFFFFFFFF (=keine Einschränkung)
timeout : Einstellung des timeout für die Wechselrichterabfrage (default 60s)
Readings
BAT_CYCLES / bat_cycles : Akku Ladezyklen
BAT_IDC / bat_idc : Akku Strom
BAT_TEMP / bat_temp : Akku Temperatur
BAT_UDC / bat_udc : Akku Spannung
ChargeStatus / chargestatus : Akku Ladestand
CLASS / device_class : Wechselrichter Klasse
PACMAX1 / pac_max_phase_1 : Nominelle Leistung in Ok Mode
PACMAX1_2 / pac_max_phase_1_2 : Maximale Leistung (für einige Wechselrichtertypen)
PACMAX2 / pac_max_phase_2 : Nominelle Leistung in Warning Mode
PACMAX3 / pac_max_phase_3 : Nominelle Leistung in Fault Mode
INV_TEMP / device_temperature : Wechselrichter Temperatur
INV_TYPE / device_type : Wechselrichter Typ
POWER_IN / power_in : Akku Ladeleistung
POWER_OUT / power_out : Akku Entladeleistung
INV_GRIDRELAY / gridrelay_status : Netz Relais Status
INV_STATUS / device_status : Wechselrichter Status
opertime_start : Beginn Aktivzeit des Wechselrichters entsprechend des ermittelten Sonnenaufgangs mit Berücksichtigung des
Attributs "offset" (wenn gesetzt)
opertime_stop : Ende Aktivzeit des Wechselrichters entsprechend des ermittelten Sonnenuntergangs mit Berücksichtigung des
Attributs "offset" (wenn gesetzt)
modulstate : zeigt den aktuellen Modulstatus "normal" oder "sleep" falls der Wechselrichter nicht abgefragt wird.
avg_power_lastminutes_05 : durchschnittlich erzeugte Leistung der letzten 5 Minuten.
avg_power_lastminutes_10 : durchschnittlich erzeugte Leistung der letzten 10 Minuten.
avg_power_lastminutes_15 : durchschnittlich erzeugte Leistung der letzten 15 Minuten.
inverter_processing_time : verbrauchte Zeit um den Wechelrichter abzufragen.
background_processing_time : gesamte durch den Hintergrundprozess (BlockingCall) verbrauchte Zeit.
Dieses Modul ist ein FHEM-Frontend zu dem Linux-Tool smartctl.
Es liefert diverse Informationen zu dem S.M.A.R.T. System einer Festplatte.
Define
define <name> SMARTMON <device> [<Interval>]
Diese Anweisung erstellt eine neue SMARTMON-Instanz.
Die Parameter geben ein zu überwachenden Gerät und den Aktualisierungsinterval in Minuten an.
Beispiel: define sm SMARTMON /dev/sda 60
Readings:
last_exit_code
Gibt den Exitcode bei der letzten Ausführung vom smartctl.
overall_health_test
Gibt den allgemeinen Zustand der Platte an. Kann PASSED oder FAILED sein.
warnings
Gibt die Anzahl der vermerkten Warnungen an.
Weiterhin können die verfügbaren SMART-Parameter als Readings angezeigt werden (RAW und/oder (teilweise) interpretiert).
Get:
version
Zeigt die verwendete Modul-Version an.
update
Veranlasst die Aktualisierung der gelesenen Parameter.
list
Zeigt verschiedenen Informationen an:
devices: Liste der im System verfügbaren Geräten.
info: Information zu dem aktuellen Gerät.
data: Liste der SMART-Parameter zu dem aktuellen Gerät.
health: Information zu dem allgemeinen Gesundheitsstatus für das verwendete Gerät.
Für letzten 3 Befehle kann auch noch ein anderes Gerät als zusätzliche Parameter mitgegeben werden.
Attributes:
show_raw
Gültige Werte: 0: keine RAW-Readings anzeigen (default), 1: alle anzeigen, die nicht in interpretierten Readings enthalten sind, 2: alle anzeigen.
include
Kommaseparierte Liste der IDs gewünschten SMART-Parameter. Wenn nichts angegeben, werden alle verfügbaren angezeigt.
disable
Gültige Werte: 0: Modul aktiv (default), 1: Modul deaktiviert (keine Aktualisierungen).
parameters
Zusatzparameter für den Aufruf von smartctl.
Für weitere Informationen wird die cmartctrl-Dokumentation empfohlen.
Modul zur Einbindung eines Sunny Tripower Wechselrichters der Firma SMA über Speedwire (Ethernet).
Getestet mit Sunny Tripower 6000TL-20, 10000-TL20 sowie 10000TL-10 mit Speedwire/Webconnect Piggyback
Define
define <name> SMASTP <pin> <hostname/ip> [port]
pin: Benutzer-Passwort des SMA STP Wechselrichters. Default ist 0000. Kann über die Windows-Software "Sunny Explorer" geändert werden
hostname/ip: Hostname oder IP-Adresse des Wechselrichters (bzw. dessen Speedwire Moduls mit Ethernetanschluss)
port: Optional der Ports des Wechselrichters. Per default 9522.
Modus
Das Modul erkennt automatisch eine Inaktivität des Wechselrichters, wenn dieser aufgrund Dunkelheit seinen Betrieb einstellt.
Diese Betriebspause wird als "Nightmode" bezeichnet. Im Nightmode wird der Wechelrichter nicht mehr über das Netzwerk abgefragt.
Per default geht das Modul davon aus, dass vor 5:00 und nach 21:00 der Nightmode aktiv ist.
Diese Grenzen lassen sich mit den Parametern "starttime" (Start des Wechelrichterbetriebs, also Ende des Nightmode)
und "endtime" (Ende des Wechselrichterbetriebs, also Beginn des Nightmode) umdefinieren.
Darüber hinaus gibt es den "Inactivitymode": hier wird der Wechselrichter abgefragt, aber es werden keine Readings mehr aktualisiert.
Parameter
interval: Abfrageinterval in Sekunden
suppress-night-mode: Der Nightmode wird deaktiviert
suppress-inactivity-mode: Der Inactivitymode wird deaktiviert
starttime: Startzeit des Betriebsmodus (Default 5:00 Uhr)
endtime: Endezeit des Betriebsmodus (Default 21:00 Uhr)
force-sleepmode: Der Nightmode wird bei entdeckter Inaktivität auch dann aktiviert, wenn endtime noch nicht erreicht ist
enable-modulstate: Schaltet das reading "modulstate" (normal / inactive / sleeping) ein
alarm1-value, alarm2-value, alarm3-value: Setzt einen Alarm in Watt auf das Reading SpotP.
Die Readings Alarm1..Alarm3 werden entsprechend gesetzt: -1 für SpotP < alarmX-value und 1 für Spot >= alarmX-value.
Readings
SpotP: SpotPower - Leistung in W zum Zeitpunkt der Abfrage
AvP01: Average Power 1 Minute - Durchschnittliche Leistung in W der letzten Minute
AvP05: Average Power 5 Minuten - Durchschnittliche Leistung in W der letzten 5 Minuten
AvP15: Average Power 15 Minuten - Durchschnittliche Leistung in W der letzten 15 Minuten
SpotPDC1: Spot Gleichspannung String 1
SpotPDC2: Spot Gleichspannung String 2
TotalTodayP: Erzeuge Leistung (in Wh) des heutigen Tages
AlltimeTotalP: Erzeugte Leistung (in Wh) seit Inbetriebsnahme des Gerätes
Alarm1..3: Alarm Trigger 1-3. Können über die Parameter "alarmN-value" gesetzt werden
SML
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SML
SOMFY
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SOMFY
Das System besteht aus zwei Komponenten:
1. Einem UPnP-Client, der als eigener Prozess im Hintergrund ständig läuft, und die Kommunikation mit den Sonos-Geräten übernimmt.
2. Dem eigentlichen FHEM-Modul, welches mit dem UPnP-Client zusammenarbeitet, um die Funktionalität in FHEM zu ermöglichen.
Der Client wird im Notfall automatisch von Modul selbst gestartet.
Man kann den Server unabhängig von FHEM selbst starten (um ihn dauerhaft und unabhängig von FHEM laufen zu lassen): perl 00_SONOS.pm 4711: Startet einen unabhängigen Server, der auf Port 4711 auf eingehende FHEM-Verbindungen lauscht. Dieser Prozess kann dauerhaft laufen, FHEM kann sich verbinden und auch wieder trennen.
Beispiel
Einfachste Definition: define Sonos SONOS
Definition mit Kontrolle über den verwendeten Port und das Intervall der IsAlive-Prüfung: define Sonos SONOS localhost:4711 45
Definiert das Sonos interface für die Kommunikation mit dem Sonos-System.
[upnplistener] Name und Port eines externen UPnP-Client. Wenn nicht angegebenen wird localhost:4711 festgelegt. Der Port muss eine freie Portnummer ihres Systems sein. Wenn sie keinen externen Client gestartet haben, startet das Skript einen eigenen. Wenn sie einen eigenen Dienst gestartet haben, dann geben sie hier die entsprechenden Informationen an.
[interval] Das Interval wird für die Überprüfung eines Zoneplayers benötigt. In diesem Interval wird nachgeschaut, ob der Player noch erreichbar ist, da sich ein Player nicht mehr abmeldet, wenn er abgeschaltet wird :-) Wenn nicht angegeben, wird ein Wert von 10 Sekunden angenommen.
[waittime] Hiermit wird die Wartezeit eingestellt, die nach dem Starten des SubProzesses darauf gewartet wird.
[delaytime] Hiermit kann eine Verzögerung eingestellt werden, die vor dem Starten des Netzwerks gewartet wird.
LoadBookmarks [Groupname] Lädt die angegebene Gruppe (oder alle Gruppen, wenn nicht angegeben) aus den entsprechenden Dateien.
SaveBookmarks [Groupname] Speichert die angegebene Gruppe (oder alle Gruppen, wenn nicht angegeben) in die entsprechenden Dateien.
Gruppenbefehle
Groups <GroupDefinition> Setzt die aktuelle Gruppierungskonfiguration der Sonos-Systemlandschaft. Das Format ist jenes, welches auch von dem Get-Befehl 'Groups' geliefert wird. Hier kann als GroupDefinition das Wort Reset verwendet werden, um alle Player aus ihren Gruppen zu entfernen.
Get
Gruppenbefehle
Groups Liefert die aktuelle Gruppierungskonfiguration der Sonos Systemlandschaft zurück. Das Format ist eine Kommagetrennte Liste von Listen mit Devicenamen, also z.B. [Sonos_Kueche], [Sonos_Wohnzimmer, Sonos_Schlafzimmer]. In diesem Beispiel sind also zwei Gruppen definiert, von denen die erste aus einem Player und die zweite aus Zwei Playern besteht.
Dabei ist die Reihenfolge innerhalb der Unterlisten wichtig, da der erste Eintrag der sogenannte Gruppenkoordinator ist (in diesem Fall also Sonos_Wohnzimmer), von dem die aktuelle Abspielliste un der aktuelle Titel auf die anderen Gruppenmitglieder übernommen wird.
Attribute
'''Hinweis''' Die Attribute werden erst bei einem Neustart von Fhem verwendet, da diese dem SubProzess initial zur Verfügung gestellt werden müssen.
Grundsätzliches
coverLoadTimeout <value> Eines von (0..10,15,20,25,30). Definiert den Timeout der für die Abfrage des Covers beim Sonosplayer verwendet wird. Wenn nicht angegeben, dann wird 5 verwendet.
deviceRoomView <Both|DeviceLineOnly> Gibt an, was in der Raumansicht zum Sonosplayer-Device angezeigt werden soll. Both bedeutet "normale" Devicezeile zzgl. Cover-/Titelanzeige und u.U. Steuerbereich, DeviceLineOnly bedeutet nur die Anzeige der "normalen" Devicezeile.
disable <value> Eines von (0,1). Hiermit kann das Modul abgeschaltet werden. Wirkt sofort. Bei 1 wird der SubProzess beendet, und somit keine weitere Verarbeitung durchgeführt. Bei 0 wird der Prozess wieder gestartet. Damit kann das Modul temporär abgeschaltet werden, um bei der Neueinrichtung von Sonos-Komponenten keine halben Zustände mitzubekommen.
getFavouritesListAtNewVersion <value> Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die Favoriten (bei definiertem Attribut getListsDirectlyToReadings) bei Aktualisierung automatisch herunterzuladen.
getPlaylistsListAtNewVersion <value> Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die Playlisten (bei definiertem Attribut getListsDirectlyToReadings) bei Aktualisierung automatisch herunterzuladen.
getQueueListAtNewVersion <value> Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die aktuelle Abspielliste (bei definiertem Attribut getListsDirectlyToReadings) bei Aktualisierung automatisch herunterzuladen.
getRadiosListAtNewVersion <value> Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die Radioliste (bei definiertem Attribut getListsDirectlyToReadings) bei Aktualisierung automatisch herunterzuladen.
getListsDirectlyToReadings <value> Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die Listen für Favoriten, Playlists, Radios und Queue direkt in die entsprechenden Readings zu schreiben. Dafür sind dann keine Userreadings mehr notwendig.
getLocalCoverArt <value> Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die Cover lokal herunterzuladen (bisheriges Standardverhalten).
ignoredIPs <IP-Adresse>[,IP-Adresse] Mit diesem Attribut können IP-Adressen angegeben werden, die vom UPnP-System ignoriert werden sollen. Z.B.: "192.168.0.11,192.168.0.37"
pingType <string> Eines von (none,tcp,udp,icmp,syn). Gibt an, welche Methode für die Ping-Überprüfung verwendet werden soll. Wenn 'none' angegeben wird, dann wird keine Überprüfung gestartet.
reusePort <int> Eines von (0,1). Gibt an, ob die Portwiederwendung für SSDP aktiviert werden soll, oder nicht. Kann Restart-Probleme lösen. Wenn man diese Probleme nicht hat, sollte man das Attribut nicht setzen.
SubProcessLogfileName <Pfad> Hiermit kann für den SubProzess eine eigene Logdatei angegeben werden. Unter Windows z.B. überschreiben sich die beiden Logausgaben (von Fhem und SubProzess) sonst gegenseitig. Wenn "-" angegeben wird, wird wie bisher auf STDOUT (und damit im Fhem-Log) geloggt. Der Hauptanwendungsfall ist die mehr oder weniger kurzfristige Fehlersuche. Es werden keinerlei Variablenwerte ersetzt, und der Wert direkt als Dateiname verwendet.
usedonlyIPs <IP-Adresse>[,IP-Adresse] Mit diesem Attribut können IP-Adressen angegeben werden, die ausschließlich vom UPnP-System berücksichtigt werden sollen. Z.B.: "192.168.0.11,192.168.0.37"
Bookmark-Einstellungen
bookmarkSaveDir <path> Das Verzeichnis, in dem die Dateien für die gespeicherten Bookmarks abgelegt werden sollen. Wenn nicht festgelegt, dann wird "." verwendet.
generateProxyAlbumArtURLs <int> Aus (0, 1). Wenn aktiviert, werden alle Cober-Links als Proxy-Aufrufe an Fhem generiert. Dieser Proxy-Server wird vom Sonos-Modul bereitgestellt. In der Grundeinstellung erfolgt kein Caching der Cover, sondern nur eine Durchreichung der Cover von den Sonosplayern (Damit ist der Zugriff durch einen externen Proxyserver auf Fhem möglich).
proxyCacheDir <Path> Hiermit wird das Verzeichnis festgelegt, in dem die Cober zwischengespeichert werden. Wenn nicht festegelegt, so wird "/tmp" verwendet.
proxyCacheTime <int> Mit einer Angabe ungleich 0 wird der Caching-Mechanismus des Sonos-Modul-Proxy-Servers aktiviert. Dabei werden Cover, die im Cache älter sind als diese Zeitangabe in Sekunden, neu vom Sonosplayer geladen, alle anderen direkt ausgeliefert, ohne den Player zu fragen.
webname <String> Hiermit kann der zu verwendende Webname für die Cover-Link-Erzeugung angegeben werden. Da vom Modul Links zu Cover u.ä. erzeugt werden, ohne dass es einen FhemWeb-Aufruf dazu gibt, kann das Modul diesen Pfad nicht selber herausfinden. Wenn das Attribut nicht angegeben wird, dann wird 'fhem' angenommen.
Sprachoptionen
targetSpeakDir <string> Gibt an, welches Verzeichnis für die Ablage des MP3-Files der Textausgabe verwendet werden soll
targetSpeakMP3FileConverter <string> Hiermit kann ein MP3-Konverter angegeben werden, da am Ende der Verkettung der Speak-Ansage das resultierende MP3-File nochmal sauber durchkodiert. Damit können Restzeitanzeigeprobleme behoben werden. Dadurch vegrößert sich allerdings u.U. die Ansageverzögerung.
targetSpeakMP3FileDir <string> Das Verzeichnis, welches als Standard für MP3-Fileangaben in Speak-Texten verwendet werden soll. Wird dieses Attribut definiert, können die Angaben bei Speak ohne Verzeichnis erfolgen.
targetSpeakURL <string> Gibt an, unter welcher Adresse der ZonePlayer das unter targetSpeakDir angegebene Verzeichnis erreichen kann.
targetSpeakFileTimestamp <int> One of (0, 1). Gibt an, ob die erzeugte MP3-Sprachausgabedatei einen Zeitstempel erhalten soll (1) oder nicht (0).
targetSpeakFileHashCache <int> One of (0, 1). Gibt an, ob die erzeugte Sprachausgabedatei einen Hashwert erhalten soll (1) oder nicht (0). Wenn dieser Wert gesetzt wird, dann wird eine bereits bestehende Datei wiederverwendet, und nicht neu erzeugt.
Speak1 <Fileextension>:<Commandline> Hiermit kann ein Systemaufruf definiert werden, der zu Erzeugung einer Sprachausgabe verwendet werden kann. Sobald dieses Attribut definiert wurde, ist ein entsprechender Setter am Sonosplayer verfügbar. Es dürfen folgende Platzhalter verwendet werden: '''%language%''': Wird durch die eingegebene Sprache ersetzt '''%filename%''': Wird durch den kompletten Dateinamen (inkl. Dateiendung) ersetzt. '''%text%''': Wird durch den zu übersetzenden Text ersetzt. '''%textescaped%''': Wird durch den URL-Enkodierten zu übersetzenden Text ersetzt.
SpeakGoogleURL <GoogleURL> Die zu verwendende Google-URL. Wenn dieser Parameter nicht angegeben wird, dann wird ein Standard verwendet. Hier müssen Platzhalter für die Ersetzung durch das Modul eingetragen werden: %1$s -> Sprache, %2$s -> Text Die Standard-URL lautet momentan: http://translate.google.com/translate_tts?tl=%1$s&client=tw-ob&q=%2$s
Create: Erzeugt einen neuen Alarm-Eintrag mit den übergebenen Hash-Daten.
Update: Aktualisiert die Alarme mit den übergebenen IDs und den angegebenen Hash-Daten.
Delete: Löscht die Alarm-Einträge mit den übergebenen IDs.
Enable: Aktiviert die Alarm-Einträge mit den übergebenen IDs.
Disable: Deaktiviert die Alarm-Einträge mit den übergebenen IDs.
Bei Angabe des Wortes 'All' als ID, werden alle Alarme dieses Players bearbeitet. Die Hash-Daten: Das Format ist ein Perl-Hash und wird mittels der eval-Funktion interpretiert. e.g.: { Repeat => 1 }
Die folgenden Schlüssel sind zulässig/notwendig:
set Sonos_Wohnzimmer Alarm Update 17 { Shuffle => 1 }
set Sonos_Wohnzimmer Alarm Delete 17 {}
AudioDelay <Level> Setzt den AudioDelay der Playbar auf den angegebenen Wert. Der Wert kann zwischen 0 und 5 liegen.
AudioDelayLeftRear <Level> Setzt den AudioDelayLeftRear des Players auf den angegebenen Wert. Der Wert kann zwischen 0 und 2 liegen. Wobei die Werte folgende Bedeutung haben: 0: >3m, 1: >0.6m und <3m, 2: <0.6m
AudioDelayRightRear <Level> Setzt den AudioDelayRightRear des Players auf den angegebenen Wert. Der Wert kann zwischen 0 und 2 liegen. Wobei die Werte folgende Bedeutung haben: 0: >3m, 1: >0.6m und <3m, 2: <0.6m
DialogLevel <State> Legt den Zustand der Sprachverbesserung der Playbar fest.
ExportSonosBibliothek <filename> Exportiert eine Datei mit der textuellen Darstellung eines Struktur- und Titelhashs, das die komplette Navigationsstruktur aus der Sonos-Bibliothek abbildet. Achtung: Benötigt eine große Menge CPU-Zeit und Arbeitsspeicher für die Ausführung!
NightMode <State> Legt den Zustand des Nachtsounds der Playbar fest.
OutputFixed <State> Setzt den angegebenen OutputFixed-Zustand. Liefert den aktuell gültigen OutputFixed-Zustand.
Reboot Führt für den Zoneplayer einen Neustart durch.
ResetAttributesToDefault <DeleteAllOtherAttributes> Setzt die Attribute eines Players auf die Voreinstellung zurück, wie sie beim Anlegen des Players gesetzt waren. Wenn der Parameter "DeleteAllOtherAttributes" mit "1" oder "on" angegeben wurde, werden vor dem Setzen alle Attribute gelöscht.
Wifi <State> Setzt den WiFi-Zustand des Players. Kann 'off', 'persist-off' oder 'on' sein.
Abspiel-Steuerbefehle
CurrentTrackPosition <TimePosition> Setzt die Abspielposition innerhalb des Liedes auf den angegebenen Zeitwert (z.B. 0:01:15) oder eine Sekundenangabe (z.B. 81). Man kann hier auch relative Angaben machen wie '+0:00:10' oder nur '+10'. Zusätzlich kann man auch Prozentwerte angeben wie z.B. '+10%'. Natürlich können diese Angaben auch negativ sein.
PlayURI <songURI> [Volume] Spielt die angegebene MP3-Datei ab. Dabei kann eine Lautstärke optional mit angegeben werden.
PlayURITemp <songURI> [Volume] Spielt die angegebene MP3-Datei mit der optionalen Lautstärke als temporäre Wiedergabe ab. Nach dem Abspielen wird der vorhergehende Zustand wiederhergestellt, und läuft an der unterbrochenen Stelle weiter. Wenn die Länge der Datei nicht ermittelt werden kann (z.B. bei Streams), läuft die Wiedergabe genauso wie bei PlayURI ab, es wird also nichts am Ende (wenn es eines geben sollte) wiederhergestellt.
Speak <Volume> <Language> <Text> Verwendet die Google Text-To-Speech-Engine um den angegebenen Text in eine MP3-Datei umzuwandeln und anschließend mittels PlayURITemp als Durchsage abzuspielen. Mögliche Sprachen können auf der Google-Seite nachgesehen werden. Möglich sind z.B. "de", "en", "fr", "es"...
StartFavourite <FavouriteName> [NoStart] Startet den angegebenen Favoriten. Der Name bezeichnet einen Eintrag in der Sonos-Favoritenliste. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen. Wenn das Wort 'NoStart' als zweiter Parameter angegeben wurde, dann wird der Favorit geladen und fertig vorbereitet, aber nicht explizit gestartet. Zusätzlich kann ein regulärer Ausdruck für den Namen verwendet werden. Der erste Treffer wird verwendet. Das Format ist z.B. /meine.hits/.
StartRadio <Radiostationname> Lädt den benannten Radiosender, genauer gesagt, den benannten Radiofavoriten und startet sofort die Wiedergabe. Dabei wird die bestehende Abspielliste beibehalten, aber deaktiviert. Der Parameter kann/muss URL-Encoded sein, um auch Leer- und Sonderzeichen angeben zu können.
Track <TrackNumber|Random> Aktiviert den angebenen Titel der aktuellen Abspielliste. Wenn als Tracknummer der Wert Random angegeben wird, dann wird eine zufällige Trackposition ausgewählt.
Einstellungen zum Abspielen
Balance <BalanceValue> Setzt die Balance auf den angegebenen Wert. Der Wert kann zwischen -100 (voll links) bis 100 (voll rechts) sein. Gibt die wirklich eingestellte Balance als Ergebnis zurück.
Bass <BassValue> Setzt den Basslevel auf den angegebenen Wert. Der Wert kann zwischen -10 bis 10 sein. Gibt den wirklich eingestellten Basslevel als Ergebnis zurück.
CrossfadeMode <State> Legt den Zustand des Crossfade-Mode fest. Liefert den aktuell gültigen Crossfade-Mode.
LEDState <State> Legt den Zustand der LED fest. Liefert den aktuell gültigen Zustand.
Loudness <State> Setzt den angegebenen Loudness-Zustand. Liefert den aktuell gültigen Loudness-Zustand.
Mute <State> Setzt den angegebenen Mute-Zustand. Liefert den aktuell gültigen Mute-Zustand.
MuteT Schaltet den Zustand des Mute-Zustands um. Liefert den aktuell gültigen Mute-Zustand.
Repeat <State> Legt den Zustand des Repeat-Zustands fest. Liefert den aktuell gültigen Repeat-Zustand.
RepeatOne <State> Legt den Zustand des RepeatOne-Zustands fest. Liefert den aktuell gültigen RepeatOne-Zustand.
RepeatOneT Schaltet den Zustand des RepeatOne-Zustands um. Liefert den aktuell gültigen RepeatOne-Zustand.
RepeatT Schaltet den Zustand des Repeat-Zustands um. Liefert den aktuell gültigen Repeat-Zustand.
Shuffle <State> Legt den Zustand des Shuffle-Zustands fest. Liefert den aktuell gültigen Shuffle-Zustand.
ShuffleT Schaltet den Zustand des Shuffle-Zustands um. Liefert den aktuell gültigen Shuffle-Zustand.
SleepTimer <Timestring|Seconds> Legt den aktuellen SleepTimer fest. Der Wert muss ein kompletter Zeitstempel sein (HH:MM:SS). Zum Deaktivieren darf der Zeitstempel nur Nullen enthalten oder das Wort 'off'.
Treble <TrebleValue> Setzt den Treblelevel auf den angegebenen Wert. Der Wert kann zwischen -10 bis 10 sein. Gibt den wirklich eingestellten Treblelevel als Ergebnis zurück.
Volume <VolumeLevel> [RampType] Setzt die aktuelle Lautstärke auf den angegebenen Wert. Der Wert kann ein relativer Wert mittels + oder - Zeichen sein. Liefert den aktuell gültigen Lautstärkewert zurück. Optional kann ein RampType übergeben werden, der einen Wert zwischen 1 und 3 annehmen kann, und verschiedene von Sonos festgelegte Muster beschreibt.
VolumeD Verringert die aktuelle Lautstärke um volumeStep-Einheiten.
VolumeRestore Stellt die mittels VolumeSave gespeicherte Lautstärke wieder her.
VolumeSave <VolumeLevel> Setzt die aktuelle Lautstärke auf den angegebenen Wert. Der Wert kann ein relativer Wert mittels + oder - Zeichen sein. Liefert den aktuell gültigen Lautstärkewert zurück. Zusätzlich wird der alte Lautstärkewert gespeichert und kann mittels VolumeRestore wiederhergestellt werden.
VolumeU Erhöht die aktuelle Lautstärke um volumeStep-Einheiten.
Steuerung der aktuellen Abspielliste
AddURIToQueue <songURI> Fügt die angegebene MP3-Datei an der aktuellen Stelle in die Abspielliste ein.
CurrentPlaylist Setzt den Abspielmodus auf die aktuelle Abspielliste, startet aber keine Wiedergabe (z.B. nach dem Hören eines Radiostreams, wo die aktuelle Abspielliste noch existiert, aber gerade "nicht verwendet" wird)
DeleteFromQueue Löscht die angegebenen Elemente aus der aktuellen Abspielliste. Die Angabe erfolgt über die Indizies der Titel. Es können die bei Perl-Array-üblichen Formate verwendet werden: "1..12,17,20..22". Die Indizies beziehen sich auf die aktuell angezeigte Reihenfolge (diese unterscheidet sich zwischen der normalen Abspielweise und dem Shufflemodus).
DeletePlaylist Löscht die bezeichnete Playliste. Zum möglichen Format des Playlistenamen unter LoadPlaylist nachsehen.
LoadFavourite <FavouriteName> Lädt den angegebenen Favoriten. Der Name bezeichnet einen Eintrag in der Sonos-Favoritenliste. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen. Zusätzlich kann ein regulärer Ausdruck für den Namen verwendet werden. Der erste Treffer wird verwendet. Das Format ist z.B. /meine.hits/.
LoadPlaylist <Playlistname|Fhem-Devicename> [EmptyQueueBeforeImport] Lädt die angegebene Playlist in die aktuelle Abspielliste. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen. Der Playlistname kann ein Fhem-Sonosplayer-Devicename sein, dann wird dessen aktuelle Abpielliste kopiert. Der Playlistname kann aber auch ein Dateiname sein. Dann muss dieser mit 'file:' beginnen (z.B. 'file:c:/Test.m3u). Wenn der Parameter EmptyQueueBeforeImport mit ''1'' angegeben wirde, wird die aktuelle Abspielliste vor dem Import geleert. Standardmäßig wird hier ''1'' angenommen. Zusätzlich kann ein regulärer Ausdruck für den Namen verwendet werden. Der erste Treffer wird verwendet. Das Format ist z.B. /hits.2014/.
LoadRadio <Radiostationname> Startet den angegebenen Radiostream. Der Name bezeichnet einen Sender in der Radiofavoritenliste. Die aktuelle Abspielliste wird nicht verändert. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen. Zusätzlich kann ein regulärer Ausdruck für den Namen verwendet werden. Der erste Treffer wird verwendet. Das Format ist z.B. /radio/.
SavePlaylist <Playlistname> Speichert die aktuelle Abspielliste unter dem angegebenen Namen. Eine bestehende Playlist mit diesem Namen wird überschrieben. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen. Der Playlistname kann auch ein Dateiname sein. Dann muss dieser mit 'file:' beginnen (z.B. 'file:c:/Test.m3u).
Gruppenbefehle
AddMember <devicename> Fügt dem Device das übergebene Device als Gruppenmitglied hinzu. Die Wiedergabe des aktuellen Devices bleibt erhalten, und wird auf das angegebene Device mit übertragen.
CreateStereoPair <rightPlayerDevicename> Fügt dem Device das übergebene Device als rechtes Stereopaar-Element hinzu. Die Wiedergabe des aktuellen Devices bleibt erhalten (als linker Lautsprecher), und wird auf das angegebene Device mit übertragen (als rechter Lautsprecher).
GroupMute <State> Setzt den Mute-Zustand für die komplette Gruppe in einem Schritt. Der Wert kann on oder off sein.
GroupVolume <VolumeLevel> Setzt die Gruppenlautstärke in der Art des Original-Controllers. Das bedeutet, dass das Lautstärkeverhältnis der Player zueinander beim Anpassen erhalten bleibt.
GroupVolumeD Verringert die aktuelle Gruppenlautstärke um volumeStep-Einheiten.
GroupVolumeU Erhöht die aktuelle Gruppenlautstärke um volumeStep-Einheiten.
RemoveMember <devicename> Entfernt dem Device das übergebene Device, sodass die beiden keine Gruppe mehr bilden. Die Wiedergabe des aktuellen Devices läuft normal weiter. Das abgetrennte Device stoppt seine Wiedergabe, und hat keine aktuelle Abspielliste mehr (seit Sonos Version 4.2 hat der Player wieder die Playliste von vorher aktiv).
SnapshotGroupVolume Legt das Lautstärkeverhältnis der aktuellen Player der Gruppe für folgende '''GroupVolume'''-Aufrufe fest. Dieses festgelegte Verhältnis wird bis zum nächsten Aufruf von '''SnapshotGroupVolume''' beibehalten.
Get
Grundsätzliches
Alarm <ID> Ausnahmefall. Diese Get-Anweisung liefert direkt ein Hash zurück, in welchem die Informationen des Alarms mit der gegebenen ID enthalten sind. Es ist die Kurzform für eval(ReadingsVal(<Devicename>, 'Alarmlist', ()))->{<ID>};, damit sich nicht jeder ausdenken muss, wie er jetzt am einfachsten an die Alarm-Informationen rankommen kann.
PossibleRoomIcons Liefert eine Liste aller möglichen RoomIcon-Bezeichnungen zurück.
SupportLinks Ausnahmefall. Diese Get-Anweisung liefert eine Liste mit passenden Links zu den Supportseiten des Player.
WifiPortStatus Liefert den Wifi-Portstatus. Kann 'Active' oder 'Inactive' liefern.
Listen
Favourites Liefert eine Liste mit den Namen aller gespeicherten Sonos-Favoriten. Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "Liste 1","Eintrag 2","Test"
FavouritesWithCovers Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller gespeicherten Sonos-Favoriten. Z.B.: {'FV:2/22' => {'Cover' => 'urlzumcover', 'Title' => '1. Favorit'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.
Playlists Liefert eine Liste mit den Namen aller gespeicherten Playlists. Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "Liste 1","Liste 2","Test"
PlaylistsWithCovers Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller gespeicherten Sonos-Playlisten. Z.B.: {'SQ:14' => {'Cover' => 'urlzumcover', 'Title' => '1. Playlist'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.
Queue Liefert eine Liste mit den Namen aller Titel in der aktuellen Abspielliste. Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "1. Liste 1 [0:02:14]","2. Eintrag 2 [k.A.]","3. Test [0:14:00]"
QueueWithCovers Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller Titel der aktuellen Abspielliste. Z.B.: {'Q:0/22' => {'Cover' => 'urlzumcover', 'Title' => '1. Titel'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.
Radios Liefert eine Liste mit den Namen aller gespeicherten Radiostationen (Favoriten). Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "Sender 1","Sender 2","Test"
RadiosWithCovers Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller gespeicherten Sonos-Radiofavoriten. Z.B.: {'R:0/0/2' => {'Cover' => 'urlzumcover', 'Title' => '1. Radiosender'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.
SearchlistCategories Liefert eine Liste mit den Namen alle möglichen Kategorien für den Aufruf von "LoadSearchlist". Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen.
'''Hinweis''' Die Attribute werden erst bei einem Neustart von Fhem verwendet, da diese dem SubProzess initial zur Verfügung gestellt werden müssen.
Grundsätzliches
disable <int> One of (0,1). Deaktiviert die Event-Verarbeitung für diesen Zoneplayer.
generateSomethingChangedEvent <int> One of (0,1). 1 wenn ein 'SomethingChanged'-Event erzeugt werden soll. Dieses Event wird immer dann erzeugt, wenn sich irgendein Wert ändert. Dies ist nützlich, wenn man immer informiert werden möchte, egal, was sich geändert hat.
generateVolumeEvent <int> One of (0,1). Aktiviert die Generierung eines Events bei Lautstärkeänderungen, wenn minVolume oder maxVolume definiert sind.
generateVolumeSlider <int> One of (0,1). Aktiviert einen Slider für die Lautstärkekontrolle in der Detailansicht.
getAlarms <int> One of (0..1). Richtet eine Callback-Methode für Alarme ein. Damit wird auch die DailyIndexRefreshTime automatisch aktualisiert.
suppressControlButtons <int> One of (0,1). Gibt an, ob die Steuerbuttons unter der Cover-/Titelanzeige angezeigt werden sollen (=1) oder nicht (=0).
volumeStep <int> One of (0..100). Definiert die Schrittweite für die Aufrufe von VolumeU und VolumeD.
Informationen generieren
generateInfoSummarize1 <string> Erzeugt das Reading 'InfoSummarize1' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
generateInfoSummarize2 <string> Erzeugt das Reading 'InfoSummarize2' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
generateInfoSummarize3 <string> Erzeugt das Reading 'InfoSummarize3' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
generateInfoSummarize4 <string> Erzeugt das Reading 'InfoSummarize4' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
getTitleInfoFromMaster <int> Eins aus (0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60). Bringt das Device dazu, seine aktuellen Abspielinformationen vom aktuellen Gruppenmaster zu holen, wenn es einen solchen gibt.
simulateCurrentTrackPosition <int> Eins aus (0, 1). Bringt das Device dazu, seine aktuelle Abspielposition simuliert weiterlaufen zu lassen. Dazu werden die Readings currentTrackPositionSimulated und currentTrackPositionSimulatedSec gesetzt. Gleichzeitig wird auch das Reading currentTrackPositionSimulatedPercent (zwischen 0.0 und 100.0) gesetzt.
stateVariable <string> One of (TransportState,NumberOfTracks,Track,TrackURI,TrackDuration,Title,Artist,Album,OriginalTrackNumber,AlbumArtist, Sender,SenderCurrent,SenderInfo,StreamAudio,NormalAudio,AlbumArtURI,nextTrackDuration,nextTrackURI,nextAlbumArtURI, nextTitle,nextArtist,nextAlbum,nextAlbumArtist,nextOriginalTrackNumber,Volume,Mute,Shuffle,Repeat,RepeatOne,CrossfadeMode,Balance, HeadphoneConnected,SleepTimer,Presence,RoomName,SaveRoomName,PlayerType,Location,SoftwareRevision,SerialNum,InfoSummarize1,I nfoSummarize2,InfoSummarize3,InfoSummarize4). Gibt an, welche Variable in das Reading state kopiert werden soll.
Steueroptionen
maxVolume <int> One of (0..100). Definiert die maximale Lautstärke dieses Zoneplayer.
minVolume <int> One of (0..100). Definiert die minimale Lautstärke dieses Zoneplayer.
maxVolumeHeadphone <int> One of (0..100). Definiert die maximale Lautstärke dieses Zoneplayer im Kopfhörerbetrieb.
minVolumeHeadphone <int> One of (0..100). Definiert die minimale Lautstärke dieses Zoneplayer im Kopfhörerbetrieb.
buttonEvents <Time:Pattern>[ <Time:Pattern> ...] Definiert, dass bei einer bestimten Tastenfolge am Player ein Event erzeugt werden soll. Die Definition der Events erfolgt als Tupel: Der erste Teil vor dem Doppelpunkt ist die Zeit in Sekunden, die berücksichtigt werden soll, der zweite Teil hinter dem Doppelpunkt definiert die Abfolge der Buttons, die für dieses Event notwendig sind.
Folgende Button-Kürzel sind zulässig:
M: Der Mute-Button
H: Die Headphone-Buchse
U: Up-Button (Lautstärke Hoch)
D: Down-Button (Lautstärke Runter)
Das Event, das geworfen wird, heißt ButtonEvent, der Wert ist die definierte Tastenfolge
Z.B.: 2:MM
Hier wird definiert, dass ein Event erzeugt werden soll, wenn innerhalb von 2 Sekunden zweimal die Mute-Taste gedrückt wurde. Das damit erzeugte Event hat dann den Namen ButtonEvent, und den Wert MM.
saveSleeptimerInAction <int> One of (0..1). Wenn gesetzt, wird ein etwaig gesetztes Attribut "stopSleeptimerInAction" ignoriert.
stopSleeptimerInAction <int> One of (0..1). Wenn gesetzt, wird bei einem Wechsel des transportState auf "PAUSED_PLAYBACK" oder "STOPPED" ein etwaig definierter SleepTimer deaktiviert.
Beispiele / Hinweise
Format von InfoSummarize: infoSummarizeX := <NormalAudio>:summarizeElem:</NormalAudio> <StreamAudio>:summarizeElem:</StreamAudio>|:summarizeElem: :summarizeElem: := <:variable:[ prefix=":text:"][ suffix=":text:"][ instead=":text:"][ ifempty=":text:"]/[ emptyVal=":text:"]> :variable: := TransportState|NumberOfTracks|Track|TrackURI|TrackDuration|Title|Artist|Album|OriginalTrackNumber|AlbumArtist| Sender|SenderCurrent|SenderInfo|StreamAudio|NormalAudio|AlbumArtURI|nextTrackDuration|nextTrackURI|nextAlbumArtURI| nextTitle|nextArtist|nextAlbum|nextAlbumArtist|nextOriginalTrackNumber|Volume|Mute|Shuffle|Repeat|RepeatOne|CrossfadeMode|Balance| HeadphoneConnected|SleepTimer|Presence|RoomName|SaveRoomName|PlayerType|Location|SoftwareRevision|SerialNum|InfoSummarize1| InfoSummarize2|InfoSummarize3|InfoSummarize4 :text: := [Jeder beliebige Text ohne doppelte Anführungszeichen]
Mit diesem Modul können Operationen von in der Synology Surveillance Station (SVS) definierten Kameras und Funktionen
der SVS ausgeführt werden. Es basiert auf der SVS API und unterstützt die SVS ab Version 7.
Zur Zeit werden folgende Funktionen unterstützt:
Start einer Aufnahme
Stop einer Aufnahme (per Befehl bzw. automatisch nach Ablauf der Aufnahmedauer)
Aufnehmen eines Schnappschusses und Ablage in der Synology Surveillance Station
Deaktivieren einer Kamera in Synology Surveillance Station
Aktivieren einer Kamera in Synology Surveillance Station
Steuerung der Belichtungsmodi Tag, Nacht bzw. Automatisch
Umschaltung der Ereigniserkennung durch Kamera, durch SVS oder deaktiviert
steuern der Erkennungsparameterwerte Empfindlichkeit, Schwellwert, Objektgröße und Prozentsatz für Auslösung
Abfrage von Kameraeigenschaften (auch mit Polling) sowie den Eigenschaften des installierten SVS-Paketes
Bewegen an eine vordefinierte Preset-Position (bei PTZ-Kameras)
Start einer vordefinierten Überwachungstour (bei PTZ-Kameras)
Positionieren von PTZ-Kameras zu absoluten X/Y-Koordinaten
starten und beenden von Kamera-Livestreams incl. Audiowiedergabe, anzeigen der letzten Aufnahme oder des letzten Schnappschusses
Abruf und Ausgabe der Kamera Streamkeys sowie Stream-Urls (Nutzung von Kamera-Livestreams ohne Session Id)
abspielen der letzten Aufnahme bzw. Anzeige des letzten Schnappschusses
anzeigen der gespeicherten Anmeldeinformationen (Credentials)
Ein- bzw. Ausschalten des Surveillance Station HomeMode und abfragen des HomeMode-Status
abrufen des Surveillance Station Logs, auswerten des neuesten Eintrags als Reading
erzeugen einer Gallerie der letzten 1-10 Schnappschüsse (als Popup oder permanentes Device)
Start bzw. Stop Objekt Tracking (nur unterstützte PTZ-Kameras mit dieser Fähigkeit)
Setzen/Löschen eines Presets (bei PTZ-Kameras)
Setzen der Home-Position (bei PTZ-Kameras)
erstellen eines Paneels zur Kamera-Steuerung. (bei PTZ-Kameras)
erzeugen unterschiedlicher Typen von separaten Streaming-Devices (createStreamDev)
Aktivierung / Deaktivierung eines kamerainternen PIR-Sensors
Die Aufnahmen stehen in der Synology Surveillance Station (SVS) zur Verfügung und unterliegen, wie jede andere Aufnahme, den in der Synology Surveillance Station eingestellten Regeln.
So werden zum Beispiel die Aufnahmen entsprechend ihrer Archivierungsfrist gespeichert und dann gelöscht.
Dieses Modul nutzt das Perl-Modul JSON.
Auf Debian-Linux basierenden Systemen kann es installiert werden mit:
sudo apt-get install libjson-perl
Das Modul verwendet für HTTP-Calls die nichtblockierenden Funktionen von HttpUtils bzw. HttpUtils_NonblockingGet.
Im DSM bzw. der Synology Surveillance Station muß ein Nutzer angelegt sein. Die Zugangsdaten werden später über ein Set-Kommando dem angelegten Gerät zugewiesen.
Nähere Informationen dazu unter Credentials
Überblick über die Perl-Module welche von SSCam genutzt werden:
Bei der Definition wird zwischen einer Kamera-Definition und der Definition einer Surveillance Station (SVS), d.h.
der Applikation selbst auf der Diskstation, unterschieden.
Abhängig von der Art des definierten Devices wird das Internal MODEL auf "<Hersteller> - <Kameramodell>" oder
SVS gesetzt und eine passende Teilmenge der beschriebenen set/get-Befehle dem Device zugewiesen.
Der Gültigkeitsbereich von set/get-Befehlen ist nach dem jeweiligen Befehl angegeben "gilt für CAM, SVS, CAM/SVS".
Eine Kamera wird definiert mit:
define <Name> SSCAM <Kameraname in SVS> <ServerAddr> [Port] [Protocol]
Zunächst muß diese Kamera in der Synology Surveillance Station 7.0 oder höher eingebunden sein und entsprechend
funktionieren.
Ein SVS-Device zur Steuerung von Funktionen der Surveillance Station wird definiert mit:
In diesem Fall wird statt <Kameraname in SVS> nur SVS angegeben.
Das Modul SSCam basiert auf Funktionen der Synology Surveillance Station API.
Die Parameter beschreiben im Einzelnen:
Name
der Name des neuen Gerätes in FHEM
Kameraname
Kameraname wie er in der Synology Surveillance Station angegeben ist für Kamera-Device, "SVS" für SVS-Device. Leerzeichen im Namen sind nicht erlaubt.
ServerAddr
die IP-Addresse des Synology Surveillance Station Host. Hinweis: Es sollte kein Servername verwendet werden weil DNS-Aufrufe in FHEM blockierend sind.
Port
optional - der Port der Synology Disc Station. Wenn nicht angegeben, wird der Default-Port "5000" genutzt
Protocol
optional - das Protokoll (http oder https) zum Funktionsaufruf. Wenn nicht angegeben, wird der Default "http" genutzt
Wird eine neue Kamera definiert, wird diesem Device zunächst eine Standardaufnahmedauer von 15 zugewiesen.
Über das Attribut "rectime" kann die Aufnahmedauer für jede Kamera individuell angepasst werden. Der Wert "0" für "rectime" führt zu einer Endlosaufnahme, die durch "set <name> off" wieder gestoppt werden muß.
Ein Logeintrag mit einem entsprechenden Hinweis auf diesen Umstand wird geschrieben.
Wird das Attribut "rectime" gelöscht, greift wieder der Default-Wert (15s) für die Aufnahmedauer.
Mit dem Befehl"set <name> on [rectime]" wird die Aufnahmedauer temporär festgelegt und überschreibt einmalig sowohl den Defaultwert als auch den Wert des gesetzten Attributs "rectime".
Auch in diesem Fall führt "set <name> on 0" zu einer Daueraufnahme.
Eine eventuell in der SVS eingestellte Dauer der Voraufzeichnung wird weiterhin berücksichtigt.
Erkennt das Modul die definierte Kamera als PTZ-Device (Reading "DeviceType = PTZ"), wird automatisch ein
Steuerungspaneel in der Detailansicht erstellt. Dieses Paneel setzt SVS >= 7.1 voraus. Die Eigenschaften und das
Verhalten des Paneels können mit den Attributen "ptzPanel_.*" beeinflusst werden.
Siehe dazu auch den Befehl"set <name> createPTZcontrol".
Credentials
Nach dem Definieren des Gerätes müssen zuerst die Zugangsparameter gespeichert werden. Das geschieht mit dem Befehl:
set <name> credentials <Username> <Passwort>
Die Passwortlänge beträgt maximal 20 Zeichen.
Der Anwender kann in Abhängigkeit der beabsichtigten einzusetzenden Funktionen einen Nutzer im DSM bzw. in der Surveillance Station einrichten.
Ist der DSM-Nutzer der Gruppe Administratoren zugeordnet, hat er auf alle Funktionen Zugriff. Ohne diese Gruppenzugehörigkeit können nur Funktionen mit niedrigeren
Rechtebedarf ausgeführt werden. Die benötigten Mindestrechte der Funktionen sind in der Tabelle weiter unten aufgeführt.
Alternativ zum DSM-Nutzer kann ein in der SVS angelegter Nutzer verwendet werden. Auch in diesem Fall hat ein Nutzer vom Typ Manager das Recht alle Funktionen
auszuführen, wobei der Zugriff auf bestimmte Kameras/ im Privilegienprofil beschränkt werden kann (siehe Hilfefunktion in SVS).
Als Best Practice wird vorgeschlagen jeweils einen User im DSM und einen in der SVS anzulegen:
DSM-User als Mitglied der Admin-Gruppe: uneingeschränkter Test aller Modulfunktionen -> session:DSM
SVS-User als Manager oder Betrachter: angepasstes Privilegienprofil -> session: SurveillanceStation
Über das Attribut "session" kann ausgewählt werden, ob die Session mit dem DSM oder der SVS augebaut werden soll.
Erfolgt der Session-Aufbau mit dem DSM, stehen neben der SVS Web-API auch darüber hinaus gehende API-Zugriffe zur Verfügung die unter Umständen zur Verarbeitung benötigt werden.
Nach der Gerätedefinition ist die Grundeinstellung "Login in das DSM", d.h. es können Credentials mit Admin-Berechtigungen genutzt werden um zunächst alle
Funktionen der Kameras testen zu können. Danach können die Credentials z.B. in Abhängigkeit der benötigten Funktionen auf eine SVS-Session mit entsprechend beschränkten Privilegienprofil umgestellt werden.
Die nachfolgende Aufstellung zeigt die Mindestanforderungen der jeweiligen Modulfunktionen an die Nutzerrechte.
set ... credentials
-
set ... delPreset
session: ServeillanceStation - Betrachter
set ... disable
session: ServeillanceStation - Manager
set ... enable
session: ServeillanceStation - Manager
set ... expmode
session: ServeillanceStation - Manager
set ... extevent
session: DSM - Nutzer Mitglied von Admin-Gruppe
set ... goPreset
session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
set ... homeMode
session: ServeillanceStation - Betrachter mit Privileg Home-Modus schalten
set ... goAbsPTZ
session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
set ... move
session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
set ... motdetsc
session: ServeillanceStation - Manager
set ... on
session: ServeillanceStation - Betrachter mit erweiterten Privileg "manuelle Aufnahme"
set ... off
session: ServeillanceStation - Betrachter mit erweiterten Privileg "manuelle Aufnahme"
set ... runView
session: ServeillanceStation - Betrachter mit Privileg Liveansicht für Kamera
set ... runPatrol
session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
set ... setHome
session: ServeillanceStation - Betrachter
set ... setPreset
session: ServeillanceStation - Betrachter
set ... snap
session: ServeillanceStation - Betrachter
set ... snapGallery
session: ServeillanceStation - Betrachter
set ... stopView
-
get ... caminfo[all]
session: ServeillanceStation - Betrachter
get ... eventlist
session: ServeillanceStation - Betrachter
get ... listLog
session: ServeillanceStation - Betrachter
get ... listPresets
session: ServeillanceStation - Betrachter
get ... scanVirgin
session: ServeillanceStation - Betrachter
get ... svsinfo
session: ServeillanceStation - Betrachter
get ... snapfileinfo
session: ServeillanceStation - Betrachter
get ... snapGallery
session: ServeillanceStation - Betrachter
get ... snapinfo
session: ServeillanceStation - Betrachter
get ... stmUrlPath
session: ServeillanceStation - Betrachter
HTTP-Timeout setzen
Alle Funktionen dieses Moduls verwenden HTTP-Aufrufe gegenüber der SVS Web API.
Der Standardwert für den HTTP-Timeout beträgt 4 Sekunden. Durch Setzen des Attributes "httptimeout" > 0 kann dieser Wert bei Bedarf entsprechend den technischen Gegebenheiten angepasst werden.
Set
Die aufgeführten set-Befehle sind für CAM/SVS-Devices oder nur für CAM-Devices bzw. nur für SVS-Devices gültig. Sie stehen im
Drop-Down-Menü des jeweiligen Devices zur Auswahl zur Verfügung.
Es wird ein separates Streaming-Device (Typ SSCamSTRM) erstellt. Dieses Device kann z.B. als separates Device
in einem Dashboard genutzt werden.
Dem Streaming-Device wird der aktuelle Raum des Kameradevice zugewiesen sofern dort gesetzt.
generic
- das Streaming-Device gibt einen durch das Attribut "genericStrmHtmlTag" bestimmten Content wieder
mjpeg
- das Streaming-Device gibt einen permanenten MJPEG Kamerastream wieder (Streamkey Methode)
switched
- Wiedergabe unterschiedlicher Streamtypen. Drucktasten zur Steuerung werden angeboten.
Die Gestaltung kann durch HTML-Tags im Attribut "htmlattr" im Kameradevice oder mit den
spezifischen Attributen im Streaming-Device beeinflusst werden.
Soll ein HLS-Stream im Streaming-Device vom Typ "switched" gestartet werden, muss die Kamera in der Synology Surveillance Station
auf das Videoformat H.264 eingestellt und HLS von der eingesetzten SVS-Version unterstützt sein.
Diese Auswahltaste wird deshalb im nur im Streaming-Device angeboten wenn das Reading "CamStreamFormat = HLS" beinhaltet.
HLS (HTTP Live Streaming) kann momentan nur auf Mac Safari oder mobilen iOS/Android-Geräten wiedergegeben werden.
Im "switched"-Device werden Drucktasten zur Steuerung des zu startenden Medientyps angeboten.
Ein Streaming-Device vom Typ "generic" benötigt die Angabe von HTML-Tags im Attribut "genericStrmHtmlTag". Diese Tags
spezifizieren den wiederzugebenden Content.
Die Variablen $HTMLATTR, $NAME sind Platzhalter und übernehmen ein gesetztes Attribut "htmlattr" bzw. den SSCam-Devicenamen.
set <name> createPTZcontrol (gilt für PTZ-CAM)
Es wird ein separates PTZ-Steuerungspaneel (Type SSCamSTRM) erstellt. Es wird der aktuelle Raum des Kameradevice
zugewiesen sofern dort gesetzt.
Mit den "ptzPanel_.*"-Attributen bzw. den spezifischen Attributen des erzeugten
SSCamSTRM-Devices können die Eigenschaften des PTZ-Paneels beeinflusst werden.
set <name> createSnapGallery (gilt für CAM)
Es wird eine Schnappschußgallerie als separates Device (Type SSCamSTRM) erzeugt. Das Device wird im Raum
"SnapGallery" erstellt.
Mit den "snapGallery..."-Attributen bzw. den spezifischen Attributen des erzeugten SSCamSTRM-Devices
können die Eigenschaften der Schnappschußgallerie beeinflusst werden.
set <name> credentials <username> <password> (gilt für CAM/SVS)
Setzt Username / Passwort für den Zugriff auf die Synology Surveillance Station.
Siehe Credentials
set <name> delPreset <PresetName> (gilt für PTZ-CAM)
Löscht einen Preset "<PresetName>". Im FHEMWEB wird eine Drop-Down Liste der aktuell vorhandenen
Presets angeboten.
set <name> [enable|disable] (gilt für CAM)
Aktviviert / deaktiviert eine Kamera.
Um eine Liste von Kameras oder alle Kameras (mit Regex) zum Beispiel um 21:46 zu deaktivieren / zu aktivieren zwei Beispiele mit at:
define a13 at 21:46 set CamCP1,CamFL,CamHE1,CamTER disable (enable)
define a14 at 21:46 set Cam.* disable (enable)
Etwas komfortabler gelingt das Schalten aller Kameras über einen Dummy. Zunächst wird der Dummy angelegt:
Durch Verknüpfung mit zwei angelegten notify, jeweils ein notify für "enable" und "disable", kann man durch Schalten des Dummys auf "enable" bzw. "disable" alle Kameras auf einmal aktivieren bzw. deaktivieren.
set <name> expmode [day|night|auto] (gilt für CAM)
Mit diesem Befehl kann der Belichtungsmodus der Kameras gesetzt werden. Dadurch wird z.B. das Verhalten der Kamera-LED's entsprechend gesteuert.
Die erfolgreiche Umschaltung wird durch das Reading CamExposureMode ("get ... caminfoall") reportet.
Hinweis:
Die erfolgreiche Ausführung dieser Funktion ist davon abhängig ob die SVS diese Funktionalität der Kamera unterstützt.
Ist in SVS -> IP-Kamera -> Optimierung -> Belichtungsmodus das Feld für den Tag/Nachtmodus grau hinterlegt, ist nicht von einer lauffähigen Unterstützung dieser
Funktion auszugehen.
set <name> extevent [ 1-10 ] (gilt für SVS)
Dieses Kommando triggert ein externes Ereignis (1-10) in der SVS.
Die Aktionen, die dieses Ereignis auslöst, sind zuvor in dem Aktionsregeleditor der SVS einzustellen. Es stehen die Ereignisse
1-10 zur Verfügung.
In der Benachrichtigungs-App der SVS können auch Email, SMS oder Mobil (DS-Cam) Nachrichten ausgegeben werden wenn ein externes
Ereignis ausgelöst wurde.
Nähere Informationen dazu sind in der Hilfe zum Aktionsregeleditor zu finden.
Der verwendete User benötigt Admin-Rechte in einer DSM-Session.
set <name> goAbsPTZ [ X Y | up | down | left | right ] (gilt für CAM)
Mit diesem Kommando wird eine PTZ-Kamera in Richtung einer wählbaren absoluten X/Y-Koordinate bewegt, oder zur maximalen Absolutposition in Richtung up/down/left/right.
Die Option ist nur für Kameras verfügbar die das Reading "CapPTZAbs=true" (die Fähigkeit für PTZAbs-Aktionen) besitzen. Die Eigenschaften der Kamera kann mit "get <name> caminfoall" abgefragt werden.
Beispiel für Ansteuerung absoluter X/Y-Koordinaten:
set <name> goAbsPTZ 120 450
Dieses Beispiel bewegt die Kameralinse in die Position X=120 und Y=450.
Der Wertebereich ist dabei:
X = 0 - 640 (0 - 319 bewegt nach links, 321 - 640 bewegt nach rechts, 320 bewegt die Linse nicht)
Y = 0 - 480 (0 - 239 bewegt nach unten, 241 - 480 bewegt nach oben, 240 bewegt die Linse nicht)
Die Linse kann damit in kleinsten bis sehr großen Schritten in die gewünschte Richtung bewegt werden.
Dieser Vorgang muß ggf. mehrfach wiederholt werden um die Kameralinse in die gewünschte Position zu bringen.
Soll die Bewegung mit der maximalen Schrittweite erfolgen, kann zur Vereinfachung der Befehl:
set <name> goAbsPTZ [up|down|left|right]
verwendet werden. Die Optik wird in diesem Fall mit der größt möglichen Schrittweite zur Absolutposition in der angegebenen Richtung bewegt.
Auch in diesem Fall muß der Vorgang ggf. mehrfach wiederholt werden um die Kameralinse in die gewünschte Position zu bringen.
set <name> goPreset <Preset> (gilt für CAM)
Mit diesem Kommando können PTZ-Kameras in eine vordefininierte Position bewegt werden.
Die Preset-Positionen müssen dazu zunächst in der Synology Surveillance Station angelegt worden sein. Das geschieht in der PTZ-Steuerung im IP-Kamera Setup.
Die Presets werden über das Kommando "get <name> caminfoall" eingelesen (geschieht bei restart von FHEM automatisch). Der Einlesevorgang kann durch ein Kamerapolling
regelmäßig wiederholt werden. Ein langes Pollingintervall ist in diesem Fall empfehlenswert, da sich die Presetpositionen nur im Fall der Neuanlage bzw. Änderung verändern werden.
Hier ein Beispiel einer PTZ-Steuerung in Abhängigkeit eines IR-Melder Events:
define CamFL.Preset.Wandschrank notify MelderTER:on.* set CamFL goPreset Wandschrank, ;; define CamFL.Preset.record at +00:00:10 set CamFL on 5 ;;;; define s3 at +*{3}00:00:05 set CamFL snap ;; define CamFL.Preset.back at +00:00:30 set CamFL goPreset Home
Funktionsweise:
Der IR-Melder "MelderTER" registriert eine Bewegung. Daraufhin wird die Kamera CamFL in die Preset-Position "Wandschrank" gebracht. Eine Aufnahme mit Dauer von 5 Sekunden startet 10 Sekunden
später. Da die Voraufnahmezeit der Kamera 10s beträgt (vgl. Reading "CamPreRecTime"), startet die effektive Aufnahme wenn der Kameraschwenk beginnt.
Mit dem Start der Aufnahme werden drei Schnappschüsse im Abstand von 5 Sekunden angefertigt.
Nach einer Zeit von 30 Sekunden fährt die Kamera wieder zurück in die "Home"-Position.
Ein Auszug aus dem Log verdeutlicht den Ablauf:
2016.02.04 15:02:14 2: CamFL - Camera Flur_Vorderhaus has moved to position "Wandschrank"
2016.02.04 15:02:24 2: CamFL - Camera Flur_Vorderhaus Recording with Recordtime 5s started
2016.02.04 15:02:29 2: CamFL - Snapshot of Camera Flur_Vorderhaus has been done successfully
2016.02.04 15:02:30 2: CamFL - Camera Flur_Vorderhaus Recording stopped
2016.02.04 15:02:34 2: CamFL - Snapshot of Camera Flur_Vorderhaus has been done successfully
2016.02.04 15:02:39 2: CamFL - Snapshot of Camera Flur_Vorderhaus has been done successfully
2016.02.04 15:02:44 2: CamFL - Camera Flur_Vorderhaus has moved to position "Home"
set <name> homeMode [on|off] (gilt für SVS)
Schaltet den HomeMode der Surveillance Station ein bzw. aus.
Informationen zum HomeMode sind in der Synology Onlinehilfe
enthalten.
set <name> motdetsc [camera|SVS|disable] (gilt für CAM)
Der Befehl "motdetsc" (steht für motion detection source) schaltet die Bewegungserkennung in den gewünschten Modus.
Wird die Bewegungserkennung durch die Kamera / SVS ohne weitere Optionen eingestellt, werden die momentan gültigen Bewegungserkennungsparameter der
Kamera / SVS beibehalten. Die erfolgreiche Ausführung der Operation lässt sich u.a. anhand des Status von SVS -> IP-Kamera -> Ereigniserkennung ->
Bewegung nachvollziehen.
Für die Bewegungserkennung durch SVS bzw. durch Kamera können weitere Optionen angegeben werden. Die verfügbaren Optionen bezüglich der Bewegungserkennung
durch SVS sind "Empfindlichkeit" und "Schwellwert".
set <name> motdetsc SVS [Empfindlichkeit] [Schwellwert]
# Befehlsmuster
set <name> motdetsc SVS 91 30
# setzt die Empfindlichkeit auf 91 und den Schwellwert auf 30
# setzt die Empfindlichkeit auf 15, Schwellwert bleibt unverändert
Wird die Bewegungserkennung durch die Kamera genutzt, stehen die Optionen "Empfindlichkeit", "Objektgröße" und "Prozentsatz für Auslösung" zur Verfügung.
set <name> motdetsc camera [Empfindlichkeit] [Schwellwert] [Prozentsatz]
# Befehlsmuster
set <name> motdetsc camera 89 0 20
# setzt die Empfindlichkeit auf 89, Prozentsatz auf 20
set <name> motdetsc camera 0 40 10
# behält gesetzten Wert für Empfindlichkeit bei, setzt Schwellwert auf 40, Prozentsatz auf 10
set <name> motdetsc camera 30
# setzt die Empfindlichkeit auf 30, andere Werte bleiben unverändert
Es ist immer die Reihenfolge der Optionswerte zu beachten. Nicht gewünschte Optionen sind mit "0" zu besetzen sofern danach Optionen folgen
deren Werte verändert werden sollen (siehe Beispiele oben). Der Zahlenwert der Optionen beträgt 1 - 99 (außer Sonderfall "0").
Die jeweils verfügbaren Optionen unterliegen der Funktion der Kamera und der Unterstützung durch die SVS. Es können jeweils nur die Optionen genutzt werden die in
SVS -> Kamera bearbeiten -> Ereigniserkennung zur Verfügung stehen. Weitere Infos sind der Online-Hilfe zur SVS zu entnehmen.
Über den Befehl "get <name> caminfoall" wird auch das Reading "CamMotDetSc" aktualisiert welches die gegenwärtige Einstellung der Bewegungserkennung dokumentiert.
Es werden nur die Parameter und Parameterwerte angezeigt, welche die SVS aktiv unterstützt. Die Kamera selbst kann weiterführende Einstellmöglichkeiten besitzen.
Beipiel:
CamMotDetSc SVS, sensitivity: 76, threshold: 55
set <name> move [ right | up | down | left | dir_X ] [Sekunden] (gilt für CAM bis SVS Version 7.1)
set <name> move [ right | upright | up | upleft | left | downleft | down | downright ] [Sekunden] (gilt für CAM ab SVS Version 7.2)
Mit diesem Kommando wird eine kontinuierliche Bewegung der PTZ-Kamera gestartet. Neben den vier Grundrichtungen up/down/left/right stehen auch
Zwischenwinkelmaße "dir_X" zur Verfügung. Die Feinheit dieser Graduierung ist von der Kamera abhängig und kann dem Reading "CapPTZDirections" entnommen werden.
Das Bogenmaß von 360 Grad teilt sich durch den Wert von "CapPTZDirections" und beschreibt die Bewegungsrichtungen beginnend mit "0=rechts" entgegen dem
Uhrzeigersinn. D.h. bei einer Kamera mit "CapPTZDirections = 8" bedeutet dir_0 = rechts, dir_2 = oben, dir_4 = links, dir_6 = unten bzw. dir_1, dir_3, dir_5 und dir_7
die entsprechenden Zwischenrichtungen. Die möglichen Bewegungsrichtungen bei Kameras mit "CapPTZDirections = 32" sind dementsprechend kleinteiliger.
Im Gegensatz zum "set <name> goAbsPTZ"-Befehl startet der Befehl "set <name> move" eine kontinuierliche Bewegung bis ein Stop-Kommando empfangen wird.
Das Stop-Kommando wird nach Ablauf der optional anzugebenden Zeit [Sekunden] ausgelöst. Wird diese Laufzeit nicht angegeben, wird implizit Sekunde = 1 gesetzt.
Beispiele:
set <name> move up 0.5 : bewegt PTZ 0,5 Sek. (zzgl. Prozesszeit) nach oben
set <name> move dir_1 1.5 : bewegt PTZ 1,5 Sek. (zzgl. Prozesszeit) nach rechts-oben
set <name> move dir_20 0.7 : bewegt PTZ 1,5 Sek. (zzgl. Prozesszeit) nach links-unten ("CapPTZDirections = 32)"
set <name> [on [<rectime>] | off] (gilt für CAM)
Der Befehl "set <name> on" startet eine Aufnahme. Die Standardaufnahmedauer beträgt 15 Sekunden. Sie kann mit dem
Attribut "rectime" individuell festgelegt werden.
Die im Attribut (bzw. im Standard) hinterlegte Aufnahmedauer kann einmalig mit "set <name> on <rectime>"
überschrieben werden.
Die Aufnahme stoppt automatisch nach Ablauf der Zeit "rectime".
Ein Sonderfall ist der Start einer Daueraufnahme mit "set <name> on 0" bzw. dem Attributwert "rectime = 0".
In diesem Fall wird eine Daueraufnahme gestartet, die explizit wieder mit dem Befehl "set <name> off" gestoppt
werden muß.
Das Aufnahmeverhalten kann weiterhin mit dem Attribut "recextend" beeinflusst werden.
Attribut "recextend = 0" bzw. nicht gesetzt (Standard):
wird eine Aufnahme mit z.B. rectime=22 gestartet, wird kein weiterer Startbefehl für eine Aufnahme akzeptiert bis diese gestartete Aufnahme nach 22 Sekunden
beendet ist. Ein Hinweis wird bei verbose=3 im Logfile protokolliert.
Attribut "recextend = 1" gesetzt:
eine zuvor gestartete Aufnahme wird bei einem erneuten "set on" -Befehl um die Aufnahmezeit "rectime" verlängert. Das bedeutet, dass der Timer für
den automatischen Stop auf den Wert "rectime" neu gesetzt wird. Dieser Vorgang wiederholt sich mit jedem Start-Befehl. Dadurch verlängert sich eine laufende
Aufnahme bis kein Start-Inpuls mehr registriert wird.
eine zuvor gestartete Endlos-Aufnahme wird mit einem erneuten "set on"-Befehl nach der Aufnahmezeit "rectime" gestoppt (Timerneustart). Ist dies
nicht gewünscht, ist darauf zu achten dass bei der Verwendung einer Endlos-Aufnahme das Attribut "recextend" nicht verwendet wird.
Beispiele für einfachen Start/Stop einer Aufnahme:
set <name> on [rectime]
startet die Aufnahme der Kamera <name>, automatischer Stop der Aufnahme nach Ablauf der Zeit [rectime] (default 15s oder wie im Attribut "rectime" angegeben)
set <name> off
stoppt die Aufnahme der Kamera <name>
set <name> optimizeParams [mirror:<value>] [flip:<value>] [rotate:<value>] [ntp:<value>] (gilt für CAM)
Setzt eine oder mehrere Eigenschaften für die Kamera. Das Video kann gespiegelt (mirror), auf den Kopf gestellt (flip) oder
gedreht (rotate) werden. Die jeweiligen Eigenschaften müssen von der Kamera unterstützt werden. Mit "ntp" wird der Zeitserver
eingestellt den die Kamera zur Zeitsynchronisation verwendet.
<value> kann sein für:
mirror, flip, rotate: true | false
ntp: der Name oder die IP-Adresse des Zeitservers
Beispiele: set <name> optimizeParams mirror:true flip:true ntp:time.windows.com
# Das Bild wird gespiegelt, auf den Kopf gestellt und der Zeitserver auf "time.windows.com" eingestellt. set <name> optimizeParams ntp:Surveillance%20Station
# Die Surveillance Station wird als Zeitserver eingestellt. (NTP-Dienst muss im DSM aktiviert sein) set <name> optimizeParams mirror:true flip:false rotate:true
# Das Bild wird gespiegelt und um 90 Grad gedreht.
set <name> pirSensor [activate | deactivate] (gilt für CAM)
Aktiviert / deaktiviert den Infrarot-Sensor der Kamera (sofern die Kamera einen PIR-Sensor enthält).
set <name> runPatrol <Patrolname> (gilt für CAM)
Dieses Kommando startet die vordefinierterte Überwachungstour einer PTZ-Kamera.
Die Überwachungstouren müssen dazu zunächst in der Synology Surveillance Station angelegt worden sein.
Das geschieht in der PTZ-Steuerung im IP-Kamera Setup -> PTZ-Steuerung -> Überwachung.
Die Überwachungstouren (Patrols) werden über das Kommando "get <name> caminfoall" eingelesen, welches beim Restart von FHEM automatisch abgearbeitet wird.
Der Einlesevorgang kann durch ein Kamerapolling regelmäßig wiederholt werden. Ein langes Pollingintervall ist in diesem Fall empfehlenswert, da sich die
Überwachungstouren nur im Fall der Neuanlage bzw. Änderung verändern werden.
Nähere Informationen zur Anlage von Überwachungstouren sind in der Hilfe zur Surveillance Station enthalten.
- MJPEG-LiveStream. Audiowiedergabe wird mit angeboten wenn verfügbar.
live_fw_hls
- HLS-LiveStream (aktuell nur Mac Safari und mobile iOS/Android-Geräte)
live_link
- Link zu einem MJPEG-Livestream
live_open [<room>]
- öffnet MJPEG-Stream in separatem Browser-Fenster
lastrec_fw
- letzte Aufnahme als iFrame Objekt
lastrec_fw_MJPEG
- nutzbar wenn Aufnahme im Format MJPEG vorliegt
lastrec_fw_MPEG4/H.264
- nutzbar wenn Aufnahme im Format MPEG4/H.264 vorliegt
lastrec_open [<room>]
- letzte Aufnahme wird in separatem Browser-Fenster geöffnet
lastsnap_fw
- letzter Schnappschuss wird dargestellt
Mit "live_fw, live_link, live_open" wird ein MJPEG-Livestream, entweder als eingebettetes Image
oder als generierter Link, gestartet.
Der Befehl "live_open" öffnet ein separates Browserfenster mit dem MJPEG-Livestream. Wird dabei optional der Raum mit
angegeben, wird das Browserfenster nur dann gestartet, wenn dieser Raum aktuell im Browser geöffnet ist.
Soll mit "live_fw_hls" ein HLS-Stream verwendet werden, muss die Kamera in der Synology Surveillance Station auf
das Videoformat H.264 (nicht MJPEG) eingestellt und HLS durch die eingesetzte SVS-Version unterstützt sein.
Diese Möglichkeit wird deshalb nur dann angeboten wenn das Reading "CamStreamFormat" den Wert "HLS" hat.
Der Zugriff auf die letzte Aufnahme einer Kamera kann über die Optionen "lastrec_fw.*" bzw. "lastrec_open" erfolgen.
Bei Verwendung von "lastrec_fw.*" wird die letzte Aufnahme als eingebettetes iFrame-Objekt abgespielt. Es werden entsprechende
Steuerungselemente zur Wiedergabegeschwindigkeit usw. angeboten wenn verfügbar.
Der Befehl "set <name> runView lastsnap_fw" zeigt den letzten Schnappschuss der Kamera eingebettet an.
Durch Angabe des optionalen Raumes bei "lastrec_open" erfolgt die gleiche Einschränkung wie bei "live_open".
Die Gestaltung der Fenster im FHEMWEB kann durch HTML-Tags im Attribut "htmlattr" beeinflusst werden.
Wird der Stream als live_fw gestartet, ändert sich die Größe entsprechend der Angaben von Width und Hight.
Das Kommando "set <name> runView live_open" startet den Livestreamlink sofort in einem neuen
Browserfenster.
Dabei wird für jede aktive FHEMWEB-Session eine Fensteröffnung initiiert. Soll dieses Verhalten geändert werden, kann
"set <name> runView live_open <room>" verwendet werden um das Öffnen des Browserfensters in einem
beliebigen, in einer FHEMWEB-Session aktiven Raum "<room>", zu initiieren.
Das gesetzte Attribut "livestreamprefix" überschreibt im Reading "LiveStreamUrl"
die Angaben für Protokoll, Servername und Port. Damit kann z.B. die LiveStreamUrl für den Versand und externen Zugriff
auf die SVS modifiziert werden.
Der Livestream wird über das Kommando "set <name> stopView" wieder beendet.
Die "runView" Funktion schaltet ebenfalls Streaming-Devices vom Typ "switched" in den entsprechenden Modus.
Abhängig vom wiedergegebenen Content werden unterschiedliche Steuertasten angeboten:
Start Recording
- startet eine Endlosaufnahme
Stop Recording
- stoppt eine Aufnahme
Take Snapshot
- löst einen Schnappschuß aus
Switch off
- stoppt eine laufende Wiedergabe
Hinweis zu HLS (HTTP Live Streaming):
Das Video startet mit einer technologisch bedingten Verzögerung. Jeder Stream wird in eine Reihe sehr kleiner Videodateien
(mit etwa 10 Sekunden Länge) segmentiert und an den Client ausgeliefert.
Die Kamera muss in der SVS auf das Videoformat H.264 eingestellt sein und nicht jeder Kameratyp ist gleichermassen für
HLS-Streaming geeignet.
Momentan kann HLS nur durch den Mac Safari Browser sowie auf mobilen iOS/Android-Geräten wiedergegeben werden.
set <name> setHome <PresetName> (gilt für PTZ-CAM)
Setzt die Home-Position der Kamera auf einen vordefinierten Preset "<PresetName>" oder auf die aktuell angefahrene
Position.
set <name> setPreset <PresetNummer> [<PresetName>] [<Speed>] (gilt für PTZ-CAM)
Setzt einen Preset mit dem Namen "<PresetName>" auf die aktuell angefahrene Position der Kamera. Optional kann die
Geschwindigkeit angegeben werden (<Speed>). Ist kein PresetName angegeben, wird die PresetNummer als Name verwendet.
Aus diesem Grund ist <PresetName> optional definiert, sollte jedoch im Normalfall gesetzt werden.
set <name> snap (gilt für CAM)
Ein Schnappschuß kann ausgelöst werden mit:
set <name> snap
Nachfolgend einige Beispiele für die Auslösung von Schnappschüssen.
Soll eine Reihe von Schnappschüssen ausgelöst werden wenn eine Aufnahme startet, kann das z.B. durch folgendes notify geschehen.
Sobald der Start der Kamera CamHE1 ausgelöst wird (Attribut event-on-change-reading -> "Record" setzen), werden abhängig davon 3 Snapshots im Abstand von 2 Sekunden getriggert.
define he1_snap_3 notify CamHE1:Record.*Start define h3 at +*{3}00:00:02 set CamHE1 snap
Triggern von 2 Schnappschüssen der Kamera "CamHE1" im Abstand von 6 Sekunden nachdem der Bewegungsmelder "MelderHE1" einen Event gesendet hat,
kann z.B. mit folgendem notify geschehen:
define he1_snap_2 notify MelderHE1:on.* define h2 at +*{2}00:00:06 set CamHE1 snap
Es wird die ID und der Filename des letzten Snapshots als Wert der Variable "LastSnapId" bzw. "LastSnapFilename" in den Readings der Kamera ausgegeben.
set <name> snapGallery [1-10] (gilt für CAM)
Der Befehl ist nur vorhanden wenn das Attribut "snapGalleryBoost=1" gesetzt wurde.
Er erzeugt eine Ausgabe der letzten [x] Schnappschüsse ebenso wie "get <name> snapGallery". Abweichend von "get" wird mit Attribut
Attribut "snapGalleryBoost=1" kein Popup erzeugt, sondern die Schnappschußgalerie als Browserseite
dargestellt. Alle weiteren Funktionen und Attribute entsprechen dem "get <name> snapGallery" Kommando.
Wenn die Ausgabe einer Schnappschußgalerie, z.B. über ein "at oder "notify", getriggert wird, sollte besser das
"get <name> snapGallery" Kommando anstatt "set" verwendet werden.
set <name> startTracking (gilt für CAM mit Tracking Fähigkeit)
Startet Objekt Tracking der Kamera.
Der Befehl ist nur vorhanden wenn die Surveillance Station die Fähigkeit der Kamera zum Objekt Tracking erkannt hat
(Reading "CapPTZObjTracking").
set <name> stopTracking (gilt für CAM mit Tracking Fähigkeit)
Stoppt Objekt Tracking der Kamera.
Der Befehl ist nur vorhanden wenn die Surveillance Station die Fähigkeit der Kamera zum Objekt Tracking erkannt hat
(Reading "CapPTZObjTracking").
Get
Mit SSCam können die Eigenschaften der Surveillance Station und der Kameras abgefragt werden.
Die aufgeführten get-Befehle sind für CAM/SVS-Devices oder nur für CAM-Devices bzw. nur für SVS-Devices gültig. Sie stehen im
Drop-Down-Menü des jeweiligen Devices zur Auswahl zur Verfügung.
get <name> caminfoall (gilt für CAM/SVS)
get <name> caminfo (gilt für CAM)
Es werden SVS-Parameter und abhängig von der Art der Kamera (z.B. Fix- oder PTZ-Kamera) die verfügbaren Kamera-Eigenschaften
ermittelt und als Readings zur Verfügung gestellt.
So wird zum Beispiel das Reading "Availability" auf "disconnected" gesetzt falls die Kamera von der Surveillance Station
getrennt ist.
"getcaminfo" ruft eine Teilmenge von "getcaminfoall" ab.
get <name> eventlist (gilt für CAM)
Es wird das Reading "CamEventNum" und "CamLastRec"
aktualisiert, welches die Gesamtanzahl der registrierten Kameraevents und den Pfad / Namen der letzten Aufnahme enthält.
Dieser Befehl wird implizit mit "get <name> caminfoall" ausgeführt.
Mit dem Attribut "videofolderMap" kann der Inhalt des Readings "VideoFolder" überschrieben werden.
Dies kann von Vortel sein wenn das Surveillance-Verzeichnis der SVS an dem lokalen PC unter anderem Pfadnamen gemountet ist
und darüber der Zugriff auf die Aufnahmen erfolgen soll (z.B. Verwendung bei Email-Versand).
Ein DOIF-Beispiel für den Email-Versand von Snapshot und Aufnahmelink per non-blocking sendmail:
define CamHE1.snap.email DOIF ([CamHE1:"LastSnapFilename"])
({DebianMailnbl ('Recipient@Domain','Bewegungsalarm CamHE1','Eine Bewegung wurde an der Haustür registriert. Aufnahmelink: \
\[CamHE1:VideoFolder]\[CamHE1:CamLastRec]','/media/sf_surveillance/@Snapshot/[CamHE1:LastSnapFilename]')})
get <name> homeModeState (gilt für SVS)
HomeMode-Status der Surveillance Station wird abgerufen.
get <name> listLog [severity:<Loglevel>] [limit:<Zeilenzahl>] [match:<Suchstring>] (gilt für SVS)
Ruft das Surveillance Station Log vom Synology Server ab. Ohne Angabe der optionalen Zusätze wird das gesamte Log abgerufen.
Es können alle oder eine Auswahl der folgenden Optionen angegeben werden:
<Loglevel> - Information, Warning oder Error. Nur Sätze mit dem Schweregrad werden abgerufen (default: alle)
<Zeilenzahl> - die angegebene Anzahl der Logzeilen (neueste) wird abgerufen (default: alle)
<Suchstring> - nur Logeinträge mit dem angegeben String werden abgerufen (Achtung: kein Regex, der Suchstring wird im Call an die SVS mitgegeben)
Beispiele
get <name> listLog severity:Error limit:5
Zeigt die letzten 5 Logeinträge mit dem Schweregrad "Error" get <name> listLog severity:Information match:Carport
Zeigt alle Logeinträge mit dem Schweregrad "Information" die den String "Carport" enthalten get <name> listLog severity:Warning
Zeigt alle Logeinträge mit dem Schweregrad "Warning"
Wurde mit dem Attribut "pollcaminfoall" das Polling der SVS aktiviert, wird das Reading
"LastLogEntry" erstellt.
Im Protokoll-Setup der SVS kann man einstellen was protokolliert werden soll. Für weitere Informationen
siehe Synology Online-Hlfe.
get <name> listPresets (gilt für PTZ-CAM)
Die für die Kamera gespeicherten Presets werden in einem Popup ausgegeben.
get <name> scanVirgin (gilt für CAM/SVS)
Wie mit get caminfoall werden alle Informationen der SVS und Kamera abgerufen. Allerdings wird in jedem Fall eine
neue Session ID generiert (neues Login), die Kamera-ID neu ermittelt und es werden alle notwendigen API-Parameter neu
eingelesen.
get <name> snapGallery [1-10] (gilt für CAM)
Es wird ein Popup mit den letzten [x] Schnapschüssen erzeugt. Ist das Attribut "snapGalleryBoost" gesetzt,
werden die letzten Schnappschüsse (default 3) über Polling abgefragt und im Speicher gehalten. Das Verfahren hilft die Ausgabe zu beschleunigen,
kann aber möglicherweise nicht den letzten Schnappschuß anzeigen, falls dieser NICHT über das Modul ausgelöst wurde.
Diese Funktion kann ebenfalls, z.B. mit "at" oder "notify", getriggert werden. Dabei wird die Schnappschußgalerie auf allen
verbundenen FHEMWEB-Instanzen als Popup angezeigt.
Zur weiteren Steuerung dieser Funktion stehen die Attribute:
snapGalleryBoost
snapGalleryColumns
snapGalleryHtmlAttr
snapGalleryNumber
snapGallerySize
zur Verfügung.
Hinweis:
Abhängig von der Anzahl und Auflösung (Qualität) der Schnappschuß-Images werden entsprechend ausreichende CPU und/oder
RAM-Ressourcen benötigt.
get <name> snapfileinfo (gilt für CAM)
Es wird der Filename des letzten Schnapschusses ermittelt. Der Befehl wird implizit mit "get <name> snap"
ausgeführt.
get <name> snapinfo (gilt für CAM)
Es werden Schnappschussinformationen gelesen. Hilfreich wenn Schnappschüsse nicht durch SSCam, sondern durch die Bewegungserkennung der Kamera
oder Surveillance Station erzeugt werden.
get <name> stmUrlPath (gilt für CAM)
Mit diesem Kommando wird der aktuelle Streamkey der Kamera abgerufen und das Reading mit dem Key-Wert gefüllt.
Dieser Streamkey kann verwendet werden um eigene Aufrufe eines Livestreams aufzubauen (siehe Beispiel).
Wenn das Attribut "showStmInfoFull" gesetzt ist, werden zusaätzliche Stream-Informationen wie "StmKeyUnicst", "StmKeymjpegHttp" ausgegeben.
Diese Readings enthalten die gültigen Stream-Pfade zu einem Livestream und können z.B. versendet und von einer entsprechenden Anwendung ohne session Id geöffnet werden.
Wenn das Attribut "livestreamprefix" (Format: "http(s)://<hostname><port>) gesetzt ist, wird der Servername und Port überschrieben soweit es sinnvoll ist.
Wird Polling der Kameraeigenschaften genutzt, wird die stmUrlPath-Funktion automatisch mit ausgeführt.
Beispiel für den Aufbau eines Http-Calls zu einem Livestream mit StmKey:
cameraId (Internal CAMID), StmKey müssen durch gültige Werte ersetzt werden.
Hinweis:
Falls der Stream-Aufruf versendet und von extern genutzt wird sowie hostname / port durch gültige Werte ersetzt und die
Routerports entsprechend geöffnet werden, ist darauf zu achten, dass diese sensiblen Daten nicht durch unauthorisierte Personen
für den Zugriff genutzt werden können !
get <name> storedCredentials (gilt für CAM/SVS)
Die gespeicherten Anmeldeinformationen (Credentials) werden in einem Popup als Klartext angezeigt.
get <name> svsinfo (gilt für CAM/SVS)
Ermittelt allgemeine Informationen zur installierten SVS-Version und andere Eigenschaften.
Polling der Kamera/SVS-Eigenschaften:
Die Abfrage der Kameraeigenschaften erfolgt automatisch, wenn das Attribut "pollcaminfoall" (siehe Attribute) mit einem Wert > 10 gesetzt wird.
Per Default ist das Attribut "pollcaminfoall" nicht gesetzt und das automatische Polling nicht aktiv.
Der Wert dieses Attributes legt das Intervall der Abfrage in Sekunden fest. Ist das Attribut nicht gesetzt oder < 10 wird kein automatisches Polling
gestartet bzw. gestoppt wenn vorher der Wert > 10 gesetzt war.
Das Attribut "pollcaminfoall" wird durch einen Watchdog-Timer überwacht. Änderungen des Attributwertes werden alle 90 Sekunden ausgewertet und entsprechend umgesetzt.
Eine Änderung des Pollingstatus / Pollingintervalls wird im FHEM-Logfile protokolliert. Diese Protokollierung kann durch Setzen des Attributes "pollnologging=1" abgeschaltet werden.
Dadurch kann ein unnötiges Anwachsen des Logs vermieden werden. Ab verbose=4 wird allerdings trotz gesetzten "pollnologging"-Attribut ein Log des Pollings
zu Analysezwecken aktiviert.
Wird FHEM neu gestartet, wird bei aktivierten Polling der ersten Datenabruf innerhalb 60s nach dem Start ausgeführt.
Der Status des automatischen Pollings wird durch das Reading "PollState" signalisiert:
PollState = Active - automatisches Polling wird mit Intervall entsprechend "pollcaminfoall" ausgeführt
PollState = Inactive - automatisches Polling wird nicht ausgeführt
Die Bedeutung der Readingwerte ist unter Readings beschrieben.
Hinweise:
Wird Polling eingesetzt, sollte das Intervall nur so kurz wie benötigt eingestellt werden da die ermittelten Werte überwiegend statisch sind.
Das eingestellte Intervall sollte nicht kleiner sein als die Summe aller HTTP-Verarbeitungszeiten.
Pro Pollingaufruf und Kamera werden ca. 10 - 20 Http-Calls gegen die Surveillance Station abgesetzt.
Bei einem eingestellten HTTP-Timeout (siehe Attribut) "httptimeout") von 4 Sekunden kann die theoretische Verarbeitungszeit nicht höher als 80 Sekunden betragen.
In dem Beispiel sollte man das Pollingintervall mit einem Sicherheitszuschlag auf nicht weniger 160 Sekunden setzen.
Ein praktikabler Richtwert könnte zwischen 600 - 1800 (s) liegen.
Sind mehrere Kameras in SSCam definiert, sollte "pollcaminfoall" nicht bei allen Kameras auf exakt den gleichen Wert gesetzt werden um Verarbeitungsengpässe
und dadurch versursachte potentielle Fehlerquellen bei der Abfrage der Synology Surveillance Station zu vermeiden.
Ein geringfügiger Unterschied zwischen den Pollingintervallen der definierten Kameras von z.B. 1s kann bereits als ausreichend angesehen werden.
Internals
Die Bedeutung der verwendeten Internals stellt die nachfolgende Liste dar:
CAMID - die ID der Kamera in der SVS, der Wert wird automatisch anhand des SVS-Kameranamens ermittelt.
CAMNAME - der Name der Kamera in der SVS
COMPATIBILITY - Information bis zu welcher SVS-Version das Modul kompatibel bzw. zur Zeit getestet ist (siehe Reading "compstate")
CREDENTIALS - der Wert ist "Set" wenn die Credentials gesetzt wurden
MODEL - Unterscheidung von Kamera-Device (Hersteller - Kameratyp) und Surveillance Station Device (SVS)
NAME - der Kameraname in FHEM
OPMODE - die zuletzt ausgeführte Operation des Moduls
SERVERADDR - IP-Adresse des SVS Hostes
SERVERPORT - der SVS-Port
Attribute
debugactivetoken
wenn gesetzt wird der Status des Active-Tokens gelogged - nur für Debugging, nicht im
normalen Betrieb benutzen !
disable
deaktiviert das Gerätemodul bzw. die Gerätedefinition
genericStrmHtmlTag
Das Attribut enthält HTML-Tags zur Video-Spezifikation in einem Streaming-Device von Typ "generic".
(siehe "set <name> createStreamDev generic")
livestreamprefix
überschreibt die Angaben zu Protokoll, Servernamen und Port zur Weiterverwendung der
Livestreamadresse als z.B. externer Link. Anzugeben in der Form
"http(s)://<servername>:<port>"
loginRetries
setzt die Anzahl der Login-Wiederholungen im Fehlerfall (default = 1)
noQuotesForSID
dieses Attribut kann in bestimmten Fällen die Fehlermeldung "402 - permission denied"
vermeiden und ein login ermöglichen.
pollcaminfoall
Intervall der automatischen Eigenschaftsabfrage (Polling) einer Kamera (kleiner/gleich 10: kein
Polling, größer 10: Polling mit Intervall)
pollnologging
"0" bzw. nicht gesetzt = Logging Gerätepolling aktiv (default), "1" = Logging
Gerätepolling inaktiv
ptzPanel_Home
Im PTZ-Steuerungspaneel wird dem Home-Icon (im Attribut "ptzPanel_row02") automatisch der Wert des Readings
"PresetHome" zugewiesen.
Mit "ptzPanel_Home" kann diese Zuweisung mit einem Preset aus der verfügbaren Preset-Liste geändert werden.
ptzPanel_iconPath
Pfad für Icons im PTZ-Steuerungspaneel, default ist "www/images/sscam".
Der Attribut-Wert wird für alle Icon-Dateien außer *.svg verwendet.
ptzPanel_iconPrefix
Prefix für Icon-Dateien im PTZ-Steuerungspaneel, default ist "black_btn_".
Der Attribut-Wert wird für alle Icon-Dateien außer *.svg verwendet.
Beginnen die verwendeten Icon-Dateien z.B. mit "black_btn_" ("black_btn_CAMDOWN.png"), braucht das Icon in den
Attributen "ptzPanel_row[00-09]" nur noch mit dem darauf folgenden Teilstring, z.B. "CAMDOWN.png" benannt zu werden.
ptzPanel_row[00-09] <command>:<icon>,<command>:<icon>,...
Für PTZ-Kameras werden automatisch die Attribute "ptzPanel_row00" bis "ptzPanel_row04" zur Verwendung im
PTZ-Steuerungspaneel angelegt.
Die Attribute enthalten eine Komma-separarierte Liste von Befehl:Icon-Kombinationen (Tasten) je Paneelzeile.
Eine Paneelzeile kann beliebig viele Tasten enthalten. Die Attribute "ptzPanel_row00" bis "ptzPanel_row04" können nicht
gelöscht werden da sie in diesem Fall automatisch wieder angelegt werden. Der User kann die Attribute ändern und ergänzen.
Diese Änderungen bleiben erhalten.
Bei Bedarf kann die Belegung der Home-Taste in "ptzPanel_row02" geändert werden mit dem Attribut "ptzPanel_Home".
Die Icons werden im Pfad "ptzPanel_iconPath" gesucht. Dem Icon-Namen wird "ptzPanel_iconPrefix" vorangestellt.
Eigene Erweiterungen des PTZ-Steuerungspaneels können über die Attribute "ptzPanel_row05" bis "ptzPanel_row09"
vorgenommen werden. Zur Erstellung eigener Icons gibt es eine Vorlage im SVN:
contrib/sscam/black_btn_CAM_Template.pdn. Diese
Vorlage kann zum Beispiel mit Paint.Net bearbeitet werden.
Hinweis
Für eine Leerfeld verwenden sie bitte ":CAMBLANK.png" bzw. ":CAMBLANK.png,:CAMBLANK.png,:CAMBLANK.png,..." für eine
Leerzeile.
Beispiel:
attr <name> ptzPanel_row00 move upleft:CAMUPLEFTFAST.png,:CAMBLANK.png,move up:CAMUPFAST.png,:CAMBLANK.png,move upright:CAMUPRIGHTFAST.png
# Der Befehl "move upleft" wird der Kamera beim Druck auf Tastenicon "CAMUPLEFTFAST.png" übermittelt.
ptzPanel_use
Die Anzeige des PTZ-Steuerungspaneels in der Detailanzeige bzw. innerhalb eines generierten Streamdevice wird
ein- bzw. ausgeschaltet (default ein).
rectime
festgelegte Aufnahmezeit wenn eine Aufnahme gestartet wird. Mit rectime = 0 wird eine
Endlosaufnahme gestartet. Ist "rectime" nicht gesetzt, wird der Defaultwert von 15s
verwendet.
recextend
"rectime" einer gestarteten Aufnahme wird neu gesetzt. Dadurch verlängert sich die
Aufnahemzeit einer laufenden Aufnahme
session
Auswahl der Login-Session. Nicht gesetzt oder "DSM" -> session wird mit DSM aufgebaut
(Standard). "SurveillanceStation" -> Session-Aufbau erfolgt mit SVS
simu_SVSversion
Simuliert eine andere SVS-Version. (es ist nur eine niedrigere als die installierte SVS
Version möglich !)
snapGalleryBoost
Wenn gesetzt, werden die letzten Schnappschüsse (default 3) über Polling im Speicher gehalten und mit "set/get snapGallery"
aufbereitet angezeigt. Dieser Modus bietet sich an wenn viele bzw. Fullsize Images angezeigt werden sollen.
Ist das Attribut eingeschaltet, können bei "set/get snapGallery" keine Argumente mehr mitgegeben werden.
(siehe Attribut "snapGalleryNumber")
snapGalleryColumns
Die Anzahl der Snaps die in einer Reihe im Popup erscheinen sollen (default 3).
snapGalleryHtmlAttr
hiermit kann die Bilddarstellung beeinflusst werden.
Ist das Attribut nicht gesetzt, wird das Attribut "htmlattr" verwendet.
Ist auch dieses nicht gesetzt, wird eine Standardvorgabe verwendet (width="500" height="325").
snapGalleryNumber
Die Anzahl der abzurufenden Schnappschüsse (default 3).
snapGallerySize
Mit diesem Attribut kann die Qualität der Images eingestellt werden (default "Icon").
Im Modus "Full" wird die original vorhandene Auflösung der Images abgerufen. Dies erfordert mehr Ressourcen und kann die
Anzeige verlangsamen. Mit "snapGalleryBoost=1" kann die Ausgabe beschleunigt werden, da in diesem Fall die Aufnahmen über
Polling abgerufen und nur noch zur Anzeige gebracht werden.
showStmInfoFull
zusaätzliche Streaminformationen wie LiveStreamUrl, StmKeyUnicst, StmKeymjpegHttp werden
ausgegeben
showPassInLog
wenn gesetzt wird das verwendete Passwort im Logfile (verbose 4) angezeigt.
(default = 0)
videofolderMap
ersetzt den Inhalt des Readings "VideoFolder", Verwendung z.B. bei gemounteten
Verzeichnissen
verbose
Es werden verschiedene Verbose-Level unterstützt.
Dies sind im Einzelnen:
0
- Start/Stop-Ereignisse werden geloggt
1
- Fehlermeldungen werden geloggt
2
- Meldungen über wichtige Ereignisse oder Alarme
3
- gesendete Kommandos werden geloggt
4
- gesendete und empfangene Daten werden geloggt
5
- alle Ausgaben zur Fehleranalyse werden geloggt. ACHTUNG: möglicherweise werden sehr viele Daten in das Logfile geschrieben!
Über den Pollingmechanismus bzw. durch Abfrage mit "Get" werden Readings bereitgestellt, deren Bedeutung in der nachfolgenden Tabelle dargestellt sind.
Die übermittelten Readings können in Abhängigkeit des Kameratyps variieren.
CamAudioType
- listet den eingestellten Audiocodec auf wenn verwendet
Availability
- Verfügbarkeit der Kamera (disabled, enabled, disconnected, other)
CamEventNum
- liefert die Gesamtanzahl der in SVS registrierten Events der Kamera
CamExposureControl
- zeigt den aktuell eingestellten Typ der Belichtungssteuerung
Das Modul SSCamSTRM ist ein mit SSCam abgestimmtes Gerätemodul zur Definition von Streaming-Devices.
Abhängig vom Zustand des Streaming-Devices werden zum Start von Aktionen unterschiedliche Drucktasten angeboten:
Switch off
- stoppt eine laufende Wiedergabe
Refresh
- auffrischen einer Ansicht (kein Browser Seiten-Reload)
Restart
- neu starten eines laufenden Contents (z.B. eines HLS-Streams)
MJPEG
- Startet MJPEG Livestream
HLS
- Startet HLS (HTTP Live Stream)
Last Record
- spielt die letzte Aufnahme als iFrame
Last Rec H.264
- spielt die letzte Aufnahme wenn als H.264 vorliegend
Last Rec MJPEG
- spielt die letzte Aufnahme wenn als MJPEG vorliegend
Last SNAP
- zeigt den letzten Snapshot
Start Recording
- startet eine Endlosaufnahme
Stop Recording
- stoppt eine Aufnahme
Take Snapshot
- löst einen Schnappschuß aus
Define
Ein SSCam Streaming-Device wird durch den SSCam Befehl "set <name> createStreamDev" erstellt.
Siehe auch die Beschreibung zum SSCam "createStreamDev" Befehl.
Set
N/A
Get
N/A
Attributes
disable
aktiviert/deaktiviert das Device
forcePageRefresh
Das Attribut wird durch SSCam ausgewertet.
Wenn gesetzt, wird ein Reload aller Browserseiten mit aktiven FHEMWEB-Verbindungen bei bestimmten Aktionen erzwungen.
Das kann hilfreich sein, falls es mit Longpoll Probleme geben sollte.
eingefügt ist.
hideDisplayName
verbirgt den Device/Alias-Namen (Link zur Detailansicht)
htmlattr
HTML-Attribute zur Darstellungsänderung des SSCam Streaming Device z.B.:
attr <name> htmlattr width="480" height="560"
STACKABLE
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: STACKABLE
Mit Hilfe dieses Moduls kann man die "Stackable CC" Geräte von busware.de in
FHEM integrieren. Diese Geräte ermöglichen eine Menge von CULs an einem RPi
anzuschliessen.
Das erste Gerät wird als CUL definiert, alle nachfolgenden als STACKABLE_CC.
Define
define <name> STACKABLE_CC <Base-Device-Name>
<Base-Device-Name> ist der Name des Gerätes, der als Basis für das
aktuelle Gerät dient.
Beispiel:
Das rfmode Attribut muss explizit spezifiziert werden. Das gilt nur
für die STACKABLE_CC Definitionen, und nicht für die erste, die
als CUL definiert wurde.
Falls SlowRF spezifiziert wurde, dann muss das FHTID explizit gesetzt
werden, mit folgendem Kommando: "set SCCX raw T01HHHH". Auch das ist nur
für die STACKABLE_CC nötig.
Falls ein Gerät umbenannt wird, was als Basis für ein STACKABLE_CC
dient, dann muss es auch in der Definition des abhängigen Gerätes
umbenannt werden, und FHEM muss neugestartet werden.
Wertpapierdaten von verschiedenen Quellen holen Vorbereitung
Perl Modul Finance::Quote muss installiert werden: cpan install Finance::Quote oder sudo apt-get install libfinance-quote-perl
Define
define <name> STOCKQUOTES
Set
<Symbol> hängt von den jeweiligen Quellen ab. Kann auch eine WKN sein. Hier muss ggf. experimentiert werden.
set <name> buy <Symbol> <Menge> <Gesamtpreis>
Wertpapier in Depot einbuchen. Wenn dieses Wertpapier bereits vorhanden ist, werden die Neuen einfach dazuaddiert.
set <name> sell <Symbol> <Menge> <Gesamtpreis>
Wertpapier (auch Teilmenge) wieder ausbuchen.
set <name> add <Symbol>
Wertpapier nur beobachten
set <name> remove <Symbol>
Entferne Wertpapier das nur beobachtet wird.
set <name> clearReadings
Alle Readings löschen.
set <name> update
Alle Readings aktualisieren.
Get
get <name> sources
Verfügbare Datenquellen auflisten. Diese werden für die Attribute defaultSource und sources benötigt
get <name> currency <Symbol>
Wertpapierwährung ermitteln
Attribute
currency
Währung, in der die Wertpapiere angezeigt werden.
Default: EUR, gültige Werte: Währungskürzel
defaultSource
Standardquelle für die Wertpapierdaten.
Default: europe, gültige Werte: alles was get <name> sources ausgibt.
queryTimeout
Timeout beim holen der Daten in Sekunden.
Standard: 120, gültige Werte: Zahl
pollInterval
Aktualisierungsintervall in Sekunden.
Standard: 300, gültige Werte: Zahl
sources
Für jedes Wertpapier kann eine eigene Datenquelle definiert werden.
Die Datenquellen können über get <name> sources angefragt werden.
Format: <Symbol>:<Source>[,<Symbol>:<Source>...]
Beispiel: A0M16S:vwd,532669:unionfunds,849104:unionfunds
Alle nicht aufgeführten Werpapiere werden über die defaultSource abgefragt.
stocks
Wird über buy/sell/add/remove angelegt/modifiziert
Enthält die Werpapiere im Format <Symbol>:<Anzahl>:<Einstandswert>[,<Symbol>:<Anzahl>:<Einstandswert>...]
STV
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: STV
SUNRISE_EL definiert eine Reihe von Perl-Subroutinen (z.B. zur Nutzung mit at):
sunrise() - absolute Zeit des nächsten
Sonnenaufgangs (+ 24 h, wenn am nächsten Tag)
sunset() - absolute Zeit des nächsten
Sonnenuntergangs (+ 24 h, wenn am nächsten Tag)
sunrise_rel() - relative Zeit des nächsten
Sonnenaufgangs
sunset_rel() - relative Zeit des nächsten
Sonnenuntergangs
sunrise_abs() - absolute Zeit des nächsten
Sonnenaufgangs (ohne Stundenzuschlag)
sunset_abs() - absolute Zeit des nächsten
Sonnenuntergangs (ohne Stundenzuschlag)
sunrise_abs_dat() - absolute Zeit des nächsten
Sonnenaufgangs an einem bestimmten Tag
sunset_abs_dat() - absolute Zeit des nächsten
Sonnenuntergangs an einem bestimmten Tag
isday() - Tag oder Nacht
Breite, Länge und Höhenwinkel
Bevor du SUNRISE_EL verwendest, solltest du im global-Device die
Werte für latitude (geographische Breite) und longitude (geographische Länge) entsprechend
deines Standorts setzen.
Exkurs: latitude & longitude ermitteln
Deine geopgragischen Koordinaten kannst du z.B. mit Google Maps bestimmen.
Dazu setzt du einen Punkt auf der Karte und findest dann im unteren Bereich der Karte die Angabe für beide Werte.
Der erste Wert ist die geographische Breite (latitude); der zweite Wert die geographische Länge
(longitude).
SUNRISE_EL geht von einem Höhenwinkel der Sonne bezogen zum Horizont, h, von -6° aus. Dieser Wert bedeutet,
dass die Sonne 6° unter dem Horizont steht und Lesen im Freien ohne künstliche Beleuchtung nicht
mehr möglich ist (civil twilight, bürgerliche Dämmerung).
SUNRISE_EL speichert diesen Wert in $defaultaltit.
Jede der folgenden Funktionen akzeptiert bis zu vier (bzw. fünf) Parameter in der angegebenen Reihenfolge:
unix timestamp
Ausschließlichsunrise_abs_dat() & sunset_abs_dat()
erwarten als ersten Parameter einen Unix-Timestamp (Unix-Epoche) in Sekunden, der ein Datum spezifiziert. Andere Subroutinen
erwarten diesen Parameter nicht!
altitude
Eine der folgenden Zeichenketten, die unterschiedliche Höhenwinkel h definieren und den Wert
von $defaultaltit verändern.
Erlaubte Werte sind:
REAL, h = 0°,
CIVIL, h = -6°,
NAUTIC, h = -12°,
ASTRONOMIC, h = -18°,
oder HORIZON=, gefolgt von einer positiven oder negativen Zahl ohn Gradzeichen, die einen Höhenwinkel
angibt.
offset
Offset in Sekunden, der zu dem Rückgabewert der Funktion addiert wird.
isday()
ignoriert diesen Wert.
min
Einen Zeitstempel im Format hh:mm, vor dem keine Aktion ausgeführt werden soll.
isday() wird (int) 0 zurückliefern, wenn min gesetzt
und der aktuelle Zeitstempel kleiner ist.
max
Einen Zeitstempel im Format hh:mm, nach dem keine Aktion ausgeführt werden soll.
isday() wird (int) 0 zurückliefern, wenn max gesetzt
und der aktuelle Zeitstempel größer ist.
Subroutinen
sunrise(), sunset()
liefern den absoluten Wert des nächsten Sonnenauf- bzw. -untergangs zurück, wobei 24 Stunden zu
diesem Wert addiert werden,
wenn der Zeitpunkt am nächsten Tag sein wird, im Format hh:mm:ss.
sunrise_rel(), sunset_rel()
liefern die relative Zeit bis zum nächsten Sonnenauf- bzw. -untergang im Format
hh:mm:ss.
sunrise_abs(), sunset_abs()
liefern den nächsten absoluten Zeitpunkt des nächsten Sonnenauf- bzw. -untergangs
ohne 24 Stunden
zu addieren im Format hh:mm:ss.
sunrise_abs_dat(), sunset_abs()_dat
liefern den nächsten absoluten Zeitpunkt des nächsten Sonnenauf- bzw. -untergangs
ohne 24 Stunden zu addieren im Format hh:mm:ss zu einem als ersten Parameter angegebenen Datum.
isday()
liefert (int) 1 wenn Tag ist, (int) 0 wenn Nacht ist.
Beispiele
sunrise("CIVIL");
Zeitpunkt des Sonnenaufgangs bei einem Höhenwinkel der Sonne von -6° unter dem Horizont (identisch zu sunrise()).
sunset("HORIZON=-3");
Zeitpunkt des Sonnenuntergangs bei einem Höhenwinkel der Sonne von 3° unter dem Horizont
(zwischen REAL und CIVIL).
sunset("HORIZON=1");
Zeitpunkt des Sonnenaufgangs bei einem Höhenwinkel der Sonne von 1° über dem Horizont.
defmod a15 at *{sunset("REAL",0,"18:00","21:00")} set lamp1 on
Schalte lamp1 an, sobald die Sonne unter den Horizont sinkt (h ≤ 0), jedoch nicht vor 18:00 und nicht nach 21:00.
my $date = time() + 7*86400;
sunrise_abs_dat($date);
Berechne den Sonnenaufgang von heute + sieben Tage.
my $date = time() + 7*86400;
sunrise_abs_dat($date, "CIVIL");
Berechne den Sonnenaufgang von heute + sieben Tage mit einem Höhenwinkel h = -6°.
Define
SUNRISE_EL kann nicht explizit als Device definiert werden,
sondern bietet die oben genannten Subroutinen.
Set
SUNRISE_EL unterstützt set nicht.
Get
SUNRISE_EL unterstützt get nicht.
Attribute
Diese Attribute müssen im global-Device gesetzt werden!
latitude
Geographische Breite in Dezimalgrad in Form eines float, z.B 49.872471.
Default-Wert ist 50.112.
longitude
Geographische Länge in Dezimalgrad in Form eines float, z.B 8.650991.
Default-Wert ist 8.686.
altitude
Höhenwinkel h der Sonne bezogen auf den Horizont in Grad in Form einer Zahl ohne Gradzeichen.
Dies ist das Zeichenmodul von FHEMWEB, mit dem Vektorgrafiken (SVG) erzeugt
werden.
Beispiel:
define MyPlot SVG inlog:temp4hum4:CURRENT
Hinweise:
Normalerweise müssen SVG-Geräte nicht manuell erzeugt
werden, da FHEMWEB es für den Nutzer einfach macht: man muss in
der Detailansicht eines FileLogs wechseln und auf "Create SVG instance"
klicken.
CURRENT als <logfile> wird immer das aktuelle Logfile
benutzen, selbst dann, wenn der Name des Logfiles sich
regelmäßig ändert.
Aus historischen Gründen benötigt jede SVG-Instanz eine
sog. .gplot Datei, die auch als Input für das gnuplot Programm
verwendet werden kann. Einige besondere Zeilen (welche mit #FileLog
oder #DbLog beginnen) werden zusätzlich benutzt, diese werden von
gnuplot als Kommentar betrachtet. Auf der anderen Seite implementiert
dieses Modul nicht alle gnuplot-Attribute.
Set
copyGplotFile
Kopiert die aktuell ausgewählte .gplot Datei in eine neue Datei, die
den Namen der SVG Instanz trägt; bereits bestehende Dateien mit
gleichem Namen werden überschrieben. Diese Vorgehensweise ist
notwendig, wenn man den Ploteditor benutzt. Erzeugt man aus der
Detailansicht des FileLogs die SVG Instanz, wird eine eindeutige
.gplot-Datei erzeugt. In diesem Fall ist dieses Befehl nicht
erforderlich.
Get
N/A
Attribute
captionLeft
Anzeigen der Legende auf der linken Seite. Überholt, wird
automatisch nach captionPos konvertiert.
captionPos
right - Anzeigen der Legende auf der rechten Seite (default)
left - Anzeigen der Legende auf der linken Seite
auto - Anzeigen der Labels der Legende auf der linken oder rechten Seite
je nach Achsenzugehörigkeit
fixedoffset <nTage>
Verschiebt den Plot-Offset um einen festen Wert (in Tagen).
fixedrange [offset]
Erste Alternative:
Enthält zwei Zeit-Spezifikationen in der Schreibweise YYYY-MM-DD,
getrennt durch ein Leerzeichen. scrollen der Zeitachse ist nicht
möglich, es wird z.B. verwendet, um sich die Daten verschiedener
Jahre auf eine Seite anzusehen.
Zweite Alternative:
Wenn der Wert entweder hour, <N>hours, day, <N>days, week,
month, year oder <N>years lautet, kann der Zoom-Level für
dieses SVG unabhängig vom User-spezifischen Zoom eingestellt werden.
Diese Einstellung ist nützlich für mehrere Plots auf einer
Seite: Eine Grafik ist mit dem Standard-Zoom am aussagekräftigsten,
die anderen mit einem Zoom über eine Woche. Der optionale
ganzzahlige Parameter [offset] setzt ein anderes Zeitintervall (z.B.
letztes Jahr: fixedrange year -1, vorgestern:
fixedrange day -2).
label
Eine Liste, bei der die einzelnen Werte mit einem zweifachen Doppelpunkt
voneinander getrennt werden. Diese Liste wird verwendet um die <L#>
Zeichenfolgen in der .gplot-Datei zu ersetzen. Dabei steht das # für
eine laufende Ziffer beginnend mit 1 (<L1>, <L2>, usw.).
Jeder Wert wird als Perl-Ausdruck bewertet, deshalb hat man Zugriff z.B.
auf die hinterlegten Funktionen.
Egal, ob es sich bei der Plotart um gnuplot-scroll(-svg) oder SVG
handelt, es können ebenfalls die Werte der individuellen Kurve
für min, max, mindate, maxdate, avg, cnt, sum, currval (letzter
Wert) und currdate (letztes Datum) durch Zugriff der entsprechenden Werte
über das data Hash verwendet werden. Siehe untenstehendes
Beispiel:
Eintrag in der .gplot-Datei: set ylabel <L1>
set y2label <L2>
Überschrift aus Maximum und dem letzten Wert der ersten
Kurve(FileLog)
Fhem config: attr wl_1 label "Max $data{max1}, Current
$data{currval1}"
Eintrag in der .gplot-Datei: set title <L1>
Die Werte minAll und maxAll (die das Minimum/Maximum aller Werte
repräsentieren) sind ebenfals im data hash vorhanden.
Überholt, wird durch das plotReplace Attribut abgelöst.
plotfunction
Eine Liste, deren Werte durch Leerzeichen voneinander getrennt sind.
Diese Liste wird verwendet um die <SPEC#> Zeichenfolgen in der
.gplot-Datei zu ersetzen. Dabei steht das # für eine laufende Ziffer
beginnend mit 1 (<SPEC1>, <SPEC2>, usw.) in der #FileLog oder
#DBLog Anweisung. Mit diesem Attrbute ist es möglich eine
.gplot-Datei für mehrere Geräte mit einem einzigen logdevice zu
verwenden.
plotReplace
Leerzeichen getrennte Liste von Name=Wert Paaren. Wert kann Leerzeichen
enthalten, falls es in "" oder {} eingeschlossen ist. Wert wird als
perl-Ausdruck ausgewertet, falls es in {} eingeschlossen ist.
In der .gplot Datei werden <Name> Zeichenketten durch den
zugehoerigen Wert ersetzt, die Auswertung von {} Ausdrücken erfolgt
nach dem die Daten ausgewertet wurden, d.h. man kann hier
$data{min1},etc verwenden.
Bei %Name% erfolgt die Ersetzung vor der Datenauswertung, das kann
man verwenden, um Parameter für die Auswertung zu ersetzen.
startDate
Setzt das Startdatum für den Plot. Wird für Demo-Installationen
verwendet.
title
Eine besondere Form der Überschrift (siehe oben), bei der die
Zeichenfolge <TL> in der .gplot-Datei ersetzt wird.
Standardmäßig wird als <TL> der Dateiname des Logfiles
eingesetzt.
Überholt, wird durch das plotReplace Attribut abgelöst.
Plot-Editor
Dieser Editor ist in der Detailansicht der SVG-Instanz zu sehen. Die
meisten Features sind hier einleuchtend und bekannt, es gibt aber auch
einige Ausnahmen:
wenn für ein Diagramm die Überschrift unterdrückt werden
soll, muss im Eingabefeld notitle eingetragen werden.
wenn ein fester Wert (nicht aus einer Wertespalte) definiert werden
soll, für den Fall, das eine Zeichenfoge gefunden wurde (z.B. 1
für eine FS20 Schalter, der AN ist und 0 für den AUS-Zustand),
muss zuerst das Tics-Feld gefüllt, und die .gplot-Datei
gespeichert werden, bevor der Wert über die Dropdownliste erreichbar
ist.
Beispiel:
Eingabe im Tics-Feld: ("On" 1, "Off" 0)
.gplot-Datei speichern
"1" als Regexp switch.on und "0" für den Regexp switch.off vom
Spalten-Dropdown auswählen (auf die Gänsefüßchen
achten!).
.gplot-Datei erneut speichern
Falls Range der Form {...} entspricht, dann wird sie als Perl -
Expression ausgewertet. Das Ergebnis muss in der Form [min:max] sein.
Die Sichtbarkeit des Plot-Editors kann mit dem FHEMWEB Attribut ploteditor konfiguriert werden.
SWAP
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SWAP
SWAP_0000002200000003
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SWAP_0000002200000003
SWAP_0000002200000008
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SWAP_0000002200000008
Dieses Modul liefert diverse Informationen und Statistiken zu dem System, auf dem FHEM-Server ausgeführt wird.
Weiterhin können auch Remote-Systeme abgefragt werden (Telnet).
Es werden nur Linux-basierte Systeme unterstützt. Manche Informationen sind hardwarespezifisch und sind daher nicht auf jeder Plattform
verfügbar.
Bis jetzt wurde dieses Modul auf folgenden Systemen getestet: Raspberry Pi (Debian Wheezy), BeagleBone Black,
FritzBox 7390, WR703N unter OpenWrt, CubieTruck und einige andere.
Für Informationen zu einer FritzBox beachten Sie bitte auch Module: FRITZBOX und FB_CALLMONITOR.
Das Modul nutzt das Perlmodule 'Net::Telnet' für den Fernzugriff. Dieses muss ggf. nachinstalliert werden.
Diese Anweisung erstellt eine neue SYSMON-Instanz.
Die Parameter M1 bis M4 legen die Aktualisierungsintervalle für verschiedenen Readings (Statistiken) fest.
Die Parameter sind als Multiplikatoren für die Zeit, die durch INTERVAL_BASE definiert ist, zu verstehen.
Da diese Zeit fest auf 60 Sekunden gesetzt ist, können die Mx-Parameters als Zeitintervalle in Minuten angesehen werden.
Wird einer (oder mehrere) Multiplikatoren auf Null gesetzt werden, wird das entsprechende Readings deaktiviert.
Die Parameter sind für die Aktualisierung der Readings nach folgender Schema zuständig:
folgende Parameter werden immer anhand des Basisintervalls (unabhängig von den Mx-Parameters) aktualisiert:
fhemuptime, fhemuptime_text, idletime, idletime_text, uptime, uptime_text, starttime, starttime_text
Für Abfrage eines entfernten Systems muss mindestens deren Adresse (HOST) angegeben werden, bei Bedarf ergänzt durch den Port und/oder den Benutzernamen.
Das eventuell benötigte Passwort muss einmalig mit dem Befehl 'set password <pass>' definiert werden.
Als MODE sind derzeit 'telnet', 'ssh' und 'local' erlaubt. 'local' erfordert keine weiteren Angaben und kann auch ganz weggelassen werden.
Bei SSH-Anmeldung mit Passwort muss 'sshpass' installiert sein (Achtung! Sicherheitstechnisch nicht empfehlenswert! Besser Public-Key-Verfahren benutzen).
Damit SSH-Anmeldung funktioniert, muss ggf. einmalig eine manuelle SSH-Verbindung an die Remote-Machine von dem FHEM-Acount
(unter dessen Rechten FHEM läuft) durchgeführt und fingerprint bestätigt werden.
Readings:
cpu_core_count
Anzahl der CPU Kerne
cpu_model_name
CPU Modellname
cpu_bogomips
CPU Speed: BogoMIPS
cpu_freq (auf den DualCore-Systemen wie Cubietruck auch cpu1_freq)
CPU-Frequenz
cpu_temp
CPU-Temperatur
cpu_temp_avg
Durchschnitt der CPU-Temperatur, gebildet über die letzten 4 Werte.
fhemuptime
Zeit (in Sekunden) seit dem Start des FHEM-Servers.
fhemuptime_text
Zeit seit dem Start des FHEM-Servers: Menschenlesbare Ausgabe (texttuelle Darstellung).
fhemstarttime
Startzeit (in Sekunden seit 1.1.1970 1:00:00) des FHEM-Servers.
fhemstarttime_text
Startzeit des FHEM-Servers: Menschenlesbare Ausgabe (texttuelle Darstellung).
idletime
Zeit (in Sekunden und in Prozent), die das System (nicht der FHEM-Server!)
seit dem Start in dem Idle-Modus verbracht hat. Also die Zeit der Inaktivität.
idletime_text
Zeit der Inaktivität des Systems seit dem Systemstart in menschenlesbarer Form.
loadavg
Ausgabe der Werte für die Systemauslastung (load average): 1 Minute-, 5 Minuten- und 15 Minuten-Werte.
ram
Ausgabe der Speicherauslastung.
swap
Benutzung und Auslastung der SWAP-Datei (bzw. Partition).
uptime
Zeit (in Sekenden) seit dem Systemstart.
uptime_text
Zeit seit dem Systemstart in menschenlesbarer Form.
starttime
Systemstart (Sekunden seit Thu Jan 1 01:00:00 1970).
starttime_text
Systemstart in menschenlesbarer Form.
Netzwerkinformationen
Informationen zu den über die angegebene Netzwerkschnittstellen übertragene Datenmengen
und der Differenz zu der vorherigen Messung.
Beispiele:
Menge der übertragenen Daten über die Schnittstelle eth0. eth0: RX: 940.58 MB, TX: 736.19 MB, Total: 1676.77 MB
Änderung der übertragenen Datenmenge in Bezug auf den vorherigen Aufruf (für eth0). eth0_diff: RX: 0.66 MB, TX: 0.06 MB, Total: 0.72 MB
IP and IP v6 Adressen
eth0_ip 192.168.0.15 eth0_ip6 fe85::49:4ff:fe85:f885/64
Dateisysteminformationen
Informationen zu der Größe und der Belegung der gewünschten Dateisystemen.
Seit Version 1.1.0 können Dateisysteme auch benannt werden (s.u.).
In diesem Fall werden für die diese Readings die angegebenen Namen verwendet.
Dies soll die Übersicht verbessern und die Erstellung von Plots erleichten.
Beispiel: fs_root: Total: 7340 MB, Used: 3573 MB, 52 %, Available: 3425 MB at /
Benutzerdefinierte Einträge
Diese Readings sind Ausgaben der Kommanden, die an das Betriebssystem übergeben werden.
Die entsprechende Angaben werden durch Attributen user-defined und user-fn definiert.
FritzBox-spezifische Readings
wlan_state
WLAN-Status: on/off
wlan_guest_state
Gast-WLAN-Status: on/off
internet_ip
aktuelle IP-Adresse
internet_state
Status der Internetverbindung: connected/disconnected
night_time_ctrl
Status der Klingelsperre on/off
num_new_messages
Anzahl der neuen Anrufbeantworter-Meldungen
fw_version_info
Angaben zu der installierten Firmware-Version: <VersionNr> <Erstelldatum> <Zeit>
DSL Informationen (FritzBox)
dsl_rate
Down/Up Verbindungsgeschwindigkeit
dsl_synctime
Sync-Zeit mit Vermittlungsstelle
dsl_crc_15
Nicht behebbare Übertragungsfehler in den letzten 15 Minuten
dsl_fec_15
Behebbare Übertragungsfehler in den letzten 15 Minuten
Readings zur Stromversorgung
power_ac_stat
Statusinformation für die AC-Buchse: online (0|1), present (0|1), voltage, current
Beispiel: power_ac_stat: 1 1 4.807 264
power_ac_text
Statusinformation für die AC-Buchse in menschenlesbarer Form
Beispiel: power_ac_text ac: present / online, Voltage: 4.807 V, Current: 264 mA
power_usb_stat
Statusinformation für die USB-Buchse
power_usb_text
Statusinformation für die USB-Buchse in menschenlesbarer Form
power_battery_stat
Statusinformation für die Batterie (wenn vorhanden): online (0|1), present (0|1), voltage, current, actual capacity
Beispiel: power_battery_stat: 1 1 4.807 264 100
power_battery_text
Statusinformation für die Batterie (wenn vorhanden) in menschenlesbarer Form
power_battery_info
Menschenlesbare Zusatzinformationen für die Batterie (wenn vorhanden): Technologie, Kapazität, Status, Zustand, Gesamtkapazität
Beispiel: power_battery_info: battery info: Li-Ion , capacity: 100 %, status: Full , health: Good , total capacity: 2100 mAh
Die Kapazität soll in script.bin (z.B. ct-hdmi.bin) eingestellt werden (Parameter pmu_battery_cap). Mit bin2fex konvertieren (bin2fex -> script.fex -> edit -> fex2bin -> script.bin)
cpuX_freq_stat
Frequenz-Statistik für die CPU X: Minimum, Maximum und Durchschnittswert
Beispiel: cpu0_freq_stat: 100 1000 900
cpuX_idle_stat
Leerlaufzeit-Statistik für die CPU X: Minimum, Maximum und Durchschnittswert
Beispiel: cpu0_freq_stat: 23.76 94.74 90.75
cpu[X]_temp_stat
Temperatur-Statistik für CPU: Minimum, Maximum und Durchschnittswert
Beispiel: cpu_temp_stat: 41.00 42.50 42.00
ram_used_stat
Statistik der RAM-Nutzung: Minimum, Maximum und Durchschnittswert
Example: ram_used_stat: 267.55 1267.75 855.00
swap_used_stat
Statistik der SWAP-Nutzung: Minimum, Maximum und Durchschnittswert
Example: swap_used_stat: 0 1024.00 250.00
Get:
interval
Listet die bei der Definition angegebene Polling-Intervalle auf.
interval_multipliers
Listet die definierten Multipliers.
list
Gibt alle Readings aus.
update
Aktualisiert alle Readings. Alle Werte werden neu abgefragt.
version
Zeigt die Version des SYSMON-Moduls.
list_lan_devices
Listet bekannte Geräte im LAN (nur FritzBox).
Set:
interval_multipliers
Definiert Multipliers (wie bei der Definition des Gerätes).
clean
Löscht benutzerdefinierbare Readings. Nach einem Update (oder nach der automatischen Aktualisierung) werden neue Readings generiert.
clear <reading name>
Löscht den Reading-Eintrag mit dem gegebenen Namen. Nach einem Update (oder nach der automatischen Aktualisierung)
wird dieser Eintrag ggf. neu erstellt (falls noch definiert). Dieses Mechanismus erlaubt das gezielte Löschen nicht mehr benötigter
benutzerdefinierten Einträge.
password <Passwort>
Definiert das Passwort für den Remote-Zugriff (i.d.R. nur einmalig notwendig).
Attributes:
filesystems <reading name>[:<mountpoint>[:<comment>]],...
Gibt die zu überwachende Dateisysteme an. Es wird eine kommaseparierte Liste erwartet.
Reading-Name wird bei der Anzeige und Logging verwendet, Mount-Point ist die Grundlage der Auswertung,
Kommentar ist relevant für die HTML-Anzeige (s. SYSMON_ShowValuesHTML)
Beispiel: /boot,/,/media/usb1
oder: fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
Im Sinne der besseren Übersicht sollten zumindest Name und MountPoint angegeben werden.
network-interfaces <name>[:<interface>[:<comment>]],...
Kommaseparierte Liste der Netzwerk-Interfaces, die überwacht werden sollen.
Jeder Eintrag besteht aus dem Reading-Namen, dem Namen
des Netwerk-Adapters und einem Kommentar für die HTML-Anzeige (s. SYSMON_ShowValuesHTML). Wird kein Doppelpunkt verwendet,
wird der Wert gleichzeitig als Reading-Name und Interface-Name verwendet.
Beispiel ethernet:eth0:Ethernet,wlan:wlan0:WiFi
user-defined <readingsName>:<Interval_Minutes>:<Comment>:<Cmd>,...
Diese kommaseparierte Liste definiert Einträge mit jeweils folgenden Daten:
Reading-Name, Aktualisierungsintervall in Minuten, Kommentar und Betriebssystem-Commando.
Die BS-Befehle werden entsprechend des angegebenen Intervalls ausgeführt und als Readings mit den angegebenen Namen vermerkt.
Kommentare werden für die HTML-Ausgaben (s. SYSMON_ShowValuesHTML) benötigt.
Alle Parameter sind nicht optional!
Es ist wichtig, dass die angegebenen Befehle schnell ausgeführt werden, denn in dieser Zeit wird der gesamte FHEM-Server blockiert!
Werden Ergebnisse der lang laufenden Operationen benötigt, sollten diese z.B als CRON-Job eingerichtet werden
und in FHEM nur die davor gespeicherten Ausgaben visualisiert.
Beispiel: Anzeige der vorliegenden Paket-Aktualisierungen für das Betriebssystem:
In einem cron-Job wird folgendes täglich ausgeführt: sudo apt-get update 2>/dev/null >/dev/null apt-get upgrade --dry-run| perl -ne '/(\d*)\s[upgraded|aktualisiert]\D*(\d*)\D*install|^ \S+.*/ and print "$1 aktualisierte, $2 neue Pakete"' 2>/dev/null > /opt/fhem/data/updatestatus.txt
Das Attribute uder-defined wird auf sys_updates:1440:System Aktualisierungen:cat /opt/fhem/data/updatestatus.txt gesetzt.
Danach wird die Anzahl der verfügbaren Aktualisierungen täglich als Reading 'sys_updates' protokolliert.
user-fn <fn_name>:<Interval_Minutes>:<reading_name1>:<reading_name2>...[:<reading_nameX>],...
Liste der benutzerdefinierten Perlfunktionen.
Als <fn_name> können entweder Name einer Perlfunktion oder ein Perlausdruck verwendet werden.
Die Perlfunktion bekommt den Device-Hash als Übergabeparameter und muss ein Array mit Werte liefern.
Diese Werte werden entsprechend den Parameter <reading_nameX> in Readings übernommen.
Ein Perlausdruck muss in geschweifte Klammer eingeschlossen werden und kann folgende Paramter verwenden: $HASH (Device-Hash) und $NAME (Device-Name).
Rückgabe wird analog einer Perlfunktion erwartet.
Wichtig! Die Trennung zwischen mehreren Benutzerfunktionen muss mit einem Komma UND einem Leerzeichen erfolgen! Innerhalb der Funktiondefinition dürfen Kommas nicht durch Leerzeichen gefolgt werden.
disable
Mögliche Werte: 0,1. Bei 1 wird die Aktualisierung gestoppt.
telnet-prompt-regx, telnet-login-prompt-regx
RegExp zur Erkennung von Login- und Kommandozeile-Prompt. (Nur für Zugriffe über Telnet relevant.)
exclude
Erlaubt das Abfragen bestimmten Informationen zu unterbinden.
Mögliche Werte: user-defined (s. user-defined und user-fn), cpucount, uptime, fhemuptime,
loadavg, cputemp, cpufreq, cpuinfo, diskstat, cpustat, ramswap, filesystem, network,
fbwlan, fbnightctrl, fbnewmessages, fbdecttemp, fbversion, fbdsl, powerinfo
Plots:
Für dieses Modul sind bereits einige gplot-Dateien vordefiniert:
HTML-Ausgabe-Methode (für ein Weblink): SYSMON_ShowValuesHTML(<SYSMON-Instanz>[,<Liste>])
Das Modul definiert eine Funktion, die ausgewählte Readings in HTML-Format ausgibt.
Als Parameter wird der Name des definierten SYSMON-Geräts erwartet.
Es kann auch ReadingsGroup, CloneDummy oder andere Module genutzt werden, dann werden einfach deren Readings verwendet.
Der zweite Parameter ist optional und gibt eine Liste der anzuzeigende Readings
im Format <ReadingName>[:<Comment>[:<Postfix>[:<FormatString>]]] an.
Dabei gibt ReadingName den anzuzeigenden Reading an, der Wert aus Comment wird als der Anzeigename verwendet
und Postfix wird nach dem eihentlichen Wert angezeigt (so können z.B. Einheiten wie MHz angezeigt werden).
Mit Hilfe von FormatString kann die Ausgabe beeinflusst werden (s. sprintf in PerlDoku).
Falls kein Comment angegeben ist, wird eine intern vordefinierte Beschreibung angegeben.
Bei benutzerdefinierbaren Readings wird ggf. Comment aus der Definition verwendet.
Wird keine Liste angegeben, wird eine vordefinierte Auswahl verwendet (alle Werte).
HTML-Ausgabe-Methode (für ein Weblink): SYSMON_ShowValuesHTMLTitled(<SYSMON-Instance>[,<Title>,<Liste>])
Wie SYSMON_ShowValuesHTML, aber mit einer Überschrift darüber. Wird keine Überschrift angegeben, wird alias des Moduls genutzt (falls definiert).
Text-Ausgabe-Methode (see Weblink): SYSMON_ShowValuesText(<SYSMON-Instance>[,<Liste>])
Analog SYSMON_ShowValuesHTML, jedoch formatiert als reines Text.
HTML-Ausgabe-Methode (für ein Weblink): SYSMON_ShowValuesTextTitled(<SYSMON-Instance>[,<Title>,<Liste>])
Wie SYSMON_ShowValuesText, aber mit einer Überschrift darüber.
Readings-Werte mit Perl lesen: SYSMON_getValues(<name>[, <Liste der gewünschten Schlüssel>])
Liefert ein Hash-Ref mit den gewünschten Werten. Wenn keine Liste (array) übergeben wird, werden alle Werte geliefert.
{(SYSMON_getValues("sysmon"))->{'cpu_temp'}}
{(SYSMON_getValues("sysmon",("cpu_freq","cpu_temp")))->{"cpu_temp"}}
{join(" ", values (SYSMON_getValues("sysmon")))}
{join(" ", values (SYSMON_getValues("sysmon",("cpu_freq","cpu_temp"))))}
# Anzeige der Readings zum Einbinden in ein 'Raum'.
define SysValues weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
attr SysValues group RPi
attr SysValues room 9.03_Tech
Das Modul stellt Systemstatistiken für den Rechner, auf dem FHEM läuft bzw.
für ein entferntes Linux System, das per vorkonfiguriertem ssh Zugang ohne Passwort
erreichbar ist, zur Vefügung.
Notes:
Dieses Modul benötigt Sys::Statistics::Linux für Linux.
Es kann mit 'cpan install Sys::Statistics::Linux'
bzw. auf Debian mit 'apt-get install libsys-statistics-linux-perl'
installiert werden.
Um einen Zielrechner mit snmp zu überwachen, muss
Net::SNMP installiert sein.
Um die Lastwerte zu plotten, kann der folgende Code verwendet werden:
Um das Wurzel-Dateisystem (Mountpunkt '/') bei Plots der Plattennutzung zu erhalten,
sollte dieser Code '#FileLog 4:/\x3a:0:' bzw. '#FileLog 4:\s..\s:0:'
und nicht dieser Code '#FileLog 4:/:0:' verwendet werden, da der letztere
alle Mountpunkte darstellt.
Die (Prozessor)last wird alle <interval> Sekunden aktualisiert. Standard bzw. Minimum ist 60.
Die Plattennutzung wird alle <interval_fs> Sekunden aktualisiert. Standardwert ist <interval>*60
und Minimum ist 60.
<interval_fs> wird nur angenähert und funktioniert am Besten, wenn <interval_fs>
ein ganzzahliges Vielfaches von <interval> ist.
Wenn <host> angegeben wird, muss der Zugang per ssh ohne Passwort möglich sein.
mibs
Leerzeichen getrennte Liste aus <mib>:<reding> Paaren die abgefragt werden sollen.
showpercent
Wenn gesetzt, wird die Nutzung in Prozent angegeben. Wenn nicht gesetzt, wird der verfübare
Platz in Bytes angezeigt.
snmp
1 -> snmp wird verwendet, um Last, Einschaltzeit und Dateisysteme (inkl. physikalischem und
virtuellem Speicher) zu überwachen
stat
1 -> überwacht Prozentsatz der user, system, idle und iowait Last
(nur auf Linux Systemen verfügbar)
raspberrytemperature
Wenn gesetzt und > 0 wird der Temperatursensor auf dem Raspberry Pi ausgelesen.
Wenn Wert 2 ist, wird ein geometrischer Durchschnitt der letzten 4 Werte dargestellt.
synologytemperature
Wenn gesetzt und > 0 wird die Temperatur einer Synology Diskstation ausgelesen (erfordert snmp).
Wenn Wert 2 ist, wird ein geometrischer Durchschnitt der letzten 4 Werte dargestellt.
raspberrycpufreq
Wenn gesetzt und > 0 wird die Raspberry Pi CPU Frequenz ausgelesen.
uptime
Wenn gesetzt und > 0 wird die Betriebszeit (uptime) des Systems ausgelesen.
Wenn Wert 2 ist, wird die Betriebszeit (uptime) in Sekunden angezeigt.
useregex
Wenn Wert gesetzt, werden die Einträge der Dateisysteme als regex behandelt.
ssh_user
Der Username für den ssh Zugang auf dem entfernten Rechner.
Fü jedes Event oder Gerätename:Event, worauf <regexp>
zutrifft, wird eine separate Datei angelegt, der Inhalt wird von dem
template Attribut gesteuert (s.u.).
<filename> kann %-Wildcards der POSIX strftime-Funktion
des darunterliegenden OS enthalten (siehe auch man strftime).
Zusätzlich wird %Q durch eine fortlaufende Zahl ersetzt.
Falls filename in {} eingeschlossen ist, dann wird sie als perl-Ausdruck
ausgewertet, was ermöglicht einen vom %L abweichenden globalem Pfad zu
definieren.
dosLineEnding
Erzeugt die Datei mit der auf Windows Systemen ueblichen Zeilenenden
(\r\n)
numberFormat
Falls ein Wort im Event wie eine Zahl aussieht, dann wird es wie in
numberFormat angegeben, umformatiert, und als $EVTNUMx (analog zu
$EVTPARTx) zur Verfügung gestellt. Voreinstellung ist %1.6E, siehe
die printf Formatbeschreibung für Details.
readySuffix
Die in der Definition spezifizierte Datei wird mit dem Suffix .tmp
angelegt, und nachdem sie fertig ist, mit readySuffix umbenannt.
Die Voreinstellung ist .rdy; um kein Suffix zu erzeugen, muss man none
spezifizieren.
syncAfterWrite
Zwingt das Betriebssystem die Datei sofort auf die Platte zu schreiben.
Achtung: das kann die Geschwindigkeit beeinträchtigen, und bei SSDs
zu einem früheren Ausfall führen. Die Voreinstellung ist 0
(aus).
template
Damit wird der Inhalt der geschriebenen Datei spezifiziert. Folgende
Variablen werden vor dem Schreiben der Datei ersetzt:
$EVENT - das vollständige Event.
$EVTPART0 $EVTPART1 ... - die einzelnen Wörter des Events.
$EVTNUM0 $EVTNUM1 ... - umformatiert als Zahl, siehe numberFormat
weiter oben.
$NAME - der Name des Gerätes, das das Event generiert.
$time - die aktuelle Zeit, formatiert als YYYY-MM-DD HH:MM:SS
$time14 - die aktuelle Zeit, formatiert als YYYYMMDDHHMMSS
$time16 - die aktuelle Zeit, formatiert als YYYYMMDDHHMMSSCC,
wobei CC die hundertstel Sekunde ist
Falls template in {} eingeschlossen ist, dann wird er als perl-Ausdruck
ausgefuehrt, und das Ergebnis wird in die Datei geschrieben.
Die Voreinstellung ist $time $NAME $EVENT\n
writeInBackground
falls gesetzt (auf 1), dann erfolgt das Schreiben in einem
Hintergrundprozess, um FHEM nicht zu blockieren. Die Voreinstellung ist 0
(aus).
Ein SIGNALduino-Geraet (dieses sollte als erstes angelegt sein).
Da sich die Protokolle von Siro und Dooya sehr ähneln, ist ein gleichzeitiger Betrieb dieser Systeme ueber ein "IODev" derzeit schwierig. Das Senden von Befehlen funktioniert ohne Probleme, aber das Unterscheiden der Fernbedienungssignale ist in Signalduino kaum möglich. Zum Betrieb der Siromoduls wird daher empfohlen, das Dooyaprotokoll im SIGNALduino (16) über die Whitelist auszuschliessen. Zur fehlerfreien Erkennung der Fernbedienungssignale ist es weiterhin erforderlich im SIGMALduino das Protokoll "manchesterMC" zu deaktivieren (disableMessagetype manchesterMC). Wird der Empfang von machestercodierten Befehlen benoetigt, wird der Betrieb eines zweiten Signalduinos empfohlen.
Define
define <name> Siro <id> <channel>
Bei der <ID> handelt es sich um einen 7-stelligen Hexcode, der einer Siro Fernbedienung eindeutig und fest zugewiesen ist. <Channel> ist die einstellige Kanalzuweisung der Fernbedienung und ist ebenfalls hexadezimal. Somit ergeben sich die möglichen Kanäle 0 - 15 (hexadezimal 0-F).
Eine eindeutige ID muss angegeben werden, der Kanal (Channel) muss ebenfalls angegeben werden.
Ein Autocreate (falls aktiviert), legt das Device mit der ID der Fernbedienung und dem Kanal automatisch an.
Beispiele:
define Siro1 Siro AB00FC1 erstellt ein Siro-Geraet Siro1 mit der ID: AB00FC und dem Kanal: 1
Set
set <name> <value> [<position>]
where value is one of:
on
off
stop
pos (0..100)
prog
fav
Beispiele:
set Siro1 on set Siro1 off set Siro1 position 50 set Siro1 fav set Siro1 stop set Siro1 set_favorite set Siro1 down_for_timer 5 set Siro1 up_for_timer 5 set Siro1 set_favorite
set Siro1 on fährt das Rollo komplett hoch (0%)
set Siro1 off fährt das Rollo komplett herunter (100%)
set Siro1 stop stoppt die aktuelle Fahrt des Rollos
set Siro1 position 45 fährt das Rollo zur angegebenen Position (45%)
set Siro1 45 fährt das Rollo zur angegebenen Position (45%)
set Siro1 fav fährt das Rollo in die hardwaremässig programmierte Mittelposition
et Siro1 down_for_timer 5 fährt das Rollo 5 Sekunden nach unten
et Siro1 uown_for_timer 5 fährt das Rollo 5 Sekunden nach oben
set Siro1 prog entspricht der "P2" Taste der Fernbedienung. Das Modul wird in den Programmiermodus versetzt (3 Min.)
set Siro1 set_favorite programmiert den aktuellen Rollostand als Hardwaremittelposition, das ATTR time_down_to_favorite wird neu berechnet und gesetzt.
Hinweise:
Befindet sich das Modul im Programmiermodus, werden aufeinanderfolgende Stoppbefehle vom Modul erkannt, da diese zur Programmierung zwingend erforderlich sind. In diesem Modus werden die Readings und das State nicht aktualisiert. Der Modus wird nach 3 Minuten automatisch beendet. Die verbleibende Zeit im Programmiermodus wird im Reading "pro_mode" dargestellt. Die Programmierung des Rollos muss in dieser Zeit abgeschlossen sein, da das Modul andernfalls keine aufeinanderfolgenden Stoppbefehle mehr akzeptiert.
Die Anzeige der Position, des States, ist eine ausschliesslich rechnerisch ermittelte Position, da es keinen Rückkanal zu Statusmeldung gibt. Aufgrund eines ggf. verpassten Fernbedienungsbefehls, Timingproblems etc. kann es vorkommen, dass diese Anzeige ggf. mal falsche Werte anzeigt. Bei einer Fahrt in eine Endposition, ohne die Fahrt zu stoppen (set Siro1 [on/off]), werden Statusanzeige und echte Position bei Erreichen der Position jedes Mal synchronisiert. Diese ist der Hardware geschuldet und technisch leider nicht anders lösbar.
Get
N/A
Attributes
IODev
Das IODev muss das physische Gerät zum Senden und Empfangen der Signale enthalten. Derzeit wird ein SIGNALduino bzw. SIGNALesp unterstützt.
Ohne der Angabe des "Sende- und Empfangsmodul" "IODev" ist keine Funktion moeglich.
channel_send_mode_1
Beinhaltet den Kanal, der vom Modul im "operation_mode 1" zum Senden genutzt wird.
Dieses Attribut wird in "operation_mode 0" nicht genutzt
down_limit_mode_1
Bei gesetztem Attribut wird das Rollo bei einem Fahrt nach unten nur bis zur angegebenen Position gefahren, egal ob das Kommando über das Modul oder die Fernbedienung ausgloest wurde. Diese Funktion ist nur im Mode 1 aktiv.
down_auto_stop
Bei gesetztem Attribut fährt das Rollo bei einer Fahrt nach unten nur bis zur angegebenen Position. Eine weiterfahrt erfolgt nach nochmaligem Befehl. Diese Funktion greift nur bei dem Kommando on ( close ) . Hierbei ist es egal, ob das Kommando über das Modul oder die Fernbedienung ausgelöst wird.
operation_mode
Mode 0
Dies ist der Standardmodus. In diesem Modus nutz das Modul nur den Kanal, der von der Fernbedienung vorgegeben ist. Hier kann es durch von FHEM verpasste Signale, Timingproblemen etc. im schlechtesten Fall zu falschen States und Positionsreadings kommen. Diese werden bei Anfahrt einer Endposition wieder synchronisiert.
Mode 1
Erweiterter Modus. In diesem Modus nutzt das Modul zwei Kanäle. Den Standardkanal "channel" zum Empfangen der Fernbedienung. Dieser sollte nicht mehr durch das Rollo selbst empfangen werden. Und den "channel_send_mode_1", zum Senden an den Rollomotor. Hierzu ist eine Umkonfigurierung des Motors erforderlich. Dieser Modus ist in Bezug auf die Darstellung der States "deutlich sicherer", da ein Verpassen eines Signals durch FHEM nicht dazu führt, das falsche Positionen angezeigt werden. Das Rollo fährt nur dann, wenn FHEM das Signal empfangen hat und an den Motor weiterreicht.
Eine Anleitung zur Konfiguration des Motors folgt.
time_down_to_favorite
beinhaltet die Fahrtzeit in Sekunden, die das Rollo von der 0% Position bis zur Hardware-Favoriten-Mittelposition benötigt. Diese Zeit muss manuell gemessen werden und eingetragen werden.
Ohne dieses Attribut ist das Modul nur eingeschränkt funktionsfähig.
time_to_close
beinhaltet die Fahrtzeit in Sekunden, die das Rollo von der 0% Position bis zur 100% Position benötigt. Diese Zeit muss manuell gemessen werden und eingetragen werden.
Ohne dieses Attribut ist das Modul nur eingeschränkt funktionsfähig.
time_to_open
beinhaltet die Fahrtzeit in Sekunden, die das Rollo von der 100% Position bis zur 0% Position benötigt. Diese Zeit muss manuell gemessen werden und eingetragen werden.
Ohne dieses Attribut ist das Modul nur eingeschränkt funktionsfähig.
prog_fav_sequence
beinhaltet die Kommandosequenz zum Programmieren der Harware-Favoritenposition
debug_mode [0:1]
Im Mode 1 werden zusätzliche Readings zur Fehlerbehebung angelegt, in denen die Ausgabe aller Modulelemente ausgegeben werden. Kommandos werden NICHT physisch gesendet.
Info
Die Attribute webcmd und devStateIcon werden beim Anlegen des Devices einmalig gesetzt und im auch im Betrieb an den jeweiligen Mode des Devices angepasst. Die Anpassung dieser Inhalte geschieht nur solange, bis diese durch den Nutzer geändert wurden. Danach erfolgt keine automatische Anpassung mehr.
SmartMeterP1
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SmartMeterP1
Das Spotify Modul ermöglicht die Steuerung von Spotify (Connect).
Um die Wiedergabe zu steuern, wird die Spotify WEB API verwendet. Dafür wird eine eigene Spotify API application benötigt.
Während der Erstellung muss eine redirect_uri angegeben - standardmäßig wird vom Modul https://oskar.pw/ verwendet, da diese Seite nach der Anmeldung den Code in leserlicher Form ausgibt.
Die Seite kann bedenkenlos verwendet werden, da der Code ohne client_secret nutzlos und nur wenige Minuten gültig ist.
Wenn du diese verwenden willst, stelle sicher, diese bei der Erstellung anzugeben (wichtig: das Hinzufügen der URL muss mit add und save bestätigt werden), ansonsten kann jede beliebige andere Seite verwendet werden und der Code aus der URL extrahiert werden.
Sobald das Gerät angelegt wurde, muss die AUTHORIZATION_URL im Browser geöffnet werden und die Anmeldung mit Spotify erfolgen.
Sollte der Fehler redirect_uri mismatch auftauchen, stelle sicher, dass https://oskar.pw/ als redirect_uri hinzugefügt wurde oder die verwendete URL exakt übereinstimmt.
Sobald der Anmeldecode ermittelt wurde, führe folgenden Befehl aus: set <name> code <code> - der Status sollte nun auf connected wechseln und das Gerät ist einsatzbereit.
set <required> [ <optional> ]
Wird kein Zielgerät angegeben, wird das aktive (oder das Standard-Gerät, wenn alwaysStartOnDefaultDevice aktiviert ist) verwendet.
An den Stellen, wo eine <device_id> verlangt wird, kann auch der Gerätename, sofern dieser keine Leerzeichen enthält, verwendet werden. Dort wo es <device_name> heißt, sind auch Leerzeichen im Namen zugelassen.
Wenn kein aktives oder Standard-Gerät vorhanden ist, wird das erste verfügbare Gerät verwendet.
Die Spotify URI kann in der (Desktop) App ermittelt werden, wenn man den teilen Knopf bei einem Track/Playlist/Album drückt.
findArtistByName
sucht einen Künstler und liefert das Ergebnis in den Readings
findTrackByName
sucht einen Track und liefert das Ergebnis in den Readings
pause
pausiert die aktuelle Wiedergabe
playArtistByName <artist_name> [ <device_id> ]
sucht einen Künstler und spielt dessen Tracks ab
playContextByURI <context_uri> [ <nr_of_start_track> ] [ <device_id / device_name> ]
spielt einen Context (Playlist, Album oder Künstler) durch Angabe der URI ab
playPlaylistByName <playlist_name> [ <device_id> ]
sucht eine Playlist und spielt diese ab
playRandomTrackFromPlaylistByURI <playlist_uri> [ <limit> ] [ <device_id / device_name> ]
spielt einen zufälligen Track aus einer Playlist ab (berücksichtigt nur die ersten <limit> Tracks der Playlist)
playSavedTracks [ <nr_of_start_track> ] [ <device_id / device_name> ]
spielt die gespeicherten Tracks ab (beginnend mit Track Nummer <nr_of_start_track>)
playTrackByName <track_name> [ <device_id> ]
sucht den Song und spielt ihn ab
playTrackByURI <track_uri> [ <device_id / device_name> ]
spielt einen Song durch Angabe der URI ab
repeat <track,context,off>
setzt den Wiederholungsmodus: entweder one, all (Playlist, Album, Künstler) oder off
resume [ <device_id / device_name> ]
fährt mit der Wiedergabe (auf einem Gerät) fort
seekToPosition <position>
spult an die Position <position> (in Sekunden, erlaubte Formate: 01:20, 80, 00:20, 20)
shuffle <off,on>
setzt den Shuffle-Modus: entweder on oder off
skipToNext
weiter zum nächsten Track
skipToPrevious
zurück zum vorherigen Track
togglePlayback
toggelt die Wiedergabe (hält an, wenn sie aktiv ist, ansonsten fortsetzen)
transferPlayback [ <device_id> ]
überträgt die aktuelle Wiedergabe auf ein anderes Gerät (wenn kein Gerät angegeben wird, wird das nächste inaktive verwendet)
update
lädt den aktuellen Zustand neu
volume <volume> [ <device_id> ]
setzt die Lautstärke
volumeDown [ <step> ] [ <device_id / device_name> ]
verringert die Lautstärke um step (falls nicht gesetzt, um volumeStep)
Vielfältige Steuerungen, bei denen durch die Auswertung von Sensordaten eine Steuerung erfolgen soll, können mit Hilfe dieses Moduls realisiert werden.
Nach der Definition eines THRESHOLD-Moduls und der Vorgabe eines Sollwertes beginnt bereits das definierte Modul mit der Steuerung. Im einfachsten Fall liest das Modul einen Sensor aus, der Werte als Dezimalzahlen liefert
und schaltet beim Überschreiten einer definierten Schwellen-Obergrenze (Sollwert)
bzw. beim Unterschreiten einer Schwellen-Untergrenze einen Aktor oder führt beliebige FHEM/Perl-Befehle aus.
Typisches Anwendungsgebiet ist z. B. die Nachbildung eines Thermostats oder Hygrostats - auch Zweipunktregler genannt.
Mit Hilfe des Moduls, bzw. vieler solcher Module, lassen sich einfache oder auch komplexe Steuerungen für Heizung, Kühlung, Lüftung, Entfeuchtung, Beschattung oder z. B. einfache Benachrichtung
beim Über- oder Unterschreiten eines bestimmten Wertes realisieren. Dabei müssen keine If-Abfragen in Perl oder Notify-Definitionen vorgenommen werden.
Das führt, nicht nur bei FHEM-Anfängern, zu schnell erstellten und übersichtlichen Steuerungen, ohne zwingend in die Perl-Materie einsteigen zu müssen.
Nach der Definition eines Moduls vom Typ THRESHOLD z. B. mit:
define <name> THRESHOLD <sensor> <actor>
erfolgt die eigentliche Steuerung über die Vorgabe eines Sollwertes. Das geschieht über:
set <name> desired <value>
Das Modul beginnt mit der Steuerung erst dann, wenn ein Sollwert gesetzt wird!
Die Vorgabe des Sollwertes kann bereits bei der Definition des Moduls angegeben werden. Alternativ kann der Sollwert von einem weiteren Sensor kommen.
Damit kann eine Steuerung durch den Vergleich zweier Sensoren stattfinden.
Typisches Anwendungsbeispiel ist z. B. die Steuerung von Umwälz- oder Zirkulationspumpen.
Die Vorgabe der Solltemperatur kann auch von beliebigen Wandthermostaten (z. B. HM, MAX, FHT) genutzt werden.
Das Schaltverhalten des THRESHOLD-Moduls kann zusätzlich durch einen weiteren Sensor oder eine Sensorgruppe,
definiert über structure (z. B. Fensterkontakte), über eine AND- bzw. OR-Verknüpfung beeinflusst werden.
Bei komplexeren Bedingungen mit mehreren and- bzw. or-Verknüpfung sollte man das neuere DOIF-Modul verwenden.
Es ist ebenfalls die Kombination mehrerer THRESHOLD-Module miteinander möglich.
Beispiele für Heizungssteuerung:
Einfaches Heizungsthermostat:
Es soll bis 20 Grad geheizt werden. Beim Unterschreiten der Untergrenze von 19=20-1 Grad (Sollwert-Hysterese) wird die Heizung wieder eingeschaltet.
define TH_room THRESHOLD temp_room heating set TH_room desired 20
Nachtabsenkung lässt sich zeitgesteuert durch das Setzen von "offset" realisieren.
Von 22:00 bis 5:00 Uhr soll die Vorlauftemperatur um 10 Grad herabgesetzt werden:
Zwischen 12:00 und 20:00 Uhr (potenzielle Sonnengefahr auf der Südseite) wird der Rolladen auf 30 % heruntergefahren,
wenn die Raumtemperatur über 23 Grad ist und die Sonne scheint. Im Winter, wenn die Zimmertemperatur niedriger ist (< 23),
will man von der Sonnenenergie profitieren und den Rollladen oben lassen.
reading (optional)
Reading des Sensors, der einen Wert als Dezimalzahl beinhaltet
Defaultwert: temperature
hysteresis (optional)
Hysterese, daraus errechnet sich die Untergrenze = Sollwert - hysteresis
Defaultwert: 1 bei Temperaturen, 10 bei Feuchtigkeit
target_value (optional)
bei Zahl: Initial-Sollwert, wenn kein Wert vorgegeben wird, muss er mit "set desired value" gesetzt werden.
sonst: <sensorname>:<reading>, hier kann ein weiterer Sensor angegeben werden, der den Sollwert dynamisch vorgibt.
Defaultwert: kein
offset (optional)
Offset zum Sollwert
Damit errechnet sich: die Sollwertobergrenze = Sollwert + offset und die Sollwertuntergrenze = Sollwert - Hysterese + offset
Defaultwert: 0
AND|OR (optional)
Verknüpfung mit einem optionalen zweiten Sensor
sensor2 (optional, nur in Verbindung mit AND oder OR)
ein definierter Sensor, dessen Status abgefragt wird
reading2 (optional)
Reading, der den Status des Sensors beinhaltet
Defaultwert: state
state (optional)
Status des Sensors, der zu einer Aktion führt
Defaultwert: open
actor (optional)
ein in FHEM definierter Aktor
cmd1_gt (optional)
FHEM/Perl Befehl, der beim Überschreiten des Sollwertes ausgeführt wird bzw.
wenn status des sensor2 übereinstimmt. @ ist ein Platzhalter für den angegebenen Aktor.
Defaultwert: set actor off, wenn Aktor angegeben ist
cmd2_lt (optional)
FHEM/Perl Befehl, der beim Unterschreiten der Untergrenze (Sollwert-Hysterese) ausgeführt wird bzw.
wenn status des sensor2 nicht übereinstimmt. @ ist ein Platzhalter für den angegebenen Aktor.
Defaultwert: set actor on, wenn Aktor angegeben ist
cmd_default_index (optional)
FHEM/Perl Befehl, der nach dem Setzen des Sollwertes ausgeführt wird, bis Sollwert oder die Untergrenze erreicht wird.
0 - kein Befehl
1 - cmd1_gt
2 - cmd2_lt
Defaultwert: 2, wenn Aktor angegeben ist, sonst 0
state_cmd1_gt (optional, wird gleichzeitig als Attribut definiert)
Status, der angezeigt wird, wenn FHEM/Perl-Befehl cmd1_gt ausgeführt wurde.
Defaultwert: kein
state_cmd2_lt (optional, wird gleichzeitig als Attribut definiert)
Status, der angezeigt wird, wenn FHEM/Perl-Befehl cmd2_lt ausgeführt wurde.
Defaultwert: kein
state_format (optional, wird gleichzeitig als Attribut definiert und kann dort verändert werden)
Format der Statusanzeige: beliebiger Text mit Platzhaltern
Mögliche Platzhalter:
_m: mode
_dv: desired_value
_s1v: sensor_value
_s2s: sensor2_state
_sc: state_cmd
Defaultwert: _m _dv _sc, _sc, wenn state_cmd1_gt und state_cmd2_lt ohne Aktor gesetzt wird.
Set
set <name> desired <value>
Setzt den Sollwert. Wenn kein Sollwert gesetzt ist, ist das Modul nicht aktiv.
Sollwert-Vorgabe durch einen Sensor wird hiermit übersteuert, solange bis "set external" gesetzt wird.
set <name> deactivated <command>
Modul wird deaktiviert.
<command> ist optional. Es kann "cmd1_gt" oder "cmd2_lt" übergeben werden, um vor dem Deaktivieren des Moduls einen definierten Zustand zu erreichen.
set <name> active
Modul wird aktiviert, falls unter target_value ein Sensor für die Sollwert-Vorgabe definiert wurde, wird der aktuelle Sollwert solange eingefroren bis "set external" gesetzt wird.
set <name> externel
Modul wird aktiviert, Sollwert-Vorgabe kommt vom Sensor, falls ein Sensor unter target_value definierte wurde.
set <name> hysteresis <value>
Setzt Hysterese-Wert.
set <name> offset <value>
Setzt Offset-Wert.
Defaultwert: 0
set <name> cmd1_gt
Führt das unter cmd1_gt definierte Kommando aus.
set <name> cmd2_lt
Führt das unter cmd2_lt definierte Kommando aus.
Das angegebene Format wird im Status für die Formatierung von desired_value (_dv) und sensor_value (_s1v) über die sprintf-Funktion benutzt.
Voreingestellt ist "%.1f" für eine Nachkommastelle. Für weiter Formatierungen - siehe Formatierung in der sprintf-Funktion in der Perldokumentation.
Wenn das Attribut gelöscht wird, werden Zahlen im Status nicht formatiert.
target_func
Hier kann ein Perlausdruck angegeben werden, um aus dem Vorgabewert eines externen Sensors (target_value) einen Sollwert zu berechnen.
Der Sensorwert wird mit "_tv" im Ausdruck angegeben. Siehe dazu Beispiele oben zur Steuerung der Heizung nach einer Heizkennlinie.
setOnDeactivated
Kommando, welches durch das Deaktivieren per "set ... deactivated" automatisch ausgeführt werden soll. Mögliche Angaben: cmd1_gt, cmd2_lt
desiredActivate
Wenn das Attribut auf 1 gesetzt ist, wird ein deaktiviertes Modul durch "set ... desired " automatisch aktiviert. "set ... active" ist dann nicht erforderlich.
THZ Modul: Kommuniziert mittels einem seriellen Interface RS232/USB (z.B. /dev/ttyxx), oder mittels ser2net (z.B. 10.0.x.x:5555) mit einer Tecalor / Stiebel
Eltron Wärmepumpe.
Getestet mit einer Tecalor THZ303/Sol (Serielle Geschwindigkeit 57600/115200@USB) und einer THZ403 (Serielle Geschwindigkeit 115200) mit identischer
Firmware 4.39.
Getestet mit einer Stiebel LWZ404 (Serielle Geschwindigkeit 115200@USB) mit Firmware 5.39.
Getestet auf FritzBox, nas-qnap, Raspberry Pi and MacOS.
Dieses Modul funktioniert nicht mit äterer Firmware; Gleichwohl, das "parsing" könnte leicht angepasst werden da die Register gut
beschrieben wurden.
https://answers.launchpad.net/heatpumpmonitor/+question/100347
Implementiert: Lesen der Statusinformation sowie Lesen und Schreiben einzelner Einstellungen.
Genauere Beschreinung des Modules --> 00_THZ wiki http://www.fhemwiki.de/wiki/Tecalor_THZ_W%C3%A4rmepumpe
Define
define <name> THZ <device>
device kann einige Parameter beinhalten (z.B. @baudrate, @direction,
TCP/IP, none) wie das CUL, z.B. 57600 baud oder 115200.
Beispiel:
Direkte Verbindung
Definiert eine TP-Link HS100 oder HS110 schaltbare WLAN-Steckdose.
Der Unterschied zwischen der HS100 und HS110 besteht darin, dass die HS110 eine Echtzeit-Messung von
Strom, Spannung sowie Leistung durchführt.
Dieses Modul erkennt automatisch, welchen Typ Sie verwenden und passt die Readings entsprechend an.
Das Modul implementiert nicht alle Funktionen der HS100/110.
Derzeit werden alle für den sinnvollen Betrieb an FHEM benötigten Parameter ausgelesen.
Geschrieben werden jedoch nur die Schaltzustände "An", "Aus" sowie der Nachtmodus An/Aus (Nachtmodus = LEDs der Steckdose ausschalten).
Für eine weitergehende Programmierung der Steckdosen wird daher die TP Link App "Kasa" empfohlen, wobei deren
Funktionen wie Timer etc. letztlich redundant zu Kernfunktionen von FHEM sind.
Attribute
interval: Das Intervall in Sekunden, nach dem FHEM die Messwerte aktualisiert. Default: 300s
Eine Aktualisierung der Messwerte findet auch bei jedem Schaltvorgang statt.
timeout: Der Timeout in Sekunden, der bei der Kommunikation mit der Steckdose verwendet wird. Default: 1s
Achtung: der Timeout von 1s ist knapp gewählt. Ggf. kann es zu Fehlermeldungen kommen, wenn die Steckdose nicht
schnell genug antwortet.
Bitte beachten Sie aber auch, dass längere Timeouts FHEM für den Zeitraum des Requests blockieren!
disable: Die Ausführung des Moduls wird gestoppt. Default: no.
Achtung: wenn Ihre Steckdose nicht in Betrieb oder über das WLAN erreichbar ist, sollten Sie
dieses FHEM-Modul per Attribut "disable" abschalten, da sonst beim zyklischen Abruf der Messdaten
der Steckdose Timeouts auftreten, die FHEM unnötig verlangsamen.
Requirements
Das Modul benötigt die folgenden Perl-Module:
Perl Module: IO::Socket::INET
Perl Module: IO::Socket::Timeout
TRAFFIC
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TRAFFIC
TRX
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TRX
TRX_ELSE
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TRX_ELSE
TRX_LIGHT
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TRX_LIGHT
TRX_SECURITY
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TRX_SECURITY
TRX_WEATHER
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TRX_WEATHER
Das Modul TUL stellt die Verbindung von FHEM zum EIB / KNX dar.
KNX Instanzen stellen die Vrbindung zu den KNX-Gruppen dar und benÖtigen ein TUL-Device als IO-Schnittstelle.
Das Modul TUL kommuniziert mit dem KNX entweder Über den eibd, den knxd oder den TUL TUL usb stick hergestellt von busware.de
Anmerkung: das Modul benÖtigt die Device::SerialPort oder Win32::SerialPort wenn der Stick Über USB angeschlossen wird, und das OS unrealistische Parameter fÜr das Device einstellt.
Define
define <name> TUL <device> <physical address>
TUL usb stick / TPUART serial devices:
<device> enthält die serielle Schnittstelle der TUL. Der name der Schnittstelle hängt von Eurer Distribution ab. Unter linux wird fÜr gewÖhnlich /dev/ttyACM0 verwandt.
Wenn Eure Distribution das modul cdc_acm nicht enthält, kÖnnt Ihr das Laden des handles der TUL mit dem folgenden Befehl erzwingen:
modprobe usbserial vendor=0x03eb
product=0x204b
Dann ist die Schnittstelle meist /dev/ttyUSB0.
Ihr kÖnnt dem Gerät eine Baudrate vorgeben. Dazu dem Gerätenamen das Zeichen @ hinzufÜgen, z.B.: /dev/ttyACM0@19200
Anmerkung: FÜr den TUL-USB-Stick wird die Baudrate 19200 benÖtigt. Dies entspricht der Defaulteinstellung.
Beispiel: define tul TUL tul:/dev/ttyACM0 1.1.249
EIBD:
<device> entspricht dem host:port des eibd-servers. z.B. eibd:192.168.0.244:2323. Wenn der Standardport genutzt wird, muss dieser nicht angegeben werden.
Beispiel: define tul TUL eibd:localhost 1.1.249define tul TUL knxd:192.168.178.2 1.1.248
Wenn das Gerät none konfiguriert wird, wird kein device geÖffnet. So kÖnnt Ihr ohne angeschlossene Hardware experimentieren.
Die physikalische Adresse wird als Absender fÜr KNX-Telegramme genutzt.
Das Gerät kann das Modul 10_EIB bedienen, wenn das Flag auf 1 gesetzt ist. Dies ist nur fÜr RÜckwärtskompatibiliät genutzt. Andernfalls wird nur das Modul 10_KNX bedient.
Das Modul Talk2Fhem stellt eine Verbindung zwischen natürlicher Sprache und FHEM Befehlen her.
Die Konfiguration erfolgt dabei komfortabel über das FHEM Webfrontend.
Für eine genauere Beschreibung und weiterführende Beispiele siehe Talk2Fhem Wiki.
Define
define <name> Talk2Fhem
Beispiel: define talk Talk2Fhem
Die eigentliche Konfigration sollte erst auf der FHEM Seite erfolgen.
Die einzelnen Sprachphrasen werden Zeile für Zeile konfiguriert. Hierbei fängt eine Konfiguration
immer mit dem Regulärem Ausdruck an, gefolgt von mindestens einem Leerzeichen oder Tabulator gefolgt
von einem Gleichheitszeichen.
Der Kommandoteil fängt nach dem Gleichheitszeichen mit einem Leerzeichen, Tabulator oder Zeilenumbruch an.
Alles nach einem Hashtag '#' wird bis zum Zeilenende ignoriert.
<regexp>
Regulärer Ausdruck der den Text beschreibt, bei dem das Kommando ausgeführt werden soll
<command>
Der ausführende Teil. Folgende Formate sind Zulässig:
FHEM Kommando
{Perlcode}
(<option> => '<wert>' , ... )
<option>
cmd FHEM Kommando wie oben
offset Ganzzahliger Wert in Sekunden der auf den Zeitpunkt addiert wird
answer Perl Code dessen Rückgabe in das Reading answer geschrieben wird
Klammerüberführung:
Im Regulärem Ausdruck gesetzte Klammern können in den Kommandoteil mit $1, $2, [...], $n überführt und
modifiziert werden. Folgende Modifizierungsmöglichkeiten stehen hierbei zur Verfügung.
$n Ohne Änderung direkt das Wort überführen.
$n{<typ> => <wert>}
Die Typen sind:
true, false, integer, float, numeral, /<regexp>/, word, empty, else true entspricht: ja|1|true|wahr|ein|eins.*|auf.*|..?ffnen|an.*|rauf.*|hoch.*|laut.*|hell.* false entspricht: nein|0|false|falsch|aus.*|null|zu.*|schlie..?en|runter.*|ab.*|leise.*|dunk.* integer Wort enthält eine Zahl
float Wort enthält eine Gleitkommazahl
numeral Word ist ein Zahlenwort oder Zahl /<regexp>/ Wort entspricht der <regexp>
word Wort enthält gleich oder mehr als 4 Zeichen
empty Wort enthält eine Leere Zeichenkette
else Falls keines der Fälle zutrifft
Wird ein <typ> identifiziert wird für $n der <wert> eingesetzt
Beispiel: licht (\S*) = set light $1{true => on,false => off}
$n[<list>]
Kommaseparierte Liste: [wert1,wert2,...,[else,value], [empty,value]] oder [@modwordlist]
Ist $n eine Zahl, wird das Wort das an dieser Position in <list> steht gewählt.
Ist $n ein Text wird in der zugehörigen Klammer im <regexp>-Teil nach einer Liste gesucht. (a|b|c) oder (@keywordlist)
In dieser Liste, wird nach $n gesucht und bei erfolg dessen Position in <list> für $n gewählt.
Beispiel: licht .* (küche|flur|bad) (\S*) an = set $1[dev_a,dev_b,dev_c] $2{true => on,false => off}
$n@ Das Wort wird so übernommen wie es in der Liste im <regexp>-Teil steht.
Umgebungsvariablen:
Es stehen eine Reihe von Variablen zur Verfügung auf die im <command>-Teil zugegriffen werden können.
$& Enthält alle gefundenen Wörter
!$& Enthält den Rest der nicht von der RegExp eingeschlossen wurde
$DATE Enthält den Zeit und Datumstext des Sprachbefehls
$AGAIN Enthält das Wort wieder wenn es sich um ein wieder Kommando handelt
$TIME Enthält die erkannte Zeit.
$NAME Enthält den Devicenamen.
$IF Enthält den Text der erkannten T2F_if Konfiguration.
$0 Enthält den Text der erkannten T2F_origin RegExp.
Set
set <name> [!]<text>
Über das set Kommando wird der zu interpretierende Text an das Modul gesendet.
Schaue unter commandref#set für weiterführende Hilfe.
cleartimers
Entfernt die wartenden zeitbezogenen Kommandos
cleartriggers
Entfernt die wartenden ereignisbezogenen Kommandos
Get get <name> <option>
Über get lassen sich Informationen aus dem Modul auslesen.
Siehe commandref#get für weitere Informationen zu "get".
<option>
@keywordlist@modwordlist
Vergleich der zwei Listen Wort für Wort
keylistno
Eine Auflistung der Konfigurierten "Keyword"-Listen. Zur einfacheren Positionierung der "Modword"-Listen
log
Zeigt die Logeinträge des letzten Kommandos
modificationtypes
Zeigt die RegExp der Modifikationstypen.
standardfilter
Lädt den Standardfilter und schreibt ihn in das Attribut T2F_filter wenn er leer ist
version
Die Modulversion
Readings
set
Enthält den zuletzt über "set" gesendeten Text.
cmds
Enthält das zuletzt ausgeführte Kommando. Wird auch bei disable=1 gesetzt.
answer
Enthält den Antworttext des letzten Befehls.
err
Enthält die letzte Fehlermeldung.
"No match" Übereinstimmung mit keiner RegExp.
"Error on Command" siehe FHEM log.
response
Enthällt die Rückgabe des FHEM Befhels.
origin
Enthält die gefundene Zeichenkette der in dem Attribut T2F_origin definierten RegExp.
status
Enthält den Status der Ausgabe.
response, disabled, err, answers, done
ifs
Enthält die Bedingungen bei denen das Kommando ausgeführt werden wird.
notifies
Enthält eine Auflistung der Devices die für die aktuell wartenden bedingten Kommandos relevant sind. Auf diesen Devices liegt ein internes notify.
Attribute
attr <name> <attribute> <value>
Siehe commandref#attr für weitere Informationen zu den Attributen.
Attribute:
T2F_keywordlist <name> = <list>
Eine Komma seperierte Liste von Schlüsselwörtern wie z.B.: Räumen, Namen, Farben usw...
Mit anderen Worten, mit natürlichem Namen benannte Sachen.
T2F_modwordlist <name> = <list>
Eine Komma seperierte Liste von Ersetzungswörten die für die Schlüsselwörter eingesetzt werden.
z.B.: Gerätenamen in FHEM
T2F_if
Eine Auflistung von ereignisgesteuerten Konfigurationen. Die Syntax ist die der Definition. Kommandoteil ist eine IF Bedingung.
z.B.: wenn .*?tür = [door] eq "open"
T2F_filter
Kommaseparierte Liste von RegExp die generell entfernt werden.
Standard: \bbitte\b,\bauch\b,\bkann\b,\bsoll\b
T2F_origin
Eine RegExp die generell entfernt wird und deren Ausgabe über $0 angesprochen werden kann.
Kann für eine Benutzerzuordnung verwendet werden.
T2F_languageDE|EN
Die verwendete Sprache kann über das globale Attribut "language" gesetzt werden. Oder über dieses Attribut überschrieben werden.
T2F_disableumlautescaping <0|1>
Deaktiviert das Konvertieren der Umlaute in "\S\S?"
disable <0|1>
Kann zu Testzwecken verwendet werden. Steht das Attribut auf 1, wird das FHEM-Kommando nicht ausgeführt
aber in das Reading cmds geschrieben.
Das modul empfängt Daten eines Techem Heizkostenverteilers.
Empfangen werden
Wert des aktuellen Abrechnungszeitraumes
Wert des vorhergehenden Abrechnungszeitraumes einschließlich des Ablesedatums
Beide Temperatur Sensoren (sofern der Heizkostenverteiler sie sendet)
Zum Empfang wird ein CUL im WMBUS_T mode benötigt. Dabei ist es ausreichend ihn vorrübergehend in diesen Modus zu schalten.
Das Modul überwacht den rfmode aller verfügbaren CUL
ID: 4 Ziffern wie auf dem Heizkostenverteiler angezeigt oder 8 Ziffern aus der Abrechnung
speaking name: (optional) Bezeichnung
Readings
current_period: Wert des aktuellen Abrechnungszeitraumes
Der kumulierte (einheitenlose) Verbrauch seid dem Start des aktuellen Abrechnungszeitraumes. Das reading wird einmal am Tag aktualisiert. Die Zeit kennzeichnet den Stand der Daten. (und nicht den Empfangszeitpunkt der Daten)
previous_period: Summe des letzten Abrechnungszeitraum
Die (einheitenlose) Summe der Verbauchs im gesamten letzten Abrechnungszeitraum. Das reading wird jeweils zu Beginn eines neuen Abrechnungszeitraumes aktualisiert. Die Zeit kennzeichnet das Ablesedatum also das Ende des vorherigen Abrechnugszeitraumes. (und nicht den Empfangszeitpunkt der Daten)
temp1: Umgebungstemperatur
temp2: Oberflächentemperatur des Heizkörpers
Internals
friendly: die beim define übergebene, zusätzliche Bezeichnung
Das modul empfängt Daten von Techem Volumenzählern. Unterstützte Zählertypen sind
Messkapsel-Wasserzähler radio 3 (Kalt-, Warmwasser)
Messkapsel-Wärmemengenzähler compact V
Empfangen werden:
Wert des aktuellen Abrechnungszeitraumes
Wert des vorhergehenden Abrechnungszeitraumes einschließlich des Ablesedatums
Gesamter aufgelaufener Verbrauchswert
Zum Empfang wird ein CUL im WMBUS_T mode benötigt. Dabei ist es ausreichend ihn vorrübergehend in diesen Modus zu schalten. Das Modul überwacht den rfmode aller verfügbaren CUL
Vorbereitung
Leider übertragen die Techem Volumenzähler nicht die aufgedruckte Zählernummer. Übertragen wird nur die ID des eingebauten Funkmoduls.
Das Modul stellt daher einen "list-mode" zur Verfügung. Damit kann eine Liste aller empfangenen Techem Volumenzähler anzeigt werden. Der "list-mode" wird aktiviert indem ein TechemWZ device mit der ID "00000000" definiert wird.
Lassen Sie dieses device einige Zeit laufen damit es Informationen über die verfügbaren Zähler sammeln kann. Rufen Sie dann "get <name> list" auf um eine Liste der empfangenen Techem Volumenzähler, ihrer ID sowie der dazugehörigen Zählerstände zu sehen. Denken Sie daran das dies die Werte des letzten Tageswechsels sind.
Notieren Sie sich anhand dieser Angaben die ID der gesuchten Zähler und definieren sie damit die entsprechenden TechemWZ device. Das list-mode device mit der ID "00000000" kann danach gefahrlos gelöscht werden.
ID: 8 stellige ID des Funkmoduls(siehe "list-mode")
speaking name: (optional) Bezeichnung
Readings
current_period: Wert des aktuellen Abrechnungszeitraumes
Der kumulierte Verbrauch seid dem Start des aktuellen Abrechnungszeitraumes. Das reading wird einmal am Tag aktualisiert. Die Zeit kennzeichnet den Stand der Daten. (und nicht den Empfangszeitpunkt der Daten)
previous_period: Wert des letzten Ablesezeitpunktes
Zählerstand zum letzten Abrechnungszeitpunkt. Das reading wird zum Ablesezeitpunkt aktualisiert. Die Zeit kennzeichnet das Ablesedatum (und nicht den Empfangszeitpunkt der Daten)
meter: gesamter Verbrauch.
Der Zählerstand so wie er an der (mechanischen) Anzeige des Zählers abgelesen werden kann
Get
list: gibt eine Liste der empfangenen Techem Volumenzähler, ihrer ID sowie der dazugehörigen Zählerstände aus.
nur im "list-mode" (ID "00000000") verfügbar
Internals
friendly: die beim define übergebene, zusätzliche Bezeichnung
TelegramBot
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TelegramBot
TellStick
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TellStick
Das Modul wandelt Text mittels verschiedener Provider/Ressourcen in Sprache um. Dabei kann das Device als
Remote, Lokales Device oder als Server konfiguriert werden.
Local Device
Die Ausgabe erfolgt auf angeschlossenen Audiodevices, zb. Lautsprecher direkt am Gerät oder per
Bluetooth-Lautsprecher per Mplayer. Dazu ist Mplayer zu installieren. apt-get install mplayer
Das angegebene Alsadevice ist in der /etc/asound.conf zu konfigurieren.
Special AlsaDevice: default
Ist als Alsa-Device default angegeben, so wird mplayer ohne eine Audiodevice Angabe aufgerufen.
Dementsprechend verwendet mplayer das Standard Audio Ausgabedevice.
Das Modul ist Client-Server fäas bedeutet, das auf der Haupt-FHEM Installation eine Text2Speech-Instanz
als Remote definiert wird. Auf dem Client wird Text2Speech als Local definiert. Die Sprachausgabe erfolgt auf
der lokalen Instanz.
Zu beachten ist, das die Text2Speech Instanz (Definition als local Device) auf dem Zieldevice identisch benannt ist.
Host: Angabe der IP-Adresse
PortNr: Angabe des TelnetPorts von FHEM; default: 7072
SSL: Angabe ob der der Zugriff per SSL erfolgen soll oder nicht; default: kein SSL
PortPassword: Angabe des in der Ziel-FHEM-Installtion angegebene Telnet Portpasswort
Wenn ein PRESENCE Gerät die Host IP-Adresse abfragt, wird die blockierende interne Prüfung auf Erreichbarkeit umgangen und das PRESENCE Gerät genutzt.
Server Device
Im Falle der Verwendung als Server, wird nur die MP3 Datei erstellt und als Reading lastFilename dargestellt. Es macht keinen Sinn
hier das Attribut TTS_speakAsFastAsPossible zu verwenden. Die Verwendung des Attributes TTS_useMP3Wrap wird dringend empfohlen.
Ansonsten wird hier nur der letzte Teiltext als mp3 Datei im Reading dargestellt.
Set
tts:
Setzen eines Textes zur Sprachausgabe. Um mp3-Dateien direkt auszugeben, müssen diese mit führenden
und schließenden Doppelpunkten angegebenen sein. Die MP3-Dateien müssen unterhalb des Verzeichnisses TTS_FileTemplateDir gespeichert sein.
Der Text selbst darf deshalb selbst keine Doppelpunte beinhalten. Siehe Beispiele.
volume:
Setzen der Ausgabe Lautstärke.
Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!
Get
N/A
Attribute
TTS_Delemiter
Optional: Wird ein Delemiter angegeben, so wird der Sprachbaustein an dieser Stelle geteilt.
Als Delemiter ist nur ein einzelnes Zeichen zulässig.
Hintergrund ist die Tatsache, das die Google Sprachengine nur 100Zeichen zulässt.
Im Standard wird nach jedem Satzende geteilt. Ist ein einzelner Satz länger als 100 Zeichen,
so wird zusätzlich nach Kommata, Semikolon und dem Verbindungswort und geteilt.
Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich und nur bei Nutzung der Google Sprachengine relevant!
TTS_Ressource
Optional: Auswahl der Sprachengine
Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!
Google
Nutzung der Google Sprachengine. Ein Internetzugriff ist notwendig! Aufgrund der Qualität ist der
Einsatz diese Engine zu empfehlen und der Standard.
VoiceRSS
Nutzung der VoiceRSS Sprachengine. Die Nutzung ist frei bis zu 350 Anfragen pro Tag.
Wenn mehr benötigt werden ist ein Bezahlmodell wählbar. Ein Internetzugriff ist notwendig!
Aufgrund der Qualität ist der Einsatz diese Engine ebenfalls zu empfehlen.
Wenn diese Engine benutzt wird, ist ein APIKey notwendig (siehe TTXS_APIKey)
ESpeak
Nutzung der ESpeak Offline Sprachengine. Die Qualitä ist schlechter als die Google Engine.
ESpeak und lame sind vor der Nutzung zu installieren. apt-get install espeak lame
SVOX-pico
Nutzung der SVOX-Pico TTS-Engine (aus dem AOSP).
Die Sprachengine sowie lame müssen installiert sein: sudo apt-get install libttspico-utils lame
Für ARM/Raspbian sind die libttspico-utils leider nicht verfügbar,
deswegen müsste man diese selbst kompilieren oder das vorkompilierte Paket aus dieser Anleitung verwenden, in aller Kürze: sudo apt-get install libpopt-dev lame cd /tmp wget http://www.dr-bischoff.de/raspi/pico2wave.deb sudo dpkg --install pico2wave.deb
TTS_APIKey
Wenn VoiceRSS genutzt wird, ist ein APIKey notwendig. Um diesen zu erhalten ist eine vorherige
Registrierung notwendig. Anschließend erhält man den APIKey
http://www.voicerss.org/registration.aspx
TTS_User
Bisher ohne Benutzung. Falls eine Sprachengine zusätzlich zum APIKey einen Usernamen im Request verlangt.
TTS_CacheFileDir
Optional: Die per Google geladenen Sprachbausteine werden in diesem Verzeichnis zur Wiedeverwendung abgelegt.
Es findet zurZEit keine automatisierte Löschung statt.
Default: cache/
Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!
TTS_UseMP3Wrap
Optional: Für eine flüssige Sprachausgabe ist es zu empfehlen, die einzelnen vorher per Google
geladenen Sprachbausteine zu einem einzelnen Sprachbaustein zusammenfassen zu lassen bevor dieses per
Mplayer ausgegeben werden. Dazu muss Mp3Wrap installiert werden. apt-get install mp3wrap
Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!
TTS_MplayerCall
Optional: Angabe der Systemaufrufes zu Mplayer. Das folgende Beispiel ist der Standardaufruf.
Beispiel: sudo /usr/bin/mplayer
TTS_SentenceAppendix
Optional: Angabe einer mp3-Datei die mit jeder Sprachausgabe am Ende ausgegeben wird.
Voraussetzung ist die Nutzung von MP3Wrap. Die Sprachbausteine müssen bereits als mp3 im
CacheFileDir vorliegen.
Beispiel: silence.mp3
TTS_FileMapping
Angabe von möglichen MP3-Dateien mit deren Templatedefinition. Getrennt duch Leerzeichen.
Die Templatedefinitionen können in den per tts übergebenen Sprachbausteinen verwendet werden
und müssen mit einem beginnenden und endenden Doppelpunkt angegeben werden.
Die Dateien müssen im Verzeichnis TTS_FileTemplateDir gespeichert sein. attr myTTS TTS_FileMapping ring:ringtone.mp3 beep:MyBeep.mp3 set MyTTS tts Achtung: hier kommt mein Klingelton :ring: War der laut?
TTS_FileTemplateDir
Verzeichnis, in dem die per TTS_FileMapping und TTS_SentenceAppendix definierten
MP3-Dateien gespeichert sind.
Optional, Default: cache/templates
TTS_VolumeAdjust
Anhebung der Grundlautstärke zur Anpassung an die angeschlossenen Lautsprecher.
Default: 110 attr myTTS TTS_VolumeAdjust 400
TTS_noStatisticsLog 1, verhindert das Loggen von Statistikdaten in DbLog Geräten, default ist 0
Bitte zur Beachtung: Das Logging ist wichtig um alte, lang nicht genutzte Cachedateien automatisiert zu loeschen.
Wenn dieses hier dektiviert wird muss sich der User selbst darum kuemmern.
TTS_speakAsFastAsPossible
Es wird versucht, so schnell als möglich eine Sprachausgabe zu erzielen. Bei Sprachbausteinen die nicht bereits lokal vorliegen,
ist eine kurze Pause wahrnehmbar. Dann wird der benötigte Sprachbaustein nachgeladen. Liegen alle Sprachbausteine im Cache vor,
so hat dieses Attribut keine Auswirkung.
Attribut nur verfügbar bei einer lokalen oder Server Instanz
disable
If this attribute is activated, the soundoutput will be disabled.
Possible values: 0 => not disabled , 1 => disabled
Default Value is 0 (not disabled)
verbose 4: Alle Zwischenschritte der Verarbeitung werden ausgegeben 5: Zusätzlich werden auch die Meldungen von Mplayer und Mp3Wrap ausgegeben
Beispiele
define MyTTS Text2Speech hw=0.0 set MyTTS tts Die Alarmanlage ist bereit. set MyTTS tts :beep.mp3: set MyTTS tts :mytemplates/alarm.mp3:Die Alarmanlage ist bereit.:ring.mp3:
TrashCal
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TrashCal
Erstellt ein virtuelles Device für die Dämmerungsberechnung (Zwielicht)
latitude, longitude (geografische Länge & Breite)
Die Parameter latitude und longitude sind Dezimalzahlen welche die Position auf der Erde bestimmen, für welche der Dämmerungs-Status berechnet werden soll.
indoor_horizon
Der Parameter indoor_horizon bestimmt einen virtuellen Horizont, der für die Berechnung der Dämmerung innerhalb von Rämen genutzt werden kann. Minimalwert ist -6 (ergibt gleichen Wert wie Zivile Dämmerung). Bei 0 fallen
indoor- und realer Dämmerungswert zusammen. Werte grösser 0 ergeben frühere Werte für den Abend bzw. spätere für den Morgen.
Weather_Position
Der Parameter Weather_Position ist die Yahoo! Wetter-ID welche für den Bezug der Wetterinformationen gebraucht wird. Gehe auf http://weather.yahoo.com/ und gebe einen Ort (ggf. PLZ) ein. In der URL der daraufhin geladenen Seite ist an letzter Stelle die ID. Beispiel: München, Deutschland -> 676757
Ein Twilight-Device berechnet periodisch die Dämmerungszeiten und -phasen während des Tages.
Es berechnet ein virtuelles "Licht"-Element das einen Indikator für die momentane Tageslichtmenge ist.
Neben der Position auf der Erde wird es vom sog. "indoor horizon" (Beispielsweise hohe Gebäde oder Berge)
und dem Wetter beeinflusst. Schlechtes Wetter führt zu einer Reduzierung des Tageslichts für den ganzen Tag.
Das berechnete Licht liegt zwischen 0 und 6 wobei die Werte folgendes bedeuten:
light 0 - Totale Nacht, die Sonne ist mind. -18 Grad hinter dem Horizont 1 - Astronomische Dämmerung, die Sonne ist zw. -12 und -18 Grad hinter dem Horizont 2 - Nautische Dämmerung, die Sonne ist zw. -6 and -12 Grad hinter dem Horizont 3 - Zivile/Bürgerliche Dämmerung, die Sonne ist zw. 0 and -6 hinter dem Horizont 4 - "indoor twilight", die Sonne ist zwischen dem Wert indoor_horizon und 0 Grad hinter dem Horizont (wird nicht verwendet wenn indoor_horizon=0) 5 - Wetterbedingte Dämmerung, die Sonne ist zwischen indoor_horizon und einem virtuellen Wetter-Horizonz (der Wetter-Horizont ist Wetterabhängig (optional) 6 - Maximales Tageslicht
Azimut, Elevation, Twilight (Seitenwinkel, Höhenwinkel, Dämmerung)
Das Modul berechnet zusätzlich Azimuth und Elevation der Sonne. Diese Werte können zur Rolladensteuerung verwendet werden.
Das Reading Twilight wird als neuer "(twi)light" Wert hinzugefügt. Er wird aus der Elevation der Sonne mit folgender Formel abgeleitet: (Elevation+12)/18 * 100). Das erlaubt eine detailliertere Kontrolle der Lampen während Sonnenauf - und untergang. Dieser Wert ist zwischen 0% und 100% wenn die Elevation zwischen -12° und 6°
Wissenswert dazu ist, dass die Sonne, abhägnig vom Breitengrad, bestimmte Elevationen nicht erreicht. Im Juni und Juli liegt die Sonne in Mitteleuropa nie unter -18°. In nördlicheren Gebieten (Norwegen, ...) kommt die Sonne beispielsweise nicht über 0°.
All diese Aspekte müssen berücksichtigt werden bei Schaltungen die auf Twilight basieren.
die Zeit wann das nächste Event wahrscheinlich passieren wird (während Lichtphase 5 und 6 wird dieser Wert aktualisiert wenn sich das Wetter ändert)
sr_astro
Zeit des astronomitschen Sonnenaufgangs
sr_naut
Zeit des nautischen Sonnenaufgangs
sr_civil
Zeit des zivilen/bürgerlichen Sonnenaufgangs
sr
Zeit des Sonnenaufgangs
sr_indoor
Zeit des "indoor" Sonnenaufgangs
sr_weather
"Wert" des Wetters beim Sonnenaufgang
ss_weather
"Wert" des Wetters beim Sonnenuntergang
ss_indoor
Zeit des "indoor" Sonnenuntergangs
ss
Zeit des Sonnenuntergangs
ss_civil
Zeit des zivilen/bürgerlichen Sonnenuntergangs
ss_nautic
Zeit des nautischen Sonnenuntergangs
ss_astro
Zeit des astro. Sonnenuntergangs
azimuth
aktueller Azimuth der Sonne. 0° ist Norden 180° ist Süden
compasspoint
Ein Wortwert des Kompass-Werts
elevation
the elevaltion of the sun
twilight
Prozentualer Wert eines neuen "(twi)light" Wertes: (elevation+12)/18 * 100)
twilight_weather
Prozentualer Wert eines neuen "(twi)light" Wertes: (elevation-WEATHER_HORIZON+12)/18 * 100). Wenn ein Wetterwert vorhanden ist, ist es immer etwas dunkler als bei klarem Wetter.
Nutzt Daten von einem anderen Device um twilight_weather zu berechnen.
Das Reading sollte sich im Intervall zwischen 0 und 100 bewegen, z.B. das Reading c_clouds in einemopenweathermap device, bei dem 0 heiteren und 100 bedeckten Himmel bedeuten.
Wird diese Attribut genutzt , werden Wettereffekte wie Starkregen oder Gewitter fuer die Berechnung von twilight_weather nicht mehr herangezogen.
Functions
twilight($twilight, $reading, $min, $max)
- implementiert eine Routine um die Dämmerungszeiten wie Sonnenaufgang mit min und max Werten zu berechnen.
$twilight
Name der twiligh Instanz
$reading
Name des zu verwendenden Readings. Beispiel: ss_astro, ss_weather ...
$min
Parameter min time - optional
$max
Parameter max time - optional
Anwendungsbeispiel:
define BlindDown at *{twilight("myTwilight","sr_indoor","7:30","9:00")} set xxxx position 100
# xxxx ist ein definiertes Rollo
Das Modul extrahiert Unwetterwarnungen von www.unwetterzentrale.de.
Hierfür wird die selbe Schnittstelle verwendet die auch die Android App Alerts Pro nutzt.
Es werden maximal 10 Standortbezogene Unwetterwarnungen zur Verfügung gestellt.
Weiterhin verfügt das Modul über HTML-Templates welche als weblink verwendet werden können.
Es nutzt die Perl-Module HTTP::Request, LWP::UserAgent, JSON, Encode::Guess und HTML::Parse.
Beispiel:
define Unwetterzentrale UWZ DE 86405 3600
[Ländercode]
Mögliche Werte: DE, AT, CH, SEARCH, ...
(für ander Länder als Deutschland bitte den SEARCH Parameter nutzen um die AreaID zu ermitteln.)
[Postleitzahl/AreaID]
Die Postleitzahl/AreaID des Ortes für den Unwetterinformationen abgefragt werden sollen.
[INTERVAL]
Definiert das Interval zur aktualisierung der Unwetterwarnungen. Das Interval wird in Sekunden angegeben, somit aktualisiert das Modul bei einem Interval von 3600 jede Stunde 1 mal.
Get
get <name> Bodenfrost
Gibt aus ob aktuell eine Bodenfrostwarnung besteht (active|inactive).
get <name> Extremfrost
Gibt aus ob aktuell eine Extremfrostwarnung besteht (active|inactive).
get <name> Gewitter
Gibt aus ob aktuell eine Gewitter Warnung besteht (active|inactive).
get <name> Glaette
Gibt aus ob aktuell eine Glaettewarnung besteht (active|inactive).
get <name> Glatteisregen
Gibt aus ob aktuell eine Glatteisregen Warnung besteht (active|inactive).
get <name> Hagel
Gibt aus ob aktuell eine Hagel Warnung besteht (active|inactive).
get <name> Hitze
Gibt aus ob aktuell eine Hitze Warnung besteht (active|inactive).
get <name> Regen
Gibt aus ob aktuell eine Regen Warnung besteht (active|inactive).
get <name> Schneefall
Gibt aus ob aktuell eine Schneefall Warnung besteht (active|inactive).
get <name> Sturm
Gibt aus ob aktuell eine Sturm Warnung besteht (active|inactive).
get <name> Waldbrand
Gibt aus ob aktuell eine Waldbrand Warnung besteht (active|inactive).
Get (Search-Mode)
get <name> SearchAreaID <gesuchte_stadt>
Gibt die AreaID zum eingegebenen Ort aus.
Set
set <name> update
Startet sofort ein neues Auslesen der Unwetterinformationen.
Attribute
download
Download Unwetterkarten während des updates (0|1).
savepath
Pfad zum speichern der Karten (default: /tmp/).
maps
Leerzeichen separierte Liste der zu speichernden Karten. Für mögliche Karten siehe UWZAsHtmlKarteLand.
humanreadable
Anzeige weiterer Readings Warn_?_Start_Date, Warn_?_Start_Time, Warn_?_End_Date, Warn_?_End_Time. Diese Readings enthalten aus dem Timestamp kalkulierte Datums/Zeit Angaben. Weiterhin werden folgende Readings aktivier: Warn_?_Type_Str und Warn_?_uwzLevel_Str welche den Unwettertyp als auch das Unwetter-Warn-Level als Text ausgeben. (0|1)
lang
Umschalten der angeforderten Sprache für kurz und lange warn text. (de|en|it|fr|es|..).
sort_readings_by
Sortierreihenfolge der Warnmeldungen. (start|severity|creation).
htmlsequence
Anzeigereihenfolge der html warnungen. (ascending|descending).
htmltitle
Titel / Ueberschrift der HTML Ausgabe
htmltitleclass
css-Class des Titels der HTML Ausgabe
localiconbase
BaseURL angeben um Warn Icons lokal zu hosten. (Dateityp ist png).
intervalAtWarnLevel
konfiguriert den Interval je nach WarnLevel. Beispiel: 2=1800,3=900,4=300
Readings
Warn_0|1|2|3...|9_... - aktive Warnmeldungen
WarnCount - Anzahl der aktiven Warnmeldungen
WarnUWZLevel - Gesamt Warn Level
WarnUWZLevel_Color - Gesamt Warn Level Farbe
WarnUWZLevel_Str - Gesamt Warn Level Text
Warn_0_AltitudeMin - minimum Höhe für Warnung
Warn_0_AltitudeMax - maximum Höhe für Warnung
Warn_0_EventID - EventID der Warnung
Warn_0_Creation - Warnungs Erzeugung
Warn_0_Creation_Date - Warnungs Erzeugungs Datum
Warn_0_Creation_Time - Warnungs Erzeugungs Zeit
currentIntervalMode - default/warn, aktuell Verwendeter Interval. Internal INTERVAL oder INTERVALWARN
Warn_0_Start - Begin der Warnung
Warn_0_Start_Date - Startdatum der Warnung
Warn_0_Start_Time - Startzeit der Warnung
Warn_0_End - Warn Ende
Warn_0_End_Date - Enddatum der Warnung
Warn_0_End_Time - Endzeit der Warnung
Warn_0_Severity - Schwere des Unwetters (0 kein Unwetter, 12 massives Unwetter)
Über die Funktionen UWZAsHtml, UWZAsHtmlLite, UWZAsHtmlFP, UWZAsHtmlKarteLand, UWZAsHtmlMovie wird HTML-Code zur Warnanzeige und Wetterfilme über weblinks erzeugt.
FHEM Modul für die Ubiquiti mFi mPower Schaltsteckdosen
Mehr Informationen zu den verschiedenen mPower Modellen im Wiki unter https://wiki.fhem.de/wiki/Ubiquit_mFi/mPower
FHEM Forum : http://forum.fhem.de/index.php/topic,35722.0.html
Define
define <name> UbiquitiMP <IP oder FQDN>
Beispiel :
define myUbi UbiquitiMP 192.168.0.100
define myUbi UbiquitiMP myhost.mynet.net
Das Perl Net::Telnet und sowie das JSON Modul werden unbedingt benötigt.
Auf einem Raspberry Pi können diese mit den folgenden beiden Kommandos installiert werden:
sudo apt-get install libjson-perl
sudo apt-get install libnet-telnet-perl
Set
Outx on / off (force) -> schaltet den Port x an oder aus
Outx toggle -> schaltet den Port aus wenn er an ist und umgekehrt
Outx lock / unlock -> Ist lock bei einem Port gesetzt kann er nicht mehr an oder aus geschaltet werden
Outx reset -> setzt den internen Verbrauchszähler für diesen Port zurück
Outx enable / disable -> interne Verbrauchsmessung für diesen Port ein / aus schalten
Bei der mPower mini entfällt die Angabe von Outx !
Zusätzlich unterstützt die mini die set Extensions direkt
Get
status -> Gibt den aktuellen Status aller Ports zurück
info -> liefert einige interne Parameter des Gerätes
reboot -> Startet das Gerät neu
Attributes
ignoreList -> Liste der Ports die bei Abfragen ignoriert werden sollen, Bsp. attr Ubi ignoreList 456
ignoriert alle Werte der Ports 4,5 und 6
groupPorts -> Durch Kommatas getrennte Liste um Ports in Gruppen zusammen zu fassen.
Die Gruppen können danach wie win einzelner Port behandelt werden.
Bsp. attr Ubi groupPorts TV=12 Media=4,5,6 (GruppenName=Port Nummer des Ports in der Gruppe) set Ubi TV on oder set Ubi Media toggle
ledconnect -> Farbe der LED beim Zugriff mit fhem
subDevices -> Legt für jeden Port ein eigenes Subdevice an
(Default 1 für die 3 and 6 Port mPower, Default 0 für die mPower 1 Port mini) benötigt zusätzlich das Modul 98_UbiquitiOut.pm
interval -> Abfrage Interval in Sekunden, kann ausgeschaltet werden mit dem Wert 0 (Default ist 300)
timeout -> Wartezeit in Sekunden bevor eine Abfrage mit einer Fehlermeldung abgebrochen wird (Default ist 5 Sekunden)
Werte unter zwei Sekunden werden vom Modul nicht angenommen !
user -> Login Username (Default ubnt)
password -> Login Passwort (Default ubnt)
UbiquitiOut
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: UbiquitiOut
Unifi
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: Unifi
UnifiSwitch
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: UnifiSwitch
UnifiVideo
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: UnifiVideo
Der UpsPIco ist eine unterbrechungsfreie Stroimversorgung für den Raspberry Pi von PiModules. Dieses Modul wurde für die Firmware ab Version 0x38 und höher geschrieben und wurde nur auf dem "UPS PIco HV3.0A Stack Plus" getestet.
Dieses Modul stellt alle internen Daten zur Verfügung, welche in die UpsPIco Register geschrieben und über den I2C - Bus ausgelesen werden. Der set-Befehl ist darüber hinaus in der Lage die Werte der Register entsprechend Ihrer Spezifikation zu ändern.
Detailierte Informationen zu den einzelnen Registern stehen in den Register Spezifikationen in der letzten veröffentlichten Anleitung. (Siehe unten)
Eine gültige IPv4 Adresse des Raspberry Pi mit UpsPIco. Gegebenenfalls muss der Router für die an den Raspberry Pi vergebene DHCP Adresse konsultiert werden.
<GatewayPassword> :
Der Username des entfernten Raspberry Pi.
<PrivatePassword> :
Das Passwort des entfernten Raspberry Pi.
Set
Diese Funktion verändert die Werte der register, welche als beschreibbar definiert sind.
Sind die entsprechenden Register als kritisch (critical) spezifiziert (Ein falscher Wert könnte zur Beschädigung des UpsPIco führen), muss das Atttribut "WriteCritical" vorher auf "1" gesetzt werden.
set <name> <register> <value>
<name> :
Der name des definierten UpsPico Device
<register> :
Der name des Registers welches verändert werden soll. E.g.: "/Status/key"
<value> :
Ein gültiger Wert für das Register.
Get
Die get Funktion liest einzelne Register aus und schreibt sie in das entsprechende Reading.
Es wird nur der Wert, aber nicht die Einheit oder der gültige Wertebereich zurückgegeben.
get <name> <register>
<name> :
Der name des definierten UpsPico Device
<register> :
Der name des Registers welches ausgelesen werden soll. E.g.: "/Status/key"
Attributes
Die folgenden Attribute können neben den allgemeinen Attributen wie room vergeben werden.
PollingInterval :
Abrageinterval für den UPS PIco. Der Wert muss >=20s sein um einen vollen Polling Zyklus zu erlauben.
Der Defaul Wert ist 300s.
WriteCritical :
Verhindert versehentliche Beschädigungen durch Beschreiben der kritischen Register mit falschen Werten.
Musz für jeden einzelnen Schreibvorgang erneut gesetzt werden da dieser zurückgesetzt wird..
Der Default Wert ist 0 = Deaktiviert.
Port :
Port Nummer für den SSH Zugang am entfernten Raspberry Pi.
Der Default Wert ist 22 = Standard SSH Port
CredentialsEncrypted :
Definiert ob die Anmeldedaten in lesbarer Form (PlainText) oder als base64 verschlüsselt vorliegen.
Der Default Wert ist 0 = Anmeldedaten liegen in PlainText vor.
DbLogExclude :
Generelles Attribut um Readings von Loggen auszuschließen. Das Attribut wird automatisch auf "/Status/pico_is_running" gesetzt welchen den kontinuierlichen Watchdog Zähler vom loggen ausnimmt.
Es ergibt keinen Sinn dieses Reading zu loggen.
Der Default Wert für die Ausnahme vom loggen liegt auf dem Reading "/Status/pico_is_running"
event-on-change-reading :
Generelles Attribut um Events nur bei änderungen von Readings zu erzeugen. Das Attribut wird automatisch auf ".*" gesetzt, was alle Readings nur bei änderungen loggt.
Der Default Wert ist ".*" = Alle Readings.
room :
Generelles Attribut zum setzen des Raumes. Das Attribut wird automatisch auf "UpsPIco" gesetzt, damit das device nicht im "Everthing" Raum verschwindet.
Der Default Wert ist "UpsPIco".
Utils
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: Utils
Das VCONTROL ist das fhem-Modul eine VIESSMANN Heizung via Optolink-Schnittstelle auszulesen und zu steuern.
Notwendig ist dazu ein Optolink-Adapter (USB oder LAN), zu dem hier Informationen zu finden sind: http://openv.wikispaces.com/
Zusätzlich müssen für die verschiedenen Heizungstypen (z.B. V200KW1, VScotHO1, VPlusHO1 ....) Speicher-Adressen bekannt sein,
unter denen die Messwerte abgefragt oder aber auch Stati gesetzt werden können.
Informationen hierzu findet man im Forum http://openv.wikispaces.com/ und auf der wiki Seite http://openv.wikispaces.com/
ADDRESSE
Adresse, an der der auszulesende Wert im Speicher zu finden ist.
Sie besteht aus 3 Teilen:
beginnt immer mit 01F7 (Kommando zum Lesen)
danach folgt die eigentliche Addresse
danach muss die Anzahl der zu lesenden Bytes noch an die Adresse angehängt werden.
PARSEMETHODE
Methode wie die gelesenen Bytes interpretiert werden müssen.
Bisher mögliche Parsemethoden:
1ByteU : Empfangener Wert in 1 Byte ohne Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)
1ByteU2 : Empfangener Wert in 1 Byte ohne Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)
1ByteS : Empfangener Wert in 1 Byte mit Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)
2ByteS : Empfangener Wert in 2 Byte mit Vorzeichen
2ByteU : Empfangener Wert in 2 Byte ohne Vorzeichen
2BytePercent : Empfangener Wert in 2 Byte als Prozent Wert
2ByteH : Empfangener Wert in 2 Byte als Hex Wert
4Byte : Empfangener Wert in 4 Byte
mode : Empfangener Wert ist der Betriebsstatus
timer : Empfangener Wert ist ein 8 Byte Timer Werte
date : Empfangener Wert ist ein 8 Byte Zeitstempel
POLL Commandos die die Parsemethode timer enthalten werden nicht ständig gelesen, sondern müssen mit einem GET Commando geholt werden.
GET <devicename> TIMER
DIVISOR
Wenn der interpretierte Wert noch um einen Faktor zu hoch ist, kann hier ein Divisor angegeben werden.
Zusätzlich hat man hier bei Werten, die nur 0 oder 1 liefern die möglich state einzutragen.
Dies führt dazu, dass das Reading mit off (0) und on (1) belegt wird, statt mit dem Wert.
READING-NAME
Der gelesene und interpretierte Wert wird unter diesem Reading abgelegt.
KUMULATION
Bei den Polling Commandos mit dem Wert day bei der Spalte KUMULATION werden Tageswerte Kumuliert.
Es werden dann jeweils nach 00:00 Uhr die Werte des letzten Tages ebenfalls als Readings im Device eingetragen,
so dass man die Werte pro Tag auch plotten oder auswerten kann.
Beim Readingnamen wird dann jeweils: DayStart,Today und LastDay angehangen!
SET,SETCMD, ADRESSE, CONVMETHODE, NEXT_CMD or DAY for timer
SET
muss fest auf SET stehen
SETCMD
Die SETCMD sind die Commandos die man in FHEM zum setzen angeben muss
set <devicename> <setcmd>
z.B. SET <devicename> WW zum setzen auf den Status nur Warm Wasser Aufbereitung
ADDRESSE
Adresse, an der der zu setzende Wert im Speicher zu schreiben ist.
Sie besteht aus 4 Teilen:
beginnt immer mit 01F4 (Kommando zum Lesen)
danach folgt die eigentliche Addresse
danach folgt die Anzahl der zu schreibenden Daten-Bytes
danach müssen die Daten-Bytes selber noch an die Adresse angehängt werden.
Es gibt zwei Varianten bei den Adressen:
Variante 1: Wert steht bereits fest, z.B. Spar Modus einschalten ist fix 01
Variante 2: Wert muss übergeben werden, z.B. Warm Wasser Temperatur
CONVMETHODE
Methode wie der zu schreibende Wert bei Variante 2 in Bytes konvertiert werden muss.
Bei Variante 1 kann man - eintragen.
Bisher mögliche Convmethoden:
1ByteU : Zu sendender Wert in 1 Byte ohne Vorzeichen bei Variante 2 muss eine Zahl übergeben werden
1ByteS : Zu sendender Wert in 1 Byte mit Vorzeichen bei Variante 2 muss eine Zahl übergeben werden
2ByteS : Zu sendender Wert in 2 Byte mit Vorzeichen bei Variante 2 muss eine Zahl übergeben werden
2ByteU : Zu sendender Wert in 2 Byte ohne Vorzeichen bei Variante 2 muss eine Zahl übergeben werden
timer : Zu sendender Wert ist ein 8 Byte Timer Werte bei Variante 2 muss folgender String uebergeben werden:
8 Uhrzeiten mit Komma getrennt. (AN1,AUS1,AN2,AUS2,AN3,AUS3,AN4,AUS4)
Keine Uhrzeit muss als -- angegeben werden.
Minuten der Uhrzeiten dürfen nur 00,10,20,30,40 oder 50 sein
Beispiel: 06:10,12:00,16:00,23:00,--,--,--,--
date : Zu sendender Wert ist ein 8 Byte Zeitstempel bei Variante 2 muss folgender String uebergeben werden:
es muss das Format DD.MM.YYYY_HH:MM:SS eingehalten werden
Beispiel: 21.03.2014_21:35:00
NEXT_CMD or DAY
Diese Spalte erfüllt drei Funktionen:
Gibt man in dieser Spalte ein anderes konfiguriertes SETCMD an, so wird dies anschließend ausgeführt.
Beispiel: nach dem Spar Modus (S-ON) gesetzt wurde, muss der Party Modus (P-OFF) ausgeschaltet werden
Ist als CONVMETHODE 1ByteU oder 1ByteS oder 2ByteS oder 2ByteU angegeben, so kann hier ein Faktor angegeben,
der beim SET auf den angegeben multipliziert wird
Beispiel: SET, TEMPNHK1 , 01F4200002 , 2ByteU , 10
Bei SET DEVICE TEMPNHK1 21 wird 210 an die Heizung gesendet.
Ist als CONVMETHODE timer angegeben, so muss man in dieser Spalte den Wochentag angeben, für den der Timer gilt.
Mögliche Werte: MO DI MI DO FR SA SO
Dieses Modul steuert einen Panasonic Fernseher über das Netzwerk. Es ist möglich den Fernseher
auszuschalten, die Lautstärke zu ändern oder zu muten bzw. unmuten. Dieses Modul kann zusätzlich
die Fernbedienung simulieren. Somit können also die Schaltaktionen einer Fernbedienung simuliert werden.
Getestet wurde das Modul mit einem Panasonic Plasma TV tx-p50vt30e
Beim definieren des Gerätes in FHEM wird ein interner Timer gestartet, welcher zyklisch alle 30 Sekunden
den Status der Lautstärke und des Mute-Zustand ausliest. Das Intervall des Timer kann über den Parameter <interval>
geändert werden. Wird kein Interval angegeben, liest das Modul alle 30 Sekunden die Werte aus und triggert ein notify.
Anmerkung:
Aktivieren von Fernbedienung der Lautstärke per DLNA: Menü -> Setup -> Netzwerk-Setup -> Netzwerkverbindungsein. -> DLNA-Fernbed. Lautst. -> Ein
Beispiel:
define myTV1 VIERA 192.168.178.20
define myTV1 VIERA 192.168.178.20 60 #Mit einem Interval von 60 Sekunden
Set
set <name> <command> [<value>]
Zur Zeit sind die folgenden Befehle implementiert:
Vallox ist ein Hersteller von Belüftungsanlagen mit Wärmetauscher.
Die Systeme verfügen sowohl an der zentralen Lüftungskomponente, als auch an den Terminals über eine RS485-Schnittstelle über die die gesamte interne Kommunikation abgewickelt wird.
Mehr Informationen sind auf der FHEM-Wiki-Seite verfügbar.
Define
define <name> Vallox <RS485-Device[@baud]> [BusVersion]
Wird die Baudrate weggelassen wird mit 9600 baud kommuniziert. (Standardrate des Vallox-Busses).
Die BusVersion kann bei älteren Anlagen auf 1 gesetzt werden. (Standard: 2).
Beispiel: define Ventilation Vallox /dev/ttyUSB1
Set
FanSpeed < 1-8 >
Erlaubt das Ändern der Lüftergeschwindigkeit (1 = minimal; 8 = maximal).
BasicHumidityLevel < 0-100 >
Erlaubt das Ändern des Luftfeuchtigkeits-Grenzwertes (Terminaldisplay: Grenzwert %RH).
HeatRecoveryCellBypassSetpointTemperature < 0-20 >
Erlaubt das Ändern des Grenzwertes für den Wärmetauscher-Bypass (Terminaldisplay: WRG Bypass)
raw < HexWert >
HexWert sind zwei 2-stellige Hex-Zahlen, welche den Typ und den Wert der Einstellung identifiziert.
Beispiel um die Lüftergeschwindigkeit auf 3 zu setzen: set Ventilation raw 2907
oder: set Ventilation FanSpeed 3
Get
reading < readingname >
Erlaubt das Auslesen der vorgegebenen Datenpunkte aus dem Bus.
raw < HexWert >
HexWert ist eine 2-stellige Hex-Zahl, welche den Typ der abzufragenden Einstellung identifiziert.
Attribute
ValloxIDDomain < HexWert >
HexWert ist eine 2-stellige Hex-Zahl die als "Adresse" der Bus-Domäne dient. (Standard: 01).
ValloxIDCentral < HexWert >
HexWert ist eine 2-stellige Hex-Zahl die als "Adresse" der zentralen Ventilationseinheit dient. (Standard: 11).
In einer normalen Umgebung werden die Ventilationseinheiten mit 11 - 1F adressiert. 10 ist die Broadcast-Adresse.
ValloxIDFHEM < HexWert >
HexWert ist eine 2-stellige Hex-Zahl die als "Adresse" dieses Systems als virtuelles Kontrollterminal dient. (Standard: 2F).
Sie darf nicht bereits im Bus genutzt werden.
In einer normalen Umgebung werden die Kontrollterminals mit 21 - 2F adressiert. 20 ist die Broadcast-Adresse.
In den Einstellungen der physikalisch vorhandenen Terminals kann die "FBD-Adresse" des jeweiligen Terminals eingestellt werden.
Hierbei stehen die Werte 1-15 zur Verfügung, was der zweiten Stelle dieser Adresse (1-F) entspricht. Die erste Stelle ist immer 2.
Das physikalische Kontrollterminal ist üblicherweise die 21.
ValloxBufferDebug < 0/1 >
Wenn 1, erzeugt das Modul ein Internal in welches die rohen Hex-Daten aus dem Bus herein geschrieben. NUR ZUM DEBUGGEN! (Standard: 0).
ValloxForceBroadcast < 0/1 >
Wenn 1, sendet das Modul die Befehle nicht nur an die zentrale Ventilationseinheit (11), sondern auch an alle Broadcast-Adressen (10/20). Dies ist manchmal bei älteren Anlagen notwendig, wenn sich die Anzeige auf den Kontrollterminals nicht mit aktualisiert. (Standard: 0; Funktion immer an bei BusVersion 1).
ValloxProcessOwnCommands < 0/1 >
Wenn 1, behandelt das Modul die eigenen Befehle auch als Empfangene Befehle und verarbeitet sie intern weiter. Dies ist manchmal bei älteren Anlagen notwendig. (Standard: 0; Funktion immer an bei BusVersion 1).
Verkehrsinfo kann die aktuellen Verkehrsinformationen von verschiedenen Quellen auslesen.
Verkehrsinfo.de
Um die gewünschten Verkehrsinformation zu erhalten wird die Webseite https://www.verkehrsinfo.de/httpsmobil besucht.
Hier können Sie dann entweder Straßen oder Bundesländer auswählen. Anschließend wird die URL als Parameter übergeben.
Hessenschau.de
Hier ist keine Konfiguration notwendig, man verwendet die URL http://hessenschau.de/verkehr/index.html als Parameter.
RadioSAW.de
Hier ist keine Konfiguration notwendig, man verwendet als Parameter radiosaw.
Voraussetzung:
Für dieses Modul werden folgende Perlmodule benötigt:
interval
Alle wieviel Sekunden die Daten aktualisiert werden
Set
set <name> <option>
Options:
update
Update wird sofort ausgeführt
Get
get <name> <option>
Options:
info
Ausgeben der aktuellen Verkehrsinformationen
Attributes
attr <name> <option> <value>
Options:
filter_exclude
Dies ist ein Ausschlussfilter. Verkehrsmeldung die eines der Wörter enthalten, werden nicht angezeigt.
Der Filter unterstütz Regulärer Ausdrücke. Achtung: Regex Steuerzeichen, z.B. Klammern müssen mit einem Backslash "\" maskiert werden.
Mehrer Suchbegriffe können mit einer Pipe "|" getrennt werden.
filter_include
Dies ist ein Einschlussfilter. Es werden nur Verkehrsmeldung angezeigt die eines der Wörter enthalten.
Der Filter unterstütz Regulärer Ausdrücke. Achtung: Regex Steuerzeichen, z.B. Klammern müssen mit einem Backslash "\" maskiert werden.
Mehrer Suchbegriffe können mit einer Pipe "|" getrennt werden.
Hinweis: Beide Filter können gleichzeitig benutzt werden, aber es kann auch wahlweise nur einer verwendet werden.
Die Filter sind mit einem Logischen UND verknüpft. Das heist z.B.: wenn etwas ausgeschlossen wurde, kann es nicht mit dem Einschlussfilter wiedergeholt werden.
orderby
Anhand von Zeichefolgen wird eine Sortierung der Meldungen nach Relevanz vorgenommen.
Die Sortierung unterstützt Regulärer Ausdrücke.
Mehrer Suchbegriffe können mit einer Pipe "|" getrennt werden.
msg_format [ road | head | both ] (Nur Verkehrsinfo.de und RadioSAW.de)
Über diesen Parameter kann die Meldung formatiert werden nach Strasse, Richtung oder beides
Die Funktion kann überall in FHEM aufgerufen werden und liefert als Rückgabewert das gleiche Ergebnis wie der get <name> info Aufruf.
Der Rückgabewert als Text, kann dann für weiteres verwendet werden.
Beispiel: my $result = Verkehrsinfo_GetData('A8')
VolumeLink
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: VolumeLink
WEBCOUNT
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: WEBCOUNT
WEBIO
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: WEBIO
WEBIO_12DIGITAL
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: WEBIO_12DIGITAL
Für definierte WINCONNECT Geräte wird ein interner Task angelegt, welcher periodisch die Readings aktualisiert. Der Standartpollintervall ist 45 Sekunden.
Dieses Modul unterstützt Zähler mit Wireless M-Bus, z. B. für Wasser, Gas oder Elektrizität.
Wireless M-Bus ist ein standardisiertes Protokoll das von unterschiedlichen Herstellern unterstützt wird.
Es verwendet das 868 MHz Band für Radioübertragungen.
Daher wird ein Gerät benötigt das die Wireless M-Bus Nachrichten empfangen kann, z. B. ein CUL mit culfw >= 1.59 oder ein AMBER Wireless AMB8465-M.
WMBus verwendet drei unterschiedliche Radioprotokolle, T-Mode, S-Mode und C-Mode. Der Empfänger muss daher so konfiguriert werden, dass er das selbe Protokoll
verwendet wie der Sender. Im Falle eines CUL kann das erreicht werden, in dem das Attribut rfmode auf WMBus_T, WMBus_S bzw. WMBus_C gesetzt wird.
WMBus Geräte senden Daten periodisch abhängig von ihrer Konfiguration. Es können u. U. Tage zwischen einzelnen Nachrichten vergehen oder sie können im
Minutentakt gesendet werden.
WMBus Nachrichten können optional verschlüsselt werden. Bei verschlüsselten Nachrichten muss der passende Schlüssel mit dem Attribut AESkey angegeben werden.
Andernfalls wird die Entschlüsselung fehlschlagen und es können keine relevanten Daten ausgelesen werden.
Voraussetzungen
Dieses Modul benötigt die perl Module Digest::CRC, Crypt::Mode::CBC und Crypt::ModeL::CTR (die Crypt Module werden nur benötigt wenn verschlüsselte Nachrichten verarbeitet werden sollen).
Bei einem Debian basierten System können diese so installiert werden
sudo apt-get install libdigest-crc-perl
sudo cpan -i Crypt::Mode::CBC Crypt::Mode::CTR
Normalerweise wird ein WMBus Device nicht manuell angelegt. Dies geschieht automatisch bem Empfang der ersten Nachrichten eines Gerätes über den
fhem autocreate Mechanismus.
Für eine manuelle Definition gibt es zwei Wege.
Durch Verwendung einer WMBus Rohnachricht wie sie vom IODev empfangen wurde. So eine Nachricht beginnt mit einem kleinen 'b' und enthält mindestens
24 hexadezimale Zeichen.
Das WMBUS Modul extrahiert daraus alle benötigten Informationen.
Durch explizite Angabe der Informationen die ein WMBus Gerät eindeutig identfizieren.
Der Hersteller Code, besteht aus drei Buchstaben als Abkürzung des Herstellernamens. Eine Liste der Abkürzungen findet sich unter
dlms.com
Die Idenitfikationsnummer ist die Seriennummer des Zählers.
Version ist ein Versionscode des Zählers.
Typ ist die Art des Zählers, z. B. Wasser oder Elektrizität, kodiert als Zahl.
MessageEncoding ist entweder CUL oder AMB, je nachdem welche Art von IODev verwendet wird
Set
N/A
Get
N/A
Attributes
IODev
Setzt den IO oder physisches Gerät welches für den Empfang der Signale für dieses 'logische' Gerät verwendet werden soll.
Ein Beispiel für ein solches Gerät ist ein CUL.
AESKey
Ein 16 Bytes langer AES-Schlüssel in hexadezimaler Schreibweise. Wird verwendet um Nachrichten von Zählern zu entschlüsseln bei denen
die Verschlüsselung aktiviert ist.
rawmsg_as_reading
Wenn auf 1 gesetzt so werden empfangene Nachrichten im Reading rawmsg gespeichert. Das kann verwendet werden um Rohnachrichten zu loggen und beim Debugging zu helfen.
Readings
Zähler können sehr viele unterschiedliche Informationen senden, abhängig von ihrem Typ. Ein Elektrizitätszähler wird andere Daten senden als ein
Wasserzähler. Die Information hängt auch vom Hersteller des Zählers ab. Für weitere Informationen siehe die WMBus Spezifikation unter
oms-group.org.
Die Readings werden als Block dargestellt, beginnend mit Block 1. Ein Zähler kann mehrere Blöcke senden.
Jeder Block enthält zumindest einen Typ, einen Wert und eine Einheit. Für einen Elektrizitätszähler könnte das z. B. so aussehen
1_type VIF_ENERGY_WATT 1_unit Wh 1_value 2948787
Es gibt auch eine Anzahl von festen Readings.
is_encrypted ist 1 wenn die empfangene Nachricht verschlüsselt ist.
decryption_ok ist 1 wenn die Nachricht entweder erfolgreich entschlüsselt wurde oder gar nicht verschlüsselt war.
state enthält den Status des Zählers und kann Fehlermeldungen wie 'battery low' enthalten. Normalerweise ist der Wert 'no error'.
batteryState enthält ok oder low.
Für einige bekannte Gerätetypen werden zusätzliche Readings wie der Energieverbrauch in kWh erzeugt.
WOL
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: WOL
WS2000
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: WS2000
WS300
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: WS300
Definiert eine Wetterstation, die über ein externes Programm ausgelesen
wird. Dieses Programm wird zyklisch durch FHEM aufgerufen. Es muss die
Daten im gleichen Format wie fetch3600 (Details siehe unten) auf der
Standardausgabe liefern.
optionaler Parameter für das Aufrufintervall [s]. Defaultwert
ist 60s.
Unterstützte Stationen sind:
WS3600 Serie (Europe Supplies, technotrade, usw.; s.a. Wetterstationen.info
(deutsch) für Details) in Verbindung mit fetch3600 aus dem Paket open3600).
Fetch3600 liefert die aktuellen Werte zeilenweise als
Name-Wert-Paare. Diese werden durch FHEM zyklisch eingelesen, mit
besser lesbaren Bezeichnungen versehen und als Readings zur
Verfügung gestellt.
WS2300
Serie in Verbindung mit dem Paket open2300
(ähnlich zu open3600).
WS1080
(und andere Stationen, die mit der Windows-Software "Easy Weather"
ausgeliefert werden) in Verbindung mit fowsr
(ab Version 2.0)
Es wird vorausgesetzt, dass die Wetterstation am lokalen Computer
angeschlossen ist und <wsreaderprog> deshalb lokal läuft.
<wsreaderprog> muss grundsätzlich eine zu fetch3600 vergleichbare
Ausgabe auf der Standardausgabe liefern.
Als Beispiel für das erwartete Format hier die Ausgabe von fetch3600:
Zusätzlich werden folgende Erweiterungen (für WS3080) unterstützt:
IL 0.0
UV 8
Forecast Zeitweise Regen, später zunehmend
ZCode U
Welche der vorgenannten Wertepaare durch <wsreaderprog>
geliefert werden, ist egal. Jedes bekannte wird übersetzt (z.B. Ti
nach Temp-inside) und als Reading angezeigt, alle
unbekannten werden kommentarlos verworfen. Mittels geeignetem Programm
oder Script sollte sich also jede beliebige Wetterstation anschließen
lassen.
Anmerkung: Um die Anzahl Readings zu reduzieren, werden jetzt Date- und
Time-Wertepaare zusammengefasst. Es ist jetzt auch zulässig, dass
<wsreaderprog> schon kombinierte Wertepaare liefert. Diese sind
mit dem Prefix DT zu kennzeichnen, also z.B. Date
+ Time --> DTime, DRPmin +
TRPmin --> DTRPmin usw.). Fetch3600 ist auch unter Windows verfügbar, ob das Zusammenspiel mit
FHEM dort auch funktioniert, wurde noch nicht getestet.
interval - Sendeinterval in Sekunden. Wird auf 300 (Default-Wert)
eingestellt, wenn der Wert kleiner als 3 ist.
Wenn der Wert kleiner als 300 ist, wird der RapidFire Modus verwendet.
unit_windspeed - gibt die Einheit der Readings für die
Windgeschwindigkeiten an (m/s oder km/h)
unit_solarradiation - gibt die Einheit der Readings für die
Sonneneinstrahlung an (lux oder W/m²)
round - Anzahl der Nachkommastellen zur Berechnung (Standard 4)
wu.... - Attributname entsprechend dem
Parameternamen aus der API.
Jedes dieser Attribute enthält Informationen über zu sendende Wetterdaten
im Format sensorName:readingName.
Beispiel: attr WUup wutempf outside:temperature definiert
das Attribut wutempf und sendet das Reading "temperature" vom Gerät "outside" als Parameter "tempf"
(welches die aktuelle Temperatur angibt).
Einheiten werden automatisch ins anglo-amerikanische System umgerechnet.
(°C -> °F; km/h(m/s) -> mph; mm -> in; hPa -> inHg)
Das WaterCalculator Modul berechnet den Verbrauch an Wasser und die verbundenen Kosten von einem oder mehreren Wasserzählern.
Die Funktion des sogenannten Unterwasserzählers ist noch nicht implementiert. Daher müssen bei den Wasserkosten die Abwasserkosten mit einbezogen werden.
Es ist kein eigenes Zählermodul sondern benötigt eine Regular Expression (regex or regexp) um das Reading mit den Zählimpulse von einem oder mehreren Wasserzählern zu finden.
Sobald das Modul in der fhem.cfg definiert wurde, reagiert das Modul auf jedes durch das regex definierte event wie beispielsweise ein myOWDEVICE:counter.* etc.
Das WaterCalculator Modul berechnet augenblickliche, historische statistische und vorhersehbare Werte von einem oder mehreren Wasserzählern und erstellt die entsprechenden Readings.
Um zu verhindern, dass man bis zu 12 Monate warten muss, bis alle Werte der Realität entsprechen, müssen die Readings <DestinationDevice>_<SourceCounterReading>_CounterDay1st, <DestinationDevice>_<SourceCounterReading>_CounterMonth1st, <DestinationDevice>_<SourceCounterReading>_CounterYear1st und <DestinationDevice>_<SourceCounterReading>_CounterMeter1st
entsprechend mit dem setreading - Befehl korrigiert werden.
Diese Werte findet man unter Umständen auf der letzten Abrechnung des Wasserversorgers. Andernfalls dauert es bis zu 24h für die täglichen, 30 Tage für die monatlichen und bis zu 12 Monate für die jährlichen Werte bis diese der Realität entsprechen.
Intervalle kleienr als 10s werden ignoriert um Spitzen zu verhindern die von Blockaden des fhem Systems hervorgerufen werden (z.B. DbLog - reducelog).
Define
define <name> WaterCalculator <regex>
<name> :
Der Name dieses Berechnungs-Device. Empfehlung: "myWaterCalculator".
<regex> :
Eine gültige Regular Expression (regex or regexp) von dem Event wo der Zählerstand gefunden werden kann
Die set - Funktion erlaubt individuelle Readings zu verändern um beispielsweise nach einem Stromausfall Werte zu korrigieren.
Die set - Funktion funktioniert nur für Readings welche im CalculatorDevice gespeichert wurden.
Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit set - Befehl gesetzt werden.
Get
Die get - Funktion liefert nur den Wert des jeweiligen Readings zurück.
Die get - Funktion funktioniert nur für Readings welche im CalculatorDevice gespeichert wurden.
Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit get - Befehl ausgelesen werden.
Attributes
Sollten die unten ausfeg&auuml;hrten Attribute bei der Definition eines entsprechenden Gerätes nicht gesetzt sein, so werden sie vom Modul mit Standard Werten automatisch gesetzt
Zusätzlich können die globalen Attribute wie room verwendet werden.
BasicPricePerAnnum :
Eine gültige float Zahl für die jährliche Grundgebühr in der gewählten Währung für die Wasser-Versorgung zum Endverbraucher.
Dieser Wert stammt vom Wasserversorger und steht auf der Abrechnung.
Der Standard Wert ist 0.00
Currency :
Eines der vordefinerten Währungssymbole: [€,£,$].
Der Standard Wert ist €
disable :
Deaktiviert das device. Das Modul wird nicht mehr auf die Events reagieren die durch die Regular Expression definiert wurde.
Der Standard Wert ist 0 = aktiviert.
WaterCounterOffset :
Eine gültige float-Zahl für den Unterschied = Offset (Nicht der Unterschied zwischen Zählimpulsen) zwischen dem am mechanischen Wasserzählern und dem angezeigten Wert im Reading dieses Device.
Der Offset-Wert wird wie folgt ermittelt: WOffset = WMechanisch - WModule
Der Standard-Wert ist 0.00
WaterCubicPerCounts :
Eine gültige float-Zahl für die Menge Kubik pro Zählimpulsen.
Der Wert ist durch das mechanische Zählwerk des Wasserzählern vorgegeben. WaterCubicPerCounts = 0.001 bedeutet, dass jeder Zählimpuls ein Tausendstel eines Kubik ist (=Liter).
Der Standard-Wert ist 1
WaterPricePerCubic :
Eine gültige float-Zahl für den Preis pro Kubik Wasser.
Hierbei müssen die Abwasserkosten mit einbezogen werden.
Dieser Wert stammt vom Wasserversorger und steht auf der Abrechnung.
Der Standard-Wert ist 2.00
MonthlyPayment :
Eine gültige float-Zahl für die monatlichen Abschlagszahlungen in der gewählten Währung an den Wasserversorger.
Der Standard-Wert ist 0.00
MonthOfAnnualReading :
Eine gültige Ganz-Zahl für den Monat wenn der mechanische Wasserzähler jedes Jahr durch den Wasserversorger abgelesen wird.
Der Standard-Wert ist 5 (Mai)
ReadingDestination :
Eines der vordefinerten Device als Ziel der errechneten Readings: [CalculatorDevice,CounterDevice].
Das CalculatorDevice ist das mit diesem Modul erstellte Device.
Das CounterDevice ist das Device von welchem der mechanische Zähler ausgelesen wird.
Der Standard-Wert ist CalculatorDevice.
WFRUnit :
Ein Wert der vorgegebenen Auswahlliste: l/min (Liter/Minute), m³/min (Kubikmeter/Minute), m³/h (Kubikmeter/Stunde).
Es definiert welcher Einheit verwendet werden soll und teilt den Wasserdurchsatz entsprechend.
Der Standard-Wert ist l/min (Liter/Minute).
Readings
Sobald das Device in der Lage war mindestens 2 Werte des Zählers einzulesen, werden automatisch die entsprechenden Readings erzeugt:
Der Platzhalter <DestinationDevice> steht für das Device, welches man in dem Attribut ReadingDestination oben festgelegt hat. Dieser Platzhalter bleibt leer, sobald man dort CalculatorDevice ausgewählt hat.
Der Platzhalter <SourceCounterReading> steht für das Reading welches mit der Regular Expression definiert wurde.
Finanzielle Reserve basierend auf den Abschlagszahlungen die jeden Monat an den Wasserversorger gezahlt werden. Bei negativen Werten ist von einer Nachzahlung auszugehen.
Bezechnet ein virtuelles Gerät für Wettervorhersagen.
Eine solche virtuelle Wetterstation sammelt periodisch aktuelle und zukünftige Wetterdaten aus der Yahoo-Wetter-API.
Der Parameter location entspricht der sechsstelligen WOEID (WHERE-ON-EARTH-ID). Die WOEID für den eigenen Standort kann auf http://weather.yahoo.com gefunden werden.
Der optionale Parameter interval gibt die Dauer in Sekunden zwischen den einzelnen Aktualisierungen der Wetterdaten an. Der Standardwert ist 3600 (1 Stunde). Wird kein Wert angegeben, gilt der Standardwert.
Der optionale Parameter für die möglichen Sprachen darf einen der folgende Werte annehmen: de, en, pl, fr oder nl. Er bezeichnet die natürliche Sprache, in der die Wetterinformationen dargestellt werden. Der Standardwert ist en. Wird für die Sprache kein Wert angegeben, gilt der Standardwert. Wird allerdings der Parameter für die Sprache gesetzt, muss ebenfalls ein Wert für das Abfrageintervall gesetzt werden.
Das Modul unterstützt zusätzlich vier verschiedene Funktionen WeatherAsHtml, WeatherAsHtmlV, WeatherAsHtmlH und WeatherAsHtmlD. Die ersten beiden Funktionen sind identisch: sie erzeugen den HTML-Code für eine vertikale Darstellung des Wetterberichtes. Die dritte Funktion liefert den HTML-Code für eine horizontale Darstellung des Wetterberichtes. Die letztgenannte Funktion wählt automatisch eine Ausrichtung, die abhängig davon ist, ob ein Smallcreen Style ausgewählt ist (vertikale Darstellung) oder nicht (horizontale Darstellung). Alle vier Funnktionen akzeptieren einen zusätzlichen optionalen Paramter um die Anzahl der darzustellenden Icons anzugeben.
Erzwingt eine Abfrage der Wetterdaten. Die darauffolgende Abfrage wird gemäß dem eingestellten Intervall interval Sekunden später durchgeführt.
Get
get <name> <reading>
Gültige ausgelesene Daten (readings) und ihre Bedeutung (das ? kann einen der Werte 1, 2, 3 , 4 oder 5 annehmen und steht für heute, morgen, übermorgen etc.):
city
Name der Stadt, der aufgrund der WOEID übermittelt wird
code
Code für die aktuellen Wetterverhältnisse
condition
aktuelle Wetterverhältnisse
current_date_time
Zeitstempel der letzten Aktualisierung der Wetterdaten vom Server
fc?_code
Code für die vorhergesagten Wetterverhältnisse
fc?_condition
vorhergesagte Wetterverhältnisse
fc?_day_of_week
Wochentag des Tages, der durch ? dargestellt wird
fc?_high_c
vorhergesagte maximale Tagestemperatur in Grad Celsius
fc?_icon
Icon für Vorhersage
fc?_low_c
vorhergesagte niedrigste Tagestemperatur in Grad Celsius
Die folgenden Daten helfen zu identifizieren, ob ein Workaround angeschlagen hat, der die Verwendung von
veralteten Daten auf dem entfernten Server verhindert:
pubDate
Veröffentlichungszeitpunkt der Wettervorhersage in den aktuellen Daten (readings)
pubDateRemote
Veröffentlichungszeitpunkt der Wettervorhersage auf dem entfernten Server
validity
stale, wenn der Veröffentlichungszeitpunkt auf dem entfernten Server vor dem Zeitpunkt der aktuellen Daten (readings) liegt
Attribute
disable: stellt die Abfrage der Wetterdaten ab - der Timer läft gemäß Plan doch es werden keine Daten vom
API angefordert.
Das Modul steuert eine große Anzahl unterschiedlicher "no name" LED Typen und stellt Ihnen einheitliches Interface zur Verfügung.
Folgende Typen werden unterstützt:
Leuchtmitteltyp / bridge
Type
Notiz
Signatur im define
Milight RGB erste Generation
E27, stripe controller
*(1,2,a,C)
RGB bridge-V2|3
Milight RGBW1 erste Generation
RGBW stripe controller
*(1,2,a)
RGBW1 bridge-V2|3
Milight White
E14, E27, GU10, stripe controller, Downlight
*(1,2,b,W,nK)
White bridge-V2|3
Milight RGBW2 zweite Generation
E14, E27, GU10, stripe controller, Downlight
*(2,b,CW,S20)
RGBW2 bridge-V3
LW12 erste Generation (SSID LEDNet...)
RGB stripe controller
RGB LW12
LW12HX (SSID HX...)
RGB stripe controller
RGB LW12HX
LW12FC (SSID FC...)
RGB stripe controller
RGB LW12FC
LD316 im RGB mode
E27
RGB LD316
LD316 im RGBW mode
E27
*(S20)
RGBW LD316
LD316A im RGBW mode
E27
*(S20)
RGBW LD316A
LD382 im RGB mode
RGB stripe controller
RGB LD382
LD382 im RGBW mode
RGBW stripe controller
RGBW LD382
LD382A (FW 1.0.6) im RGB mode
RGB stripe controller
RGB LD382
LD382A (FW 1.0.6) im RGBW mode
RGBW stripe controller
RGBW LD382
SENGLED
E27 mit WLAN repeater
White Sengled
SUNRICHER mit RGBW
Controller
*(!!!)
RGBW Sunricher
(1) milght brigbe V2, V3, V4
(2) milight bridge V3, V4
(a) eine Gruppe pro bridge
(b) vier unabhängige Gruppen pro bridge
(nK) kein Temperatursupport, Kelvin
(C) rein Color
(W) rein White
(CW) rein Color oder White
(S20) Saturation <20: umschalten white Channel
(!!!) EXPERIMENTAL
Farbangaben
Farben können im RGB oder im HSV Farbraum angegeben werden.
Farbangaben im Farbraum "HSV" sind vollständig und in der Regel intuitiver als RGB.
H (HUE: 0..360) gibt die Grundfarbe in einem Farbkreis an.
Rot liegt bei 0°
Grün bei 120°
Blau bei 240°
S (Saturation/Sättigung: 0..100) steht für die Sättigung der Farbe. Eine Sättigung von 100 bedeutet die Farbe ist "rein" oder komplett gesättigt. Blau zum Beispiel mit 100% Sättigung entspricht RGB #0000FF.
V (Value: 0..100) gibt die Helligkeit an. Ein V von 50 heißt: "halbe Helligkeit".
Farbangaben: HSV gegenüber RGB
Im Normalfall kann eine Farbe im HSV Farbraum genauso wie im RGB Farbraum dargestellt werden.
Farben im HSV Farbraum wirken meist verständlicher.
Um ein Grün im HSV Farbraum etwas mehr in Richtung CYAN zu bewegen wird einfach der HUE Wert (Winkel) etwas erhöht.
Im RGB Farbraum ist die gleiche Aufgabe weniger intuitiv durch eine Erhöhung von BLAU zu erreichen.
Unterschiede werden jedoch bei Transitions deutlich.
Um BLAU langsam auf zu dimmen lauten die HSV Transitions 240,100,0 -> 240,100,100.
Um von ROT (Helligkeit 0) langsam auf BLAU zu dimmen wird im HSV Farbraum 0,100,0 -> 240,100,100 verwendet.
Im RGB Farbraum (#000000 -> #0000FF) kann nicht zwischen den beiden Varianten unterschieden werden.
Hier würde (richtiger weise, vermutlich jedoch anders als beabsichtigt) in beiden Fällen ein Weiß (Helligkeit 0) als Startwert erscheinen.
definiert einen milight RGBW2 Leuchtmittel (Bulb oder LED stripe controller) an einer milight bridge Version 3 oder 4.
Die LED wird den maximal 4 verfügbaren Gruppen pro bridge in der Reihenfolge der Definition zugeordnet: define wz.licht.decke WifiLight RGBW2 bridge-V3:192.168.178.142
definiert einen LD382A Controller mit RGBW Stripe: define wz.licht.decke WifiLight RGBW LD382A:192.168.178.142
definiert einen LD382A Controller mit RGB Stripe: define wz.licht.decke WifiLight RGB LD382A:192.168.178.142
WifiLight verfügt über eine "Farbkalibrierung". Sinnvollerweise sollte nach einem Leuchtmitteltausch oder einem define eine Kalibrierung vorgenommen werden.
Set
set <name> on [ramp]
Schaltet das device ein. Dabei wird entweder 100% Weiß oder die im Attribut "defaultColor" definierte Farbe gewählt.
Erweiterte Parameter:
ramp
set <name> off [ramp]
Schaltet das device aus.
Erweiterte Parameter:
ramp
set <name> dimup
Erhöht die Helligkeit um einen festen Betrag. Dabei wird der im Attribut "dimStep" definierte Wert oder der Default "7" angewendet. Dieser Befehl eignet sich besonders um die Helligkeit über einen Wandschalter oder eine Fernbedienung zu erhöhen.
Erweiterte Parameter:
keine
set <name> dimdown
Verringert die Helligkeit um einen festen Betrag. Dabei wird der im Attribut "dimStep" definierte Wert oder der Default "7" angewendet. Dieser Befehl eignet sich besonders um die Helligkeit über einen Wandschalter oder eine Fernbedienung zu verringern
Erweiterte Parameter:
keine
set <name> dim level [ramp] [q]
Setzt die Helligkeit auf den angegebenen level (0..100). Dieser Befehl behält außerdem die eingestellte Farbe auch bei "dim 0" (ausgeschaltet) und nachfolgendem "dim xx" (eingeschaltet) bei. Daher stellt er eine alternative Form zu "off" / "on" dar. Letzteres würde immer die "defaultColor" wählen.
Erweiterte Parameter:
ramp
Flags:
q
set <name> HSV H,S,V [ramp] [s|l|q] [event]
Setzt die Farbe im HSV Farbraum. Wenn die ramp (als Zeit in Sekunden) angegeben ist, berechnet das modul einen weichen Farbübergang von der aktuellen Farbe zur neu gesetzten.
Beispiel, setzt ein gesättigtes Blau mit halber Helligkeit: set wz.licht.decke HSV 240,100,50
Erweiterte Parameter:
ramp
Flags:
s l q event
set <name> RGB RRGGBB [ramp] [l|s|q] [event]
Setzt die Farbe im RGB Farbraum.
Erweiterte Parameter:
ramp
Flags:
s l q event
Bedeutung der Flags
Bestimmte Befehle (set) können mit speziellen Flags versehen werden.
ramp:
Zeit in Sekunden für einen weichen Farb- oder Helligkeitsübergang. Der weiche Übergang startet bei der aktuell sichtbaren Farbe und wird zur angegeben berechnet.
s:
(short, default). Ein weicher Übergang zu einer anderen Farbe wird im "Farbkreis" auf dem kürzesten Weg durchgeführt.
Eine Transition von ROT nach GRÜN führt auf dem kürzesten Weg über GELB.
l:
(long). Ein weicher Übergang zu einer anderen Farbe wird im "Farbkreis" auf dem "langen" Weg durchgeführt.
Eine Transition von ROT nach GRÜN führt dann über MAGENTA, BLAU, und CYAN.
q:
(queue). Kommandos mit diesem Flag werden in einer internen Warteschlange zwischengespeichert und erst ausgeführt nachdem die aktuell laufenden weichen Übergänge
abgearbeitet wurden. Kommandos ohne das Flag werden sofort abgearbeitet. Dabei werden alle laufenden Übergänge sofort abgebrochen und die Warteschlange wird gelöscht.
event:
Beliebige Bezeichnung ([A-Za-z_0-9])
WifiLight erzeugt bei Verwendung dieses Flags im Verlauf weicher Übergange zu einer anderen Farbe Nachrichten (events) in der Form:
<EVENT> entspricht dem Namen so wie im Flag angegeben.
<XX> ist der prozentuale Fortschritt des Übergangs.
Je nach Gesamtdauer des Übergangs werden die Werte von 0 bis 100 nicht komplett durchlaufen wobei jedoch für 0% und 100% immer ein event garantiert ist. Auf diese events kann dann innerhalb von notify oder DOIF reagiert werden um zum Beispiel:
die Lautstärke eines Radios anzupassen wenn eine LED morgens langsam hochgedimmt wird
ein Farbübergang kann in einem notify neu gestartet werden wenn er komplett ist (loop)
andere Leuchtmittel können mit erstellten Farbübergängen synchronisiert werden
Farbkalibrierung
WifiLight unterstützt zwei unterschiedliche Formen der Farbkalibrierungen:
Korrektur gesättigter Farben
Hintergrund:
GELB, zum Beispiel, ist definiert als Mischung aus ROTEM und GRÜNEM Licht zu gleichen Teilen.
Je nach verwendeter LED und Ansteuerung ist der GRÜNE Kanal nun möglicherweise viel leuchtstärker.
Wenn jetzt also die ROTE und GRÜNE LED jeweils voll angesteuert werden überwiegt GRÜN in dieser Mischung und das gewünschte GELB bekäme einen deutlichen Grünstich.
In diesem Beispiel würde jetzt für HSV 60,100,100 kein Gelb (entsprechend 60° im "Farbkreis") erzeugt.
Stattdessen würde GRÜN mit GELBSTICH erzeugt das vielleicht einem geschätzten Farbwinkel von 80° entspricht.
Die erforderliche Korrektur für GELB würde also minus 20° betragen (60° SOLL - 80° IST = -20° Korrektur).
GELB müsste als um -20° korrigiert werden. Mögliche Werte pro Korrektur-Punkt sind +/- 29°.
Vorgehen:
Die Korrektur der Vollfarben wird über das Attribut "colorCast" gesteuert. Dabei werden 6 (Komma getrennte) Werte im Bereich -29 bis 29 angegeben.
Diese Werte stehen entsprechen der Winkelkorrektur für ROT (0°), GELB (60°), GRÜN (120°), CYAN (180°), BLAU (240°) und MAGENTA (300°).
Zuerst sollte die Abweichung für 60°/180°/300° (die Mischfarben) so wie in obigem Beispiel ermittelt und im Attribut hinterlegt werden.
Im Anschluss sollten die Primärfarben (0°/120°/240°) so korrigiert werden das die weichen Übergänge zwischen benachbarten reinen Farben möglichst linear erscheinen.
Dieser Vorgang muss eventuell iterativ mehrfach wiederholt werden bis das Ergebniss stimmig ist.
Weißabgleich
Hintergrund:
Einige Leuchtmittel erzeugen weißes Licht durch Mischung der RGB Kanäle (zum Beispiel LW12).
Je nach Leuchtstärke der RGB Kanäle der verwendeten LED Streifen unterscheidet sich das Ergebnis und eine oder zwei Farben dominieren.
Zusätzlich gibt es verschiedene Formen weißen Lichtes. Kaltes Licht hat einen höheren Blauanteil.
Dagegen wird in Mitteleuropa für Leuchtmittel meist warm-weiß verwendet welches einen hohen ROT- und geringen BLAU Anteil hat.
WifiLight bietet die Möglichkeit bei RGB gemischtem Weiß die Zusammensetzung anzupassen. Die Anpassung erfolgt über das Attribut "whitePoint".
Dieses erwartet für jeden der drei RGB Kanäle einen Wert zwischen 0 und 1 (ein Komma wird als Punkt angegeben). Die drei Werte werden mit einem normalen Komma getrennt.
Vorgehen:
Eine Angabe von "1,1,1" setzt alle die drei Kanäle auf jeweils 100%. Angenommen der BLAU Anteil des weißen Lichtes soll nun verringert werden.
Ein Wert von "1,1,0.5" setzt den dritten Kanal (BLAU) bei Weiß auf 0.5 entsprechend 50%. Vor einem Weißabgleich sollte die Korrektur der Vollfarben abgeschlossen sein.
Attribute
attr <name> colorCast <R,Y,G,C,B,M>
Farbkalibrierung der voll gesättigten Farben.
R(ed), Y(ellow), G(reen), C(yan), B(lue), M(agenta) im Bereich +/- 29
attr <name> defaultColor <H,S,V>
HSV Angabe der Lichtfarbe die bei "on" gewählt wird. Default ist Weiß.
attr <name> defaultRamp <0 bis X>
Zeit in Sekunden. Wenn dieses Attribut gesetzt ist wird implizit immer ein weicher Übergang erzeugt wenn keine Ramp im set angegeben ist.
attr <name> dimStep <0 bis 100>
Wert um den die Helligkeit bei dimUp und dimDown verändert wird. Default 7.
attr <name> gamma <X.X>
Das menschliche Auge nimmt Helligkeitsänderungen sehr unterschiedlich wahr (logarithmisch).
Bei geringer Ausgangshelligkeit wird schon eine kleine Helligkeitsänderung als sehr stark empfunden und auf der anderen Seite sind bei großer Helligkeit starke Änderungen notwendig.
Daher ist eine logarithmische Korrektur des Helligkeitsanstiegs der Leuchtmittel erforderlich damit der Anstieg als gleichmäßig empfunden wird.
Einige controller führen diese Korrektur intern durch. In anderen Fällen ist es notwendig diese Korrektur im Modul zu hinterlegen.
Ein gamma Wert von 1.0 (default) führt zu einer linearen Ausgabe der Werte. Werte kleiner als 1.0 führen zu einer logarithmischem Korrektur.
XiaomiBTLESens - liest Daten von einem Xiaomi BTLE Sensor
Dieser Modul liest Daten von einem Sensor und legt sie in den Readings ab.
Auf dem (Linux) FHEM-Server werden gatttool und hcitool vorausgesetzt. (sudo apt install bluez)
Der Befehl legt ein Device vom Typ XiaomiBTLESens an mit dem Namen Weihnachtskaktus und der Bluetooth MAC C4:7C:8D:62:42:6F.
Nach dem Anlegen des Device und setzen des korrekten model Attributes werden umgehend und automatisch die aktuellen Daten vom betroffenen Xiaomi BTLE Sensor gelesen.
Readings
state - Status des BTLE Sensor oder eine Fehlermeldung falls Fehler beim letzten Kontakt auftraten.
batteryState - aktueller Batterie-Status in Abhängigkeit vom Wert batteryLevel.
batteryPercent - aktueller Ladestand der Batterie in Prozent.
fertility - Wert des Fruchtbarkeitssensors (Bodenleitfähigkeit)
firmware - aktuelle Firmware-Version des BTLE Sensor
lastGattError - Fehlermeldungen vom gatttool
lux - aktuelle Lichtintensität
moisture - aktueller Feuchtigkeitswert
temperature - aktuelle Temperatur
Set
resetBatteryTimestamp - wenn die Batterie gewechselt wurde
devicename - setzt einen Devicenamen
Get
sensorData - aktive Abfrage der Sensors Werte
devicename - liest den Devicenamen aus
firmware - liest die Firmeware aus
Attribute
disable - deaktiviert das Device
interval - Interval in Sekunden zwischen zwei Abfragen
disabledForIntervals - deaktiviert das Gerät für den angegebenen Zeitinterval (13:00-18:30 or 13:00-18:30 22:00-23:00)
minFertility - min Fruchtbarkeits-Grenzwert für ein Ereignis minFertility low
hciDevice - Auswahl bei mehreren Bluetooth Dongeln
model - setzt das Model
maxFertility - max Fruchtbarkeits-Grenzwert für ein Ereignis maxFertility high
minMoisture - min Feuchtigkeits-Grenzwert für ein Ereignis minMoisture low
maxMoisture - max Feuchtigkeits-Grenzwert für ein Ereignis maxMoisture high
minTemp - min Temperatur-Grenzwert für ein Ereignis minTemp low
maxTemp - max Temperatur-Grenzwert für ein Ereignis maxTemp high
minlux - min Helligkeits-Grenzwert für ein Ereignis minlux low
maxlux - max Helligkeits-Grenzwert für ein Ereignis maxlux high
Beispiele für min/max-Ereignisse:
2017-03-16 11:08:05 XiaomiBTLESens Dracaena minMoisture low
2017-03-16 11:08:06 XiaomiBTLESens Dracaena maxTemp high
sshHost - FQDN oder IP-Adresse eines entfernten SSH-Systems. Das SSH-System ist auf eine Zertifikat basierte Authentifizierung zu konfigurieren. Am elegantesten geschieht das mit einer .ssh/config Datei auf dem SSH-Client.
batteryFirmwareAge - wie alt soll der Timestamp des Readings sein bevor eine Aktuallisierung statt findet
Dieses Modul steuert AV-Receiver des Herstellers Yamaha über die Netzwerkschnittstelle.
Es bietet die Möglichkeit den Receiver an-/auszuschalten, den Eingangskanal zu wählen,
die Lautstärke zu ändern, den Receiver "Stumm" zu schalten, sowie den aktuellen Status abzufragen.
Bei der Definition eines YAMAHA_AVR-Moduls wird eine interne Routine in Gang gesetzt, welche regelmäßig
(einstellbar durch den optionalen Parameter <Status_Interval>; falls nicht gesetzt ist der Standardwert 30 Sekunden)
den Status des Receivers abfragt und entsprechende Notify-/FileLog-Geräte triggert.
Sofern 2 Interval-Argumente übergeben werden, wird der erste Parameter <Off_Interval> genutzt
sofern der Receiver ausgeschaltet oder nicht erreichbar ist. Der zweiter Parameter <On_Interval>
wird verwendet, sofern der Receiver eingeschaltet ist.
Beispiel:
define AV_Receiver YAMAHA_AVR 192.168.0.10
# Mit modifiziertem Status Interval (60 Sekunden)
define AV_Receiver YAMAHA_AVR 192.168.0.10 mainzone 60
# Mit gesetztem "Off"-Interval (60 Sekunden) und "On"-Interval (10 Sekunden)
define AV_Receiver YAMAHA_AVR 192.168.0.10 mainzone 60 10
Zonenauswahl
Wenn der zu steuernde Receiver mehrere Zonen besitzt (z.B. RX-V671, RX-V673,... sowie die AVANTAGE Modellreihe)
kann die zu steuernde Zone explizit angegeben werden. Die Modellreihen RX-V3xx und RX-V4xx als Beispiel
haben nur eine Zone (Main Zone). Je nach Receiver-Modell stehen folgende Zonen zur Verfügung, welche mit
dem optionalen Parameter <Zone> angegeben werden können.
mainzone - Das ist die Hauptzone (Standard)
zone2 - Die zweite Zone (Zone 2)
zone3 - Die dritte Zone (Zone 3)
zone4 - Die vierte Zone (Zone 4)
Je nach Receiver-Modell stehen in den verschiedenen Zonen nicht immer alle Eingänge zur Verfügung.
Dieses Modul bietet nur die tatsächlich verfügbaren Eingänge an.
Beispiel:
define AV_Receiver YAMAHA_AVR 192.168.0.10 # Wenn keine Zone angegeben ist, wird
attr AV_Receiver YAMAHA_AVR room Wohnzimmer # standardmäßig "mainzone" verwendet
# Definition der zweiten Zone
define AV_Receiver_Zone2 YAMAHA_AVR 192.168.0.10 zone2
attr AV_Receiver_Zone2 room Schlafzimmer
Für jede Zone muss eine eigene YAMAHA_AVR Definition erzeugt werden, welche dann unterschiedlichen Räumen zugeordnet werden kann.
Jede Zone kann unabhängig von allen anderen Zonen (inkl. der Main Zone) gesteuert werden.
Set-Kommandos
set <Name> <Kommando> [<Parameter>]
Aktuell werden folgende Kommandos unterstützt. Die verfügbaren Eingänge und Szenen können je nach Receiver-Modell variieren.
Die folgenden Eingänge stehen beispielhaft an einem RX-V473 Receiver zur Verfügung.
Aktuell stehen folgende Kommandos zur Verfügung.
on - Schaltet den Receiver ein
off - Schaltet den Receiver aus
dsp hallinmunich,hallinvienna,... - Aktiviert das entsprechende DSP Preset
enhancer on,off - Aktiviert den Sound Enhancer für einen verbesserten Raumklang
3dCinemaDsp auto,off - Aktiviert den CINEMA DSP 3D Modus
adaptiveDrc auto,off - Aktiviert Adaptive DRC
extraBass auto,off - Aktiviert den Extra Bass
ypaoVolume auto,off - Aktiviert YPAO Lautstärke
displayBrightness -4...0 - Steuert die Helligkeitsreduzierung des Front-Displays
partyMode on|off - Aktiviert den Party Modus. In der Main Zone wird hierbei der Party Modus geräteweit aktiviert oder deaktiviert. In den anderen Zonen kann man damit die entsprechende Zone dem Party Modus zuschalten oder entziehen.
navigateListMenu [Element 1]/[Element 2]/.../[Element N] - Wählt ein spezifisches Element aus einer Menüstruktur aus. Nur verwendbar bei Menü-basierenden Eingängen (z.B. Net Radio, USB, Server, etc.). Siehe nachfolgendes Kapitel "Automatische Menü Navigation" für weitere Details und Beispiele.
tunerFrequency [Frequenz] [AM|FM] - setzt die Radio-Frequenz. Das erste Argument ist die Frequenz, der zweite dient optional zu Angabe des Bandes (AM oder FM, standardmäßig FM). Abhängig davon, welches Band man benutzt, wird die Frequenz in kHz (AM-Band) oder MHz (FM-Band) angegeben. Wenn im zweiten Argument kein Band angegeben ist, wird standardmäßig das FM-Band benutzt. Dieser Befehl kann auch benutzt werden, wenn der aktuelle Eingang nicht "tuner" ist. Die neue Frequenz wird dennoch gesetzt und bei der nächsten Benutzung abgespielt.
tunerFrequencyBand FM|DAB - setzt das zu nutzende Frequenzband bzw. Empfangstechnologie für den Radioempfang ("FM" f&uumLr analoge Frequenzmodulation oder "DAB" für digitalen Radioempfang). Nur verfügbar wenn DAB unterstüzt wird.
preset 1...40 - wählt ein gespeichertes Preset für den aktuellen Eingang aus.
presetUp - wählt das nächste Preset für den aktuellen Eingang aus.
presetDown - wählt das vorherige Preset für den aktuellen Eingang aus.
direct on,off - Umgeht alle internen soundverbessernden Maßnahmen (Equalizer, Enhancer, Adaptive DRC,...) und gibt das Signal unverfälscht wieder
input hdmi1,hdmiX,... - Wählt den Eingangskanal (es werden nur die tatsächlich verfügbaren Eingänge angeboten)
hdmiOut1 on,off - Aktiviert die Ausgabe via HDMI Ausgang 1
hdmiOut2 on,off - Aktiviert die Ausgabe via HDMI Ausgang 2
scene scene1,sceneX - Wählt eine vorgefertigte Szene aus
surroundDecoder dolbypl,... - Setzt den Surround Decoder, welcher genutzt werden soll sofern der DSP Modus "Surround Decoder" aktiv ist.
volume 0...100 [direct] - Setzt die Lautstärke in Prozent (0 bis 100%). Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
volumeStraight -87...15 [direct] - Setzt die Lautstärke in Dezibel (-80.5 bis 15.5 dB) so wie sie am Receiver auch verwendet wird. Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
volumeUp [0...100] [direct] - Erhöht die Lautstärke um 5% oder entsprechend dem Attribut volumeSteps (optional kann der Wert auch als Argument angehangen werden, dieser hat dann Vorang). Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
volumeDown [0...100] [direct] - Veringert die Lautstärke um 5% oder entsprechend dem Attribut volumeSteps (optional kann der Wert auch als Argument angehangen werden, dieser hat dann Vorang). Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
mute on,off,toggle - Schaltet den Receiver stumm
bass [-6...6] Schrittweite 0.5 (main zone), [-10...10] Schrittweite 2 (andere Zonen), [-10...10] Schrittweite 1 (andere Zonen, DSP Modelle) - Stellt die Tiefen in decibel ein
treble [-6...6] Schrittweite 0.5 (main zone), [-10...10] Schrittweite 2 (andere Zonen), [-10...10] Schrittweite 1 (andere Zonen, DSP Modelle) - Stellt die Höhen in decibel ein
straight on,off - Umgeht die interne Codec-Umwandlung und gibt den Original-Codec wieder.
sleep off,30min,60min,...,last - Aktiviert den internen Sleep-Timer zum automatischen Abschalten
shuffle on,off - Aktiviert die Zufallswiedergabe des aktuellen Eingangs (ist nur eingangsabhängig verfügbar)
repeat one,all,off - Wiederholt den aktuellen (one) oder alle (all) Titel des aktuellen Eingangs (ist nur eingangsabhängig verfügbar)
pause - Wiedergabe pausieren (ist nur eingangsabhängig verfügbar)
play - Wiedergabe starten (ist nur eingangsabhängig verfügbar)
stop - Wiedergabe stoppen (ist nur eingangsabhängig verfügbar)
skip reverse,forward - Aktuellen Titel überspringen (ist nur eingangsabhängig verfügbar)
statusRequest - Fragt den aktuell Status des Receivers ab
remoteControl up,down,... - Sendet Fernbedienungsbefehle wie im nächsten Abschnitt beschrieben
Fernbedienung (je nach Modell nicht in allen Zonen verfügbar)
Cursor Steuerung:
remoteControl up
remoteControl down
remoteControl left
remoteControl right
remoteControl enter
remoteControl return
Automatische Menü Navigation (nur für Menü-basierte Eingänge wie z.B. Net Radio, Server, USB, ...)
Für Menü-basierte Eingänge muss man einen bestimmten Eintrag aus einer komplexen Struktur auswählen um die Wiedergabe zu starten.
Ein typischer Fall ist das Abspielen von Internet-Radios (Eingang: Net Radio) oder ähnlichen, netzwerkbasierten Diensten.
Erst durch das Navigieren durch mehrere Menüs und Untermenüs selektiert man das gewünschte Element und die Wiedergabe beginnt.
Um diese Navigation durch verschiedene Menüstrukturen zu automatisieren, gibt es das Set-Kommando "navigateListMenu".
Als Parameter übergibt man den Pfad (ausgehend vom Beginn) zu dem gewünschtem Menüeintrag
YAMAHA_AVR wird diese Liste von links nach rechts abarbeiten und sich so durch das Menü hangeln.
Alle angegebenen Menüelemente sind dabei durch einen Schrägstrich (/) getrennt.
Ein paar Beispiele:
Aktueller Eingang ist "netradio":
set <name> navigateListMenu Länder/Ozeanien/Australien/Alle Sender/1Radio.FM
set <name> navigateListMenu Lesezeichen/Favoriten/1LIVE
Wenn man den Receiver mit einem Befehl anschalten möchte und einen bestimmten Internet-Radio Sender auswählen will:
set <name> on ; set <name> volume 20 direct ; set <name> input netradio ; set <name> navigateListMenu Lesezeichen/Favoriten/1LIVE
# für tägliches einschalten eines Internet-Radios via at-Modul
define 1Radio_am_Morgen at *08:00 set <name> on ; set <name> volume 20 direct ; set <name> input netradio ; set <name> navigateListMenu Länder/Ozeanien/Australien/Alle Sender/1Radio.FM
define 1LIVE_am_Abend at *17:00 set <name> on ; set <name> volume 20 direct ; set <name> input netradio ; set <name> navigateListMenu Lesezeichen/Favoriten/1LIVE
Aktueller Eingang ist "server" (Netzwerk-Freigaben via UPnP/DLNA):
set <name> navigateListMenu NAS/Musik/Nach Interpret/Alicia Keys/Songs in A Minor/Fallin
Die exakte Menüstruktur hängt von ihrer eigenen Receiver-Konfiguration, sowie den zur Verfügung stehenden Freigaben in ihrem Netzwerk ab.
Jeder einzelne Menüeintrag muss nicht vollständig als Pfadelement angegeben werden.
Jedes Pfadelement wird als Stichwort verwendet um den richtigen Menüeintrag aus der aktuellen Listenebene zu finden, z.B:
Der tatsächliche Menüpfad (wie im Display des Receiveres erkennbar) sieht beispielhaft folgendermaßen aus: Lesezeichen => Favoriten => foo:BAR 70'er-90'er [[HITS]]
Der letzte Menüeintrag hat in diesem Fall viele Sonderzeichen die einem in einer FHEM-Konfiguration durchaus Probleme bereiten könen.
Man muss aber nicht die vollständige Bezeichnung in der Pfadangabe benutzen, sondern kann ein kürzeres Stichwort benutzen, was in der vollständigen Bezeichnung jedoch vorkommen muss.
So kann man beispielsweise folgendes Set-Kommando benutzen um diesen Eintrag auszuwählen und die Wiedergabe damit zu starten:
set <name> navigateListMenu Lesezeichen/Favoriten/foo:BAR
Dieser Befehl funktioniert, obwohl man nicht die vollständige Bezeichnung angegeben hat (foo:BAR 70's-90's [[HITS]]).
Auf selbe Weiße kann man somit lange Menüeinträge abkürzen, damit die Befehle nicht so lang werden.
Solche gekürzten Pfadangaben müssen aber trotzdem soweit eindeutig sein, damit sie nur auf das gewünschte Element passen.
Das erste Element aus einer Listenebene (von oben nach unten), was auf eine Pfadangabe passt, wird ausgewählt.
Get-Kommandos
get <Name> <Readingname>
Aktuell stehen via GET lediglich die Werte der Readings zur Verfügung. Eine genaue Auflistung aller möglichen Readings folgen unter "Generierte Readings/Events".
Optionales Attribut, welches angibt, wieviele Schritte zur weichen Lautstärkeanpassung
durchgeführt werden sollen. Standardwert ist 5 Anpassungschritte
Optionales Attribut, welches den Standardwert zur Lautstärkenerhöhung (volumeUp) und Lautstärkenveringerung (volumeDown) konfiguriert. Standardwert ist 5%
Optionales Attribut, welches eine maximale Obergrenze in Prozent für die Lautstärke festlegt.
Wird versucht die Lautstärke auf einen höheren Wert zu setzen, so wird die Lautstärke dennoch die konfigurierte Obergrenze nicht überschreiten.
Mögliche Werte: 0-100%. Standardwert ist 100% (keine Begrenzung)
Generierte Readings/Events:
3dCinemaDsp - Der Status des CINEMA DSP 3D-Modus ("auto" => an, "off" => aus)
adaptiveDrc - Der Status des Adaptive DRC ("auto" => an, "off" => aus)
bass Der aktuelle Basspegel, zwischen -6 and 6 dB (main zone) and -10 and 10 dB (andere Zonen)
direct - Zeigt an, ob soundverbessernde Features umgangen werden oder nicht ("on" => soundverbessernde Features werden umgangen, "off" => soundverbessernde Features werden benutzt)
displayBrightness - Status der Helligkeitsreduzierung des Front-Displays (-4 => maximale Reduzierung, 0 => keine Reduzierung)
dsp - Das aktuell aktive DSP Preset
enhancer - Der Status des Enhancers ("on" => an, "off" => aus)
extraBass - Der Status des Extra Bass ("auto" => an, "off" => aus)
input - Der ausgewählte Eingang entsprechend dem FHEM-Kommando
inputName - Die Eingangsbezeichnung, so wie sie am Receiver eingestellt wurde und auf dem Display erscheint
hdmiOut1 - Der Status des HDMI Ausgang 1 ("on" => an, "off" => aus)
hdmiOut2 - Der Status des HDMI Ausgang 2 ("on" => an, "off" => aus)
newFirmware - Zeigt an, ob eine neue Firmware zum installieren bereit liegt ("available" => neue Firmware verfügbar, "unavailable" => keine neue Firmware verfügbar; Event wird nur generiert für RX-Vx71, RX-Vx73, RX-Ax10 oder RX-Ax20)
power - Der aktuelle Betriebsstatus ("on" => an, "off" => aus)
presence - Die aktuelle Empfangsbereitschaft ("present" => empfangsbereit, "absent" => nicht empfangsbereit, z.B. Stromausfall)
partyMode - Der Status des Party Modus ( "enabled" => aktiviert, "disabled" => deaktiviert). In der Main Zone stellt dies den geräteweiten Zustand des Party Modus dar. In den einzelnen Zonen zeigt es an, ob die jeweilige Zone für den Party Modus verwendet wird.
straight - Zeigt an, ob die interne Codec Umwandlung umgangen wird oder nicht ("on" => Codec Umwandlung wird umgangen, "off" => Codec Umwandlung wird benutzt)
sleep - Zeigt den Status des internen Sleep-Timers an
surroundDecoder - Zeigt den aktuellen Surround Decoder an
state - Der aktuelle Schaltzustand (power-Reading) oder die Abwesenheit des Gerätes (mögliche Werte: "on", "off" oder "absent")
tunerFrequency - Die aktuelle Empfangsfrequenz für Radio-Empfang in kHz (AM-Band) oder MHz (FM-Band)
tunerFrequencyBand - Das aktuell genutzte Radio-Band ("AM", "FM" oder "DAB" sofern unterstüzt)
treble Der aktuelle Höhenpegel, zwischen -6 and 6 dB (main zone) and -10 and 10 dB (andere Zonen)
volume - Der aktuelle Lautstärkepegel in Prozent (zwischen 0 und 100 %)
volumeStraight - Der aktuelle Lautstärkepegel in Dezibel (zwischen -80.0 und +15 dB)
ypaoVolume - Der Status der YPAO Lautstärke ("auto" => an, "off" => aus)
Eingangsabhängige Readings/Events:
currentChannel - Nummer des Eingangskanals (nur bei SIRIUS)
currentStation - Name des Radiosenders (nur bei TUNER, HD RADIO, NET RADIO oder PANDORA)
currentStationFrequency - Die Sendefrequenz des aktuellen Radiosender (nur bei Tuner oder HD Radio)
currentAlbum - Album es aktuell gespielten Titel
currentArtist - Interpret des aktuell gespielten Titel
currentTitle - Name des aktuell gespielten Titel
playStatus - Wiedergabestatus des Eingangs
shuffle - Status der Zufallswiedergabe des aktuellen Eingangs
repeat - Status der Titelwiederholung des aktuellen Eingangs
Hinweise des Autors
Dieses Modul ist nur nutzbar, wenn die Option "Network Standby" am Receiver aktiviert ist. Ansonsten ist die Steuerung nur im eingeschalteten Zustand möglich.
Dieses Modul steuert Blu-Ray Player des Herstellers Yamaha über die Netzwerkschnittstelle.
Es bietet die Möglichkeit den Player an-/auszuschalten, die Schublade zu öffnen und schließen,
die Wiedergabe beeinflussen, sämtliche Fernbedieungs-Befehle zu senden, sowie den aktuellen Status abzufragen.
Bei der Definition eines YAMAHA_BD-Moduls wird eine interne Routine in Gang gesetzt, welche regelmäßig
(einstellbar durch den optionalen Parameter <Status_Interval>; falls nicht gesetzt ist der Standardwert 30 Sekunden)
den Status des Players abfragt und entsprechende Notify-/FileLog-Definitionen triggert.
Sofern 2 Interval-Argumente übergeben werden, wird der erste Parameter <Off_Interval> genutzt
sofern der Player ausgeschaltet oder nicht erreichbar ist. Der zweiter Parameter <On_Interval>
wird verwendet, sofern der Player eingeschaltet ist.
Beispiel:
define BD_Player YAMAHA_BD 192.168.0.10
# Mit modifiziertem Status Interval (60 Sekunden)
define BD_Player YAMAHA_BD 192.168.0.10 60
# Mit gesetztem "Off"-Interval (60 Sekunden) und "On"-Interval (10 Sekunden)
define BD_Player YAMAHA_BD 192.168.0.10 60 10
Set-Kommandos
set <Name> <Kommando> [<Parameter>]
Aktuell werden folgende Kommandos unterstützt.
on - schaltet den Player ein
off - schaltet den Player aus
tray open,close - öffnet oder schließt die Schublade
statusRequest - fragt den aktuellen Status ab
remoteControl up,down,... - sendet Fernbedienungsbefehle wie im folgenden Kapitel beschrieben.
Wiedergabespezifische Kommandos
play - startet die Wiedergabe des aktuellen Mediums
pause - pausiert die Wiedergabe
stop - stoppt die Wiedergabe
skip forward,reverse - überspringt das aktuelle Kapitel oder den aktuellen Titel
fast forward,reverse - schneller Vor- oder Rücklauf
slow forward,reverse - langsamer Vor- oder Rücklauf
Die Befehlsnamen entsprechen den Tasten auf der Fernbedienung.
Get-Kommandos
get <Name> <Readingname>
Aktuell stehen via GET lediglich die Werte der Readings zur Verfügung. Eine genaue Auflistung aller möglichen Readings folgen unter "Generierte Readings/Events".
discType - Die Art der eingelegten Disc (z.B "No Disc" => keine Disc eingelegt, "CD", "DVD", "BD", ...)
contentType - Die Art des Inhaltes, der gerade abgespielt wird ("audio", "video", "photo" oder "no contents")
error - zeigt an, ob ein interner Fehler im Player vorliegt ("none" => kein Fehler, "fan error" => Lüfterdefekt, "usb overcurrent" => USB Spannungsschutz)
power - Der aktuelle Betriebsstatus ("on" => an, "off" => aus)
presence - Die aktuelle Empfangsbereitschaft ("present" => empfangsbereit, "absent" => nicht empfangsbereit, z.B. Stromausfall)
trayStatus - Der Status der Schublade("open" => geöffnet, "close" => geschlossen)
trickPlay - Der aktuell aktive Trick-Play Modus
state - Der aktuelle Schaltzustand (power-Reading) oder die Abwesenheit des Gerätes (mögliche Werte: "on", "off" oder "absent")
Quellenabhängige Readings/Events:
currentChapter - Das aktuelle Kapitel eines DVD- oder Blu-Ray-Films
currentTitle - Die Titel-Nummer des aktuellen DVD- oder Blu-Ray-Films
currentTrack - Die aktuelle Track-Nummer der wiedergebenden Audio-CD
currentMedia - Der Name der aktuell wiedergebenden Datei (Nur bei der Wiedergabe über USB)
playTimeCurrent - Der aktuelle Timecode an dem sich die Wiedergabe momentan befindet.
playTimeTotal - Die komplette Spieldauer des aktuellen Films (Nur bei der Wiedergabe von DVD/BD's)
playStatus - Wiedergabestatus des aktuellen Mediums
totalTracks - Gesamtanzahl aller Titel einer Audio-CD
Hinweise des Autors
Einige ältere Player-Modelle (z.B. BD-S671) können im Auslieferungszustand nicht via Netzwerk gesteuert werden. Um eine Steuerung via FHEM zu ermöglichen ist ein Firmware-Update notwending!
Dieses Modul ist nur nutzbar, wenn die Option "Netzwerksteuerung" am Player aktiviert ist. Ansonsten ist die Steuerung nicht möglich.
Dieses FHEM–Modul steuert einen Yamaha Network Player (z.B. MCR–N560, MCR–N560D, CRX–N560, CRX–N560D, CD–N500 or NP–S2000) im lokalen Netzwerk.
Geräte, die das Kommunikationsprotokoll der Yamaha Network Player App für i*S und Andr*id implementieren, sollten ebenfalls unterstützen werden können.
# Mit einem Statusintervall von 60 Sek.
define NP_Player YAMAHA_NP 192.168.0.15 60
attr NP_player webCmd input:selectStream:volume
# Mit unterschiedlichen Statusintervallen für off/on, 60/10 Sekunden
define NP_Player YAMAHA_NP 192.168.0.15 60 10
attr NP_player webCmd input:selectStream:volume
Set
set <name> <command> [<parameter>]
Bemerkung: Bei den Befehlen und Parametern ist die Groß–/Kleinschreibung zu bachten. Das Modul zeigt ausschließlich verfügbare Eingänge, die vom jeweiligen Gerät unterstützt werden. Darüber hinaus sind die Befehle kontextsensitiv, abhängig von dem jeweils gewählten Eingang bzw. Betriebsmodus.
Verfügbare Befehle:
CDTray – Öffnen und Schließen des CD–Fachs.
clockUpdate – Aktualisierung der Systemzeit des Network Players. Die Zeitinformation wird von dem FHEM Server bezogen, auf dem das Modul ausgeführt wird.
dimmer [1..3] – Einstellung der Anzeigehelligkeit
directPlay < input:Stream Level 1,Stream Level 2,... > – ermöglicht direktes Abspielen eines Audiostreams/einer Audiodatei z.B. CD:1, DAB:1, netradio:Bookmarks,SWR3
favoriteDefine < name:input[,Stream Level 1,Stream Level 2,...] > – Speichert einen Favoriten e.g. CoolSong:CD,1 (vordefinierte Favoriten sind die verfügbaren Eingänge)
favoriteDelete < name > – Löscht einen Favoriten
favoritePlay < name > – Spielt einen Favoriten ab
input [<parameter>] – Auswahl des Eingangs des Network Players. (Nicht verfügbar beim ausgeschaltetem Gerät)
mute [on|off] – Aktiviert/Deaktiviert die Stummschaltung
off – Network Player ausschalten
on – Network Player einschalten
player [<parameter>] – Setzt Player relevante Befehle.
play – play
stop – stop
pause – pause
next – nächstes Audiostück
prev – vorheriges Audiostück
playMode [<parameter>] – Setzt Player relevante Befehle
shuffleAll – setzt shuffle
shuffleOff – setzt no Shuffle mode
repeatOff – repeat off
repeatOne – repeat one
repeatAll – repeat all
selectStream – Direkte kontextsensitive Streamauswahl. Verügbare Menüeinträge werden automatisch generiert. Bedingt durch das KOnzept des Yamaha–Protokolls kann dies etwas Zeit in Anspruch nehmen. (Defaultmässig auf 999 Listeneintäge limitiert. s.a. maxPlayerLineItems Attribut.)
sleep [off|30min|60min|90min|120min] – Aktiviert/Deaktiviert den internen Sleep–Timer
standbyMode [eco|normal] – Umschaltung des Standby Modus.
statusRequest [<parameter>] – Abfrage des aktuellen Status des Network Players.
basicStatus – Abfrage der Elementarparameter (z.B. Lautstärke, Eingang, etc.)
playerStatus – Abfrage des Player–Status.
standbyMode – Abfrage des standby Modus.
systemConfig – Abfrage der Systemkonfiguration.
tunerStatus – Abfrage des Tuner–Status (z.B. FM Frequenz, Preset–Nummer, DAB Information etc.)
timerStatus – Abfrage des internen Wake–up timers.
timerSet – konfiguriert den Timer nach den Vorgaben: timerHour, timerMinute, timerRepeat, timerVolume (s. entprechende Attribute). (ALLE Attribute müssen zuvor gesetzt sein. Dieser Befehl schaltet den Timer nicht ein → 'timer on'.)
timer [on|off] – Schaltet ein/aus den internen Wake–up Timer. (Bemerkung: Der Timer wird basierend auf den im Gerät gespeicherten Parametern aktiviert. Um diese zu ändern, bitte den 'timerSet' Befehl benutzen.)
tunerFMFrequency [87.50 ... 108.00] – Setzt die FM Frequenz. Der Wert muss zwischen 87.50 ... 108.00 liegen und muss den Digitalpunkt beinhalten ('.') mit zwei Nachkommastellen.
volume [0...100] – Setzt den relativen Lautstärkepegel in %
volumeStraight [<VOL_MIN>...<VOL_MAX>] – Setzt die absolute Lautstärke wie vom Gerät benutzt und angezeigt. Die Parameter <VOL_MIN> and <VOL_MAX> werden automatisch ermittelt.
volumeUp [<VOL_MIN>...<VOL_MAX>] – Erhöht die Lautstärke um einen absoluten Schritt. Die Parameter <VOL_MIN> and <VOL_MAX> werden automatisch ermittelt.
volumeDown [<VOL_MIN>...<VOL_MAX>] – Reduziert die Lautstärke um einen absoluten Schritt. Die Parameter <VOL_MIN> and <VOL_MAX> werden automatisch ermittelt.
Get
get <name> <reading>
Der 'get' Befehl liest Readingwerte zurück. Die Readings sind kontextsensitiv und hängen von dem/der jeweils gewählten Eingang bzw. Aktion ab.
Attributes
.DABList – (internes) Attribut zum Speichern von DAB Presets
.favoriteList – (internes) Attribut zum Speichern von Favoriten
autoUpdatePlayerReadings – optionales Attribut zum automtischen aktualisieren der Player–Readings (Default 1)
autoUpdatePlayerlistReadings – optionales Attribut zum automatischen Scannen der Playerlist (Menü) (Default 1). (Aufgrund des Kommunikationskonzeptes bei der Übertragung der Playerlistinformation kann diese Funktion zu längeren Reaktionszeiten bei der Yamaha App führen, wenn gleichzeitig auf den Netzwerkplayer zugegriffen wird.)
autoUpdateTunerReadings – optionales Attribut zum automtischen aktualisieren der Tuner–Readings (Default 1)
directPlaySleepNetradio – optionales Attribut zum Definieren der Sleep-Zeit zwischen zwei netradio Anfragen zum vTuner Server, wenn der Befehl directPlay benutzt wird. Kann bei langsamen Interneverbindungen nützlich sein. (Default 5 Sek.).
directPlaySleepServer – optionales Attribut zum Definieren der Sleep-Zeit zwischen zwei Multimediaserver-Anfragen, wenn der Befehl directPlay benutzt wird. Kann bei langsamen Verbindungen nützlich sein. (Default 2 Sek.).
disable – optionales Attribut zum Deaktivieren des internen zyklischen Timers zum Aktualisieren des NP–Status. Manuelles Update ist nach wie vor möglich. Mögliche Werte: 0 → Zyklisches Update aktiv., 1 → Zyklisches Update inaktiv (Default 1).
do_not_notify
maxPlayerListItems – optionales Attribut zum Limitieren der maximalen Anzahl von Menüeinträgen (Default 999).
readingFnAttributes
requestTimeout – optionales Attribut zum setzen des HTTP response Timeouts (Default 4)
searchAttempts – optionales Attribut zur Definition von max. Anzahl der Suchversuche des angegebenen Direktoryinhalts bei der Benutzng des directPlay Befehls. Mögliche Werte: 15...100 (Default 15 Sek.).
smoothVolumeChange – optionales Attribut zur sanften Lautstärkeänderung (Erzeugt deutlich mehr Ethernetkommunikation während der Lautstärkeänderung). (Default 1)
timerHour [0...23] – Setzt die Stunde des internen Wake–up Timers
timerMinute [0...59] – Setzt die Minute des internen Wake–up Timers
timerRepeat [once|every] – Setzt den Wiederholungsmodus des internen Wake–up Timers
Readings
Generelle Readings:
deviceInfo – Devicespezifische, konsolidierte Informationen wie z.B. uuid, IP–Adresse, usw.
playerPlaybackInfo – Abfrage des aktuellen Player Status (play|stop|pause)
playerAlbum – Abfrage des Albumnamens (falls verfügbar) der aktuellen Wiedergabe
playerAlbumArtURL – Abfrage der Album URL (falls verfügbar) der aktuellen Wiedergabe
playerAlbumArtID – Abfrage der AlbumArtID (falls verfügbar) der aktuellen Wiedergabe
playerAlbumArtFormat – Abfrage des AlbumArt Formats (falls verfügbar) der aktuellen Wiedergabe
playerArtist – Abfrage des Künstler (Artist) (falls verfügbar) der aktuellen Wiedergabe
playerDeviceType – Abfrage des Device Typs (ipod|msc)
playerIpodMode – Abfrage des iP*d/iPh*ne Modus (normal|off)
playerPlayTime – Abfrage der aktuellen Spielzeit (HH:MM:SS)
playerRepeat – Abfrage des Wiederholungsmodus (one|all)
playerShuffle – Abfrage des Zufallswiedergabemodus (on|off)
playerSong – Abfrage des Tracknamens (falls verfügbar) der aktuellen Wiedergabe
playerTotalTracks – Abfrage der Gesamtzahl der zu wiedergebenden Tracks
playerTrackNb – Abfrage der Audiotracknummer
Playerlistspezifische (Menü) Readings:
listItem_XXX – Inhalt der Menüeinträge. Prefix 'c_' steht für Container (Directory), Prefix 'i_' für Item (Audiofile/Stream). Die Anzahl kann mit dem Attribut 'maxPlayerLineItems' limitiert werden (Default 999).
lvlX_ – Zeigt den hierarchischen Directorylevel im Directory Tree an
Authorisiert das Ausführen von Kommandos oder das Ändern von
Geräten abhängig vom verwendeten Frontend.
Falls man mehrere allowed Instanzen definiert hat, die für dasselbe
Frontend verantwortlich sind, dann müssen alle Authorisierungen
genehmigt sein, um das Befehl ausführen zu können. Auf der
anderen Seite reicht es, wenn einer der Authentifizierungen positiv
entschieden wird. Die Prüfungen werden in alphabetischer Reihenfolge
der Instanznamen ausgeführt.
Achtung: das Modul sollte wie hier beschrieben funktionieren,
allerdings können wir keine Garantie geben, daß man sie nicht
überlisten, und Schaden anrichten kann.
globalpassword <password>
diese Befehle setzen das entsprechende Attribut, indem sie aus den
Parameter und ein Salt ein SHA256 Hashwert berechnen. Achtung: das perl
Modul Device::SHA wird benötigt.
allowedCommands
Eine Komma getrennte Liste der erlaubten Befehle des passenden
Frontends (siehe validFor). Bei einer leeren Liste (, dh. nur ein
Komma) wird dieser Frontend "read-only".
Falls es auf get,set gesetzt ist, dann sind in dieser
Frontend keine Konfigurationsänderungen möglich, nur
"normale" Bedienung der Schalter/etc.
allowedDevices
Komma getrennte Liste von Gerätenamen, die mit dem passenden
Frontend (siehe validFor) geändert werden können.
basicAuth, basicAuthMsg
Erzwingt eine Authentifizierung mit Benutzername/Passwort für die
zugerdnete FHEMWEB Instanzen. Der Wert kann entweder das base64
kodierte Benutzername:Passwort sein, ein SHA256 hash (was man am besten
mit dem passenden set Befehl erzeugt), oder, falls er in {}
eingeschlossen ist, ein Perl Ausdruck. Für Letzteres wird
$user und $passwort gesetzt, und muss wahr zurückliefern, falls
Benutzername und Passwort korrekt sind. Beispiele:
basicAuthMsg wird (in manchen Browsern) in dem Passwort Dialog als
Überschrift angezeigt.
password
Betrifft nur telnet Instanzen (siehe validFor): Bezeichnet ein
Passwort, welches als allererster String eingegeben werden muss,
nachdem die Verbindung aufgebaut wurde. Für die Werte gelten die
Regeln von basicAuth, mit der Ausnahme, dass nur Passwort und kein
Benutzername spezifiziert wird. Falls dieser Parameter gesetzt
wird, sendet FHEM telnet IAC Requests, um ein Echo während der
Passworteingabe zu unterdrücken. Ebenso werden alle
zurückgegebenen Zeilen mit \r\n abgeschlossen.
Falls dieses Attribut gesetzt wird, muss als erstes Argument ein
Passwort angegeben werden, wenn fhem.pl im Client-mode betrieben wird:
perl fhem.pl localhost:7072 secret "set lamp on"
globalpassword
Betrifft nur telnet Instanzen (siehe validFor): Entspricht dem
Attribut password; ein Passwort wird aber ausschließlich für
nicht-lokale Verbindungen verlangt.
validFor
Komma separierte Liste von Frontend-Instanznamen. Aktuell werden nur
Frontends unterstützt, die das FHEM TCP/IP Bibliothek verwenden,
z.Bsp. telnet und FHEMWEB. Falls nicht gesetzt, ist die allowed Instanz
nicht aktiv.
apptime
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: apptime
Mit einem archetype werden Attribute auf Erben (inheritors), andere
Geräte, übertragen. Die Erben können, nach einem vorgegeben
Muster im archetype und für Beziehungen (relations), eine bestimmte
Gruppe von Geräten, definiert werden.
Hinweise:
$name
Name des Erben
$room
Raum der Beziehung
$relation
Name der Beziehung
$SELF
Name des archetype
Befehle
clean [check]
Definiert für alle Beziehungen aller archetype die Erben, vererbt für
alle archetype die unter dem Attribut attributes angegeben Attribute auf
alle Erben.
Wird optinal der Parameter "check" angegeben werden alle ausstehenden
Attribute und Erben angezeigt.
Define
define <name> archetype [<devspec>] [<devspec>] [...]
In den <devspec> werden alle Erben beschrieben die es für dieses
archetype gibt. Es sollte darauf geachtet werden, dass jeder Erbe nur
einem archetype zugeordnet ist.
Wird keine <devspec> angegeben wird diese mit "defined_by=$SELF"
gesetzt. Diese devspec wird auch immer überprüft, selbst wenn
sie nicht angegeben ist.
Siehe den Abschnitt über
Geräte-Spezifikation
für Details der <devspec>.
define <name> archetype derive attributes
Wird in der DEF "derive attributes" angegeben handelt es sich um ein
besonderes archetype. Es leitet Attribute anhand eines Musters ab.
Das Muster wird mit den Attributen actual_.+ beschrieben.
Als Erben werden alle Geräte aufgelistet welche alle Pflicht-
Attribute eines Musters besitzen.
Set
addToAttrList <attribute>
Der Befehl ist nur bei einem archetype mit der DEF "derive attributes"
möglich.
Fügt global einen Eintrag unter userattr hizu, sodass er für
alle Geäräte zur Verfügung steht.
Dies kann sinnvoll sein um den alias nach einem Muster abzuleiten.
define inheritors
Definiert für alle Beziehungen einen Erben nach dem Muster:
define <metaNAME> <actualTYPE> [<metaDEF>]
Wenn ein Erbe definiert wird, wird er, mit den unter dem Attribut
initialize angegebenen Befehlen, initialisiert und ihm wir das Attribut
defined_by mit dem Wert $SELF zugewiesen.
Die Beziehungen, metaNAME, actualTYPE und metaDEF werden in Attributen
beschrieben.
derive attributes
Der Befehl ist nur bei einem archetype mit der DEF "derive attributes"
möglich.
Leitet für alle Erben die unter dem Attribut attributes angegeben
Attribute ab.
inheritance
Vererbt die eigenen unter dem Attribut attributes angegeben Attribute
auf alle Erben.
initialize inheritors
Führt für alle Erben die unter dem Attribut initialize
angegebenen Befehle aus.
raw <Befehl>
Führt für alle Erben den Befehl aus.
Get
inheritors
Listet alle Erben auf.
relations
Listet alle Beziehungen auf.
pending attributes
Listet für jeden Erben die unter dem Attribut attributes angegeben
Attribute auf, die nicht mit den Attributen des archetype
übereinstimmen.
pending inheritors
Listet alle Erben auf die aufgrund der Beziehungen noch definiert
werden sollen.
Attribute
Hinweise:
Alle Attribute die vererbt werden können, können vorab mit
einem Modifikator versehen werden.
attr archetype <attribute> undef:<...>
Wird undef: vorangestellt wird das Attribut nur vererbt,
sofern der Erbe dieses Attribut noch nicht besitzt.
attr archetype <attribute>
least[(<Trennzeichen>)]:<...>
Wird eine Liste vererbt kann mit dem voranstellen von
least[(<Trennzeichen>)]:
angegeben werden, dass diese Elemente mindestens vorhanden sein
sollen.
Wird kein Trennzeichen angegeben wird das Leerzeichen als
Trennzeichen verwendet.
actual_<attribute> <value>
<value> kann als <Text> oder als {perl code} angegeben
werden.
Wir das Attribut <attribute> vererbt, ersetz die Rückgabe
des actual_<attribute> Wert des Attributes.
Bei dem archetype mit der DEF "derive attributes" können Muster
definiert werden.
Beispiel:
actual_alias %captionRoom|room%: %description%[ %index%][%suffix%]
Alle in % eingeschlossenen Ausdrücke sind Attribute. Eine Reihenfolge
lässt sich durch | erreichen. Ist ein Ausdruck in [] eingeschlossen ist
er optional.
Die Ausdrücke captionRoom, description, index und suffix sind hierbei
durch addToAttrList hinzugefügte Attribute.
actualTYPE <TYPE>
Legt den TYPE des Erben fest. Der Standardwert ist dummy.
attributes <attribute> [<attribute>] [...]
Leerzeichen-getrennte Liste der zu vererbenden Attribute.
attributesExclude <attribute> [<attribute>] [...]
Leerzeichen-getrennte Liste von Attributen die nicht auf diesen Erben
vererbt werden.
autocreate 0
Durch das archetype werden Attribute auf neue devices nicht automatisch
vererbt und Erben werden nicht automatisch für neue Beziehungen
angelegt.
Der Standardwert ist 1.
defined_by <...>
Hilfsattribut um zu erkennen, durch welchen archetype der Erbe
definiert wurde.
delteAttributes 1
Wird ein Attribut im archetype gelöscht, wird es auch bei allen Erben
gelöscht.
Der Standardwert ist 0.
disable 1
Es werden keine Attribute mehr vererbt und keine Erben definiert.
initialize <initialize>
<initialize> kann als <Text> oder als {perl code} angegeben
werden.
Der <Text> oder die Rückgabe vom {perl code} muss eine
durch Semikolon (;) getrennte Liste von FHEM-Befehlen sein. Mit diesen
werden die Erben initialisiert, wenn sie definiert werden.
metaDEF <metaDEF>
<metaDEF> kann als <Text> oder als {perl code} angegeben
werden und beschreibt den Aufbau der DEF für die Erben.
metaNAME <metaNAME>
<metaNAME> kann als <Text> oder als {perl code} angegeben
werden und beschreibt den Aufbau des Namen für die Erben.
relations <devspec> [<devspec>] [...]
In den <relations> werden alle Beziehungen beschrieben die es für
dieses archetype gibt.
Siehe den Abschnitt über
Geräte-Spezifikation
für Details der <devspec>.
Startet einen beliebigen FHEM Befehl zu einem späteren Zeitpunkt.
Define
define <name> at [<timespec>|<datespec>]
<command>
<timespec> Format: [+][*{N}]<timedet>
Das optionale + zeigt, dass die Angabe relativ ist
(also zur jetzigen Zeit dazugezählt wird).
Das optionale * zeigt, dass die Ausführung
wiederholt erfolgen soll.
Das optionale {N} nach dem * bedeutet, dass der Befehl genau
N-mal wiederholt werden soll.
<timespec> ist entweder HH:MM, HH:MM:SS oder {perlfunc()}. perlfunc
muss ein String in timedet Format zurueckliefern. Achtung: {perlfunc()}
darf keine Leerzeichen enthalten.
<datespec> ist entweder ISO8601 (YYYY-MM-DDTHH:MM:SS) oder Anzahl
der Sekunden seit 1970.
Beispiele:
# Absolute Beispiele:
define a1 at 17:00:00 set lamp on # fhem Befehl
define a2 at 17:00:00 { Log 1, "Teatime" } # Perl Befehl
define a3 at 17:00:00 "/bin/echo "Teatime" > /dev/console" # shell Befehl
define a4 at *17:00:00 set lamp on # Jeden Tag
# Realtive Beispiele:
define a5 at +00:00:10 set lamp on # Einschalten in 10 Sekunden
define a6 at +00:00:02 set lamp on-for-timer 1 # Einmal blinken in 2 Sekunden
define a7 at +*{3}00:00:02 set lamp on-for-timer 1 # Blinke 3 mal
# Blinke 3 mal wenn piri einen Befehl sendet
define n1 notify piri:on.* define a8 at +*{3}00:00:02 set lamp on-for-timer 1
# Lampe von Sonnenuntergang bis 23:00 Uhr einschalten
define a9 at +*{sunset_rel()} set lamp on
define a10 at *23:00:00 set lamp off
# Elegantere Version, ebenfalls von Sonnenuntergang bis 23:00 Uhr
define a11 at +*{sunset_rel()} set lamp on-till 23:00
# Nur am Wochenende ausführen
define a12 at +*{sunset_rel()} { fhem("set lamp on-till 23:00") if($we) }
# Schalte lamp1 und lamp2 ein von 7:00 bis 10 Minuten nach Sonnenaufgang
define a13 at *07:00 set lamp1,lamp2 on-till {sunrise(+600)}
# Schalte lamp jeden Tag 2 Minuten nach Sonnenaufgang aus
define a14 at *{sunrise(+120)} set lamp on
# Schalte lamp1 zum Sonnenuntergang ein, aber nicht vor 18:00 und nicht nach 21:00
define a15 at *{sunset(0,"18:00","21:00")} set lamp1 on
Hinweise:
wenn kein * angegeben wird, wird der Befehl nur einmal
ausgeführt und der entsprechende at Eintrag danach
gelöscht. In diesem Fall wird der Befehl im Statefile gespeichert
(da er nicht statisch ist) und steht nicht im Config-File (siehe auch save).
wenn die aktuelle Zeit größer ist als die angegebene Zeit,
dann wird der Befehl am folgenden Tag ausgeführt.
Für noch komplexere Datums- und Zeitabläufe muss man den
Aufruf entweder per cron starten oder Datum/Zeit mit perl weiter
filtern. Siehe hierzu das letzte Beispiel und das Perl
special.
Set
modifyTimeSpec <timespec>
Ändert die Ausführungszeit. Achtung: die N-malige
Wiederholungseinstellung wird ignoriert. Gedacht zur einfacheren
Modifikation im FHEMWEB Raumübersicht, dazu muss man
modifyTimeSpec in webCmd spezifizieren.
inactive
Deaktiviert das entsprechende Gerät. Beachte den leichten
semantischen Unterschied zum disable Attribut: "set inactive"
wird bei einem shutdown automatisch in fhem.state gespeichert, es ist
kein save notwendig.
Der Einsatzzweck sind Skripte, um das at temporär zu
deaktivieren.
Das gleichzeitige Verwenden des disable Attributes wird nicht empfohlen.
active
Aktiviert das entsprechende Gerät, siehe inactive.
execNow
Führt das mit dem at spezifizierte Befehl aus. Beeinflußt
nicht die Ausführungszeiten relativer Spezifikationen.
Get
N/A
Attribute
alignTime
Nur für relative Definitionen: Stellt den Zeitpunkt der
Ausführung des Befehls so, dass er auch zur alignTime
ausgeführt wird. Dieses Argument ist ein timespec. Siehe oben
fü die Definition
Beispiel:
# Stelle sicher das es gongt wenn eine neue Stunde beginnt.
define at2 at +*01:00 set Chime on-for-timer 1
attr at2 alignTime 00:00
computeAfterInit
Falls perlfunc() im timespec Readings or Statusinformationen
benögt, dann wird sie eine falsche Zeit beim FHEM-Start
zurueckliefern, da zu diesem Zeitpunkt die Readings noch nicht aktiv
sind. Mit gesetztem computeAfterInit wird perlfunc nach Setzen aller
Readings erneut ausgefuehrt. (Siehe Forum #56706)
disable
Deaktiviert das entsprechende Gerät.
Hinweis: Wenn angewendet auf ein at, dann wird der
Befehl nicht ausgeführt, jedoch die nächste
Ausführungszeit berechnet.
disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM...
Das Argument ist eine Leerzeichengetrennte Liste von Minuszeichen-
getrennten HH:MM oder D@HH:MM Paaren. Falls die aktuelle Uhrzeit
zwischen diesen Werten fällt, dann wird die Ausführung, wie
beim disable, ausgesetzt. Statt HH:MM kann man auch HH oder HH:MM:SS
angeben. D ist der Tag der Woche, mit 0 als Sonntag and 3 als
Mittwoch. Um einen Intervall um Mitternacht zu spezifizieren, muss man
zwei einzelne angeben, z.Bsp.:
23:00-24:00 00:00-01:00
Falls Teile des Wertes in {} eingeschlossen sind, dann werden sie als
ein Perl Ausdruck ausgewertet:
{sunset_abs()}-24 {sunrise_abs()}-08
skip_next
Wird bei at Befehlen verwendet um die nächste Ausführung zu
überspringen
Erzeugt für noch nicht definierte FHEM-Geräte automatisch die
geignete Definition (define). Diese Definition wird aus einer Nachricht
gewonnen, die von diesen neuen Geräten empfangen wurde. Hinweis:
Geräte, die mit Polling arbeiten (wie z.B. der Zugriff auf EMEM/EMWZ
über EM1010PC) werden NICHT automatisch erzeugt.
Define
define <name> autocreate
Durch die Definition dieser Instanz wird das globale Attribut autoload_undefined_devices
gesetzt, sodass die Module für unbekannte Geräte automatisch
nachgeladen werden. Das autocreate-Modul interpretiert das
UNDEFINED-event, welches von jedem Modul gestartet wird, erzeugt ein
Gerät (device) und bei Bedarf ein FileLog sowie
SVG-Einträge. Hinweis 1: Geräte werden mit einem eindeutigen Namen erzeugt,
der den Typ und eine individuelle ID für diesen Typ enthält.
Wird ein Gerät umbenannt (rename), wird
gleichzeitig das automatisch erzeugte FileLog und die SVG Geräte
unbenannt. Hinweis 2: Durch das Setzen des disable-Attributes kann die automatische Erzeugung
ausgeschaltet werden. In diesem Fall ist ausschließlich die oben
erläuterte Umbenennung aktiv. Der createlog-Befehl kann zum Hinzufügen von
FileLog und SVG eines bereits definierten Gerätes benutzt werden.
Hinweis 3:Es macht keinen Sinn, die Instanz dieses Moduls mehrmals
zu erzeugen.
autosave
Nach der Erzeugung eines neuen Gerätes wird automatisch die
Konfigurationsdatei mit dem Befehl save
gespeichert. Der Standardwert ist 1 (d.h. aktiviert), eine 0 schaltet
die automatische Speicherung aus. Achtung: Dieses Attribut ist unerwünscht, bitte stattdessen
das global autosave Attribut verwenden.
device_room
"Schiebt" das neu erstellte Gerät in diesen Raum. Der Name kann
die Wildcards %NAME und %TYPE enthalten, siehe oben stehendes
Beispiel.
filelog
Erstellt ein Filelog welches zu einem Gerät gehört. Der
Dateiname darf die Wildcards %NAME und %TYPE enthalten, siehe oben
stehendes Beispiel. Das Filelog wird in den gleichen Raum "geschoben"
wie das zugehörige Gerät.
weblink
Erzeugt ein SVG, welches mit dem Gerät/Filelog verknüpft
ist.
weblink_room
"Schiebt" das neu erstellte SVG in den bezeichneten Raum. Der Name kann
die Wildcards %NAME und %TYPE enthalten, siehe oben stehendes
Beispiel.
ignoreTypes
Dies ist ein Regexp, um bestimmte Geräte zu ignorieren, z.b. der
Funk-Heizungsthermostat (FHT) des Nachbarn. In dem Ausdruck können
mehr als ein Gerät über die normale Regexp-Syntax angegeben
werden. Beispiel:
attr autocreate ignoreTypes (CUL_HOERMANN.*|FHT_1234|CUL_WS_7)
Das Wort "Types" ist etwas irreführend, da der Gerätename
geprüft wird, und nicht der Typ. Achtung: ab featurelevel 5.9 wird der Regexp automatisch mit
^ und $ ergänzt, muss also den kompletten Namen matchen (genau wie
bei notify und FileLog).
autocreateThreshold
Eine Liste of <type>:<count>:<interval> tripeln. Ein
neues Device wird nur dann erzeugt wenn es mindestens count
Events für den TYPE type in den letzten
interval Sekunden gegeben hat.
Beispiel: attr autocreateThreshold LaCrosse:2:30,EMT7110:2:60
createlog
Dieser Befehl wird für ein manuelles Hinzufügen eines Logfile
oder eines SVG zu einem vorhandenen Gerät verwendet.
Dieser Befehl ist Bestandteilteil des autocreate-Modules.
usb
Verwendung:
usb scan
usb create
Dieser Befehl durchsucht das /dev-Verzeichnis nach angeschlossenen
USB-Geräten und versucht gleichzeitig sie zu identifizieren. Mit dem
Argument scan wird eine Liste von ausführbaren FHEM-Befehlen
zurückgegeben. Das Argument create gibt keine Liste o.ä.
zurück, die Geräte werden stattdessen erzeugt.
Es ist zu beachten, dass ein CUL immer noch manuell in den
HomeMatic-Modus umgeschaltet werden muss.
Unter Linux wird gleichzeitig mit dem lsusb-befehl überprüft,
ob nichtgeflashte CULs angeschlossen sind. Ist dies der Fall, ruft Linux
CULflash mit den geeigneten Parametern auf (oder zeigt den
CULflash-Befehl an, falls scan aufgeführt wurde).
Pro usb Befehl wird nur ein Gerät geflasht.
Dieser Befehl ist Bestandteilteil des autocreate-Modules.
average
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: average
backup
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: backup
Definiert einen Klon eines lokalen Devices oder von FHEM2FHEM im Logmodus uebergebenen Devices
und uebernimmt dessen Readings. Sinnvoll um entfernte FHEM-Installationen lesend einzubinden,
zum Testen oder Programmieren. Dabei werden die von FHEM2FHEM in Form von Events weitergereichten
entfernten Device-Readings in eigene Readings übernommen. Identische Events, die innerhalb der
durch das globale Attribut dupTimeout vorgegebenen Zeit auftreten, werden
zusammengefasst, um überflüssige Events zu verhindern. Dieses Attribut ist mit bedacht zu ändern,
da sich seine Auswirkungen auch auf andere Bereiche von FHEM erstreckt.
Die Rangfolge für den STATE ist:
wenn keine Vorgabe gemacht wurde, dann die Meldung von cloneDummy (initialized, active)
wenn addStateEvent gesetzt ist, dann der "state" vom geklonten Device (dann kein "state" mehr
vom cloneDummy)
wenn das optionale reading im define gesetzt ist, dann der Wert davon (überstimmt die beiden
vorherigen Zeilen)
wenn stateFormat als attr gesetzt ist, toppt das alles
Define
define <name> cloneDummy <Quelldevice> [reading]
Aktiviert den cloneDummy, der dann an das Device <Quelldevice> gebunden ist.
Mit dem optionalen Parameter reading wird bestimmt, welches reading im STATE angezeigt wird,
stateFormat ist auch weiterhin möglich.
Beispiel:
Der cloneDummy wird lesend an den Sensor OWX_26_09FF26010000 gebunden und zeigt im
State temperature an.
define Feuchte cloneDummy OWX_26_09FF26010000 temperature
Set
N/A
Get
N/A
Attributes
addStateEvent
0 ist Vorgabe im Modul, bei 1 wird der Originalstate des original Devices als STATE verwendet
(geht z.Z. nicht in Verbindung mit FHEM2FHEM)
clonIgnore
Eine durch Kommata getrennte Liste der readings, die cloneDummy nicht in eigene readings
umwandelt
deleteBeforeUpdate
Ist dieses Attribut auf 1 gesetzt, werden alle readings zuerst gelöscht, bevor neue Readings geschrieben werden.
configDB ist die Funktionsbibliothek für die Konfiguration aus einer SQL Datenbank.
Die ausführliche Dokumentation findet sich in der configdb Befehlsbeschreibung.
configdb
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: configdb
Erzeugt eine Kopie des Device <orig name> mit dem namen <copy name>.
Wenn <type dependent arguments> angegeben sind ersetzen die die DEF von <orig name> beim anlegen von <copy name>.
count
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: count
dash_dhcp
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: dash_dhcp
Berechnet den Taupunkt des Geräts <devicename-regex> basierend auf Temperatur
und Luftfeuchte und erzeugt daraus ein neues Reading namens dewpoint.
Wenn <temp_name>, <hum_name> und <new_name> angegeben sind,
werden die Temperatur aus dem Reading <temp_name>, die Luftfeuchte aus dem
Reading <hum_name> gelesen und als berechneter Taupunkt ins Reading <new_name> geschrieben.
Veraltet, für neue Definitionen nicht mehr benutzen
Wenn <temp_name> T lautet, wird die Temperatur aus state T: H: benutzt
und <new_name> zu STATE hinzugefügt. Das hinzufügen zu STATE erfolgt nur, falls im Zielgerät
das Attribut "stateFormat" nicht definiert ist.
Falls das veraltete Verhalten zum Update unbedingt gewüscht ist,
kann das Attribut legacyStateHandling gesetzt werden.
Beispiele:
# Berechnet den Taupunkt aufgrund von Temperatur und Luftfeuchte
# in Ereignissen, die vom Gerät temp1 erzeugt wurden und erzeugt ein Reading dewpoint.
define dew_temp1 dewpoint dewpoint temp1
define dew_temp1 dewpoint dewpoint temp1 temperature humidity dewpoint
# Berechnet den Taupunkt aufgrund von Temperatur und Luftfeuchte
# in Ereignissen, die von allen Geräten erzeugt wurden die diese Werte ausgeben
# und erzeugt ein Reading dewpoint.
define dew_all dewpoint dewpoint .*
define dew_all dewpoint dewpoint .* temperature humidity dewpoint
# Berechnet den Taupunkt aufgrund von Temperatur und Luftfeuchte
# in Ereignissen, die vom Gerät Aussen_1 erzeugt wurden und ergänzt
# mit diesem Wert den Status STATE, falls in Aussen_1 das Attribut "stateFormat" nicht definiert ist.
# Falls "stateFormat" definiert ist, wird das reading "D" angelegt.
define dew_state dewpoint dewpoint Aussen_1 T H D
# Berechnet den Taupunkt aufgrund von Temperatur und Luftfeuchte
# in Ereignissen, die von allen Geräten erzeugt wurden die diese Werte ausgeben
# und ergänzt mit diesem Wert den Status STATE. (Siehe Beispiel oben).
# Beispiel STATE: "T: 10 H: 62.5" wird verändert nach
# "T: 10 H: 62.5 D: 3.2"
define dew_state dewpoint dewpoint .* T H D
define <name> dewpoint fan <devicename-regex> <devicename-outside> <min-temp> [<diff_temp>]
Erzeugt ein Ereignis, um einen Lüfter einzuschalten, wenn die Außenluft
weniger Wasser als die Raumluft enthält.
Erzeugt das Ereignis "fan: on" wenn (Taupunkt von <devicename-outside>) +
<diff_temp> ist niedriger als der Taupunkt von <devicename> und die Temperatur
von <devicename-outside> >= min-temp ist. Das Ereignis wird nur erzeugt wenn das
Reading "fan" nicht schon "on" war. Das Ereignis wird für das Gerät <devicename> erzeugt.
Der Parameter <diff-temp> ist optional.
Andernfalls wird das Ereignis "fan: off" erzeugt, wenn das Reading von "fan" nicht bereits "off" war.
Beispiel:
# Erzeugt das Ereignis "fan: on", wenn der Taupunkt des Geräts Aussen_1 zum ersten Mal
# niedriger ist als der Taupunkt des Geräts basement_tempsensor und die
# Außentemperatur >= 0 ist und wechselt nach "fan: off" wenn diese Bedingungen nicht
# mehr zutreffen.
# Schaltet den Schalter fan_switch abhängig vom Zustand ein oder aus.
define dew_fan1 dewpoint fan basement_tempsensor Aussen_1 0
define dew_fan1_on notify basement_tempsensor.*fan:.*on set fan_switch on
define dew_fan1_off notify basement_tempsensor.*fan:.*off set fan_switch off
Erzeugt einen Schimmel-Alarm, wenn eine Referenz-Temperatur unter den Taupunkt fällt.
Erzeugt ein Reading/Ereignis "alarm: on" wenn die Temperatur von
<devicename-reference> - <diff-temp> unter den Taupunkt von
<devicename> fällt und das Reading "alarm" nicht bereits "on" ist.
Das Ereignis wird für <devicename> erzeugt.
Erzeugt ein Reading/Ereignis "alarm: off" wenn die Temperatur von
<devicename-reference> - <diff-temp> über den Taupunkt
von <devicename> steigt und das Reading "alarm" nicht bereits "off" ist.
Beispiel:
# Es wird ein Anlegefühler (Wandsensor) und ein Thermo-/Hygrometer (Raumfühler)
# verwendet, um einen Alarm zu erzeugen, wenn die Wandtemperatur
# unter den Taupunkt der Luft fällt. In diesem Fall würde sich Wasser an der Wand
# niederschlagen (kondensieren), weil die Wand zu kalt ist.
# Der Schalter einer Sirene (alarm_siren) wird über ein notify geschaltet.
define dew_alarm1 dewpoint alarm roomsensor wallsensor 0
define roomsensor_alarm_on notify roomsensor.*alarm:.*on set alarm_siren on
define roomsensor_alarm_off notify roomsensor.*alarm:.*off set alarm_siren off
# Ohne Wandsensor lässt sich auch der Taupunkt eines Raums mit der Temperatur desselben
# (oder eines anderen) Fühlers vergleichen.
# Die Alarmtemperatur ist 5 Grad niedriger gesetzt als die des Vergleichsthermostats.
define dev_alarm2 dewpoint alarm roomsensor roomsensor 5
Zusätzlich wird die absolute Feuchte in g/m³ als Reading <reading_name> berechnet.
vapourPressure <reading_name>
Zusätzlich wird der Dampfdruck in hPa als Reading <reading_name> berechnet.
max_timediff
Maximale erlaubter Zeitunterschied in Sekunden zwischen den Temperatur- und Luftfeuchtewerten eines
Geräts. dewpoint verwendet Readings von Temperatur oder Luftfeuchte wenn sie nicht im Ereignis
mitgeliefert werden. Das ist sowohl für den Betrieb mit event-on-change-reading nötig
als auch bei Sensoren die Temperatur und Luftfeuchte in getrennten Ereignissen kommunizieren
(z.B. Technoline Sensoren TX3TH).
Der Standardwert ist 1 Sekunde.
Beispiel:
# Maximal erlaubter Zeitunterschied soll 60 Sekunden sein
define dew_all dewpoint dewpoint .*
attr dew_all max_timediff 60
readingList
Leerzeichen getrennte Liste mit Readings, die mit "set" gesetzt werden
können.
setList
Liste mit Werten durch Leerzeichen getrennt. Diese Liste wird mit "set
name ?" ausgegeben. Damit kann das FHEMWEB-Frontend Auswahl-Menüs
oder Schalter erzeugen. Beispiel: attr dummyName setList on off
useSetExtensions
Falls gesetzt, und setList enthält on und off, dann die set extensions Befehle sind auch aktiv. In
diesem Fall werden nur die Befehle aus setList und die set exensions
akzeptiert.
FREEZEMON Überwacht - Ähnlich wie PERFMON mögliche Freezes, allerdings ist FREEZEMON ein echtes Modul und hat daher:
Readings - die geloggt werden können und damit viel einfacher ausgewertet werden können
Attribute - mit denen das Verhalten von freezemon beeinflusst werden kann
zusätzliche Funktionalität - die versucht das den Freeze verursachende Device zu identifizieren
Ich würde empfehlen, PERFMON zu deaktivieren, wenn FREEZEMON aktiv ist, da beide auf die selbe Art Freezes erkennen und dann nur alles doppelt kommt.
Bitte beachten! FREEZEMON versucht nur intelligent zu erraten, welches Device einen freeze verursacht haben könnte (basierend auf den Timern die laufen sollten). Es gibt eine Menge anderer Faktoren (intern oder extern) die einen Freeze verursachen können. FREEZEMON ersetzt keine detaillierte Analyse. Das Modul versucht nur Hinweise zu geben, was optimiert werden könnte.
Define
FREEZEMON wird ohne Parameter definiert.
define <devicename> freezemon
damit ist der Freezemon aktiv (im Log sollte eine entsprechende Meldung geschrieben werden)
Set
inactive: deaktiviert das Device (identisch zum Attribut "disable", aber ohne die Notwendigkeit su "saven".
active: reaktiviert das Device nachdem es auf inactive gesetzt wurde
clear: Löscht alle readings (inklusive der Liste der letzten 20 Freezes).
Get
freeze: gibt die letzten 20 freezes zurück (in Kompakter Darstellung, wie im state) - Dies dient einem schnellen Überblick, für detailliertere Auswertungen empfehle ich die Daten zu loggen.
log: gibt Zugriff auf die Logfiles die geschrieben werden, wenn fm_logFile aktiv ist
Readings
freezeTime: Dauer des Freezes
freezeDevice: Liste von möglicherweise den Freeze auslösenden Funktionen(Devices)
fcDay: kumulierte Anzahl der Freezes pro Tag
ftDay: kumulierte Dauer der Freezes pro Tag
fcDayLast: speichert die kumulierte Anzahl der Freezes des vergangenen Tages (um tageweise plots zu erstellen)
fcDayLast: speichert die kumulierte Dauer der Freezes des vergangenen Tages (um tageweise plots zu erstellen)
fm_catchCallFn: wenn aktiviert, werden zusätzlich FHEM-interne Funktionsaufrufe überwacht, in einigen Fällen kann das zusätzliche Hinweise auf den Freeze-Verursacher geben
fm_catchCmds: wenn aktiviert, werden zusätzlich FHEM-Kommandos überwacht, in einigen Fällen kann das zusätzliche Hinweise auf den Freeze-Verursacher geben
fm_extDetail: stellt in einigen Fällen zusätzliche Details bei erkannten Freezes zur Verfügung. In wenigen Fällen wurde berichtet, dass FHEM crasht, also vorsichtig verwenden.
fm_freezeThreshold: Wert in Sekunden (Default: 1) - Nur Freezes länger als fm_freezeThreshold werden als Freeze betrachtet
fm_forceApptime: Wenn FREEZEMON aktiv ist wird automatisch apptime gestartet (falls nicht aktiv)
fm_ignoreDev: Liste von Komma-getrennten Devices. Wenn einzelne möglicherweise einen Freeze verursachenden Device in dieser Liste sind, wird der Freeze ignoriert (nicht geloggt). Bitte das Attribut fm_ignoreMode beachten
fm_ignoreMode: Kann die Werte off,single oder all annehmen. Wenn in fm_ignoreDev Devices angegeben sind wirken sich der ignoreMode wie folgt aus:
all: Ein Freeze wird nur dann ignoriert, wenn alle möglicherweise den Freeze verursachenden Devices in der Ignore-Liste enthalten sind. Dies führt unter Umständen dazu, dass mehr Freezes geloggt werden als erwartet.
single: Ein Freeze wird ignoriert, sobald ein möglicher Verursacher in der Ignorierliste enthalten ist. Dies führt möglicherweise dazu, dass Freezes übersehen werden.
off: Alle Freezes werden geloggt.
Sofern das Attribut nicht gesetzt ist, aber Ignore-Devices angegeben sind, wird im Modus "all" ignoriert.
fm_log: dynamischer Loglevel, nimmt einen String der Form 10:1 5:2 1:3 entgegen, was bedeutet: Freezes > 10 Sekunden werden mit Loglevel 1 geloggt, >5 Sekunden mit Loglevel 2 usw...
fm_logFile: ist ein gültiger Filename (wie z.B. ./log/freeze-%Y%m%d-%H%M%S.log). Wenn gesetzt, werdn Meldungen auf Loglevel 5 (auch wenn global Loglevel < 5 ist) vor einem Freeze in einem seperaten File geloggt.
fm_logExtraSeconds: dobsoletes Attribut, wird nicht mehr genutzt und sollte gelöscht werden
fm_logKeep: Eine Zahl, die angibt wieviele Logfiles behalten werden sollen. Wenn gesetzt, werden alle Logfiles ausser den letzten n Freezemon Logfiles regelmäßig gelöscht.
fm_whitelistSub: Komma-getrennte Liste von Subroutinen wo du sicher bist, dass sie keinen Freeze verursachen. Whitelisted Subs erscheinen nicht in der "possibly caused by" Liste. Typischerweise listet man hier Subroutinen, die regelmäßig in der "possibly caused by" Liste auftauchen, wo du aber wirklich sicher bist, dass sie nicht die Ursache sind. Anmerkung: Die Subroutine ist der initiale Teil (vor dem devicename in Klammern) in Freezemon Logmeldungen.
disable: aktivieren/deaktivieren der Freeze-Erkennung
harmony
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: harmony
Definiert einen Satz mit Urlaubsinformationen. Das Modul versucht die
Datei <name>.holiday erst in modpath/FHEM zu
öffnen, und dann in modpath/FHEM/holiday, Letzteres enthält eine
Liste von per FHEM-update verteilten Dateien für diverse
(Bundes-)Länder. Diese Liste wird bei einer Fehlermeldung angezeigt.
Wenn Einträge im der Datei auf den aktuellen Tag passen wird der STATE
der Holiday-Instanz die im list Befehl angezeigt wird
auf die entsprechenden Werte gesetzt. Andernfalls ist der STATE auf den
Text "none" gesetzt.
Meistens wird dieser Wert mit einem Perl Script abgefragt: siehe Value() im
perl Abschnitt oder im globalen Attribut holiday2we. Die Datei wird jede Nacht neu
eingelesen um den Wert des aktuellen Tages zu erzeugen. Auch jeder "get"
Befehl liest die Datei neu ein.
Holiday file Definition:
Die Datei darf Kommentare, beginnend mit #, und Leerzeilen enthalten. Die
entscheidenden Zeilen beginnen mit einer Zahl (Typ) und enthalten durch
Leerzeichen getrennte Wörter, je nach Typ. Die verschiedenen Typen
sind:
2
Oster-abhängiges Datum. Argument: <Tag-Offset>
<Feiertag-Name>.
Der Offset wird vom Oster-Sonntag an gezählt.
Beispiel: 2 1 Oster-Montag
Hinweis: Das Osterdatum kann vorher geprüft werden:
fhem> { join("-", western_easter(2011)) }
5
Datum relativ, Wochentags ein fester Urlaubstag/Feiertag. Argument:
<X> <Wochentag> <Monat> <Tag>
<Feiertag-Name> Hinweis: Da +0 oder -0 als Offset nicht
verboten sind, ist das Verhalten hier nicht definiert, kann sich also
ohne Info ändern;
Beispiel:
5 -1 Wed 11 23 Buss und Bettag (erster Mittwoch vor dem 23. Nov)
5 1 Mon 01 31 Erster Montag in Februar
Set
createPrivateCopy
Falls die Datei in der FHEM/holiday Verzeichnis geöffnet wurde,
dann ist sie nicht beschreibbar, da dieses Verzeichnis mit FHEM
update aktualisiert wird. Mit createPrivateCopy kann eine private Kopie
im FHEM Verzeichnis erstellt werden.
deletePrivateCopy
Entfernt die private Kopie, siehe auch createPrivateCopy
reload
setzt die state, tomorrow und yesterday Readings. Wird nach einem
manuellen Bearbeiten der .holiday Datei benötigt.
Get
get <name> <MM-DD> get <name> yesterday get <name> today get <name> tomorrow get <name> days <offset>
Gibt den Name des Feiertages zum angebenenen Datum zurück oder den
Text none.
Das Buderus KM200, KM100 or KM50 (ab hier als KMxxx beschrieben) ist eine Schnittstelle zwischen der Buderus Zentralheizungssteuerung un dem Internet.
Es wurde entwickelt um den Bewohnern den Zugang zu Ihrem Heizungssystem durch die Buderus App EasyControl zu erlauben..
Darüber hinaus erlaubt es nach vorheriger Freigabe dem Heizungs- bzw. Wartungsbetrieb die Heizungsanlage von aussen zu warten und Werte zu verändern.
Das km200 fhem-Modul erlaubt den Lese-/Schreibzugriff dieser Parameter durch fhem.
Um das KMxxx Gerät mit fhem nutzen zu können, muß zunächst ein privates Passwort mit der Buderus Buderus App EasyControl - App gesetzt werden.
Anmerkung:
Unabhängig der Installationsanleitung des Buderus KMxxx Geräts, sollten die Ports 5222 und 5223 am Router geschlossen bleiben um keinen Zugriff von außen auf das Gerät zu erlauben.
Der Router sollte entsprechend Konfiguriert bzw. so belassen werden.
Wenn der Lese-/Schreibzugriff von aussen gewünscht ist, so sollte man ausschließlich über das fhem-System auf die Zentralheizung zugreifen.
Sobald das Modul in der fhem.cfg definiert ist, wird das Modul versuchen alle bekannten Services abzuklopfen ob diese in der angeschlossenen Konstellation überhaupt vorhanden sind.
Nach diesem Initial-Kontakt unterscheidet das Modul zwisachen einem Satz an Services die sich ständig (dynamisch) ändern (z.B.: Vorlauftemperatur) sowie sich nicht ständig (statisch) ändernden Werten (z.B.: Firmware Version).
Diese beiden Sätze an Services können mir einem individuellen Abfrageintervall versehen werden. Siehe Attributes
Eine gültige IPv4 Adresse des KM200. Eventuell im Router nachschauen welche DHCP - Addresse dem KM200/KM50 vergeben wurde.
<GatewayPassword> :
Das gateway Passwort, welches auf dem Typenschild des KM200/KM50 zu finden ist.
<PrivatePassword> :
Das private Passwort, welches durch den User mit Hilfe der EasyControl - App vergeben wurde.
Set
Die set Funktion ändert die Werte der Services welche das Flag "schreibbar" innerhalb der KMxxx Service Struktur besitzen.
Die meisten dieser beschreibbaren Werte haben eine exklusive Liste von möglichen Werten innerhalb dessen sich der neue Wert bewegen muss.
Andere Fließkomma Werte haben einen maximum und minumum Wert, in dessen sich der neue Wert bewegen muß.
set <service> <value>
<service> :
Der Name des Service welcher gesetzt werden soll. Z.B.: "/heatingCircuits/hc1/operationMode"
<value> :
Ein gültiger Wert für diesen Service.
Get
Die get-Funktion ist in der Lage einen Wert eines Service innerhalb der KMxxx Service Struktur auszulesen.
Die zusätzliche Liste von erlaubten Werten oder der Wertebereich zwischen Minimum und Maximum wird nicht zurück gegeben.
get <service> <option>
<service> :
Der Name des Service welcher ausgelesen werden soll. Z.B.: "/heatingCircuits/hc1/operationMode"
Es gibt nur den Wert, aber nicht die Werteliste oder den möglichen Wertebereich zurück.
<option> :
Das optionelle Argument für Ausgabe des get-Befehls Z.B.: "json"
Folgende Optionen sind verfügbar:
json - Gibt anstelle des Wertes, die gesamte Json Antwort des KMxxx als String zurück
Attributes
Die folgenden Modul-spezifischen Attribute können neben den bekannten globalen Attributen gesetzt werden wie z.B.: room.
IntervalDynVal :
Ein gültiges Abfrageintervall für die sich ständig verändernden - dynamischen Werte der KMxxx Services. Der Wert muss größer gleich >=20s sein um dem Modul genügend Zeit einzuräumen eine volle Abfrage auszuführen bevor die nächste Abfrage startet.
Der Default-Wert ist 300s.
PollingTimeout :
Ein gültiger Zeitwert um dem KMxxx genügend Zeit zur Antwort einzelner Werte einzuräumen. Normalerweise braucht dieser Wert nicht verändert werden, muss jedoch im Falle eines langsamen Netzwerks erhöht werden
Der Default-Wert ist 5s.
DoNotPoll :
Eine durch Leerzeichen (Blank) getrennte Liste von Services welche von der Abfrage aufgrund irrelevanter Werte oder fhem - Abstürzen ausgenommen werden sollen.
Die Liste kann auch Hierarchien von services enthalten. Dies bedeutet, das alle Services unterhalb dieses Services ebenfalls gelöscht werden.
Der Default Wert ist (empty) somit werden alle bekannten Services abgefragt.
ReadBackDelay :
Ein gültiger Zeitwert in Mllisekunden [ms] für die Pause zwischen schreiben und zurücklesen des Wertes durch den "set" - Befehl. Der Wert muss >=0ms sein.
Der Default-Wert ist 100 = 100ms = 0,1s.
disable :
Deaktiviert das Device und löscht alle bestehenden Readings.
Der Default-Wert ist 0 = aktiviert
logProxy
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: logProxy
mailcheck
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: mailcheck
Jedes monitoring verfügt über eine warning- und eine error-Liste,
welche als Readings gespeichert werden.
Beim auftreten eines definierten add-events wird das Gerät nach einer
vorgegeben Zeit auf die warning-Liste gesetzt.
Nach einer weiteren vorgegeben Zeit wird das Gerät von der
warning-Liste gelöscht und auf die error-Liste gesetzt.
Beim auftreten eines definierten remove-events wird das Gerät von
beiden Listen gelöscht und noch laufende Timer abgebrochen.
Hiermit lassen sich auf einfache Weise Sammelmeldungen erstellen und durch
zwei Attribute formatiert ausgeben.
Folgende Anwendungen sind möglich und werden
unten beschrieben:
geöffnete Fenster
Batterie Warnungen
Activity Monitor
regelmäßige Wartungsarbeiten
(z.B. Tischwasserfilter wechseln oder Räume putzen)
Das monitor sendet selbst keine Benachrichtung, hierfür ist ein notify
oder DOIF notwendig, welches auf das Event "<monitoring-name> error
add: <name>" reagiert und dann den Rückgabewert von
"get <monitoring-name> default" versendet.
Define
define <name> mointoring <add-event> [<remove-event>]
Die Syntax für <add-event> und <remove-event> ist die
gleiche wie für das Suchmuster von
notify (Gerätename
oder Gerätename:Event).
Ist nur ein <add-event> definiert wird beim auftreten das
Gerät von beiden Listen gelöscht und die Timer für warning
und error werden gestartet.
Set
active
Es passieren zwei Dinge:
1. Stellt noch ausstehende Timer wieder her, bzw. setzt die Geräte
sofort auf die entsprechende Liste, falls der Zeitpunkt in der
Vergangenheit liegt.
2. Führt die unter dem Attribut "setActiveFunc" angegeben Befehle
aus.
clear (warning|error|all)
Entfernt alle Geräte von der angegeben Liste und bricht für
diese Liste laufende Timer ab. Bei "all" werden alle Geräte von
beiden Listen entfernt und alle laufenden Timer abgebrochen.
errorAdd <name>
Fügt <name> zu der error-Liste hinzu.
errorRemove <name>
Entfernt <name> von der error-Liste.
inactive
Deaktiviert das monitoring. Beachte den leichten semantischen
Unterschied zum disable Attribut: "set inactive" wird bei einem
shutdown automatisch in fhem.state gespeichert, es ist kein save
notwendig.
warningAdd <name>
Fügt <name> zu der warning-Liste hinzu.
warningRemove <name>
Entfernt <name> von der warning-Liste.
Get
all
Gibt, durch eine Leerzeile getrennt, die error- und warning-Liste
zurück.
Die Formatierung kann dabei mit den Attributen "errorReturn" und
"warningReturn" eingestellt werden.
default
Der "default" Wert kann in dem Attribut "getDefault" festgelegt werden
und ist dazu gedacht um die Konfiguration für den
Rückgabewert im monitoring Gerät zu belassen. Wird nichts
angegeben wird "all" verwendent.
error
Gibt die error-Liste zurück.
Die Formatierung kann dabei mit dem Attribut "errorReturn" eingestellt
werden.
warning
Gibt die warning-Liste zurück.
Die Formatierung kann dabei mit dem Attribut "warningReturn"
eingestellt werden.
Readings
allCount
Zeigt die Anzahl der Geräte in der warning- und error-Liste an.
error
Durch Komma getrennte Liste von Geräten.
errorAdd_<name>
Zeigt den Zeitpunkt an wann das Gerät auf die error-Liste gesetzt
wird.
errorCount
Zeigt die Anzahl der Geräte in der error-Liste an.
state
Zeigt den Status (active, inactive oder disabled) an. Bei "active" wird
angezeigt welches Gerät zu welcher Liste hinzugefügt bzw. von welcher
Liste entfernt wurde.
warning
Durch Komma getrennte Liste von Geräten.
warningAdd_<name>
Zeigt den Zeitpunkt an wann das Gerät auf die warning-Liste
gesetzt wird.
warningCount
Zeigt die Anzahl der Geräte in der warning-Liste an.
blacklist
Durch Leerzeichen getrennte Liste von devspecs die ignoriert werden.
Wenn das Attribut gesetzt wird werden alle Geräte die durch die
devspecs definiert sind von beiden Listen gelöscht.
disable (1|0)
1: Deaktiviert das monitoring.
0: siehe "set active"
errorFuncAdd {<perl code>}
In dieser Funktion stehen die folgende Variablen zur Verfügung:
$name
Name des Event auslösenden Gerätes
$event
Beinhaltet das komplette Event, z.B.
measured-temp: 21.7 (Celsius)
$addMatch
Hat den Wert 1, falls das add-event zutrifft
$removeMatch
Hat den Wert 1, falls das remove-event zutrifft
$SELF
Eigenname des monitoring
Gibt die Funktion eine 1 zurück, wird das Gerät, nach der
Wartezeit, auf die error-Liste gesetzt.
Wenn das Attribut nicht gesetzt ist wird auf $addMatch
geprüft.
errorFuncRemove {<perl code>}
In dieser Funktion stehen die selben Variablen wie bei "errorFuncAdd"
zur Verfügung.
Gibt die Funktion eine 1 zurück, wird das Gerät von der
error-Liste entfernt und noch laufende Timer werden abgebrochen.
Wenn das Attribut nicht gesetzt ist wird bei einer DEF mit
<remove-event> auf $removeMatch
geprüft und bei einer DEF ohne <remove-event>
auf errorFuncAdd.
errorWait <perl code>
Wartezeit bis das Gerät auf die error-Liste gesetzt wird.
errorReturn {<perl code>}
In diesem Attribut stehen folgende Variablen zur Verfügung:
@errors
Array mit allen Geräten auf der error-Liste.
@warnings
Array mit allen Geräten auf der warning-Liste.
$SELF
Eigenname des monitoring
Mit diesem Attribut kann die Ausgabe die mit "get <name> error"
erzeugt wird angepasst werden.
getDefault (all|error|warning)
Mit diesem Attribut kann festgelegt werden welche Liste/n mit "get
<name> default" zurück gegeben wird/werden. Wenn das
Attribut nicht gesetzt ist wird "all" verwendet.
setActiveFunc <Anweisung>
Die Anweisung ist einer der FHEM
Befehlstypen und wird beim definieren des
monitoring oder bei "set active" ausgeführt.
Für eine Batterie Meldung kann "trigger battery=low
battery:low" sinnvoll sein.
warningFuncAdd {<perl code>}
Wie errorFuncAdd, nur für die warning-Liste.
warningFuncRemove {<perl code>}
Wie errorFuncRemove, nur für die warning-Liste.
warningWait <perl code>
Wie errorWait, nur für die warning-Liste.
warningReturn {<perl code>}
Wie errorReturn, nur für die warning-Liste.
whitelist {<perl code>}
Durch Leerzeichen getrennte Liste von devspecs die erlaubt sind
werden.
Wenn das Attribut gesetzt wird werden alle Geräte die nicht durch die
devspecs definiert sind von beiden Listen gelöscht.
defmod Fenster_monitoring monitoring .*:(open|tilted) .*:closed
attr Fenster_monitoring errorReturn {return unless(@errors);;\
$_ = AttrVal($_, "alias", $_) foreach(@errors);;\
return("Das Fenster \"$errors[0]\" ist schon länger geöffnet.") if(int(@errors) == 1);;\
@errors = sort {lc($a) cmp lc($b)} @errors;;\
return(join("\n - ", "Die folgenden ".@errors." Fenster sind schon länger geöffnet:", @errors))\
}
attr Fenster_monitoring errorWait {AttrVal($name, "winOpenTimer", 60*10)}
attr Fenster_monitoring warningReturn {return unless(@warnings);;\
$_ = AttrVal($_, "alias", $_) foreach(@warnings);;\
return("Das Fenster \"$warnings[0]\" ist seit kurzem geöffnet.") if(int(@warnings) == 1);;\
@warnings = sort {lc($a) cmp lc($b)} @warnings;;\
return(join("\n - ", "Die folgenden ".@warnings." Fenster sind seit kurzem geöffnet:", @warnings))\
}
Sobald ein Gerät ein "open" oder "tilded" Event auslöst wird
das Gerät auf die warning-Liste gesetzt und es wird ein Timer
gestartet nach dessen Ablauf das Gerät von der warning- auf die
error-Liste verschoben wird. Die Wartezeit kann für jedes
Gerät per userattr "winOpenTimer" festgelegt werden. Der
Vorgabewert sind 10 Minuten.
Sobald ein Gerät ein "closed" Event auslöst wird das
Gerät von beiden Listen gelöscht und noch laufende Timer
werden gestoppt.
Batterieüberwachung
defmod Batterie_monitoring monitoring .*:battery:.low .*:battery:.ok
attr Batterie_monitoring errorReturn {return unless(@errors);;\
$_ = AttrVal($_, "alias", $_) foreach(@errors);;\
return("Bei dem Gerät \"$errors[0]\" muss die Batterie gewechselt werden.") if(int(@errors) == 1);;\
@errors = sort {lc($a) cmp lc($b)} @errors;;\
return(join("\n - ", "Die folgenden ".@errors." Geräten muss die Batterie gewechselt werden:", @errors))\
}
attr Batterie_monitoring errorWait 60*60*24*14
attr Batterie_monitoring warningReturn {return unless(@warnings);;\
$_ = AttrVal($_, "alias", $_) foreach(@warnings);;\
return("Bei dem Gerät \"$warnings[0]\" muss die Batterie demnächst gewechselt werden.") if(int(@warnings) == 1);;\
@warnings = sort {lc($a) cmp lc($b)} @warnings;;\
return(join("\n - ", "Die folgenden ".@warnings." Geräten muss die Batterie demnächst gewechselt werden:", @warnings))\
}
Sobald ein Gerät ein "battery: low" Event auslöst wird das
Gerät auf die warning-Liste gesetzt und es wird ein Timer
gestartet nach dessen Ablauf das Gerät von der warning- auf die
error-Liste verschoben wird. Die Wartezeit ist auf 14 Tage
eingestellt.
Sobald ein Gerät ein "battery: ok" Event auslöst wird das
Gerät von beiden Listen gelöscht und noch laufende Timer
werden gestoppt.
Activity Monitor
defmod Activity_monitoring monitoring .*:.*
attr Activity_monitoring errorReturn {return unless(@errors);;\
$_ = AttrVal($_, "alias", $_) foreach(@errors);;\
return("Das Gerät \"$errors[0]\" hat sich seit mehr als 24 Stunden nicht mehr gemeldet.") if(int(@errors) == 1);;\
@errors = sort {lc($a) cmp lc($b)} @errors;;\
return(join("\n - ", "Die folgenden ".@errors." Geräten haben sich seit mehr als 24 Stunden nicht mehr gemeldet:", @errors))\
}
attr Activity_monitoring errorWait 60*60*24
attr Activity_monitoring warningReturn {return unless(@warnings);;\
$_ = AttrVal($_, "alias", $_) foreach(@warnings);;\
return("Das Gerät \"$warnings[0]\" hat sich seit mehr als 12 Stunden nicht mehr gemeldet.") if(int(@warnings) == 1);;\
@warnings = sort {lc($a) cmp lc($b)} @warnings;;\
return(join("\n - ", "Die folgenden ".@warnings." Geräten haben sich seit mehr als 12 Stunden nicht mehr gemeldet:", @warnings))\
}
attr Activity_monitoring warningWait 60*60*12
Geräte werden erst überwacht, wenn sie mindestens ein Event
ausgelöst haben. Sollte das Gerät in 12 Stunden kein weiterer
Event auslösen, wird es auf die warning-Liste gesetzt. Sollte das
Gerät in 24 Stunden kein weiteres Event auslösen, wird es von
der warning- auf die error-Liste verschoben.
Hinweis: Es ist empfehlenswert das whitelist Attribut zu verwenden.
Hierbei wird ein DashButton genutzt um
FHEM mitzuteilen, dass der Wasserfilter gewechselt wurde.
Nach 30 Tagen wird der DashButton auf die error-Liste gesetzt.
Hierbei werden mehrere DashButton
genutzt um FHEM mitzuteilen, dass die Räume geputzt wurden.
Nach 7 Tagen wird der Raum auf die error-Liste gesetzt.
Der Raum Name ist hierbei jedoch nicht der Geräte-Name, sondern der
Readings-Name und wird in dem errorFuncAdd-Attribut
geändert.
Hierbei wird ein HourCounter genutzt
um die Betriebsstunden eine Beamer zu erfassen und ein
DashButton um FHEM mitzuteilen, dass der
Filter gereinigt wurde.
Wurde der Filter länger als 200 Betriebsstunden nicht gereinigt
wird das Gerät auf die error-Liste gesetzt.
Wurde die Reinigung mit dem DashButton quittiert wird das Gerät
von der error-Liste entfernt und der aktuelle Betriebsstunden-Stand in
dem HourCounter Gerät gespeichert.
Stellt globale Einstellungen und Tools für das FHEM Kommando msg bereit.
Ein Device mit dem Namen globalMsg wird automatisch bei der ersten Benutzung des msg Kommandos angelegt, sofern kein msgConfig Device gefunden wurde.
Der Device Name kann anschließend beliebig umbenannt und umkonfiguriert werden.
Define
define <name> msgConfig
Set
addLocation
Erstellt auf einfache Weise ein Dummy Device basierend auf dem übergebenen Lokationsnamen. Es wird for die lokations-basierte Verwendung mit dem msg-Kommando vorkonfiguriert. Das Dummy Device wird automatisch zum Attribut msgLocationDevs hinzugefügt. Anschließend ist eine weitere Konfiguration über die Attribute msgContact* oder msgRecipient* notwendig, die auf entsprechende Gateway Devices verweisen, die an dieser Lokation stehen.
Mit msgDialog können Dialoge für Sofortnachrichten über
TelegramBot, Jabber und yowsup (WhatsApp) definiert werden.
Die Kommunikation erfolgt über den msg Befehl. Daher muss ein Gerät
vom Typ msgConfig zuerst definiert werden.
Für jeden Dialog kann festgelegt werden welche Person dazu berechtigt
ist. Dazu sind Geräte vom Typ ROOMMATE oder GUEST mit definiertem
msgContactPush Attribut erforderlich. Es ist darauf zu achten, dass das
Reading fhemMsgRcvPush ein Event erzeugt.
Vorraussetzungen:
Das Perl-Modul "JSON" wird benötigt.
Unter Debian (basierten) System, kann dies mittels
"apt-get install libjson-perl" installiert werden.
Define
define <name> msgDialog <JSON>
Aufgrunder komplexität ist es am einfachsten erst einen leeren Dialog
zu definieren.
define <name> msgDialog {}
Anschließend die DEF dann in der Detail-Ansicht bearbeiten.
TRIGGER
Kann ein beliebiger Text sein. Es wird geprüft ob die eingehende
Nachricht damit übereinstimmt. Falls ja, wird der Dialog an dieser
Stelle fortgesetzt.
match
Wenn nicht nur genau eine Nachricht zugelassen werden soll, kann noch
eine regex angegeben werden. Die regex muss auf die gesamte eingehnde
Nachricht zutreffen.
setOnly
Kann optional auf true oder false gestellt werden. In beiden
fällen wird der TRIGGER dann nicht bei "get <name> trigger"
zurück gegeben.
Wenn setOnly auf true gestellt wird kann der Dialog an dieser Stelle
nicht durch eingehnde Nachrichten ausgelöst werden, sondern nur
über "set <name> say TRIGGER".
Dies kann dazu genutzt werden um einen Dialog von FHEM zu aus zu
initieren.
commands
Kann einen einzelnen oder mehrere Befehle enthalten:
Bei mehrstufigen Dialogen wird diese Struktur ineinander verschachtelt
angegeben.
Es werden Variablen und unter dem Attribut evalSpecials definierte
Platzhalter ausgewertet.
Variablen:
$SELF
Eigenname des msgDialog
$message
eingegangene Nachricht
$recipient
Name des Dialogpartners
Set
reset
Setzt den Dialog für alle Benutzer zurück.
say [@<recipient1>[,<recipient2>,...]]
<TRIGGER>[|<NEXT TRIGGER>|...]
Der Dialog wird für alle angegeben Empänger an der angegeben
Stelle fortgeführt.
Sind keine Empfänger angegeben wird der Dialog für alle unter
dem Attribut allowed angegebenen Empfänger fortgeführt.
updateAllowed
Aktualisiert die Auswahl für das Attribut allowed.
Get
trigger
Listet alle TRIGGER der ersten Ebene auf bei denen nicht setOnly
angegeben ist.
Attribute
allowed
Liste mit allen RESIDENTS und ROOMMATE die für diesen Dialog
berechtigt sind.
evalSpecials key1=value1 key2=value2 ...
Leerzeichen getrennte Liste von Name=Wert Paaren.
Wert kann Leerzeichen enthalten, falls es in "" oder {} eingeschlossen
ist.
Wert wird als
perl-Ausdruck ausgewertet, falls es in {} eingeschlossen ist.
In der DEF werden %Name% Zeichenketten durch den zugehörigen Wert
ersetzt.
Dieses Attribut ist als "msgDialog_evalSpecials" im msgConfig Gerät
vorhanden.
Wenn der selbe Name im msgConfig und msgDialog definiert wurde, wird der
Wert aus msgDialog verwendet.
msgCommand <command>
Befehl der zum Versenden einer Nachricht verwendet wird.
Die Vorgabe ist
"msg push \@$recipients $message"
Dieses Attribut ist als "msgDialog_msgCommand" im msgConfig Gerät
vorhanden.
Reading
$recipient_history
Durch | getrennte Liste von TRIGGERN um den aktuellen Zustand des Dialogs
zu sichern.
Für jeden Dialogpartner wird ein Readings angelegt. Wenn der Dialog
beendet ist wird das Reading zurückgesetzt.
Hinweise zur Benutzung mit Telegram:
Es kann notwendig sein, dass im TelegramBot das Attribut "utf8specials" auf
1 gesetzt wird, damit Nachrichten mit Umlauten gesendert werden.
Bei dem msg Befehl kann der TelegramBot_MTYPE angegeben werden. Die Vorgabe
ist message. Durch den Wert queryInline lässt sich ein inline Keyboard
erzeugen.
Hinweise zur Benutzung mit Jabber:
Bei dem msg Befehl kann der Jabber_MTYPE angegeben werden. Die Vorgabe ist
leer. Durch den Wert otr lässt sich eine OTR Nachricht versenden.
Alle Beispiele sind für die Kommunikation über den TelegramBot
ausgelegt. Bei der Verwendung von Jabber oder yowsup müssen diese
gegebenenfalls angepasst werden.
Es wird davon ausgegangen, dass im msgConfig Gerät das evalSpecials
"me" mit einem Namen gepflegt ist, über welchen der Bot angesprochen
wird.
Meta Dialog zur auflistung aller Berechtigten Dialoge:
Führt eine oder mehrere Anweisungen aus, wenn ein Event generiert
wurde, was dem <Suchmuster> (Gerätename oder
Gerätename:Event) entspricht.
Die Anweisung ist einer der FHEM Befehlstypen.
Zum Test dient das trigger-Kommando.
<Suchmuster> ist entweder der Name des
auslösenden ("triggernden") Gerätes oder die Kombination aus
Gerät und auslösendem Ereignis (Event)
Gerätename:Event.
Das <Suchmuster> muss exakt (!)
entweder dem Gerätenamen entsprechen oder der Zusammenfügung
aus Gerätename:Event. Events lassen sich mit "inform" in Telnet
oder durch Beobachtung des "Event-Monitors" in FHEMWEB ermitteln.
In der Anweisung von Notify kann das auslösende Ereignis (Event)
genutzt werden:
Die Anweisung $EVENT wird das komplette Ereignis (Event)
beinhalten, z.B. measured-temp: 21.7 (Celsius)
$EVTPART0,$EVTPART1,$EVTPART2,etc enthalten die durch Leerzeichen
getrennten Teile des Events der Reihe nach (im Beispiel also
$EVTPART0="measured-temp:", $EVTPART1="21.7",
$EVTPART2="(Celsius)". Diese Daten sind verfügbar
als lokale Variablen in Perl, als Umgebungs-Variablen für
Shell-Scripts, und werden als Text ausgetauscht in
FHEM-Kommandos.
$NAME und $TYPE enthalten den Namen bzw. Typ des Ereignis
auslösenden Gerätes, z.B. myFht und FHT
Achtung: Folgende Vorgehensweise ist abgekündigt, funktioniert
bis featurelevel 5.6 und wird in einem zukünftigen Release von
FHEM nicht mehr unterstützt. Wenn keine der oben genannten
Variablen ($NAME/$EVENT/usw.) in der Anweisung gefunden wird, werden
Platzhalter ersetzt.
Das Zeichen % wird ersetzt mit dem empfangenen
Ereignis (Event), z.B. mit on oder off oder
measured-temp: 21.7 (Celsius).
Das Zeichen @ wird ersetzt durch den
Gerätenamen.
Um % oder @ im Text selbst benutzen zu können, müssen
sie verdoppelt werden (%% oder @@).
Anstelle von % und @, können die
Parameter %EVENT (funktionsgleich mit %),
%NAME (funktionsgleich mit @) und
%TYPE (enthält den Typ des Gerätes, z.B.
FHT) benutzt werden. Die von Leerzeichen unterbrochenen
Teile eines Ereignisses (Event) sind verfügbar als %EVTPART0,
%EVTPART1, usw. Ein einzeln stehendes % verliert seine
oben beschriebene Bedeutung, falls auch nur einer dieser Parameter
in der Definition auftaucht.
Folgende spezielle Ereignisse werden für das Gerät "global"
erzeugt:
INITIALIZED sobald die Initialization vollständig ist.
REREADCFG nachdem die Konfiguration erneut eingelesen wurde.
SAVE bevor die Konfiguration gespeichert wird.
SHUTDOWN bevor FHEM heruntergefahren wird.
DEFINED <devname> nach dem Definieren eines
Gerätes.
DELETED <devname> nach dem Löschen eines
Gerätes.
RENAMED <old> <new> nach dem Umbenennen eines
Gerätes.
UNDEFINED <defspec> beim Auftreten einer Nachricht für
ein undefiniertes Gerät.
Notify kann dazu benutzt werden, um Makros für eine manuelle
Ausführung zu speichern. Mit einem trigger Kommando können solche Makros dann
ausgeführt werden. Z.B. fhem> define MyMacro notify
MyMacro { Log 1, "Hello"} fhem> trigger
MyMacro
Set
addRegexpPart <device> <regexp>
Fügt ein regexp Teil hinzu, der als device:regexp aufgebaut ist.
Die Teile werden nach Regexp-Regeln mit | getrennt. Achtung: durch
hinzufügen können manuell erzeugte Regexps ungültig
werden.
removeRegexpPart <re>
Entfernt ein regexp Teil. Die Inkonsistenz von addRegexpPart /
removeRegexPart-Argumenten hat seinen Ursprung in der Wiederverwendung
von Javascript-Funktionen.
inactive
Deaktiviert das entsprechende Gerät. Beachte den leichten
semantischen Unterschied zum disable Attribut: "set inactive"
wird bei einem shutdown automatisch in fhem.state gespeichert, es ist
kein save notwendig.
Der Einsatzzweck sind Skripte, um das notify temporär zu
deaktivieren.
Das gleichzeitige Verwenden des disable Attributes wird nicht empfohlen.
active
Aktiviert das entsprechende Gerät, siehe inactive.
addStateEvent
Das mit dem state Reading verknüpfte Event ist speziell, da das
dazugehörige Prefix "state: " entfernt wird, d.h. $EVENT ist nicht
"state: on", sondern nur "on". In manchen Fällen ist es aber
erwünscht das unmodifizierte Event zu bekommen, d.h. wo "state: "
nicht entfernt ist. Für diese Fälle sollte addStateEvent auf 1
gesetzt werden, die Voreinstellung ist 0 (deaktiviert).
Achtung:
dieses Attribut muss beim Empfänger (notify, FileLog, etc)
gesetzt werden.
dieses Attribut zeigt nur für solche Geräte-Events eine
Wirkung, die readingFnAttributes
unterstützen.
forwardReturnValue
Rückgabe der Werte eines ausgeführten Kommandos an den
Aufrufer. Die Voreinstellung ist 0 (ausgeschaltet), um weniger
Meldungen im Log zu haben.
ignoreRegexp regexp
Es ist nicht immer einfach ein Regexp zu bauen, was etwas _nicht_
matcht. Dieses Attribu hilft in diesen Fällen: das Event wird
ignoriert, falls den angegebenen Regexp. Syntax ist gleich wie in der
Definition.
readLog
Das notify wird für Meldungen, die im FHEM-Log erscheinen,
ausgegeführt. Das "Event-Generierende-Gerät" wird auf dem
notify selbst gesetzt. Z.Bsp. kann man mit folgendem notify auf die
Startup Meldung reagieren:
define n notify n:.*Server.started.* { Log 1, "Wirklich" }
attr n readLog
perlSyntaxCheck
nach setzen des global Attributes perlSyntaxCheck wird eine
Syntax-Prüfung der Anweisung durchgeführt bei jeder
Änderung (define oder modify), falls die Anweisung Perl ist, und
FHEM bereits gestartet ist.
panStamp
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: panStamp
pilight
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: pilight
pilight_contact
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: pilight_contact
pilight_ctrl
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: pilight_ctrl
pilight_dimmer
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: pilight_dimmer
pilight_raw
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: pilight_raw
pilight_smoke
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: pilight_smoke
pilight_switch
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: pilight_switch
pilight_temp
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: pilight_temp
ping
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: ping
plex
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: plex
powerMap ermittelt die aktuelle Leistungsaufnahme eines Geräts und
berechnet den Energieverbrauch bei Änderung oder in einem
regelmäßigen Intervall.
Diese neuen Werte können genutzt werden, um den Stromverbrauch für
Geräte ohne Zähler (z.B. Kühlschrank, Beleuchtung oder
FHEM-Server) zu erfassen und mit dem Modul ElectricityCalculator weiter
zu verarbeiten.
Define
define <name> powerMap
Es kann immer nur eine powerMap Instanz definiert sein.
Set
assign <devspec>
Weist einem oder mehreren Geräten vordefinierte powerMap Attribute zu,
um diese anschließend anpassen zu können.
Get
devices
Listet alle Geräte auf, die das Attribut 'powerMap' gesetzt haben.
Readings
Gerätespezifische Readings:
pM_energy
Ein Zähler für die bisher bezogene Energie in Wh.
Hinweis: Für eine korrekte Berechnung darf das Attribut
timestamp-on-change-reading nicht für das Reading
pM_energy gesetzt sein!
pM_energy_begin
Unix Timestamp, an dem die Aufzeichnung begonnen wurde und das
Gerät erstmalig Energie verbraucht hat.
pM_consumption
Die aktuelle Leistungsaufnahme des Gerätes in W.
Attribute
disable 1
Es werden keine Readings mehr durch das Modul erzeugt oder berechnet.
powerMap_eventChainWarnOnly <1>
Sofern gesetzt, wird die Ereigniskette NICHT automatisch repariert, falls
Readings zwar als für powerMap notwendig identifiziert wurden, ihre
Events jedoch derzeit dadurch unterdrückt werden, weil sie nicht in
einem der Attribute event-on-change-reading oder event-on-update-reading
enthalten sind. Stattdessen ist ein manueller Eingriff erforderlich.
powerMap_interval <seconds>
Intervall in Sekunden, in dem neue Werte für die Energie berechnet
werden.
Der Vorgabewert ist 900 Sekunden.
powerMap_noEnergy 1
Für das Gerät wird kein Energieverbrauch berechnet.
powerMap_noPower 1
Für das Gerät wird keine Leistungsaufnahme abgeleitet und
daher auch kein Energieverbrauch berechnet.
powerMap_rname_E
Definiert den Reading Namen, in dem der Zähler für die bisher
bezogene Energie gespeichert wird.
Der Vorgabewert ist 'pM_energy'.
powerMap_rname_P
Definiert den Reading Namen, in dem die aktuelle Leistungsaufnahme
des Gerätes gespeichert wird.
Der Vorgabewert ist 'pM_consumption'.
(gerätespezifisch)
Ein Hash mit den Event(=Reading) Namen und seinen möglichen Werten, um diesen
die dazugehörige Leistungsaufnahme zuzuordnen.
Bei dimmbaren Geräten wird für die Zwischenschritte der Wert
durch eine lineare Interpolation ermittelt, so dass mindestens zwei Zahlenwerte ausreichen.
Aus Textwerten, die eine Zahl enthalten, wird automatisch die Zahl extrahiert und
für die Interpolation verwendet (Beispiel: dim50% wird automatisch als 50 interpretiert).
Außerdem werden "off" und "on" automatisch als 0 respektive 100 interpretiert.
Nicht interpretierbare Werte führen dazu, dass eine Leistungsaufnahme von 0 angenommen wird.
Explizit in powerMap enthaltene Definitionen haben immer vorrang.
Für den Fall, dass mehrere Verbrauchswerte addiert werden sollen, kann der Name von anderen
Readings direkt hinter dem eigentliche Wert mit einem Komma abgetrennt angegeben werden.
Der aktuelle Status dieses Readings wird dann bei der Berechnung des Gesamtverbrauchs ebenfalls
ber&uumL;cksichtigt. Sollen alle in powerMap bekannten Readings berücksichtigt werden, kann
auch einfach ein * angegeben werden.
<device> kann die Form INTERNAL=VALUE haben, wobei INTERNAL der Name eines internen Wertes ist und VALUE ein Regex.
<device> kann die Form ATTRIBUTE&VALUE haben, wobei ATTRIBUTE der Name eines Attributs ist und VALUE ein Regex.
<device> kann die Form <STRING> oder <{perl}> haben, wobei STRING oder die von Perl zurückgegebene Zeichenfolge als Zeile in die Readings List eingefügt wird. Wird übersprungen, wenn STRING undef ist.
<device> kann ein devspec sein (siehe devspec) mit mindestens einem FILTER-Ausdruck sein.
Wenn Regex eine Komma separarierte Liste ist, werden die Reading-Values in einer einzelnen Zeile angezeigt.
Wenn Regex mit einem "+" beginnt, wird es mit den internen Werten (Internals) des Geräts anstelle der Readings verglichen.
Wenn Regex mit einem '?' beginnt, wird es mit den Attributen des Geräts verglichen und nicht mit den Werten (Readings) verglichen.
Wenn Regex mit einem '!' beginnt, wird die Anzeige des Wertes erzwungen, auch wenn kein Reading mit diesem Namen verfügbar ist.
Wenn Regex mit einem '$' beginnt, ist die Berechnung mit Wert-Spalten und Zeilen möglich.
Die folgenden "set magic" Präfixe und Suffixe können mit Regex verwendet werden:
Sie können anstelle von + und ? ein Präfix i :, r: oder a: verwenden. Analog zur devspec-Filterung.
Der Suffix :d ruft die erste Nummer ab.
Der Suffix :i ruft den ganzzahligen Teil der ersten Zahl ab.
Der Suffix :r<n> ruft die erste Zahl ab und rundet sie auf <n> Nachkommastellen ab. Wenn <n> fehlt, wird es auf eine Dezimalstelle gerundet.
Der Suffix :t gibt den Zeitstempel zurück (funktioniert nur mit Readings).
Der Suffix :sec gibt die Anzahl der Sekunden seit dem das Reading gesetzt wurde zurück. Wahrscheinlich nicht nützlich mit readingsGroups.
Regex kann von der Form <regex>@device sein, um Readings von einem anderen Gerät zu verwenden.
Wenn der Gerätename mit einem '!' beginnt, wird die Anzeige deaktiviert. Verwenden Sie in Verbindung mit ! den Reading-Name.
Regex kann die Form <regex>@{perl} haben, um Readings von einem anderen Gerät zu verwenden.
Regex kann von der Form <STRING> oder <{perl}[@readings]> sein, wobei STRING oder die von Perl zurückgegebene Zeichenfolge als Reading eingefügt wird, oder:
das Element wird übersprungen, wenn STRING undef ist
wenn STRING br ist, wird eine neue Zeile gestartet
wenn STRING hr ist, wird eine horizontale Linie eingefügt
wenn STRING tfoot ist, wird der Tabellenfuß gestartet
wenn STRING die Form hat, %ICON[%CMD] ICON wird als Name eines Symbols anstelle von Text und CMD als der Befehl verwendet, der ausgeführt werden soll, wenn auf das Symbol geklickt wird. Siehe auch die Befehlsattribute.
Wenn Readings aktualisiert werden, wird der Perl-Ausdruck bei Longpoll-Aktualisierungen erneut ausgewertet.
Wenn der erste Regex '@<index>' ist, gibt es den Index der folgenden Regex an, mit dem die Messwerte gruppiert werden sollen. Wenn Erfassungsgruppen verwendet werden, können sie durch #<number> refferenziert werden. z.Bsp:
Für interne Werte (Internals) und Attribute ist longpoll update nicht möglich. Aktualisieren Sie die Seite, um die Werte zu aktualisieren.
Der Ausdruck <{perl}> ist auf Ausdrücke ohne Leerzeichen beschränkt. Es ist am besten, eine kleine Sub in 99_myUtils.pm aufzurufen, anstatt einen complexen Ausdruck im Define zu haben.
hide
Alle sichtbaren Instanzen dieser ReadingsGroup werden ausgeblendet
show
Zeigt alle sichtbaren Instanzen dieser ReadingsGroup an
toggle
Schaltet den versteckten / angezeigten Zustand aller sichtbaren Instanzen dieser ReadingsGroup an.
toggle2
schaltet den erweiterten / kollabierten Zustand aller sichtbaren Instanzen dieser ReadingsGroup an.
Get
Attribute
alwaysTrigger
1 -> alwaysTrigger Ereignisse aktualisieren auch wenn nicht sichtbar.
2 -> trigger Ereignisse für berechnete Werte.
disable
1 -> Deaktivieren der Benachrichtigung Verarbeitung und Longpoll-Updates. Hinweis: Dadurch wird auch die Umbenennung und Löschbehandlung deaktiviert.
2 -> Deaktivieren der HTML-Tabellenerstellung
3 -> Deaktivieren der HTML-Erstellung vollständig
sortDevices
1 -> Sortieren der Geräteliste alphabetisch. Verwenden Sie das erste von sortby oder alias oder name, das für jedes Gerät definiert ist.
noheading
Wenn sie auf 1 gesetzt ist, hat die Readings-Tabelle keine Überschrift.
nolinks
Deaktiviert die HTML-Links von der Überschrift und den Readings-Namen.
nostate
Wenn der Wert 1 ist, wird der Status nicht berücksichtigt.
nonames
Wenn der Wert auf 1 gesetzt ist, wird der Readings-Name / Zeilentitel nicht angezeigt.
notime
Wenn der Wert auf 1 gesetzt, wird der Readings-Timestamp nicht angezeigt.
mapping
Kann ein einfacher String oder ein in {} eingeschlossener Perl-Ausdruck sein, der einen Hash zurückgibt, der den Reading-Name dem angezeigten Namen zuordnet.
Der Schlüssel kann entweder der Name des Readings oder <device>.<reading> oder <reading>.<value> oder <device>.<reading>.<value> sein.
%DEVICE, %ALIAS, %ROOM, %GROUP, %ROW und %READING werden durch den Gerätenamen, Gerätealias, Raumattribut ersetzt. Sie können diesen Keywords auch ein Präfix voranstellen $ anstatt von %. Beispiele: attr temperatures mapping $DEVICE-$READING attr temperatures mapping {temperature => "%DEVICE Temperatur"}
separator
Das zu verwendende Trennzeichen zwischen dem Gerätealias und dem Reading-Namen, wenn keine Zuordnung angegeben ist, standardgemäß ':'
Ein Leerzeichen wird so dargestellt
setList
Eine durch Leerzeichen getrennte Liste von Befehlen, die zurückgegeben werden "set name ?",
Das FHEMWEB-Frontend kann also ein Dropdown-Menü erstellen und An / Aus-Schalter anbieten.
Set-Befehle, die nicht in dieser Liste enthalten sind, werden zurückgewiesen.
setFn
Perl-Ausdruck, der für die Befehle aus der setList ausgeführt wird. Es hat Zugriff auf $CMD und $ARGS.
style
Geben Sie einen HTML-Stil für die Readings-Tabelle an, z.Bsp: attr temperatures style style="font-size:20px"
cellStyle
Geben Sie einen HTML-Stil für eine Zelle der Readings-Tabelle an. Normale Zeilen und Spalten werden gezählt beginnend mit 1,
Die Zeilenüberschriften beginnt mit der Spaltennummer 0. Perl-Code hat Zugriff auf $ROW und $COLUMN. Schlüssel für Hash-Lookup können sein:
r:#, c:# oder r:#,c:# , z.Bsp: attr temperatures cellStyle { "c:0" => 'style="text-align:right"' }
nameStyle
Geben Sie einen HTML-Stil für die Readings-Namen an, z.Bsp: attr temperatures nameStyle style="font-weight:bold"
valueStyle
Geben Sie einen HTML-Stil für die Readings-Werte an, z.Bsp: attr temperatures valueStyle style="text-align:right"
valueColumn
Geben Sie die Mindestspalte an, in der ein Messwert angezeigt werden soll. z.Bsp: attr temperatures valueColumn { temperature => 2 }
valueColumns
Geben Sie einen HTML-Colspan für die Readings-Werte an, z.Bsp: attr wzReceiverRG valueColumns { eventdescription => 'colspan="4"' }
valueFormat
Geben Sie eine Sprintf-Stilformat-Zeichenfolge an, die zum Anzeigen der Readings-Werte verwendet wird. Wenn die Formatzeichenfolge undef ist
wird dieser Messwert übersprungen. Es kann als String angegeben werden, ein Perl-Ausdruck, der einen Hash- oder Perl-Ausdruck zurückgibt, der einen String zurückgibt, z.Bsp: attr temperatures valueFormat %.1f °C attr temperatures valueFormat { temperature => "%.1f °C", humidity => "%i %" } attr temperatures valueFormat { ($READING eq 'temperature')?"%.1f °C":undef }
valuePrefix
Text, der dem Readings-Wert vorangestellt wird
valueSuffix
Text, der nach dem Readings-Wert angehängt wird attr temperatures valueFormat { temperature => "%.1f", humidity => "%i" } attr temperatures valueSuffix { temperature => "°C", humidity => " %" }
nameIcon
Geben Sie das Symbol an, das anstelle des Readings-Name verwendet werden soll. Es kann ein einfacher String oder ein in {} eingeschlossener Perl-Ausdruck sein, der einen Hash zurückgibt, der dem Readings-Name den Icon-Namen zuordnet. z.Bsp: attr devices nameIcon $DEVICE
valueIcon
Geben Sie ein Symbol an, das anstelle des Readings-Wert verwendet werden soll. Es kann ein einfacher String oder ein in {} eingeschlossener Perl-Ausdruck sein, der einen Hash zurückgibt, der dem Readings-Wert dem Symbolnamen zuordnet. z.Bsp: attr devices valueIcon $VALUE attr devices valueIcon {state => '%VALUE'} attr devices valueIcon {state => '%devStateIcon'} attr rgMediaPlayer valueIcon { "playStatus.paused" => "rc_PLAY", "playStatus.playing" => "rc_PAUSE" }
commands
Kann auf verschiedene Arten verwendet werden:
Um ein Reading oder ein Symbol anklickbar zu machen, indem Sie direkt den Befehl angeben, der ausgeführt werden soll. z.Bsp: attr rgMediaPlayer commands { "playStatus.paused" => "set %DEVICE play", "playStatus.playing" => "set %DEVICE pause" }
Wenn der zugeordnete Befehl die Form <command>:[<modifier>] hat, wird das normale FHEMWEB webCmd-Widget für für diesen commands verwendet. z.Bsp: attr rgMediaPlayer commands { volume => "volume:slider,0,1,100" } attr lights commands { pct => "pct:", dim => "dim:" }
commands können für Attribute verwendet werden. z.Bsp: attr commands { disable => "disable:" }
visibility
Wenn sie auf hidden oder hideable eingestellt ist, wird eine kleine Schaltfläche links neben dem Namen der Readings-Group angezeigt, um den Inhalt der Readings-Group zu erweitern / auszublenden. Wenn eine Readings-Group erweitert wird, werden alle anderen Gruppen derselben Gruppe ausgeblendet.
hidden -> Standardmäßig ist hidden aktiv, kann jedoch erweitert werden.
hideable -> Standardmäßig ist hideable aktiv, kann jedoch ausgeblendet werden.
Wenn diese Option auf "collapsed" oder "collapsible" eingestellt ist, erkennt readingsGroup die Specials <->,<+> und <+-> als die ersten Elemente von
eine Linie, um dieser Linie ein + oder - Symbol hinzuzufügen. Durch Klicken auf das + oder - Symbol wird zwischen erweitertem und reduziertem Zustand umgeschaltet. Wenn eine Readings-Group erweitert wird, werden alle anderen Gruppen in der gleichen Gruppe ausgeblendet.
- -> Die Linie wird im expandierten Zustand sichtbar sein.
+ -> Die Linie wird im zusammengefalteten Zustand angezeigt.
+- -> Die Linie wird in beiden Zuständen sichtbar sein.
collapsed -> Der Standardstatus ist reduziert, kann jedoch erweitert werden.
collapsible -> Der Standardstatus ist sichtbar, kann jedoch minimiert werden.
headerRows
sortColumn
> 0 -> sortiert die Tabelle automatisch nach dem Laden der Seite nach dieser Spalte
0 -> sortiert Sie nicht automatisch, sondern durch Klicken auf eine Spaltenüberschrift
< 0 -> sortiert die Tabelle automatisch nach dem Laden der Seite nach dieser Spalte
Für die Hash-Version aller Zuordnungsattribute kann ein Standardwert angegeben werden mit { '' => <default> }.
Die Stilattribute können auch einen in {} eingeschlossenen Perl-Ausdruck enthalten, der die zu verwendende Stilzeichenfolge zurückgibt. Für nameStyle und valueStyle, kann der Perl-Code $DEVICE,$READING,$VALUE und $NUM verwendet werden. z.Bsp:
Hinweis: Nur valueStyle, valueFomat, valueIcon und <{...}@reading> werden bei Longpoll-Updates ausgewertet und valueStyle muss für jeden möglichen Wert einen nicht leeren Stil zurückgeben. Alle anderen Perl-Ausdrücke werden nur einmal während der HTML-Erstellung ausgewertet und geben keine Wertupdates mit longpoll wieder.
Aktualisieren Sie die Seite, um den dynamischen Stil zu aktualisieren. Für nameStyle funktioniert das Farbattribut momentan nicht, die font -... und background Attribute funktionieren.
Berechnung: Bitte sehen Sie sich dafür diese Beschreibung an in der Wiki.
z.Bsp: define rg readingsGroup .*:temperature rg:$avg
readingsHistory
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: readingsHistory
readingsProxy
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: readingsProxy
Erzeugt eine graphische Fernbedienung. Buttons (=icons) können frei ausgewählt und angeordnet werden. Vordefinierte layouts sind verfügbar für z.B. Samsung-TV und iTunes.
Jeder "Knopfdruck" kann an das entsprechende fhem-Gerät weitergegeben werden.
Weitere Erklaerungen finden sich im Wiki-Eintrag. Define
define <rc-name> remotecontrol
Typische Schritte zur Einrichtung:
define rc1 remotecontrol
# erzeugt eine "leere" remotecontrol
get rc1 layout
# zeigt alle vorhandenen vordefinierten layouts an
set rc1 layout samsung
# laedt das layout für SamsungTV
set rc1 makenotify myTV
# erzeugt notify_rc1, das jeden Tastendruck an myTV weitergibt
Hinweis:die Tastenbelegung kann jederzeit geaendert werden, ohne dass der weblink erneut erzeugt werden muss.
attr rc1 row15 VOLUP,VOLDOWN
Set
set <rc-name> layout [delete|<layoutname>] layout delete loescht alle rowXX-Attribute layout <layoutname> laedt das vordefinierte layout in die rowXX-Attribute
set <rc-name> makeweblink [<name>]
erzeugt einen weblink zur Anzeige der remotecontrol in FHEMWEB oder FLOORPLAN. Default-Name ist weblink_<rc-name> .
set rc1 makenotify mySamsungTV
erzeugt notify_rc1 das jeden Tastendruck an mySamsungTV zur Ausfuehrung weitergibt
rc_iconpath
Pfad für icons, default ist "icons" . Der Attribut-Wert wird für alle icon-Dateien verwendet ausser .svg .
rc_iconprefix
Prefix für icon-Dateien, default ist "" . Der Attribut-Wert wird für alle icon-Dateien verwendet ausser .svg .
Note: Icon-Namen (Tasten-Bild-Datei-Namen) werden zusammengesetzt als fhem/<rc_iconpath>/<rc_iconprefix><command|image>
Fuer .svg -icons ist die Zugriffsfolge gemaess dem FHEMWEB-Attribut iconPath, default ist openautomation:fhemSVG:default .
rc_devStateIcon
Zeigt das button-layout auf dem remotecontrol-device selbst in der FHEMWEB-Raumansicht an. Default ist 1, durch setzen auf 0 erscheint in der FHEMWEB-Raumansciht nicht das layout, sondern nur der Status "Initialized".
rowXX attr <rc-name> rowXX <command>[:<image>]
Komma-separarierte Liste von Tasten/Icons je Tastaturzeile. Eine Tastaturzeile kann beliebig viele Tasten enthalten.
<command> ist der event, der bei Tastendruck ausgelöst wird. Gross/Kleinschreibung beachten.
<image> ist der Dateiname des als Taste angezeigten icons
Verwenden Sie je Taste
<command> wobei als Taste/icon <command> angezeigt wird
Beispiel: attr rc1 rc_iconprefix black_btn_ # gilt für alle Tasten/icons attr rc1 row00 VOLUP
-> icon ist black_btn_VOLUP, ein Tastendruck erzeugt den event VOLUP
oder
<command>:<image> wobei als Taste/icon <rc_iconprefix><image> angezeigt wird.
Beispiel: attr rc1 row00 LOUDER:VOLUP
icon ist black_btn_VOLUP, ein Tastendruck erzeugt den event LOUDER
Beispiele:
attr rc1 row00 1,2,3,TV,HDMI attr rc2 row00 play:PLAY,pause:PAUSE,louder:VOLUP,quieter:VOLDOWN
Hinweis: verwenden Sie :blank für eine 'leere Taste', oder z.B. :blank,:blank,:blank für eine Abstands-Leerzeile.
restore list [<filename|directory>]
restore [<filename|directory>]
restore -a [<filename|directory>]
Restauriert die beim update gesicherten Dateien. Mit dem Argument list kann
man die Liste der verf&ügbaeren Sicherungen anzeigen, und mit der Angabe
der direkten Datei/Verzeichnis kann man das zurücksichern anstossen.
Siehe auch das update Befehl, bzw. das restoreDirs Attribut.
Nach restore ist meistens ein "shutdown restart" notwendig.
Falls die -a Option spezifiziert wurde, dann werden auch die
Konfigurationsdateien wiederhergestellt.
Mit diesem Hilfs-Device kann ein RSS-Feed per URL abgerufen werden.
Das Ergebnis wird zum einen in entsprechende Readings (s.u.) eingetragen,
zum Anderen können die Schlagzeilen (Headlines) noch per GET oder per
bereitgestellter Funktion als Ticker-Daten abgerufen werden.
Die Daten des RSS-Feeds werden dabei jeweils im angegebenen Interval
aktualisiert.
Define
define <name> rssFeed <url> [interval]
url = URL zum RSS-Feed
interval = Aktualisierungsinterval in Sekunden
minimum Wert sind 600 Sekunden (10 Minuten)
maximum Wert sind 86400 Sekunden (24 Stunden)
Damit wird stündlich der RSS-Feed des Reutlinger Generalanzeigers
abgerufen.
Set
set <name> update
Abrufen der Daten vom rssFeed und aktualisieren der Readings
Get
get <name> ticker
Abrufen der zuletzt gelesenen Schlagzeilen im gewünschten
Format (s. Attribute)
Attribute
disabled
Mit diesem Attribut kann das Device deaktiviert (1) werden
bzw. auch wieder aktiviert (0 oder Attribut nicht vorhandn).
Wenn das device deaktiviert ist, sind keine Readings mehr
vorhanden, außer state. Außerdem werden die Daten nicht mehr
zyklisch aktualisiert und get ticker liefert nur noch die
Information zurück, dass der Ticker nicht mehr aktiv ist
(s. dazu auch Attribut rfDisabledText).
rfDisabledText
Der hier eingetragenee Text wird beim Abruf der Schlagzeilen als einzige
Zeile angezeigt, wenn der rssFeed disabled ist (s. Attribut disabled).
Ist dieses Attribut nicht angegeben, so wird ein Standardtext angezeigt.
Beispiel: attr <name> rfDisabledText Dieser Feed wurde deaktiviert
rfTickerChars
Hiermit kann eine Zeichenfolge festgelegt werden, die bei den Schlagzeilen
für den get-Abruf vor und nach jeder Schlagzeile, wie bei einem Nachrichten-Ticker
angefügt wird.
Beispiel: attr <name> rfTickerChars +++
Ergebnis: +++ Dies ist eine Beispiel-Schlagzeile +++
Diese Zeichenkette wird auch als Trenner für die Marquee-Ticker-Daten verwendet.
rfMaxLines
Bestimmt, wieviele Schlagzeilen maximal aus dem Feed extrahiert werden sollen.
Sind weniger Nachrichten-Elemente im Feed enthalten, als über rfMaxLines angegeben,
so werden eben nur so viele Schlagzeilen extrahiert, wie vorhanden sind.
Ist dieses Attribut nich angegeben, so wird dafür der Standard-Wert 10 angenommen.
Beispiel: attr <name> rfMaxLines 15
rfDisplayTickerReadings
Wenn dieses Attribut gesetzt ist werden 2 zusätzliche Readings erzeugt, die
die Tickerdaten einmal für s.g. "Toast"-Ticker (der Inhalt ist der selbe,
wie die Ausgabe von rssFeedGetTicker()) und einmal für s.g. "Marquee"-Ticker, also
in einer einzigen Zeile.
rfEncode
Hier kann eine Encoding-Methode (Bspw. utf8) angegeben werden.
Die Texte die aus dem Feed extrahiert werden (title, descripton, ...)
werden dann vor der Zuwesung an die Readings mittels encode (Perl core-Module Encode)
enkodiert. Fehlt dieses Attribut, so findet keine umkodierung statt.
Das kann u.U. notwendig sein, wenn in den zurückgelieferten Feed-Daten s.g. wide Characters
enthalten sind. Dies kann evtl. dazu führen, das u.a. die Darstellung in FHEMWEB nicht mehr
korrekt erfolgt.
Dies betrifft auch das Ergebnis von rssFeedFunctions, bzw. get ticker.
Dieses Attribut wird beim ersten define per default auf utf8 gesetzt.
rfReadings
Über dieses Attribut kann angegeben werden, welche Daten aus dem RSS-Feed in
Readings extrahiert werden sollen. Das Attribut ist als Komma getrennte Liste
anzugeben.
Zur Auswahl stehen dabei folgende möglichen Werte:
title = Titelzeile
Dies erzeugt ein Reading für den Feed-Titel und für jedes
Nachrichten-Element aus dem Feed.
description = Beschreibungstext
Dies erzeugt ein Reading für die Feed-Beschreibung, bzw.
für den Beschreibungstext jeden Nachrichten-Eelements.
encodedContent = content:encoded Abschnitt
Sofern vorhanden ist in diesem Abschnitt quasi ein Langtext
der Nachrihtenmeldung enthalten.
pubDate = Zeitpunkt der Veröffentlichung des Feeds, bzw. der einzelnen
Nachrichten-Elemente
link = Link zum Feed, bzw. zum einzelnen Nachrichten-Element auf
der Homepage des Feeds.
buildDate = Zeitpunkt der letzten aktualisierung der Feed-Daten
vom Feed-Betreiber.
imageURl = URL zum ggf. vorhandenen Bild eines Nachrichten-Elements,
bzw. zum Nachrichten-Feed.
imageTitle = Titel eines ggf. zum Feed oder Nachrichten-Element
vorhandenen Bildes.
Ist Dieses Attribut nicht vorhanden, so werden die Werte "title,description,pubDate" als
Voreinstellung angenommen. Beim ersten Anlegen des Device wird das Attribut automatisch
erste einmal mit genau dieser Voreinstellung belegt.
rfCustomTextPrepFn
Hier kann eine Funktion angegeben werden, die bspw. in 99_myUtils.pm
definiert wird. In dieser Funktion können Textinhalte vor dem
Setzen der Readings, bzw. Tickerzeilen beliebig modifiziert werden.
Der Funktion wird dabei zum Einen eine Kennung für den Text übergeben und zum
Anderen der Text selbst. Zurückgegeben wird dann der modifizierte Text.
Mögliche Kennungen sind dabei (s.a. rfReadings)
feedTitle
feedDescription
imageTitle
desctiption
encodedContent
Beispiel für 99_myUtils.pm:
#Text-Modifikation für rssFeedDevices
sub rssFeedPrep($$)
{
my($texttype,$text) = @_;
#Länge von descriptions auf maximal 50 begrenzen
my $tLn=length $text;
$text=substr($text,0,47).'...' if ($tLn >50 && ($texttype=~/description/));
#Filtern von texten, die fälschlicherweise auf HASH(xxxxxx) stehen
#von beliebigen Texten
return ' ' if ($text=~/HASH\(.*\)/);
#Setzen eines eigenen Titels für den Feed
return 'Mein eigener Feed-Titel' if ($texttype =~/feedTitle/);
#jetzt noch den modifizierten Text zurück geben
return $text;
}
zur Verwendung muss das Attribut noch entsprechend gesetzt werden: attr <rssFeedDevice> rfCustomTextPrepFn rssFeedPrep
rfAllReadingsEvents
Wenn dieses Attribut auf 1 gesetzt wird, so werden für ALLE Readings,
die während des Feed-Updates erzeugt werden auch entsprechende Events
generiert (abh. von den event-on-... Attributen).
Von Haus aus werden, v.a. für die Readings mit den Feed-Daten keine
Events generiert.
rssFeedGetTicker
Diese Funktion gibt die ermittelten und formatierten Schlagzeilen als Zeichenkette
zurück. Die einzelnen Schlagzeilen sind dabei durch Zeilenvorschub getrenn.
Dieses Ergebnis kann bspw. in einem InfoPanel für einen Ticker verwendet werden.
Der Funktion muss dazu der Name eines rssFeed-Devices übergeben werden.
Die Ausgabe ist praktisch die selbe wie das Ergebnis, das bei get ticker
geliefert wird.
Syntax: rssFeedGetTicker(<rssFeedDevice>)
Readings
Je nach Auswahl der Attribute werden verschiedene Readings bereitgestellt.
Diese Readings sind teilweise mit einem Präfix versehen um sie bspw. dem Feed
selbst oder einem Nachrichten-Element zuozuordnen.
Nxx_
Diese Readings beziehen sich alle auf die einzelnen Nachrichten-Elemente, wobei
xx den Index des jeweiligen Nachrichten-Elements angibt.
Beispiel für die Readings eines Nachrichten-Elements:
N00_title N00_descripton N00_pubDate
f_
Diese Readings beziehen sich alle auf den Nachrichten-Feed selbst.
Beispiel für die Readings des Nachrichten-Feeds
f_title f_descripton f_buildDate
preparedLines
Dieses Reading gibt an, wie viele Schlagzeilen tatsächlich beim letzten
update aus dem Nachrichten-Feed extrahiert wurden.
tickerToast
Dieses Reading entä die selben Daten, wie sie von der rssFeedGetTicker()
Funktion zurückgeliefert werden (if attribute rfDisplayTickerReadings is set)
Beispiel: +++ Headline 1 +++ \n +++ Headline 2 +++ \n +++ Headline 3 +++
tickerMarquee
Dieses Reading enthält die Tickerdaten für "marquee"-artige Ticker,
also auf einer Zeile (if attribute rfDisplayTickerReadings is set)
Beispiel: Headline 1 +++ Hadline 2 +++ Headline 3 +++
gzippedFeed
Manche Feeds werden in gezippter (gzip) Form ausgeliefert. Das wird vom
Modul automatisch erkannt und die Daten im Bedarfsfall dekomprimiert.
Wurde beim letzten update der Feed in gezippter Form ausgeliefert, so wird
dieses Reading auf 1 gesetzt, andernfalls auf 0.
state
Dieses Reading gibt, wenn das Device nicht disabled ist, den Zeitpunkt
der letzten aktualisierung mittels update an, egal ob automatisch oder
manuell ausgelöst. Ist das device disabled, steht genau das im Reading.
Beim Anlegegen des Device mittels define findet das erste Aktualisieren
der Daten verzögert statt. Während dieser Verzögerung steht der state
auf "defined".
Ein sequence kann verwendet werden, um ein neues Event zu generieren, wenn
eine bestimmte Folge von anderen Events in einem festgelegten Zeitraum
eingetroffen ist. Z.Bsp. um eine Lampe dann einzuschalten, falls Btn1:on,
dann Btn2:off und zum Schluss Btn1:on innerhalb einer Sekunde gedrückt
wurde, definiert man folgendes:
define lampseq sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on
define lampon notify lampseq:trigger set lamp on
Nachfolgende Regexps können den Namen des Gerätes weglassen, in
diesem Fall werden nur die Events des beim ersten Event eingetroffenen
Gerätes beachtet:
define lampseq sequence Btn.:on 0.5 :off
Timeout kann als <delay>:<timeout> spezifiziert
werden, dabei setzt delay die Zeit, wo kein passendes Event empfangen
werden darf, ansonsten wird sequence abgebrochen. Das kann verwendet
werden, um "press and hold" auszuwerten. Folgendes
define lampseq sequence Btn1:on 2:3 :off
ist nur erfolgreich, falls Btn1 zwischen 2 und 5 Sekunden lang gedrückt
wurde.
triggerPartial
Falls gesetzt (auf 1), und nicht alle erwarteten Events eingetroffen
sind, dann wird ein partial_X Event generiert, wobei X durch Anzahl der
eingetroffenen Events ersetzt wird. Beispiel:
fhem> define seq sequence d1:on 1 d1:on 1 d1:on
fhem> attr seq triggerPartial
fhem> set d1 on;; sleep 0.5;; set d1 on
erzeugt das Event "seq partial_2". Dies kann verwendet werden, um z.Bsp.
einer Taste unterschiedliche Aufgaben zuzuweisen, jenachdem wie oft sie
gedrückt wurde.
reportEvents
Falls gesetzt (auf 1), meldet trigger die empfangenen Events (Leerzeichen
getrennt) nach dem "trigger" oder "partial_X" Schlüsselwort.
Das kann verwendet werden, um generische sequence Instanzen zu definieren:
define seq sequence remote:btn.* remote:btn.*
attr seq reportEvents
define n_b1b2 notify seq:trigger.remote:btn1.remote:btn2 set lamp1 on
define n_b2b1 notify seq:trigger.remote:btn2.remote:btn1 set lamp1 off
siri
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: siri
speedtest
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: speedtest
Dieses Modul wertet von den angegebenen Geräten (als regulärer Ausdruck) bestimmte Werte statistisch aus und fügt das Ergebnis den jeweiligen Geräten als neue Werte hinzu.
Für detailierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.
Es unterscheidet in vier Statistik-Typen denen bereits standardmäßig Gerätewerte zugeordnet sind:
Min|Avg|Max Minimum, Durchschnitt und Maximum von Momentanwerten:
über den Zeitraum Tag, Monat und Jahr:
current, energy_current, humidity, luminosity, temperature, voltage, etc.
über den Zeitraum Stunde, Tag, Monat und Jahr:
brightness, wind, wind_speed, windSpeed, etc.
Tendency Tendenz über 1h, 2h, 3h und 6h: pressure
Delta Differenz zwischen Anfangs- und Endwerte innerhalb eines Zeitraums (Stunde, Tag, Monat, Jahr):
count, energy, energy_total, power, total, rain, rain_rate, rain_total, etc.
Duration Dauer und Anzahl der Zustände (on, off, open, closed...) innerhalb eines Zeitraums (Tag, Monat, Jahr):
lightsensor, lock, motion, Window, window, state (wenn kein anderer Gerätewert gültig)
Über die AttributedeltaReadings, durationReadings, minAvgMaxReadings, tendencyReadings können weitere Gerätewerte hinzugefügt oder einem anderen Statistik-Typ zugeordnet werden.
Define
define <Name> statistics <GeräteNameRegExp> [Prefix]
Beispiel: define Statistik statistics Wettersensor|Badsensor
<GeräteNameRegExp>
Regulärer Ausdruck für den Gerätenamen. !!! Nicht die Gerätewerte !!!
[Prefix]
Optional. Der Prefix wird vor den Namen der statistischen Gerätewerte gesetzt. Standardmäßig stat
Set
resetStatistics <All|Gerätename>
Setzt die Statistiken der ausgewählten Geräte zurück.
doStatistics
Berechnet die aktuellen Statistiken aller beobachteten Geräte.
Get
nicht implementiert
Attributes
dayChangeTime <Zeit>
Uhrzeit des Tageswechsels. Standardmäßig 00:00. Bei Wetterdaten kann der Tageswechsel z.B. auf 6:50 gesetzt werden.
deltaReadings <Gerätewerte>
Durch Kommas getrennte Liste von weiteren Gerätewerten, für welche die Differenz zwischen den Werten am Anfang und Ende einer Periode (Stunde/Tag/Monat/Jahr) bestimmt wird.
durationPeriodHour < 1 | 0 >
Wenn auf 1 gesetzt, dann werden für "durationReadings" auch stündliche Statistiken gebildet.
durationReadings <Gerätewerte>
Durch Kommas getrennte Liste von weiteren Gerätewerten, für welche die Dauer einzelner Gerätewerte innerhalb bestimmte Zeiträume (Stunde/Tag/Monat/Jahr) erfasst wird.
excludedReadings <GerätenameRegExp:GerätewertRegExp>
Regulärer Ausdruck der Gerätewerte die nicht ausgewertet werden sollen.
z.B. FritzDect:current|Sensor_.*:humidity
ignoreDefaultAssignments <0 | 1>
Ignoriert die Standardzuordnung von Gerätewerten zu Statistik-Typen..
D.h., nur die Gerätewerte, die über Attribute den Statistik-Typen zugeordnet sind, werden ausgewertet.
hideAllSummaryReadings <0 | 1>
noch nicht implementiert - Es werden keine gesammelten Statistiken angezeigt, sondern nur die unter "singularReadings" definierten Einzelwerte
minAvgMaxReadings <Gerätewerte>
Durch Kommas getrennte Liste von Gerätewerten, für die in bestimmten Zeiträumen (Tag, Monat, Jahr) Minimum, Mittelwert und Maximum erfasst werden.
periodChangePreset <Sekunden>
Start der Berechnung der periodischen Daten, standardmäßig 5 Sekunden vor der vollen Stunde,
Erlaubt die korrekte zeitliche Zuordnung in Plots, kann je nach Systemauslastung verringert oder vergrößert werden.
Regulärer Ausdruck statistischer Werte, die zusätzlich auch als einzelne Werte gespeichert werden sollen.
Erleichtert die Erzeugung von Plots und anderer Auswertungen (notify).
Für "duration"-Gerätewerte muss der Name des jeweiligen Statuswertes als Statistiktyp eingesetzt werden.
specialDeltaPeriods <Gerät:Gerätewert:Zeitraum:Anzahl1:Anzahl2:...>
Erzeugt für die angegebenen "delta"-Gerätewerte zusätzliche Einzelwerte über die angegebene Anzahl eines Zeitraums (Hour, Day, Month).
Reguläre Ausdrücke können nicht genutzt werden. Es können auch mehrere Gerätewert und/oder Zeiträume hinzugefügt werden. Diese müssen durch Kommas (ohne Leerzeichen) getrennt werden.
Beispiel:
attr Statistik specialDeltaPeriods Wettersensor:rain:Hour:06:72:96
Dies erzeugt 3 zusätzliche Werte für die Regenmenge in den letzten 6, 72, 96 Stunden.
attr Statistik specialDeltaPeriods Wettersensor:rain:Hour:48,Wettersensor:rain:Day:30,EZaehler:energy:Month:6:12
Dies erzeugt 4 zusätzliche Werte für die Regenmenge in den letzten 48 Stunden und den letzten 30 Tagen und den Energieverbrauch der letzten 6 und 12 Monate.
specialDeltaPeriodHours
veraltet
tendencyReadings <Gerätewerte>
Durch Kommas getrennte Liste von weiteren Gerätewerten, für die innerhalb bestimmter Zeiträume (1h, 2h, 3h, 6h) die Differenz zwischen Anfangs- und Endwert ermittelt wird.
Mit dem Device "Structure" werden Strukturen/Zusammenstellungen von anderen
Devices erstellt um sie zu Gruppen zusammenzufassen. (Beispiel: im Haus
alles ausschalten)
Die Liste der Devices die einer Struktur zugeordnet sind kann duch das
Kommando addstruct / delstruct im laufenden Betrieb
verändert werden. Es können sowohl einzelne Devices als auch
Gruppen von Devices (TYPE=FS20) zugefügt werden. Jedes zugefügt
Device erhält zwei neue Attribute <struct_type>=<name>
sowie <struct_type>_map wenn es zu einer Struktur zugefügt
wurde. Diese Attribute werden wieder automatisch entfernt, sobald das
Device von der Struktur entfernt wird.
Eine Struktur kann ebenfalls zu einer anderen Struktur zugefügt
werden. Somit können z b. kaskadierende Strukturen erstellt werden.
(Z.b. KG,EG,OG, Haus)
Beispiel:
define Kueche structure room lampe1 lampe2
addstruct Kueche TYPE=FS20
delstruct Kueche lampe1
define house structure building kitchen living
set house off
Set
saveStructState <readingName>
Der Status (genauer: state Reading) aller Mitglieder wird im angegebenen
Reading Komma separiert gespeichert.
restoreStructState <readingName>
Der Status der Mitglieder wird aus dem angegebenen Reading gelesen, und
via "set Mitgliedsname StatusWert" gesetzt.
Jedes andere set Kommando wird an alle Devices dieser Struktur
weitergegeben.
Aussnahme: das Attribut structexclude ist in einem Device definiert und
dessen Attributwert matched als Regexp zum Namen der aktuellen
Struktur. Wenn das set Kommando diese Form hat set
<structure> [FILTER=<filter>] <type-specific> wird
:FILTER=<filter> bei der Weitergebe der set an jeden Devicenamen wie
folgt angehängt: set <devN>:FILTER=<filter>
<type-specific>
Falls der letzte Parameter reverse ist, dann werden die Befehle in der
umgekehrten Reihenfolge ausgeführt.
Get
Get wird im Structur-Device nicht unterstützt.
Attribute
async_delay
Wenn dieses Attribut gesetzt ist, werden ungefilterte set Kommandos nicht
sofort an die Clients weitergereicht. Stattdessen werden sie einer
Warteschlange hinzugefügt, um später ausgeführt zu werden.
Das set Kommando kehrt sofort zurück, die Clients werden danach
timer-gesteuert einzeln abgearbeitet. Die Zeit zwischen den
Timer-Aufrufen ist dabei durch den Wert von async_delay (in Sekunden)
gegeben, ein Wert von 0 entspricht der schnellstmöglichen Abfolge.
So können besonders lange Verzögerungen, die gerade bei
großen structures vorkommen können, in unproblematischere
Häppchen zerlegt werden.
clientstate_behavior
Der Status einer Struktur hängt von den Status der zugefügten
Devices ab. Dabei wird das propagieren der Status der Devices in zwei
Gruppen klassifiziert und mittels diesem Attribut definiert:
absolute
Die Struktur wird erst dann den Status der zugefügten Devices
annehmen, wenn alle Devices einen identischen Status vorweisen. Bei
unterschiedlichen Devictypen kann dies per Attribut
<struct_type>_map pro Device beinflusst werden. Andernfalls hat
die Struktur den Status "undefined".
relative
S.u. clientstate_priority.
relativeKnown
wie relative, reagiert aber nicht auf unbekannte, in
clientstate_priority nicht beschriebene Ereignisse. Wird für
HomeMatic Geräte benötigt.
last
Die Struktur übernimmt den Status des zuletzt geänderten
Gerätes.
clientstate_priority
Wird die Struktur auf ein relatives Verhalten eingestellt, so wird die
Priorität der Devicestatus über das Attribut
clientstate_priority beinflusst. Die Prioritäten sind
in absteigender Reihenfolge anzugeben. Dabei können Gruppen mit
identischer Priorität angegeben werden, um zb. unterschiedliche
Devicetypen zusammenfassen zu können. Jede Gruppe wird durch
Leerzeichen oder /, jeder Eintrag pro Gruppe durch Pipe getrennt. Der
Status der Struktur ist der erste Eintrag in der entsprechenden Gruppe.
Beispiel:
attr haus clientstate_priority Any_On|An All_Off|Aus
In diesem Beipiel nimmt die Struktur kuecheentweder den
Status An oder Aus an. Die Struktur
haus nimmt entweder den Status Any_on oder
All_off an. Sobald ein Device der Struktur
haus den Status An hat nimmt die Struktur den
Status Any_On an. Um dagegen den Status All_off
anzunehmen, müssen alle Devices dieser Struktur auf off
stehen.
<struct_type>_map
Mit diesem Attribut, das dem Struktur-Mitglied zugewiesen werden
muss, koennen die Werte, die die einzelnen Struktur- Mitglieder melden,
umdefiniert werden, damit man unterschiedliche Geraeteklassen
zusammenfassen kann. Es existieren drei Varianten:
readingName
nehme den Wert von readingName anstatt von state
oldVal:newVal
falls der Wert der state Reading oldVal (als regex) ist, dann ersetze
diesen mit newVal.
readingName:oldVal:newVal
falls der Wert der readingName oldVal (als regex) ist, dann ersetze
diesen mit newVal.
evaluateSetResult
Falls ein set Befehl den Status der Struktur-Mitglieder auf was
unterschiedliches setzt (wie z.Bsp. beim set statusRequest), dann muss
dieses Attribut auf 1 gesetzt werden, wenn die Struktur Instanz diesen
neuen Status auswerten soll.
setStateIndirectly
Falls wahr (1), dann wird der Status der Struktur nur aus dem
Statusmeldungen der Mitglied-Geräte bestimmt, sonst wird zuerst der
Status auf dem set Argument gesetzt. Die Voreinstellung ist 0.
setStructType
Falls wahr (1), <struct-type> wird als Attribute für jedes
Mitglied-Gerät auf dem Namen der Struktur gesetzt.
Wahr ist die Voreinstellung für featurelevel <= 5.8.
structexclude
Bei gesetztem Attribut wird set, attr/deleteattr ignoriert. Dies
trifft ebenfalls auf die Weitergabe des Devicestatus an die Struktur zu.
Fuer set und fuer die Status-Weitergabe muss der Wert den Strukturnamen
matchen, bei einem Attribut-Befehl die Kombination
Strukturname:Attributname.
Beispiel:
Systemd erlaubt Ueberwachung von Programmen mittels eines Watchdogs.
Sendet der Prozess innerhalnb eines definierten Interval kein 'Lebenszeichen',
wird dieser gestoppt und neu gestartet.
Dieses Modul sendet periodisch eine keep-alive Nachricht an das Systemd-Watchdog.
FHEM muss unter Kontrolle von Systemd laufen und Watchdog muss korrekt konfiguriert sein.
Folgendes Script kann benutzt werden:
[Unit]
Description=FHEM Home Automation
Requires=network.target
#After=network.target
After=dhcpcd.service
[Service]
Type=forking
NotifyAccess=all
User=fhem
Group=dialout
# Run ExecStartPre with root-permissions
PermissionsStartOnly=true
ExecStartPre=-/bin/mkdir -p /var/run/fhem
ExecStartPre=/bin/chown -R fhem:dialout /var/run/fhem
# Run ExecStart with defined user and group
WorkingDirectory=/opt/fhem
ExecStart=/usr/bin/perl fhem.pl fhem.cfg
#ExecStart=/usr/bin/perl fhem.pl configDB
TimeoutStartSec=240
TimeoutStopSec=120
#ExecStop=/usr/bin/pkill -U fhem perl
ExecStop=/usr/bin/pkill -f -U fhem "fhem.pl fhem.cfg"
# Restart options: no, on-success, on-failure, on-abnormal, on-watchdog, on-abort, or always.
Restart=on-failure
RestartSec=3
WatchdogSec=180
PIDFile=/var/run/fhem/fhem.pid
[Install]
WantedBy=multi-user.target
Das Script kann unter "/etc/systemd/system/fhem.service" angelegt werden.
Mit "sudo systemctl daemon-reload" wird sysgtemd-Konfiguration erneuert.
Anschliessend kann FHEM mit folgendem Befehl gestartet werden: "sudo systemctl start fhem.service".
Wenn in dem Script "Type=notify" verwendet wird, muss global Attribute "nofork=1" gesetzt sein. attr global nofork 1
Bei "Type=forking" muss in Script der korrekte Pfad zu dem PID-Datei angegeben werden,
diese Datei muss auch in FHEM mit dem global Attribute "pidfilename" aktiviert sein. attr global pidfilename /var/run/fhem/fhem.pid
Define
define <name> systemd_watchdog
Specifies the device.
tahoma
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: tahoma
define <name> telnet <portNumber>
[global|hostname] oder define <name> telnet <servername>:<portNummer>
Erste Form, Server-mode:
Überwacht den TCP/IP-Port <portNummer> auf
ankommende Verbindungen. Wenn der zweite Parameter nicht
angegeben wird, wird der Server nur auf Verbindungen von localhost achten.
Falls der zweite Parameter global ist, dann wird telnet auf allen lokalen
Netzwerk-Interfaces zuhören, ansonsten wird der Parameter als Hostname
oder Adresse interpretiert, und nur diese lokale Adresse bedient.
Für den Gebrauch von IPV6 muss die Portnummer als IPV6:<nummer>
angegeben werden, in diesem Fall wird das Perl-Modul IO::Socket:INET6
angesprochen. Unter Linux kann es sein, dass dieses Modul mittels cpan -i
IO::Socket::INET6 oder apt-get libio-socket-inet6-perl nachinstalliert werden
muss; OSX und Fritzbox-7390 enthalten bereits dieses Modul.
Beispiele:
Hinweis: Das alte (pre 5.3) "global attribute port" wird automatisch in
eine telnet-Instanz mit dem Namen telnetPort umgewandelt. Im Rahmen dieser
Umwandlung geht das globale Attribut allowfrom verloren.
Zweite Form, Client-mode:
Verbindet zu einem angegebenen Server-Port und führt die von dort aus
empfangenen Anweisungen - genau wie im Server-mode - aus. Dies kann
verwendet werden, um sich mit einer fhem-Instanz, die sich hinter einer
Firewall befindet, zu verbinden, für den Fall, wenn das Installieren
von Ausnahmen in der Firewall nicht erwünscht oder nicht möglich
sind. Hinweis: Dieser Client-mode unterstützt zwar SSL, aber nicht
IPV6.
Beispiel:
Starten von tcptee auf einem öffentlich erreichbaren Host ausserhalb
der Firewall:
perl contrib/tcptee.pl --bidi 3000
Konfigurieren von fhem innerhalb der Firewall:
define tClient telnet <tcptee_host>:3000
Verbinden mit fhem (hinter der Firewall) von ausserhalb der Firewall:
telnet <tcptee_host> 3000
Set
N/A
Get
N/A
Attribute
prompt
Gibt die Zeichenkette an, welche in der Telnet-Sitzung als
Kommandoprompt ausgegeben wird. Die Voreinstellung ist fhem>
SSL
SSL-Verschlüsselung für eine Verbindung aktivieren. Hier gibt es eine Beschreibung, wie das erforderliche
SSL-Zertifikat generiert werden kann. Um eine Verbindung mit solch
einem Port herzustellen, sind folgende Befehle möglich:
allowfrom
Regexp der erlaubten IP-Adressen oder Hostnamen. Wenn dieses Attribut
gesetzt wurde, werden ausschließlich Verbindungen von diesen
Adressen akzeptiert.
Achtung: falls allowfrom nicht gesetzt ist, und keine gütige
allowed Instanz definiert ist, und die Gegenstelle eine nicht lokale
Adresse hat, dann wird die Verbindung abgewiesen. Folgende Adressen
werden als local betrachtet:
connectTimeout
Gibt die maximale Wartezeit in Sekunden an, in der die Verbindung
aufgebaut sein muss. Standardwert ist 2.
connectInterval
Gibt die Dauer an, die entweder nach Schließen einer Verbindung
oder für den Fall, dass die Verbindung nicht zustande kommt,
gewartet werden muss, bis ein erneuter Verbindungsversuch gestartet
werden soll. Standardwert ist 60.
encoding
Bezeichnet die Zeichentabelle für die zum Client gesendeten Daten.
Mögliche Werte sind utf8 und latin1. Standardwert ist utf8.
Includes a file with parameter substitution, i.e. read the file and process every line as a FHEM command.
For any given parameter/value pair <param>=<value> on the command line,
a literal %<param>% in the file is replaced by <value> before executing the command.
This can be used to to code recurring definitions of one or several devices only once and use it many times.
template show .. shows what would be done, including a parameter listing, while
template use ... actually does the job. The word use can be omitted.
Example
File H.templ:
define %name% FHT %fhtcode%
attr %name% IODev CUN
attr %name% alias %alias%
attr %name% group %group%
attr %name% icon icoTempHeizung.png
attr %name% room %room%,Anlagen/Heizungen
define watchdog.%name% watchdog %name% 00:15:00 SAME set %name% report2 255
attr watchdog.%name% group %group%
attr watchdog.%name% room Control/Heizungen
te H.templ name=3.dz.hzg fhtcode=3f4a alias=Dachzimmerheizung group=Heizung room=Dachzimmer
Please note that although %Y% in the FileLog definition looks like a parameter, it is not substituted since no parameter
Y is given on the command line. You get detailed information at verbosity level 5 when you run the command.
update [<fileName>|all|check|checktime|force]
[http://.../controlfile] oder update [add source|delete source|list|reset]
Erneuert die FHEM Installation. D.h. es wird (werden) zuerst die
Kontroll-Datei(en) heruntergeladen, und mit der lokalen Version dieser Datei
in moddir/FHEM verglichen. Danach werden alle in der Kontroll-Datei
spezifizierten Dateien heruntergeladen, deren Größe oder
Zeitstempel sich unterscheidet. Wenn dieser Ablauf abgeschlossen ist, wird
das globale UPDATE Ereignis ausgelöst.
Mit den Befehlen add/delete/list/reset kann man die Liste der Kontrolldateien
pflegen.
Zu beachten:
Das contrib Verzeichnis wird nicht heruntergeladen.
Die Dateien werden auf der Webseite einmal am Tag um 07:45 MET/MEST aus
der Quell-Verwaltungssystem (SVN) bereitgestellt.
Das all Argument ist die Voreinstellung.
Das force Argument beachtet die lokale controls_fhem.txt Datei
nicht.
Das check Argument zeigt die neueren Dateien an, und den letzten
Abschnitt aus der CHANGED Datei
checktime zeigt zusätzlich zu check den update-Zeitstempel der
neuen Datei, üblicherweise version Zeitstempel +1 Tag.
Falls man <fileName> spezifiziert, dann werden nur die Dateien
heruntergeladen, die diesem Regexp entsprechen.
updateInBackground
Wenn dieses Attribut gesetzt ist, wird das update Befehl in einem
separaten Prozess ausgeführt, und alle Meldungen werden per Event
übermittelt. In der telnet Sitzung wird inform, in FHEMWEB wird
das Event Monitor aktiviert. Die Voreinstellung ist an, zum
Deaktivieren bitte Attribut auf 0 setzen.
updateNoFileCheck
Wenn dieses Attribut gesetzt ist, wird die Größe der bereits
vorhandenen, lokalen Datei nicht mit der Sollgröße
verglichen. Dieses Attribut wurde nach nicht genau spezifizierten Wnsch
erfahrener FHEM Benutzer eingefuehrt, die Voreinstellung ist 0.
backup_before_update
Wenn dieses Attribut gesetzt ist, erstellt FHEM eine Sicherheitskopie
der FHEM Installation vor dem update mit dem backup Befehl. Die
Voreinstellung is "nicht gesetzt", da update sich auf das restore
Feature verlässt, s.u.
Beispiel:
attr global backup_before_update
exclude_from_update
Enthält eine Liste durch Leerzeichen getrennter Dateinamen
(regexp), welche nicht im update berücksichtigt werden.
Falls der Wert commandref enthält, dann wird commandref_join.pl
nach dem update nicht aufgerufen, d.h. die Gesamtdokumentation ist
nicht mehr aktuell. Die Moduldokumentation bleibt weiterhin aktuell.
Beispiel:
attr global exclude_from_update 21_OWTEMP.pm temp4hum4.gplot
Der Regexp wird gegen den Dateinamen und gegen Quelle:Dateiname
geprüft. Um die Datei FILE.pm von updates von fhem.de
auszuschließen, weil sie von einer anderen Quelle bezogen wird,
kann man fhem.de.*:FILE.pm spezifizieren.
Gibt die Versionsinformation von fhem.pl und aller geladenen Module aus. Mit
dem optionalen Parameter kann man die Ausgabe filtern. Der spezielle Filterwert "revision"
zeigt nur die aktuellste Revisions-Nummer seit dem letzten Update an.
Der optionale Parameter noheader unterdrückt die Ausgabe des Listenkopfs (Latest Revision, File, Rev, Last Change).
Wenn dieser Befehl über die FHEMWEB-Kommandozeile eingegeben wird, werden zusätzlich alle aktuell geladenen JavaScript-Dateien mit ihren zugehörigen Versionsinformationen angezeigt.
Startet einen beliebigen FHEM Befehl wenn nach dem Empfang des
Ereignisses <regexp1> nicht innerhalb von <timespec> ein
<regexp2> Ereignis empfangen wird.
Der Syntax für <regexp1> und <regexp2> ist der gleiche wie
regexp für notify.
<timespec> ist HH:MM[:SS]
<command> ist ein gewöhnlicher fhem Befehl wie z.B. in at oderr notify
Beispiele:
# Frage Daten vom FHT80 _einmalig_ ab, wenn wir keine Nachricht für
# 15 Minuten erhalten haben.
define w watchdog FHT80 00:15:00 SAME set FHT80 date
# Frage Daten vom FHT80 jedes Mal ab, wenn keine Nachricht für
# 15 Minuten emfpangen wurde, d.h. reaktiviere den Watchdog nachdem er
getriggert wurde.
# Kann gefährlich sein, da er so in einer Schleife getriggert werden
kann.
define w watchdog FHT80 00:15:00 SAME set FHT80 date;; trigger w .
# Alarmiere einmalig wenn vom HMS100-FIT für eine Stunde keine
Nachricht empfangen wurde.
define w watchdog HMS100-FIT 01:00 SAME "alarm-fit.sh"
# Sende eine Mail wenn das Fenster offen gelassen wurde
define w watchdog contact1:open 00:15 contact1:closed "mail_me close
window1"
attr w regexp1WontReactivate
Hinweise:
Wenn <regexp1> . (Punkt) ist, dann aktiviere den Watchdog zur
definierten Zeit. Sonst wird er durch den Empfang des ersten passenden
Events aktiviert.
<regexp1> Resetet den Timer eines laufenden Watchdogs. Um das
zu verhindern wird das regexp1WontReactivate Attribut gesetzt.
Wenn <regexp2> SAME ist , dann ist es das gleiche wie das erste
regexp, und wird reaktiviert wenn es empfangen wird.
trigger <watchdogname> . aktiviert den Trigger wenn dessen
Status defined ist und setzt ihn in den Status defined wenn sein status
triggered oder aktiviert (Next:...) ist.
Der Watchdog musst immer mit diesem Befehl reaktiviert werden wenn er
getriggert wurde.
Ein generischer Watchdog (ein Watchdog, verantwortlich für
mehrere Devices) ist derzeit nicht möglich.
Bei modify sind alle Parameter optional, und werden nicht geaendert,
falls nicht spezifiziert.
Set
inactive
Deaktiviert das entsprechende Gerät. Beachte den leichten
semantischen Unterschied zum disable Attribut: "set inactive"
wird bei einem shutdown automatisch in fhem.state gespeichert, es ist
kein save notwendig.
Der Einsatzzweck sind Skripte, um das notify temporär zu
deaktivieren.
Das gleichzeitige Verwenden des disable Attributes wird nicht empfohlen.
active
Aktiviert das entsprechende Gerät, siehe inactive.
Get
N/A
Attribute
activateOnStart
Falls gesetzt, wird der Watchdog nach FHEM-Neustart aktiviert, je nach
Zeitstempel der Activated und Triggered Readings. Da zwischen Shutdown
und Neustart Events verlorengehen können, ist die Voreinstellung 0
(deaktiviert).
regexp1WontReactivate
Wenn ein Watchdog aktiv ist, wird ein zweites Ereignis das auf regexp1
passt normalerweise den Timer zurücksetzen. Dieses Attribut wird
das verhindern.
execOnActivate
Falls gesetzt, wird der Wert des Attributes als FHEM Befehl
ausgeführt, wenn ein regexp1 Ereignis den Watchdog
aktiviert nachdem er ausgelöst wurde.
autoRestart
Wenn dieses Attribut gesetzt ist, wird der Watchdog nach dem er
getriggert wurde, automatisch wieder in den Zustand defined
gesetzt (Wartet also wieder auf Aktivierung durch regexp1)
weblink
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: weblink
Beschreibung im Wiki: http://www.fhemwiki.de/wiki/Weekprofile
Mit dem Modul 'weekprofile' können mehrere Wochenprofile verwaltet und an unterschiedliche Geräte
übertragen werden. Aktuell wird folgende Hardware unterstützt:
alle MAX Thermostate
andere weekprofile Module
Homatic (Kanal _Clima bzw. _Climate)
Im Standardfall wird das Modul mit einem Geräte = 'Master-Gerät' assoziiert,
um das Wochenprofil vom Gerät grafisch bearbeiten zu können und andere Profile auf das Gerät zu übertragen.
Wird kein 'Master-Gerät' angegeben, wird erstmalig ein Default-Profil angelegt.
Ein weiterer Anwendungsfall ist die Verwendung von Rubriken\Kategorien 'Topics'.
Hier sollte kein 'Master-Gerät' angegeben werden. Dieses Feature muss erst über das Attribut 'useTopics' aktiviert werden.
Topics sind z.B. Winter, Sommer, Urlaub, Party, etc.
Innerhalb einer Topic kann es mehrere Wochenprofile geben. Sinnvollerweise sollten es soviele wie Thermostate sein.
Über ein Userattribut 'weekprofile' im Thermostat wird ein Wochenprofile ohne Topicname angegeben.
Mittels 'restore_topic' wird dann das angebene Wochenprofil der Topic an das Thermostat übertragen.
Somit kann man einfach zwischen den Topics wechseln und die Thermostate bekommen das passende Wochenprofil.
Achtung: Das Übertragen von Wochenprofilen erfordet eine Menge an Credits.
Dies wird vom Modul nicht berücksichtigt. So kann es sein, dass nach dem
Setzen\Aktualisieren eines Profils das Profil im Modul nicht mit dem Profil im Gerät
übereinstimmt solange das komplette Profil übertragen wurde.
Beim Homatic HM-TC-IT-WM-W-EU wird nur das 1. Profil (R_P1_...) genommen!
Für das Module wird libjson-perl benötigt
Events:
Aktuell werden folgende Events erzeugt:
PROFILE_TRANSFERED: wenn ein Profil oder Teile davon zu einem Gerät gesended wurden
PROFILES_SAVED: wenn Profile in die Konfigurationsdatei gespeichert wurden (auch wenn es keine Änderung gab!)
Define
define <name> weekprofile [master device]
Aktiviert das Modul. Bei der Angabe eines 'Master-Gerätes' wird das Profil 'master'
entprechende dem Wochenrofil vom Gerät angelegt.
Sonderbehandlung des 'master' Profils:
Kann nicht gelöscht werden
Bei Ändern\Setzen des Proils wird es automatisch an das 'Master-Geräte' gesendet
Es wird sind mit abgespeicht
Wird kein 'Master-Geräte' angegeben, wird ein 'default' Profil angelegt.
Set
profile_data set <name> profile_data <profilname> <json data>
Es wird das Profil 'profilname' geändert. Die Profildaten müssen im json-Format übergeben werden.
send_to_device set <name> send_to_device <profilname> [devices]
Das Profil wird an ein oder mehrere Geräte übertragen. Wird kein Gerät angegeben, wird das 'Master-Gerät' verwendet.
'Devices' ist eine kommagetrennte Auflistung von Geräten
copy_profile set <name> copy_profile <quelle> <ziel>
Kopiert das Profil 'quelle' auf 'ziel'. 'ziel' wird überschrieben oder neu angelegt.
remove_profile set <name> remove_profile <profilname>
Das Profil 'profilname' wird gelöscht.
reference_profile set <name> reference_profile <quelle> <ziel>
Referenziert das Profil 'ziel'auf 'quelle'. 'ziel' wird überschrieben oder neu angelegt.
restore_topic set <name> restore_topic <topic>
Alle Wochenpläne in der Topic werden zu den entsprechenden Geräten übertragen.
Dazu muss im Gerät ein Userattribut 'weekprofile' mit dem Namen des Wochenplans ohne Topic gesetzt sein.
reread_master
Aktualisiert das master profile indem das 'Master-Geräte' neu ausgelesen wird.
Get
profile_data get <name> profile_data <profilname>
Liefert die Profildaten von 'profilname' im json-Format
profile_names set <name> profile_names [topic_name]
Liefert alle Profilnamen getrennt durch ',' einer Topic 'topic_name'
Ist 'topic_name' gleich '*' werden alle Profilnamen zurück gegeben.
profile_references [name]
Liefert eine Liste von Referenzen der Form
ref_topic:ref_profile>dest_topic:dest_profile
Ist name 'topicname:profilename' wird '0' der Name der Referenz zurück gegeben.
Readings
active_topic
Aktive\zuletzt gesetzter Topicname.
profile_count
Anzahl aller Profile mit Referenzen.
Attribute
widgetTranslations
Liste von Übersetzungen der Form :<Übersetzung> getrennt durch ',' um Texte im Widget zu übersetzen.
attr name widgetTranslations Abbrechen:Abbr,Speichern:Save
widgetWeekdays
Liste von Wochentagen getrennt durch ',' welche im Widget angzeigt werden.
Beginnend bei Montag. z.B.
attr name widgetWeekdays Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag
widgetEditDaysInRow
Anzahl in der in einer Reihe dargestellten Tage während der Bearbeitung. Default 2.
widgetEditOnNewPage
Wenn gesetzt ('1'), dann wird die Bearbeitung auf einer separaten\neuen Webseite gestartet.
configFile
Pfad und Dateiname wo die Profile gespeichert werden sollen.
Default: ./log/weekprofile-.cfg
icon
Änders des Icons zum Bearbeiten
Default: edit_settings
useTopics
Verwendung von Topic aktivieren.
tempON
Temperature für 'on'. z.B. 30
tempOFF
Temperature für 'off'. z.B. 4
withings
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: withings
Mit diesem Modul können Sie das Gerät xs1 der Firma EZcontrol auslesen. Das Modul ruft die Daten des xs1 via der Kommunikationsschnittstelle ab. Mit einem HTTP GET Requests erhält man die Antworten in Textform welche im Datenformat JSON (JavaScript Object Notation) ausgegeben werden.
Es werden Aktoren | Sensoren | Timer | Informationen vom xs1 ausgelesen und in Readings geschrieben. Bei jedem Auslesen werden nur Readings angelegt bzw. aktualisiert, welche auch im xs1 definiert und aktiv sind. Aktor | Sensor bzw. Timer Definitionen welche deaktiviert sind im xs1, werden NICHT ausgelesen.
Das Modul wurde entwickelt basierend auf dem Firmwarestand v4-Beta des xs1. Es kann aufgrund von unterschiedlichen Anpassungen innerhalb der Firmware des Herstellers zu Fehlern kommen.
Getestete Firmware: v4.0.0.5326 (Beta) @me | v3.0.0.4493 @ForumUser
Derzeit implementierte Typen des xs1 zur Verarbeitung:
xs1 ohne Passwortabfrage: define <NAME> xs1Bridge <IP>
xs1 mit Passwortabfrage: define <NAME> xs1Bridge <User>:<Passwort>@<IP>
Ein anlegen des Modules ohne Angabe der IP vom xs1 ist nicht möglich. Sollte die IP bei der Moduldefinierung nicht erreichbar sein, so bricht der Define Vorgang ab.
<IP> ist IP-Adresse im lokalen Netzwerk
<User> ist der Administrator Benutzer admin (standard)
<Passwort> ist das vergebene Administrator Passwort im xs1.
debug (0,1,2)
Dies bringt das Modul in eine sehr ausführliche Debug-Ausgabe im Logfile. Somit lassen sich Programmteile kontrollieren und Fehler überprüfen.
(Default, debug 0)
update_only_difference (0,1)
Die Aktoren welche im xs1 definiert wurden, werden nur bei Wertänderung aktualisiert.
(Default, update_only_difference 0)
view_Device_name (0,1)
Die Aktor Namen welche im xs1 definiert wurden, werden als Reading ausgelesen.
(Default, view_Device_name 0)
view_Device_function (0,1)
Die Aktor Funktionen welche im xs1 definiert wurden, werden als Reading ausgelesen.
(Default, view_Device_function 0)
xs1_blackl_aktor
Eine kommagetrennte Blacklist der Aktoren, welche nicht automatisch angelegt werden sollen sobald xs1_control = 1(aktiv).
(Beispiel: 2,40,3)
xs1_blackl_sensor
Eine kommagetrennte Blacklist der Sensoren, welche nicht automatisch angelegt werden sollen sobald xs1_control = 1(aktiv).
(Beispiel: 3,37,55)
xs1_control (0,1)
Die Freigabe zur Steuerung des xs1. Nach Aktivierung dieser, wird durch das xs1Dev Modul jeder Aktor und Sensor in FHEM angelegt.
(Default, xs1_control 0)
xs1_interval (0,30,60,180,360)
Das ist der Intervall in Sekunden, in dem die Readings neu gelesen werden vom xs1. Bei Aktoren werden nur unterschiedliche Zustände aktualisiert im eingestellten Intervall. Sensoren werden unabhängig vom Zustand immer im Intervall aktualisiert.
(Default, xs1_interval 60)
Erläuterung:
Auszug Readings:
Aktor_(01-64)
definierter Aktor mit jeweiligem Zustand im Gerät
Aktor_(01-64)_name
definierter Aktorname im Gerät
Aktor_(01-64)_function(1-4)
definierte Aktorfunktion im Gerät
Sensor_(01-64)
definierter Sensor im Gerät
Sensor_(01-64)
definierter Sensorname im Gerät
Timer_(01-128)
definierter Timer im Gerät
xs1_bootloader
Firmwareversion des Bootloaders
xs1_dhcp
DHCP an/aus
xs1_features
erworbene Feature beim Kauf (A = SENDEN | B = EMPFANGEN | C = Skripte/Makros | D = Speicherkartenzugriff)
xs1_firmware
Firmwareversion
xs1_start
Gerätestart
Die Meldung "Error: Can't connect ..." oder "ERROR: empty answer received" im System-Logfile, besagt das kurzzeitig keine Abfrage erfolgen konnte.
(Das kann häufiger bei DLAN vorkommen.)
Sollte das Gerät nach 5 Verbindungsversuchen ebenfalls keine Verbindung erhalten haben, so schaltet das Modul auf < disable > !
Logfile Erstellung erfolgt automatisch nach dem definieren. | Schema: define FileLog_xs1Bridge FileLog ./log/xs1Bridge-%Y-%m.log <Name>
Folgende Werte werden im Logfile erfasst: Timer | xs1-Statusinformationen
Sollte das Gerät nach 5 Verbindungsversuchen ebenfalls keine Verbindung erhalten haben, so schaltet das Modul auf < disable > !
Dieses Modul arbeitet mit dem Modul xs1Bridge zusammen. (Das Attribut xs1_control im Modul xs1Bridge muss auf 1 gestellt sein!)
Es kommuniziert mit diesem und legt sämtliche Aktoren des xs1 als Device im FHEM an. So kann man vom FHEM aus, die Aktoren der xs1 steuern.
Das Modul wurde entwickelt basierend auf dem Firmwarestand v4-Beta des xs1. Es kann aufgrund von unterschiedlichen Anpassungen innerhalb der Firmware des Herstellers zu Fehlern kommen.
Derzeit implementierte Typen des xs1 zur Verarbeitung:
Ein anlegen des Modules ohne Angabe des Typ und der ID vom xs1 ist nicht möglich.
<ID> ist interne ID im xs1.
<Typ> ist der Kürzel A für Aktoren oder S für Sensoren.
Beispiel:
define xs1Dev_Aktor_02 xs1Dev A 02 IODev=ezControl
Set
set <name> <value>
Wobei value der in der xs1 definierten Funktion entspricht. Bsp:
an
aus
dimup
dimupdown
umschalten
an, warten, aus
absolut
warten
langes AN
langes AUS
Stopp
an, warten, an
aus, warten, aus
Impuls
Get
N/A
Attribute
debug (0,1)
Dies bringt das Modul in eine sehr ausführliche Debug-Ausgabe im Logfile. Somit lassen sich Programmteile kontrollieren und Fehler überprüfen.
(Default, debug 0)
useSetExtensions (0,1)
Schaltet die SetExtensions ein bzw. aus.
(Default, useSetExtensions 0)
Erläuterung:
Auszug Internals:
xs1_function(1-4): definierte Funktion im Gerät
xs1_name: definierter Name im Gerät
xs1_typ: definierter Typ im Gerät
yowsup
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: yowsup
Wenn Sie einige Aufgaben automatisieren wollen, dann sollten Sie die Befehle
at oder notify 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.
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.
PERL Ausdrücke werden durch ein Semikolon (;) getrennt. In FHEM
"oneliners" müssen sie durch ein weiteres Semikolon (;;)
"escaped" (maskiert) werden
Beispiel:
{ my $a = 1+1;; Log 1, "Hello $a" }
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.
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...".
Notify kann auch dazu verwendet werden, um Macros manuell
auszuführen. Verwenden Sie den trigger-Befehl
um das Makro zu starten:
Um die Verwendung von Datum und Zeitangaben zu vereinfachen, wurden die
Variablen $sec, $min, $hour, $mday,
$month, $year, $wday, $yday, $isdst und $hms
für die Verwendung in PERL-"oneliners" eingeführt (s.
unter perldoc -f localtime). Ausnahmen: $month hat einen Wertebereich von 1
bis 12 und $year ist korrigiert von 1900.
Weiterhin enthält $hms die Zeit in dem HH:MM:SS Format und $today das
aktuellen Datum in YYYY-MM-DD Format.
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 holiday2we Attribut setzt, dann ist $we ebenfalls 1
bei Urlaubstagen.
Die folgenden Hilfsfunktionen sind in der Datei 99_Util.pm definiert (wird
wie jede mit 99_ beginnende Datei automatisch geladen):
min(a,b), max(a,b)
time_str2num("YYYY-MM-DD HH:MM:SS") gibt einen numerischen Wert
zurück, der die Berechnung von Zeitdifferenzen vereinfacht
abstime2rel("HH:MM:SS") wandelt absolute in relative Zeitangaben um
Um auf die Gerätestatus/Attribute zuzugreifen benutzen Sie bitte die
folgenden Funktionen:
Value(<devicename>)
gibt den Status eines Gerätes zurück (entsprechend dem
Ausdruck in Klammern, den Sie beim List-Befehl sehen).
OldValue(<devicename>)
OldTimestamp(<devicename>)
gibt den vorherigen Wert/Zeitstempel des Gerätes zurück.
ReadingsVal(<devicename>,<reading>,<defaultvalue>)
Gibt den Inhalt der "readings" zurück (den Inhalt der in
dem "Readings"-Abschnitt von "list device" angezeigt wird)
ReadingsNum(<devicename>,<reading>,
<defaultvalue>,<round>)
Gibt die erste Zahl aus dem Readingswert zurück.
Falls <round> spezifiziert ist, wird sie auf diese Anzahl von
Dezimalstellen gerundet.
ReadingsTimestamp(<devicename>,
<reading>,<defaultvalue>)
gibt den Zeitstempel des Readings zurück.
ReadingsAge(<devicename>,<reading>,<defaultvalue>)
gibt das Alter des Readings in Sekunden zurück.
OldReadingsVal(<devicename>,<reading>
,<defaultvalue>)
OldReadingsNum(<devicename>,<reading>,
<defaultvalue>,<round>)
OldReadingsTimestamp(<devicename>,<reading>
,<defaultvalue>)
OldReadingsAge(<devicename>,<reading>,<
defaultvalue>)
analog zu den Routinen oben, aber zum Zugriff auf die vorherigen Werte.
siehe: oldreadings
AttrVal(<devicename>,<attribute>,<defaultvalue>)
Gibt das entsprechende Attribut des Gerätes zurück
AttrNum(<devicename>,<attribute>,
<defaultvalue>,<round>)
Gibt die erste Zahl aus dem Attributwert zurück.
Falls <round> spezifiziert ist, wird sie auf diese Anzahl von
Dezimalstellen gerundet.
InternalVal(<devicename>,<internal>,
<defaultvalue>)
Gibt den Inhalt der "internal" zurück (den Inhalt der in
dem "Internals"-Abschnitt von "list device" angezeigt wird)
InternalNum(<devicename>,<internal>,
<defaultvalue>,<round>)
Gibt die erste Zahl aus dem "internal" zurück.
Falls <round> spezifiziert ist, wird sie auf diese Anzahl von
Dezimalstellen gerundet.
Wenn Sie das 99_SUNRISE_EL.pm Modul benutzen, haben Sie zugriff auf
folgende Funktionen:
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.
Die .gplot Dateien werden ebenso von den FHEMWEB/SVG
Modulen falls das plotmode-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 diesen FHEM Wiki Eintrag
zur Erstellung von Logdateien. Im folgenden ist eine minimale .gplot
Definition (gültig nur bei Plotmode SVG):
set terminal size <SIZE>
#FileLog 4:::
plot title 'Temperature' with lines
Die .gnuplot Datei besteht aus 3 Teilen:
set Befehle
Folgende "sets" werden erkannt:
terminal, nur die Größenparameter.
Dieser ist in der Regel auf <SIZE> gesetzt, welcher ersetzt wird
durch das plotsize Attribut von FHEMWEB oder
einer Weblink-Instanz.
title
Normalerweise gesetzt auf <TL> welcher durch das Weblink title-Attribut, oder durch <Lx>, welches
wiederum vom Weblink label Attribut ersetzt
wird.
ylabel,y2label
Linke und rechte vertikale Achsenbeschriftungen. Are also subject to
label replacement.
yrange,y2range
Legen den Wertebereich der linken und rechten y-Achse fest.
Beispiele:
set yrange [-0.1:1.1]
set y2range [0:]
ytics,y2tics
Beschriftung für die Werte der rechten/linken y-Achse.
Beispiele:
set ytics ("on" 0, "off" 1)
set y2tics
#FileLog Einträge
Jede Line des Plots muss eine dazugehörige #FileLog
Zeile haben. Zur Syntax lesen Sie bitte den Abschnitt "column_spec
paragraph" von der Filelog get
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
Plot Einträge
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:
axes x1y1 / x1y2
weist das Programm an die aktuelle Zeile einer der beiden Achsen (links
oder rechts) zuzuweisen.
title
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.
with <linetype>
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.
ls <linestyle>
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. 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.
lw <linewidth>
Setzt die Linienbreite der Linie. Dieses Attribut ist veraltet. Das
entprechende Feature der css-Datei/(Attribut ls) muss verwendet werden.