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) |
=> X | - Eingehender, erfolgloser Anruf (Verpasster Anruf) | |
=> O_O | - Eingehender Anruf, der durch einen Anrufbeantworter entgegen genommen wurde | |
<= | - Ausgehender Anruf (beendet) |
=> | - Eingehender Anruf (beendet) |
Definition
define <Name> FB_CALLLIST <FB_CALLMONITOR Name>
Set-Kommandos
- clear - löscht die gesamte Anrufliste
Get
Attributes
- do_not_notify
- readingFnAttributes
- disable
Optionales Attribut zur Deaktivierung der Anrufliste. Es werden dann keine Anruf-Events mehr verarbeitet und die Liste nicht weiter aktualisiert.
Mögliche Werte: 0 => Anrufliste ist aktiv, 1 => Anrufliste ist deaktiviert.
Standardwert ist 0 (aktiv)
- disableForIntervals
Optionales Attribut zur Deaktivierung der Anrufliste innerhalb von bestimten 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 beim 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.:
23:00-24:00 00:00-01:00
Standardwert ist nicht gesetzt (aktiv)
create-readings 0,1
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)
number-of-calls 1..20
Setzt die maximale Anzahl an Einträgen in der Anrufliste. Sollte die Anrufliste voll sein, wird das älteste Gespräch gelöscht.
Standardwert sind 5 Einträge
list-type all,incoming,outgoing,missed-calls,completed,active
Ist dieses Attribut gesetzt, werden nur bestimmte Typen von Anrufen in der Liste angezeigt:
all - Alle Anrufe werden angezeigt
incoming - Alle eingehenden Anrufe werden angezeigt (aktive und abgeschlossene)
outgoing - Alle ausgehenden Anrufe werden angezeigt (aktive und abgeschlossene)
missed-calls - Alle eingehenden, verpassten Anrufe werden angezeigt.
completed - Alle abgeschlossenen Anrufe werden angezeigt (eingehend und ausgehend)
active - Alle aktuell laufenden Anrufe werden angezeigt (eingehend und ausgehend)
Standardwert ist "all" (alle Anrufe anzeigen)
list-order descending,ascending
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)
internal-number-filter <hash>
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.
z.B.
attr <name> internal-number-filter 304050,304060
attr <name> internal-number-filter {'304050' => 'geschftl.', '304060' => 'privat'}
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)
external-mapping <hash>
Definiert eine eigene Zuordnung der externen Anschlussbezeichnung (Reading: external_connection) zu eigenen Bezeichnungen. Die Zuordnung erfolgt über eine Hash-Struktur.
z.B.
attr <name> external-mapping {'ISDN' => 'Festnetz', 'SIP0' => 'Anbieter A', 'SIP1' => 'Anbieter B'}
Die jeweils zugeordnete Bezeichnung wird in der Anrufliste dann entsprechend angezeigt anstatt des originalen Werten von FB_CALLMONITOR.
Standardwert ist nicht gesetzt (Keine Zuordnung, es werden die Originalwerte verwendet)
connection-mapping <hash>
Definiert eine eigene Zuordnung der Endgeräte (Reading: internal_connection) zu eigenen Bezeichnungen. Die Zuordnung erfolgt über eine Hash-Struktur.
z.B.
attr <name> connection-mapping {'DECT_1' => 'Mobilteil Küche', 'FON1' => 'Fax', 'Answering_Machine_1' => 'Anrufbeantworter'}
Die jeweils zugeordnete Bezeichnung wird in der Anrufliste dann entsprechend angezeigt anstatt des originalen Werten von FB_CALLMONITOR.
Standardwert ist nicht gesetzt (Keine Zuordnung, es werden die Originalwerte verwendet)
icon-mapping <hash>
Definiert eine eigene Zuordnung eines Anrufstatus zu einem Icon. Die Zuordnung erfolgt über eine Hash-Struktur.
z.B.
attr <name> icon-mapping {'incoming.connected' => 'phone_ring_in@yellow', 'outgoing.missed' => 'phone_missed_out@red'}
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)
time-format-string <string>
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")
language en,de
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)
show-icons 0,1
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)
visible-columns row,state,timestamp,name,number,internal,external,connection,duration
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)
no-heading 0,1
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)
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).
FB_CALLMONITOR
Das Modul FB_CALLMONITOR verbindet sich zu einer AVM FritzBox Fon und verarbeitet
Telefonie-Ereignisse.(eingehende & ausgehende Telefonate)
Um dieses Modul nutzen zu können, muss der Callmonitor via Kurzwahl mit einem Telefon aktiviert werden.
.
#96*5* - Callmonitor aktivieren #96*4* - Callmonitor deaktivieren
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
- 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 - gibt eine Liste aller bekannten Telefonbucheinträge 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))
Attribute
- do_not_notify
- readingFnAttributes
- disable
Optionales Attribut zur Deaktivierung des Callmonitors. Es können dann keine Anruf-Events mehr erkannt und erzeugt werden.
Mögliche Werte: 0 => Callmonitor ist aktiv, 1 => Callmonitor ist deaktiviert.
Standardwert ist 0 (aktiv)
- reverse-search (phonebook,klicktel.de,dasoertliche.de,search.ch,dasschnelle.at)
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)
- reverse-search-cache
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.
Mögliche Werte: 0 => deaktiviert , 1 => aktiviert
Standardwert ist 0 (deaktiviert)
- reverse-search-cache-file <Dateipfad>
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.
- reverse-search-text-file <Dateipfad>
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:
<Nummer1>,<Name1>
<Nummer2>,<Name2>
...
<NummerN>,<NameN>
Die Datei kann dabei auch Kommentar-Zeilen enthalten mit # vorangestellt. Sollte die Datei nicht existieren, wird sie durch FHEM erstellt.
- reverse-search-phonebook-file <Dateipfad>
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)
- remove-leading-zero
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.
Mögliche Werte: 0 => deaktiviert , 1 => aktiviert
Standardwert ist 0 (deaktiviert)
- unique-call-ids
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.
Mögliche Werte: 0 => deaktiviert , 1 => aktiviert
Standardwert ist 0 (deaktiviert)
- local-area-code
Verwendet die gesetze Vorwahlnummer bei Rückwärtssuchen von Ortsgesprächen (z.B. 0228 für Bonn)
- country-code
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).
Standardwert ist 0049 (Deutschland)
- fritzbox-remote-phonebook
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.
Mögliche Werte: 0 => deaktiviert , 1 => aktiviert
Standardwert ist 0 (deaktiviert)
- fritzbox-remote-phonebook-via
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: web,telnet,tr064
Standardwert ist "web" (Abfrage aller verfügbaren Telefonbücher über die Web-Oberfläche)
- fritzbox-remote-phonebook-exclude
Eine komma-separierte Liste von Telefonbuch-ID's welche beim einlesen übersprungen werden sollen. Dieses Attribut greift nur beim einlesen der Telefonbücher via "web"-Methode (siehe Attribut fritzbox-remote-phonebook-via). Eine Liste aller möglichen Werte kann über das Get-Kommando showPhonebookIds angezeigt werden.
Standardmäßig ist diese Funktion deaktiviert (alle Telefonbücher werden eingelesen)
- fritzbox-user
Der Username für das Telnet-Interface, sofern das Telefonbuch direkt von der FritzBox geladen werden soll (Attribut: fritzbox-remote-phonebook). Dieses Attribut ist nur notwendig, wenn mehrere Benutzer auf der FritzBox konfiguriert sind.
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) oder "timeout" (Zeitüberschreitung bei der Abfrage) enthalten. Im Falle einer Zeitüberschreitung 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 (Festnetz, VoIP Nummer, ...)
- 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.
- missed_call_line - Analog zu "missed_call" wird dieses Event nur generiert, wenn ein eingehender Anruf nicht beantwortet wird. Es zeigt die Rufnummer an über, den dieser unbeantwortete Anruf eingegangen ist.
Rechtlicher Hinweis:
- klicktel.de reverse search ist powered by telegate MEDIA
FHEM2FHEM
FHEM2FHEM ist ein Hilfsmodul, um mehrere FHEM-Installationen zu verbinden.
Define
define <name> FHEM2FHEM <host>[:<portnr>][:SSL] [LOG:regexp|RAW:devicename] {portpassword}
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.
Anmerkung: Wenn das remote FHEM auf einem eigenen Host läuft, muss
"telnetPort" des remote FHEM als global festgelegt sein.
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.
- 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
Set
- reopen
Öffnet die Verbindung erneut.
Get
Attribute
FHEMWEB
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]
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) .
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
- addStateEvent
- allowedCommands
Eine Komma getrennte Liste der erlaubten Befehle. Bei einer leeren
Liste (, dh. nur ein Komma) wird dieser FHEMWEB-Instanz "read-only".
Falls es auf get,set gesetzt ist, dann sind in dieser
FHEMWEB Instanz keine Konfigurationsänderungen möglich, nur
"normale" Bedienung der Schalter/etc.
Dieses Attribut sollte zusammen mit dem hiddenroom/hiddengroup
Attributen verwendet werden.
Achtung: allowedCommands sollte wie hier beschrieben
funktionieren, allerdings können wir keine Garantie geben,
daß man sie nicht überlisten, und Schaden anrichten kann.
- allowfrom
- basicAuth, basicAuthMsg
Fragt username/password zur Autentifizierung ab. Es gibt mehrere
Varianten:
- falls das Argument nicht in {} eingeschlossen ist, dann wird
es als base64 kodiertes benutzername:passwort interpretiert.
Um sowas zu erzeugen kann man entweder einen der zahlreichen
Webdienste verwenden, oder das base64 Programm. Beispiel:
$ echo -n fhemuser:secret | base64
ZmhlbXVzZXI6c2VjcmV0
fhem.cfg:
attr WEB basicAuth ZmhlbXVzZXI6c2VjcmV0
- Werden die Argumente in {} angegeben, wird es als perl-Ausdruck
ausgewertet, die Variablen $user and $password werden auf die
eingegebenen Werte gesetzt. Falls der Rückgabewert wahr ist,
wird die Anmeldung akzeptiert.
Beispiel:
attr WEB basicAuth { "$user:$password" eq "admin:secret" }
- 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:
attr lamp cmdIcon on:control_centr_arrow_up off:control_centr_arrow_down
- 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.
- 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 ueber FHEMWEB abgesetzten Kommando verlangt. Falls der Wert
random ist, dann wird ein Zufallswert beim jeden FHEMWEB Start neu
generiert.
Es dient zum Schutz von Cross Site Resource Forgery Angriffen.
Default ist leer, also nicht aktiv.
- 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
- 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:
attr lamp devStateIcon on:closed off:open
attr lamp devStateIcon on::A0 off::AI
attr lamp devStateIcon .*:noIcon
Anmerkung: Wenn das Icon ein SVG Bild ist, kann das @colorname Suffix
verwendet werden um das Icon einzufärben. Z.B.:
attr Fax devStateIcon on:control_building_empty@red
off:control_building_filled:278727
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:
attr sensor devStateStyle style="text-align:left;;font-weight:bold;;"
- 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, 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)$
- 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 oben), jedoch auf Gerätegruppen bezogen.
Beispiel: attr WEBtablet hiddengroup FileLog,dummy,at,notify
- 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.
- 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:
mkdir certs
cd certs
openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout
server-key.pem
- 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:default:fhemSVG:openautomation
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 }
Falls der Dateiname mit - anfängt, dann wird diese sonst
aus www/pgm2 automatisch geladene Datei nicht geladen. (z.Bsp.:
-fhemweb_fbcalllist.js)
- longpoll
Dies betrifft die Aktualisierung der Gerätestati in der
Weboberfläche. Ist longpoll aktiviert, werden
Statusänderungen sofort im Browser dargestellt. ohne die Seite
manuell neu laden zu müssen. Standard ist aktiviert.
- 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.
- 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($d, "alias_hu", $devName)
- 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
SVG Grafiken werden als Teil der <embed> Tags dargestellt, da
früher das der einzige Weg war SVG darzustellen, weiterhin
erlaubt es das parallele Berechnen via plotfork (s.o.)
Falls plotEmbed auf 0 gesetzt wird, dann werden die SVG Grafiken als
Teil der HTML-Seite generiert, was leider das plotfork Attribut
wirkungslos macht.
- plotfork
Normalerweise wird die Ploterstellung im Hauptprozess ausgeführt,
FHEM wird wärend dieser Zeit nicht auf andere Ereignisse
reagieren.
Falls dieses Attribut auf einen nicht 0 Wert gesetzt ist, dann wird die
Berechnung in weitere Prozesse ausgelagert. Das kann die Berechnung auf
Rechnern mit mehreren Prozessoren beschleunigen, allerdings kann es auf
Rechnern mit wenig Speicher (z.Bsp. FRITZ!Box 7390) zum automatischen
Abschuss des FHEM Prozesses durch das OS führen.
- 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.
- 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.
- 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.
- 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:
define d1 dummy
attr d1 webCmd state
attr d1 setList state:on,off
define d2 dummy
attr d2 webCmd state
attr d2 setList state:slider,0,1,10
define d3 dummy
attr d3 webCmd state
attr d3 setList state:time
Anmerkung: dies ist ein Attribut für das anzuzeigende Gerät,
nicht für die FHEMWEBInstanz.
- 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 fuer einen bestimmten Parameter (Set/Get/Attribut)
vorgesehene Widgets ändern kann.
- Ist der Modifier ":noArg", wird kein weiteres Eingabefeld
angezeigt.
- Ist der Modifier ":time", wird ein in Javaskript geschreibenes
Zeitauswahlmenü angezeigt.
- Ist der Modifier ":textField", wird ein Eingabefeld
angezeigt.
- Ist der Modified ":textField-long" ist wie textField, aber beim
Click im Eingabefeld ein Dialog mit einer HTML textarea
(60x25) wird geöffnet.
- Ist der Modifier in der Form
":slider,<min>,<step>,<max>[,1]", so wird ein in
JavaScript programmierter Slider angezeigt. Das optionale 1
(isFloat) vermeidet eine Rundung der Fliesskommazahlen
- Ist der Modifier ":multiple,val1,val2,...", dann ist eine
Mehrfachauswahl möglich und es können neue Werte gesetzt
werden. Das Ergebnis ist Komma-separiert.
- Ist der Modifier ":multiple-strict,val1,val2,...", dann ist eine
Mehrfachauswahl möglich, es können jedoch keine neuen
Werte definiert werden. Das Ergebnis ist Komma-separiert.
- Ist der Modifier ":knob,min:1,max:100,...", dass ein
jQuery knob Widget wird angezeigt. Die Parameter werden als eine
Komma separierte Liste von Key:Value Paaren spezifiziert, wobei das
data- Präfix entfällt.
- Ist der Modifier ":sortable,val1,val2,...", dann 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.
- Ist der Modifier ":sortable-strict,val1,val2,...", dann 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.
- Ist der Modifier ":sortable-given,val1,val2,...", dann 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.
- Ist der Modifier ":uzsuToggle,zust1,zust2", dann ist es
mögliche mit einem Toggle-Button zwischen zwei
Zuständen zu wählen. Der Erste ist der aktive Zustand.
- Ist der Modifier ":uzsuSelect,val1,val2,...", dann ist es
mögliche in einer Buttonleiste meherere Werte auszuwählen.
Das Ergebnis ist Komma-separiert.
- Ist der Modifier ":uzsuSelectRadio,val1,val2,...", dann ist es
mögliche in einer Buttonleiste einen aus meherere Werten
auszuwählen.
- Ist der Modifier ":uzsuDropDown,val1,val2,...", dann ist es
mögliche mit einem DropDown Menü einen der Werte
auszuwählen.
- Ist der Modifier ":uzsuTimerEntry[,modifier2]", 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
- Ist der Modifier ":uzsu[,modifier2]", werden mehere
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.
- In allen anderen Fällen (oder falls der Modifier explizit
mit :select anfaegt) erscheint ein HTML select mit allen Modifier
Werten.
Falls das Attribut für eine WEB Instanz gesetzt wurde, dann wird
es bei allen von diesem Web-Instan angezeigten Geräten angewendet.
Beispiele:
attr FS20dev widgetOverride on-till:time
attr WEB widgetOverride room:textField
attr dimmer widgetOverride dim:knob,min:1,max:100,step:1,linecap:round
attr myToggle widgetOverride state:uzsuToggle,123,xyz
attr mySelect widgetOverride state:uzsuSelect,abc,123,456,xyz
attr myTemp widgetOverride state:uzsuDropDown,18,18.5,19,19.5,20,20.5,21,21.5,22,22.5,23
attr myTimerEntry widgetOverride state:uzsuTimerEntry
attr myTimer widgetOverride state:uzsu
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
FHT
Fhem kann FHT Funktelegramme (868.35 MHz) entweder mit einem FHZ oder einem CUL empfangen, daher muss
dieses zuerst definiert sein.
Define
define <name> FHT <fhtaddress>
<fhtaddress> ist eine vierstellige HEX Zahl entsprechend der
Adresse des FHT80b Gerätes.
Beispiel:
Mehr dazu im FHT Abschnitt set.
Set
set <name> <valuetype> <value>
Wobei value eines von folgenden ist:
desired-temp
day-temp night-temp
report1 report2
refreshvalues
mode
holiday1 holiday2 # siehe mode holiday_short oder holiday
manu-temp # Keine Ahnung was das bewirkt
year month day hour minute
time date
lowtemp-offset # Alarm-Temp.-Differenz
windowopen-temp
mon-from1 mon-to1 mon-from2 mon-to2
tue-from1 tue-to1 tue-from2 tue-to2
wed-from1 wed-to1 wed-from2 wed-to2
thu-from1 thu-to1 thu-from2 thu-to2
fri-from1 fri-to1 fri-from2 fri-to2
sat-from1 sat-to1 sat-from2 sat-to2
sun-from1 sun-to1 sun-from2 sun-to2
Beispiele:
set wz desired-temp 22.5
set fl desired-temp 20.5 day-temp 19.0 night-temp 16.0
Hinweise:
- Folgende Events werden (mehr oder weniger regelmäßig) von
jedem FHT Device gemeldet:
measured-temp actuator actuator1...actuator8 warnings
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
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.
- ignore
- do_not_notify
- model (fht80b)
- showtime
- IODev
- eventMap
- readingFnAttributes
Erzeugte Events:
- actuator
- actuator1 actuator2 actuator3 actuator4
actuator5 actuator6 actuator7 actuator8
(wird gesendet wenn ein Offset zum entsprechenden Ventil konfiguriert wurde)
- mon-from1 mon-to1 mon-from2 mon-to2
- tue-from1 tue-to1 tue-from2 tue-to2
- wed-from1 wed-to1 wed-from2 wed-to2
- thu-from1 thu-to1 thu-from2 thu-to2
- fri-from1 fri-to1 fri-from2 fri-to2
- sat-from1 sat-to1 sat-from2 sat-to2
- sun-from1 sun-to1 sun-from2 sun-to2
- mode
- holiday1 holiday2
- desired-temp
- measured-temp measured-low measured-high
- warnings
- manu-temp
- year month day hour minute
- day-temp night-temp lowtemp-offset windowopen-temp
- ack can-xmit can-rcv ack2 start-xmit end-xmit (Nur wenn das CUL
für die Übertragung von FHT Protokoll Daten konfiguriert
ist)
FHT8V
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:
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.
Attributes
FHZ
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FHZ
FLOORPLAN
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
Get
get <name> config
Zeigt die Konfiguration des FLOORPLAN incl. allen Attributen an. Kann fuer ein include-file verwendet werden.
Attribute
- userattr fp_<name> <top>,<left>[,<style>[,<description>]]
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
- Vererbt von FHEMWEB
Die folgenden Attribute werden von der zugrundliegenden FHEMWEB-Instanz vererbt:
FRAMEBUFFER
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: FRAMEBUFFER
FRITZBOX
(en | de)
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 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.
Benötigt 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! Die Fritz!Box ermöglicht auch eine Weiterleitung in Abhängigkeit von der anrufenden Nummer. Diese Art der Weiterleitung kann hiermit nicht geschaltet werden.
Benötigt die API: Telnet oder webcm.
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 say:Es regnet
set fritzbox ring 610 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. Standard-Klingelton ist der interne Klingelton des Gerätes.
Der Klingelton wird für Rundrufe (9 oder 50) ignoriert.
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.
Alternativ kann mit 'play:' auch ein MP3-Link 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.
Wenn der Anruf angenommen wird, hört der Angerufene die Wartemusik (music on hold), welche ebenfalls zur Nachrichtenübermittlung genutzt werden kann.
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)
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"
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.
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.
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.
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.
- readingFnAttributes
Readings
- alarm1 - Name des Weckrufs 1
- alarm1_state - Aktueller Status des Weckrufs 1
- alarm1_target - Interne Nummer des Weckrufs 1
- alarm1_time - Weckzeit des Weckrufs 1
- alarm1_wdays - Wochentage des Weckrufs 1
- box_dect - Aktueller Status des DECT-Basis
- box_fwVersion - Firmware-Version der Box, wenn veraltet dann wird '(old)' angehangen
- box_guestWlan - Aktueller Status des Gäste-WLAN
- box_guestWlanRemain - Verbleibende Zeit bis zum Ausschalten des Gäste-WLAN
- box_ipExtern - Internet IP der Fritz!Box
- box_model - Fritz!Box-Modell
- box_moh - Wartemusik-Einstellung
- box_powerRate - aktueller Stromverbrauch in Prozent der maximalen Leistung
- box_rateDown - Download-Geschwindigkeit des letzten Intervals in kByte/s
- box_rateUp - Upload-Geschwindigkeit des letzten Intervals in kByte/s
- box_stdDialPort - Anschluss der geräteseitig von der Wählhilfe genutzt wird
- box_tr064 - Anwendungsschnittstelle TR-064 (wird auch von diesem Modul benötigt)
- box_tr069 - Provider-Fernwartung TR-069 (sicherheitsrelevant!)
- box_wlan_2.4GHz - Aktueller Status des 2.4-GHz-WLAN
- box_wlan_5GHz - Aktueller Status des 5-GHz-WLAN
- dect1 - Name des DECT Telefons 1
- dect1_alarmRingTone - Klingelton beim Wecken über das DECT Telefon 1
- dect1_custRingTone - Benutzerspezifischer Klingelton des DECT Telefons 1
- dect1_fwVersion - Firmware-Version des DECT Telefons 1
- dect1_intern - Interne Nummer des DECT Telefons 1
- dect1_intRingTone - Interner Klingelton des DECT Telefons 1
- dect1_manufacturer - Hersteller des DECT Telefons 1
- dect1_model - Modell des DECT Telefons 1
- dect1_radio - aktueller Internet-Radio-Klingelton des DECT Telefons 1
- diversity1 - Eigene Rufnummer der Rufumleitung 1
- diversity1_dest - Zielnummer der Rufumleitung 1
- diversity1_state - Aktueller Status der Rufumleitung 1
- fon1 - Name des analogen Telefonanschlusses 1 an der Fritz!Box
- fon1_intern - Interne Nummer des analogen Telefonanschlusses 1
- fon1_out - ausgehende Nummer des Anschlusses 1
- mac_01_26_FD_12_01_DA - MAC Adresse und Name eines aktiven Netzwerk-Gerätes
- 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
FS20
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.
Define
define <name> FS20 <housecode> <button>
[fg <fgaddr>] [lm <lmaddr>] [gm FF]
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.
Beispiele:
define lamp FS20 7777 00 fg F1 gm F
define roll1 FS20 7777 01
define otherlamp FS20 24242424 1111 fg 4412 gm 4444
define otherroll1 FS20 24242424 1114
Set
set <name> <value> [<time>]
Wobei value einer der folgenden Werte sein kann:
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
Die set extensions sind ebenfalls
unterstützt.
Beispiele:
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
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.
- 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:
Sender/Sensor: fs20fms fs20hgs fs20irl fs20kse fs20ls
fs20pira fs20piri fs20piru fs20s16 fs20s20 fs20s4 fs20s4a fs20s4m
fs20s4u fs20s4ub fs20s8 fs20s8m fs20sd fs20sn fs20sr fs20ss
fs20str fs20tc1 fs20tc6 fs20tfk fs20tk fs20uts fs20ze fs20bf fs20si3
Dimmer: fs20di fs20di10 fs20du
Empfänger/Aktor: fs20as1 fs20as4 fs20ms2 fs20rgbsa fs20rst
fs20rsu fs20sa fs20sig fs20sm4 fs20sm8 fs20st fs20su fs20sv fs20ue1
fs20usr fs20ws1
- 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.
- do_not_notify
- showtime
- readingFnAttributes
Erzeugte Events:
Von einem FS20 Gerät können folgende Events empfangen werden:
- on
- off
- toggle
- dimdown
- dimup
- dimupdown
- on-for-timer
Welches Event gesendet wird ist Geräteabhängig und kann manchmal
auf dem Device konfiguriert werden.
FileLog
Define
define <name> FileLog <filename> <regexp> [readonly]
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:
define lamplog FileLog %L/lamp.log lamp
define wzlog FileLog ./log/wz-%Y-%U.log
wz:(measured-temp|actuator).*
Mit ISO 8601 Wochennummern falls unterstützt:
define wzlog FileLog ./log/wz-%G-%V.log
wz:(measured-temp|actuator).*
Set
- reopen
Erneutes Öffnen eines FileLogs nach händischen
Änderungen in dieser Datei.
- 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::
Attribute
GDS
Sorry, keine deutsche Dokumentation vorhanden.
Die englische Doku gibt es hier: GDS
GEOFANCY
Eine deutsche Version der Dokumentation ist derzeit nicht vorhanden. Die englische Version ist hier zu finden:
GHoma
(en | de)
Verbindet fhem mit einem G-Homa Zwischenstecker
Vorbereitung:
- 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)
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
- Network Parameters settings:
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)
- 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
Set
set <name> <value>
Gültige Werte für value :
Die set extensions werden auch unterstützt.
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.
- readingFnAttributes
GUEST
Define
define <rg_FirstName> GUEST [<Device Name der Bewohnergruppe>]
Stellt ein spezielles Dummy Device bereit, welches einen Gast 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.
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 den Gruppen rgr_Residents und rgr_Guests zu sein
Bitte beachten, dass das RESIDENTS Gruppen Device zunächst angelegt werden muss, bevor ein GUEST Objekt dort Mitglied werden kann.
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 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_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 Berechnung der Zeitspannen (siehe Readings durTimer*)
-
rg_passPresenceTo - synchronisiere die Anwesenheit mit anderen GUEST oder ROOMMATE Devices; mehrere Devices durch Leerzeichen trennen
-
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
HCS
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: HCS
HEATRONIC
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.
Define:
define <name> HEATRONIC <device>
Beispiel:
define Heizung HEATRONIC /dev/ttyUSB0@9600
Attributes:
- 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
Readings:
- ch_Tflow_desired
benötigte Vorlauf-Temperatur (im Warmwasser-Modus max. Kesseltemperatur)
- ch_Tflow_measured
aktuell gemessene Vorlauf-Temperatur
- ch_Treturn
aktuell gemessene Rücklauf-Temperatur
- ch_Tmixer
aktuell gemessene Mischer-Temperatur
- ch_mode
aktueller Betriebsmodus (0=aus, 1=Heizen, 2=Warmwasser)
- ch_burner_fan
Status Brenner-Gebläse (0=aus, 1=läuft)
- ch_burner_operation
Brenner-Status (0=off, 1=an)
- ch_pump_heating
Status der Heizungspumpe(0=aus, 1=läuft)
- ch_pump_cylinder
Status der Speicherladepumpe (0=aus, 1=läuft)
- ch_pump_circulation
Status der Zirkulationspumpe (0=aus, 1=läuft)
- ch_burner_power
Brennerleistung in Prozent
- ch_pump_heating_power
Leistung der Heizungspumpe in Prozent
- ch_Toutside
Außentemperatur
- ch_runtime_total
Brennerlaufzeit in Minuten (Heizen und Warmwasser)
- ch_runtime_ch
Brennerlaufzeit in Minuten (nur Heizen)
- ch_runtime_dhw
Brennerlaufzeit in Minuten (nur Warmwasser)
- ch_starts_tot
Anzahl der Brennerstarts (Heizen und Warmwasser)
- ch_starts_ch
Anzahl der Brennerstarts (nur Heizen)
- ch_starts_dhw
Anzahl der Brennerstarts (nur Warmwasser)
- ch_time
Systemzeit der Heizung
- hc1_Tdesired .. hc4_Tdesired
benötigte Raumtemperatur Heizkreis 1-4
- hc1_Tmeasured .. hc4_Tmeasured
aktuell gemessene Raumtemperatur Heizkreis 1-4
- hc1_Tmode .. hc4_Tmode
Betriebsmodus Heizkreis 1-4
- dhw_Tdesired
benötigte Warmwasser-Temperatur
- dhw_Tmeasured
aktuell gemessene Warmwasser-Temperatur
- dhw_Tcylinder
aktuell gemessene Warmwasser-Temperatur Speicher oben
- sol_Tcollector
Temperatur Kollektorgruppe 1
- sol_Tcylinder_bottom
Temperatur Solarspeicher unten
- sol_yield_last_hour
Kollektorertrag der letzten Stunde
- sol_yield_2
Der Wert ist noch nicht bekannt. Der Name kann sich noch ändern.
- sol_pump
Status der Solarpumpe (0=off, 1=läuft)
- sol_runtime
Laufzeit der Solarpumpe in Minuten
HMLAN
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
Define
define <name> HMLAN <ip-address>[:port]
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.
Set
- hmPairForSec
- hmPairSerial
- 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.
Get
- assignIDs
Gibt eine Liste aller diesem IO zugewiesenen IOs aus.
Attributes
- do_not_notify
- dummy
- addvaltrigger
- 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
- hmId
- hmKey
- hmKey2
- hmKey3
- hmKey4
- 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.
- hmProtocolEvents
- 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
parameter
- 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
- msgLoadHistory
Funklast vergangener Zeitabschnitte.
- 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.
Parameter und Readings
- prot_disconnect
letzter HMLAN disconnect
- prot_init
letzter HMLAN init
- prot_keepAlive
HMLAN unterbrochen, wahrscheinlich um langsame
keep-alive Meldungen zu senden.
- prot_ok
letzte HMLAN ok Bedingung
- prot_timeout
letzter HMLAN Timeout
- prot_Warning-HighLoad
hohe Auslastung erreicht -
HMLAN hat nur noch 10% seiner Leistungsfähigkeit übrig
- prot_ERROR-Overload
Überlastung -
HMLAN wird zwar Meldungen empfangen aber keine Meldungen mehr absenden
- prot_Overload-released
Überlastung beendet - normale Arbeitsweise ist möglich
=end html
=cut
HMS
Define
define <name> HMS <housecode>
Der <housecode> ist eine vierstellige HEX-Zahl,
entsprechend dem HMS Gerät.
Beispiel:
Hinweise:
- Derzeit werden folgende Komponenten Unterstützt: HMS100-T
HMS100-TF HMS100-WD HMS100-MG HMS100-TFK HMS100-CO HMS100-FIT RM100-2
RM100-3
- 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.
Set
Get
Attributes
HMinfo
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.
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.
Filter
werden wie folgt angewendet:
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
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
Define
define <name> HMinfo
Es muss nur eine Instanz ohne jegliche Parameter definiert werden.
Get
- models
zeige alle HM Modelle an, die von FHEM unterstützt werden
- param [filter] <name> <name>...
zeigt Parameterwerte (Attribute, Readings, ...) für alle Instanzen in Tabellenform an
- register [filter]
zeigt eine Tabelle mit Registern einer Instanz an
- regCheck [filter]
validiert Registerwerte
- 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
- templateList [<name>]
zeigt eine Liste von Vorlagen. Ist kein Name angegeben, werden alle Vorlagen angezeigt
- templateUsg <template>
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 Protocol 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
Set
Obwohl die Kommandos Einstellungen abrufen (get function), werden sie mittels set ausgeführt, um die
Benutzung mittels Web Interface zu erleichtern.
- update
Aktualisiert HM Status Zähler.
- autoReadReg [filter]
Aktiviert das automatische Lesen der Konfiguration für ein CUL_HM Gerät, wenn das Attribut autoReadReg auf 1 oder höher steht.
- clear [filter] [Protocol|readings|msgStat|register|rssi]
Führt ein set clear ... für alle HM Instanzen aus
- Protocol bezieht sich auf set clear msgEvents
- readings bezieht sich auf set clear readings
- rssi löscht alle rssi Zähler
- msgStat löscht die HM Meldungsstatistik
- register löscht alle Einträge in den Readings
- saveConfig [filter] [<file>]
Sichert alle HM Registerwerte und Peers. Siehe CUL_HM saveConfig.
purgeConfig wird automatisch ausgeführt, wenn die Datenmenge 1 MByte übersteigt.
- 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.
- filename Name der Datei. Vorgabe ist tempList.cfg
Beispiel für einen Dateiinhalt:
entities:HK1_Climate,HK2_Clima
tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
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
tempListThu>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
entities:hk3_Climate
tempListFri>06:00 17.0 12:00 21.0 23:00 20.0 24:00 19.5
tempListMon>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
tempListSat>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
tempListSun>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
tempListThu>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
tempListTue>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
tempListWed>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
Datei Schlüsselwörter
- 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.
Attribute
- 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:
attr hm sumStatus battery,sabotageError
könnte nachfolgende Ausgaben erzeugen
W_sum_batterie ok:5 low:3
W_sum_sabotageError on:1
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:
attr hm sumERROR battery:ok,sabotageError:off,overheat:off,Activity:alive:unknown
erzeugt folgende Ausgabe:
ERR_batterie low:3
ERR_sabotageError on:1
ERR_overheat on:3
ERR_Activity dead:5
- autoUpdate
führt den Befehl periodisch aus.
Beispiel:
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
- configFilename
Standard Dateiname zur Verwendung von
saveConfig,
purgeConfig,
loadConfig
- hmManualOper
auf 1 gesetzt, verhindert dieses Attribut jede automatische Aktion oder Aktualisierung seitens CUL_HM.
Variablen
- 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.
Beispiele:
ERR___rssiCrit LightKittchen,WindowDoor,Remote12
ERR__protocol NACK:2 ResendFail:5 CmdDel:2 CmdPend:1
ERR__protoNames LightKittchen,WindowDoor,Remote12,Ligth1,Light5
ERR_battery: low:2;
ERR_names: remote1,buttonClara,
I_rssiMinLevel 99>:3 80<:0 60<:7 59<:4
W_sum_battery: ok:5;low:2;
W_sum_overheat: off:7;
C_sumDefined: entities:23 device:11 channel:16 virtual:5;
=end html
=cut
HP1000
Define
define <WeatherStation> HP1000 [ ]
Stellt einen Webhook für die HP1000 Wetterstation von Fine Offset Electronics bereit.
Es muss noch eine dedizierte FHEMWEB Instanz angelegt werden, wo das Attribut webname auf "weatherstation" gesetzt wurde.
Kein anderer Name funktioniert, da dieser hard im HP1000 Ger%auml;t hinterlegt ist!
Da die URI ebenfalls fest kodiert ist, kann mit einer einzelnen FHEM Installation maximal eine HP1000 Station 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 HP1000 Gerä muss sichergestellt sein, dass ein DNS Name statt einer IP Adresse verwendet wird, da einige Revisionen damit nicht umgehen können.
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
Heating Control
enable # enables the Heating_Control
disable # disables the Heating_Control
Examples:
set hc disable
set hc enable
Get
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.
Beispiel:
attr wd delayedExecutionCond isDelayed("%HEATING_CONTROL","%WEEKDAYTIMER","%TIME","%NAME","%EVENT")
Die Parameter %HEATING_CONTROL(timer Name) %TIME %NAME(device Name) %EVENT werden zur Laufzeit durch die echten Werte ersetzt.
Beispielfunktion:
sub isDelayed($$$$$) {
my($hc, $wdt, $tim, $nam, $event ) = @_;
my $theSunIsStillshining = ...
return ($tim eq "16:30" && $theSunIsStillshining) ;
}
- 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.
- disable
- event-on-update-reading
- event-on-change-reading
- stateFormat
- windowSensor
Definiert eine Liste mit Fensterkontakten. Wenn das Reading window state eines Fensterkontakts open ist, wird der aktuelle Schaltvorgang verzögert.
Hideki
Das Hideki module dekodiert empfangene Nachrichten von Wettersensoren, welche das Hideki Protokoll verwenden.
Unterstützte Hersteller
- Hama
- Bresser
- TFA Dostman
- Arduinos with remote Sensor lib from Randy Simons
- Cresta
- Hideki
- 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.
Erzeugte Readings
- state (T:x H:y B:z)
- temperature (°C)
- humidity (0-100)
- battery (ok or low)
Set
Get
Attribute
HourCounter
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: HourCounter
I2C_BMP180
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.
i2c-bcm2708
i2c-dev
Installation des HiPi Perl Moduls:
wget http://raspberry.znix.com/hipifiles/hipi-install
perl hipi-install
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. For HiPi ist es allerdings notwendig.
Beispiel:
define BMP180 I2C_BMP180 /dev/i2c-0
attr BMP180 oversampling_settings 3
attr BMP180 poll_interval 5
define BMP180 I2C_BMP180
attr BMP180 IODev RPiI2CMod
attr BMP180 oversampling_settings 3
attr BMP180 poll_interval 5
Set
set BMP180 readValues
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
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ä für die Berechnung des
Luftdrucks bezogen auf Meereshöhe (Normalnull) NN herangezogen.
Bemerkung: Dies ist ein globales Attribut.
attr global altitude 220
I2C_DS1307
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: I2C_DS1307
I2C_EEPROM
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
- EEPROM_size
Speichergröße des EEPROM
Standard: 128, gültige Werte: 128 (128bit), 2k (2048bit)
- IODev
- ignore
- do_not_notify
- showtime
I2C_LCD
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: I2C_LCD
I2C_MCP23008
(en | de)
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:
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:
-
active-low (INT ist active low)
-
active-high (INT ist active high)
-
open-drain (INT ist open drain)
- IODev
- ignore
- do_not_notify
- showtime
I2C_MCP23017
(en | de)
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:
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)
- IODev
- ignore
- do_not_notify
- showtime
I2C_MCP342x
(en | de)
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
- IODev
- do_not_notify
- showtime
I2C_PCA9532
(en | de)
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
- IODev
- ignore
- do_not_notify
- showtime
I2C_PCF8574
(en | de)
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:
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 Leerzeichen getrennte Portnummern die als Inputs genutzt werden.
Ports in dieser Liste können nicht geschrieben werden.
Standard: no, gültige Werte: 0 1 2 .. 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
- IODev
- ignore
- do_not_notify
- showtime
I2C_SHT21
(en | de)
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
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
- IODev
- do_not_notify
- showtime
I2C_TSL2561
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: I2C_TSL2561
IF
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)
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:
IF ([switch] eq "off") (set lamp on)
entspricht:
{if (Value('switch') eq "off"){fhem('set lamp on')}}
IF ([living_room:temperature] > 12) (set lamp on, set lamp2 off)
entspricht:
{if (ReadingVal('living_room','temperature','') > 12) {fhem('set lamp on');;fhem('set lamp2 off')}}
IF ([bathroom:humidity] > 70) (set led red) ELSE (set led green)
entspricht:
{if (ReadingsVal('bathroom','humidity','') > 70) {fhem('set led red')} else {fhem('set led green')}}
IPCAM
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: IPCAM
IPWE
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: IPWE
IT - InterTechno
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önnen 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: IT Protokoll 1 devices werden nur beim on Befehl angelegt.
Define
define <name> IT <housecode> <on-code> <off-code>
[<dimup-code>] [<dimdown-code>]
oder
define <name> IT <ITRotarySwitches|FLS100RotarySwitches>
or
define <name> IT <Adresse 26 Bit> <Group bit> <Unit Code>
Der Wert von housecode 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 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 housecode-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
<housecode> 10 Ziffern lange tri-State-Zahl (0/1/F) abhängig vom benutzten Gerät.
<on-code> 2 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> 2 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.
- Der optionale
<dimup-code> ist eine 2 Ziffern lange tri-State-Zahl, die den Befehl zum Heraufregeln enthält;
die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
- Der optionale
<dimdown-code> ist eine 2 Ziffern lange tri-State-Zahl, die den Befehl zum Herunterregeln enthält;
die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
Beispiele:
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 itswitch1 IT A1
define lamp IT J10
define flsswitch1 IT IV1
define lamp IT II2
Für Intertechno Protokoll 3 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:
dimdown
dimup
off
on
on-till # siehe Anmerkungen
- Die set extensions werden unterstützt.
Beispiele:
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
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.
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 und set Parametern. Die Liste besteht dabei
aus mit Doppelpunkt verbundenen Wertepaaren, die durch Leerzeichen getrennt
sind. Der erste Teil des Wertepaares ist der "alte" Wert, der zweite der neue/gewünschte.
Ist das erste Zeichen der Werteliste ein Komma (,) oder ein Schrägsstrich (/), wird
das Leerzeichen als Listenzeichen durch dieses ersetzt. Dies erlaubt die Benutzung
von Leerzeichen innerhalb der Werte.
Beispiele:
attr store eventMap on:open off:closed
attr store eventMap /on-for-timer 10:open/off:closed/
set store open
- do_not_notify
- 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.
- loglevel
- showtime
- model
Hiermit kann das Modell des IT-Geräts näher beschrieben werden. Diese
Eigenschaft wird (im Moment) nicht von fhem ausgewertet.
Mithilfe 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
- 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.
Erzeugte Ereignisse (Events):
Ein IT-Gerät kann folgende Ereignisse generieren:
- on
- off
- dimdown
- dimup
Welche Ereignisse erzeugt werden ist geräteabhängig und kann evtl. am Gerät eingestellt werden.
InfoPanel
Sorry, keine deutsche Dokumentation vorhanden.
Die englische Doku gibt es hier: InfoPanel
Itach_IR
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: Itach_IR
Itach_IRDevice
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: Itach_IRDevice
Itach_Relay
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: Itach_Relay
JSONMETER
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.
Define
define <name> JSONMETER <Gerätetyp> [<IP-Adresse>] [Abfrageinterval]
Beispiel: define Stromzaehler JSONMETER ITF 192.168.178.20 300
[Abfrageinterval]
Optional. Standardmässig 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
- LS110 - YouLess LS110 Netzwerkfähiger Sensor für elektromechanische Stromzähler
- 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 vordefinerten Geräten hinzuzufügen
port <Nummer>
Beim Gerätetyp 'url' kann hier der URL-Port festgelegt werden. (standardmässig 80)
timeOut <Sekunden>
Gibt an, nach wieviel Sekunden das Einlesen der Rohdaten abgebrochen werden soll. (standardmässig 10)
Die Laufzeit des Einlesevorganges wird bei "get jsonFile" angezeigt.
- readingFnAttributes
Jabber
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.
Define
define <name> Jabber <server> <port> <username> <password> <TLS> <SSL>
Du benötigst natürlich echte Accountdaten.
Beispiel:
define JabberClient1 Jabber jabber.org 5222 myusername mypassword 1 0
Set
-
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
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.
Standard: .*
Beispiele:
myname@jabber.org
(myname1@jabber.org|myname2@xmpp.de)
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.
Generierte Readings/Events:
- Privat Nachrichten
- Message - Komplette Nachricht inkl. JID und Text
- LastMessage - Nur der Textteil der Nachricht
- LastSenderJID - Nur die Sender-JID der Nachricht
- Verschlüsselte Private Nachrichten (wenn OTREnable=1)
- 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
JsonList
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: JsonList
JsonList2
jsonlist [<devspec>]
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 value 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
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
KS300
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.
Define
define <name> KS300 <housecode> [ml/raincounter [wind-factor]]
<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:
Set
Get
Attributes
- ignore
- IODev
- eventMap
- do_not_notify
- showtime
- model (ks300)
- 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).
LGTV
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: LGTV
LIGHTIFY
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: LIGHTIFY
LINDY_HDMI_SWITCH
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: LINDY_HDMI_SWITCH
LIRC
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: LIRC
LUXTRONIK2
Die Luxtronik 2.0 ist eine Heizungssteuerung, welche in Wärmepumpen von Alpha Innotec,
Siemens Novelan (WPR NET) und Wolf Heiztechnik (BWL/BWS) verbaut ist.
Sie besitzt einen Ethernet Anschluss, so dass sie direkt in lokale Netzwerke (LAN) integriert werden kann.
Das Modul wurde bisher mit folgender Steuerungs-Firmware getestet: V1.51, V1.54C, V1.60, V1.64, V1.69, V1.70.
Mehr Infos im entsprechenden Artikel der FHEM-Wiki.
Define
define <name> LUXTRONIK2 <IP-Adresse> [Abfrageinterval]
Wenn das Abfrage-Interval nicht angegeben ist, wird es auf 300 (Sekunden) gesetzt. Der kleinste mögliche Wert ist 30.
Beispiel: define Heizung LUXTRONIK2 192.168.0.12 600
Set
Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpen mit ungetester 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
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ßwasserboilers in °C
opModeHotWater <Betriebsmodus>
Betriebsmodus des Heißwasserboilers ( Auto | Party | Off )
resetStatistics <statWerte>
Löscht die ausgewählten statisischen Werte: all, statBoilerGradientCoolDownMin, statAmbientTemp..., statElectricity..., statHours..., statHeatQ...
returnTemperatureSetBack <Temperatur>
Absenkung oder Anhebung der Rücklauftemperatur von -5°C bis + 5°C
INTERVAL <Sekunden>
Abfrageinterval 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
Es wurde noch kein "get" implementiert ...
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 Berechnungsintervale der
Wärmepumpensteuerung zurückzuführen.)
compressor2ElectricalPowerWatt
Betriebsleistung des zweiten Kompressors zur Berechung der Arbeitszahl (erzeugte Wärme pro elektrische Energieeinheit)
und Abschätzung des elektrischen Verbrauches (Auswertungen noch nicht implementiert)
doStatistics < 0 | 1 >
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 Berechung der Arbeitszahl (erzeugte Wärme pro elektrische Energieeinheit)
und Abschätzung des elektrischen Verbrauches
heatPumpElectricalPowerFactor
Änderung der elektrischen Leistungsaufnahme pro 1 K Vorlauftemperaturdifferenz 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 ungetester 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 Steuerungs-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 Heizwassertemperatur.
- readingFnAttributes
LaCrosse
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: LaCrosse
Level
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: Level
LightScene
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: LightScene
M232
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: M232
M232Counter
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: M232Counter
M232Voltage
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: M232Voltage
MAX
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.
Get
Attributes
Erzeugte Ereignisse:
- desiredTemperature
Nur für Heizkörperthermostate und Wandthermostate
- valveposition
Nur für Heizkörperthermostate
- battery
- temperature
Die gemessene Temperatur (= gemessene Temperatur + measurementOffset ),
nur für Heizkörperthermostate und Wandthermostate
MAXLAN
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MAXLAN
MPD
FHEM Modul zur Steuerung des MPD ä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
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 geladenen Playliste
clear => löscht die 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
repaet => 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 (playlist name) => lade Playliste aus der MPD Datenbank und starte Wiedergabe mit dem ersten Titel
playfile (file) => erzeugt eine temoräre Playliste mit file und spielt dieses ab
updateDb => wie MPC update, Update der MPD Datenbank
interval => in Sekunden bis neue aktuelle Informationen vom MPD geholt werden. Überschreibt die Einstellung von attr interval Ein Wert von 0 deaktiviert diese Funktion
reset => reset des FHEM MPD Moduls
mpdCMD => gleiche Funktion wie get mpdCMD
IdleNow => sendet das Kommando idle zum MPD und wartet auf Ereignisse - siehe auch Attribut useIdle
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 :.
define <name> weblink htmlCode {fhem("get <name> webrc", 1)}
attr <name> room MPD
statusRequest => hole aktuellen MPD Status
mpdCMD (cmd) => sende cmd direkt zum MPD Server ( siehe auch MPD Comm Ref )
currentsong => zeigt Informationen zum aktuellen Titel in der Playliste
outputs => zeigt Informationen der definierten MPD Ausgabe Kanäle ( aus /etc/mpd.conf )
Attribute
- interval 0..x => polling Interval des MPD Servers, 0 zum abschalten oder in Verbindung mit useIdle
- password => (z.Z. nicht umgesetzt)
- loadMusic 0|1 => lade die MPD Titel beim FHEM Start
- loadPlaylists 0|1 => lade die MPD Playlisten beim FHEM Start
- volumeStep x => Schrittweite für Volume +/-
- useIdle 0|1 => sendet das Kommando idle zum MPD und wartet auf Ereignisse - benötigt MPD Version 0.16.0 oder höher
Wenn useIdle benutzt wird kann das Polling auf einen hohen Wert (300-600) gesetzt werden oder gleich ganz abgeschaltet werden.
FHEM startet einen Hintergrundprozess und wartet auf Änderungen des MPD , wie z.B Titelwechsel im Stream, start/stop, etc.
So lassen sich relativ zeitnah andere Geräte an/aus schalten oder z.B. eine LCD Anzeige aktualisieren ohne erst den nächsten Polling Intervall abwarten zu müssen !
- titleSplit 1|0 = zerlegt die aktuelle Titelangabe am ersten Vorkommen von - (BlankMinusBlank) in die zwei Felder Artist und Titel,
wenn im abgespielten Titel die Artist Information nicht verfügbar ist (sehr oft bei Radio-Streams)
Liegen keine Titelangaben vor wird die Ausgabe durch den Namen der Radiostation erstetzt
Readings
MQTT
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MQTT
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
msg
msg [<type>] [<@device>|<e-mail address>] [<priority>] [|<title>|] <message>
Bisher keine Dokumentation hier, sorry.
FHEM Forum
MSGFile
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MSGFile
MSGMail
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MSGMail
MYSENSORS
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MYSENSORS
MYSENSORS_DEVICE
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MYSENSORS_DEVICE
MilightBridge
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MilightBridge
MilightDevice
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: MilightDevice
Modbus
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: Modbus
ModbusAttr
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: ModbusAttr
ModbusSET
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: ModbusSET
NUT
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 .
Beispiel:
define dieUSV NUT myups einserver
Set
Get
Attributes
- disable
- readingFnAttributes
- 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
NetIO230B
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: NetIO230B
Netzer
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
NetzerI2C
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
Attribute
ONKYO_AVR
Eine deutsche Version der Dokumentation ist derzeit nicht vorhanden. Die englische Version ist hier zu finden:
OPENWEATHER
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 Perlmodule HTTP::Request, LWP::UserAgent, HTML::Parse und Digest::MD5.
Define
define <name> OPENWEATHER <Projekt> <Ortscode> <apiSchlüssel> [Sprache]
Beispiel:
define wetter OPENWEATHER projectx DE0001020 3c551bc20819c19ee88d
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 Aktuallisierung ist angehalten, wenn der Wert auf 1 gesetzt wird.
INTERVAL <Abfrageinterval>
Abfrageinterval in Sekunden (Standard und kleinster Wert ist 3600 = 1 Stunde). 0 stoppt die automatische Aktualisierung
- readingFnAttributes
Vorhersagewerte
Wichtig! Die Vorhersagewerte (in Klammern) müssen zuerst in den Vorhersageeinstellungen des Projektes auf wetter.com ausgewählt werden.
- fc0|1|2_... - Vorhersagewerte für heute|morgen|übermorgen
- fc0_...06|11|17|23 - Vorhersagewerte für heute um 06|11|17|23 Uhr
- fc0_chOfRain - heutige Niederschlagswahrscheinlichkeit in % (pc)
- fc0_tempMin|Max - Mindest|Maximaltemperatur heute in °C (tn, tx)
- fc0_tempMin06 - Mindesttemperatur heute um 06:00 Uhr in °C
- fc0_valHours06 - Gültigkeitszeitraum der Prognose von heute ab 6:00 Uhr in Stunden (p)
- fc0_weather - Wetterzustand heute (w_txt)
- fc0_weatherCode - Code des Wetterzustand heute (w)
- fc0_wday - Abkürzung des Wochentags von heute (d)
- fc0_wind - Windgeschwindigkeit heute in km/h (ws)
- fc0_windDir - Windrichtung heute in ° (Grad) (wd)
- fc0_windDirTxt - Windrichtung heute in Textform (wd_txt)
- etc.
OREGON
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OREGON
OWAD
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OWAD
OWCOUNT
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OWCOUNT
OWDevice
Definition
define <name> OWDevice <address> [<interval>]
Definiert ein 1-Wire- Gerät. 1-Wire- Geräte werden anhand ihrer Adresse <address> definiert. Diese wird
durch den zuvor eingerichteten OWServer bereitgestellt.
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
- 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 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:
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:
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).
- 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.
- eventMap
- readingFnAttributes
OWFS
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OWFS
OWID
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OWID
OWLCD
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OWLCD
OWMULTI
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OWMULTI
OWSWITCH
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OWSWITCH
OWServer
Definition
define <name> OWServer <protocol>
Definiert eine logische OWServer- Instanz. 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.
Voraussetzung innerhalb von FHEM ist das Modul OWNet.pm von owfs.org, welches bereits mit FHEM ausgeliefert wird.
Das auf CPAN erhältliche OWNet- Modul beinhaltet seit dem 23.12.2012 einen Fehler, der es für Fernzugriffe unbrauchbar macht.
Auf dem Computer, an dem der 1-Wire- Bus angeschlossen ist, muss die Software "owserver" installiert sein. Zusätzlich sollte auf diesem Rechner die Konfigurationsdatei "owfs.conf" eingesehen bzw. angepasst werden. Einen WIKI- Artikel dazu gibt es hier.
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!
Beispiele für die Einrichtung:
define myLocalOWServer OWServer localhost:4304
define myRemoteOWServer OWServer 192.168.1.100:4304
define myRemoteOWServer OWServer raspi:4304
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
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
- eventMap
- readingFnAttributes
Hinweis: Falls in FHEM trotzdem ungewöhnliche Stillstände auftreten, sollte das Attribut nonblocking wieder deaktiviert werden.
OWTEMP
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OWTEMP
OWTHERM
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OWTHERM
OWX
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OWX
OWX_ASYNC
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: OWX_ASYNC
PCA301
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: PCA301
PHILIPS_AUDIO
Define
define <name> PHILIPS_AUDIO <device model> <ip-address> [<status_interval>]
define <name> PHILIPS_AUDIO <device model> [<off_status_interval>] [<on_status_interval>]
Mit Hilfe dieses Moduls lassen sich Philips Audio Netzwerk Player wie z.B. MCi, Streamium oder Fidelio via Ethernet steuern.
Theoretisch sollten alle Geräte, die über einer implementierten HTTP Server am Port 8889 haben (http://[ip Nummer des Gerätes]:8889/index), bedient werden können.
Die aktuelle Implementierung ermöglicht u.a. den folgenden Funktionsumfang:
- Power on/off
- Internet Radio Preset Auswahl
- Input Auswahl
- Volume +/-
- Mute on/off
- ...
Eine PHILIPS_AUDIO Definition initiiert einen internen Task, der von FHEM zyklisch abgearbeitet wird.
Das Intervall (in Sekunden) kann für die Zustände <on_status_interval> und <off_status_interval> optional gesetzt werden.
<off_status_interval> steht für das Intervall, wenn das Gerät ausgeschaltet/abwesend ist.
<on_status_interval> steht für das Intervall, wenn das Gerät eingeschaltet/verfügbar ist.
Wenn keine Parameter angegeben wurden, wird ein Default-Wert von 30 Sekunden für beide gesetzt.
Wenn nur <off_status_interval> gesetzt wird, gilt dieser Wert für beide Zustände (eingeschaltet/ausgeschaltet).
Der Task liest zyklisch grundlegende Parameter vom Player und triggert notify/filelog Befehle.
Aufgrund der recht schwachen Rechenleistung der Player wurde das minimale Intervall auf 3 Sekunden beschränkt.
Beispiel:
Definition in der fhem.cfg Konfigurationsdatei:
define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15
attr PHAUDIO_player webCmd input:volume:mute:inetRadioPreset
# 60 Sekunden Intervall
define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15 60
attr PHAUDIO_player webCmd input:volume:mute:inetRadioPreset
# 60 Sekunden Intervall für "off" und 10 Sekunden für "on"
define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15 60 10
attr PHAUDIO_player webCmd input:volume:mute:inetRadioPreset
Set
set <name> <command> [<parameter>]
Aktuell sind folgende Befehle implementiert:
Bemerkung: Bitte bei den Befehlen und Parametern die Groß- und Kleinschreibung beachten.
- aux - Schaltet auf den AUX Eingang um (MP3 Link oder ähnlich.).
- inetRadioPreset [1..10] - Wählt die Internetradio Voreinstellung (Gedult...).
- mute - Stummschaltung des Players.
- unmute - Deaktivierung der Stummschaltung.
- next - Wählt den nächten Titel, Voreinstellung etc.
- play_pause - Schaltet um zwischen PLAY um PAUSE.
- previous - Wählt den vorherigen Titel, Voreinstellung etc.
- repeat [single|all|off] - Bestimmt den Wiederholungsmodus.
- shuffle [on|off] - Bestimmt den Zufallswiedergabemodus.
- standbyButton - Schaltet um zwischen Standby und Power on.
- statusRequest - Readings Update.
- stop - Stoppt den Player.
- volume - Setzt die relative Lautstärke 0...100%.
- volumeStraight - Setzt die absolute Lautstärke 0...64.
Ein typisches Beispiel ist das Einschalten des Gerätes und das Umschalten auf den Lieblingsradiosender:
Beispieldefinition in der fhem.cfg Konfigurationsdatei:
define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15 30 5
attr PHAUDIO_player webCmd input:volume:mute:inetRadioPreset
Folgender Code kann anschließend in die Datei 99_MyUtils.pm eingebunden werden:
sub startMyFavouriteRadioStation()
{
fhem "set PHAUDIO_player inetRadioPreset 1";
sleep 1;
fhem "set PHAUDIO_player volume 30"; }
Bemerkung: Aufgrund der relativ langsamen Befehlsverarbeitung im Player im Vergleich zur asynchronen Ethernet-Kommunikation, kann es vorkommen, dass veraltete Statusinformationen zurückgesendet werden.
Aus diesem Grund wird empfohlen, während der Automatisierung zwischen den 'set' und 'get' Befehlen ein Delay einzubauen.
Die Funktion kann jetzt in der FHEM Befehlszeile eingegeben oder in die Notify-Definitionen eingebunden werden.
{startMyFavouriteRadioStation()}
Get
get <name> <reading>
Aktuell liefert der Befehl 'get' ausschließlich Reading-Werte (s. Abschnitt "Readings").
Attribute
- do_not_notify
- readingFnAttributes
- request-timeout
Optionales Attribut, um das HTTP response timeout zu beeinflußen.
Mögliche Werte: 1...5 Sekunden. Default Wert ist 4 Sekunden.
- 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.
Readings
- albumArt - Link zum aktuellen Album art oder Radiostation.
- elapseTime - Aktuelle Zeit des abgespielten Audiostückes.
- mute - Abfrage des Stummschaltungstatus (on|off).
- playing - Abfrage des aktuelle Playierstatus (yes|no).
- power - Abfrage des aktuellen Gerätezustands (on|absent).
- presence - Abfrage der Geräteanwesenheit (present|absent).
- state - Abfrage des aktuellen 'state'-Status (on|absent).
- subtitle - Untertiltel des abgespielten Audiostückes.
- title - Titel des abgespielten Audiostückes.
- totalTime Gesamtspieldauer des Audiostückes.
- volume - Aktuelle relative Lautstärke (0..100).
- volumeStraight - Aktuelle absolute Lautstärke (0..64).
Bemerkung des Entwicklers
Trivial: Um das Gerät fernbedienen zu können, muss es an das Ethernet-Netzwerk angeschlossen und erreichbar sein.
Es gibt keine Möglichkeit, den Zustand Power-on/Standby des Gerätes abzufragen. Diese Limitierung liegt auf Seiten des Gerätes.
PHTV
Eine deutsche Version der Dokumentation ist derzeit nicht vorhanden.
Die englische Version ist hier zu finden:
PID20
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: PID20
PIFACE
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: PIFACE
PIONEERAVR
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.
- 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
- set extensions (ausser
<blink> ) werden unterstützt
Beispiel:
set <name> reopen
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>
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 reading abzuspeichern
- mute -
- networkPorts - Versucht vom Pioneer AV Receiver die offenen Ethernet Ports einzulesen und in den Readings networkPort1 ... networkPort4 abzuspeichern
- networkSettings - Versucht vom Pioneer AV Receiver die Netzwerkparameter (IP, Gateway, Netmask, Proxy, DHCP, DNS1, DNS2) einzulesen und in Readings abzuspeichern
- networkStandby -
- 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
- 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
- checkConnection <enable|disable> - Ein-/Ausschalten der regelmäßigen Überprüfung, ob die Datenverbindung
zum Pioneer AV Receiver funktioniert. Ist das Attribut nicht gesetzt, oder "enable" so wird regelmäßig die Verbindung überprüft.
Mit "disable" lässt sich die regelmäßige Überprüfung abschalten.
- 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
- 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 weiche 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 weiche Zeile in der gesamten Liste?
- screenLineNumberTotal - 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?
- 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
- 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
PIONEERAVRZONE
Define
define <name> PIONEERAVRZONE <zone>
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 .
Examples:
define myPioneerAvrZone2 PIONEERAVRZONE zone2
attr myPioneerAvrZone2 IODev myPIONEERAVR
Set
set <name> <was> [<value>]
wobei <was> eines der folgenden Befehle sein kann:
- reopen
- off
Zone in den Standby-Modus schalten
- on
Zone aus dem Standby-Modus Einschalten
- toggle
Zone Ein/Ausschalten
- volume <0 ... 100>
Zonenlautstärke in % der maximalen Lautstärke
- volumeUp
Zonenlautstärke um 0.5dB erhöhen
- volumeDown
Zonenlautstärke um 0.5dB verringern
- volumeStraight<-80.5 ... 12>
Einstellen der Zonenlautstärke mit einem Wert, wie er am Display des Pioneer AV Receiver angezeigt wird
- mute
- input
Die Liste der verfügbaren (also der nicht deaktivierten)
Eingangsquellen wird beim Start von Fhem und auch mit get statusRequest eingelesen
- inputUp
nächste Eingangsquelle für die Zone auswählen
- inputDown
vorherige Eingangsquelle für die Zone auswählen
- set extensions (ausser
<name> ) werden unterstützt
Beispiel:
Get
get <name> input
reading für die Eingangsquelle aktualisieren
Attributes
- IOdev Name des device welches die Kommunikation mit dem Pioneer AV Receiver zur Verfügung stellt
- verbose
POKEYS
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: POKEYS
PRESENCE
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).
- 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
Define
Modus: lan-ping
define <name> PRESENCE lan-ping <IP-Addresse oder Hostname> [ <Interval> [ <Anwesend-Interval> ] ]
Prüft ob ein Gerät über Netzwerk (üblicherweise WLAN) auf Ping-Anfragen reagiert und setzt entsprechend den Anwesenheitsstatus.
Beispiel
define iPhone PRESENCE lan-ping 192.168.179.21
Modus: fritzbox
define <name> PRESENCE fritzbox <Gerätename/MAC-Adresse> [ <Interval> [ <Anwesend-Interval> ] ]
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!
Beispiel
define iPhone PRESENCE fritzbox iPhone-6
define iPhone PRESENCE fritzbox 00:06:08:05:0D:00
Modus: local-bluetooth
define <name> PRESENCE local-bluetooth <Bluetooth-Adresse> [ <Interval> [ <Anwesend-Interval> ] ]
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)
Beispiel
define iPhone PRESENCE local-bluetooth 0a:4f:36:d8:f9:8
Modus: function
define <name> PRESENCE function {...} [ <Interval> [ <Anwesend-Interval> ] ]
Prüft den Anwesenheitsstatus mithilfe einer selbst geschriebenen Perl-Funktion (z.B. SNMP Abfrage).
Diese Funktion muss 0 (Abwesend) oder 1 (Anwesend) zurückgeben. Ein entsprechendes Beispiel findet man im FHEM-Wiki.
Beispiel
define iPhone PRESENCE function {snmpCheck("10.0.1.1","0x44d77429f35c")
Mode: shellscript
define <name> PRESENCE shellscript "<Skript-Pfad> [<arg1>] [<argN>]..." [ <Interval> [ <Anwesend-Interval> ] ]
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.
Beispiel
define iPhone PRESENCE shellscript "/opt/check_device.sh iPhone"
Modus: lan-bluetooth
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.
define <name> PRESENCE lan-bluetooth <Bluetooth-Adresse> <IP-Adresse>[:Port] [ <Interval> ]
Der Standardport ist 5111 (presenced). Alternativ kann man den Port 5222 (collectord) nutzen. Generell ist der Port aber frei wählbar.
Beispiel
define iPhone PRESENCE lan-bluetooth 0a:4f:36:d8:f9:89 127.0.0.1:5222
presenced
Der presenced ist ein Perl Netzwerk Dienst, 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.
Der presenced ist zum Download verfügbar als:
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.
Der collectord ist zum Download verfügbar als:
Set
- statusRequest - Startet einen sofortigen Check.
- power - Startet den powerCmd-Befehl welche durch den Parameter powerCmd angegeben ist (Nur wenn das Attribut "powerCmd" definiert ist)
Get
Attributes
- do_not_notify
- readingFnAttributes
- disable
Wenn dieses Attribut aktiviert ist, wird die Anwesenheitserkennung nicht mehr durchgeführt.
Mögliche Werte: 0 => Erkennung durchführen , 1 => Keine Erkennungen durchführen
Standardwert ist 0 (Erkennung durchführen)
- ping_count
(Nur im Modus "ping" anwendbar auf Linux-basierten Betriebssystemen)
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.
Standartwert ist 4 (Versuche)
- fritzbox_speed
(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)
- powerCmd
Ein FHEM-Befehl, welcher das Gerät schalten kann.
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 Events:
Generelle Events:
- state: (absent|present|disabled|error|timeout) - Der Anwesenheitsstatus eine Gerätes (absent = abwesend; present = anwesend) oder "disabled" wenn das disable-Attribut aktiviert ist
- presence: (absent|present) - Der Anwesenheitsstatus eine Gerätes (absent = abwesend; present = anwesend)
- powerCmd: (executed|failed) - Ausführung des power-Befehls war erfolgreich.
Bluetooth-spezifische Events:
- device_name: $name - Der Name des Bluetooth-Gerätes, wenn es anwesend (Status: present) ist
presenced-/collectord-spezifische Events:
- 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)
PROPLANTA
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.
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 3-Tages-Vorhersage erzeugt.
Beispiel:
define Vorschau weblink htmlCode {PROPLANTA_Html("Wetter")}
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 <Abfrageinterval>
Abfrageinterval in Sekunden (Standard 3600 = 1 Stunde)
URL <Internetadresse>
Internetadresse, von der die Daten ausgelesen werden (überschreibt die Werte im 'define'-Term)
- readingFnAttributes
Vorhersagewerte
- fc0|1|2|3...|13_... - Vorhersagewerte für heute|morgen|übermorgen|in 3|...|13 Tagen
- fc0_...00|03|06|09|12|15|18|21 - Vorhersagewerte für heute um 00|03|06|09|12|15|18|21 Uhr
- fc0_chOfRainDay|Night - heutiges Niederschlagsrisiko tagsüber|nachts in %
- fc1_chOfRain15 - morgiges Niederschlagsrisiko um 15:00 Uhr in %
- fc2_cloud15 - Wolkenbedeckungsgrad übermorgen um 15:00 Uhr in %
- fc0_dew - Taubildung heute (0=keine, 1=leicht, 2=mäßig, 3=stark)
- fc0_evapor - Verdunstung heute (0=keine, 1=gering, 2=mäßig, 3=stark)
- fc0_frost - Bodenfrost heute (0=nein, 1=ja)
- fc1_moonRise|Set - Mondauf|untergang morgen
- fc0_rad - Globalstrahlung heute
- fc0_rain15 - Niederschlagsmenge heute um 15:00 Uhr in mm
- fc0_sun - relative Sonnenscheindauer heute in % (zwischen Sonnenauf- und -untergang)
- fc0_tempMin|Max - Minimal|Maximaltemperatur heute in °C
- fc0_temp15 - Temperatur heute um 15:00 Uhr in °C
- fc0_uv - UV-Index heute
- fc0_weatherMorning|Day|Evening|Night - Wetterzustand heute morgen|tagsüber|abends|nachts
- fc0_weatherDayIcon - Icon Wetterzustand heute tagsüber
- etc.
Aktuelle Werte
- cloudBaseMin|Max - Höhe der minimalen|maximalen Wolkenuntergrenze in m
- dewPoint - Taupunkt in °C
- humidity - relative Feuchtigkeit in %
- obs_time - Uhrzeit der Wetterbeobachtung
- pressure - Luftdruck in hPa
- temperature - Temperature in °C
- visibility - Sichtweite in km
- wind - Windgeschwindigkeit in km/h
- windDir - Windrichtung in °
PW_Circle
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: PW_Circle
PW_Scan
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: PW_Scan
PW_Sense
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: PW_Sense
PW_Switch
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: PW_Switch
PachLog
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: PachLog
Plugwise
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: Plugwise
PushNotifier
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.
Diskutiere das Modul hier.
Define
define <name> PushNotifier <apiToken> <appName> <user> <password> <deviceID>
Du musst einen Account erstellen, um das apiToken zu bekommen.
Und du musst eine Anwendung erstellen, um einen appToken zu bekommen.
Beispiel:
define PushNotifier1 PushNotifier 01234 appname user password 012
Set
set <PushNotifier_device> message
Beispiele:
set PushNotifier1 message Dies ist ein Text.
Zeilenumbruch:
set PushNotifier1 message Dies ist ein Text._Neue Zeile.
Get
Generated events:
Pushalot
Pusalot ist ein Dienst, um Benachrichtigungen von einer vielzahl
von Quellen auf ein Windows Phone Device zu empfangen.
Du brauchst einen Account um dieses Modul zu verwenden.
Für weitere Informationen über den Dienst besuche pushalot.com.
Diskutiere das Modul hier.
Define
define <name> Pushalot <token> [<source>]
<token> |
Der Token der den pushalot-Account identifiziert. Um diesen zu bekommen, muss ein Account erstellt werden. |
<source> |
Definiert den Absender, der in der Nachricht angezeigt werden soll. |
Beispiel:
define Pushalot PushNotification 123234 FHEM
Set
set <Pushalot_device> "<message>" ["<title>"] ["<image>"] ["<link>"] ["<link_title>"] ["<important>"] ["<silent>"]
<message> |
Der Nachrichten-Text. |
<title> |
Der Titel der Nachricht. |
<image> |
Optionale Bild-URL die in der Nachricht angezeigt werden soll. |
<link> |
Ein optionaler Link der an die Nachricht angehängt werden soll. |
<link_title> |
Optionaler Link Titel. Wenn kein Titel angegeben wird, ist dieser die URL. |
<important> |
True|False: True wenn die Nachricht als 'wichtig' markiert werden soll, sonst False (Default) |
<silent> |
True|False: True wenn die Nachricht 'still' ausgeliefert werden soll (kein Benachrichtigungssound wird abgespielt), ansonsten False (Default) |
Beispiele:
set PushNotification message "Das ist meine Nachricht."
set PushNotification message "Das ist meine Nachricht." "Mit Titel"
set PushNotification message "Das ist meine Nachricht." "Mit Titel" "http://www.xyz.com/image.png"
set PushNotification message "Das ist meine Nachricht." "Mit Titel" "http://www.xyz.com/image.png" "http://www.xyz.com"
set PushNotification message "Das ist meine Nachricht." "Mit Titel" "http://www.xyz.com/image.png" "http://www.xyz.com" "Link Titel"
set PushNotification message "Das ist meine Nachricht." "Mit Titel" "http://www.xyz.com/image.png" "http://www.xyz.com" "Link Titel" True
set PushNotification message "Das ist meine Nachricht." "Mit Titel" "http://www.xyz.com/image.png" "http://www.xyz.com" "Link Title" True False
Notes:
Get
Attribute
Generierte events:
Pushbullet
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.
Diskutiere das Modul hier.
Define
define <name> Pushbullet <accessToken>
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
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.
Diskutiere das Modul hier.
Define
define <name> Pushover <token> <user> [<infix>]
Du musst einen Account erstellen, um den User Key zu bekommen.
Und du musst eine Anwendung erstellen, um einen API APP_TOKEN zu bekommen.
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!
Beispiel:
define Pushover1 Pushover 01234 56789
define Pushover1 Pushover 01234 56789 pushCallback1
Set
set <Pushover_device> msg [title] <msg> [<device> <priority> <sound> [<retry> <expire> [<url_title> <action>]]]
Beispiele:
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.
- Für weiterführende Dokumentation über diese Parameter lies Dir die Pushover API durch.
Get
Attributes
- 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
- 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.
Generated events:
RESIDENTS
Define
define <rgr_ResidentsName> RESIDENTS
Stellt ein spezielles Dummy-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_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
-
residentsTotalOwners - Anzahl der Bewohner, die als permanente Bewohner behandelt werden
-
residentsTotalOwnersAbsent - Anzahl der Besitzer, die momentan unterwegs sind
-
residentsTotalOwnersAbsentDevs - Gerätename der Besitzer, die momentan unterwegs sind
-
residentsTotalOwnersAbsentNames - Gerätealias der Besitzer, die momentan unterwegs sind
-
residentsTotalOwnersPresent - Anzahl der Besitzer, die momentan zu Hause sind
-
residentsTotalOwnersPresentDevs - Gerätename der Besitzer, die momentan zu Hause sind
-
residentsTotalOwnersPresentNames - 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
-
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 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)
-
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)
RFXCOM
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: RFXCOM
RFXMETER
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: RFXMETER
RFXX10REC
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: RFXX10REC
ROOMMATE
Define
define <rr_FirstName> ROOMMATE [<Device Name der Bewohnergruppe>]
Stellt ein spezielles Dummy 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.
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 den Gruppen rgr_Residents und rgr_Parents zu sein
# Komplexe Familien Struktur
define rr_Manfred ROOMMATE rgr_Residents,rgr_Parents # Elternteil
define rr_Lisa ROOMMATE rgr_Residents,rgr_Parents # Elternteil
define rr_Rick ROOMMATE rgr_Residents,rgr_Children # Kind1
define rr_Alex ROOMMATE rgr_Residents,rgr_Children # Kind2
Bitte beachten, dass das RESIDENTS Gruppen Device zunächst angelegt werden muss, bevor ein ROOMMATE Objekt dort Mitglied werden kann.
Set
set <rr_FirstName> <command> [<parameter>]
Momentan sind die folgenden Kommandos definiert.
-
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 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_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 Berechnung der Zeitspannen (siehe Readings durTimer*)
-
rr_passPresenceTo - synchronisiere die Anwesenheit mit anderen ROOMMATE oder GUEST Devices; mehrere Devices durch Leerzeichen trennen
-
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
RPII2C
(en | de)
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
folgendes einfügen
-
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:
-
sudo apt-get install i2c-tools
sudo adduser fhem i2c
-
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:
sudo apt-get install libmoose-perl
sudo cpan Device::SMBus
-
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
- ignore
- do_not_notify
- showtime
RPI_GPIO
(en | de)
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.
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:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git-core
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
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):
echo 22 > /sys/class/gpio/export
echo 23 > /sys/class/gpio/export
chown -R fhem:root /sys/devices/virtual/gpio/* (oder chown -R fhem:gpio /sys/devices/platform/gpio-sunxi/gpio/* für Banana Pi)
chown -R fhem:root /sys/class/gpio/*
Define
define <name> RPI_GPIO <GPIO number>
Alle verfügbaren GPIO number sind in den folgenden Tabellen zu finden
PCB Revision 1 P1 pin header
Function | Pin | | Pin | Function |
3,3V | 1 | | 2 | 5V |
GPIO 0 (SDA0) | 3 | | 4 | |
GPIO 1 (SCL0) | 5 | | 6 | GND |
GPIO 4 (GPCLK0) | 7 | | 8 | GPIO 14 (TxD) |
| 9 | | 10 | GPIO 15 (RxD) |
GPIO 17 | 11 | | 12 | GPIO 18 (PCM_CLK) |
GPIO 21 | 13 | | 14 | |
GPIO 22 | 15 | | 16 | GPIO 23 |
| 17 | | 18 | GPIO 24 |
GPIO 10 (MOSI) | 19 | | 20 | |
GPIO 9 (MISO) | 21 | | 22 | GPIO 25 |
GPIO 11 (SCLK) | 23 | | 24 | GPIO 8 (CE0) |
| 25 | | 26 | GPIO 7 (CE1) |
|
PCB Revision 2 P1 pin header
Function | Pin | | Pin | Function |
3,3V | 1 | | 2 | 5V |
GPIO 2 (SDA1) | 3 | | 4 | |
GPIO 3 (SCL1) | 5 | | 6 | GND |
GPIO 4 (GPCLK0) | 7 | | 8 | GPIO 14 (TxD) |
| 9 | | 10 | GPIO 15 (RxD) |
GPIO 17 | 11 | | 12 | GPIO 18 (PCM_CLK) |
GPIO 27 | 13 | | 14 | |
GPIO 22 | 15 | | 16 | GPIO 23 |
| 17 | | 18 | GPIO 24 |
GPIO 10 (MOSI) | 19 | | 20 | |
GPIO 9 (MISO) | 21 | | 22 | GPIO 25 |
GPIO 11 (SCLK) | 23 | | 24 | GPIO 8 (CE0) |
| 25 | | 26 | GPIO 7 (CE1) |
|
PCB Revision 2 P5 pin header
Function | Pin | | Pin | Function |
5V | 1 | | 2 | 3,3V |
GPIO 28 (SDA0) | 3 | | 4 | GPIO 29 (SCL0) |
GPIO 30 | 5 | | 6 | GPOI 31 |
GND | 7 | | 8 | GND |
|
Beispiele:
define Pin12 RPI_GPIO 18
attr Pin12 poll_interval 5
Set
set <name> <value>
value ist dabei einer der folgenden Werte:
- Für GPIO der als output konfiguriert ist
Die set extensions werden auch unterstützt.
- Für GPIO der als input konfiguriert ist
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
- 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
- readingFnAttributes
RSS
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: RSS
RandomTimer
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: RandomTimer
Revolt
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: Revolt
SCIVT
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SCIVT
SD_WS07
Das SD_WS07 Module verarbeitet von einem IO Gerät (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur-Sensoren.
Unterstütze Modelle:
- Eurochon EAS800z
- Technoline WS6750/TX70DTH
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.
Generierte Readings:
- State (T: H:)
- temperature (°C)
- humidity: (Luftfeuchte (1-100)
- battery: (low oder ok)
- channel: (Der Sensor Kanal)
Attribute
Set
Set
SHC
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SHC
SHCdev
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SHCdev
SIGNALduino
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SIGNALduino
SIGNALduino_un
Das SIGNALduino_un module ist ein Hilfsmodul um unbekannte Nachrichten debuggen und analysieren zu können.
Das Modul legt keinerlei Geräte oder ähnliches an.
Define
define <name> SIGNALduino_un <code>
Es ist möglich ein Gerät manuell zu definieren, aber damit passiert überhaupt nichts.
Autocreate wird auch keinerlei Geräte 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
Get
Attributes
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
SMARTMON
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:
- 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.
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
SONOS
FHEM-Modul für die Anbindung des Sonos-Systems via UPnP
Für weitere Hinweise und Beschreibungen bitte auch im Wiki unter http://www.fhemwiki.de/wiki/SONOS nachschauen.
Für die Verwendung sind Perlmodule notwendig, die unter Umständen noch nachinstalliert werden müssen:
LWP::Simple
LWP::UserAgent
SOAP::Lite
HTTP::Request
Installation z.B. als Debian-Pakete (mittels "sudo apt-get install <packagename>"):
- LWP::Simple-Packagename (inkl. LWP::UserAgent und HTTP::Request): libwww-perl
- SOAP::Lite-Packagename: libsoap-lite-perl
Installation z.B. als Windows ActivePerl (mittels Perl-Packagemanager)
- Package LWP (incl. LWP::UserAgent and HTTP::Request)
- Package SOAP::Lite
- SOAP::Lite-Special für Versionen nach 5.18:
- Eine andere Paketquelle von den Vorschlägen oder manuell hinzufügen: Bribes de Perl (http://www.bribes.org/perl/ppm)
- Package: SOAP::Lite
Windows ActivePerl 5.20 kann momentan nicht verwendet werden, da es das Paket SOAP::Lite dort momentan nicht gibt.
Achtung! Das Modul wird nicht auf jeder Plattform lauffähig sein, da Threads und die angegebenen Perl-Module verwendet werden.
Mehr Informationen im (deutschen) Wiki-Artikel: http://www.fhemwiki.de/wiki/SONOS
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
define Sonos SONOS localhost:4711 30
Definition
define <name> SONOS [upnplistener [interval [waittime [delaytime]]]]
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.
Set
- Steuerbefehle
-
Mute <state>
Setzt den Mute-Zustand bei allen Playern.
-
PauseAll
Pausiert die Wiedergabe in allen Zonen.
-
Pause
Synonym für PauseAll.
-
StopAll
Stoppt die Wiedergabe in allen Zonen.
-
Stop
Synonym für StopAll.
- Bookmark-Befehle
- Gruppenbefehle
-
Groups <GroupDefinition>
Setzt die aktuelle Gruppierungskonfiguration der Sonos-Systemlandschaft. Das Format ist jenes, welches auch von dem Get-Befehl 'Groups' geliefert wird.
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
characterDecoding <codingname>
Hiermit kann die Zeichendekodierung eingestellt werden. Z.b. <UTF-8>. Standardmäßig wird <CP-1252> verwendet.
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.
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.
- Bookmark-Einstellungen
- Proxy-Einstellungen
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.
- 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.
Speak2 <Fileextension>:<Commandline>
Siehe Speak1
Speak3 <Fileextension>:<Commandline>
Siehe Speak1
Speak4 <Fileextension>:<Commandline>
Siehe Speak1
SpeakCover <Absolute-Imagepath>
Hiermit kann ein JPG- oder PNG-Bild als Cover für die Sprachdurchsagen definiert werden.
Speak1Cover <Absolute-Imagepath>
Analog zu SpeakCover für Speak1.
Speak2Cover <Absolute-Imagepath>
Analog zu SpeakCover für Speak2.
Speak3Cover <Absolute-Imagepath>
Analog zu SpeakCover für Speak3.
Speak3Cover <Absolute-Imagepath>
Analog zu SpeakCover für Speak3.
Speak4Cover <Absolute-Imagepath>
Analog zu SpeakCover für Speak4.
SONOSPLAYER
FHEM Modul für die Steuerung eines Sonos Zoneplayer
Für weitere Hinweise und Beschreibungen bitte auch im Wiki unter http://www.fhemwiki.de/wiki/SONOS nachschauen.
Im Normalfall braucht man dieses Device nicht selber zu definieren, da es automatisch vom Discovery-Process des Sonos-Device erzeugt wird.
Example
define Sonos_Wohnzimmer SONOSPLAYER RINCON_000EFEFEFEF401400_MR
Definition
define <name> SONOSPLAYER <udn>
<udn> MAC-Addressbasierter eindeutiger Bezeichner des Zoneplayer
Set
- Grundsätzliche Einstellungen
-
Alarm (Create|Update|Delete) <ID> <Datahash>
Diese Anweisung wird für die Bearbeitung der Alarme verwendet:- Create: Erzeugt einen neuen Alarm-Eintrag mit den übergebenen Hash-Daten.
- Update: Aktualisiert den Alarm mit der übergebenen ID und den angegebenen Hash-Daten.
- Delete: Löscht den Alarm-Eintrag mit der übergebenen ID.
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:- StartTime
- Duration
- Recurrence_Once
- Recurrence_Monday
- Recurrence_Tuesday
- Recurrence_Wednesday
- Recurrence_Thursday
- Recurrence_Friday
- Recurrence_Saturday
- Recurrence_Sunday
- Enabled
- ProgramURI
- ProgramMetaData
- Shuffle
- Repeat
- Volume
- IncludeLinkedZones
z.B.:- set Sonos_Wohnzimmer Alarm Create 0 { Enabled => 1, Volume => 35, StartTime => '00:00:00', Duration => '00:15:00', Repeat => 0, Shuffle => 0, ProgramURI => 'x-rincon-buzzer:0', ProgramMetaData => '', Recurrence_Once => 0, Recurrence_Monday => 1, Recurrence_Tuesday => 1, Recurrence_Wednesday => 1, Recurrence_Thursday => 1, Recurrence_Friday => 1, Recurrence_Saturday => 0, Recurrence_Sunday => 0, IncludeLinkedZones => 0 }
- set Sonos_Wohnzimmer Alarm Update 17 { Shuffle => 1 }
- set Sonos_Wohnzimmer Alarm Delete 17 {}
-
DailyIndexRefreshTime <time>
Setzt die aktuell gültige DailyIndexRefreshTime für alle Zoneplayer.
-
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!
-
Name <Zonename>
Legt den Namen der Zone 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.
-
RoomIcon <Iconname>
Legt das Icon für die Zone fest
-
SnoozeAlarm <Time>
Unterbricht eine laufende Alarmwiedergabe für den übergebenen Zeitraum.
-
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).
-
Pause
Pausiert die Wiedergabe
-
Previous
Springt an den Anfang des vorherigen Titels.
-
Play
Startet die Wiedergabe
-
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.
-
Next
Springt an den Anfang des nächsten Titels
-
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/ .
-
StartPlaylist <Playlistname> [EmptyQueueBeforeImport]
Lädt die benannte Playlist und startet sofort die Wiedergabe. Zu den Parametern und Bemerkungen bitte unter "LoadPlaylist" nachsehen.
-
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.
-
StartSearchlist <Kategoriename> <KategorieElement> [[TitelfilterRegEx]/[AlbumfilterRegEx]/[ArtistfilterRegEx] [maxElem]]
Lädt die Searchlist und startet sofort die Wiedergabe. Für nähere Informationen bitte unter "LoadSearchlist" nachschlagen.
-
Stop
Stoppt die Wiedergabe
-
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
-
AudioDelay <Level>
Setzt den AudioDelay der Playbar auf den angegebenen Wert. Der Wert kann zwischen 0 und 5 liegen. Gibt das wirklich eingestellte AudioDelay als Ergebnis zurück.
-
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.
-
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 <Time>
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'.
-
SubEnable <State>
Legt den Zustand des Sub-Zustands fest. Liefert den aktuell gültigen Sub-Zustand.
-
SubGain <Level>
Setzt den SubGain auf den angegebenen Wert. Der Wert kann zwischen -15 und 15 liegen. Gibt den wirklich eingestellten SubGain als Ergebnis zurück.
-
SurroundEnable <State>
Legt den Zustand des Surround-Zustands fest. Liefert den aktuell gültigen Surround-Zustand.
-
SurroundLevel <Level>
Setzt den Surroundlevel auf den angegebenen Wert. Der Wert kann zwischen -15 und 15 liegen. Gibt den wirklich eingestellten SurroundLevel als Ergebnis zurück.
-
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)
-
DeletePlaylist
Löscht die bezeichnete Playliste. Zum möglichen Format des Playlistenamen unter LoadPlaylist nachsehen.
-
EmptyPlaylist
Leert die aktuelle Abspielliste
-
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/ .
-
LoadSearchlist <Kategoriename> <KategorieElement> [[TitelfilterRegEx]/[AlbumfilterRegEx]/[ArtistfilterRegEx] [maxElem]]
Lädt Titel nach diversen Kriterien in die aktuelle Abspielliste. Nähere Beschreibung bitte im Wiki nachlesen.
-
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).
-
SeparateStereoPair
Trennt das Stereopaar wieder auf.
-
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.
-
EthernetPortStatus <PortNumber>
Liefert den Ethernet-Portstatus des gegebenen Ports. Kann 'Active' oder 'Inactive' liefern.
-
PossibleRoomIcons
Liefert eine Liste aller möglichen RoomIcon-Bezeichnungen zurück.
- 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.
-
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.
- Informationen zum aktuellen Titel
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
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.
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.
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,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 .
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|CrossfadeMode|Balance| HeadphoneConnected|SleepTimer|Presence|RoomName|SaveRoomName|PlayerType|Location|SoftwareRevision|SerialNum|InfoSummarize1| InfoSummarize2|InfoSummarize3|InfoSummarize4
:text: := [Jeder beliebige Text ohne doppelte Anführungszeichen]
STACKABLE_CC
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:
define SCC0 CUL /dev/ttyAMA0@38400
attr SCC0 rfmode SlowRF
define SCC1 STACKABLE_CC SCC0
attr SCC1 rfmode HomeMatic
define SCC2 STACKABLE_CC SCC1
attr SCC2 rfmode Max
Wichtig:
- 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.
Set Die gleichen wie für das CUL.
Get Die gleichen wie für das CUL.
Attributes
STV
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: STV
SUNRISE_EL
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: SUNRISE_EL
SVG
Define
define <name> SVG <logDevice>:<gplotfile>:<logfile>
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
Attribute
- fixedrange [offset]
Version 1
Enthält zwei Zeit-Spezifikationen in der Schreibweise YYYY-MM-DD,
getrennt durch ein Leerzeichen. Im Plotmodus gnuplot-scroll(-svg) oder
SVG wird das vorgegebene Intervall verwendet und ein Scrolling der
Zeitachse ist nicht möglich. Dies wird z.B. verwendet, um sich die
Daten des vergangenen Jahres ohne Scrollen anzusehen.
Version 2
Wenn der Wert entweder Tag, <N>Tage, Woche, Monat oder Jahr 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 ).
- fixedoffset <nTage>
Verschiebt den Plot-Offset um einen festen Wert (in Tagen).
- startDate
Setzt das Startdatum für den Plot. Wird für Demo-Installationen
verwendet.
- plotsize
- plotmode
- endPlotNow
- endPlotToday
- plotWeekStartDay
- 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:
- Beschriftunng der rechten und linken y-Achse:
- Fhem config:
attr wl_1 label "Temperature"::"Humidity"
- 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.
- 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.
- captionLeft
Anzeigen der Legende auf der linken Seite
- 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.
Beispiel:
- #FileLog <SPEC1>
mit:
attr <SVGdevice> plotfunction "4:IR\x3a:0:"
anstelle von:
#FileLog 4:IR\x3a:0:
- #DbLog <SPEC1>
mit:
attr <SVGdevice> plotfunction
"Garage_Raumtemp:temperature::"
anstelle von:
#DbLog Garage_Raumtemp:temperature::
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
SWAP_0000002200000008
SYSMON
(en | de)
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.
Define
define <name> SYSMON [MODE[:[USER@]HOST][:PORT]] [<M1>[ <M2>[ <M3>[ <M4>]]]]
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:
- M1: (Default-Wert: 1)
cpu_freq, cpu_temp, cpu_temp_avg, loadavg, stat_cpu, stat_cpu_diff, stat_cpu_percent, stat_cpu_text, power readings
- M2: (Default-Wert: M1)
ram, swap
- M3: (Default-Wert: M1)
eth0, eth0_diff, wlan0, wlan0_diff
- M4: (Default-Wert: 10*M1)
Filesystem-Informationen
- 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' und 'local' erlaubt. 'local' erfordert keine weiteren Angaben und kann auch ganz weggelassen 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
- Network Speed (wenn verfügbar)
Geschwindigkeit der aktuellen Netzwerkverbindung.
Beispiel:
eth0_speed 100
- 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 /
- CPU Auslastung
Informationen zu der Auslastung der CPU(s).
Beispiel:
stat_cpu: 10145283 0 2187286 90586051 542691 69393 400342
stat_cpu_diff: 2151 0 1239 2522 10 3 761
stat_cpu_percent: 4.82 0.00 1.81 93.11 0.05 0.00 0.20
stat_cpu_text: user: 32.17 %, nice: 0.00 %, sys: 18.53 %, idle: 37.72 %, io: 0.15 %, irq: 0.04 %, sirq: 11.38 %
- 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:
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
Beispiel-Ausgabe:
cpu_freq |
|
|
|
|
|
|
|
|
|
RX: 2954.22 MB, TX: 3469.21 MB, Total: 6423.43 MB |
|
|
RX: 6.50 MB, TX: 0.23 MB, Total: 6.73 MB |
|
|
|
|
|
0 days, 03 hours, 07 minutes |
|
|
|
|
|
10 days, 18 hours, 37 minutes (88.35 %) |
|
|
|
|
|
Total: 485 MB, Used: 140 MB, 28.87 %, Free: 345 MB |
|
|
|
|
|
|
|
|
12 days, 04 hours, 42 minutes |
|
|
RX: 0.00 MB, TX: 0.00 MB, Total: 0 MB |
|
|
RX: 0.00 MB, TX: 0.00 MB, Total: 0.00 MB |
|
|
Total: 7404 MB, Used: 3533 MB, 50 %, Available: 3545 MB at / |
|
|
Total: 56 MB, Used: 19 MB, 33 %, Available: 38 MB at /boot |
|
fs_usb1 |
Total: 30942 MB, Used: 6191 MB, 21 %, Available: 24752 MB at /media/usb1 |
2013-11-27 00:05:36 |
stat_cpu |
10145283 0 2187286 90586051 542691 69393 400342 |
2013-11-27 00:05:36 |
stat_cpu_diff |
2151 0 1239 2522 10 3 761 |
2013-11-27 00:05:36 |
stat_cpu_percent |
4.82 0.00 1.81 93.11 0.05 0.00 0.20 |
2013-11-27 00:05:36 |
stat_cpu_text |
user: 32.17 %, nice: 0.00 %, sys: 18.53 %, idle: 37.72 %, io: 0.15 %, irq: 0.04 %, sirq: 11.38 % |
2013-11-27 00:05:36 |
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:
FileLog-Versionen:
SM_RAM.gplot
SM_CPUTemp.gplot
SM_FS_root.gplot
SM_FS_usb1.gplot
SM_Load.gplot
SM_Network_eth0.gplot
SM_Network_eth0t.gplot
SM_Network_wlan0.gplot
SM_CPUStat.gplot
SM_CPUStatSum.gplot
SM_CPUStatTotal.gplot
SM_power_ac.gplot
SM_power_usb.gplot
SM_power_battery.gplot
DbLog-Versionen:
SM_DB_all.gplot
SM_DB_CPUFreq.gplot
SM_DB_CPUTemp.gplot
SM_DB_Load.gplot
SM_DB_Network_eth0.gplot
SM_DB_RAM.gplot
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).
define sysv1 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
define sysv2 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'cpu_freq:CPU Frequenz: MHz'))}
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"))))}
Beispiele:
# Modul-Definition
define sysmon SYSMON 1 1 1 10
#attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,^~ /.*usb.*,~ /$
attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,fs_.*,stat_cpu_percent
attr sysmon filesystems fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
attr sysmon network-interfaces eth0:eth0:Ethernet,wlan0:wlan0:WiFi
attr sysmon group RPi
attr sysmon room 9.03_Tech
# Log
define FileLog_sysmon FileLog ./log/sysmon-%Y-%m.log sysmon
attr FileLog_sysmon group RPi
attr FileLog_sysmon logtype SM_CPUTemp:Plot,text
attr FileLog_sysmon room 9.03_Tech
# Visualisierung: CPU-Temperatur
define wl_sysmon_temp SVG FileLog_sysmon:SM_CPUTemp:CURRENT
attr wl_sysmon_temp group RPi
attr wl_sysmon_temp label "CPU Temperatur: Min $data{min2}, Max $data{max2}, Last $data{currval2}"
attr wl_sysmon_temp room 9.03_Tech
# Visualisierung: Netzwerk-Datenübertragung für eth0
define wl_sysmon_eth0 SVG FileLog_sysmon:SM_Network_eth0:CURRENT
attr wl_sysmon_eth0 group RPi
attr wl_sysmon_eth0 label "Netzwerk-Traffic eth0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysmon_eth0 room 9.03_Tech
# Visualisierung: Netzwerk-Datenübertragung für wlan0
define wl_sysmon_wlan0 SVG FileLog_sysmon:SM_Network_wlan0:CURRENT
attr wl_sysmon_wlan0 group RPi
attr wl_sysmon_wlan0 label "Netzwerk-Traffic wlan0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysmon_wlan0 room 9.03_Tech
# Visualisierung: CPU-Auslastung (load average)
define wl_sysmon_load SVG FileLog_sysmon:SM_Load:CURRENT
attr wl_sysmon_load group RPi
attr wl_sysmon_load label "Load Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysmon_load room 9.03_Tech
# Visualisierung: RAM-Nutzung
define wl_sysmon_ram SVG FileLog_sysmon:SM_RAM:CURRENT
attr wl_sysmon_ram group RPi
attr wl_sysmon_ram label "RAM-Nutzung Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_ram room 9.03_Tech
# Visualisierung: Dateisystem: Root-Partition
define wl_sysmon_fs_root SVG FileLog_sysmon:SM_FS_root:CURRENT
attr wl_sysmon_fs_root group RPi
attr wl_sysmon_fs_root label "Root Partition Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_fs_root room 9.03_Tech
# Visualisierung: Dateisystem: USB-Stick
define wl_sysmon_fs_usb1 SVG FileLog_sysmon:SM_FS_usb1:CURRENT
attr wl_sysmon_fs_usb1 group RPi
attr wl_sysmon_fs_usb1 label "USB1 Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_fs_usb1 room 9.03_Tech
# 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
# Anzeige CPU Auslasung
define wl_sysmon_cpustat SVG FileLog_sysmon:SM_CPUStat:CURRENT
attr wl_sysmon_cpustat label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
attr wl_sysmon_cpustat group RPi
attr wl_sysmon_cpustat room 9.99_Test
attr wl_sysmon_cpustat plotsize 840,420
define wl_sysmon_cpustat_s SVG FileLog_sysmon:SM_CPUStatSum:CURRENT
attr wl_sysmon_cpustat_s label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
attr wl_sysmon_cpustat_s group RPi
attr wl_sysmon_cpustat_s room 9.99_Test
attr wl_sysmon_cpustat_s plotsize 840,420
define wl_sysmon_cpustatT SVG FileLog_sysmon:SM_CPUStatTotal:CURRENT
attr wl_sysmon_cpustatT label "CPU-Auslastung"
attr wl_sysmon_cpustatT group RPi
attr wl_sysmon_cpustatT plotsize 840,420
attr wl_sysmon_cpustatT room 9.99_Test
# Anzeige Stromversorgung AC
define wl_sysmon_power_ac SVG FileLog_sysmon:SM_power_ac:CURRENT
attr wl_sysmon_power_ac label "Stromversorgung (ac) Spannung: $data{min1} - $data{max1} V, Strom: $data{min2} - $data{max2} mA"
attr wl_sysmon_power_ac room Technik
attr wl_sysmon_power_ac group system
# Anzeige Stromversorgung Battery
define wl_sysmon_power_bat SVG FileLog_sysmon:SM_power_battery:CURRENT
attr wl_sysmon_power_bat label "Stromversorgung (bat) Spannung: $data{min1} - $data{max1} V, Strom: $data{min2} - $data{max2} mA"
attr wl_sysmon_power_bat room Technik
attr wl_sysmon_power_bat group system
SYSSTAT
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:
define sysstatlog FileLog /usr/local/FHEM/var/log/sysstat-%Y-%m.log sysstat
attr sysstatlog nrarchive 1
define svg_sysstat SVG sysstatlog:sysstat:CURRENT
attr wl_sysstat label "Load Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysstat room System
- 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. .
Define
define <name> SYSSTAT [<interval> [<interval_fs>] [<host>]]
definiert ein SYSSTAT Device.
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.
Beispiele:
define sysstat SYSSTAT
define sysstat SYSSTAT 300
define sysstat SYSSTAT 60 600
Readings
- load
die durchschnittliche (Prozessor)last der letzten 1 Minute (für Windows Rechner mit
snmp angenähertem Wert)
- state
die durchschnittliche (Prozessor)last der letzten 1, 5 und 15 Minuten (für Windows
Rechner die Nutzung pro CPU via snmp ermittelt)
- user, system, idle, iowait
den Prozentsatz der entsprechenden Systemlast (nur für Linux Systeme)
- <mountpoint>
Anzahl der freien Bytes für <mountpoint>
Get
get <name> <value>
Werte für value sind
- filesystems
zeigt die Dateisysteme an, die überwacht werden können.
Attributes
- disable
lässt die Timer weiterlaufen, aber stoppt die Speicherung der Daten.
- filesystems
Liste mit Komma getrennten Dateisystemen (nicht Mountpunkten) die überwacht
werden sollen.
Beispiele:
attr sysstat filesystems /dev/md0,/dev/md2
attr sysstat filesystems /dev/.*
attr sysstat filesystems 1,3,5
- 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.
- snmpVersion
- snmpCommunity
- readingFnAttributes
TCM
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TCM
TEK603
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TEK603
THRESHOLD
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
Zeitgesteuertes Heizen mit Hilfe des DOIF-Moduls:
define TH_room THRESHOLD temp_room heating
define di_room DOIF ([05:30-23:00|8] or [07:00-23:00|7]) (set TH_room desired 20) DOELSE (set TH_room desired 18)
Steuerung einer Heizung durch ein Wandthermostat mit Übernahme der Soll- und Ist-Temperatur vom Wandthermostat:
define TH_Heizung THRESHOLD WT_ch1:measured-temp:1:WT_ch2:desired-temp Heizung
Mit set TH_Heizung desired 17 wird die Vorgabe vom Wandthermostat übersteuert bis set TH_Heizung external aufgerufen wird.
Heizung in Kombination mit einem Fensterkontakt mit Zuständen: open, closed:
define TH_room THRESHOLD temp_room OR win_sens heating
Heizung in Kombination mit mehreren Fensterkontakten:
define W_ALL structure W_type W1 W2 W3 ....
attr W_ALL clientstate_behavior relative
attr W_ALL clientstate_priority open closed
define thermostat THRESHOLD S1 OR W_ALL heating
Kombination mehrerer THRESHOLD-Module miteinander:
Es soll bis 21 Grad geheizt werden, aber nur, wenn die Außentemperatur unter 15 Grad ist:
define TH_outdoor THRESHOLD outdoor:temperature:0:15
define TH_room THRESHOLD indoor OR TH_outdoor:state:off heating
set TH_room desired 21
Steuerung einer Heizung nach einer Heizkennlinie:
Berechnung der Solltemperatur für die Vorlauftemperatur für Fußbodenheizung mit Hilfe der 0,8-Heizkennlinie anhand der Außentemperatur :
define TH_heating THRESHOLD flow:temperature:2:outdoor:temperature heating
attr TH_heating target_func -0.578*_tv+33.56
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:
define di_heating DOIF ([22:00-05:00]) (set TH_heating offset -10) DOELSE (set TH_heating offset 0)
Beispiele für Belüftungssteuerung:
Einfache Belüftung anhand der Luftfeuchtigkeit:
Es soll gelüftet werden, wenn die Feuchtigkeit im Zimmer über 70 % ist; bei 60 % geht der Lüfter wieder aus.
define TH_hum THRESHOLD sens:humidity:10:70 ventilator|set @ on|set @ off|1
Belüftung anhand des Taupunktes, abhängig von der Luftfeuchtigkeit innen:
Es soll gelüftet werden, wenn die Luftfeuchtigkeit im Zimmer über 70 % ist und der Taupunkt innen höher ist als außen.
define TH_hum THRESHOLD sens:humidity:10:70||||on:off|_sc
define dewpoint dewpoint indoor
define dewpoint dewpoint outdoor
define TH_room THRESHOLD indoor:dewpoint:0:outdoor:dewpoint AND TH_hum:state:on ventilator|set @ on|set @ off|2
Belüftung in Kombination mit einem Lichtschalter mit Nachlaufsteuerung: siehe DOIF-Modul.
Beispiele für die Steuerung der Warmwasserzirkulation:
Zeitgesteuerte Warmwasserzirkulation:
In der Hauptzeit soll die Wassertemperatur im Rücklauf mindestens 38 Grad betragen.
define TH_circ TRHESHOLD return_w:temperature:0 circ_pump
define di_circ DOIF ([05:30-23:00|8] or [07:00-23:00|7]) (set TH_circ desired 38) DOELSE (set TH_circ desired 15)
Alternative Steuerung mit Sollwert-Vorgabe durch einen weiteren Sensor des Warmwasserspeichers:
Die Rücklauftemperatur soll 5 Grad (offset) unter der Warmwasserspeichertemperatur liegen und bis zu 4 Grad (Hysterese) schwanken dürfen.
define TH_circ THRESHOLD return_w:temperature:4:water_storage:temperature:-5 circ_pump
Beispiele für Beschattungssteuerung:
Beispiel für einfache Beschattung im Sommer:
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.
define TH_shutter_room THRESHOLD T_room AND sun:state:on shutter_room|set @ 30||2
define di_shutter DOIF ([12:00-20:00]) (set TH_shutter desired 23) DOELSE (set TH_shutter desired 30)
Weitere Beispiele für Beschattung mit Verzögerung und automatischem Hochfahren des Rollladens: siehe DOIF-Modul.
Beispiele für die Ausführung beliebiger FHEM/Perl-Befehlsketten:
define thermostat THRESHOLD sensor |set Switch1 on;;set Switch2 on|set Switch1 off;;set Switch2 off|1
define thermostat THRESHOLD sensor alarm|{Log 2,"Wert überschritten"}|set @ off|
define thermostat THRESHOLD sensor ||{Log 2,"Wert unterschritten"}|
Einige weitere Bespiele für Entfeuchtung, Klimatisierung, Bewässerung:
define hygrostat THRESHOLD hym_sens:humidity dehydrator|set @ on|set @ off|1
define hygrostat THRESHOLD hym_sens:humidity AND Sensor2:state:closed dehydrator|set @ on|set @ off|1
define thermostat THRESHOLD temp_sens:temperature:1 aircon|set @ on|set @ off|1
define thermostat THRESHOLD temp_sens AND Sensor2:state:closed aircon|set @ on|set @ off|1
define hygrostat THRESHOLD hym_sens:humidity:20 watering|set @ off|set @ on|2
Beispiele für angepasste Statusanzeige des THRESHOLD-Moduls:
define thermostat THRESHOLD sensor aircon|set @ on|set @ off|2|on:off
Beispiel für reine Zustandanzeige (z. B. für Zustandsauswertung in anderen Modulen) ohne Ausführung von Code:
define thermostat THRESHOLD sensor:temperature:0:30
entspricht wegen Defaultwerte:
define thermostat THRESHOLD sensor:temperature:0:30||||off:on|_sc
Es soll der Modus (mode), Status (state_cmd), Sollvorgabewert (desired_value) und Wert des ersten Sensors (sensor_value) angezeigt werden:
define TH_living_room THRESHOLD T_living_room heating|set @ off|set @ on|2|off:on|_m _sc _dv _s1v
oder
define TH_living_room THRESHOLD T_living_room heating
attr TH_living_room state_cmd1_gt off
attr TH_living_room state_cmd2_lt on
attr TH_living_room state_format _m _sc _dv _s1v
Define
define <name> THRESHOLD <sensor>:<reading>:<hysteresis>:<target_value>:<offset> AND|OR <sensor2>:<reading2>:<state> <actor>|<cmd1_gt>|<cmd2_lt>|<cmd_default_index>|<state_cmd1_gt>:<state_cmd2_lt>|<state_format>
- sensor
ein in FHEM definierter Sensor
- 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.
Get
Attributes
- disable
- loglevel
- state_cmd1_gt
- state_cmd2_lt
- state_format
- number_format
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
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
define Mytecalor THZ /dev/ttyUSB0@115200
oder vir Netzwerk (via ser2net)
define Myremotetecalor THZ 192.168.0.244:2323
define Mythz THZ /dev/ttyUSB0@115200
define FileLog_Mythz FileLog ./log/Mythz-%Y.log Mythz
attr Mythz event-min-interval s.*:4800
attr Mythz event-on-change-reading .*
attr Mythz interval_sDHW 400
attr Mythz interval_sElectrDHWDay 2400
attr Mythz interval_sElectrDHWTotal 43200
attr Mythz interval_sGlobal 400
attr Mythz interval_sHC1 400
attr Mythz interval_sHeatDHWDay 2400
attr Mythz interval_sHeatDHWTotal 43200
attr Mythz interval_sHeatRecoveredDay 2400
attr Mythz interval_sHeatRecoveredTotal 43200
attr Mythz interval_sHistory 86400
attr Mythz interval_sLast10errors 86400
attr Mythz room pompa
attr FileLog_Mythz room pompa
Wenn die Attribute interval_XXXXXXX nicht definiert sind (oder 0), ist das interne Polling deaktiviert.
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
TUL
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: TUL
TechemHKV
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
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
Define
define <name> TechemHKV <4|8 digit ID> [<speaking name>]
- 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
- longID: 8 Ziffern ID des Heizkostenverteilers
TechemWZ
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.
Define
define <name> TechemWZ <8 digit ID> [<speaking name>]
- 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
Text2Speech
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
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 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
- readingFnAttributes
- 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:
Twilight
Define
define <name> Twilight <latitude> <longitude> [<indoor_horizon> [<Weather_Position>]]
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 größer 0, der für die Berechnung der Dämmerung innerhalb von Rämen genutzt werden kann (Typische Werte sind zwischen 0 und 6).
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.
Beispiel:
define myTwilight Twilight 49.962529 10.324845 3 676757
Set
Get
get <name> <reading>
light | der aktuelle virtuelle Tageslicht-Wert |
nextEvent | Name des nächsten Events |
nextEventTime | 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. |
condition | Yahoo! Wetter code |
condition_txt | Yahoo! Wetter code als Text |
horizon | Wert des aktuellen Horizont 0°, -6°, -12°, -18° |
Attributes
- readingFnAttributes
- useExtWeather <device>:<reading>
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 |
UNIRoll
Deutsche Version der Doku nicht vorhanden. Englische Version unter
UNIRoll
USBWX
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: USBWX
USF1000
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: USF1000
UbiquitiMP
FHEM Modul für die Ubiquiti mFi mPower Schaltsteckdosen
Mehr Informationen zu den verschiedenen mPower Modellen im Wiki unter http://www.fhemwiki.de/wiki/Ubiquit_mFi/mPower
FHEM Forum : http://forum.fhem.de/index.php/topic,35722.0.html
|
Define
define <name> UbiquitiMP <IP or FQDN>
Beispiel :
define Ubi UbiquitiMP 192.168.0.100
define Ubi UbiquitiMP myhost.dyndns.org
Perl Net::Telnet und das Perl JSON Modul werden benötigt.
Bei einem Raspberry Pi können diese leicht mit den folgenden beiden Befehlen installiert werden:
apt-get install libjson-perl
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
Utils
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: Utils
VCONTROL
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/
Define
define <name> VCONTROL <serial-device/LAN-Device:port> <configfile> [<intervall>]
- <serial-device/LAN-Device:port>
USB Port (z.B. com4, /dev/ttyUSB3) oder aber TCPIP:portnummer
- <intervall>
Anzahl Sekunden wie oft die Heizung ausgelesen werden soll (default 180)
- <configfile>
Pfad wo die Konfigurationsdatei für das Modul zu finden ist, die die Adressen beinhaltet
Beispiel:
serielle Schnittstelle über com4, alle 3 Minuten wird gepollt, configfile heisst 99_VCONTROL.cfg und liegt im fhem root Verzeichnis
Windows:
define Heizung VCONTROL com4 99_VCONTROL.cfg 180
Linux:
define Heizung VCONTROL /dev/ttyUSB3 99_VCONTROL.cfg 180
Set
Diese müssen über das configfile konfiguriert werden.
Get
get <name> CONFIG
Mit diesem Befehl wird das Modul spezifische configfile nachgeladen.
Diese anderen Befehler müssen über das configfile konfiguriert werden.
configfile
Im configfile hat man nun die folgenden Konfigurations Möglichkeiten.
Beispieldateien f¨r die Geräte-Typen V200KW1, VScotHO1, VPlusHO1 sind auf der wiki Seite http://www.fhemwiki.de/wiki/Vitotronic_200_%28Viessmann_Heizungssteuerung%29 zu finden.
- Zeilen die mit "#" beginnen sind Kommentar!
- Polling Commandos (POLL) zum Lesen von Werten können konfiguriert werden.
- Set Commandos (SET) zum setzen von Werten können konfiguriert werden.
Polling Commandos haben den folgenden Aufbau:
POLL, ADDRESSE, PARSEMETHODE, DIVISOR, READING-NAME, KUMULATION
- POLL
muss fest auf POLL stehen
- 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!
Beispiel:
POLL, 01F7080402, 2ByteS, 10 , Temp-WarmWasser-Ist , -
POLL, 01F7088A02, 2ByteU, 1 , BrennerStarts , day
Set Commandos haben den folgenden Aufbau:
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 zwei 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 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
Beispiele:
SET, WW , 01F423010100, state , -
SET, S-ON , 01F423020101, state_spar , P-OFF
SET, WWTEMP , 01F4630001 , 1ByteU , -
SET, TIMER_2_MO, 01F4200008 , timer , MO
Readings
Die eingelesenen Werte werden wie oben beschrieben in selbst konfigurierten Readings abgelegt.
VIERA
Define
define <name> VIERA <host> [<interval>]
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.
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:
off
mute [on|off]
volume [0-100]
volumeUp
volumeDown
channel [1-9999]
channelUp
channelDown
statusRequest
remoteControl <command>
Fernbedienung (Kann vielleicht nach Modell variieren)
Das Modul hat die folgenden Fernbedienbefehle implementiert:
3D => 3D Knopf
BLUE => Blau
CANCEL => Cancel / Exit
CHG_INPUT => AV
CH_DOWN => Kanal runter
CH_UP => Kanal hoch
D0 => Ziffer 0
D1 => Ziffer 1
D2 => Ziffer 2
D3 => Ziffer 3
D4 => Ziffer 4
D5 => Ziffer 5
D6 => Ziffer 6
D7 => Ziffer 7
D8 => Ziffer 8
D9 => Ziffer 9
DISP_MODE => Anzeigemodus / Seitenverhältnis
DOWN => Navigieren runter
ENTER => Navigieren enter
EPG => Guide / EPG
FF => Vorspulen
GREEN => Grün
HOLD => Bild einfrieren
INDEX => TTV index
INFO => Info
INTERNET => VIERA connect
LEFT => Navigieren links
MENU => Menü
MUTE => Mute
PAUSE => Pause
PLAY => Play
POWER => Power off
P_NR => P-NR (Geräuschreduzierung)
REC => Aufnehmen
RED => Rot
RETURN => Enter
REW => Zurückspulen
RIGHT => Navigieren Rechts
R_TUNE => Vermutlich die selbe Funktion wie INFO
SD_CARD => SD-card
SKIP_NEXT => Skip next
SKIP_PREV => Skip previous
STOP => Stop
STTL => Untertitel
SUBMENU => Option
TEXT => TeleText
TV => TV
UP => Navigieren Hoch
VIERA_LINK => VIERA link
VOLDOWN => Lauter
VOLUP => Leiser
VTOOLS => VIERA tools
YELLOW => Gelb
Beispiel:
set <name> mute on
set <name> volume 20
set <name> remoteControl CH_DOWN
Anmerkung:
Aktivieren von Fernbedienung der Lautstärke per DLNA: Menü -> Setup -> Netzwerk-Setup -> Netzwerkverbindungsein. -> DLNA-Fernbed. Lautst. -> Ein
Get
get <name> <what>
Die folgenden Befehle sind definiert und geben den entsprechenden Wert zurück, der vom Fernseher zurückgegeben wurde.
mute
volume
power
presence
Attribute
Generierte events:
- volume
- mute
- presence
- power
- state
VantagePro2
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: VantagePro2
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
WMBUS - Wireless M-Bus
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.
WMBus verwendet zwei unterschiedliche Radioprotokolle, T-Mode und S-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 bzw. WMBus_S 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 Crypt::CBC, Digest::CRC and Crypt::OpenSSL::AES (AES wird 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 libcrypt-cbc-perl libdigest-crc-perl libssl-dev
sudo cpan -i Crypt::OpenSSL::AES
Define
define <name> WMBUS [<manufacturer id> <identification number> <version> <type>]|<bHexCode>
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 CUL 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.
Set
Get
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.
-
ignore
- rawmsg_as_reading
If set to 1, received raw messages will be stored in the reading rawmsg. This can be used to log raw messages to help with debugging.
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'.
battery 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
WS3600
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.
Define
Set
Get
Attributes
- model WS3600, WS2300,
WS1080 (z.Zt (noch) ohne Wirkung)
WWO
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: WWO
Weather
Define
define <name> Weather <location> [<interval> [<language>]]
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.
Beispiele:
define MyWeather Weather 673513
define Forecast Weather 673513 1800
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.
Beispiel:
define MyWeatherWeblink weblink htmlCode { WeatherAsHtmlH("MyWeather") }
Set
set <name> update
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 |
humidity | gegenwärtige Luftfeuchtgkeit in % |
icon | relativer Pfad für das aktuelle Icon |
pressure | Luftdruck in hPa |
pressure_trend | Luftdrucktendenz (0= gleichbleibend, 1= steigend, 2= fallend) |
pressure_trend_txt | textliche Darstellung der Luftdrucktendenz |
pressure_trend_sym | symbolische Darstellung der Luftdrucktendenz |
temperature | gegenwärtige Temperatur in Grad Celsius |
temp_c | gegenwärtige Temperatur in Grad Celsius |
temp_f | gegenwärtige Temperatur in Grad Celsius |
visibility | Sichtweite in km |
wind | Windgeschwindigkeit in km/h |
wind_chill | gefühlte Temperatur in Grad Celsius |
wind_condition | Windrichtung und -geschwindigkeit |
wind_direction | Gradangabe der Windrichtung (0 = Nordwind) |
wind_speed | Windgeschwindigkeit in km/h (mit wind identisch) |
Attribute
WeekdayTimer
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: WeekdayTimer
X10
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: X10
XBMC
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: XBMC
XmlList
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: XmlList
YAMAHA_AVR
Definition
define <name> YAMAHA_AVR <IP-Addresse> [<Zone>] [<Status_Interval>]
define <name> YAMAHA_AVR <IP-Addresse> [<Zone>] [<Off_Interval>] [<On_Interval>]
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
- 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)
- scene scene1,sceneX - Wählt eine vorgefertigte Szene aus
- 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)
In vielen Receiver-Modellen existieren Eingänge, welche nach der Auswahl keinen Sound ausgeben. Diese Eingänge
bedürfen manueller Interaktion mit der Fernbedienung um die Wiedergabe zu starten (z.B. Internet Radio, Netzwerk Streaming, usw.).
Für diesen Fall gibt es folgende Befehle:
Cursor Steuerung:
remoteControl up
remoteControl down
remoteControl left
remoteControl right
remoteControl enter
remoteControl return
Menü Auswahl:
remoteControl setup
remoteControl option
remoteControl display
Radio Steuerung:
remoteControl tunerPresetUp
remoteControl tunerPresetDown
Die Befehlsnamen entsprechen den Tasten auf der Fernbedienung.
Ein typisches Beispiel ist das automatische Einschalten und Abspielen eines Internet Radio Sender:
# Die Gerätedefinition
define AV_receiver YAMAHA_AVR 192.168.0.3
Und in der myUtils.pm (basierend auf der myUtilsTemplate.pm) die folgende Funktion:
sub startNetRadio()
{
fhem("set AV_Receiver on;
sleep 5;
set AV_Receiver input netradio;
sleep 4;
set AV_Receiver remoteControl enter;
sleep 2;
set AV_Receiver remoteControl enter;
sleep 2;
set AV_Receiver remoteControl enter");
}
Die Kommandos der Fernbedienung müssen mit einem sleep pausiert werden, da der Receiver in der Zwischenzeit arbeitet und keine Befehle annimmt. Diese Befehle werden alle im Hintergrund ausgeführt, so dass für den FHEM Hauptprozess keine Verzögerung entsteht.
Nun kann man diese Funktion in der FHEM Kommandozeile oder in notify-Definitionen wie folgt verwenden.:
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".
Attribute
- do_not_notify
- readingFnAttributes
- request-timeout
Optionales Attribut. Maximale Dauer einer Anfrage in Sekunden zum Receiver.
Mögliche Werte: 1-5 Sekunden. Standardwert ist 4 Sekunden
- disable
Optionales Attribut zur Deaktivierung des zyklischen Status-Updates. Ein manuelles Update via statusRequest-Befehl ist dennoch möglich.
Mögliche Werte: 0 => zyklische Status-Updates, 1 => keine zyklischen Status-Updates.
- volume-smooth-change
Optionales Attribut, welches einen weichen Lautstärkeübergang aktiviert..
Mögliche Werte: 0 => deaktiviert , 1 => aktiviert
- volume-smooth-steps
Optionales Attribut, welches angibt, wieviele Schritte zur weichen Lautstärkeanpassung
durchgeführt werden sollen. Standardwert ist 5 Anpassungschritte
- volumeSteps
Optionales Attribut, welches den Standardwert zur Lautstärkenerhöhung (volumeUp) und Lautstärkenveringerung (volumeDown) konfiguriert. Standardwert ist 5%
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)
- dsp - Das aktuell aktive DSP Preset
- enhancer - Der Status des Enhancers ("on" => 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
- mute - Der aktuelle Stumm-Status ("on" => Stumm, "off" => Laut)
- newFirmware - Zeigt an, ob eine neue Firmware zum installieren bereit liegt ("available" => neue Firmware verfügbar, "unavailable" => keine neue Firmware verfügbar)
- power - Der aktuelle Betriebsstatus ("on" => an, "off" => aus)
- presence - Die aktuelle Empfangsbereitschaft ("present" => empfangsbereit, "absent" => nicht empfangsbereit, z.B. Stromausfall)
- volume - Der aktuelle Lautstärkepegel in Prozent (zwischen 0 und 100 %)
- volumeStraight - Der aktuelle Lautstärkepegel in Dezibel (zwischen -80.0 und +15 dB)
- direct - Zeigt an, ob soundverbessernde Features umgangen werden oder nicht ("on" => soundverbessernde Features werden umgangen, "off" => soundverbessernde Features werden benutzt)
- 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
- state - Der aktuelle Schaltzustand (power-Reading) oder die Abwesenheit des Gerätes (mögliche Werte: "on", "off" oder "absent")
- treble Der aktuelle Höhenpegel, zwischen -6 and 6 dB (main zone) and -10 and 10 dB (andere Zonen)
Eingangsabhängige Readings/Events:
- currentChannel - Nummer des Eingangskanals (nur bei SIRIUS)
- currentStation - Name des Radiosenders (nur bei TUNER, NET RADIO und PANDORA)
- 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.
YAMAHA_BD
Definition
define <name> YAMAHA_BD <IP-Addresse> [<Status_Interval>]
define <name> YAMAHA_BD <IP-Addresse> [<Off_Interval>] [<On_Interval>]
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
- trickPlay normal,repeatChapter,repeatTitle,... - aktiviert Trick-Play Funktionen (Wiederholung, Zufallswiedergabe, ...)
Fernbedienung
Es stehen folgende Befehle zur Verfügung:
Zahlen Tasten (0-9):
remoteControl 0
remoteControl 1
remoteControl 2
...
remoteControl 9
Cursor Steuerung:
remoteControl up
remoteControl down
remoteControl left
remoteControl right
remoteControl enter
remoteControl return
Menü Auswahl:
remoteControl OSDonScreen
remoteControl OSDstatus
remoteControl popupMenu
remoteControl topMenu
remoteControl setup
remoteControl home
remoteControl clear
Farbtasten:
remoteControl red
remoteControl green
remoteControl yellow
remoteControl blue
Wiedergabetasten:
remoteControl program
remoteControl search
remoteControl repeat
remoteControl repeat-AB
remoteControl subtitle
remoteControl audio
remoteControl angle
remoteControl pictureInPicture
remoteControl secondAudio
remoteControl secondVideo
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".
Attribute
- do_not_notify
- readingFnAttributes
- disable
Optionales Attribut zur Deaktivierung des zyklischen Status-Updates. Ein manuelles Update via statusRequest-Befehl ist dennoch möglich.
Mögliche Werte: 0 => zyklische Status-Updates, 1 => keine zyklischen Status-Updates.
- request-timeout
Optionales Attribut. Maximale Dauer einer Anfrage in Sekunden zum Player.
Mögliche Werte: 1-5 Sekunden. Standartwert ist 4 Sekunden
Generierte Readings/Events:
- input - Die aktuelle Wiedergabequelle ("DISC", "USB" oder "Network")
- 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.
YAMAHA_NP
Define
define <name> YAMAHA_NP <ip-address> [<status_interval>]
define <name> YAMAHA_NP <ip-address> [<off_status_interval>] [<on_status_interval>]
Mit Hilfe dieses Moduls lassen sich Yamaha Network Player (z.B. CRX-N560, CRX-N560D, CD-N500 or NP-S2000) via Ethernet steuern.
Theoretisch sollten alle Geräte, die mit der Yamaha Network Player App kompatibel sind, bedient werden können.
Die aktuelle Implementierung ermöglicht u.a. den folgenden Funktionsumfang:
- Power on/off
- Timer on/off
- Input selection
- Timer on/off
- Volume +/-
- Mute on/off
- System Clock Update
- Tuner: tune +/-, preset +/-, Senderinformation (FM/DAB)
- Stand-by mode: eco/normal
- Player (play, stop, next, prev, shuffle, repeat)
- Menünavigation
- ...
Eine YAMAHA_NP Definition initiiert einen internen Task, der von FHEM zyklisch abgearbeitet wird.
Das Intervall (in Sekunden) kann für die Zustände <on_status_interval> und <off_status_interval> optional gesetzt werden.
<off_status_interval> steht für das Intervall, wenn das Gerät ausgeschaltet/abwesend ist.
<on_status_interval> steht für das Intervall, wenn das Gerät eingeschaltet/verfügbar ist.
Wenn keine Parametere angegeben wurden, wird ein Default-Wert von 30 Sekunden für beide gesetzt.
Wenn nur <off_status_interval> gesetzt wird, gilt dieser Wert für beide Zustände (eingeschaltet/ausgeschaltet).
Der Task liest zyklisch grundlegende Parameter vom Network Player wie z.B. (Power-Status , gewählter Eingang, Lautstärke etc.) und triggert notify/filelog Befehle.
Beispiel:
Definition in der fhem.cfg Konfigurationsdatei:
define NP_Player YAMAHA_NP 192.168.0.15
attr NP_player webCmd input:volume:mute:volumeDown:volumeUp
# 60 Sekunden Intervall
define NP_Player YAMAHA_NP 192.168.0.15 60
attr NP_player webCmd input:volume:mute:volumeDown:volumeUp
# 60 Sekunden Intervall für "off" und 10 Sekunden für "on"
define NP_Player YAMAHA_NP 192.168.0.15 60 10
attr NP_player webCmd input:volume:mute:volumeDown:volumeUp
Set
set <name> <command> [<parameter>]
Aktuell sind folgende Befehle implementiert:
Die verfügbaren Eingänge des Network Players werden vom diesem gelesen und dynamisch in FHEM angepasst.
Bemerkung: Bitte bei den Befehlen und Parametern die Groß- und Kleinschreibung beachten.
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 Anzeigenhelligkeit.
- input [<parameter>] - Auswahl des Eingangs des NP. Der aktive Eingang wird vom Gerät gelesen und in FHEM dynamisch dargestellt (z.B. cd, tuner, aux1, aux2, ...).
- 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.
- shuffleToggle - Umschaltung des Zufallswiedergabe.
- repeatToggle - Umschaltung des Wiederholungsmodes.
- playerListCursorDown - Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl bewegt den Cursor nach unten. Nächste Zeile wird im Gerät angezeit.
- playerListCursorReturn - Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl kehrt zurück vom hierarchischen, untergeordneten Menü. Übergeordnetes Menü wird angezeigt.
- playerListCursorUp - Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl bewegt den Cursor nach oben. Vorherige Zeile wird im Gerät angezeit.
- playerListGetList - Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl liefert Informationen (Readings) relevant zur Menünavigation.
- playerListJumpLine [value] - Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl spring zur angegebenen Zeile.
- playerListSelectLine [value] - Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl aktiviert die angegebenen Zeile. Falls die Zeile das Attribut 'Container' (Ordner) besitzt, wird dieser geöffnet. Falls 'Item' wird die Wiedergabe gestartet.
- 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.
- networkInfo - Abfrage von Netzwerk-relevanten Informationen (z.B: IP-Adresse, Gateway-Adresse, MAC-address etc.)
- 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
- timerSet - konfiguriert den Timer nach den Vorgaben: timerHour, timerMinute, timerRepeat, timerVolume. (ALLE Paremeter müssen zuvor gesetzt werden. Dieser Befehl schaltet den Timer nicht ein → 'timer on'.)
- timerVolume [<VOL_MIN>...<VOL_MAX>] - Setzt die Lautstärke des internen Wake-up Timers
- 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.)
- tuner [<parameter>] - Tuner-relevante Befehle.
- bandDAB - Setzt das Tuner-Band auf DAB (falls verfügbar).
- bandFM - Setzt das Tuner-Band auf FM.
- tuneUp - Tuner Frequenz +.
- tuneDown - Tuner Frquenz -.
- presetUp - Tuner Voreinstellung hoch.
- presetDown - Tuner Voreinstellung runter.
- tunerPresetDAB [1...30] - Setzt die DAB Voreinstellung.
- tunerPresetFM [1...30] - Setzt die FM Voreinstellung.
- volume [0...100] - Setzt den 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.
Ein typisches Beispiel ist das Einschalten des Gerätes und das Umschalten auf den Lieblingsradiosender:
Beispieldefinition in der fhem.cfg Konfigurationsdatei:
define NP_player YAMAHA_NP 192.168.0.15 30 5
attr NP_player webCmd input:volume:mute:volumeDown:volumeUp
Folgender Code kann anschließend in die Datei 99_MyUtils.pm eingebunden werden:
sub startMyFavouriteRadioStation()
{
fhem "set NP_player on";
sleep 1;
fhem "set NP_player input tuner";
sleep 1;
fhem "set NP_player tunerPresetDAB 1";
sleep 1;
fhem "set NP_player volume 30";
}
Bemerkung: Aufgrund der relativ langsamen Befehlsverarbeitung im Network Player im Vergleich zur asynchronen Ethernet-Kommunikation, kann es vorkommen, dass veraltete Statusinformationen zurückgesendet werden.
Aus diesem Grund wird empfohlen, während der Automatisierung zwischen den 'set' und 'get' Befehlen ein Delay einzubauen. Speziell beim Hochfahren des Network Players sollte dies beachtet werden.
Die Funktion kann jetzt in der FHEM Befehlszeile eingegeben oder in die Notify-Definitionen eingebunden werden.
{startMyFavouriteRadioStation()}
Get
get <name> <reading>
Aktuell liefert der Befehl 'get' ausschließlich Reading-Werte (s. Abschnitt "Readings").
Attribute
- do_not_notify
- readingFnAttributes
- request-timeout
Optionales Attribut, um das HTTP response timeout zu beeinflußen.
Mögliche Werte: 1...5 Sekunden. Default Wert ist 4 Sekunden.
- 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.
Readings
Elementar-Readings:
- input - Aktivierter Eingang.
- mute - Abfrage des Mute Status (on|off)
- power - Abfrage des Power-Status (on|off)
- presence - Abfrage der Geräteanwesenheit im Netzwerk (absent|present). Bemerkung: Falls abwesend ("absent"), lässt sich das Gerät nicht fernbedienen.
- volume - Abfrage der aktuell eingestellten Lautstärke in % (0...100%)
- volumeStraight - Abfrage der aktuellen absoluten Gerätelautstärke im Gerät (gerätespezifisch)
- sleep - Abfrage des Sleep-Timer Status (30min|60min|90min|120min|off).
- standbyMode - Abfrage des standby Modus (eco|normal).
- state - Abfrage des aktuellen Power Zustands und Anwesenheit (on|off|absent).
Player Readings:
Bemerkung: Die folgenden Readings werden mit dem Befehl "statusRequest playerStatus" aktualisiert.
- playerPlaybackInfo - Abfrage des aktuellen Player Status (play|stop|pause).
- playerDeviceType - Abfrage des Device Typs (ipod|msc).
- playerIpodMode - Abfrage des *Pod/*Pad/*Phone Modus (normal|off)
- playerRepeat - Abfrage des Wiederholungsmodus (one|all)
- playerShuffle - Abfrage des Zufallswiedergabemodus (on|off)
- playerPlayTime - Abfrage der aktuellen Spielzeit (HH:MM:SS).
- playerTrackNumber - Abfrage der Audiotracknummer.
- playerTotalTracks - Abfrage der Gesamtzahl der zu wiedergebenden Tracks.
- playerArtist - Abfrage des Künstler (Artist) (falls verfügbar) der aktuellen Wiedergabe.
- playerAlbum - Abfrage des Albumnamens (falls verfügbar) der aktuellen Wiedergabe.
- playerSong - Abfrage des Tracknamens (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.
Player List (Menu) Readings:
Bemerkung: Die folgenden Readings werden mit dem Befehl "statusRequest playerStatus" aktualisiert.
- playerListCurrentLine - Abfrage der aktuellen Listenzeile (wie im Gerät angezeigt).
- playerListLine_1..._8 - Abfrage des Listeninhalts Zeile 1...8 (Das Gerät liefert 8 Zeilen Pakete).
- playerListLine_Attribute_1..._8 - Abfrage der Listenzeilenattribute Zeile 1...8 (Container|Item|Unselectable).
- playerListMaxLine - Abfrage der Anzahl von Listenzeilen in der aktuellen Liste/Menu.
- playerListMenuName - Abfrage der bezeichnung der aktuellen Liste/Menus.
- playerListStatus - Abfrage des aktuellen Status der Liste/Menus (Busy|Ready).
Tuner Readings:
Bemerkung: Die folgenden Readings werden mit dem Befehl "statusRequest tunerStatus" aktualisiert.
- tunerAudioModeDAB - Abfrage des aktuellen DAB Audio-Modus (Mono|Stereo)..
- tunerBand - Abfrage des aktuellen Radio-Bandes (FM|DAB). DAB falls verfügbar.
- tunerBitRate - Abfrage der aktuellen DAB Stream Bitrate (kbit/s).
- tunerModeDAB - Abfrage des aktuellen DAB Modus (DAB|DAB+).
- tunerFrequencyDAB - Abfrage der aktuellen DAB Frequenz. (xxx.xxx MHz)
- tunerPresetFM - Abfrage der aktuellen FM Voreinstellung. Falls gespeichtert (1...30).
- tunerFrequencyFM - Abfrage der aktuellen FM Frequenz. (xxx.xx MHz)
- tunerProgramServiceFM - Abfrage des FM Sendernamen.
- tunerRadioTextAFM - Abfrage des Radio Text A des FM Senders.
- tunerRadioTextBFM - Abfrage des Radio Text B des FM Senders.
- tunerPresetDAB - Abfrage der aktuellen DAB Voreinstellung. Falls gespeichtert (1...30).
- tunerServiceLabelDAB - Abfrage des DAB Sendernamen.
- tunerChannelLabelDAB - Abfrage des Channel Labels des gewählten DAB Senders.
- tunerDLSDAB - Abfrage des 'Dynamic Label Segment' des gewählten DAB Senders.
- tunerEnsembleLabelDAB - Abfrage des 'Ensemble Label' des gewählten DAB Senders.
Timer Readings:
Bemerkung: Die folgenden Readings werden mit dem Befehl "statusRequest timerStatus" aktualisiert.
- timer - Abfrage des Time Modus (Wecker) (on|off).
- timerRepeat - Abfrage des Timer Wiederholungs Modus (once|every).
- timerStartTime - Abfrage der Timer Startzeit (HH:MM).
- timerVolumeLevel - Abfrage der Timer-Lautstärke.
Bemerkung des Entwicklers
Trivial: Um das Gerät fernbedienen zu können, muss es an das Ethernet-Netzwerk angeschlossen und erreichbar sein.
Das Gerät muss sich im standbyMode "Normal" befinden, um es fergesteuert einzuschalten.
Das Abschalten funktioniert auch standbyMode "Normal" Modus.
ZWDongle
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: ZWDongle
ZWave
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: ZWave
apptime
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: apptime
at
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.
Get
Attribute
- 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 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.
Um einen Intervall um Mitternacht zu spezifizieren, muss man zwei
einzelne angeben, z.Bsp.:
- skip_next
Wird bei at Befehlen verwendet um die nächste Ausführung zu
überspringen
- 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
autocreate
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.
Beispiel:
define autocreate autocreate
attr autocreate autosave
attr autocreate device_room %TYPE
attr autocreate filelog test2/log/%NAME-%Y.log
attr autocreate weblink
attr autocreate weblink_room Plots
Set
Get
Attribute
- 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.
- disable
- 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
- 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:
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
cloneDummy
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
Get
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
- readingFnAttributes
Wichtig: Es müssen unterschiedliche Namen für <name> und <Quelldevice> verwendet
werden!
cmdalias
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: cmdalias
configDB
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
copy
copy <orig name> <copy name>
Erzeugt eine Kopie des Device <orig name> mit dem namen <copy name>.
dewpoint
Berechnungen des Taupunkts. Es gibt drei Varianten, das Modul dewpoint zu verwenden:
- dewpoint: Taupunkt
Erzeugt ein zusätzliches Ereignis "dewpoint" aus Temperatur- und Luftfeuchtewerten eines Fühlers.
- fan: Lüfter
Erzeugt ein Ereignis, um einen Lüfter einzuschalten, wenn die Außenluft
weniger Wasser als die Raumluft enthält.
- alarm: Alarm
Erzeugt einen Schimmel-Alarm, wenn eine Referenz-Temperatur unter den Taupunkt fällt.
Define
define <name> dewpoint dewpoint <devicename-regex> [<temp_name>
<hum_name> <new_name>]
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.
Wenn <temp_name> T lautet, wird die Temperatur aus state T: H: benutzt
und <new_name> zu state hinzugefügt.
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.
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.
# 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
define <name> dewpoint alarm <devicename-regex> <devicename-reference> <diff-temp>
- 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
Set
Get
Attributes
- disable
- absFeuchte
Durch setzen des Attributes absFeuchte wird in den Readings auch die absolute Feuchte mit ausgerechnet.
Durch stateFormat kann man diese Info auch im Status anzeigen.
Beispiel: ( = Der FHEM Name des Adapters der geändert werden muss)
stateFormat:
{sprintf("T: %.1f H: %.1f D: %.1f A: %.1f", ReadingsVal("","temperature",0), ReadingsVal("","H",0), ReadingsVal("","dewpoint",0), ReadingsVal("","absFeuchte",0))}
- 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
dummy
Definiert eine Pseudovariable, der mit set jeder beliebige
Wert zugewiesen werden kann. Sinnvoll zum Programmieren.
Define
define <name> dummy
Beispiel:
define myvar dummy
set myvar 7
Set
set <name> <value>
Weist einen Wert zu.
Get
Attributes
- 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
- readingFnAttributes
eventTypes
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: eventTypes
fheminfo
fheminfo [send]
fheminfo zeigt Informationen über das System und FHEM Definitionen an.
Der optionale Parameter send überträgt die Informationen
an einen zentralen Server um die Entwicklung von FHEM zu unterstützen.
Die übermittelten Daten werden grafisch aufbereitet und können auf
http://fhem.de/stats/statistics.html
abgerufen werden. Anhand der IP-Adresse wird der ungefähre Standort mit
einer Genauigkeit von ca. 40-80 km ermittelt. Die IP-Adresse wird nicht gespeichert.
Eigenschaften:
- Eingesetztes Betriebssystem
- Hardware Architektur
- Installierte Perl Version
- Installierte FHEM release
- Definierte Module (nur offizielle FHEM Module werden ermittelt)
- Definierte Modelle je Modul
Beispiel:
fhem> fheminfo
Fhem info:
Release : 5.3
OS : linux
Arch : i686-linux-gnu-thread-multi-64int
Perl : v5.14.2
uniqueID : 87c5cca38dc75a4f388ef87bdcbfbf6f
Defined modules:
ACU : 1
CUL : 1
CUL_FHTTK : 12
CUL_HM : 66
CUL_WS : 3
FHEM2FHEM : 1
FHEMWEB : 3
FHT : 9
[...]
at : 4
autocreate : 1
dummy : 23
notify : 54
structure : 3
telnet : 2
watchdog : 9
weblink : 17
Defined models per module:
CUL : CUN
CUL_FHTTK : FHT80TF
CUL_HM : HM-CC-TC,HM-CC-VD,HM-LC-DIM1T-CV,HM-LC-DIM1T-FM,HM-LC-SW1-PL,[...]
CUL_WS : S555TH
FHT : fht80b
FS20 : fs20pira,fs20s16,fs20s4a,fs20sd,fs20st
HMS : hms100-mg,hms100-tf,hms100-wd
KS300 : ks300
OWSWITCH : DS2413
Attribute
Die folgenden Attribute werden nur in Verbindung mit dem Parameter
send genutzt. Sie werden über attr global gesetzt.
- sendStatistics
Dieses Attribut wird in Verbindung mit dem update Befehl verwendet.
onUpdate : Überträgt die Daten bei jedem Update (empfohlene Einstellung).
manually : Manuelle Überträgung der Daten über fheminfo send .
never : Verhindert die Überträgung der Daten.
harmony
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: harmony
?, help
? [<moduleName>] []
help [<moduleName>] []
- Liefert eine Liste aller Befehle mit einer Kurzbeschreibung zurück.
- Falls moduleName spezifiziert ist, wird die modul-spezifische Hilfe
aus commandref zurückgeliefert.
- Die anzuzeigende Sprache wird in folgender Reihenfolge bestimmt:
- gültiger Parameter <language> beim Aufruf übergeben
- globales Attribut language
- falls alles fehlt: englisch
holiday
Define
define <name> holiday
Definiert einen Satz mit Urlaubsinformationen. Das Modul versucht die Datei
<name>.holiday im Pfad modpath/FHEM zu
öffnen.
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:
- 1
Genaues Datum. Argument: <MM-TT> <Feiertag-Name>
Beispiel: 1 12-24 Weihnachten
- 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)) }
- 3
Monats-abhängiges Datum. Argument: <X> <Wochentag>
<Monat> <Feiertag-Name>.
Beispiel:
3 1 Mon 05 Erster Montag In Mai
3 2 Mon 05 Zweiter Montag In Mai
3 -1 Mon 05 Letzter Montag In Mai
3 0 Mon 05 Jeder Montag In Mai
- 4
Intervall. Argument: <MM-TT> <MM-TT> <Feiertag-Name>
.
Beispiel:
4 06-01 06-30 Sommerferien
- 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
Siehe auch he.holiday im contrib Verzeichnis für offizielle Feiertage
in den deutschen Bundesländern Hessen und by.holiday für Bayern.
Set
Get
get <name> <MM-DD>
get <name> yesterday
get <name> today
get <name> tomorrow
get <name> days
Gibt den Name des Feiertages zum angebenenen Datum zurück oder den
Text none.
Attributes
KM200
Das Buderus KM200 or KM50 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 Modul erlaubt den Lese-/Schreibzugriff dieser Parameter durch fhem.
Um das KM200 oder KM50 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 KM200 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
|
define <name> km200 <IPv4-address> <GatewayPassword> <PrivatePassword>
|
<name> : | Der Name des Gerätes. Empfehlung: "myKm200". |
<IPv4-address> : | 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 KM200/KM50 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ß.
|
<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 KM200/KM50 Service Struktur auszulesen.
Die zusätzliche Liste von erlaubten Werten oder der Wertebereich zwischen Minimum und Maximum wird nicht zurück gegeben.
|
<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ð² ¤ie Ausgabe des get-Befehls Z.B.: "json "
Folgende Optionen sind verf𧢡r:
json - Gibt anstelle des Wertes, die gesamte Json Antwort des KMxxx als String zur𣫮
|
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 KM200/KM50 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 90s.
|
| IntervalStatVal : | Ein gültiges Abfrageintervall für die statischen Werte des KM200/KM50. 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 3600s.
Der Wert "0" deaktiviert die wiederholte Abfrage der statischen Werte bis das fhem-System erneut gestartet wird oder die fhem.cfg neu geladen wird.
|
| PollingTimeout : | Ein gültiger Zeitwert um dem KM200/KM50 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.
|
| ConsoleMessage : | Ein gültiger Boolean Wert (0 oder 1) welcher die Aktivitäten und Fehlermeldungen des Modul in der Konsole ausgibt. "0" (Deaktiviert) or "1" (Aktiviert)
Der Default-Wert ist 0 (Deaktiviert).
|
| 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𣫬esen des Wertes durch den "set" - Befehl. Der Wert muss >=0ms sein.
Der Default-Wert ist 100 = 100ms = 0,1s.
|
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
msgConfig
Stellt globale Einstellungen für das FHEM Kommando msg bereit.
Define
define <name> msgConfig
netatmo
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: netatmo
notice
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: notice
notify
Define
define <name> notify <Suchmuster> <Anweisung>
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.
Beispiele:
define b3lampV1 notify btn3 set lamp $EVENT
define b3lampV2 notify btn3 { fhem "set lamp $EVENT" }
define b3lampV3 notify btn3 "/usr/local/bin/setlamp
"$EVENT""
define b3lampV3 notify btn3 set lamp1 $EVENT;;set lamp2
$EVENT
define wzMessLg notify wz:measured.* "/usr/local/bin/logfht $NAME
"$EVENT""
define LogUndef notify global:UNDEFINED.* "send-me-mail.sh
"$EVENT""
Hinweise:
<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.
Get
Attribute
- disable
- forwardReturnValue
Rückgabe der Werte eines ausgeführten Kommandos an den
Aufrufer. Die Voreinstellung ist 0 (ausgeschaltet), um weniger
Meldungen im Log zu haben.
- 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 ein zusätzliches Event zu bekommen, 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.
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_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_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
rain
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: rain
readingsGroup
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: readingsGroup
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
remotecontrol
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
Attribute
- loglevel
- 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
restore list []
restore
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.
sequence
Define
define <name> sequence <re1> <timeout1>
<re2> [<timeout2> <re3> ...]
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 Btn3: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
Set
Get
Attributes
- disable
- 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.
Attributes
- disable
- showtime
- 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
speedtest
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: speedtest
statistics
(en | de)
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ässig Gerätewerte zugeordnet sind:
- Min|Avg|Max Minimum, Durchschnitt und Maximum von Momentanwerten:
über den Zeitraum Tag, Monat und Jahr:
brightness, current, energy_current, humidity, temperature, voltage
über den Zeitraum Stunde, Tag, Monat und Jahr:
wind, wind_speed, windSpeed
- 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
- 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 Attribute deltaReadings, 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ässig 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
Attributes
dayChangeTime <Zeit>
Uhrzeit des Tageswechsels. Standardmässig 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.
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 Statistiktypen..
D.h., nur die Gerätewerte, die über Attribute den Statistiktypen 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ässig 5 Sekunden vor der vollen Stunde,
Erlaubt die korrekte zeitliche Zuordnung in Plots, kann je nach Systemauslastung verringert oder vergrößert werden.
singularReadings <GerätRegExp:GeräteWertRegExp:Statistiktyp:Zeitraum>
- Statistiktyp: Min|Avg|Max|Delta|DurationState|Tendency
- Zeitraum: Hour|Day|Month|Year|1h|2h|3h|6h
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.
Beispiel:
Wettersensor:rain:Delta:(Hour|Day)|FritzDect:power:Delta:Day
Badfenster:Window:(Open|Open_Count):Month
specialDeltaPeriodHours <Stunden>
Fügt den Delta-Statistiken einen singulären Gerätewert für die angegebenen Stunden hinzu (z.b. für den Regen in den letzten 72 Stunden)
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.
- readingFnAttributes
structure
Define
define <name> structure <struct_type> <dev1>
<dev2> ...
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
Jedes 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 :FILTER=<filter> <type-specific>
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.
- disable
- disabledForIntervals
- clientstate_behavior
Der Status einer Struktur hängt von den Stati der zugefügten
Devices ab. Dabei wird das propagieren der Stati 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 Devicestati ü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 kueche clientstate_behavior relative
- attr kueche clientstate_priority An|On|on Aus|Off|off
- attr haus clientstate_priority Any_On|An All_Off|Aus
In diesem Beipiel nimmt die Struktur kueche entweder 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.
Beispiel:
- define tuer OWSWITCH <ROMID>
- define lampe1 dummy
- attr lampe1 cmdlist on off
- define kueche structure struct_kitchen lamp1 door
- attr kueche clientstate_priority An|on OK|Aus|off
- attr lampe1 struct_kitchen_map on:An off:Aus
- attr tuer struct_kitchen_map A:open:on A:closed:off
- attr tuer2 struct_kitchen_map A
- 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:
define kitchen structure room lamp1 lamp2
attr lamp1 structexclude kitchen
attr lamp1 structexclude kitchen:stateFormat
- readingFnAttributes
telnet
Define
define <name> telnet <portNumber> [global]
oder
define <name> telnet <servername>:<portNummer>
Erste Form, Server-mode:
Überwacht den TCP/IP-Port <portNummer> auf
ankommende Verbindungen. Wenn der zweite Parameter gobal nicht
angegeben wird, wird der Server nur auf Verbindungen von localhost achten.
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:
define tPort telnet 7072 global
attr tPort globalpassword mySecret
attr tPort SSL
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
Get
Attribute
- password
Bezeichnet ein Passwort, welches als allererster String eingegeben
werden muss, nachdem die Verbindung aufgebaut wurde. Wenn das Argument
in {} eingebettet ist, dann wird es als Perl-Ausdruck ausgewertet, und
die Variable $password mit dem eingegebenen Passwort verglichen. Ist
der zurückgegebene Wert wahr (true), wurde das Passwort
akzeptiert. 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.
Beispiel:
attr tPort password secret
attr tPort password {"$password" eq "secret"}
Hinweis: 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
Entspricht dem Attribut password; ein Passwort wird aber
ausschließlich für nicht-lokale Verbindungen verlangt.
- 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:
socat openssl:fhemhost:fhemport,verify=0 readline
ncat --ssl fhemhost fhemport
openssl s_client -connect fhemhost:fhemport
- allowfrom
Regexp der erlaubten IP-Adressen oder Hostnamen. Wenn dieses Attribut
gesetzt wurde, werden ausschließlich Verbindungen von diesen
Adressen akzeptiert.
- 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.
- sslVersion
Siehe das global Attribut sslVersion.
update
update [<fileName>|all|check|force]
[http://.../controlfile]
Erneuert die FHEM Installation. D.h. es wird zuerst die Datei
http://fhem.de/fhemupdate/controls_fhem.txt heruntergeladen, mit der lokalen
Version dieser Datei (FHEM/controls_fhem.txt) verglichen. Danach werden
alle Programmdateien heruntergeladen, deren Größe oder Zeitstempel
sich unterscheidet.
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
- Falls man <fileName> spezifiziert, dann werden nur die Dateien
heruntergeladen, die diesem Regexp entsprechen.
Siehe also das restore Befehl.
Beispiele:
- update check
- update
- update force
- update check http://fhem.de/fhemupdate/controls_fhem.txt
Attribute (sind mit attr global zu setzen)
- 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.
- 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
- restoreDirs
update sichert jede Datei vor dem Überschreiben mit der neuen
Version aus dem Web. Für diesen Zweck wird zuerst ein restoreDir
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.
Falls man den Wert auf 0 setzt, dann ist dieses Feature deaktiviert.
watchdog
Define
define <name> watchdog <regexp1> <timespec>
<regexp2> <command>
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 FHT80 für 15 Minuten keine Nachricht
# emfpangen wurde.
define w watchdog HMS100-FIT 01:00: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 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
Get
Attribute
- addStateEvent
- disable
- disabledForIntervals
- 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.
=end html
=cut
weblink
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: weblink
weco
Sorry, keine deutsche Dokumentation vorhanden.
Die englische Doku gibt es hier: weco
withings
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: withings
xxLG7000
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: xxLG7000
yowsup
Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es
hier: yowsup
Perl specials
Wenn Sie einige Aufgaben automatisieren wollen, dann sollten Sie die Befehle
at oder notify nutzen. Für
komplexere Aufgaben sollten Sie lieber ein SHELLl-Skiipt oder einen PERL
"oneliner" als das at/notify argument anwenden. Dieser Abschnitt gibt Ihnen
einige Tipps zur Anwendung der PERL-oneliner.
- 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.
Beispiele:{ "Hello" }
{ 1+3*4 }
{ `ls /etc` }
{ Log 1, "Hello" }
-
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.
Beispiel
{ fhem "set light on" }
define n1 notify piri:on { fhem "set light on" }
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:
define MyMacro notify MyMacro { Log 1, "Hello"}
trigger MyMacro
define MacroWithArg notify MyMacro { Log 1, "Hello %"}
trigger MyMacro MyArg
- Um die Verwendung von Datum und Zeitangaben zu vereinfachen, wurden die
Variablen $sec, $min, $hour, $mday, $month, $year, $wday, $yday, $isdst
für die Verwendung in PERL-"oneliners" eingeführt (s.
unter perldoc -f localtime). Ausnahmen: $month hat einen Wertebereich von 1
to 12 und $year ist korrigiert von 1900.
Weiterhin enthät $hms die Zeit in dem HH:MM:SS Format.
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 holida2we Attribut setzt, dann ist $we ebenfalls 1
bei Urlaubstagen.
define n2 notify piri:on { if($hour > 18 || $hour < 5) {
fhem "set light on" } }
define roll_en *07:45:00 { fhem "trigger SwitchAllRoll on" if(!$we) }
define roll_en *08:30:00 { fhem "trigger SwitchAllRoll on" if($we) }
-
Die follgendenHilsfunktionen 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ätestati/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>)
Wie ReadingsVal, löscht aber alles, was kein Zahl ist, um den Wert
bei Berechnungen verwenden zu können.
-
AttrVal(<devicename>,<attribute>,<defaultvalue>)
Gibt die gesetzteb Attribute des Gerätes zurück
{ Value("wz") }
{ OldValue("wz") }
{ time_str2num(OldTimestamp("wz")) }
{ ReadingsVal("wz", "measured-temp", "20")+0 }
{ ReadingsTimestamp("wz", "measured-temp", 0)}
{ AttrVal("wz", "room", "none") }
-
InternalVal(<devicename>,<reading>,<defaultvalue>)
Gibt den Inhalt der "internal" zurück (den Inhalt der in
dem "Internals"-Abschnitt von "list device" angezeigt wird)
-
Wenn Sie das 99_SUNRISE_EL.pm Modul benutzen, haben Sie zugriff auf
folgende Funktionen:
sunset($offset, $min, $max)
sunrise($offset, $min, $max)
isday()
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.
gnuplot file syntax
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 fhemwiki 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.
| | | |