fhem.pl Referenz

Version: EN DE

Inhalt

    Einleitung
    FHEM Befehls-Typen
    Geräte-Spezifikation

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

    Geräte
      global

    Hilfs (Erweiterungs-) Module
      at   autocreate   average   Calendar   DbLog   dewpoint   dummy   eventTypes   FHEM2FHEM   FHEMWEB   FB_CALLMONITOR   FileLog   FLOORPLAN   HCS   Heating_Control   holiday   LightScene   notify   PID   PRESENCE   PachLog   SUNRISE_EL   sequence   structure   telnet   Twilight   THRESHOLD   watchdog   weblink   WOL  

    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
     Befehle können entweder direkt eingegeben oder aus seiner 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, deleteattr,delete, get, list, set, setstate, können eine komplexere Gerätespezifikation als Argumente enthalten, die auch eine Anzahl von Geräten betreffen kann. Eine Gerätespezifikation (Kurzfassung) kann z.B. so aussehen:

    • ein einzelner Gerätename. Dies ist der meist vorkommende Fall.
    • eine Liste von Gerätenamen, durch Kommata (,) getrennt
    • ein Bereich, durch ein Minuszeichen getrennt (-)
    • ein regulärer Ausdruck der eines der folgenden Zeichen enthält: ^*[]$
    • ein Geräteattribut, gefolgt von einem Gleichheitszeichen (=) und einem regulären Ausdruck für dieses Attribut. Als Attribut können Sie entweder Attribute die mittels "attr"-Befehl oder eines der "internen" Attribute wie DEF, STATE oder TYPE angeben.
     

    Beispiele:

      set lamp1 on
      set lamp1,lamp2,lamp3 on
      set lamp[1-3] on
      set lamp.* on
      set lamp1-lamp3 on
      set lamp1-lamp3,lamp3 on
      set room=kitchen off
      list disabled=
      list TYPE=FS20
    Bemerkungen:
     
    • zuerst wird die durch Kommata getrennte Spezifikation abgearbeitet, dann folgen die Bereichsspezifikationen und die regulären Ausdrücke
    • wenn für ein Gerät eine Spezifikation exakt zutrifft, werden keine weiteren Vergleiche vorgenommen.
    • die Befehlszeile kann die selbe Gerätebezeichnung mehrfach enthalten z.B.: "set lamp1-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. Bitte lesen Sie das Kapitel Device specification  um Detail-Informationen zu <devspec> zu erhalten.

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

    • 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. Verwendbar unter web-pgm2 und web-pgm3. Ein Geräte 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, es sei denn Sie berücksichtigen FHEMWEB attribute to selectively disable rooms for certain FHEMWEB instances.
    • group
      Gerätegruppen, anwendbar unter web-pgm2 (Modul FHEMWEB) zeigt Geräte die in die gleiche Gruppe gehören auch in einer gemeinsamen Box an. Das benutzt man, um später Geräte zu gruppieren. 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 Webfrontend pgm2 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:

      • Wenn beide Attribute nicht gesetzt sind erzeugt jede Aktualisierung eines jeden "readings" eines Gerätes ein Ereignis.
      • Wenn eines der Attribute gesetzt ist, erzeugen nur Updates oder änderungen von "readings" die nicht in einem der Attribute gesetzt sind ein Ereignis.
      • Wenn ein "reading" in event-on-update-reading aufgeführt ist, erzeugt eine Aktualisierung ein Ereignis unabhängig ob das "reading" auch in event-on-change-reading aufgelistet ist.

    • 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
      A comma-separated list of definitions of user-defined readings. Each definition has the form <reading> [<modifier>] { <perl code> }. After a single or bulk readings update, the user-defined readings are set by evaluating the perl code { <perl code> } for all definitions and setting the value of the respective user-defined reading <reading> to the result.

      Examples:
      attr myEnergyMeter userReadings energy { ReadingsVal("myEnergyMeter","counters.A",0)/1250.0;; }
      attr myMultiMeter userReadings energy1 { ReadingsVal("myMultiMeter","counters.A",0)/1250.0;; }, energy2 { ReadingsVal("myMultiMeter","counters.B",0)/1250.0;; }

      <modifier> can take one of these values:
      • none: the same as it would not have been given at all.
      • difference: the reading is set to the difference between the current and the previously evaluated value.
      • differential: the reading is set to the difference between the current and the previously evaluated value divided by the time in seconds between the current and the previous evaluation. Granularity of time is one second. No value is calculated if the time past is below one second. Useful to calculate rates.

      Example:
      attr myPowerMeter userReadings power differential { ReadingsVal("myPowerMeter","counters.A",0)/1250.0;; }

      Note: user readings with modifiers difference and differential store the calculated values internally. The user reading is set earliest at the second evaluation. Beware of stale values when changing definitions!


    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. Lesen Sie sich bitte den Abschnitt Device specification  für Details von <devspec> durch.
    Nach dem löschen, wird das globale Ereignis "DELETED" erzeugt. Lesen Sie bitte den Abschnitt zu "notify" für genauere Informationen durch.
    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). Lesen Sie bitte den  Device specification Abschnitt für <devspec> durch.

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

deletereading

    deletereading <devspec> <readingname>

    Delete the reading <readingname> for a device. <readingname> is a perl regular expression that must match the whole name of the reading. Use with greatest care! FHEM might crash if you delete vital readings of a device. See the Device specification section for details on <devspec>.

    Examples:
      deletereading mySensor temp1
      deletereading mySensor temp\d+

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> ?
    Lesen Sie den Abschnitt Device specification für Details zu <devspec> durch.

    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. Bitte lesen Sie den Abschnitt Device specification für Details zu <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> ?
    Lesen Sie bitte den Abschnitt Device specification für Details zu <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

setstate

    setstate <devspec> <value>

    Der Befehl setzt den "STATUS" für <name> , wie im Befehl list beschrieben, auf den Wert <value> ohne an das Gerät ein Signal zu senden. Dieser Befehl wird auch im statefile benutzt. Lesen Sie bitte den Abschnitt Device specification  für Details zu <devspec>.

    Examples:
      setstate lamp on
    Note:
    • The statefile uses another version of this command, don't be surprised.

shutdown

    shutdown [restart]

    Der Befehl fährt den Server herunter (nach dem sichern der state information ). Er triggert das global:SHUTDOWN Ereignis. Wenn der optionale Parameterv restart angegeben, versucht FHEM von selbst wieder zu starten.

    Beispiel:
      shutdown
      shutdown restart

trigger

    trigger <devspec> <state>

    Triggert eine notify Definition. Lesen Sie bitte den Abschnitt Device specification  für Details zu <devspec>.

    Beispiel:
      trigger btn3 on

sleep

    sleep <sec>

    Stoppt die Befehlsabarbeitung für die angegebene Anzahl von Millisekunden.

    Beispiel:
      sleep 0.5
      define n3 notify btn3.* set lamp toggle;;sleep 0.5;;set lamp toggle

    Bemerkung: sleep gefolgt von einem weiteren Befehl und angegeben in at/notify/etc blockiert die Abarbeitung von FHHM nicht.

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.

    • 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 gesetzt ist und der "-" Eintrag bei "logfile", dann wird nicht im Hintergrund abgearbeitet. Dieses Attribut ist bei einigen FHEM Installationen auf FRITZ!-Boxen notwendig.

    • 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 und verschiedene at Information gespeichert werden  bevor der Server heruntergefahren wird. Fall 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.

    • verbose
      Setzt den Wert für die Häufigkeit/Intensität von Nachrichten. Mögliche Werte sind:
      • 0 - Server start/stop
      • 1 - Fehlermeldungen oder unbekannte Pakete
      • 2 - bedeutende Ereigbisse/Alarme.
      • 3 - ausgesendete Kommandos werden gelogged.
      • 4 - Sie sehen was von den einzelnen Geräten empfangen wird.
      • 5 - Fehlersuche.
      Es wird der Wert 3 für den Normalgebrauch empfohlen.

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

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.
    Die weitere 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 allgemeine 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") }
  • 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.