fhem.pl Referenz

Version: EN DE

Inhalt

    Einleitung
    FHEM Befehls-Typen
    Geräte-Spezifikation

    FHEM-Befehle
      attr   backup   CULflash   cmdalias   createlog   define   delete   deleteattr   deletereading   fheminfo   get   getstate   ?,help   include   inform   JsonList   list   modify   notice   quit   reload   rename   rereadcfg   save   set   setdefaultattr   setreading   setstate   shutdown   sleep   trigger   update   usb   version   xmllist  

    Geräte
      global
      ALL3076   ALL4000T   ALL4027   BBB_BMP180   BS   CM11   CO20   CUL   CUL_EM   CUL_FHTTK   CUL_HM   CUL_HOERMANN   CUL_IR   CUL_MAX   CUL_RFR   CUL_TX   CUL_WS   ECMD   ECMDDevice   EGPM   EGPM2LAN   EIB   EM   EMEM   EMGZ   EMWZ   ENECSYSGW   ENECSYSINV   ENIGMA2   ESA2000   EnOcean   FBAHA   FBDECT   FHT   FHT8V   FHZ   FRM   FRM_AD   FRM_I2C   FRM_IN   FRM_LCD   FRM_OUT   FRM_PWM   FRM_RGB   FRM_ROTENC   FRM_SERVO   FRM_STEPPER   FS20   GDS   GEOFANCY   GUEST   HMLAN   HMS   HTTPMOD   HTTPSRV   HUEBridge   HUEDevice   I2C_BMP180   I2C_DS1307   I2C_LCD   I2C_PCA9532   I2C_PCF8574   I2C_SHT21   IF   IPCAM   IPWE   IT   Itach_Relay   JSONMETER   JeeLink   JsonList2   KM271   KS300   LGTV   LINDY_HDMI_SWITCH   LIRC   LISTENLIVE   LUXTRONIK2   LaCrosse   M232   M232Counter   M232Voltage   MAX   MAXLAN   MPD   MSG   MSGFile   MSGMail   NetIO230B   ONKYO_AVR   OREGON   OWAD   OWCOUNT   OWDevice   OWFS   OWID   OWLCD   OWMULTI   OWSWITCH   OWServer   OWTEMP   OWTHERM   OWX   PCA301   PHTV   PID20   PIFACE   POKEYS   Pushover   RESIDENTS   RFXCOM   RFXMETER   RFXX10REC   ROOMMATE   RPII2C   RPI_GPIO   Revolt   SCIVT   SISPM   SIS_PMS   SML   STACKABLE_CC   STV   SWAP   SWAP_0000002200000003   SYSMON   TCM   THZ   TRX   TRX_ELSE   TRX_LIGHT   TRX_SECURITY   TRX_WEATHER   TUL   TellStick   Text2Speech   UNIRoll   USBWX   USF1000   Utils   VIERA   VantagePro2   WEBCOUNT   WEBIO   WEBIO_12DIGITAL   WEBTHERM   WS2000   WS300   WS3600   WWO   Weather   X10   XBMC   YAMAHA_AVR   YAMAHA_BD   ZWDongle   ZWave   cloneDummy   configdb   geodata   netatmo   openweathermap   panStamp   pilight   withings   xxLG7000  

    Hilfs (Erweiterungs-) Module
      apptime   at   autocreate   average   Calendar   configDB   Dashboard   DbLog   dewpoint   dummy   eventTypes   FHEM2FHEM   FHEMWEB   FB_CALLMONITOR   FileLog   FLOORPLAN   HCS   Heating_Control   HMinfo   holiday   LightScene   mailcheck   notify   PID   PRESENCE   PachLog   RSS   RandomTimer   rain   readingsGroup   readingsProxy   remotecontrol   SUNRISE_EL   SYSSTAT   sequence   speedtest   structure   SVG   telnet   Twilight   THRESHOLD   WeekdayTimer   watchdog   weblink   WOL   XmlList  

    PERL Besonderheiten
    gnuplot file Syntax

Einleitung

    FHEM wird hauptsächlich zur Heimautomatisierung benutzt, ist aber ebenso für andere Aufgaben einsetzbar wo Benachrichtigungen, Zeitschaltungen und Datensammlungen eine wichtige Rolle spielen.

    FHEM unterstützt verschiedene Hardwaregeräte die eine Verbindung mittels unterschiedlicher Protokolle (z.B. FHZ1000 mit Interfaces vom Typ FS20 und HMS, CM11 um mit X10 zu arbeiten) sowie logischer Geräte wie FS20 oder FHT die einen Nachrichtenaustausch mit verschiedensten Geräten die diese Protokolle verwenden ermöglichen.

    FHEM ist modular. Abhängig von den unterschiedlichen Geräten werden in den Modulen verschiedene Funktionen (z.B. define, get, set) realisiert. FHEM enthält weitere Funktionen wie Trigger (notify), Zeitabhängige Funktionen (at) die die Funktionalität erweitern.

    FHEM wird entweder über einfache ASCII-Kommandozeilen gesteuert die in Dateien wie z.B. der Konfigurationsdatei fhem.cfg gespeichert sind oder über eine TCP/IP Verbindung, entweder direkt in einer "telnet"-Sitzung, oder per fhem.pl im Client-Modus oder über eines der Webfrontends.
     

    Wenn Sie den FHEM-Server starten, müssen Sie eine Konfigurationsdatei auswählen:

      perl fhem.pl fhem.cfg
     

    Nachstehend eine Minimal-Konfiguration Datei:

        attr global logfile log/fhem.log
        attr global modpath .
        attr global statefile log/fhem.save
        attr global verbose 3
        define telnetPort telnet 7072 global
        define WEB FHEMWEB 8083 global
    Die letzten zwei Zeilen definieren einen telnet und einen WEB Zugang, beide können aber bei Bedarf auch abgeschaltet werden.

    Die WEB Schnittstelle kann über
      http://<fhemhost>:8083
    erreicht werden.

    Die Kommunikation mit FHEM kann entweder in einer "session" (über telnet) oder über einzelne Klient-Kommandos (über fhem.pl) erfolgen. Beispiel:
      telnet <fhemhost> 7072
      <NL>
      (Die Betätigung der "Enter"-Taste schaltet in den  "prompt" Modus)
      <command>...
      quit

    oder
      fhem.pl <fhemhost>:7072 "<command>..."

FHEM Befehlstypen

    Es gibt drei Arten von Befehlen: "fhem" Befehle (werden in diesem Dokument beschrieben), SHELL-Befehle (diese müssen von doppelten Anführungszeichen "" eingeschlossen werden) und PERL-Ausdrücken (von geschwungenen Klammern {} eingeschlossen). SHELL-Befehle oder PERL-Ausdrücke werden für komplexe at oder notify Ausdrücke benötigt, können aber auch als "normale" Befehle angewendet werden.

    Die folgenden drei Befehle bewirken z.B. dasselbe Ergebnis, wenn sie am telnet-Prompt eingegeben werden:
      set lamp off
      "fhem.pl 7072 "set lamp off""
      {fhem("set lamp off")}
    SHELL-Kommandos werden im Hintergrund ausgeführt, PERL-Ausdrücke und FHEM-Kommandos werden im Haupt-"thread" ausgeführt. Um PERL-Ausdrücke leichter eingeben zu können, sind einige Spezialfunktionen und Variablen verfügbar. Lesen Sie sich bitte die Abschnitte Perl special zum besseren Verständnis durch.

    Um FHEM-Befehle in einen SHELL-Script zu triggern (dies ist eine "andere" Möglichkeit), benutzen Sie bitte die oben beschriebene Client-Form der fhem.pl.
    Mehrere FHEM-Kommandos hintereinander werden mittels Semikolon (;) getrennt. Weil Semikola auch in PERL-Code oder SHELL-Programmen benutzt werden, müssen sie mittels doppelten Semikola geschützt werden. Lesen Sie sich bitte die Bermerkungen des notify-Abschnittes zu Kommandoparametern und Regeln durch.
    Z.B. schaltet die erste der folgenden Befehlszeilen die Lampe 1 nur/erst zur Uhrzeit 07:00 Uhr aus, die Lampe 2 aber sofort und die zweite Befehlszeile schaltet Lampe 1 und 2 um 7:00 Uhr gleichzeitig aus.

      define lampoff at 07:00 set Lamp1 off; set Lamp2 off
      define lampoff at 07:00 set Lamp1 off;; set Lamp2 off

    Für jede weitere Indirektion muss man die Strichpunkte verdoppeln. Um also die beiden Lampen um 7:00 für 10 Minuten einzuschalten schreibt man:
      define onAt at 07:00 set Lamp1 on;;set Lamp2 on;; define offAt at +00:10 set Lamp1 off;;;;set Lamp2 off
    Keine Angst, das Vorherige kann in FHEM auch deutlich einfacher formuliert werden als:
      define onAt at 07:00 set Lamp1,Lamp2 on-for-timer 600

    Befehle können entweder direkt eingegeben oder aus einer Datei (z.B. am Start von FHEM aus der Konfugurationsdatei) eingelesen werden. Die Befehle werden entweder direkt ausgeführt oder später wenn sie als Argumente eines at oder notify-Befehles verwendet werden.

    Eine mit einem \ abgeschlossene Zeile wird mit der nachfolgenden Zeile verbunden. Somit können lange Befehlszeilen (die z.B. aus mehreren PERL-Befehlen bestehen) auf mehrere Zeilen aufgteilt werden. Einige Web-Frontends (z.B. webpgm2) erleichtern die Eingabe von sich über mehrere Zeilen erstreckende Befehle, indem man keine \ am Zeilenende eingeben muss.

     

Geräte-Spezifikation (devspec)

    Die Befehle attr, set, get, usw. attr, deleteattr, displayattr, delete, get, list, set, setreading, setstate, trigger können eine komplexere Gerätespezifikation als Argumente enthalten, die auch eine Anzahl von Geräten betreffen kann. Eine Gerätespezifikation kann folgendes sein:
    • ein einzelner Gerätename. Dies ist der Normalfall
    • eine durch Komma(,) getrennte Liste von Gerätenamen
    • ein regulärer Ausdruck
    • ein NAME=WERT Ausdruck, wo NAME ein "Internal" Wert wie TYPE ist, ein Reading-Name oder ein Attribut. WERT ist ein regulärer Ausdruck. Um die Bedingung zu negieren, sollte NAME!=WERT verwendet werden.
    • Falls die Spezifikation von :FILTER=NAME=WERT gefolgt wird, dann wird die zuvor gefundene Liste durch diesen neuen Ausdruck gefiltert.
    Beispiele:
      set lamp1 on
      set lamp1,lamp2,lamp3 on
      set lamp.* on
      set room=kitchen off
      set room=kitchen:FILTER=STATE=on off
      set room=kitchen:FILTER=STATE!=off off
      list disabled=
      list TYPE=FS20 STATE
    Bemerkungen:
    • die Spezifikation kann keine Leerzeichen enthalten.
    • falls ein Gerätename exakt dem Spezifikation entspricht, dann werden keine reguläre Ausdrücke oder Filter ausgewertet.
    • zuerst wird die durch Komma getrennte Spezifikation abgearbeitet, dann folgen die regulären Ausdrücke und die Filter
    • die Befehlszeile kann die selbe Gerätebezeichnung mehrfach enthalten z.B.: "set lamp3,lamp3 on". Lamp3 wird hier zwei Mal eingeschalten.
    • um Strukturen mit komplexeren Anforderungen zu realisieren lesen Sie bitte den Abschnitt zu structure.

?, help

    ?
    help

    Sie erhalten eine Liste aller Befehle mit einer Kurzbeschreibung jedes Befehls.

attr

    attr <devspec> <attrname> [<value>]

    Dieser Befehl setzt ein Attribut für ein Gerät welches mit define definiert wurde. Sie können auch Ihre eigenen Attribute definieren, um sie in anderen Applikationen anzuwenden. Geben Sie "<attr <name> ?" ein, um eine Liste verfügbarer Attribute anzuzeigen. Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.

    Attribute, die für alle Geräte anwendbar sind:

    • verbose
      Setzt den Schwellwert für die Logfile-Meldungen. Mögliche Werte sind:
      • 0 - Server start/stop
      • 1 - Fehlermeldungen oder unbekannte Pakete
      • 2 - bedeutende Ereigbisse/Alarme.
      • 3 - ausgesendete Kommandos werden gelogged.
      • 4 - von den einzelnen Geräten empfangene Daten.
      • 5 - Fehlersuche.
      Der für die global Instanz gesetzte Wert gilt als Voreinstellung für die Instanzen, die dieses Attribut nicht gesetzt haben.
    • comment
      Fügt einen beliebigen Kommentar hinzu.
    • alias
      Wird in FHEMWEB benutzt, um ein en anderen Namen für ein Gerät anzuzeigen z.B. wenn Sonderzeichen/Leerzeichen nicht in der Gerätedefinition verwendet werden können.
    • room
      Filtert/gruppiert Geräte. Ein Gerät kann zu mehr als einem Raum zugeordnet werden. In diesem Fall müssen die Raumzuordnungen durch Kommata getrennt angegeben werden.
      Geräte, die dem Raum mit der Bezeichnung "hidden" zugeordnet werden, erscheinen nicht auf der Webseite.
    • group
      Gerätegruppen. FHEMWEB zeigt Geräte die in die gleiche Gruppe gehören auch in einer gemeinsamen Box an. Ein Gerät kann zu mehr als einer Gruppe gehören. In diesem Fall müssen die entsprechenden Gruppen durch Kommata getrennt eingetragen werden. Wenn dieses Attribut nicht gesetzt ist, wird der in der Gerätegruppe gesetzte Gerätetyp verwendet.
    • showtime
      Wird im FHEMWEB verwendet, um die Zeit der letzten Aktivität anstelle des Status in der Gesamtansicht anzuzeigen. Nützlich z.B. für FS20 PIRI Geräte.
    • readingFnAttribute

      Die folgenden Attribute werden bei Modulen verwendet, die standardisierte "readings" Aktualisierung der fhem.pl benutzen. Informieren Sie sich in der Liste der Modulattribute wenn Sie wissen möchten ob dies unterstützt wird.

    • stateFormat
      Ändert den Gerätestatus, dies ist z.Bsp. in der Ausgabe des list Kommandos zu sehen, oder in der Raumübersicht von FHEMWEB. Falls nicht gesetzt, dann wird das state Reading übernommen. Sonst werden alle Wörter im Wert des Attributes durch das entsprechende Reading des Gerätes ersetzt (soweit vorhanden). Falls der Wert in {} eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die Auswertung passiert bei jeder Änderung eines Readings.
    • event-on-update-reading
      Wenn nicht gesetzt, erzeugt jede Veränderung eines "readings" ein Ereignis, welches z.B. von notify oder FileLog berücksichtigt wird. Wenn gesetzt erzeugen nur Aktualisierungen der eingetragenen "readings" ein Ereignis.
    • event-on-change-reading
      Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings". Wenn gesetzt, erzeugen nur Veränderungen der gelisteten "readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten "readings" identisch sind, wird kein Ereignis generiert.
    • Die unterschiedlichen Bedeutungen von event-on-update-reading und event-on-change-reading sind folgende:
      1. Wenn beide Attribute nicht gesetzt sind erzeugt jede Aktualisierung eines jeden "readings" eines Gerätes ein Ereignis.
      2. Wenn eines der Attribute gesetzt ist, erzeugen nur Updates oder änderungen von "readings" die nicht in einem der Attribute gesetzt sind ein Ereignis.
      3. Wenn ein "reading" in event-on-update-reading aufgeführt ist, erzeugt eine Aktualisierung ein Ereignis unabhängig ob das "reading" auch in event-on-change-reading aufgelistet ist.
    • event-min-interval
      Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings:minInterval" Paare. readings kann ein regexp sein. Ein Event wird nur dann generiert, falls seit dem letzten Auftreten des gleichen Events mindestens minInterval Sekunden vergangen sind.
    • userReadings
      Komma getrennte Liste von benutzerdefinierten Readings. Jede Definition hat folgendes Format:
        <reading>[:<trigger>] [<modifier>] { <perl code> }
      Diese benutzerdefinierte Readings werden bei jeder Aktualisierung der Gerätereadings gesetzt, indem das spezifizierte perl code { <perl code> } ausgeführt wird, und dessen Wert dem Reading zugewiesen wird. Falls <trigger> spezifiziert ist, dann findet diese Ausführung nur dann statt, falls einer der aktualisierten Readings dem regexp <trigger> entspricht (matched).
      Beispiele:
        attr myEnergyMeter userReadings energy { ReadingsVal("myEnergyMeter","counters.A",0)/1250.0;; }
        attr myMultiMeter userReadings energy1:counters.A {ReadingsVal("myMultiMeter","counters.A",0)/1250.0}, energy2:counters.B {ReadingsVal("myMultiMeter","counters.B",0)/1250.0}
      <modifier> kann die folgenden Werte haben:
      • none: als ob man es gar nicht spezifiziert hätte.
      • difference: das Reading wird auf die Differenz zw. dem aktuellen und dem vorherigen Wert gesetzt.
      • differential: das Reading wird auf die Differenz zw. dem aktuellen und dem vorherigen Wert, geteilt durch die Sekunden zw. der aktuellen Zeit und der letzten Auswertung, sekundengenau. Kein Wert wird berechnet, falls der Unterschied unter eine Sekunde liegt.
      • offset: wenn der aktuellen Wert kleiner als der vorherige Wert ist wird der vorherige Wert zum Reading addiert. Das Reading kann dann als offset verwendet werden um einen Zähler der durch Sromverlust zurückgesetzt wird zu korrigieren.
      • monotonic: wenn die Differenz zw. dem aktuellen und dem vorherigen Wert positiv ist wird diese Differenz zum Reading addiert. Damit lässt sich von einem Zähler der bei Stromverlust zurückgesetzt wird ein monoton wachsender Zähler ableiten.
      Beispiel:
        attr myPowerMeter userReadings power differential { ReadingsVal("myPowerMeter","counters.A",0)/1250.0}
      Achtung: Falls difference oder differential spezifiziert ist, dann werden für die Berechnung ältere Werte benötigt, d.h. der Wert wird frühestens beim zweiten Änderung gesetzt.


    Gerätespezifische Attribute sind in der Beschreibung zum jeweiligen Gerät aufgeführt.
    Beispiele:
      attr global verbose 3
      attr lamp room kitchen
      attr lamp group lights
      attr lamp loglevel 6
      attr weatherstation event-on-update-reading wind,temperature,humidity
      attr weatherstation event-on-change-reading israining
      attr weatherstation event-on-change-reading israining,state
      attr heating stateFormat Temp:measured-temp, Valve:actuator

    Bemerkungen:
    • Lesen Sie unter deleteattr nach um Attribute zu löschen.

setdefaultattr

    setdefaultattr [<attrname> [<value>]]

    Fügt Sie ein Standardattribut hinzu. Jedem nach dieser Zuweisung definierte Gerät wird dieses Attribut zugewiesen. Wenn kein "attrname" angegeben wird, dann wird die Liste der Standardattribute gelöscht.

    Beispiel, um das Attribut "room kitchen" und "loglevel 4" allen Lampen zuzuweisen:
      setdefaultattr room kitchen
      setdefaultattr loglevel 4
      define lamp1 FS20 1234 11
      define lamp2 FS20 1234 12
      define lamp3 FS20 1234 13
      setdefaultattr

    Anmerkungen:
    • es gibt keine Möglichkeit, ein einzelnes Standardattribut aus der Liste tu löschen.

define

    define <name> <type> <type-specific>

    Definiert ein Gerät. Sie müssen Geräte einrichten um sie zu beeinflussen (z.B. das Kommando set on/off auszuführen). Gleichfalls ist das Logfile besser lesbar wenn es z.B. "lamp off" anstatt "Device 5673, Button 00, Code 00 (off)" als Text enthält.
    Geben Sie an der Befehlszeile "define <name> ?" ein, um eine Liste der verfügbaren "types" zu erhalten.
    Nach der Definition, wird das globale Ereignis "DEFINED" genriert. Genauere Beschreibung erhalten Sie im Abschnitt "notify".


    Jedes Gerät besitzt unterschiedliche hinzufügbare Argumente per Definition, lesen Sie sich bitte die zu dem jeweiligen Gerät gehörenden Abschnitte durch.

delete

    delete <devspec>

    Löscht etwas was mit dem define Befehl erstellt worden ist.
    Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.
    Nach dem löschen, wird das globale Ereignis "DELETED" erzeugt.
    Beispiel:
      delete lamp

deleteattr

    deleteattr <devspec> [<attrname>]

    Löscht entweder ein einzelnes Attribut (siehe Abschnitt attr ) oder alle Attribute eines Gerätes (falls kein <attrname> angegeben wird).
    Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.

    Beispiele:
      deleteattr lamp follow-on-for-timer
      deleteattr lamp

deletereading

    deletereading <devspec> <readingname>

    Entfernt das Reading <readingname> für das spezifizierte Gerät. <readingname> ist ein perl Regular-Expression, was den vollständigen Namen des Readings erfassen muss. Mit größter Sorgfalt verwenden! FHEM kann abstürzen, falls man lebenswichtige Readings entfernt.
    Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.

    Beispiele:
      deletereading mySensor temp1
      deletereading mySensor temp\d+

displayattr

    displayattr <devspec> [<attrname>]

    Zeigt entweder den Wert eines Attributes an (falls <attrname> spezifiziert wurde) oder alle Attribute eines Gerätes. Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.
    Falls mehrere Geräte spezifiziert wurden, dann enthält die Ausgabe den Namen der Geräte.
    Beispiele:
      fhem> di WEB
      menuEntries AlarmOn,/fhem?cmd=set%20alarm%20on
      room Misc.
      fhem> di WEB room
      Misc.

get

    get <devspec> <type-specific>

    Fragt einen Wert direkt  (aktuell) vom Gerät ab und wartet auf eine Antwort. Eine allgemeine Liste möglicher Paramter erhalten Sie mit
      get <device> ?
    Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.
    Jedes Gerät hat unterschiedliche "get"-Parameter. Lesen Sie Details bitte im zugehörigen Abschnitt nach.

getstate

    getstate <devspec>

    Gibt einen kurzen, durch Leerzeichen getrennte Statusliste für <devspec> aus . Dies ist nützlich, um das Gerät in z.B. Cacti zu beobachten.
    Beispiel:
      getstate lamp
      state:1

      getstate fl
      ack:0 actuator:2 day-temp:21.5 desired-temp:22.5 [...] measured-temp:22.9 [...]
    Bemerkung: Um diesen Befehl nutzen zu können, kopieren Sie bitte  die Datei 99_getstate.pm aus dem Verzeichnis contrib/getstate/ in Ihr FHEM Verzeichnis.

include

    include <filename>

    Liest (z.B. als Befehlszeile in der fhem.cfg) die in <filename> angegebene Datei in FHEM ein und interpretiert jede Dateizeile als FHEM Befehl. Mit dieser Hilfe werden Konfigurationsdateien modularer und erlaubt es sie z.B. nach Räumen geordnet auftzuteilen.

inform

    inform {on|off|timer|raw} [regexp]

    Wenn auf "on" gesetzt und der Status eines Gerätes ändert sich, dann wird eine Nachricht an den Client gesendet. Dieser Befehl kann von anderen Programmen/Modulen dazu benutzt werden, eine Hinweisnachricht zu erhalten.
    Die Option "timer" fügt  der Nachricht einen Zeitstempel hinzu. Hinweis: Dieser Befehl erleichtert Ihnen die bessere Kontrolle in notify oder FileLog , wann welche Ereignisse erzeugt wurden.

list

    list [devspec] [value]

    Auflistung aller "definitions", "notify" und "at"-Definitionen. Dies ist eines der wenigen Befehle, die im Normalfall eine Zeichenkette ausgeben.
    Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.

    Wenn value angegeben ist, der von ( DEF, TYPE, usw) oder reading (actuator, measured-temp) für alle Geräte die in devspec angegeben sind.

    Beispiel:
      fhem> list
    
      Type list  for detailed info.
    
      Internal:
        global               (Internal)
    
      FHZ:
        FHZ                  (fhtbuf: 23)
    
      FS20:
        Btn4                 (on-old-for-timer)
        Roll1                (on)
        Stehlampe            (off)
    
      FHT:
        fl                   (measured-temp: 21.1 (Celsius))
    
      KS300:
        out1                 (T: 2.9  H: 74  W: 2.2  R: 8.2  IR: no)
    
      at:
        at_rollup            (Next: 07:00:00)
    
      notify:
        ntfy_btn4            (active)
    
      FileLog:
        avglog               (active)
    
      
    Wenn Sie für name einen Gerätenamen eingeben, dann erhalten Sie einen genauen Status für das in name angegebene Gerät angezeigt, z.B.:
      fhem> list fl
    
      Internals:
        CODE       5102
        DEF        5102
        NAME       fl
        NR         15
        STATE      measured-temp: 21.1 (Celsius)
        TYPE       FHT
        IODev      FHZ
      Attributes:
        room       Heizung
      Readings:
        2006-11-02 09:45:56   actuator        19%
        [...]
      

modify

    modify <name> <type-dependent-options>

    Dieser Befehl wird benutzt, um Definitionen zu verändern. Er ist nützlich, um at oder notify Definitionen zu verändern. Wenn Sie einen Wert einer an Definition verändern, dann wird nur der für die Zeit zuständige Teil geändert. Im Falle der Veränderung einer Definition vom Typ "notify" wird nur der  regex Teil geändert. Alle anderen Werte (Stati, Attribute,  etc) bleiben erhalten.

    Beispiel:
      define lampon at 19:00 set lamp on
      modify lampon *19:00
      modify lampon 19:00 set lamp on-for-timer 16

quit

    quit

    Dieser Befehl wird in einer TCP/IP Session benutzt um die Client-Sitzung zu beenden.
    Wird dieser Befehl in einem Skript benutzt, wird das abarbeiten des Skriptes beendet.

    Beispiel:
      quit

reload

    reload <module>

    Reload the given module from the module directory. It is a convenient way to test modules whithout restarting the program.

    Example:
      reload 99_PRIV

rename

    rename <oldname> <newname>

    Benennt ein Gerät von <oldname> in <newname>, einschliesslich der Attribute, um. Das globale Ereignis "RENAMED" wird erstellt, Lesen Sie bitte den Abschnitt "notify" durch um Details zu erfahren.

    Beispiel:
      rename FHT_1234 fht.kitchen

rereadcfg

    rereadcfg [fhem-config-file]

    Liest entweder die aktuelle Konfigurationsdatei oder die angegebene Datei ein.
    Der Ablauf ist dabei wie folgt:  Zuerst wird das statefile gesichert. Dann werden alle Geräte gelöscht. Dann wird die aktuelle Konfigurationsdatei (oder die angegebene Datei) eingelesen zuletzt wird das statefile neu eingelesen.
    Wenn dieser Ablauf abgeschlossen ist, wird das globale REREADCFG Ereignis ausgelöst. Alle existierenden Verbindungenwerden bis zum "rereadcfg" Ereignis getrennt.

    Beipiel:
      rereadcfg

save

    save [<configfile>]

    Sichert zuerst das statefile und dann das configfile. Wenn ein Parameter angegeben wird dieser anstelle der allgemeinen Konfigurationsdatei benutzt.

    Hinweise:
    • Der Befehl speichert nur "definitions" und "attributes" aber keine (set/get) Befehle die vorher Teil der Konfigurationsdatei waren. Wenn Sie solche Befehle nach der Initialisierung (z.B. FHTcode) benötigen,dann müssen Sie sie mit notify triggern wenn das INITIALIZED Ereignis eintritt.
    • Der Befehl "save" versucht Kommentarzeilen  (Zeilen die mit # beginnen) und "include"-Zeilen zu erhalten, aber arbeitet nicht korrekt wenn FHEM für diese Dateien keine Schreibrechte besitzt.

set

    set <devspec> <type-specific>

    Der Befehl setzt Geräteparameter/sendet Signale an ein Gerät. Sie erhalten eine Liste verfügbarer Parameter wenn Sie folgendes eingeben:
      set <name> ?
    Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.
    Der "set"-Befehl gibt nur bei Fehler einen Wert zurück.

    Jedes Gerät hat verschiedene Parameter die mit "set" gesetzt werden können. Lesen Sie bitte den entsprechenden Abschnitt für das Gerät für Details durch.

    Manche Module unterstützen die sog. set extensions, und in der entsprechenden Dokumentation ist ein Link auf diesem Text zu finden. Falls im Modul selber einer der unten aufgeführten Befehle implementiert ist, dann wird die Modul-Implementation verwendet.
    • on-for-timer <sekunden>
      Das Gerät wird per "on" eingeschaltet, und ein interner Zeitgeber wird erstellt, um nach <sekunden> ein "off" Kommando auszuführen. Um diesen Zeitgeber zu entfernen sollte man das Kommando mit dem Argument 0 erneut aufrufen. Achtung: dieser Zeitgeber wird bei einem restart nicht gespeichert.
    • off-for-timer <sekunden>
      siehe on-for-timer.
    • on-till <timedet>
      Das Gerät wird per "on" eingeschaltet, und ein at Instanz wird definiert, um es um <timedet> (Format: HH:MM[:SS]) per off auszuschalten. Diese at Instanz ist sichtbar unter dem Namen geräteName+"_till". Um das Ausschalten zu deaktivieren löscht man diese at Definition.
    • off-till <timedet>
      siehe on-till.
    • blink <anzahl> <blink-periode>
      Das Gerät wird mit "on" für die <blink-periode> eingeschaltet, und das wird nach <blink-periode> wiederholt. Um das Blinken vorzeitig zu stoppen spezifiziert man "0 0" als Argument.
    • intervals <from1>-<till1> <from2>-<till2>...
      Das Gerät wird für die spezifizierten Intervalle eingeschaltet. Die einzelnen Intervalle sind Leerzeichen getrennt, und ein Intervall besteht aus zwei Zeitspezifikationen, die mit einem "-" getrennt sind.
    Beispiele:
      set switch on-for-timer 12.5
      set switch on-till {sunset()}
      set switch blink 3 1
      set switch intervals 08:00-12:00 13:00-18:00

setreading

    setreading <devspec> <reading> <value>

    Der Befehl setzt das Reading <reading> auf den Wert <value> ohne Signale an das betroffene Gerät zu senden, generiert aber Ereignisse und die übliche eventMap und stateFormat Umwandlung wird auch durchgeführt.
    Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.

    Beispiel:
      setreading lampe state on

setstate

    setstate <devspec> <value>

    Der Befehl setzt den STATE Eintrag des Ger&aauml;tes direkt, ohne Ereignisse zu generieren oder ein Signal an das Gerät zu senden. Dieser Eintrag ist maßgebend für die Status-Anzeige in diversen Frontends. Dieser Befehl wird auch im statefile benutzt.
    Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.

    Beispiel:
      setstate lampe An

shutdown

    shutdown [restart]

    Der Befehl fährt den Server herunter (nach dem sichern aller Gerätestati). Er triggert das global:SHUTDOWN Ereignis. Mit der optionalen Parameter restart startet FHEM danach neu.

    Beispiel:
      shutdown
      shutdown restart

trigger

    trigger <devspec> <event>

    Generiert das Ereignis <event>, was z.Bsp. ein notify anstoßen kann, oder den FileLog zum protokollieren dieser Zeile bewegen kann.
    Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.

    Beispiel:
      trigger btn3 on

sleep

    sleep <sec> [quiet]

    Wartet für die angegebene Anzahl von Millisekunden.
    Falls sleep in at/notify/etc aufgerufen wurde, und die nachfolgenden Kommandos einen nicht leeren Text zurückgeliefert haben, dann wird dieser Text mit loglevel 2 protokolliert.
    quiet vermeidet diese Protokollierung.

    Beispiele:
      sleep 0.5
      define n3 notify btn3.* set lamp toggle;;sleep 0.5;;set lamp toggle
      define a3 at +*00:05 set Windsensor 1w_measure;; sleep 2 quiet;; get Windsensor 1w_temp

    Bemerkung: sleep gefolgt von weiteren Befehlen und aufgerufen in at/notify/etc blockiert die Abarbeitung von FHEM nicht.

version

    version [filter]

    Gibt die Versionsinformation von fhem.pl und aller geladenen Module aus. Mit der optionalen Parameter kann man die Ausgabe filtern.

    Beispiel der Ausgabe:
      # $Id: fhem.pl 3405 2013-07-11 19:46:39Z rudolfkoenig $
      # $Id: 00_CUL.pm 3237 2013-06-01 17:15:59Z rudolfkoenig $
      # $Id: 10_CUL_HM.pm 3378 2013-07-02 16:57:27Z martinp876 $

global

    Das "global" Gerät wird benutzt, um allgemeingültige Attribute zu setzen. Es wird automatisch erstellt und kann nicht gelöscht oder umbenannt werden. Es hat keine "set" oder "get" Parameter.

    Define
      N/A

    Set
      N/A

    Get
      N/A

    Attributes
    • archivedir
    • archivecmd
    • nrarchive

    • autoload_undefined_devices
      wenn dieses Attribut gesetzt ist, werden die zu einer neu empfangenen Nachricht zugehörigen Module automatisch geladen.  Dies erfolgt vom autocreate Gerät, um so automatisch ein FHEM-Gerät bei erreichen einer entsprechenden Nachricht zu erstellen.

    • 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.

    • backup_before_update
      Wenn dieses Attribut auf "0" gesetzt wurde, erstellt FHEM keine Sicherheitskopie Ihrer Installation bei Verwendung des Befehls backup. Die Standardeinstellung ist die Erstellung einer Sicherheitskopie vor einem Update.
      Hinweis: Setzen Sie dieses Attribut nur wenn Sie sich sicher sind!
      Das Attribut wird vom update Befehl benutzt.
      Beispiel:
        attr global backup_before_update 0

    • backupcmd
      Sie können das Update durch Ihre eigenen Befehle/Skripts durchführen indem Sie dieses Attribut setzen. Wenn dieses Attribut gesetzt ist, dann startet es als ein SHELL-Befehl und erstellt eine durch Leerzeichen getrennte Liste von Dateien/Verzeichnissen als ein Argument zum Befehl, z.B.:
        "/etc/fhem.cfg /var/log/fhem/fhem.save /usr/share/fhem/contrib /usr/share/fhem/FHEM /usr/share/fhem/foo /usr/share/fhem/foobar /usr/share/fhem/www"
      Bemerkung: Ihr Befehl/Skript muss die Zeichenkette "backup done" zurückgeben oder eine entsprechende Zeichenkette um Fehlermeldungen auszugeben, damit die Zusammenarbeit mit updatefhem funktioniert!
      Dieses Attribut wird vom backup Befehl benutzt.
      Beispiel:
        attr global backupcmd /usr/local/bin/myBackupScript.sh

    • backupdir
      Ein Ordner um die komprimierten Sicherheitsdateien zu speichern. Dieses Attribut wird vom backup Befehl benutzt.
      Beispiel:
        attr global backupdir /Volumes/BigHD

    • backupsymlink
      Wenn dieses Attribut auf etwas anderes als "no", dann unterstützt der Archviierungsbefehl "tar" symbolische Links in Ihrem Backup. Andererseits, wenn dieses Attribut auf "no" gesetzt ist werden symbolische Links vom Befehl "tar" ignoriert. Dieses Attribut wird vom backup Befehl benutzt.
      Beispiel:
        attr global backupsymlinks yes

    • configfile
      Enthält den Namen der FHEM Konfigurationsdatei. Wenn save ohne Argumente aufgerufen wird dann wird die Ausgabedatei unter diesem Dateinamen gespeichert.

    • exclude_from_update
      Enthält eine Liste durch Leerzeichen getrennter Dateien welche nicht im Update berücksichtigt werden. Dieses Attribut wird vom update Befehl benutzt.
      Beispiel:
        attr global exclude_from_update 21_OWTEMP.pm temp4hum4.gplot FS20.on.png FS20.off.png

    • holiday2we
      Wenn dieses Attribut gesetzt wurde, dann wird die $we Variable als "true" betrachtet, wenn der Wert der holiday Variable zu diesem Attribut nicht "none" ist.
      Beispiel:
        attr global holiday2we hessen

    • lastinclude
      Wurde dieses Attribut gesetzt, dann wird der letzte Befehl der generierten Konfigurationsdatei (siehe save Befehl) berücksichtigt <lastinclude-value>
      Dieses Attribut ist DEPRECATED, bitte benutzen Sie notify, mit dem  INITIALIZED Ereignis um Befehle nach der Intialisierung auszuführen.

    • logfile
      Gibt das Logfile an, in welches gespeichert werden soll.  Sie können "-" für die Ausgabe in das stdout-Gerät. In diesem Fall the server won't background itself.
      Der Name der Logdatei kann auch "wildcards" enthalten, um eine einfachere Abfolge für die Dateien zu erreichen. Lesen Sie bitte den Abschnitt FileLog. Fügen Sie die Attribute archivecmd / archivedir / nrarchive zum global Gerät hinzu wie Sie es auch bei einem FileLog device tun könnten.
      Sie können den Namen der Logdatei mit  { $currlogfile }festlegen.

    • modpath
      Mit modpath geben Sie den Pfad zu dem Verzeichnis der FHEM Module an. Der Pfad enhält nicht das Verzeichnis FHEM. Durch das setzen der Attribute, wird das Verzeichnis nach Dateinamen in der Form NN_<NAME>.pm, und sie werden für die Definition von Geräten unter dem Namen <NAME> verfügbar gemacht. Wenn das erste Gerät  des Typs <NAME> definiert wird, werden die entsprechenden Module geladen und in dem Modul die entsprechende Function mit dem Namen <NAME>_Initialize wird aufgerufen. Eine Ausnahme bilden Module die mit der Nummer 99 im Dateinamen beginnen. Diese sind  enhalten PERL-Hilfsfunktionen. Die Module werden zur Startzeit geladen (i.e. modpath attribute definition time).

    • motd
      Nachricht des Tages. Wird im Begrüßungsbildschirm von FHEM angezeigt, oder direkt beim Start einer "telnet" Sitzung, bevor der fhem> Prompt erscheint. Der SecurityCheck setzt motd wenn es bisher nicht gesetzt ist. Um das zu verhindern, können sie den Wert von motd auf "none" setzen

    • mseclog
      Wenn dieses Attribut gesetzt ist, enthalten Datums/Zeiteinträge (timestamp) in der Logdatei einen Millisekunden-Eintrag.

    • nofork
      Wenn dieses Attribut oder "attr global logfile -" gesetzt ist, dann wird FHEM nicht im Hintergrund abgearbeitet. Dieses Attribut ist bei einigen FHEM Installationen auf FRITZ!-Boxen notwendig, und wid fuer Windows automatisch gesetzt.

    • pidfilename
      Schreibt die PERL Prozess-ID in die angegebene Datei. Der Server läuft als Daemon und einige Distributionen wollen anhand der PID testen, ob der FHEM Prozess läuft. Die Datei wird bei Ausführung des "shutdown"-Kommandos gelöscht.

    • sendStatistics
    • statefile
      Dieses Attribut legt den Namen der Datei fest, in die Statusinformationen aller Geräte gespeichert werden  bevor der Server heruntergefahren wird. Falls diese Datei nicht angegeben wird, so werden keinerlei Informationen gesichert.

    • title
      Das Attribut "title" wird unter dem Frontend fhemweb.pl (webpgm2) zur Festlegung des Seitentitels benutzt..

    • uniqueID
    • updatebranch
      Dieses Attribut wird mittels der Datei FhemUtils/release.pm gesetzt die im "modpath"-Verzeichnis enthalten ist. Z.B, wenn eine stabile Version von FHEM (ab Version 5.3 aufwärts) über eine direkte Download-Verbindung vom Archiv der FHEM-Webseite installiert wurde, then wird automatisch der Zweig der Aktualisierung auf "stable"eingestellt. In dieser Form der Aktualisierung werden nur behobene Fehler, relevante Sicherheitslücken oder neue stabile Versionen aktualisiert.
      Mittels dem Befehl "update development <filename>" benutzen, können Dateien oder Pakete jederzei direkt aus dem Entwicklungszweig (z.B. mittels "update development <package>") installiert werden.
      Wenn Sie anstelle von Entwicklungsversionen eine stabile Version installieren wollen, so können Sie dies durch Angabe des Attributes "updatebranch DEVELOPMENT" erzwingen. Bei der Installation von FHEM sollten Sie generell die Entwicklungsversion installieren. Dieses Attribut muss nicht gesetzt werden. Benutzen Sie dagegen "update development force" um alle Dateien, einschliesslich der Datei release.pm (enthält die aktuellen Informationen) zu aktualisieren.

    • userattr
      Enthält eine durch Leerzeichen getrennte Liste in welcher die Namen zusätzlicher Attribute aufgeführt sind. Diese müssen zuerst in dieser Liste definiert werden, bevor sie angewendet werden können.

    • dupTimeout
      Definert die Wartezeit, nach der 2 identische Ereignisse zweier Empfänger als Duplikat angesehen werden. Voreingestellt sind 0,5 Sekunden. 

    • showInternalValues
      Attribute/Geräte-Eintraege/Readings die mit Punkt (.) anfangen werden nicht angezeigt, es sei denn das globale Attribut showInternalValues ist gesetzt. Diese Variable wird bei dem list und xmllist Befehl, und bei der FHEMWEB Raumansicht geprüft.

ALL3076

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: ALL3076

ALL4000T

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: ALL4000T

ALL4027

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: ALL4027

BBB_BMP180

    Sorry, keine deutsche Dokumentation vorhanden.

    Die englische Doku gibt es hier: BBB_BMP180

BS

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: BS

CM11

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: CM11

CO20

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: CO20

CUL

    Der CUL/CUN(O) ist eine Familie von Funkempfängern, die von der Firma Busware verkauft wird. Mit der OpenSource Firmware culfw können sie verschiedene 868 MHz Funkprotokolle empfangen bzw. senden (FS20/FHT/S300/EM/HMS/MAX!). Man kann diese Geräte auch zur Reichweitenverlängerung, siehe CUL_RFR einsetzen.

    Einige Protokolle (FS20, FHT und KS300) werden von diesem Modul in das FHZ Format konvertiert, daher kann dasselbe logische Gerät verwendet werden, egal ob das Funktelegramm von einem CUL oder einem FHZ Gerät empfangen wird.
    Andere Protokolle (S300/EM) benötigen ihre eigenen Module. S300 Geräte werden vom Modul CUL_WS verarbeitet, wenn das Signal von einem CUL empfangen wurde, ähnliches gilt für EMWZ/EMGZ/EMEM: diese werden vom CUL_EM Modul verarbeitet.

    Es ist möglich mehr als ein Gerät zu verwenden, um einen besseren Empfang zu erhalten, FHEM filtert doppelte Funktelegramme aus.

    Bemerkung: Dieses Modul benötigt unter Umständen das Device::SerialPort bzw. Win32::SerialPort Modul, wenn Sie das Gerät über USB anschließen und das Betriebssystem unübliche Parameter für serielle Schnittstellen setzt.

    Define
      define <name> CUL <device> <FHTID>

      Geräte, die an USB angeschlossen sind (CUL/CUN):
        <device> gibt die serielle Schnittstelle an, mit der der CUL kommuniziert. Der Name der seriellen Schnittstelle hängt von der gewählten Distribution und USB-Treiber ab, unter Linux ist dies das Kernel Modul cdc_acm und üblicherweise wird die Schnittstelle /dev/ttyACM0 genannt. Wenn die Linux Distribution über kein Kernel Modul cdc_acm verfügt, dann kann die Schnittstelle über usbserial mit dem folgenden Befehl erzeugt werden:
          modprobe usbserial vendor=0x03eb product=0x204b
        In diesem Fall ist diese Schnittstelle dann wahrscheinlich /dev/ttyUSB0.

        Wenn der Name der Schnittstelle ein @ enthält, kann nachfolgend die verwendete Baudrate angegeben werden, z.B.: /dev/ttyACM0@38400.

        Wenn die Baudrate mit "directio" angegeben wird (z.B.: /dev/ttyACM0@directio), wird das Perl Modul Device::SerialPort nicht benötigt und FHEM öffnet die Schnittstelle mit einfachem Dateizugriff. Dies sollte dann funktionieren, wenn das Betriebssystem vernünftige Standardwerte für die serielle Schnittstelle verwendet, wie z.B. einige Linux Distributionen oder OSX.

      Geräte, die mit dem Netzwerk verbunden sind (CUN(O)):
        <device> gibt die Hostadresse:Port des Gerätes an, z.B. 192.168.0.244:2323

      Wenn das Gerät mit none bezeichnet wird, wird keine Schnittstelle geöffnet und man kann ohne angeschlossene Hardware experimentieren.
      Die FHTID ist eine 4-stellige hexadezimale Zahl und wird verwendet, wenn der CUL FHT Telegramme sendet bzw. Daten anfragt. Diese sollte als 0000 gewählt werden, wenn man FHT80b Anfragen durch den CUL vermeiden will.

    Set
    • raw
      Sendet einen CUL Firmware Befehl. Siehe auch hier für nähere Erläuterungen der CUL Befehle.

    • freq / bWidth / rAmpl / sens
      Nur in der Betriebsart SlowRF.
      Bestimmt die CUL Frequenz / Bandbreite / Empfänger Amplitude / Empfindlichkeit
      Bitte mit Vorsicht verwenden, da es die verwendete Hardware zerstören kann bzw. es zu illegalen Funkzuständen kommen kann.
      Bemerkung: Die Parameter für die RFR Übermittlung werden hierdurch nicht beeinflußt.
      • freq bestimmt sowohl die Empfangs- als auch die Sendefrequenz.
        Bemerkung: Auch wenn der CC1101 zwischen den Frequenzen 315 und 915 MHz eingestellt werden kann, ist die Antennenanbindung bzw. die Antenne des CUL exakt auf eine Frequenz eingestellt. Standard ist 868.3 MHz (bzw. 433 MHz).
      • bWidth kann zwischen 58 kHz und 812 kHz variiert werden. Große Werte sind empfindlicher gegen Interferencen, aber machen es möglich, nicht genau kalbrierte Signale zu empfangen. Die Einstellung beeinflusst ebenso die Übertragung. Standardwert ist 325 kHz.
      • rAmpl ist die Verstärkung des Empfängers mit Werten zwischen 24 and 42 dB. Größere Werte erlauben den Empfang von schwachen Signalen. Standardwert ist 42.
      • sens ist die Entscheidungsgrenze zwischen "on" und "off" Zuständen und kann 4, 8, 12 oder 16 dB sein. Kleinere Werte erlauben den Empfang von undeutlicheren Signalen. Standard ist 4 dB.

    • hmPairForSec
      Nur in der Betriebsart HomeMatic.
      Versetzt den CUL für die angegebene Zeit in Sekunden in den Anlern-Modus. Jedes HM Gerät, das sich im Anlern-Modus befindet, wird an FHEM angelernt.

    • hmPairSerial
      Nur in der Betriebsart HomeMatic.
      Versucht, das angegebene Gerät anzulernen (zu "pairen"). Der Parameter ist eine 10-stellige Zeichenfolge, die normalerweise mit Buchstaben beginnt und mit Ziffern endet; diese sind auf der Rückseite der Geräte aufgedruckt. Wenn das Gerät ein Empfänger ist, ist es nicht notwendig, das angegebene Gerät in den Anlern-Modus zu versetzen.

    • led
      Schaltet die LED des CUL: aus (00), an (01) oder blinkend (02).

    Get
    • version
      gibt die Version der CUL Firmware zurück

    • uptime
      gibt die Betriebszeit des CULs zurück (Zeit seit dem letzten Reset des CULs)

    • raw
      Sendet einen CUL Firmware Befehl und wartet auf eine Rückgabe des CULs. Siehe auch README der Firmware für nähere Erläuterungen zu den CUL Befehlen.

    • fhtbuf
      Der CUL hat einen Puffer für Nachrichten für FHT. Wenn der Puffer voll ist, werden neu empfangene Telegramme ignoriert und eine "EOB" Meldung wird in die FHEM Logdatei geschrieben. fhtbuf gibt den freien Speicher dieses Puffers (in hex) zurück, ein leerer Puffer im CUL V2 hat 74 Byte, im CUL V3/CUN(O) hat 200 Byte. Eine Telegramm benötigt 3 + 2x(Anzahl der FHT Befehle) Byte, dies ist ein Grund, warum man mehrere FHT Befehle mit einem set senden sollte. Ein weiterer Grund ist, dass diese FHT Befehle in einem "Paket" zum FHT Gerät gesendet werden.

    • ccconf
      Liest einige CUL Register des CC1101 (Sende- und Empfängerchips) aus (Frequenz, Bandbreite, etc.) und stellt diese in lesbarer Form dar.

    • cmds
      In abhägigkeit der installierten Firmware hat der CUL/CUN(O) unterschiedliche Befehlssätze. Nähere Informationen über die Befehle bzw. deren Interpretation siehe README Datei der verwendeten CUL Firmware. Siehe auch Anmerkungen beim raw Befehl.

    • credit10ms
      Der Funkraum darf für eine Dauer von credit10ms*10 ms belegt werden, bevor die gesetzliche 1% Grenze erreicht ist und eine LOVF Meldung ausgegeben wird.

    Attribute
    • do_not_notify
    • dummy
    • showtime
    • model (CUL,CUN)
    • sendpool
      Wenn mehr als ein CUL verwendet wird, um einen größeren Bereich abzudecken, können diese sich gegenseitig beeinflussen. Dieses Phänomen wird auch Palm-Beach-Resort Effekt genannt. Wenn man diese zu einen gemeinsamen Sende"pool" zusammenschließt, wird das Senden der einzelnen Telegramme seriell (d.h. hintereinander) durchgeführt. Wenn z.B. drei CUN's zur Verfügung stehen, werden folgende Attribute gesetzt:
      attr CUN1 sendpool CUN1,CUN2,CUN3
      attr CUN2 sendpool CUN1,CUN2,CUN3
      attr CUN3 sendpool CUN1,CUN2,CUN3


    • addvaltrigger
      Generiert Trigger für zusätzliche Werte. Momentan sind dies RSSI und RAWMSG für die CUL Familie und RAWMSG für FHZ.

    • rfmode
      Konfiguriert den RF Transceiver des CULs (CC1101). Verfügbare Argumente sind:
      • SlowRF
        Für die Kommunikation mit FS20/FHT/HMS/EM1010/S300/Hoermann Geräten @1 kHz Datenrate (Standardeinstellung).
      • HomeMatic
        Für die Kommunikation mit HomeMatic Geräten @10 kHz Datenrate.
      • MAX
        Für die Kommunikation mit MAX! Geräten @10 kHz Datenrate.

    • hmId
      Setzt die HomeMatic ID des Gerätes. Wenn dieses Attribut fehlt, wird die ID zu F1<FHTID> gesetzt. Bemerkung 1: Nach dem Setzen bzw. Verändern dieses Attributes müssen alle HomeMatic Geräte neu angelernt werden. Bemerkung 2: Der Wert muss eine 6-stellige Hexadezimalzahl sein, 000000 ist ungültig. FHEM überprüft nicht, ob die ID korrekt ist, im Zweifelsfall funktioniert die Kommunikation nicht.

    • hmProtocolEvents
      Generiert Ereignisse für HomeMatic Telegramme. Diese werden normalerweise für die Fehlersuche verwendet, z.B. durch Aktivieren von inform timer in einer telnet Sitzung bzw. im Event Monitor Fenster im FHEMWEB Frontend.
      Beispiel:
        2012-05-17 09:44:22.515 CUL CULHM RCV L:0B N:81 CMD:A258 SRC:...... DST:...... 0000 (TYPE=88,WAKEMEUP,BIDI,RPTEN)


CUL_EM

    Das Modul CUL_EM wertet von einem CUL empfange Botschaften des Typs EM aus, dies sind aktuell Botschaften von EMEM, EMWZ bzw. EMGZ Geräten.

    Define
      define <name> CUL_EM <code> [corr1 corr2 CostPerUnit BasicFeePerMonth]

      <code> ist der Code, der am EM Gerät eingestellt wird. Gütige Werte sind 1 bis 12. 1-4 gilt für EMWZ, 5-8 für EMEM und 9-12 für EMGZ Geräte.

      corr1 ist der Kalibrierfaktor für den Momentanverbrauch, corr2 für den Gesamtverbrauch.
      • für EMWZ Geräte wird die Umdrehungsgeschwindigkeit (U/kW) des verwendeten Stromzählers (z.B. 150) für corr1 und 12 mal diesen Wert für corr2 verwendet
      • für EMEM devices ist corr1 mit 0.01 und corr2 mit 0.001 anzugeben

      CostPerUnit und BasicFeePerMonth werden dazu verwendet, die tägliche bzw. monatliche Kosten zu berechnen. Die Kosten werden in der Logdatei einmal täglich (ohne Fixkosten) bzw. monatlich (mit Fixkosten) generiert und angezeigt. Die Definition sollte in etwa so aussehen:
        define emwz 1 75 900 0.15 12.50
      und in der Logdatei sollten diese Zeilen erscheinen:
        CUM_DAY: 6.849 CUM: 60123.4 COST: 1.02
        CUM_MONTH: 212.319 CUM: 60123.4 COST: 44.34
      Tipp: Das EMWZ Gerät kann so konfiguriert werden, dass es in der CUM Spalte des STATE Wertes den aktuellen Wert des Stromzählers anzeigt. Hierfür muss der aktuell am Stromzähler abgelesene Wert mit corr1 (U/kW) multipliziert werden und der CUM Rohwert aus der aktuellen fhem Messung ('reading') davon abgezogen werden. Dann muss dieser Wert als Basiswert des EMWZ Gerätes (im Beispiel emwz) gesetzt werden.

    Set
      N/A

    Get
      N/A

    Attributes
    • ignore

    • do_not_notify

    • showtime

    • model (EMEM,EMWZ,EMGZ)

    • IODev

    • eventMap

    • readingFnAttributes

CUL_FHTTK

    Dieses Modul hantiert die empfangen Daten von FHT80 TF "Fenster-Tür-Kontakt" Sensoren, welche normalerweise nur mit den FHT80B Geräten kommunizieren. Mit diesen Modul können FHT80 TFs in eingeschränkter Weise ähnlich wie HMS TFK Sensoren benutzt werden (weitere Informationen sind unter Wiki zu lesen). Der name des FHEM Moduls wurde so gewählt, weil a) nur der CUL die Daten empfangen kann und b) "TF" normalerweise Temperatur- und Feuchtigkeitssensoren suggeriert. (Keine Ahnung, warum ELV diesen Sensor nicht TFK genannt hat, wie die Sensoren von FS20 und HMS).

    CUL device muss vorhr definiert sein.

    D
      define <name> CUL_FHTTK <devicecode>

      <devicecode> Ist eine sechstellige Hexadezimalzahl, welche zum Zeitpunkt der Produktion des FHT80 TF gegeben wurde. Somit ist diese auch nicht mehr änderbar und bleibt auch nach einem Batteriewechsel erhalten.
      Examples:
        define TK_TEST CUL_FHTTK 965AB0

    Set
      N/A

    Get
      N/A

    Attributes
    • do_not_notify

    • verbose

    • model (FHT80TF, FHT80TF-2)

    • showtime

    • IODev

    • ignore

    • eventMap

    • readingFnAttributes

CUL_HM

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: CUL_HM

CUL_HOERMANN

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: CUL_HOERMANN

CUL_IR

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: CUL_IR

CUL_MAX

    Das Modul CUL_MAX wertet von einem CUL empfangene MAX! Botschaften aus. Es wird mit Hilfe von autocreate automatisch generiert, es muss nur sichergestellt werden, dass der richtige rfmode gesetzt wird, z.B. attr CUL0 rfmode MAX.

    Define
      define <name> CUL_MAX <addr>

      Definiert ein CUL_MAX Gerät des Typs <type> und der Adresse <addr>. Die Adresse darf nicht schon von einem anderen MAX! Gerät verwendet werden.

    Set
    • pairmode
      Versetzt den CUL_MAX für 60 Sekunden in den Pairing Modus, während dieser Zeit kann das Gerät mit anderen Geräten gepaart werden (Heizkörperthermostate, Eco-Taster, etc.). Auch das zu paarende Gerät muss manuell in den Pairing Modus versetzt werden (z.B. beim Heizkörperthermostat durch Drücken der "Boost" Taste für 3 Sekunden).
    • fakeSC <device> <open>
      Sendet eine fingierte ShutterContactState Meldung <open>, dies muss 0 bzw. 1 für "Fenster geschlossen" bzw. "Fenster offen" sein. Wenn das <device> eine Gruppen-ID ungleich Null hat, beeinflusst diese fingierte ShutterContactState Meldung alle Geräte mit dieser Gruppen-ID. Es muss sichergestellt werden, dass vorher alle Zielgeräte mit fakeShutterContact verbunden werden.
    • fakeWT <device> <desiredTemperature> <measuredTemperature>
      Sendet eine fingierte WallThermostatControl Meldung (beide Parameter können eine Nachkommastelle haben, für desiredTemperature darf die Nachkommastelle nur 0 bzw. 5 sein). Wenn das <device> eine Gruppen-ID ungleich Null hat, beeinflusst diese fingierte WallThermostatControl Meldung alle Geräte mit dieser Gruppen-ID. Es muss sichergestellt werden, dass vorher alle Zielgeräte mit fakeWallThermostat verbunden werden.

    Get
      N/A

    Attributes
    • ignore

    • do_not_notify

    • showtime

    • loglevel

    • readingFnAttributes

    Events
      N/A

CUL_RFR

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: CUL_RFR

CUL_TX

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: CUL_TX

CUL_WS

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: CUL_WS

CULflash

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: CULflash

Calendar

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: Calendar

Dashboard

    Erstellt eine Übersicht in der Gruppen angeordnet werden können. Dabei können die Gruppen mit Drag'n Drop frei positioniert
    und in mehreren Spalten angeordnet werden. Auch kann die Breite und Höhe einer Gruppe über die Mindestgröße hinaus gezogen werden.

    Define
      define <name> Dashboard

      Beispiel:
        define anyViews Dashboard

      Bestpractice Anfängerkonfiguration

      define anyViews Dashboard
      attr anyViews dashboard_colcount 2
      attr anyViews dashboard_rowcentercolwidth 30,70
      attr anyViews dashboard_tab1groups <Group1>,<Group2>,<Group3>
      attr anyViews dashboard_lockstate unlock
      attr anyViews dashboard_showhelper 1

    Set
      N/A

    Get

      N/A

    Attributes

  • dashboard_tabcount
    Gibt die Anzahl der angezeigten Tabs an. Standard: 1

  • dashboard_activetab
    Gibt an welches Tab aktiviert ist. Kann manuell gesetzt werden, wird aber auch durch den Schalter "Set" auf das gerade aktive Tab gesetzt. Standard: 1

  • dashboard_tab1name
    Titel des 1. Tab. Standard: Dashboard-Tab 1

  • dashboard_tab2name
    Titel des 2. Tab. Standard: Dashboard-Tab 2

  • dashboard_tab3name
    Titel des 3. Tab. Standard: Dashboard-Tab 3

  • dashboard_tab4name
    Titel des 4. Tab. Standard: Dashboard-Tab 4

  • dashboard_tab5name
    Titel des 5. Tab. Standard: Dashboard-Tab 5

  • dashboard_tab6name
    Titel des 6. Tab. Standard: Dashboard-Tab 6

  • dashboard_tab7name
    Titel des 7. Tab. Standard: Dashboard-Tab 7

  • dashboard_webfrontendfilter
    Ist dieses Attribut nicht gesetzt, oder hat den Wert * wird das Dashboard auf allen konfigurierten FHEMWEB Instanzen angezeigt.
    Wird dem Attribut der Name einer FHEMWEB Instanz (z.B. WEB) zugewiesen so wird das Dashboard nur in dieser Instanz angezeigt.
    Es können auch mehrere Instanzen durch Komma getrennt angegeben werden, z.B. WEB,WEBtablet. Dadurch ist es möglich ein
    zusätzliches Dashboard zu definieren und dieses nur z.B. auf Tablet anzeigen zulassen (die natürlich eine eigenen FHEMWEB Instanz verwenden).
    Standard: *

    Es dürfen NIE zwei Dashboards in einer FHEMWEB instanz aktiv sein!

  • dashboard_tab1sorting
    Enthält die Poistionierung jeder Gruppe im Tab 1. Der Wert wird mit der Schaltfläche "Set" geschrieben. Es wird nicht empfohlen dieses Attribut manuelle zu ändern

  • dashboard_tab2sorting
    Enthält die Poistionierung jeder Gruppe im Tab 2. Der Wert wird mit der Schaltfläche "Set" geschrieben. Es wird nicht empfohlen dieses Attribut manuelle zu ändern

  • dashboard_tab3sorting
    Enthält die Poistionierung jeder Gruppe im Tab 3. Der Wert wird mit der Schaltfläche "Set" geschrieben. Es wird nicht empfohlen dieses Attribut manuelle zu ändern

  • dashboard_tab4sorting
    Enthält die Poistionierung jeder Gruppe im Tab 4. Der Wert wird mit der Schaltfläche "Set" geschrieben. Es wird nicht empfohlen dieses Attribut manuelle zu ändern

  • dashboard_tab5sorting
    Enthält die Poistionierung jeder Gruppe im Tab 5. Der Wert wird mit der Schaltfläche "Set" geschrieben. Es wird nicht empfohlen dieses Attribut manuelle zu ändern

  • dashboard_tab6sorting
    Enthält die Poistionierung jeder Gruppe im Tab 6. Der Wert wird mit der Schaltfläche "Set" geschrieben. Es wird nicht empfohlen dieses Attribut manuelle zu ändern

  • dashboard_tab7sorting
    Enthält die Poistionierung jeder Gruppe im Tab 7. Der Wert wird mit der Schaltfläche "Set" geschrieben. Es wird nicht empfohlen dieses Attribut manuelle zu ändern

  • dashboard_row
    Auswahl welche Zeilen angezeigt werden sollen. top (nur Oben), center (nur Mitte), bottom (nur Unten) und den Kombinationen daraus.
    Standard: center

  • dashboard_width
    Zum bestimmen der Dashboardbreite. Der Wert kann in % (z.B. 80%) angegeben werden oder als absolute Breite (z.B. 1200) in Pixel.
    Standard: 100%

  • dashboard_rowcenterheight
    Höhe der mittleren Zeile, in der die Gruppen angeordnet werden.
    Standard: 400

  • dashboard_rowcentercolwidth
    Über dieses Attribut wird die Breite der einzelnen Spalten der mittleren Dashboardreihe festgelegt. Dabei kann je Spalte ein separater Wert hinterlegt werden. Die Werte sind durch ein Komma (ohne Leerzeichen) zu trennen. Jeder Wert bestimmt die Spaltenbreite in %! Der erste Wert gibt die Breite der ersten Spalte an, der zweite Wert die Breite der zweiten Spalte usw. Ist die Summe der Breite größer als 100 werden die Spaltenbreiten reduziert. Sind mehr Spalten als Breiten definiert werden die fehlenden Breiten um die Differenz zu 100 festgelegt. Sind hingegen weniger Spalten als Werte definiert werden die überschüssigen Werte ignoriert.
    Standard: 100

  • dashboard_rowtopheight
    Höhe der oberen Zeile, in der die Gruppen angeordnet werden.
    Standard: 250

  • "dashboard_rowbottomheight
    Höhe der unteren Zeile, in der die Gruppen angeordnet werden.
    Standard: 250

  • dashboard_tab1groups
    Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 1 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
    Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":<icon>@<farbe>"ergänzt werden
    Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow

  • dashboard_tab2groups
    Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 2 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
    Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":<icon>@<farbe>"ergänzt werden
    Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow

  • dashboard_tab3groups
    Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 3 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
    Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":<icon>@<farbe>"ergänzt werden
    Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow

  • dashboard_tab4groups
    Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 4 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
    Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":<icon>@<farbe>"ergänzt werden
    Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow

  • dashboard_tab5groups
    Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 5 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
    Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":<icon>@<farbe>"ergänzt werden
    Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow

  • dashboard_tab6groups
    Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 6 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
    Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":<icon>@<farbe>"ergänzt werden
    Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow

  • dashboard_tab7groups
    Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 7 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
    Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":<icon>@<farbe>"ergänzt werden
    Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow

  • dashboard_tab1icon
    Zeigt am Tab ein Icon an. Es muss sich dabei um ein exisitereindes Icon mit modpath Verzeichnis handeln. Handelt es sich um ein SVG Icon kann der Suffix @colorname für die Farbe des Icons angegeben werden.

  • dashboard_tab2icon
    Zeigt am Tab ein Icon an. Es muss sich dabei um ein exisitereindes Icon mit modpath Verzeichnis handeln. Handelt es sich um ein SVG Icon kann der Suffix @colorname für die Farbe des Icons angegeben werden.

  • dashboard_tab3icon
    Zeigt am Tab ein Icon an. Es muss sich dabei um ein exisitereindes Icon mit modpath Verzeichnis handeln. Handelt es sich um ein SVG Icon kann der Suffix @colorname für die Farbe des Icons angegeben werden.

  • dashboard_tab4icon
    Zeigt am Tab ein Icon an. Es muss sich dabei um ein exisitereindes Icon mit modpath Verzeichnis handeln. Handelt es sich um ein SVG Icon kann der Suffix @colorname für die Farbe des Icons angegeben werden.

  • dashboard_tab5icon
    Zeigt am Tab ein Icon an. Es muss sich dabei um ein exisitereindes Icon mit modpath Verzeichnis handeln. Handelt es sich um ein SVG Icon kann der Suffix @colorname für die Farbe des Icons angegeben werden.

  • dashboard_tab6icon
    Zeigt am Tab ein Icon an. Es muss sich dabei um ein exisitereindes Icon mit modpath Verzeichnis handeln. Handelt es sich um ein SVG Icon kann der Suffix @colorname für die Farbe des Icons angegeben werden.

  • dashboard_tab7icon
    Zeigt am Tab ein Icon an. Es muss sich dabei um ein exisitereindes Icon mit modpath Verzeichnis handeln. Handelt es sich um ein SVG Icon kann der Suffix @colorname für die Farbe des Icons angegeben werden.

  • dashboard_lockstate
    Bei Dashboard Einstellung "unlock" kann dieses bearbeitet werden. Bei der Einstellung "lock" können keine Änderung vorgenommen werden.
    Wenn die Leiste ausgeblendet ist (dashboard_showtabs) ist das Dashboard gespert. Die Bearbeitung ist daher nur mit sichtbarer Buttonbar möglich ist.
    Standard: unlock

  • dashboard_colcount
    Die Anzahl der Spalten in der Gruppen dargestellt werden können. Dennoch ist es möglich, mehrere Gruppen
    in einer Spalte nebeneinander zu positionieren. Dies ist abhängig von der Breite der Spalten und Gruppen.
    Gilt nur für die mittlere Spalte!
    Standard: 1

  • dashboard_showfullsize
    Blendet die FHEMWEB Raumliste (kompleter linker Bereich der Seite) und den oberen Bereich von FHEMWEB aus wenn der Wert auf 1 gesetzt ist.
    Default: 0

  • dashboard_showtabs
    Zeigt die Tabs des Dashboards oben oder unten an, oder blendet diese aus. Dies gilt auch für die Schalterleiste. Wenn die Schalterleiste ausgeblendet wird ist das Dashboard gespert.
    Standard: tabs-and-buttonbar-at-the-top

  • dashboard_showhelper
    Blendet Ränder ein, die eine Positionierung der Gruppen erleichtern.
    Standard: 1

  • dashboard_showtooglebuttons
    Zeigt eine Schaltfläche in jeder Gruppe mit der man diese auf- und zuklappen kann.
    Standard: 1

  • dashboard_debug
    Zeigt Debug-Felder an. Sollte nicht gesetzt werden!
    Standard: 0

DbLog


    Define
      define <name> DbLog <configfilename> <regexp>

      Speichert Events in eine Datenbank. Die Datenbankverbindungsparameter werden definiert in <configfilename>. (Vergleiche Beipspielkonfigurationsdatei in contrib/dblog/db.conf).
      Die Konfiguration ist in einer sparaten Datei abgelegt um das Datenbankpasswort nicht in Klartext in der FHEM-Haupt-Konfigurationsdatei speichern zu mössen. Ansonsten wäre es mittels des list Befehls einfach auslesbar.

      Die Perl-Module DBI and DBD::<dbtype> mössen installiert werden (use cpan -i <module> falls die eigene Distribution diese nicht schon mitbringt).

      <regexp> ist identisch wie FileLog.

      Ein Beispielcode zum Erstellen einer MySQL/PostGreSQL Datenbak ist in contrib/dblog/<DBType>_create.sql zu finden. Die Datenbank beinhaltet 2 Tabellen: current und history. Die Tabelle current enthält den letzten Stand pro Device und Reading. In der Tabelle history sind alle Events historisch gespeichert. Die Tabellenspalten haben folgende Bedeutung:
      1. TIMESTAMP: Zeitpunkt des Events, z.B. 2007-12-30 21:45:22
      2. DEVICE: name des Devices, z.B. Wetterstation
      3. TYPE: Type des Devices, z.B. KS300
      4. EVENT: das auftretende Event als volle Zeichenkette z.B. humidity: 71 (%)
      5. READING: Name des Readings, ermittelt aus dem Event, z.B. humidity
      6. VALUE: aktueller Wert des Readings, ermittelt aus dem Event, z.B. 71
      7. UNIT: Einheit, ermittelt aus dem Event, z.B. %
      Der Wert des Rreadings ist optimiert för eine automatisierte Nachverarbeitung z.B. yes ist transformiert nach 1

      Die gespeicherten Werte können mittels GET Funktion angezeigt werden:
        get myDbLog - - 2012-11-10 2012-11-10 KS300:temperature


      Beispiel:
        Speichert alles in der Datenbank
        define myDbLog DbLog /etc/fhem/db.conf .*:.*
    Set
      set <name> reopen

        Schließt die Datenbank und öffnet sie danach sofort wieder. Dabei wird die Journaldatei geleert und neu angelegt.
        Verbessert den Datendurchsatz und vermeidet Speicherplatzprobleme.

      set <name> count

        Zählt die Datensätze in den Tabellen current und history und schreibt die Ergebnisse in die Readings countCurrent und countHistory.

      set <name> deleteOldDays <n>

        Löscht Datensätze, die älter sind als <n> Tage. Die Anzahl der gelöschten Datensätze wird in das Reading lastRowsDeleted geschrieben.

      set <name> userCommand <validSqlStatement>

        BENUTZE DIESE FUNKTION NUR, WENN DU WIRKLICH (WIRKLICH!) WEISST, WAS DU TUST!!!

        Führt einen beliebigen (!!!) sql Befehl in der Datenbank aus. Der Befehl und ein zurückgeliefertes Ergebnis werden in entsprechende Readings geschrieben.


    Get
      get <name> ReadingsVal       <device> <reading> <default>
      get <name> ReadingsTimestamp <device> <reading> <default>

      Liest einen einzelnen Wert aus der Datenbank, Benutzung und Syntax sind weitgehend identisch zu ReadingsVal() und ReadingsTimestamp().


      get <name> <infile> <outfile> <from> <to> <column_spec>

      Liesst Daten aus der Datenbank. Wird durch die Frontends benutzt um Plots zu generieren ohne selbst auf die Datenank zugreifen zu mössen.
      • <in>
        Ein Parameter um eine Kompatibilität zum Filelog herzustellen. Dieser Parameter ist per default immer auf - zu setzen.
        Folgende Ausprägungen sind zugelassen:
        • current: die aktuellen Werte aus der Tabelle "current" werden gelesen.
        • history: die historischen Werte aus der Tabelle "history" werden gelesen.
        • -: identisch wie "history"
      • <out>
        Ein Parameter um eine Kompatibilität zum Filelog herzustellen. Dieser Parameter ist per default immer auf - zu setzen um die Ermittlung der Daten aus der Datenbank för die Plotgenerierung zu pröfen.
        Folgende Ausprägungen sind zugelassen:
        • ALL: Es werden alle Spalten der Datenbank ausgegeben. Inclusive einer Überschrift.
        • Array: Es werden alle Spalten der Datenbank als Hash ausgegeben. Alle Datensätze als Array zusammengefasst.
        • INT: intern zur Plotgenerierung verwendet
        • -: default
      • <from> / <to>
        Wird benutzt um den Zeitraum der Daten einzugrenzen. Es ist das folgende Zeitformat oder ein Teilstring davon zu benutzen:
          YYYY-MM-DD_HH24:MI:SS
      • <column_spec>
        För jede column_spec Gruppe wird ein Datenset zuröckgegeben welches durch einen Kommentar getrennt wird. Dieser Kommentar repräsentiert die column_spec.
        Syntax: <device>:<reading>:<default>:<fn>:<regexp>
        • <device>
          Der Name des Devices. Achtung: Gross/Kleinschreibung beachten!
          Es kann ein % als Jokerzeichen angegeben werden.
        • <reading>
          Das Reading des angegebenen Devices zur Datenselektion.
          Es kann ein % als Jokerzeichen angegeben werden.
          Achtung: Gross/Kleinschreibung beachten!
        • <default>
          Zur Zeit noch nicht implementiert.
        • <fn> Angabe einer speziellen Funktion:
          • int
            Ermittelt den Zahlenwert ab dem Anfang der Zeichenkette aus der Spalte "VALUE". Benutzt z.B. för Ausprägungen wie 10%.
          • int<digit>
            Ermittelt den Zahlenwert ab dem Anfang der Zeichenkette aus der Spalte "VALUE", inclusive negativen Vorzeichen und Dezimaltrenner. Benutzt z.B. för Ausprägungen wie -5.7°C.
          • delta-h / delta-d
            Ermittelt die relative Veränderung eines Zahlenwertes pro Stunde oder pro Tag. Wird benutzt z.B. för Spalten die einen hochlaufenden Zähler enthalten wie im Falle för ein KS300 Regenzähler oder dem 1-wire Modul OWCOUNT.
          • delta-ts
            Ermittelt die vergangene Zeit zwischen dem letzten und dem aktuellen Logeintrag in Sekunden und ersetzt damit den originalen Wert.
        • <regexp>
          Diese Zeichenkette wird als Perl Befehl ausgewertet. Die regexp wird vor dem angegebenen <fn> Parameter ausgeföhrt.
          Bitte zur Beachtung: Diese Zeichenkette darf keine Leerzeichen enthalten da diese sonst als <column_spec> Trennung interpretiert werden und alles nach dem Leerzeichen als neue <column_spec> gesehen wird.
          Schlösselwörter
        • $val ist der aktuelle Wert die die Datenbank för ein Device/Reading ausgibt.
        • $ts ist der aktuelle Timestamp des Logeintrages.
        • Wird als $val das Schlösselwort "hide" zuröckgegeben, so wird dieser Logeintrag nicht ausgegeben, trotzdem aber för die Zeitraumberechnung verwendet.
        • Wird als $val das Schlösselwort "ignore" zuröckgegeben, so wird dieser Logeintrag nicht för eine Folgeberechnung verwendet.


      Beispiele:
      • get myDbLog - - 2012-11-10 2012-11-20 KS300:temperature
      • get myDbLog current ALL - - %:temperature

      • Damit erhält man alle aktuellen Readings "temperature" von allen in der DB geloggten Devices. Achtung: bei Nutzung von Jokerzeichen auf die historyTabelle kann man sein FHEM aufgrund langer Laufzeit lahmlegen!
      • get myDbLog - - 2012-11-10_10 2012-11-10_20 KS300:temperature::int1
        gibt Daten aus von 10Uhr bis 20Uhr am 10.11.2012
      • get myDbLog - all 2012-11-10 2012-11-20 KS300:temperature
      • get myDbLog - - 2012-11-10 2012-11-20 KS300:temperature KS300:rain::delta-h KS300:rain::delta-d
      • get myDbLog - - 2012-11-10 2012-11-20 MyFS20:data:::$val=~s/(on|off).*/$1eq"on"?1:0/eg
        gibt 1 zuröck för alle Ausprägungen von on* (on|on-for-timer etc) und 0 för alle off*
      • get myDbLog - - 2012-11-10 2012-11-20 Bodenfeuchte:data:::$val=~s/.*B:\s([-\.\d]+).*/$1/eg
        Beispiel von OWAD: Ein Wert wie z.B.: "A: 49.527 % B: 66.647 % C: 9.797 % D: 0.097 V"
        und die Ausgabe ist för das Reading B folgende: 2012-11-20_10:23:54 66.647
      • get DbLog - - 2013-05-26 2013-05-28 Pumpe:data::delta-ts:$val=~s/on/hide/
        Realisierung eines Betriebsstundenzählers.Durch delta-ts wird die Zeit in Sek zwischen den Log- einträgen ermittelt. Die Zeiten werden bei den on-Meldungen nicht ausgegeben welche einer Abschaltzeit entsprechen wörden.


    Get för die Nutzung von webcharts
      get <name> <infile> <outfile> <from> <to> <device> <querytype> <xaxis> <yaxis> <savename>

      Liest Daten aus der Datenbank aus und gibt diese in JSON formatiert aus. Wird för das Charting Frontend genutzt
      • <name>
        Der Name des definierten DbLogs, so wie er in der fhem.cfg angegeben wurde.
      • <in>
        Ein Dummy Parameter um eine Kompatibilität zum Filelog herzustellen. Dieser Parameter ist immer auf - zu setzen.
      • <out>
        Ein Dummy Parameter um eine Kompatibilität zum Filelog herzustellen. Dieser Parameter ist auf webchart zu setzen um die Charting Get Funktion zu nutzen.
      • <from> / <to>
        Wird benutzt um den Zeitraum der Daten einzugrenzen. Es ist das folgende Zeitformat zu benutzen:
          YYYY-MM-DD_HH24:MI:SS
      • <device>
        Ein String, der das abzufragende Device darstellt.
      • <querytype>
        Ein String, der die zu verwendende Abfragemethode darstellt. Zur Zeit unterstötzte Werte sind:
        getreadings um för ein bestimmtes device alle Readings zu erhalten
        getdevices um alle verfögbaren devices zu erhalten
        timerange um Chart-Daten abzufragen. Es werden die Parameter 'xaxis', 'yaxis', 'device', 'to' und 'from' benötigt
        savechart um einen Chart unter Angabe eines 'savename' und seiner zugehörigen Konfiguration abzuspeichern
        deletechart um einen zuvor gespeicherten Chart unter Angabe einer id zu löschen
        getcharts um eine Liste aller gespeicherten Charts zu bekommen.
        getTableData um Daten aus der Datenbank abzufragen und in einer Tabelle darzustellen. Benötigt paging Parameter wie start und limit.
        hourstats um Statistiken för einen Wert (yaxis) för eine Stunde abzufragen.
        daystats um Statistiken för einen Wert (yaxis) för einen Tag abzufragen.
        weekstats um Statistiken för einen Wert (yaxis) för eine Woche abzufragen.
        monthstats um Statistiken för einen Wert (yaxis) för einen Monat abzufragen.
        yearstats um Statistiken för einen Wert (yaxis) för ein Jahr abzufragen.
      • <xaxis>
        Ein String, der die X-Achse repräsentiert
      • <yaxis>
        Ein String, der die Y-Achse repräsentiert
      • <savename>
        Ein String, unter dem ein Chart in der Datenbank gespeichert werden soll
      • <chartconfig>
        Ein jsonstring der den zu speichernden Chart repräsentiert
      • <pagingstart>
        Ein Integer um den Startwert för die Abfrage 'getTableData' festzulegen
      • <paginglimit>
        Ein Integer um den Limitwert för die Abfrage 'getTableData' festzulegen


      Beispiele:
      • get logdb - webchart "" "" "" getcharts
        Liefert alle gespeicherten Charts aus der Datenbank
      • get logdb - webchart "" "" "" getdevices
        Liefert alle verfögbaren Devices aus der Datenbank
      • get logdb - webchart "" "" ESA2000_LED_011e getreadings
        Liefert alle verfögbaren Readings aus der Datenbank unter Angabe eines Gerätes
      • get logdb - webchart 2013-02-11_00:00:00 2013-02-12_00:00:00 ESA2000_LED_011e timerange TIMESTAMP day_kwh
        Liefert Chart-Daten, die auf folgenden Parametern basieren: 'xaxis', 'yaxis', 'device', 'to' und 'from'
        Die Ausgabe erfolgt als JSON, z.B.: [{'TIMESTAMP':'2013-02-11 00:10:10','VALUE':'0.22431388090756'},{'TIMESTAMP'.....}]
      • get logdb - webchart 2013-02-11_00:00:00 2013-02-12_00:00:00 ESA2000_LED_011e savechart TIMESTAMP day_kwh tageskwh
        Speichert einen Chart unter Angabe eines 'savename' und seiner zugehörigen Konfiguration
      • get logdb - webchart "" "" "" deletechart "" "" 7
        Löscht einen zuvor gespeicherten Chart unter Angabe einer id


    Attribute
      shutdownWait
        attr <device> shutdownWait
        fhem wartet waehrend des shutdowns fuer n Sekunden, um die Datenbank korrekt zu beenden

      DbLogExclude
        set <device> DbLogExclude regex:MinInterval [regex:MinInterval] ...

      Wenn DbLog genutzt wird, wird in alle Devices das Attribut DbLogExclude propagiert. Der Wert des Attributes wird als Regexp ausgewertet und schliesst die damit matchenden Readings von einem Logging aus. Einzelne Regexp werden durch Kommata getrennt. Ist MinIntervall angegeben, so wird der Logeintrag nur dann nicht geloggt, wenn das Intervall noch nicht erreicht und der Wert des Readings sich nicht verändert hat.
      Beispiele
        attr MyDevice1 DbLogExclude .* attr MyDevice2 DbLogExclude state,(floorplantext|MyUserReading):300,battery:3600

ECMD

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: ECMD

ECMDDevice

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: ECMDDevice

EGPM Steckdose

    Definiert eine einzelne Netzwerk-Steckdose vom EGPM2LAN. Diese Definition wird beim Einrichten eines EGPM2LAN automatisch erstellt, wenn das globale FHEM-Attribut AUTOCREATE aktiviert wurde. Für weitere Informationen, siehe Beschreibung von EGPM2LAN.

    Define
      define <name> EGPM <device> <socket-nr>

    Set
      set <name> <[on|off|toggle]>
      Schaltet die Steckdose ein oder aus.
      set <name> <[on-for-timer|off-for-timer|on-till|off-till|blink|intervals]>
      Schaltet die Steckdose fü einen bestimmten Zeitraum oder mehrfach hintereinander. Weitere Infos hierzu unter set extensions.

    Beispiel:
      define lampe1 EGPM steckdose 1
      set lampe1 on

    Get
      N/A

    Attributes
    • loglevel
    • readingFnAttributes

    Generated events
    • EGPM <name> <[on|off]>

EGPM2LAN


    Define
      define <name> EGPM2LAN <IP-Address> [<Password>]

      Das Modul erstellt eine Verbindung zu einer Gembird ® Energenie EG-PM2-LAN Steckdosenleiste und steuert 4 angeschlossene Geräte.. Falls mehrere Steckdosenleisten über das Netzwerk gesteuert werden, ist es ratsam, diese zuerst über die Web-Oberfläche zu konfigurieren und die einzelnen Steckdosen zu benennen. Die Namen werden dann automatisch in die Oberfläche von FHEM übernommen. Bitte darauf achten, die Weboberfläche mit Logoff wieder zu verlassen, da der Zugriff sonst blockiert wird.

    Set
      set <name> <[on|off|toggle]> <socketnr.>
      Schaltet die gewählte Steckdose ein oder aus.

      set <name> <[on|off]> <all>
      Schaltet alle Steckdosen gleichzeitig ein oder aus.

      set <name> <staterequest>
      Aktualisiert die Statusinformation der Steckdosenleiste.
      Wenn das globale Attribut autocreate aktiviert ist, wird für jede Steckdose ein EGPM-Eintrag erstellt.

      set <name> <clearreadings>
      Löscht alle ungültigen Einträge im Abschnitt <readings>.

    Get
      N/A

    Attribute
    • stateDisplay
    • Default: socketNumer wechselt zwischen socketNumer and socketName für jeden Statuseintrag. Verwende set statusrequest, um die Anzeige zu aktualisieren.
    • autocreate
    • Default: on EGPM-Einträge werden automatisch mit dem set-command erstellt.
    • loglevel
    • readingFnAttributes



    Beispiel:
      define sleiste EGPM2LAN 10.192.192.20 SecretGarden
      set sleiste on 1

EIB

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: EIB

EM

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: EM

EMEM

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: EMEM

EMGZ

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: EMGZ

EMWZ

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: EMWZ

ENECSYSGW

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: ENECSYSGW

ENECSYSINV

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: ENECSYSINV

ENIGMA2

Eine deutsche Version der Dokumentation ist derzeit nicht vorhanden. Die englische Version ist hier zu finden:
ENIGMA2

ESA2000

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: ESA2000

EnOcean

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: EnOcean

FBAHA

    Dieses Modul verbindet sich mit dem AHA (AVM Home Automation) Server auf einem FRITZ!Box. Es dient als "physikalisches" Gegenstück zum FBDECT Modul. Achtung: als erstes muss der Zugang zu diesen Daten in der FRITZ!Box Web-Oberfläche aktiviert werden.

    Define
      define <name> FBAHA <device>

      <host> ist normalerweise die Adresse der FRITZ!Box, wo das AHA Server läuft (fritz.box oder localhost), <port> ist 2002. <device> is entweder a eine Kombianation aus <host>:<port>, wobei <host> die Adresse der FRITZ!Box ist (localhost AUF dem FRITZ.BOX) und <port> 2002 ist, oder UNIX:SEQPACKET:/var/tmp/me_avm_home_external.ctl, wobei das nur fuer FHEM@FRITZ!BOX zur Verfügung steht. Mit FRITZ!OS 5.50 steht auch der Netzwerkport zur Verfügung, auf manchen Laborvarianten nur das UNIX socket.
      Beispiel:
        define fb1 FBAHA fritz.box:2002
        define fb1 FBAHA UNIX:SEQPACKET:/var/tmp/me_avm_home_external.ctl

    Set
    • createDevs
      legt FHEM Geräte an für jedes auf dem AHA-Server gefundenen DECT Eintrag, siehe auch "get devList".
    • reopen
      Schließt und &oulm;ffnet die Verbindung zum AHA Server. Nur für debugging.
    • reregister
      Gibt den AHA handle frei, und registriert sich erneut beim AHA Server. Nur für debugging.

    Get
    • devList
      liefert die Liste aller DECT-Einträge der AHA Server zurück, mit einem kurzen Info.

    Attributes
    • dummy

    Generierte Events:
    • UNDEFINED FBDECT_$ahaName_${NR} FBDECT $id"

FBDECT

    Dieses Modul wird verwendet, um AVM FRITZ!DECT Geräte via FHEM zu steuern, siehe auch das FBAHA Modul für die Anbindung an das FRITZ!Box.

    Define
      define <name> FBDECT <homeId> <id> [classes]

      <id> ist das Geräte-ID, das Argument wird z.Zt ignoriert.
      Beispiel:
        define lampe FBDECT 16 switch,powerMeter
      Achtung:FBDECT Einträge werden noralerweise per autocreate angelegt.


    Set
    • on/off
      Gerät einschalten bzw. ausschalten.
    • Die set extensions werden unterstützt.
    • msgInterval <sec>
      Anzahl der Sekunden zwischen den Sensornachrichten.

    Get
    • devInfo
      meldet Geräte-Informationen.

    Attribute
    • IODev
    • do_not_notify
    • ignore
    • dummy
    • showtime
    • model
    • readingFnAttributes

    Generierte events:
    • on
    • off
    • set_on
    • set_off
    • current: $v A
    • voltage: $v V
    • power: $v W
    • energy: $v Wh
    • powerFactor: $v"
    • temperature: $v C
    • options: uninitialized
    • options: powerOnState:[on|off|last],lock:[none,webUi,remoteFb,button]
    • control: disabled
    • control: on power < $v delay:$d sec do:state [on|off]
    • relaytimes: disabled
    • relaytimes: HEX

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.)

    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
    • rereadPhonebook - Liest das Telefonbuch der FritzBox neu ein (per Datei oder direkt lokal)

    Get-Kommandos
    • search <Rufnummer> - gibt den Namen der Telefonnummer zurück (aus Cache, Telefonbuch oder Rückwärtssuche)

    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 (all|internal|klicktel.de|dasoertliche.de|search.ch|dasschnelle.at|none)
    • Aktiviert die Rückwärtssuche der externen Rufnummer der Gegenstelle (bei eingehenden/abgehenden Anrufen). Es ist möglich einen bestimmten Suchanbieter zu verwenden, welcher für die Rückwärtssuche verwendet werden soll. Falls FHEM auf einer FritzBox Fon läuft, kann mit dem Wert "internal" ausschließlich das interne Telefonbuch verwendet werden. Wenn dieses Attribut auf dem Wert "all" steht, wird (sofern FHEM auf einer FritzBox Fon läuft) das interne Telefonbuch verwendet, sowie alle verfügbaren Suchanbieter (ausser search.ch und dasschnelle.at) für die Rückwärtssuche herangezogen, solange bis irgend ein Anbieter ein valides Ergebniss liefert. Wenn der Wert "none" ist, wird keine Rückwärtssuche durchgeführt.

      Standardwert ist "none" (keine Rückwärtssuche).

    • reverse-search-cache
    • Wenn dieses Attribut gesetzt ist, werden alle Ergebisse der Rückwärtssuche in einem modul-internen gespeichert und von da an nur noch aus dem Cache genutzt anstatt eine erneute Rückwärtssuche durchzuführen.

      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 persisten 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 direkt wieder in den Cache geladen und genutzt.

    • 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

      Standartwert 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 zum Beispiel 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 bei Ortsgesprächen (z.B. 0228 für Bonn)


    Generierte Events:

    • event: (call|ring|connect|disconnect) - Welches Event wurde genau ausgelöst.
    • 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) und "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 2 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.

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
      N/A

    Get
      N/A

    Attributes
    • dummy

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.


    Attributes
    • webname
      Der Pfad nach http://hostname:port/ . Standard ist fhem, so ist die Standard HTTP Adresse http://localhost:8083/fhem

    • refresh
      Damit erzeugen Sie auf den ausgegebenen Webseiten einen automatischen Refresh, z.B. nach 5 Sekunden.

    • 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
        Die Plots werden mit Hilfe des gnuplot Programmes erzeugt. Diese Option ist aus historischen Gründen vorhanden.
      • gnuplot-scroll
        Wie gnuplot, der einfache Zugriff auf historische Daten ist aber genauso möglich wie mit dem SVG Modul.

    • 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

    • 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).

    • 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.

    • endPlotToday
      Wird dieses FHEMWEB Attribut gesetzt, so enden Wochen- bzw. Monatsplots am aktuellen Tag, sonst wird die aktuelle Woche/Monat angezeigt.

    • 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.

    • 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.

    • plotfork
      Normalerweise wird die Ploterstellung im Hauptprozess ausgeführt, FHEM wird wärend dieser Zeit nicht auf andere Ereignisse reagieren. Auf Rechnern mit sehr wenig Speicher (z.Bsp. FRITZ!Box 7170) kann das zum automatischen Abschuss des FHEM Prozesses durch das OS führen.

    • 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" }

    • 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

    • 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

    • 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.

    • 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.

    • 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.

    • hiddengroup
      Wie hiddenroom (siehe oben), jedoch auf Gerätegruppen bezogen.
      Beispiel: attr WEBtablet hiddengroup FileLog,dummy,at,notify

    • 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

    • 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 der dazugehörige #FileLog Definition 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. Standard ist aus.

    • 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.

    • fwcompress
      Aktiviert die HTML Datenkompression (Standard ist 1, also ja, 0 stellt die Kompression aus).

    • 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.

    • CORS
      Wenn auf 1 gestellt, wird FHEMWEB einen "Cross origin resource sharing" Header bereitstellen, näheres siehe Wikipedia.

    • 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.)

    • 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

    • sortRooms
      Durch Leerzeichen getrennte Liste von Räumen, um deren Reihenfolge zu definieren. Beispiel:
      attr WEB sortRooms DG OG EG Keller

    • 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

    • 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.

    • 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
      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;;"

    • 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:
      • 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 Modifier in der Form ":slider,<min>,<step>,<max>", so wird ein in JavaScript programmierter Slider angezeigt
      • Ist der Modifier ":multiple,val1,val2,...", dann ein Mehrfachauswahl ist möglich, das Ergebnis ist Komma-separiert.
      • In allen anderen Fällen erscheint ein Dropdown mit allen Modifier Werten.
      Wenn der Befehl state ist, wird der Wert als Kommando interpretiert.
      Beispiele für modifier:
        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.

    • 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.
      Anmerkung: einige Elemente, wie SVG Plots und readingsGroup können nur Teil einer Spalte sein wenn sie in group stehen.

    • closeConn
      Falls gesetzt, wird pro TCP Verbindung nur ein HTTP Request durchgefuehrt. Fuer bestimmte Hardware-Kombinationen (langsamer FHEM Server, iPad/iPhone als Client) scheint dieses Attribu Ladeprobleme zu beheben.

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:
        define wz FHT 3232

      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
        • 64: lowtemp-offset
        measured-temp und actuator werden mitgesendet wenn vom FHT als notwendig erachtet.
      • lowtemp-offset braucht eine Temperatur als Argument. Gültige Werte müssen zwischen 1.0 und 5.0°C liegen.
        Wird eine Warnung erzeugen wenn die desired-temp - measured-temp > lowtemp-offset, jedoch frühestens 1,5Stunden nach der letzten Änderung der desired-temp.

      • FHEM hat optional einen internen Softwarepuffer für FHT Devices. Dieser Puffer soll vor Übertragungsfehlern schützen. Wenn nach einem bestimmten Zeitraum keine Bestätigung erhalten wurde wird FHEM den Befehl erneut senden. Die Befehle in der Warteschlagen können mit list <fht-device> angezeigt werden. Siehe die Attribute fhtsoftbuffer, retrycount und minfhtbuffer für weitere Details.

      • Befehle im Softwarepuffer werden in folgender Reihenfolge gesendet:
        desired-temp,mode,report1,report2,holiday1,holiday2,day-temp,night-temp, [all other commands]


    Get
      N/A

    Attribute
    • dummy
      Hinweis: Es macht Sinn ein FHT Device auch für ein FHT8b zu definieren da sonst der Fehler "unknown FHT device, please define one" für jedes FHT8b generiert wird, denn das CUL meldet die 8b Nachrichten. Das dummy Attribut sollte bei diesen Devices gesetzt werden da sonst der interne FHT Buffer des CUL mit 8b-Daten gefüllt wird die niemals gebraucht werden. Wenn der Puffer dann voll ist werden "EOB" Nachrichten vom CUL erzeugt, und Senden zu den 8b ist nicht mehr möglich.

    • retrycount
      Wenn das fhtsoftbuffer Attribut gesetzt ist, dann werden die Befehle entsprechend dem retrycount n-mal erneut versendet wenn nach 240 Sekunden keine Bestätigungsmeldung vom entsprechenden FHZ Device empfangen wurde.
      Der Default-Wert ist 1.

    • minfhtbuffer
      FHEM sendet keine Befehle mehr zum FHZ wenn der fhtbuffer-Wert diesen Wert unterschritten hat. Default-Wert ist 0. Wenn dieser Wert zu niedrig ist hat die Reihenfolge von fht-Befehlen weniger Einfluss da nur Befehle im Softbuffer priorisiert werden können. (Siehe Hinweise in der FHT Sektion set) Der Maximalwert sollte 7 unter dem Hardware Maximum sein, siehe fhtbuf.

    • lazy
      Wenn das Attribut lazy (faul) gesetzt wurde sendet FHEM keine Befehle wenn die aktuell gelesenen Werte und der zu setzende Wert identisch sind. Das spart Funkzeit und hilft Konflikte mit der Regelung die besagt, dass maximal 1% der Zeit als Funkzeit verwendet werden darf, zu vermeiden. Nicht standardmäßig aktiviert.

    • tmpcorr
      Korrigiert die Werte die vom FHZ gemeldet werden um den angegebenen Wert. Hinweis: nur die measured-temp Werte die von FHEM gemeldet (für Logging genutzt) werden angepasst.

    • 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:
        define wz FHT8V 3232

    Set
    • set <name> valve <Wert>
      Öffnet das Ventil auf den angegebenen Wert (in Prozent, von 0 bis 100).
    • set <name> pair
      Verbindet das Ventil mit dem CUL.
    • set <name> decalc
      Startet einen Entkalkungslauf des angegebenen Ventils.

    Get
    • get <name> valve
      Liest die Ventilöffnung aus dem FHT-Puffer des CUL und wandelt sie in Prozent (von 0 bis 100) um.

    Attributes
    • IODev
    • dummy
    • ignore
    • eventMap

    • readingFnAttributes

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, dre zu einer Anzeige ohne fhem-Menü, Räume oder device-Listen führt. Geräte können an einer festlegbaren Koordinate auf dem Bildschirm angezeigt werden, üblicherweise mit einem anklickbaren icon, das das Ein- oder Aus-Schalten des Geräts durch klicken erlaubt. Ein Hintergrundbild kann verwendet werden - z.B. ein Grundriss oder jegliches andere Bild. Mit floorplanstyle.css kann die Formatierung angepasst werden.
    Eine Schritt-für-Schritt-Anleitung zur Einrichtung ist verfügbar in Englisch und Deutsch.

    Define
      define <name> FLOORPLAN

      Hinweis: Speichern Sie Ihr Hintergrundbild mit dem Dateinamen fp_<name>.png in Ihrem icon_ordner (www/images/default , www/pgm2 or FHEM) .

      Beispiel:
        define Grundriss FLOORPLAN
        fp_Grundriss.png


    Set
    • N/A

    Get
      get <name> config
      Zeigt die Konfiguration des FLOORPLAN incl. allen Attributen an. Kann fuer ein include-file verwendet werden.

    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
      • 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. Dabei können die Koordinaten auch durch Platzieren mit der Maus gesetzt werden.
      Beispiel:
        attr Erdgeschoss fp_arrange 1
        attr Erdgeschoss fp_arrange detail #Zeigt die Geräte mit den Infos Raum, Typ und Alias
        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:
        smallscreen
        touchpad
        refresh
        plotmode
        plotsize
        webname
        redirectCmds
        longpoll
        allowedCommands


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

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
        on-till # Siehe Hinweise

      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.
      • on-till setzt eine absolute Zeit im "at" Format voraus (HH:MM:SS, HH:MM oder { <perl code> }, wobei der perl-code eine Zeit zurück geben muss). Wenn die aktuelle Zeit größer ist als die angegebene, dann wird der Befehl ignoriert und ein at-"on" Befehl erzeugt, sowie für die angegebe "till-time" ein at-"off" Befehl.

    Get
      N/A

    Attribute
    • IODev
      Setzt das IO oder das physische Device welches zum Senden der Signale an dieses logische Device verwendet werden soll (Beispielsweise FHZ oder CUL). Hinweis: Beim Start weist FHEM jedem logischen Device das letzte physische Device zu, das Daten von diesem Typ empfangen kann. Das Attribut IODev muss nur gesetzt werden wenn mehr als ein physisches Device fähig ist Signale von diesem logischen Device zu empfangen.

    • eventMap
      Ersetze Event Namen und setze Argumente. Der Wert dieses Attributes besteht aus einer Liste von durch Leerzeichen getrennte Werten. Jeder Wert ist ein durch Doppelpunkt getrenntes Paar. Der erste Teil stellt den "alten" Wert, der zweite Teil den "neuen" Wert dar. Wenn der erste Wert ein Slash (/) oder ein Komma (,) ist, dann wird nicht durch Leerzeichen sondern durch das vorgestellte Zeichen getrennt. Beispiele:
        attr store eventMap on:open off:closed
        attr store eventMap /on-for-timer 10:open/off:closed/
        set store open

    • dummy
      Setzt das Attribut dummy um Devices zu definieren, die keine Funksignale absetzen. Zugehörige notifys werden ausgeführt wenn das Signal empfangen wird. Wird beispielsweise genutzt um auf Code eines Sender zu reagieren, dennoch wird es auch dann kein Signal senden wenn es im Web Frontend getriggert wird.

    • follow-on-for-timer
      Plant ein "setstate off;trigger off" für die angegebene Zeit als Argument zum on-for-timer Command. Oder das gleiche mit "on" wenn der Befehl "follow-off-for-timer" war.

    • follow-on-timer
      Wie follow-on-for-timer plant es ein "setstate off;trigger off", aber diesmal als Argument in Sekunden zum Attribut. Wird verwendet um dem vorprogrammierten Timer zu folgen welcher vorher durch den timer-Befehl, oder manuell durch Drücken des Buttons gesetzt wurde. Im Handbuch finden sich noch mehr Informationen.

    • 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>

      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.
      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>
        Hinzufügen eines regexp Teiles, der gemäß device:regexp aufgebaut ist. Die Teile werden mit einem | voneinander getrennt. Achtung: Wenn die regexp-Teile umsortiert werden, können die manuell erzeugten regexps ungültig werden.
    • removeRegexpPart <re>
        Entfernt ein regexp-Teil. Achtung: Wenn die regexp-Teile umsortiert werden, können die manuell erzeugten regexps ungültig werden.
        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. "-" steht für das aktuelle Logfile. Man kann auch auf ein älteres File zugreifen (oder eines aus dem Archiv).
      • <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
    • archivecmd / archivedir / nrarchive
      Wenn eine neue FileLog-Datei geöffnet wird, wird der FileLog archiver aufgerufen. Das geschieht aber nur , wenn der Name der Datei sich geändert hat(abhängig von den zeitspezifischen Wildcards, die weiter oben unter FileLog (define) beschrieben werden) und gleichzeitig ein neuer Datensatz in diese Datei geschrieben werden muss.
      Wenn das Attribut archivecmd benutzt wird, startet es als shell-Kommando ( eine Einbettung in " ist nicht notwendig), und jedes % in diesem Befehl wird durch den Namen des alten Logfiles ersetzt.
      Wenn dieses Attribut nicht gesetzt wird, aber dafür nrarchive und/oder archivecmd, werden nrarchive viele Logfiles im aktuellen Verzeichnis gelassen, und ältere Dateien in das Archivverzeichnis (archivedir) verschoben (oder gelöscht, falls kein archivedir gesetzt wurde).
      Hinweis: Werden diese Attribute als global instance gesetzt, hat das auschließlich auf das FHEM logfile Auswirkungen.

    • disable
    • logtype
      Wird vom pgm2 webfrontend benötigt, um gnuplot/SVG-Kurven aus den Logdateien zu zeichnen. Der String wird aus komma-separierten Tokens (,) erzeugt, wobei jeder Token ein eigenes gnuplot-Programm bezeichnet. Die Token können Doppelpunkte (:) enthalten. Der Teil vor dem Doppelpunkt bezeichnet den Namen des Programms; der Teil nach dem Doppelpunkt ist der String, der im Web.Frontend dargestellt werden soll. Gegenwärtig sind folgende Typen von gnuplot-Programmen implementiert:
      • fs20
        Zeichnet on als 1 and off als 0. Die geeignete filelog-Definition für das Gerät fs20dev lautet:
        define fslog FileLog log/fs20dev-%Y-%U.log fs20dev
      • fht
        Zeichnet die Ist-Temperatur/Soll-temperatur/Aktor Kurven. Die passende FileLog-Definition (für das FHT-Gerät mit Namen fht1)sieht wie folgt aus:
        define fhtlog1 FileLog log/fht1-%Y-%U.log fht1:.*(temp|actuator).*
      • temp4rain10
        Zeichnet eine Kurve aus der Temperatur und dem Niederschlag (pro Stunde und pro Tag) eines KS300. Die dazu passende FileLog-Definition (für das KS300 Gerät mit Namen ks300) sieht wie folgt aus:
        define ks300log FileLog log/fht1-%Y-%U.log ks300:.*H:.*
      • hum6wind8
        Zeichnet eine Kurve aus der Feuchtigkeit und der Windgeschwindigkeit eines ks300. Die geeignete FileLog-Definition ist identisch mit der vorhergehenden Definition. Beide programme erzeugen das gleiche Log.
      • text
        Zeigt das LogFile in seiner ursprünglichen Form (Nur Text).Eine gnuplot-Definition ist nicht notwendig.
      Beispiel:
      attr ks300log1 logtype temp4rain10:Temp/Rain,hum6wind8:Hum/Wind,text:Raw-data


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:
GEOFANCY

GUEST

Define
define <rg_FirstName> GUEST [<Device Name der Bewohnergruppe>]

Stellt ein spezielles Dummy Device bereit, welches einen Gast repräsentiert.
Basierend auf dem aktuelle 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


Mögliche Stati und ihre Bedeutung

Dieses Modul unterscheidet 6 verschiedene Stati:

  • home - Mitbrwohner ist zuhause und wach
  • gotosleep - Mitbewohner ist auf dem Weg ins Bett
  • asleep - Mitbewohner schläft
  • awoken - Mitbewohner ist gerade aufgewacht
  • absent - Mitbewohner ist momentan nicht zuhause, 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 zuhause 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 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 aktuelle Status 'absent' ist; Standard ist 36 Stunden
  • rg_locationHome - hiermit übereinstimmende Lokationen werden als zuhause 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 zuhause 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_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 Stati '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 Stati; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Stati führen zu Fehlern



Generierte Readings/Events:
  • durTimerAbsence - Timer, der die Dauer der Abwesenheit in Minuten anzeigt
  • durTimerPresence - Timer, der die Dauer der Anwesenheit in Minuten anzeigt
  • durTimerSleep - Timer, der die Schlafdauer in Minuten anzeigt
  • 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 im folgenden Format: Stunden:Minuten:Sekunden
  • lastDurPresence - Dauer der letzten Anwesenheit im folgenden Format: Stunden:Minuten:Sekunden
  • lastDurSleep - Dauer des letzten Schlafzyklus im folgenden Format: Stunden:Minuten:Sekunden
  • lastLocation - der vorherige Aufenthaltsort
  • lastMood - die vorherige Stimmung
  • lastSleep - Zeitstempel des Beginns des letzten Schlafzyklus
  • lastState - der vorherige Status
  • location - der aktuelle Aufenthaltsort
  • presence - gibt den Zuhause Status in Abhängigkeit des Readings 'state' wieder (kann 'present' oder 'absent' sein)
  • mood - die aktuelle Stimmung
  • state - gibt den aktuellen Status wieder
  • 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

HMLAN

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: HMLAN

HMS

    Define
      define <name> HMS <housecode>

      Der <housecode> ist eine vierstellige HEX-Zahl, entsprechend dem HMS Gerät.
      Beispiel:
        define temp HMS 1234
      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
      N/A

    Get
      N/A

    Attributes
    • ignore
    • do_not_notify
    • showtime
    • IODev
    • eventMap
    • model (hms100-t hms100-tf hms100-wd hms100-mg hms100-co hms100-tfk hms100-fit rm100-2)
    • readingFnAttributes

HMinfo

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: HMinfo

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

Heating Control


    Define
      define <name> Heating_Control <device> [<language>] <profile> <command>|<condition>

      Bildet ein Wochenprofil für ein <device>, zb. Heizkörper, ab.
      Es können für jeden Tag unterschiedliche Schaltzeiten angegeben werden.
      Ist das <device> ein Heizkörperthermostat (zb. FHT8b, MAX) so wird bei FHT8b/MAX die zu setzende Temperatur im <profile> automatisch mittels

      set <device> (desired-temp|desiredTemerature) <temp>

      gesendet. Struktuen von Heizkörperthermostaten bekommen aufgrund des fhem-Typs auch desired-temp gesendet: Nutze bitte explizite Kommandos wenn Strukturen von MAX Heizthermostaten gesteuert werden sollen.

      Ist eine <condition> angegeben und ist zum Schaltpunkt der Ausdruck unwahr, so wird dieser Schaltpunkt nicht ausgeführt.
      Alternativ zur Automatik kann stattdessen eigener Perl-Code im <command> ausgeführt werden.

      Folgende Parameter sind im Define definiert:

        device
        Name des zu schaltenden Device.

        language
        Spezifiziert die Sprache für die Definition und die Anzeige der Profile in der Weboberfläche. Zurzeit sind de,en,fr definiert. Der Parameter ist optional.

        profile
        Angabe des Wochenprofils. Die einzelnen Schaltzeiten sind durch Leerzeichen getrennt Die Angabe der Schaltzeiten ist nach folgendem Muster definiert:
          [<Wochentage>|]<Uhrzeit>|<Parameter>

        Wochentage: optionale Angabe, falls nicht gesetzt wird der Schaltpunkt jeden Tag ausgeführt. Für die Tage an denen dieser Schaltpunkt aktiv sein soll, ist jeder Tag mit seiner Tagesnummer (Mo=1, ..., So=7) oder Name des Tages (Mo, Di, ..., So) einzusetzen.
        Uhrzeit:Angabe der Uhrzeit zu der geschaltet werden soll, Format: HH:MM:[SS](HH im 24 Stunden Format) oder eine Perlfunction wie {sunrise_abs()}
        Parameter:Angabe der zu setzenden Temperatur als Zahl mit Format 99.9 oder als symbolische Konstante eco or comfort - was immer das Heizkörperthermostat versteht. Symbolischen Werten kann ein zusätzlicher Parameter angehängt werden: dayTemp:16 night-temp:15. Unten folgen Beispiele

        command
        Falls keine Condition in () angegeben wurde, so wird alles weitere als Command interpretiert. Perl-Code ist in {} zu setzen.
        Wichtig: Falls ein Command definiert ist, so wird zu den definierten Schaltzeiten nur(!) das Command ausgeführt. Falls ein desired-temp Befehl abgesetzt werde soll, so muss dies explizit angegeben werden.
        Folgende Parameter werden ersetzt:
        1. @ => das zu schaltende Device
        2. % => die zu setzende Temperatur

        condition
        Bei Angabe einer Condition ist diese in () zu setzen und mit validem Perl-Code zu versehen.
        Der Rückgabedatentyp der condition muss boolean sein.
        Die Parameter @ und % werden interpretiert.

      Beispiel:

        define HCW Heating_Control Bad_Heizung 12345|05:20|21 12345|05:25|comfort 17:20|21 17:25|eco
        Mo-Fr wird die Temperatur um 05:20Uhr auf 21°C, und um 05:25Uhr auf comfort gesetzt. Jeden Tag wird die Temperatur um 17:20Uhr auf 21°C und 17:25Uhr auf eco gesetzt.

        define HCW Heating_Control WZ_Heizung 07:00|16 Mo,Di,Mi|16:00|18.5 20:00|12 {fhem("set dummy on"); fhem("set @ desired-temp %");}
        Zu den definierten Schaltzeiten wird nur(!) der in {} angegebene Perl-Code ausgeführt.

        define HCW Heating_Control WZ_Heizung Sa-So,Mi|08:00|21 (ReadingsVal("WeAreThere", "state", "no") eq "yes")
        Die zu setzende Temperatur wird nur gesetzt, falls die Dummy Variable WeAreThere = "yes" ist.

        define HCW Heating_Control WZ_Heizung en Su-Fr|{sunrise_abs()}|21 Mo-Fr|{sunset_abs()}|16
        Das Gerät wird bei Sonnenaufgang und Sonnenuntergang geschaltet. Sprache: Englisch. define HCW Heating_Control WZ_Heizung en Mo-Fr|{myFunction}|night-temp:18 Mo-Fr|{myFunction()}|dayTemp:16
        Das Gerät wird bei myFunction() geschaltet. Es wird das Kommando "night-temp 18" bzw. "dayTemp 16" gesendet. Wenn du beispielsweise nach einer Temperaturabsenkungsphase erreichen willst, dass alle Heating_Controls ihren aktuellen Wert einstellen sollen, kannst du die Funktion Heating_Control_SetAllTemps() aufrufen. Dieser Aufruf kann per notify automatisch an ein dummy gekoppelt werden: define HeizStatus2 notify Heizung:.* {Heating_Control_SetAllTemps()}

    Set
      N/A

    Get
      N/A

    Attributes
    • 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.

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
      N/A

    Attribute
    • oversampling_settings
      Steuert das Oversampling der Druckmessung im Sensor.
      Default: 3, gültige Werte: 0, 1, 2, 3

    • poll_interval
      Definiert das Poll Intervall in Minuten für das Auslesen einer neuen Messung.
      Default: 5, gültige Werte: 1, 2, 5, 10, 20, 30

    • roundTemperatureDecimal
      Rundet den Temperaturwert mit den angegebenen Nachkommastellen.
      Default: 1, gültige Werte: 0, 1, 2

    • roundPressureDecimal
      Rundet die Drucksensorwerte mit den angegebenen Nachkommastellen.
      Default: 1, valid values: 0, 1, 2

    • altitude
      Wenn dieser Wert definiert ist, wird diese Angabe zusä 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_LCD

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: I2C_LCD

I2C_PCA9532

    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

    • 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 .. 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

    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 ein zweistelliger Hex-Wert
    Set
      set <name> <port> <value>

      • <port> kann Port0 bis Port7 annehmen und <value> folgende Werte:
          off
          on

      Beispiel:
        set mod1 Port4 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 .. 15

    • IODev
    • ignore
    • do_not_notify
    • showtime

I2C_SHT21

    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

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 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 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 in Kombination mit anderen Modulen, wie z. B. notify oder at, sinnvoll eingesetzt werden kann.

    In der Bedingung des IF-Befehls wird die vollständige Syntax des Perl-if unterstützt. Mögliche Operatoren sind u. a.:

    ++ -- Inkrementieren, Dekrementieren
    ** Potenzierung
    ! ~ logische und bitweise Negation
    =~ !~ Bindung an Seite reguläre Ausdrücke
    * / % x Multiplikation, Division, Modulo-Operation, Zeichenkettenwiederholung
    + - . Addition, Subtraktion, Zeichenkettenaddition
    < <= > >= lt le gt ge Vergleich größer/kleiner
    == != eq ne Gleichheit/Ungleichheit
    & bitweises UND
    | ^ bitweises ODER - inklusiv/exklusiv
    && logisches UND
    || logisches ODER
    not logische Negation
    and logisches UND
    or xor logisches ODER (inklusiv/exklusiv)

    Features:

    • Angabe von Readings und Internals ist an beliebiger Stelle möglich

    • Filtern nach Zahlen oder beliebigen Ausdrücken über reguläre Ausdrücke ist möglich

    • IF kann beliebig mit anderen FHEM-Befehlen kombiniert werden (at, notify usw.)

    • es können beliebig viele IF-Befehle ineinander geschachtelt werden

    • Syntaxprüfung: fehlende Klammern werden erkannt

    • Definition über mehrere Zeilen mit Einrückung zwecks übersichtlicher Darstellung ist möglich

    • Überprüfung auf Existenz von Device und Reading bzw. Internal

    • Ausführung von Perl-Befehlen im dann- und sonst-Fall ist weiterhin möglich

    • Auswertung von Ausdrücken in geschweiften Klammen innerhalb eines FHEM-Befehls ist möglich

    • ELSE-Fall ist optional


    Die Syntax für die Nutzung von Readings oder Internals (ein Internal wird durch ein & gekennzeichnet)

    [<device>:<reading>:<format>|[<regulärer Ausdruck>]] bzw. [<device>:&<internal>:<format>|[<regulärer Ausdruck>]]

    <format> und [<regulärer Ausdruck>] sind Filteroptionen, sie können optional genutzt werden.

    Mögliche Formatangaben für <format> sind:

    'd' zum Filtern von positiven und negatien Dezimalzahlen. [<device>:<reading>:d] entspricht [<device>:<reading>:[(-?\d+(\.\d+)?)]]

    Wenn nur der Status eines Devices genutzt werden soll, dann kann auch nur das Device angeben werden:

    [<device>] entspricht [<device>:&STATE]

    Beispiele:

    IF in Kombination mit at-Modul, Readingangabe 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:

    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 zwei IF-Befehlen (kann in mehreren Zeilen mit Einrückungen zwecks übersichtlicher Darstellung in der DEF-Eingabe eingegeben werden):

    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 von Readings im dann-Fall:

    define temp at 18:00 IF ([outdoor:temperature] > 10) (set lampe [dummy])

    Falls bei einem FHEM-Befehl ein Ausdruck mit Readings zuvor ausgewertet werden soll, so muss er in geschweifte 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)

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

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: IT

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
    • INTERVAL <Abfrageinterval>
      Abfrageinterval in Sekunden

    • 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)

    • readingFnAttributes

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. 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

KS300

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: KS300

LGTV

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: LGTV

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

LISTENLIVE

    Sorry, keine deutsche Dokumentation vorhanden.

    Die englische Doku gibt es hier: LISTENLIVE

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.54C, V1.60, V1.69.
    Mehr Infos unter 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.
    • opModeHotWater <Betriebsmodus>
      Betriebsmodus des Heißwasserboilers ( Auto | Party | Off )

    • hotWaterTemperatureTarget <Temperatur>
      Soll-Temperatur des Heißwasserboilers in °C

    • INTERVAL <Abfrageinterval>
      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
    • 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.

    • 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.

    • 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.)

    • 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.

    • readingFnAttributes

LaCrosse

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: LaCrosse

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

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: MAX

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
      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
      alle MPD internen Werte

MSG

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: MSG

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

NetIO230B

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: NetIO230B

ONKYO_AVR

Eine deutsche Version der Dokumentation ist derzeit nicht vorhanden. Die englische Version ist hier zu finden:
ONKYO_AVR

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:
        set myT1 templow 5

    Get-Befehle
      get <name> <reading> <value>
      Holt das <reading> des 1- Wire Geräte- <name>. Die verwendbaren Werte werden durch die jeweiligen 1-wire-Geräte bestimmt.

      Beispiel:
        get myT1 temperature

    Attribute
    • IODev: Bestimmt die OWServer-Instanz, welche für das Senden und Abrufen der Daten eines OWDevice-Gerätes genutzt werden soll. Hinweis: Während des Starts ordnet FHEM die neuen OWDevice-Geräte der jeweils zuletzt definierten OWServer-Instanz zu. Deshalb verfährt man idealerweise so, dass man zuerst eine OWServer-Instanz und anschließend die zugehörigen OWDevice-Geräte definiert. Danach definiert man die nächste OWServer-Instanz, gefolgt von den zugehörigen OWDevice-Geräten, usw.
    • trimvalues: Entfernt voran- und nachgestellte Leerzeichen aus den readings. Standartwert ist 1 (ein).
    • 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

PCA301

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: PCA301

PHTV

    Eine deutsche Version der Dokumentation ist derzeit nicht vorhanden. Die englische Version ist hier zu finden:
    PHTV

PID

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: PID

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

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> [ <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.

      Dieser Modus ist nur verwendbar, wenn FHEM auf einer FritzBox läuft!

      Beispiel

      define iPhone PRESENCE fritzbox iPhone-4S

      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:

        • Perl Skript: presenced
        • .deb Paket für Debian (architekturunabhängig): presenced-1.3.deb
        • .deb Paket für Raspberry Pi (raspbian): presenced-rpi-1.3.deb


      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:

        • Perl Skript: collectord
        • .deb Paket für Debian (architekturunabhängig): collectord-1.4.deb

    Set
    • statusRequest - Startet einen sofortigen Check.

    Get
      N/A

    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 Nicht-Windows-Maschinen)
      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_repeater
    • (Nur im Modus "fritzbox" anwendbar)
      Wenn die FritzBox Teil eines Netzwerkes ist, welches mit Repeatern arbeitet, dann muss dieses Attribut gesetzt sein um die Erkennung von Geräten zu gewährleisten, welche über einen Repeater erreichbar sind.

      Dies gilt ebenso für Devices, welche keine Geschwindigkeitsangaben auf der FritzBox Seite (Heimnetz) anzeigen können.

      ACHTUNG: Die Erkennung der Abwesenheit eines Gerätes in einem Repeater-Netzwerk kann ca. 15 - 20 Minuten dauern!!

      Mögliche Werte: 0 => Standarderkennung verwenden, 1 => Erkennung für Repeatergeräte verwenden
      Standardwert ist 0 (Standarderkennung verwenden)


    Generierte Events:

      Generelle Events:

      • state: $state (absent|present|disabled) - Der Anwesenheitsstatus eine Gerätes (absent = abwesend; present = anwesend) oder "disabled" wenn das disable-Attribut aktiviert ist


      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)

PachLog

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: PachLog

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.

    Diskutiere das Modul hier.


    Define
      define <name> Pushover <token> <user>

      Du musst einen Account erstellen, um den User Key zu bekommen.
      Und du musst eine Anwendung erstellen, um einen API Token zu bekommen.

      Beispiel:
        define Pushover1 Pushover 01234 56789

    Set
      set <name> msg <title> <msg> <device> <priority> <sound> [<retry> <expire>]

      Beispiele:
        set Pushover1 msg 'Titel' 'Dies ist ein Text.' '' 0 ''
        set Pushover1 msg 'Notfall' 'Sicherheitsproblem im Wohnzimmer.' '' 2 'siren' 30 3600

      Anmerkungen:
      • Wenn device leer ist, wird die Nachricht an alle Geräte geschickt.
      • 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
      N/A

    Attributes
    • timestamp
      Sende den Unix-Zeitstempel mit jeder Nachricht.


    Generated events:
      N/A

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 Stati von ROOMMATE und GUEST Devices und erlaubt den Status für alle Mitglieder zeitgleich zu ändern. Basierend auf dem aktuelle 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 GUEST 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


Mögliche Stati und ihre Bedeutung

Dieses Modul unterscheidet 7 verschiedene Stati:

  • 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 Stati '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 Stati; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Stati führen zu Fehlern



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 im folgenden Format: Stunden:Minuten:Sekunden
  • lastDurPresence - Dauer der letzten Anwesenheit im folgenden Format: Stunden:Minuten:Sekunden
  • lastDurSleep - Dauer des letzten Schlafzyklus im folgenden Format: Stunden:Minuten:Sekunden
  • lastSleep - Zeitstempel des Beginns des letzten Schlafzyklus
  • lastState - der vorherige Status
  • presence - gibt den Zuhause Status in Abhängigkeit des Readings 'state' wieder (kann 'present' oder 'absent' sein)
  • residentsAbsent - Anzahl der Bewohner mit Status 'absent'
  • residentsAsleep - Anzahl der Bewohner mit Status 'asleep'
  • residentsAwoken - Anzahl der Bewohner mit Status 'awoken'
  • residentsGone - Anzahl der Bewohner mit Status 'gone'
  • residentsGotosleep - Anzahl der Bewohner mit Status 'gotosleep'
  • residentsGuests - Anzahl der aktiven Gäste, welche momentan du den Bewohnern dazugezählt werden
  • residentsHome - Anzahl der Bewohner mit Status 'home'
  • residentsTotal - Summe aller aktiven Bewohner unabhängig von ihrem aktuellen Status
  • residentsTotalAbsent - Summe aller aktiven Bewohner, die unterwegs sind
  • residentsTotalPresent - Summe aller aktiven Bewohner, die momentan Zuhause sind
  • residentsTotalWayhome - Summe aller aktiven Bewohner, die momentan auf dem Weg zurück nach Hause sind
  • state - gibt den aktuellen Status wieder

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 aktuelle 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


Mögliche Stati und ihre Bedeutung

Dieses Modul unterscheidet 6 verschiedene Stati:

  • home - Mitbrwohner ist zuhause und wach
  • gotosleep - Mitbewohner ist auf dem Weg ins Bett
  • asleep - Mitbewohner schläft
  • awoken - Mitbewohner ist gerade aufgewacht
  • absent - Mitbewohner ist momentan nicht zuhause, 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 zuhause 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 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 aktuelle Status 'absent' ist; Standard ist 36 Stunden
  • rr_locationHome - hiermit übereinstimmende Lokationen werden als zuhause 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 zuhause 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_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 Stati '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 Stati; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Stati führen zu Fehlern



Generierte Readings/Events:
  • durTimerAbsence - Timer, der die Dauer der Abwesenheit in Minuten anzeigt
  • durTimerPresence - Timer, der die Dauer der Anwesenheit in Minuten anzeigt
  • durTimerSleep - Timer, der die Schlafdauer in Minuten anzeigt
  • 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 im folgenden Format: Stunden:Minuten:Sekunden
  • lastDurPresence - Dauer der letzten Anwesenheit im folgenden Format: Stunden:Minuten:Sekunden
  • lastDurSleep - Dauer des letzten Schlafzyklus im folgenden Format: Stunden:Minuten:Sekunden
  • lastLocation - der vorherige Aufenthaltsort
  • lastMood - die vorherige Stimmung
  • lastSleep - Zeitstempel des Beginns des letzten Schlafzyklus
  • lastState - der vorherige Status
  • location - der aktuelle Aufenthaltsort
  • presence - gibt den Zuhause Status in Abhängigkeit des Readings 'state' wieder (kann 'present' oder 'absent' sein)
  • mood - die aktuelle Stimmung
  • state - gibt den aktuellen Status wieder
  • wayhome - abhängig vom aktullen Aufenthaltsort, kann der Wert '1' werden, wenn die Person auf dem weg zurück nach Hause ist

RPII2C

    Ermöglicht den Zugriff auf die I2C Schnittstellen des Raspberry Pi ü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:
    • Dieses Modul nutzt das gpio Utility der WiringPi Bibliothek um FHEM Schreibrechte auf die I2C Schnittstelle zu geben.
      WiringPi Installation ist hier beschrieben: RPI_GPIO
      Für andere Systeme (BeagleBone, etc.) oder auch für das Raspberry kann auf WiringPi verzichtet werden. In diesem Fall müssen die Dateien /dev/i2c-x Schreib-/Leserechte, für den User unter dem FHEM läuft, gesetzt bekommen. (z.B. in der etc/init.d/fhem)
    • Installation der I2C Abhängigkeiten:
      sudo apt-get install libi2c-dev i2c-tools build-essential
    • I2C Kernelmodule laden:
      modules Datei öffnen
      sudo nano /etc/modules
      folgendes einfügen
      i2c-dev
      i2c-bcm2708
    • Desweiteren ist das Perl Modul Device::SMBus für den Zugrff auf den I2C Bus notwendig:
      sudo apt-get install libmoose-perl
      sudo cpan Device::SMBus


    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 (0 oder 1)

    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>

    • Identisch zu writeBlock nur kann der Registerbereich sequentiell beschrieben werden. Die Anzahl der Byte muss ein vielfaches der <number of registers> sein. set <name> writeNBlock <I2C Address> <Register Address> <number of registers> <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 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
    • ignore
    • do_not_notify
    • showtime

RPI_GPIO

    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ühten GPIO's direkt als Ein- und Ausgang zu benutzen. Die Eingänge können zyklisch abgefragt werden oder auch sofort bei Pegelwechsel gesetzt 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 können nur mit root erreicht werden. Dieses Modul nutzt das gpio Tool von der WiringPi. Bibliothek um GPIS zu exportieren und die korrekten Nutzerrechte zu setzen. 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
      sudo adduser fhem gpio
    Das wars!

    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 PinPin 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 PinPin 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 PinPinFunction
      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
            attr Pin12 poll_interval 5
          
    Set
      set <name> <value>

      value ist dabei einer der folgenden Werte:
      • Für GPIO der als output konfiguriert ist
          off
          on
          toggle
        Die set extensions werden auch unterstützt.
      • Für GPIO der als input konfiguriert ist
          readval
        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

    • 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
      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&äuml;nde nach Neustart
      Standard: on, gültige Werte: on, off

    • 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

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

SML

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: SML

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 CUL
        attr SCC1 rfmode HomeMatic
        define SCC2 STACKABLE_CC CUL
        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
    • IODev

    • ignore

    • Die anderen Attribute sind die gleichen wie für das CUL.

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
      N/A

    Attribute
    • fixedrange [offset]
      Version 1
      Enthält zwei Zeit-Spezifikationen in der Schreibweise YYYY-MM-DD, getrennt durch ein Leerzeichen. Im Plotmodus gnuplot-Scroll 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

    • 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 oder SVG handelt, es können ebenfalls die Werte der individuellen Kurve für min, max, avg, cnt, sum, currval (letzter Wert) und currdate (letztes Datum) durch Zugriff der entsprechenden Werte über das DataHash 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>
    • 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.

    • 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
    Die sichtbarkeit des Plot-Editors kann mit dem FHEMWEB Attribut ploteditor konfiguriert werden.

SWAP

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: SWAP

SWAP_0000002200000003

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: SWAP_0000002200000003

SYSMON

    Dieses Modul liefert diverse Informationen und Statistiken zu dem System, auf dem FHEM-Server ausgeführt wird. 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 (keine CPU-Daten), WR703N unter OpenWrt.

    Define

    define <name> SYSMON [<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

    • 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


    Readings:

    • cpu_bogomips
      CPU Speed: BogoMIPS
    • cpu_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).

    • 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.

    • 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

    • 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 im Attribut user-defined vorgenommen.


    Beispiel-Ausgabe:
      cpu_freq
      900
      2013-11-27 00:05:36
      cpu_temp
      49.77
      2013-11-27 00:05:36
      cpu_temp_avg
      49.7
      2013-11-27 00:05:36
      eth0
      RX: 2954.22 MB, TX: 3469.21 MB, Total: 6423.43 MB
      2013-11-27 00:05:36
      eth0_diff
      RX: 6.50 MB, TX: 0.23 MB, Total: 6.73 MB
      2013-11-27 00:05:36
      fhemuptime
      11231
      2013-11-27 00:05:36
      fhemuptime_text  
      0 days, 03 hours, 07 minutes
      2013-11-27 00:05:36
      idletime
      931024 88.35 %
      2013-11-27 00:05:36
      idletime_text
      10 days, 18 hours, 37 minutes (88.35 %)
      2013-11-27 00:05:36
      loadavg
      0.14 0.18 0.22
      2013-11-27 00:05:36
      ram
      Total: 485 MB, Used: 140 MB, 28.87 %, Free: 345 MB
      2013-11-27 00:05:36
      swap
      n/a
      2013-11-27 00:05:36
      uptime
      1053739
      2013-11-27 00:05:36
      uptime_text
      12 days, 04 hours, 42 minutes
      2013-11-27 00:05:36
      wlan0
      RX: 0.00 MB, TX: 0.00 MB, Total: 0 MB
      2013-11-27 00:05:36
      wlan0_diff
      RX: 0.00 MB, TX: 0.00 MB, Total: 0.00 MB
      2013-11-27 00:05:36
      fs_root
      Total: 7404 MB, Used: 3533 MB, 50 %, Available: 3545 MB at /
      2013-11-27 00:05:36
      fs_boot
      Total: 56 MB, Used: 19 MB, 33 %, Available: 38 MB at /boot
      2013-11-27 00:05:36
      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.

    • list
      Gibt alle Readings aus.

    • update
      Aktualisiert alle Readings. Alle Werte werden neu abgefragt.

    • version
      Zeigt die Version des SYSMON-Moduls.


    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.


    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:
      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.

    • disable
      Mögliche Werte: 0,1. Bei 1 wird die Aktualisierung gestoppt.


    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
        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.
      Der zweite Parameter ist optional und gibt eine Liste der anzuzeigende Readings im Format <ReadingName>[:<Comment>[:<Postfix>]] 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).
      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'))}

    Text output method (see Weblink): SYSMON_ShowValuesText(<SYSMON-Instance>[,<Liste>])

      Analog SYSMON_ShowValuesHTML, jedoch formatiert als reines Text.

    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

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 wl_sysstat weblink fileplot 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
    • 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.
    • readingFnAttributes

TCM

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: TCM

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.

    Ebenfalls ist 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 Heating_Control-Moduls:

    define TH_room THRESHOLD temp_room heating
    define HC_room Heating_Control TH_room 06:00|22 22:00|18 set @ desired %

    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


    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:

    Der Lüfter soll angehen, wenn das Licht mindestens 2 Minuten lang brennt oder die Luftfeuchtigkeit 65 % überschreitet,
    der Lüfter soll ausgehen, wenn die Luftfeuchtigkeit unter 60 % fällt und das Licht mindestens 3 Minuten lang aus ist.

    define ventilator_state dummy
    define w_ventilator_state_off watchdog light_switch:off 00:03 light_switch:on set ventilator_state off;; trigger w_ventilator_state_off .
    define w_ventilator_state_on watchdog light_switch:on 00:02 light_switch:off set ventilator_state on;; trigger w_ventilator_state_on .
    define TH_ventilator THRESHOLD humsensor:humidity:5:65 OR ventilator_state:state:on ventilator|set @ on|set @ off|1


    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 HC_circ Heating_Control TH_circ 12345|05:30|38 67|07:00|38 23:00|15 set @ desired %

    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 HC_R_Keller Heating_Control TH_shutter_room 12:00|23 20:00|30 set @ desired %

    Beispiel für Beschattung im Sommer mit Verzögerung und automatischem Hochfahren des Rollladens:

    Zusätzlich zum obigen Beispiel wird der Rollladen erst heruntergefahren, wenn die Sonne mindestens 15 Minuten scheint
    und wieder hochgefahren, wenn die Sonne mindestens 30 Minuten nicht mehr scheint.

    define sun_state dummy
    define w_sun_state_off watchdog sun:off 00:30 sun:on set sun_state off;; trigger w_sun_state_off .
    define w_sun state_on watchdog sun:on 00:15 sun:off set sun_state on;; trigger w_sun_state_on .
    define TH_shutter_room THRESHOLD T_room AND sun_state:state:on shutter_room|set @ 30|set @ 100|2
    define HC_R_Keller Heating_Control TH_shutter_room 12:00|23 20:00|30 set @ desired %

    Beispiel für Beschattung mit Verzögerung mit Hilfe eines Helligkeitssensors:

    Der Rollladen soll herunterfahren, wenn der Helligkeitssensor mindesten 15 Minuten einen Schwellenwert von 10000 überschreitet
    und wieder hochfahren, wenn der Schwellenwert 10000 mindestens 30 Minuten lang unterschritten wird.

    define sun dummy
    define sun_state dummy
    define TH_lightness THRESHOLD lightness_sensor:0:10000 sun||||on:off|_sc
    define w_sun_state_off watchdog sun:off 00:30 sun:on set sun_state off;; trigger w_sun_state_off .
    define w_sun state_on watchdog sun:on 00:15 sun:off set sun_state on;; trigger w_sun_state_on .
    define TH_shutter_room THRESHOLD T_room AND sun_state:state:on shutter_room|set @ 30|set @ 100|2


    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 <value>
    Modul wird deaktiviert.

  • 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
    N/A

Attributes
  • disable
  • loglevel
  • state_cmd1_gt
  • state_cmd2_lt
  • state_format

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.

    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
        attr Mythz interval_allFB 300 # Internes Polling Intervall 5min
        attr Mythz interval_history 28800 # Internes Polling Intervall 8h
        attr Mythz interval_last10errors 86400 # Internes Polling Intervall 24h
        define FileLog_Mythz FileLog ./log/Mythz-%Y.log Mythz

      Wenn die Attribute interval_allFB und interval_history nicht definiert sind (oder 0), ist das interne Polling deaktiviert. Natürlich kann das Polling auch mit dem "at" Befehl ausserhalb des Moduls definiert werden.
        define Mythz THZ /dev/ttyUSB0@115200
        define atMythzFB at +*00:05:00 {fhem "get Mythz allFB","1";;return()}
        define atMythz09 at +*08:00:00 {fhem "get Mythz history","1";;return()}
        define FileLog_Mythz FileLog ./log/Mythz-%Y.log Mythz

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

TellStick

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: TellStick

Text2Speech


    Define
      Local : define <name> Text2Speech <alsadevice>
      Remote: define <name> Text2Speech <host>[:<portnr>][:SSL] [portpassword]

      Das Modul wandelt Text mittels verschiedener Provider/Ressourcen in Sprache um. Dabei kann das Device als Remote oder Lokales Device konfiguriert werden.

    • Local Device
        Die Ausgabe erfolgt auf angeschlossenen Audiodevices, zb. Lautsprecher direkt am Gerät oder per Bluetooth-Lautsprecher per Mplayer. Dazu ist Mplayer zu installieren.
        apt-get install mplayer
        Das angegebene Alsadevice ist in der /etc/asound.conf zu konfigurieren.

        Special AlsaDevice: none
        Ist als Alsa-Device none angegeben, so wird mplayer ohne eine Audiodevice Angabe aufgerufen. Dementsprechend verwendet mplayer das Standard Audio Ausgabedevice.

        Beispiel:
        define MyTTS Text2Speech hw=0.0
        define MyTTS Text2Speech none

    • Remote Device
        Das Modul ist Client-Server fäas bedeutet, das auf der Haupt-FHEM Installation eine Text2Speech-Instanz als Remote definiert wird. Auf dem Client wird Text2Speech als Local definiert. Die Sprachausgabe erfolgt auf der lokalen Instanz.
        Zu beachten ist, das die Text2Speech Instanz (Definition als local Device) auf dem Zieldevice identisch benannt ist.
        • Host: Angabe der IP-Adresse
        • PortNr: Angabe des TelnetPorts von FHEM; default: 7072
        • SSL: Angabe ob der der Zugriff per SSL erfolgen soll oder nicht; default: kein SSL
        • PortPassword: Angabe des in der Ziel-FHEM-Installtion angegebene Telnet Portpasswort

        Beispiel:
        define MyTTS Text2Speech 192.168.178.10:7072 fhempasswd define MyTTS Text2Speech 192.168.178.10

Set
  • tts:
    Setzen eines Textes zur Sprachausgabe.
  • volume:
    Setzen der Ausgabe Lautstärke.
    Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!

Get
    N/A

Attribute
  • TTS_Delemiter
    Optional: Wird ein Delemiter angegeben, so wird der Sprachbaustein an dieser Stelle geteilt. Als Delemiter ist nur ein einzelnes Zeichen zulässig. Hintergrund ist die Tatsache, das die Google Sprachengine nur 100Zeichen zulässt.
    Im Standard wird nach jedem Satzende geteilt. Ist ein einzelner Satz länger als 100 Zeichen, so wird zusätzlich nach Kommata, Semikolon und dem Verbindungswort und geteilt.
    Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich und nur Nutzung der Google Sprachengine relevant!
  • TTS_Ressource
    Optional: Auswahl der Sprachengine
    Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!
    • Google
      Nutzung der GoogleSprachengine. Ein Internetzugriff ist notwendig! Aufgrund der Qualität ist der Einsatz diese Engine zu empfehlen und der Standard.
    • ESpeak
      Nutzung der ESpeak Offline Sprachengine. Die Qualitä ist schlechter als die Google Engine. ESpeak ist vor der Nutzung zu installieren.
      apt-get install espeak
  • 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
  • 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

Twilight

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: Twilight

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

Utils

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: Utils

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
      N/A

    Generierte events:
    • volume
    • mute
    • presence
    • power
    • state

VantagePro2

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: VantagePro2

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

WEBTHERM

    Sorry, keine deutsche Dokumentation vorhanden.

    Die englische Doku gibt es hier: WEBTHERM

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
      define <name> WS3600 "<wsreaderprog> [<options>]" [<interval>]

        <wsreaderprog>
        kompletter Pfad zum Ausleseprogramm (für Wetterstationen Typ WS3600 fetch3600 verwenden)
        <options>
        Kommandozeilenparameter für <wsreaderprog>, falls erforderlich
        <interval>
        optionaler Parameter für das Aufrufintervall [s]. Defaultwert ist 60s.

        Unterstützte Stationen sind:
      • WS3600 Serie (Europe Supplies, technotrade, usw.; s.a. Wetterstationen.info (deutsch) für Details) in Verbindung mit fetch3600 aus dem Paket open3600). Fetch3600 liefert die aktuellen Werte zeilenweise als Name-Wert-Paare. Diese werden durch FHEM zyklisch eingelesen, mit besser lesbaren Bezeichnungen versehen und als Readings zur Verfügung gestellt.
      • WS2300 Serie in Verbindung mit dem Paket open2300 (ähnlich zu open3600).
      • WS1080 (und andere Stationen, die mit der Windows-Software "Easy Weather" ausgeliefert werden) in Verbindung mit fowsr (ab Version 2.0)

      Es wird vorausgesetzt, dass die Wetterstation am lokalen Computer angeschlossen ist und <wsreaderprog> deshalb lokal läuft. <wsreaderprog> muss grundsätzlich eine zu fetch3600 vergleichbare Ausgabe auf der Standardausgabe liefern.
      Als Beispiel für das erwartete Format hier die Ausgabe von fetch3600:
      Date 14-Nov-2009
      Time 10:50:22
      Ti 22.8
      Timin 20.8
      Timax 27.9
      TTimin 10:27
      DTimin 15-10-2009
      TTimax 23:31
      DTimax 20-08-2009
      To 14.2
      Tomin -0.4
      Tomax 35.6
      TTomin 07:03
      DTomin 15-10-2009
      TTomax 16:52
      DTomax 20-08-2009
      DP 9.2
      DPmin -2.2
      DPmax 20.3
      TDPmin 07:03
      DDPmin 15-10-2009
      TDPmax 11:58
      DDPmax 20-08-2009
      RHi 48
      RHimin 32
      RHimax 57
      TRHimin 17:03
      DRHimin 21-10-2009
      TRHimax 22:24
      DRHimax 07-10-2009
      RHo 72
      RHomin 27
      RHomax 96
      TRHomin 16:41
      DRHomin 20-08-2009
      TRHomax 06:28
      DRHomax 02-11-2009
      WS 0.0
      DIRtext WSW
      DIR0 247.5
      DIR1 247.5
      DIR2 247.5
      DIR3 247.5
      DIR4 247.5
      DIR5 247.5
      WC 14.2
      WCmin -0.4
      WCmax 35.6
      TWCmin 07:03
      DWCmin 15-10-2009
      TWCmax 16:52
      DWCmax 20-08-2009
      WSmin 0.0
      WSmax 25.6
      TWSmin 10:44
      DWSmin 14-11-2009
      TWSmax 19:08
      DWSmax 24-09-2009
      R1h 0.00
      R1hmax 24.34
      TR1hmax 22:34
      DR1hmax 07-10-2009
      R24h 0.00
      R24hmax 55.42
      TR24hmax 07:11
      DR24hmax 08-10-2009
      R1w 29.00
      R1wmax 95.83
      TR1wmax 00:00
      DR1wmax 12-10-2009
      R1m 117.58
      R1mmax 117.58
      TR1mmax 00:00
      DR1mmax 01-11-2009
      Rtot 3028.70
      TRtot 03:29
      DRtot 18-09-2005
      RP 992.200
      AP 995.900
      RPmin 970.300
      RPmax 1020.000
      TRPmin 05:25
      DRPmin 04-11-2009
      TRPmax 09:19
      DRPmax 11-09-2009
      Tendency Falling
      Forecast Cloudy
      Welche der vorgenannten Wertepaare durch <wsreaderprog>  geliefert werden, ist egal. Jedes bekannte wird übersetzt (z.B. Ti nach Temp-inside) und als Reading angezeigt, alle unbekannten werden kommentarlos verworfen. Mittels geeignetem Programm oder Script sollte sich also jede beliebige Wetterstation anschließen lassen.
      Anmerkung: Um die Anzahl Readings zu reduzieren, werden jetzt Date- und Time-Wertepaare zusammengefasst. Es ist jetzt auch zulässig, dass <wsreaderprog> schon kombinierte Wertepaare liefert. Diese sind mit dem Prefix DT zu kennzeichnen, also z.B. Date + Time --> DTime, DRPmin + TRPmin --> DTRPmin usw.).
      Fetch3600 ist auch unter Windows verfügbar, ob das Zusammenspiel mit FHEM dort auch funktioniert, wurde noch nicht getestet.

      Beispiele:
        define myWS3600 W3600 /usr/local/bin/fetch360
        define myWS1080 W3600 "/usr/local/bin/fowsr -c" 300

    Set
      N/A

    Get
      N/A

    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 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).

      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.):

      cityName der Stadt, der aufgrund der WOEID übermittelt wird
      codeCode für die aktuellen Wetterverhältnisse
      conditionaktuelle Wetterverhältnisse
      current_date_timeZeitstempel der letzten Aktualisierung der Wetterdaten vom Server
      fc?_codeCode für die vorhergesagten Wetterverhältnisse
      fc?_conditionvorhergesagte Wetterverhältnisse
      fc?_day_of_weekWochentag des Tages, der durch ? dargestellt wird
      fc?_high_cvorhergesagte maximale Tagestemperatur in Grad Celsius
      fc?_iconIcon für Vorhersage
      fc?_low_cvorhergesagte niedrigste Tagestemperatur in Grad Celsius
      humiditygegenwärtige Luftfeuchtgkeit in %
      iconrelativer Pfad für das aktuelle Icon
      pressureLuftdruck in hPa
      pressure_trendLuftdrucktendenz (0= gleichbleibend, 1= steigend, 2= fallend)
      pressure_trend_txttextliche Darstellung der Luftdrucktendenz
      pressure_trend_symsymbolische Darstellung der Luftdrucktendenz
      temperaturegegenwärtige Temperatur in Grad Celsius
      temp_cgegenwärtige Temperatur in Grad Celsius
      temp_fgegenwärtige Temperatur in Grad Celsius
      visibilitySichtweite in km
      windWindgeschwindigkeit in km/h
      wind_chillgefühlte Temperatur in Grad Celsius
      wind_conditionWindrichtung und -geschwindigkeit
      wind_directionGradangabe der Windrichtung (0 = Nordwind)
      wind_speedWindgeschwindigkeit in km/h (mit wind identisch)

    Attribute
    • readingFnAttributes

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
      • 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   -   Setzt die Lautstärke in Prozent (0 bis 100%)
      • volumeStraight -87...15   -   Setzt die Lautstärke in Dezibel (-80.5 bis 15.5 dB) so wie sie am Receiver auch verwendet wird.
      • volumeUp [0...100]   -   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)
      • volumeDown [0...100]   -   Veringert die Lautstärke um 5% oder entsprechend dem Attribut volumeSteps (optional kann der Wert auch als Argument angehangen werden, dieser hat dann Vorang)
      • mute on,off,toggle   -   Schaltet den Receiver stumm
      • 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 99_MyUtils.pm die folgende Funktion:

        sub startNetRadio
        {
          fhem "set AV_Receiver on";
          sleep 5;
          fhem "set AV_Receiver input netradio";
          sleep 4;
          fhem "set AV_Receiver remoteControl enter";
          sleep 2;
          fhem "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..

      Nun kann man diese Funktion in der FHEM Kommandozeile oder in notify-Definitionen wie folgt verwenden.:

        {startNetRadio()}


    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:
    • 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)
    • 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)
    • state - Der aktuelle Schaltzustand (power-Reading) oder die Abwesenheit des Gerätes (mögliche Werte: "on", "off" oder "absent")


    • 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

    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


    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


      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",...)
    • 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)
    • 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
    • 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

    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.

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> <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.
        <timedet> ist entweder HH:MM, HH:MM:SS oder {perlfunc()}, wobei perlfunc HH:MM or HH:MM:SS zurückgeben muss. Hinweis: {perlfunc()} darf keine Leerzeichen enthalten.

      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
      N/A

    Get
      N/A

    Attribute
    • disable
      Deaktiviert das entsprechende Ger&aauml;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.:
        23:00-24:00 00:00-01:00

    • 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
      N/A

    Get
      N/A

    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.

    • 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

    createlog
      Dieser Befehl wird für ein manuelles Hinzufügen eines Logfile oder eines SVG zu einem vorhandenen Gerät verwendet.

      Dieser Befehl ist Bestandteilteil des autocreate-Modules.

    usb
      Verwendung:
        usb scan
        usb create
      Dieser Befehl durchsucht das /dev-Verzeichnis nach angeschlossenen USB-Geräten und versucht gleichzeitig sie zu identifizieren. Mit dem Argument scan wird eine Liste von ausführbaren fhem-Befehlen zurückgegeben. Das Argument create gibt keine Liste o.ä. zurück, die Geräte werden stattdessen erzeugt.

      Es ist zu beachten, dass ein CUL immer noch manuell in den HomeMatic-Modus umgeschaltet werden muss.

      Unter Linux wird gleichzeitig mit dem lsusb-befehl überprüft, ob nichtgeflashte CULs angeschlossen sind. Ist dies der Fall, ruft Linux CULflash mit den geeigneten Parametern auf (oder zeigt den CULflash-Befehl an, falls scan aufgeführt wurde). Pro usb Befehl wird nur ein Gerät geflasht.

      Dieser Befehl ist Bestandteilteil des autocreate-Modules.

average

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: average

backup

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: backup

cloneDummy

    Definiert einen Clon eines Devices oder von FHEM2FHEM im Logmodus uebergebenen Devices und uebernimmt dessen Readings. Sinnvoll um entfernte FHEM-Installationen lesend einzubinden, zum Testen oder Programmieren.

    Define
      define <name> cloneDummy <Quelldevice> [reading]

      Aktiviert den cloneDummy, der dann an das Device <Quelldevice> gebunden ist. Mit dem optionalen Parameter reading wird bestimmt, welches reading im STATE angezeigt wird, stateFormat ist auch weiterhin möglich.
        Beispiel: Der cloneDummy wird lesend an den Sensor OWX_26_09FF26010000 gebunden und zeigt im State temperature an.
        define Feuchte cloneDummy OWX_26_09FF26010000 temperature

    Set
      N/A

    Get
      N/A

    Attributes
    • clonIgnore
      Eine durch Kommata getrennte Liste der readings, die cloneDummy nicht in eigene readings umwandelt

    • readingFnAttributes

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

    Seit version 5079 unterstützt fhem die Verwendung einer SQL Datenbank zum Abspeichern der kompletten Konfiguration
    Dadurch kann man auf alle cfg Dateien, includes usw. verzichten und die daraus immer wieder resultierenden Probleme vermeiden.
    Desweiteren gibt es damit eine Versionierung von Konfigurationen und die Möglichkeit, jederzeit eine ältere Version wiederherstellen zu können.
    Der Zugriff auf die Datenbank erfolgt über die perl-eigene Datenbankschnittstelle DBI.

    Voraussetzungen / Installation

    • Bitte das perl Paket Text::Diff installieren, falls noch nicht auf dem System vorhanden.

    • Es muss eine SQL Datenbank verfügbar sein, untsrstützt werden SQLITE, MYSQL und POSTGRESQLL.

    • Das zum Datenbanktype gehörende DBD Modul muss in perl installiert sein,
      für sqlite3 auf einem Debian System z.B. das Paket libdbd-sqlite3-perl

    • Eine leere Datenbank muss angelegt werden, z.B. in sqlite3:
      	mba:fhem udo$ sqlite3 configDB.db
      
      	SQLite version 3.7.13 2012-07-17 17:46:21
      	Enter ".help" for instructions
      	Enter SQL statements terminated with a ";"
      	sqlite> pragma auto_vacuum=2;
      	sqlite> .quit
      
      	mba:fhem udo$ 
      			
    • Die benötigten Datenbanktabellen werden automatisch angelegt.

    • Eine Konfigurationsdatei für die Verbindung zur Datenbank muss angelegt werden.

      WICHTIG:

      • Diese Datei muss den Namen "configDB.conf" haben
      • Diese Datei muss im fhem Verzeichnis liegen, z.B. /opt/fhem

      ## für MySQL
      ################################################################
      #%dbconfig= (
      #	connection => "mysql:database=configDB;host=db;port=3306",
      #	user => "fhemuser",
      #	password => "fhempassword",
      #);
      ################################################################
      #
      ## für PostgreSQL
      ################################################################
      #%dbconfig= (
      #        connection => "Pg:database=configDB;host=localhost",
      #        user => "fhemuser",
      #        password => "fhempassword"
      #);
      ################################################################
      #
      ## für SQLite (username and password bleiben bei SQLite leer)
      ################################################################
      #%dbconfig= (
      #        connection => "SQLite:dbname=/opt/fhem/configDB.db",
      #        user => "",
      #        password => ""
      #);
      ################################################################
      			

    Aufruf mit einer vollständig neuen fhem Installation

      Sehr einfach... fhem muss lediglich folgendermassen gestartet werden:

        perl fhem.pl configDB

      configDB ist das Schlüsselwort, an dem fhem erkennt,
      dass eine Datenbank für die Konfiguration verwendet werden soll.

      Das war es schon. Alle Befehle (save, rereadcfg etc) arbeiten wie gewohnt.

    oder:

    übertragen einer bestehenden fhem Konfiguration in die Datenbank

      Auch sehr einfach...

    • fhem wird zum letzten Mal mit der fhem.cfg gestartet

        perl fhem.pl fhem.cfg


    • Bestehende Konfiguration in die Datenbank übertragen

        configdb migrate

        in die Befehlszeile der fhem-Oberfläche eingeben


      Nicht die Geduld verlieren! Die Migration eine Weile dauern, speziell bei Mini-Systemen wie
      RaspberryPi or Beaglebone.
      Am Ende der Migration wird eine aktuelle Datenbankstatistik angezeigt.
      Die ursprüngliche Konfigurationsdatei wird bei diesem Vorgang nicht angetastet.

    • fhem beenden.

    • fhem mit dem Schlüsselwort configDB starten

        perl fhem.pl configDB

    • configDB ist das Schlüsselwort, an dem fhem erkennt,
      dass eine Datenbank für die Konfiguration verwendet werden soll.

      Das war es schon. Alle Befehle (save, rereadcfg etc) arbeiten wie gewohnt.


    Zusätzliche Funktionen

      Es wird ein neuer Befehl configdb bereitgestellt,
      der mit verschiedenen Parametern aufgerufen werden kann.

    • configdb attr [attribute] [value]

    • Hiermit lassen sich attribute setzen, die das Verhalten von Front- und Backend beeinflussen.

      configdb attr private 1 - setzt das Attribut 'private' auf den Wert 1.

      configdb attr private - löscht das Attribut 'private'

      configdb attr - zeigt alle gespeicherten Attribute

      Im Moment ist nur ein Attribut definiert. Wenn 'private' auf 1 gesetzt wird, werden bei 'configdb info'
      keine Benutzer- und Passwortdaten angezeigt.


    • configdb backup

    • Ersetzt den Standard-Backup-Befehl von fhem, da dieser bei Verwendung von configDB nicht mehr
      zur Verfügung steht.

      Wichtig:
      Für die Sicherung der Datenbank ist der Anwender selbst verantwortlich!
      Der backup Befehl kann diese Aufgabe nicht übernehmen.
      Ausnahme: Nutzer einer im fhem Verzeichnis liegenden sqlite Datenbank profitieren von der Einfachheit
      dieser Datenbank, denn das fhem Verzeichnis wird ohnehin komplett gesichert.

    • configdb diff <device> <version>

    • Vergleicht die Konfigurationsdaten des Gerätes <device> aus der aktuellen Version 0 mit den Daten aus Version <version>
      Beispielaufruf:

      configdb diff telnetPort 1

      liefert ein Ergebnis ähnlich dieser Ausgabe:
      compare device: telnetPort in current version 0 (left) to version: 1 (right)
      +--+--------------------------------------+--+--------------------------------------+
      | 1|define telnetPort telnet 7072 global  | 1|define telnetPort telnet 7072 global  |
      * 2|attr telnetPort room telnet           *  |                                      |
      +--+--------------------------------------+--+--------------------------------------+
    • configdb export <zielDateiname> [version];

    • Exportiert die angegebene Version aus der Konfigurationsdatenbank in die Datei <zielDateiname>
      Standardversion, falls nicht angegeben = 0
      Die Zieldatei kann später für die Wiederherstellung verwendet werden.

    • configdb info

    • Liefert eine Datenbankstatistik
      --------------------------------------------------------------------------------
       configDB Database Information
      --------------------------------------------------------------------------------
       dbconn: SQLite:dbname=/opt/fhem/configDB.db
       dbuser: 
       dbpass: 
       dbtype: SQLITE
      --------------------------------------------------------------------------------
       fhemconfig: 7707 entries
      
       Ver 0 saved: Sat Mar  1 11:37:00 2014 def: 293 attr: 1248
       Ver 1 saved: Fri Feb 28 23:55:13 2014 def: 293 attr: 1248
       Ver 2 saved: Fri Feb 28 23:49:01 2014 def: 293 attr: 1248
       Ver 3 saved: Fri Feb 28 22:24:40 2014 def: 293 attr: 1247
       Ver 4 saved: Fri Feb 28 22:14:03 2014 def: 293 attr: 1246
      --------------------------------------------------------------------------------
       fhemstate: 1890 entries saved: Sat Mar  1 12:05:00 2014
      --------------------------------------------------------------------------------
      
      Ver 0 bezeichnet immer die aktuell verwendete Konfiguration.

    • configdb list [device] [version]

    • Sucht das Gerät [device] in der Konfiguration der Version [version]
      in der Datenbank.
      Standardwert für [device] = % um alle Geräte anzuzeigen
      Standardwert für [version] = 0 um Geräte in der aktuellen Version anzuzeigen.
      Beispiele für gültige Aufrufe:

      configdb list
      configdb list global
      configdb list '' 1
      configdb list global 1

    • configdb recover <version>

    • Stellt eine ältere Version aus dem Datenbankarchiv wieder her.
      set configDB recover 3 kopiert die Version #3 aus der Datenbank zur Version #0.
      Die ursprüngliche Version #0 wird dabei gelöscht.

      Wichtig!
      Die zurückgeholte Version wird NICHT automatisch aktiviert!
      Ein rereadcfg oder - besser - shutdown restart muss manuell erfolgen.


  • configdb reorg [keep]

  • Löscht alle gespeicherten Konfigurationen mit Versionsnummern größer als [keep].
    Standardwert für den optionalen Parameter keep = 3.
    Mit dieser Funktion läßt sich eine nächtliche Reorganisation per at umsetzen.

  • configdb uuid

  • Liefert eine uuid, die man für eigene Zwecke verwenden kann.

    Hinweise

    • Im Verzeichnis contrib/configDB befinden sich zwei Vorlagen für Datenbank und Konfiguration,
      die durch einfaches Kopieren in das fhem Verzeichnis sofort verwendet werden können (Nur für sqlite!).

    • Der Menüpunkt "Edit files"->"config file" wird bei Verwendung von configDB nicht mehr angezeigt.

    • Beim Speichern einer Konfiguration nicht ungeduldig werden (egal ob manuell oder durch Klicken auf "save config")
      Durch das Schreiben der Versionsinformationen dauert das ein paar Sekunden.
      Der Abschluss des Speichern wird durch eine entsprechende Meldung angezeigt.

    • Diese Erweiterung wird laufend weiterentwickelt. Speziell an der Verbesserung der Performance wird gearbeitet.

    • Viel Spass!

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
      N/A

    Get
      N/A

    Attributes
    • disable
    • 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
      N/A

    Attributes
    • 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.cgi 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 und "branch"
    • Definierte Module (nur offizielle FHEM Module werden ermittelt)
    • Definierte Modelle je Modul

    Beispiel:
          fhem> fheminfo
          Fhem info:
            Release  : 5.3
            Branch   : DEVELOPMENT
            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.

    • uniqueID
      Eine zufällig generierte ID (16 Paare aus Hash Werten), z.B. 87c5cca38dc75a4f388ef87bdcbfbf6f welche den übertragenen Daten zur Vermeidung von doppelten Einträge zugewiesen wird.
      Die uniqueID wird automatisch in einer Datei namens FHemUtils/uniqueID im FHEM Modulverzeichnis gespeichert.
      WICHTIGER HINWEIS:
      Jede Installation von FHEM sollte seine eigene eindeutige ID haben.
      Bitte diese Datei nicht verändern, verschieben oder löschen! Diese Datei sollte immer gesichert (wird normalerweise automatisch durch den update Befehl erledigt) und bei einer Neuinstallation auf der gleichen Hardware im gleichen Verzeichnis (FhemtUtils im FHEM Modulverzeichnis) wieder hergestellt werden. Dies verhindert doppelte Einträge identischer Installationen auf der gleichen Hardware in der Statistik.
      Anderfalls, sollten bitte für jede Installation auf unterschiedlicher Hardware eigene IDs genutzt werden, z.B. eine zufällig erzeugte ID für FRITZ!Box, eine weitere für den ersten Raspberry Pi, eine weitere für einen zweiten Raspberry Pi, usw.
      Vielen Dank für die Unterstützung!

    • 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.

geodata

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: geodata

holiday

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: holiday

mailcheck

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: mailcheck

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

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: notify

openweathermap

    Sorry, keine deutsche Dokumentation vorhanden.

    Die englische Doku gibt es hier: openweathermap

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

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

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.

sequence

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: sequence

speedtest

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: speedtest

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
    • 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 kuecheentweder den Status An oder Aus an. Die Struktur haus nimmt entweder den Status Any_on oder All_off an. Sobald ein Device der Struktur haus den Status An hat nimmt die Struktur den Status Any_On an. Um dagegen den Status All_off anzunehmen, müssen alle Devices dieser Struktur auf off stehen.
    • <struct_type>_map
      Mit diesem Attribut, das dem Struktur-Mitglied zugewiesen werden muss, koennen die Werte, die die einzelnen Struktur- Mitglieder melden, umdefiniert werden, damit man unterschiedliche Geraeteklassen zusammenfassen kann. Es existieren drei Varianten:
      • readingName
        nehme den Wert von readingName anstatt von state
      • oldVal:newVal
        falls der Wert der state Reading oldVal (als regex) ist, dann ersetze diesen mit newVal.
      • readingName:oldVal:newVal
        falls der Wert der readingName oldVal (als regex) ist, dann ersetze diesen mit newVal.
      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
      N/A

    Get
      N/A

    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.

    • 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.

update

    FHEM aktualisieren / auf Aktualisierungen prüfen:
    update [development|stable] [<Date|Paket>] [force]
    update [development|stable] check
    update housekeeping

    Aktualisierung eines Fremdpaketes / Fremdpaket auf Aktualisierungen prüfen:
    update thirdparty <url> <Paketname> [force]
    update thirdparty <url> <Paketname> check

    Die installierte FHEM Distribution und deren Erweiterungen (z.B. das Web-Interface PGM2 (FHEMWEB)) werden mit diesem Befehl über ein Online Repository aktualisiert. Enthält das Repository neuere Dateien oder Dateiversionen als die lokale Installation, werden die aktualisierten Dateien aus dem Repository installiert.

    Die Update-Funktion unterstützt erweiterte Distributions Informationen sowie die Steuerung über spezielle Befehle zum aktualisieren, verschieben oder umbenennen von bestehenden Dateien. Neue Verzeichnisstrukturen können ebenfalls über die Aktualisierung erzeugt werden. Die Aktualisierung erfolgt exklusiv im Verzeichnispfad der über das globale Attribut "modpath" gesetzt wurde (Ausnahme: fhem.pl). Der Anwender kann die Aktualisierung wahlweise aus dem stabilen (stable) oder Entwicklungs-Zweig (development) vornehmen lassen. Ein Aktualisierung erfolgt zur Zeit ausschliesslich nur über den Entwicklungs-Zweig (development).

    Weiterhin unterstützt der update Befehl die manuelle Installation von Paketen die Bestandteil der FHEM Distribution sind. Aktuell werden noch keine erweiterten FHEM Pakete bereitgestellt.

    Der update Befehl unterstützt auch die Installation von Paketen die kein Bestandteil der FHEM Distribution sind. Diese Pakete können z.B. von Entwicklern angebotene Module oder Benutzerinterfaces beinhalten.

    Hinweis für Anbieter von zusätzlichen Paketen:
    Weiterführende Informationen zur Bereitstellung von Paketen sind der Datei 'docs/LIESMICH.update-thirdparty' zu entnehmen.

    Beispiele:
    Auf neue Aktualisierungen prüfen:
        fhem> update check
        
    FHEM aktualisieren:
        fhem> update
        
    FHEM Aktualisierung erzwingen (alle Dateien werden aktualisiert!):
        fhem> update force
        
    Eine einzelne Datei aktualisieren:
        fhem> update 98_foobar.pm
        
    Nach einem Dateinamen suchen:
        fhem> update backup
        'backup' not found. Did you mean:
        ==> 98_backup.pm
        nothing to do...
        
    Aktualisierung oder Installation eines Fremdpaketes:
        fhem> update thirdparty http://domain.tld/path paketname
        
    Fremdpaket auf neue Aktualisierungen prüfen:
        fhem> update thirdparty http://domain.tld/path paketname check
        
    Attribute
    • backup_before_update

    • exclude_from_update

    • updatebranch

watchdog


    Define
      define <name> watchdog <regexp1> <timespec> <regexp2> <command>

      Startet einen beliebigen fhem.pl 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.

    Set
      N/A

    Get
      N/A

    Attributes
    • 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.

=end html =cut

weblink

    Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: weblink

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

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)

    • 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.
      • 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.