fhem.pl Referenz

Version: EN DE

Zum Anfang

Komplette Doku laden

Deutsche Englische Doku für laden

Inhalt

    Einleitung
    FHEM Befehls-Typen
    Geräte-Spezifikation
    Attribute

    FHEM-Befehle
      apptime   attr   backup   cancel   cmdalias   configdb   copy   count   createlog   CULflash   define   defmod   delete   deleteattr   deletefile   deletereading   displayattr   fhemdebug   fheminfo   get   help   HMtemplate   IF   include   inform   JsonList   JsonList2   list   modify   MSG   notice   quit   reload   rename   rereadcfg   restore   save   set   setdefaultattr   setreading   setstate   shutdown   sleep   trigger   update   usb   version   XmlList  

    Geräte
      global
      alexa   ALL3076   ALL4000T   ALL4027   allergy   AMAD   ArduCounter   BDKM   BOSEST   BRAVIA   BS   Calendar   CALVIEW   CM11   CO20   ComfoAir   CUL   CUL_EM   CUL_FHTTK   CUL_HM   CUL_HOERMANN   CUL_IR   CUL_MAX   CUL_REDIRECT   CUL_RFR   CUL_TCM97001   CUL_TX   CUL_WS   dash_dhcp   DLNARenderer   Dooya   DUOFERN   DUOFERNSTICK   EC3000   ECMD   ECMDDevice   EDIPLUG   EGPM   EGPM2LAN   EIB   EleroDrive   EleroStick   EM   EMEM   EMGZ   EMT7110   EMWZ   ENECSYSGW   ENECSYSINV   ENIGMA2   EnOcean   EQ3BT   ESA2000   fakeRoku   FBAHA   FBAHAHTTP   FBDECT   FHT   FHT8V   FHZ   FRAMEBUFFER   FReplacer   FRITZBOX   FRM   FRM_AD   FRM_I2C   FRM_IN   FRM_LCD   FRM_OUT   FRM_PWM   FRM_RGB   FRM_ROTENC   FRM_SERVO   FRM_STEPPER   FS20   FTUISRV   GAEBUS   GHoma   harmony   HEATRONIC   Hideki   HMCCU   HMCCUCHN   HMCCUDEV   HMLAN   HMS   HMUARTLGW   HOMBOT   HP1000   HTTPMOD   HUEBridge   HUEDevice   HXB   HXBDevice   Hyperion   I2C_BH1750   I2C_BME280   I2C_BMP180   I2C_DS1307   I2C_EEPROM   I2C_HDC1008   I2C_K30   I2C_LCD   I2C_MCP23008   I2C_MCP23017   I2C_MCP342x   I2C_MMA845X   I2C_PCA9532   I2C_PCA9685   I2C_PCF8574   I2C_SHT21   I2C_SHT3x   I2C_TSL2561   IPCAM   IPWE   IT   Itach_IR   Itach_IRDevice   Itach_Relay   Jabber   JawboneUp   JeeLink   JSONMETER   KeyValueProtocol   km200   KM273   KNX   KODI   KOPP_FC   KOSTALPIKO   KS300   LaCrosse   LaCrosseGateway   Level   LGTV   LGTV_IP12   LIGHTIFY   LINDY_HDMI_SWITCH   LIRC   LUXTRONIK2   M232   M232Counter   M232Voltage   mailcheck   MAX   MAXLAN   MEDIAPORTAL   MilightBridge   MilightDevice   Modbus   ModbusAttr   ModbusSET   ModbusTrovis5576   MPD   MQTT   MQTT_BRIDGE   MQTT_DEVICE   MSGFile   MSGMail   MYSENSORS   MYSENSORS_DEVICE   N4HBUS   N4HMODULE   netatmo   NetIO230B   Netzer   NetzerI2C   Nextion   NUKIBridge   NUKIDevice   NUT   OBIS   ONKYO_AVR   ONKYO_AVR_ZONE   OPENWEATHER   OREGON   OWAD   OWCOUNT   OWDevice   OWFS   OWID   OWLCD   OWMULTI   OWServer   OWSWITCH   OWTEMP   OWTHERM   OWVAR   OWX   OWX_ASYNC   panStamp   PCA301   PHILIPS_AUDIO   PHTV   PID20   PIFACE   pilight   pilight_contact   pilight_ctrl   pilight_dimmer   pilight_raw   pilight_smoke   pilight_switch   pilight_temp   ping   PIONEERAVR   PIONEERAVRZONE   plex   Plugwise   POKEYS   PROPLANTA   Pushalot   Pushbullet   PushNotifier   Pushover   Pushsafer   PW_Circle   PW_Scan   PW_Sense   PW_Switch   PWM   PWMR   QRCode   Revolt   RFXCOM   RFXMETER   RFXX10REC   Robonect   RPI_GPIO   RPII2C   rssFeed   S7   S7_ARead   S7_AWrite   S7_Client   S7_DRead   S7_DWrite   S7_S5Client   S7_S7Client   SCIVT   SD_WS   SD_WS07   SD_WS09   SD_WS_Maverick   SHC   SHCdev   SIGNALduino   SIGNALduino_un   siri   SIS_PMS   SISPM   SMAEM   SMAInverter   SMARTMON   SMASTP   SML   Snapcast   SOMFY   SONOS   SONOSPLAYER   speedtest   SSCam   STACKABLE_CC   STOCKQUOTES   STV   SWAP   SWAP_0000002200000003   SWAP_0000002200000008   SYSMON   SYSSTAT   tahoma   TCM   TechemHKV   TechemWZ   TEK603   TelegramBot   TellStick   THINKINGCLEANER   THZ   TPLinkHS110   TRAFFIC   TRX   TRX_ELSE   TRX_LIGHT   TRX_SECURITY   TRX_WEATHER   TUL   UbiquitiMP   UbiquitiOut   Unifi   UNIRoll   USBWX   USF1000   UWZ   VantagePro2   VBUSDEV   VBUSIF   VCONTROL   Verkehrsinfo   VIERA   VolumeLink   Weather   WEBCOUNT   WEBIO   WEBIO_12DIGITAL   WifiLight   withings   WMBUS   WS2000   WS300   WS3600   Wunderground   WWO   X10   XBMC   XiaomiFlowerSens   xxLG7000   YAMAHA_AVR   YAMAHA_BD   YAMAHA_NP   yowsup   ZWave   ZWCUL   ZWDongle  

    Hilfs (Erweiterungs-) Module
      Alarm   allowed   at   autocreate   average   cloneDummy   configDB   CustomReadings   Dashboard   DbLog   DbRep   dewpoint   DOIF   DOIFtools   dummy   ElectricityCalculator   eventTypes   FB_CALLLIST   FB_CALLMONITOR   FHEM2FHEM   FHEMWEB   FileLog   FLOORPLAN   GasCalculator   GEOFANCY   GoogleAuth   GUEST   HCS   Heating_Control   HMinfo   holiday   HourCounter   HTTPSRV   InfoPanel   KM271   LightScene   logProxy   MaxScanner   msgConfig   notify   PachLog   PostMe   powerMap   PRESENCE   rain   RandomTimer   readingsChange   readingsGroup   readingsHistory   readingsProxy   remotecontrol   RESIDENTS   ROOMMATE   RSS   sequence   statistics   structure   SUNRISE_EL   SVG   telnet   Text2Speech   THRESHOLD   TrashCal   Twilight   Utils   watchdog   weblink   WeekdayTimer   weekprofile   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

    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, muss NAME!=WERT verwendet werden. Um die Suche einzugrenzen, kann man als Praefix i: für internal Werte, r: für Reading-Namen und a: für Attribute verwenden, siehe das Beispiel unten.
    • 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
      list i:TYPE=FS20 STATE
    Bemerkungen:
    • die Spezifikation kann keine Leerzeichen enthalten.
    • falls ein Gerätename exakt dem Spezifikation entspricht, dann werden keine reguläre Ausdrücke oder Filter ausgewertet.
    • zuerst wird die durch Komma getrennte Spezifikation abgearbeitet, dann folgen die regulären Ausdrücke und die Filter
    • die Befehlszeile kann die selbe Gerätebezeichnung mehrfach enthalten z.B.: "set lamp3,lamp3 on". Lamp3 wird hier zwei Mal eingeschalten.
    • um Strukturen mit komplexeren Anforderungen zu realisieren lesen Sie bitte den Abschnitt zu structure.

Attribute

Alle Geräte haben Attribute. Diese werden mittels des Befehls attr gesetzt, angezeigt mit dem Befehl displayattr, und mit dem Kommando deleteattr entfernt.

Es gibt globale Attribute, die von allen Geräten genutzt werden, und lokale Attribute, die nur auf individuelle Geräteklassen zutreffen.

Manche Geräte (wie FHEMWEB) definieren automatisch neue globale Attribute bei der ersten Definition eines Gerätes dieses Typs.

Sie können den Befehl

attr global userattr <attributelist>

für das Gerät global verwenden, um neue globale Attribute zu deklarieren, und

attr <devicespec> userattr <attributelist>,

um neue lokale Attribute für bestimmte individuelle Geräte gemäß devspec zu deklarieren. <attributelist> ist eine durch Leerzeichen getrennte Liste, die die Namen der zusätzlichen Attribute enthält. In der Dokumentation zum Befehl attr sind Beispiele.

Seien Sie vorsichtig und überschreiben Sie keine zusätzlichen globale Attribute, die bereits zuvor durch Sie selbst oder ein Gerät definiert wurden. attr global userattr <attributelist> sollte so früh wie möglich in der Konfiguration erscheinen.

Gerätespezifische Attribute

Gerätespezifische Attribute sind in dem jeweiligen Abschnitt zum Gerät dokumentiert.

Globale Attribute für alle Geräte

  • alias
    Wird in FHEMWEB benutzt, um ein en anderen Namen für ein Gerät anzuzeigen z.B. wenn Sonderzeichen/Leerzeichen nicht in der Gerätedefinition verwendet werden können.

  • comment
    Fügt einen beliebigen Kommentar hinzu.

  • eventMap
    Ersetze Event Namen und setze Argumente. Der Wert dieses Attributes besteht aus einer Liste von durch Leerzeichen getrennte Werten. Jeder Wert ist ein durch Doppelpunkt getrenntes Paar. Der erste Teil stellt den "alten" Wert, der zweite Teil den "neuen" Wert dar. Wenn der erste Wert ein Slash (/) oder ein Komma (,) ist, dann wird nicht durch Leerzeichen sondern durch das vorgestellte Zeichen getrennt. Beispiele:
      attr store eventMap on:open off:closed
      attr store eventMap /on-for-timer 10:open/off:closed/
      set store open
    Die explizite Variante dieses Attributes hat folgenden Syntax:
      attr store eventMap { dev=>{"on"=>"open"}, usr=>{"open"=>"on"} }
      attr store eventMap { dev=>{"^on(-for-timer)?(.*)"=>"open$2"}, usr=>{"^open(.*)"=>"on$1"}, fw=>{"^open(.*)"=>"open"} }
    Diese Variante muss dann verwendet werden, falls das Mapping nicht symmetrisch ist. Der erste Teil (dev) spezifiziert dabei die Richtung Gerät zu Benutzer, d.h. falls das Gerät on 100 oder on-for-timer 100 meldet, dann wird der Benutzer open 100 zu sehen bekommen. Der zweite Teil (usr) spezifiziert die Richtung Benutzer zu Gerät, d.h. wenn man "set XX open 100" eingibt, dann wird das Kommando "on 100" an das Gerät gesendet. In beiden Fällen wird der Schlüssel zuerst direkt, und dann als Regexp mit dem Wert verglichen. Falls man Regexps mit Wildcards im usr Teil verwendet, dann muss man den fw Teil mit dem exakt gleichen Schlüsseln ausfüllen, damit FHEMWEB in der Detail-Ansicht den set-Auswahl richtig anzeigen kann.

  • genericDisplayType
    Wird von bestimmten Frontends (aber nicht FHEMWEB) verwendet, um für das Gerät passende Voreinstellungen (Bild/Befehle/etc) anzubieten. Z.Zt werden folgende Werte unterstützt: switch,outlet,light,blind,speaker,thermostat

  • group
    Gerätegruppen. FHEMWEB zeigt Geräte die in die gleiche Gruppe gehören auch in einer gemeinsamen Box an. Ein Gerät kann zu mehr als einer Gruppe gehören. In diesem Fall müssen die entsprechenden Gruppen durch Kommata getrennt eingetragen werden. Wenn dieses Attribut nicht gesetzt ist, wird der in der Gerätegruppe gesetzte Gerätetyp verwendet.

  • room
    Filtert/gruppiert Geräte. Ein Gerät kann zu mehr als einem Raum zugeordnet werden. In diesem Fall müssen die Raumzuordnungen durch Kommata getrennt angegeben werden.
    Geräte, die dem Raum mit der Bezeichnung "hidden" zugeordnet werden, erscheinen nicht auf der Webseite.

  • showtime
    Wird im FHEMWEB verwendet, um die Zeit der letzten Aktivität anstelle des Status in der Gesamtansicht anzuzeigen. Nützlich z.B. für FS20 PIRI Geräte.

  • suppressReading
    Wird verwendet, um nicht gewollte Readings zu entfernen. Der Wert ist ein Regular Expression, ergänzt mit ^ und $. Wird nur in Ausnahmefällen benötigt.

  • verbose
    Setzt den Schwellwert für die Logfile-Meldungen. Mögliche Werte sind:
    • 0 - Server start/stop
    • 1 - Fehlermeldungen oder unbekannte Pakete
    • 2 - bedeutende Ereigbisse/Alarme.
    • 3 - ausgesendete Kommandos werden gelogged.
    • 4 - von den einzelnen Geräten empfangene Daten.
    • 5 - Fehlersuche.
    Der für die global Instanz gesetzte Wert gilt als Voreinstellung für die Instanzen, die dieses Attribut nicht gesetzt haben.

readingFnAttribute

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

  • stateFormat
    Ändert den Gerätestatus, dies ist z.Bsp. in der Ausgabe des list Kommandos zu sehen, oder in der Raumübersicht von FHEMWEB. Falls nicht gesetzt, dann wird das state Reading übernommen. Sonst werden alle Wörter im Wert des Attributes durch das entsprechende Reading des Gerätes ersetzt (soweit vorhanden). Falls der Wert in {} eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die Auswertung passiert bei jeder Änderung eines Readings.
  • event-on-update-reading
    Wenn nicht gesetzt, erzeugt jede Veränderung eines "readings" ein Ereignis, welches z.B. von notify oder FileLog berücksichtigt wird. Wenn gesetzt erzeugen nur Aktualisierungen der eingetragenen "readings" ein Ereignis.
  • event-on-change-reading
    Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings". Wenn gesetzt, erzeugen nur Veränderungen der gelisteten "readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten "readings" identisch sind, wird kein Ereignis generiert.
    Wenn hinter dem Namen eines "readings" eine :Schwelle angegeben ist, wird das Event nur getriggert wenn die Änderung grösser als diese Schwelle ist.
  • Die unterschiedlichen Bedeutungen von event-on-update-reading und event-on-change-reading sind folgende:
    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 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.
  • timestamp-on-change-reading
    Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings". Wenn gesetzt, werden die Zeitstempel der gelisteten "readings" nicht aktualisiert wenn durch ein ebenfalls gesetztes event-on-change-reading für dieses "reading" kein Ereignis erzeugen würde.
  • event-aggregator
  • The primary uses of this attribute are to calculate (time-weighted) averages of readings over time periods and to throttle the update rate of readings and thus the amount of data written to the logs.

    This attribute takes a comma-separated list of reading:interval:method:function:holdTime quintuples. You may use regular expressions for reading. If set, updates for the listed readings are ignored and associated events are suppressed for a black-out period of at least interval seconds (downsampling). After the black-out period has expired, the reading is updated with a value that is calculated from the values and timestamps of the previously ignored updates within the black-out period as follows:

    functiondescription
    vthe last value encountered
    v0the first value encountered
    minthe smallest value encountered
    maxthe largest value encountered
    meanthe arithmetic mean of all values
    sdthe standard deviation from the mean
    medianthe median of all values (requires holdTime and function none)
    integralthe arithmetic sum (if not time-weighted) or integral area (if time-weighted) of all values
    nnumber of samples
    ttimestamp of the last value
    t0timestamp of the first value

    If method is none, then that's all there is. If method is const or linear, the time-weighted series of values is taken into account instead. The weight is the timespan between two subsequent updates. With the const method, the value is the value of the reading at the beginning of the timespan; with the linear method, the value is the arithmetic average of the values at the beginning and the end of the timespan. Rollovers of black-out periods are handled as one would expect it.

    One would typically use the linear method with the mean function for quantities continuously varying over time like electric power consumption, temperature or speed. For cumulative quantities like energy consumed, rain fallen or distance covered, the none method with the v function is used. The constant method is for discrete quantities that stay constant until the corresponding reading is updated, e.g. counters, switches and the like.

    If the holdTime in seconds is defined, the samples will be kept in memory allowing the calculation of floating statistics instead of blocked statistics. With holdTime defined the interval can be kept undefined so that the readings update rate is unchanged or it can be set to a value less then holdTime for downsampling as described above with a full history of the readings in memory. Note that the historic samples are not persistent and will be lost when restarting FHEM.

    The event aggregator only takes into consideration those updates that remain after preprocessing according to the event-on-update-reading and event-on-change-reading directives. Besides which, any update of a reading that occurs within a timespan from the preceding update that is smaller than the resolution of FHEM's time granularity is ditched.

    When more than one function should be calculated for the same reading, the original reading must be multiplied (e.g. by using a notify) before applying the event-aggregator to the derived readings.

    Examples:
    attr myPowerMeter event-aggregator EP_POWER_METER:300:linear:mean,EP_ENERGY_METER:300:none:v
    attr myBadSensor event-aggregator TEMP::none:median:300
    attr mySunMeter event-aggregator SUN_INTENSITY_24H::const:integral:86400

  • 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.
    • integral: das Gegenteil von differential. Das Ergebnis wird um das Produkt aus der Zeit-Differenz und der Durschnittswert der letzten zwei Readings erhöht.
      result += (time - timeold) * (oldval + value) / 2
    • offset: wenn der aktuellen Wert kleiner als der vorherige Wert ist wird der vorherige Wert zum Reading addiert. Das Reading kann dann als offset verwendet werden um einen Zähler der durch Sromverlust zurückgesetzt wird zu korrigieren.
    • monotonic: wenn die Differenz zw. dem aktuellen und dem vorherigen Wert positiv ist wird diese Differenz zum Reading addiert. Damit lässt sich von einem Zähler der bei Stromverlust zurückgesetzt wird ein monoton wachsender Zähler ableiten.
    Beispiel:
      attr myPowerMeter userReadings power differential { ReadingsVal("myPowerMeter","counters.A",0)/1250.0}
    Achtung:
    • Falls difference oder differential spezifiziert ist, dann werden für die Berechnung ältere Werte benötigt, d.h. der Wert wird frühestens beim zweiten Änderung gesetzt.
    • der Name der definierten Readings besteht aus alphanumerischen Zeichen, Unterstrich (_) und Minus-Zeichen (-).

Allgemeine Attribute

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

  • Attribut "disable" umschalten
    Das Attribut "disable" kann, sofern vom Gerätemodul bereitgestellt,
    mit folgendem Befehl einfach umgeschaltet werden:

    attr <device> disable toggle


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>.
    Gerätespezifische Attribute sind in der Beschreibung zum jeweiligen Gerät aufgeführt. Nach der Durchführung das globale Ereignis "ATTR" wird generiert.
    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.

cancel

    cancel [<id> [quiet]]

    Entfernt ein benanntes sleep.

define

    define [option] <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.
    Nach der Durchführung wird das globale Ereignis "DEFINED" generiert.

    Je nach Typ benötigt man unterscheidliche Argumente, lesen Sie sich bitte die zu dem jeweiligen Gerät gehörenden Abschnitte durch.

    Optionen:
    • -temporary
      Setzt den TEMPORARY Marker, was das Abspeichern dieser Definition in fhem.cfg verhindert.

    • -ignoreErr
      Reduziert die Anzahl der Fehlermeldungen, falls ein FHEM-Modul nicht geladen werden kann. Wird in fhem.cfg.demo verwendet, da das RSS Beispiel etliche, normalerweise nicht installierte perl-Module benötigt.

defmod

    defmod <name> <type> <type-specific>

    Definiert ein Gerät, oder ändert es, falls es exisitiert. Um z.Bsp. eine Lampe 10 Minuten nach der letzten Meldung eines Bewegungsmelders abzuschalten, könnte man folgendes definieren:
      define mdNtfy notify motionDetector defmod mdOff at +00:10 set lamp off
    Falls man statt defmod ein define verwenden würde, dann würde eine Meldung innerhalb von 10 Minuten nach der letzten Meldung zu einem Fehler führen, da mdOff noch existiert.

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>.
    Nach der Durchführung das globale Ereignis "DELETEATTR" wird generiert.
    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. Dieses Befehl sollte nur von Experten verwendet werden.

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]
    oder
    list {-r|-R} devspec


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

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

    Beispiel:
    fhem> list
    
      Type list  for detailed info.
    
      Internal:
        global               (Internal)
    
      FHZ:
        FHZ                  (fhtbuf: 23)
    
      FS20:
        Btn4                 (on-old-for-timer)
        Roll1                (on)
        Stehlampe            (off)
    
      FHT:
        fl                   (measured-temp: 21.1 (Celsius))
    
      KS300:
        out1                 (T: 2.9  H: 74  W: 2.2  R: 8.2  IR: no)
    
      at:
        at_rollup            (Next: 07:00:00)
    
      notify:
        ntfy_btn4            (active)
    
      FileLog:
        avglog               (active)
    
      
    Wenn Sie für name einen Gerätenamen eingeben, dann erhalten Sie einen genauen Status für das in name angegebene Gerät angezeigt, z.B.:
      fhem> list fl
    
      Internals:
        CODE       5102
        DEF        5102
        NAME       fl
        NR         15
        STATE      measured-temp: 21.1 (Celsius)
        TYPE       FHT
        IODev      FHZ
      Attributes:
        room       Heizung
      Readings:
        2006-11-02 09:45:56   actuator        19%
        [...]
      
    Mit der -r (raw) Option werden die Daten in einem für fhem.cfg bzw. fhem.state passenden Format generiert. -R liefert diese Daten auch für alle von diesem Gerät vermutlich benögten Geräte. Achtung: die Bestimmung dieser Liste ist ungenau.

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. After modify, the global event "MODIFIED" will be generated. Nach der Durchführung das globale Ereignis "MODIFIED" wird generiert.

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

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.

    Ab featurelevel 5.7 ersetzt das set und setreading Befehl
    • [device:reading] mit dem Wert des Readings für device, falls sowohl device, als auch Reading existiert, und nicht leer ist.
    • [device:reading:d] wie ohne :d, aber alles nicht-numerische wird entfernt, siehe ReadingsNum
    • {(perlExpression)} mit dem Ergebnis der perlExpression. $DEV wird dabei mit dem Namen des vom set betroffenen Gerätes ersetzt.


    Manche Module unterstützen die sog. set extensions, und in der entsprechenden Dokumentation ist ein Link auf diesem Text zu finden. Falls im Modul selber einer der unten aufgeführten Befehle implementiert ist, dann wird die Modul-Implementation verwendet.
    • on-for-timer <sekunden>
      Das Gerät wird per "on" eingeschaltet, und ein interner Zeitgeber wird erstellt, um nach <sekunden> ein "off" Kommando auszuführen. Um diesen Zeitgeber zu entfernen sollte man das Kommando mit dem Argument 0 erneut aufrufen. Achtung: dieser Zeitgeber wird bei einem restart nicht gespeichert.
    • off-for-timer <sekunden>
      siehe on-for-timer.
    • on-till <timedet>
      Das Gerät wird per "on" eingeschaltet, und ein at Instanz wird definiert, um es um <timedet> (Format: HH:MM[:SS]) per off auszuschalten. Diese at Instanz ist sichtbar unter dem Namen geräteName+"_till". Um das Ausschalten zu deaktivieren löscht man diese at Definition. Achtung: das Ein/Ausschalten wird nicht durchgeführt, falls die aktuelle Uhrzeit nach der spezifizierten Zeit ist, um folgende Szenarien zu vereinfachen:
        define morningLight at *06:00 set Lamp on-till {sunrise()}
    • on-till-overnight <timedet>
      Wie on-till, aber die aktuelle Uhrzeit wird nicht mit der Spezifizierten verglichen, damit folgendes funktioniert:
        define nightLight at *{sunset()} set Lamp on-till-overnight 01:00
    • off-till <timedet>
      siehe on-till.
    • off-till-overnight <timedet>
      siehe on-till-overnight.
    • 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

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.

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> und die Beschreibung des set Befehls für Ersetzung.

    Beispiel:
      setreading lampe state on
    Achtung: setreading generiert kein Event für ein Gerät X, falls es aus einem notify für Gerät X aufgerufen wurde. In so einem Fall könnte man auf "sleep 0.1; setreading X Y Z" ausweichen.

setstate

    setstate <devspec> <value>

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

    Beispiel:
      setstate lampe An

shutdown

    shutdown [restart|exitValue]

    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. exitValue ist bei bestimmten Start-programmen von n&oulm;ten.

    Beispiel:
      shutdown
      shutdown restart
      shutdown 1

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]

    sleep gefolgt von weiteren Befehlen ist vergleichbar mit einem namenlosen at Kommando, es führt die nachfolgenden Befehle aus, nachdem es die spezifizierte Zeitspanne gewartet hat. Die Einheit ist Sekunde, Millisekunden genau, da man Nachkommastellen spezifizieren kann.

    Ein sleep mit einer <id< ersetzt ein sleep mit der gleichen <id< and can mit cancel entfernt werden. Falls sleep in at/notify/etc aufgerufen wurde, und die nachfolgenden Kommandos einen nicht leeren Text zurückgeliefert haben, dann wird dieser Text mit loglevel 2 protokolliert.
    quiet vermeidet diese Protokollierung.

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

    Bemerkung: falls sleep von keinem Befehl gefolgt wird, dann wird FHEM blockiert. Das ist unerwünscht, und im FHEM-Log wird eine Warnung protokolliert.

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.

    • 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 update funktioniert!
      Dieses Attribut wird vom backup Befehl benutzt.
      Beispiel:
        attr global backupcmd /usr/local/bin/myBackupScript.sh

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

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

    • blockingCallMax
      Begrenzt die Anzahl der parallel laufenden Prozesse, die von der BlockingCall FHEM Hilfsroutine gestartet wurden. Sinnvoll auf weniger leistungsfaehigen Hardware.

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

    • commandref
      Falls der Wert "full" (die Voreinstellung) ist, dann wird nach jedem update ein komplettes commandref.html generiert. Falls der Wert "modular" ist, dann wird die Moduldokumentation erst nach Bedarf waehrend der Laufzeit per JavaScript geladen.

    • dnsServer
      Enthält die IP Adresse des DNS Servers. Die von bestimmten Modulen (oder eigenen Code) aufgerufene HttpUtils_NonblockingGet wird auch bei der DNS Auflösung nicht mehr blockieren, falls dieses Attribut gesetzt ist, da es in diesem Fall FHEM eigene Routinen aufgerufen werden. Sonst werden die OS-eigenen, blockierenden Routinen inet_aton bzw gethostbyname aufgerufen.

    • 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

    • featurelevel
      Aktiviere bzw. deaktiviere bestimmte alte oder neue Funktionen, basierend auf die FHEM Version. Z.Bsp. das $value hash für notify wird nur bis featurelevel 5.6 befüllt, da es unerwünscht ist. Stattdessen sollte man die Value() Funktion verwenden.

    • logdir
      Falls gesetzt, wird %L in dem logfile Attribut (oder in der Dateinamen Spezifikation des FileLog Moduls) durch den Wert des Attributes ersetzt. Achtung: ändern des Wertes bewirkt nicht das Verschieben bereits erstellter Dateien, und kann zu diversen Problemen führen.

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

    • modpath
      Mit modpath geben Sie den Pfad zu dem Verzeichnis der FHEM Module an. Der Pfad 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. motd wird auch verwendet, um Fehlermeldungen während des FHEM-Starts zu sammeln und anzuzeigen.

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

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

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

    • 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
    • uniqueID
    • userattr
      Enthält eine durch Leerzeichen getrennte Liste in welcher die Namen zusätzlicher Attribute aufgeführt sind. Diese müssen zuerst in dieser Liste definiert werden, bevor sie (bei allen Geräten) angewendet werden können.
      userattr kann auch für einzelne Geräte spezifiziert werden, um weitere Attribute für diese Geräte zu definieren.

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

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

    • sslVersion
      Setzt die akzeptierten Crypto-Algorithmen im TcpServices Hilfsmodul. Die Voreinstellung TLSv12:!SSLv3 wird als sicherer erachtet als die vorherige SSLv23:!SSLv3:!SSLv2, aber sie kann Probleme mit nicht ausreichend aktualisierten Netzwerk-Diensten verursachen.

    • stacktrace
      Falls gesetzt (auf 1), schreibt ins FHEM-Log zusätzlich zu jedem "PERL WARNING" den stacktrace.

    • restartDelay
      Setzt die Verzögerung beim Neustart mit shutdown restart, die Voreinstellung ist 2 (Sekunden).

    • autosave
      Erlaubt manchen Modulen save auszuführen, nach einer automatischen Änderung der Konfiguration, z.Bsp. nachdem ein Gerät angelegt wurde. Die Voreinstellung ist 1 (wahr), man kann es ausschalten, indem man den Wert auf 0 setzt.


    Events
    • INITIALIZED
      sobald die Initialization vollständig ist.
    • REREADCFG
      nachdem die Konfiguration erneut eingelesen wurde.
    • SAVE
      bevor die Konfiguration gespeichert wird.
    • SHUTDOWN
      bevor FHEM heruntergefahren wird.
    • DEFINED <devname>
      nach dem Definieren eines Gerätes.
    • DELETED <devname>
      nach dem Löschen eines Gerätes.
    • RENAMED <old> <new>
      nach dem Umbenennen eines Gerätes.
    • UNDEFINED <defspec>
      beim Auftreten einer Nachricht für ein undefiniertes Gerät.
    • MODIFIED <defspec>
      nach Änderung einer Gerätedefinition.
    • UPDATE
      nach Abschluss eines Updates.

ALL3076

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

ALL4000T

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

ALL4027

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

AMAD

    AMAD - Automagic Android Device
    Dieses Modul liefert, in Verbindung mit der Android APP Automagic, diverse Informationen von Android Geräten. Die AndroidAPP Automagic (welche nicht von mir stammt und 2.90 Euro kostet) funktioniert wie Tasker, ist aber bei weitem User freundlicher.
    Mit etwas Einarbeitung können jegliche Informationen welche Automagic bereit stellt in FHEM angezeigt werden. Hierzu bedarf es lediglich eines eigenen Flows welcher seine Daten an die AMADCommBridge sendet. Das Modul gibt auch die Möglichkeit Androidgeräte zu steuern.
    Für all diese Aktionen und Informationen wird auf dem Androidgerät "Automagic" und ein so genannter Flow benötigt. Die App ist über den Google PlayStore zu beziehen. Das benötigte Flowset bekommt man aus dem FHEM Verzeichnis.

    Wie genau verwendet man nun AMAD?
    • man installiert die App "Automagic Premium" aus dem PlayStore.
    • dann installiert man das Flowset 74_AMADautomagicFlowset$VERSION.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidgerät und aktiviert die Flows.

    Es muß noch ein Device in FHEM anlegt werden.

    Define

      define <name> AMAD <IP-ADRESSE>

      Beispiel:

        define WandTabletWohnzimmer AMAD 192.168.0.23

      Diese Anweisung erstellt zwei neues AMAD-Device im Raum AMAD.Der Parameter <IP-ADRESSE> legt die IP Adresse des Android Gerätes fest.
      Das zweite Device ist die AMADCommBridge welche als Kommunikationsbrücke vom Androidgerät zu FHEM diehnt. !!!Comming Soon!!! Wer den Port ändern möchte, kann dies über das Attribut "port" tun. Ihr solltet aber wissen was Ihr tut, da dieser Port im HTTP Request Trigger der beiden Flows eingestellt ist. Demzufolge muß der Port dort auch geändert werden. Der Port für die Bridge kann ohne Probleme im Bridge Device mittels dem Attribut "port" verändert werden.
      Der Port für die Bridge kann ohne Probleme im Bridge Device mittels dem Attribut "port" verändert werden.

    AMAD Communication Bridge
      Beim ersten anlegen einer AMAD Deviceinstanz wird automatisch ein Gerät Namens AMADCommBridge im Raum AMAD mit angelegt. Dieses Gerät diehnt zur Kommunikation vom Androidgerät zu FHEM ohne das zuvor eine Anfrage von FHEM aus ging. Damit das Androidgerät die IP von FHEM kennt, muss diese sofort nach dem anlegen der Bridge über den set Befehl in ein entsprechendes Reading in die Bridge geschrieben werden. DAS IST SUPER WICHTIG UND FÜR DIE FUNKTION DER BRIDGE NOTWENDIG.
      Hierfür muß folgender Befehl ausgeführt werden. set AMADCommBridge fhemServerIP <FHEM-IP>.
      Als zweites Reading kann expertMode gesetzen werden. Mit diesem Reading wird eine unmittelbare Komminikation mit FHEM erreicht ohne die Einschränkung über ein Notify gehen zu müssen und nur reine set Befehle ausführen zu können.

    NUN bitte die Flows AKTIVIEREN!!!

    Fertig! Nach anlegen der Geräteinstanz und dem eintragen der fhemServerIP in der CommBridge sollten nach spätestens 15 Sekunden bereits die ersten Readings reinkommen. Nun wird alle 15 Sekunden probiert einen Status Request erfolgreich ab zu schließen. Wenn der Status sich über einen längeren Zeitraum nicht auf "active" ändert, sollte man im Log nach eventuellen Fehlern suchen.


    Readings
    • airplanemode - Status des Flugmodus
    • androidVersion - aktuell installierte Androidversion
    • automagicState - Statusmeldungen von der AutomagicApp (Voraussetzung Android >4.3). Ist Android größer 4.3 vorhanden und im Reading steht "wird nicht unterstützt", muß in den Androideinstellungen unter Ton und Benachrichtigungen -> Benachrichtigungszugriff ein Haken für Automagic gesetzt werden
    • batteryHealth - Zustand der Battery (1=unbekannt, 2=gut, 3=Überhitzt, 4=tot, 5=Überspannung, 6=unbekannter Fehler, 7=kalt)
    • batterytemperature - Temperatur der Batterie
    • bluetooth - on/off, Bluetooth Status an oder aus
    • checkActiveTask - Zustand einer zuvor definierten APP. 0=nicht aktiv oder nicht aktiv im Vordergrund, 1=aktiv im Vordergrund, siehe Hinweis unten
    • connectedBTdevices - eine Liste der verbundenen Gerät
    • connectedBTdevicesMAC - eine Liste der MAC Adressen aller verbundender BT Geräte
    • currentMusicAlbum - aktuell abgespieltes Musikalbum des verwendeten Mediaplayers
    • currentMusicApp - aktuell verwendeter Mediaplayer (Amazon Music, Google Play Music, Google Play Video, Spotify, YouTube, TuneIn Player, Aldi Life Music)
    • currentMusicArtist - aktuell abgespielter Musikinterpret des verwendeten Mediaplayers
    • currentMusicIcon - Cover vom aktuell abgespielten Album Noch nicht fertig implementiert
    • currentMusicState - Status des aktuellen/zuletzt verwendeten Mediaplayers
    • currentMusicTrack - aktuell abgespielter Musiktitel des verwendeten Mediaplayers
    • daydream - on/off, Daydream gestartet oder nicht
    • deviceState - Status des Androidgerätes. unknown, online, offline.
    • doNotDisturb - aktueller Status des nicht stören Modus
    • dockingState - undocked/docked Status ob sich das Gerät in einer Dockinstation befindet.
    • flow_SetCommands - active/inactive, Status des SetCommands Flow
    • flow_informations - active/inactive, Status des Informations Flow
    • flowsetVersionAtDevice - aktuell installierte Flowsetversion auf dem Device
    • incomingCallerName - Anrufername des eingehenden Anrufes
    • incomingCallerNumber - Anrufernummer des eingehenden Anrufes
    • incommingWhatsAppMessageFrom - letzte WhatsApp Nachricht
    • incommingWhatsTelegramMessageFrom - letzte Telegram Nachricht
    • intentRadioName - zuletzt gesrreamter Intent Radio Name
    • intentRadioState - Status des IntentRadio Players
    • keyguardSet - 0/1 Displaysperre gesetzt 0=nein 1=ja, bedeutet nicht das sie gerade aktiv ist
    • lastSetCommandError - letzte Fehlermeldung vom set Befehl
    • lastSetCommandState - letzter Status vom set Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
    • lastStatusRequestError - letzte Fehlermeldung vom statusRequest Befehl
    • lastStatusRequestState - letzter Status vom statusRequest Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
    • nextAlarmDay - aktiver Alarmtag
    • nextAlarmState - aktueller Status des "Androidinternen" Weckers
    • nextAlarmTime - aktive Alarmzeit
    • powerLevel - Status der Batterie in %
    • powerPlugged - Netzteil angeschlossen? 0=NEIN, 1|2=JA
    • screen - on locked/unlocked, off locked/unlocked gibt an ob der Bildschirm an oder aus ist und gleichzeitig gesperrt oder nicht gesperrt
    • screenBrightness - Bildschirmhelligkeit von 0-255
    • screenFullscreen - on/off, Vollbildmodus (An,Aus)
    • screenOrientation - Landscape,Portrait, Bildschirmausrichtung (Horizontal,Vertikal)
    • screenOrientationMode - auto/manual, Modus für die Ausrichtung (Automatisch, Manuell)
    • state - aktueller Status
    • userFlowState - aktueller Status eines Flows, festgelegt unter dem setUserFlowState Attribut
    • volume - Media Lautstärkewert
    • volumeNotification - Benachrichtigungs Lautstärke

    • Beim Reading checkActivTask muß zuvor der Packagename der zu prüfenden App als Attribut checkActiveTask angegeben werden. Beispiel: attr Nexus10Wohnzimmer checkActiveTask com.android.chrome für den Chrome Browser.



    Set
    • activateVoiceInput - aktiviert die Spracheingabe
    • bluetooth - on/off, aktiviert/deaktiviert Bluetooth
    • clearNotificationBar - All,Automagic, löscht alle Meldungen oder nur die Automagic Meldungen in der Statusleiste
    • closeCall - beendet einen laufenden Anruf
    • currentFlowsetUpdate - fürt ein Flowsetupdate auf dem Device durch
    • doNotDisturb - schaltet den nicht stören Modus, always immer stören, never niemals stören, alarmClockOnly nur Wecker darf stören, onlyImportant nur wichtige Störungen
    • installFlowSource - installiert einen Flow auf dem Device, das XML File muss unter /tmp/ liegen und die Endung xml haben. Bsp: set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml
    • mediaAmazonMusic - play, stop, next, back ,steuert den Amazon Musik Mediaplayer
    • mediaGoogleMusic - play, stop, next, back ,steuert den Google Play Musik Mediaplayer
    • mediaSpotifyMusic - play, stop, next, back ,steuert den Spotify Mediaplayer
    • nextAlarmTime - setzt die Alarmzeit. gilt aber nur innerhalb der nächsten 24Std.
    • openCall - ruft eine Nummer an und legt optional nach X Sekunden auf / set DEVICE openCall 01736458 10 / ruft die Nummer an und beendet den Anruf nach 10s
    • screenBrightness - setzt die Bildschirmhelligkeit, von 0-255.
    • screenMsg - versendet eine Bildschirmnachricht
    • sendintent - sendet einen Intentstring Bsp: set $AMADDEVICE sendIntent org.smblott.intentradio.PLAY url http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de/play.m3u name Klassikradio, der erste Befehl ist die Aktion und der zweite das Extra. Es können immer zwei Extras mitgegeben werden.
    • sendSMS - sendet eine SMS an eine bestimmte Telefonnummer. Bsp.: sendSMS Dies ist ein Test|555487263
    • statusRequest - Fordert einen neuen Statusreport beim Device an. Es können nicht von allen Readings per statusRequest die Daten geholt werden. Einige wenige geben nur bei Statusänderung ihren Status wieder.
    • timer - setzt einen Timer innerhalb der als Standard definierten ClockAPP auf dem Device. Es können nur Sekunden angegeben werden.
    • ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird
    • userFlowState - aktiviert oder deaktiviert einen oder mehrere Flows,set Nexus7Wohnzimmer Badezimmer vorheizen:inactive oder set Nexus7Wohnzimmer Badezimmer vorheizen,Nachtlicht Steven:inactive
    • vibrate - lässt das Androidgerät vibrieren
    • volume - setzt die Medialautstärke. Entweder die internen Lautsprecher oder sofern angeschlossen die Bluetoothlautsprecher und per Klinkenstecker angeschlossene Lautsprecher, + oder - vor dem Wert reduziert die aktuelle Lautstärke um den Wert
    • volumeNotification - setzt die Benachrichtigungslautstärke.

    Set abhängig von gesetzten Attributen
    • changetoBtDevice - wechselt zu einem anderen Bluetooth Gerät. Attribut setBluetoothDevice muß gesetzt sein. Siehe Hinweis unten!
    • notifySndFile - spielt die angegebene Mediadatei auf dem Androidgerät ab. Die aufzurufende Mediadatei sollte sich im Ordner /storage/emulated/0/Notifications/ befinden. Ist dies nicht der Fall kann man über das Attribut setNotifySndFilePath einen Pfad vorgeben.
    • openApp - öffnet eine ausgewählte App. Attribut setOpenApp
    • openURL - öffnet eine URL im Standardbrowser, sofern kein anderer Browser über das Attribut setOpenUrlBrowser ausgewählt wurde. Bsp: attr Tablet setOpenUrlBrowser de.ozerov.fully|de.ozerov.fully.MainActivity, das erste ist der Package Name und das zweite der Class Name
    • setAPSSID - setzt die AccessPoint SSID um ein WLAN sleep zu verhindern
    • screen - on/off/lock/unlock schaltet den Bildschirm ein/aus oder sperrt/entsperrt ihn, in den Automagic Einstellungen muss "Admin Funktion" gesetzt werden sonst funktioniert "Screen off" nicht. Attribut setScreenOnForTimer ändert die Zeit wie lange das Display an bleiben soll!
    • screenFullscreen - on/off, (aktiviert/deaktiviert) den Vollbildmodus. Attribut setFullscreen
    • screenLock - Sperrt den Bildschirm mit Pinabfrage. Attribut setScreenlockPIN - hier die Pin dafür eingeben. Erlaubt sind nur Zahlen. Es müßen mindestens 4, bis max 16 Zeichen verwendet werden.
    • screenOrientation - Auto,Landscape,Portait, aktiviert die Bildschirmausrichtung (Automatisch,Horizontal,Vertikal). Attribut setScreenOrientation
    • system - setzt Systembefehle ab (nur bei gerootetet Geräen). reboot,shutdown,airplanemodeON (kann nur aktiviert werden) Attribut root, in den Automagic Einstellungen muss "Root Funktion" gesetzt werden
    • setNotifySndFilePath - setzt den korrekten Systempfad zur Notifydatei (default ist /storage/emulated/0/Notifications/
    • setTtsMsgSpeed - setzt die Sprachgeschwindigkeit bei der Sprachausgabe(Werte zwischen 0.5 bis 4.0 in 0.5er Schritten) default ist 1.0
    • setTtsMsgSpeed - setzt die Sprache bei der Sprachausgabe, de oder en (default ist de)

    • Um openApp verwenden zu können, muss als Attribut der Package Name der App angegeben werden.

      Um zwischen Bluetoothgeräten wechseln zu können, muß das Attribut setBluetoothDevice mit folgender Syntax gesetzt werden. attr <DEVICE> BTdeviceName1|MAC,BTDeviceName2|MAC Es muss zwingend darauf geachtet werden das beim BTdeviceName kein Leerzeichen vorhanden ist. Am besten zusammen oder mit Unterstrich. Achtet bei der MAC darauf das Ihr wirklich nach jeder zweiten Zahl auch einen : drin habt
      Beispiel: attr Nexus10Wohnzimmer setBluetoothDevice Logitech_BT_Adapter|AB:12:CD:34:EF:32,Anker_A3565|GH:56:IJ:78:KL:76


    state
    • initialized - Ist der Status kurz nach einem define.
    • active - die Geräteinstanz ist im aktiven Status.
    • disabled - die Geräteinstanz wurde über das Attribut disable deaktiviert



    Anwendungsbeispiele:

      Hier verweise ich auf den gut gepflegten Wikieintrag



Alarm

ArduCounter

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

BDKM

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

BOSEST

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

BRAVIA

    Diese Module dient zur Steuerung von Sony TVs der BRAVIA-Serien beginnend mit dem Modelljahr 2011.

    Define
      define <name> BRAVIA <ip-or-hostname> [<poll-interval>]

      Bei der Definition eines BRAVIA Gerätes wird ein interner Task eingeplant, der regelmäßig den Status des TV prüft und weitere Informationen abruft.
      Das Intervall des Tasks kann durch den optionalen Parameter <poll-intervall> in Sekunden gesetzt werden. Ansonsten wird der Task mit 45 Sekunden als Intervall definiert.

      Nach der Definition eines Gerätes muss dieses einmalig im TV als Fernbedienung registriert werden (set register).

      Soweit die Readings nicht den allgemeinen AV Readings entsprechen, sind sie gruppiert:
      s_*: Status
      ci_*: Inhaltsinfo


      Das Modul enthält vorgefertigte Layouts für remotecontrol mit PNG und SVG.

    Set
      set <name> <option> <value>

      Optionen:
      • channel
        Liste alle bekannten Kanäle. Das Modul merkt sich alle aufgerufenen Kanäle. Ab Modelljahr 2013 werden die Kanäle automatisch geladen (Anzahl siehe channelsMax).
      • channelDown
        Einen Kanal zurück schalten.
      • channelUp
        Einen Kanal weiter schalten.
      • mute
        Direkte Stummschaltung erfolgt nur per aktiviertem Upnp.
      • off
        Schaltet den TV aus. Der State des Gerätes wird auf "set_off" gesetzt. Dieser Wert wird nach 60 Sekunden wieder überschrieben oder sobald der TV entsprechend "off" meldet.
      • on
        Einschalten des TV, ab Modelljahr 2013 per WOL. Der State des Gerätes wird auf "set_on" gesetzt. Dieser Wert wird nach 60 Sekunden wieder überschrieben oder sobald der TV entsprechend "on" meldet.
      • pause
        Pausiert die Wiedergabe einer Aufnahme, einer internen App, etc.
      • play
        Startet die Wiedergabe einer Aufnahme, einer internen App, etc.
      • record
        Startet die Aufnahme des aktuellen Inhalts.
      • register
        Einmalige Registrierung von FHEM als Fernbedienung im TV.
        Bei requestFormat = "xml" erfolgt die Registrierung ohne Parameter.
        Bei requestFormat = "json" ist die Registrierung zweistufig.
        Beim Aufruf des Setter gibt es ein Eingabefeld:
        1. Aufruf mit leerem Eingabefeld. Auf dem TV sollte eine PIN zur Registrierung erscheinen.
        2. PIN im Eingabefeld eintragen und Registrierung noch mal ausführen
      • requestFormat
        "xml" für xml-basierte Kommunikation 2011er/2012er Geräte
        "json" für die Kommunikation seit der 2013er Generation
      • remoteControl
        Direktes Senden von Kommandos an den TV.
      • statusRequest
        Ruft die aktuellen Statusinformationen vom TV ab.
      • stop
        Stoppt die Wiedergabe einer Aufnahme, einer internen App, etc.
      • toggle
        Wechselt den Einschaltstatus des TV.
      • tvpause
        Aktiviert den Timeshift-Modus.
      • upnp
        Aktiviert Upnp zum Abfragen und Einstellen der Lautstärke.
      • volume
        Direktes Setzen der Lautstärke erfolgt nur per aktiviertem Upnp.
      • volumeDown
        Verringert die Lautstärke.
      • volumeUp
        Erhöht die Lautstärke.

    Attributes
      attr <name> <attribute> <value>

      Attribute:
      • channelsMax
        Maximale Anzahl der im FHEMWEB angezeigten Kanäle. Der Standartwert ist 50.
      • macaddr
        Ermöglicht das Einschalten des TV per WOL.

BS

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

CALVIEW

    Dieses Modul erstellt ein Device welches als Readings Termine eines oder mehrere Kalender(s), basierend auf dem 57_Calendar.pm Modul, besitzt. Ihr müsst das Perl-Modul Date::Parse installieren!
    Aktuell wird nur die "get <> next" Funktion vom CALENDAR untertstützt.
Define
    define <Name> CALVIEW <Kalendername(n) getrennt durch ','> <next> <updateintervall in sek (default 43200)>
    define myView CALVIEW Googlekalender next
    define myView CALVIEW Googlekalender,holiday next 900
    - die Einstellung des Aktualisierungsintervalls wird normalerweise nicht benötigt, da jede Kalenderaktualisierung ein Caview-Update auslöst
Set
    update readings:
    set <Name> update
    set myView update

Attributes
  • datestyle
    nicht gesetzt - Standard, Readings bdatetimeiso / edatetimeiso werden nicht gezeigt
    ISO8601 - aktiviert die readings bdatetimeiso / edatetimeiso (zeigen Terminstart und Ende im ISO8601 Format zB. 2017-02-27T00:00:00)

  • disable
    0 / nicht gesetzt - aktiviert die interne Notify-Funktion (Standard)
    1 - deaktiviert die interne Notify-Funktion welche ausgelöst wird wenn sich einer der Kalender aktualisiert hat

  • filterSummary <filtersouce>:<filtersummary>[,<filtersouce>:<filtersummary>]
    not set - zeigt alle Termine (Standard)
    <filtersouce>:<filtersummary>[,<filtersouce>:<filtersummary>] - CALVIEW filtert Termine die <filtersquelle>:<filtertitel> entsprechen, mehrere Filter sind durch Komma (,) zu trennen. zb.: filterSummary Kalender_Abfall:Leichtverpackungen,Kalender_Abfall:Bioabfall filterSummary Kalender_Abfall:Leichtverpackungen,Kalender_Feiertage:.*,Kalender_Christian:.*,Kalender_Geburtstage:.*

  • isbirthday
    0 / nicht gesetzt - keine Altersberechnung (Standard)
    1 - aktiviert die Altersberechnung im Modul. Das Alter wird aus der in der Terminbeschreibung (description) angegebenen Jahreszahl (Geburtsjahr) berechnet. (siehe Attribut yobfield)

  • maxreadings
    bestimmt die Anzahl der Termine als Readings

  • modes
    hier können die CALENDAR modi gewählt werden, welche in der View angezeigt werden sollen

  • oldStyledReadings
    0 die Standarddarstellung für Readings
    1 aktiviert die Termindarstellung im "alten" Format "2015.06.21-00:00" mit Wert "Start of Summer"

  • yobfield
    _description - (der Standard) Geburtsjahr wird aus der Terminbechreibung gelesen
    _location - Geburtsjahr wird aus dem Terminort gelesen
    _summary - Geburtsjahr wird aus dem Termintiele gelesen (verwendet wird die erste folge von 4 Ziffern im String))

  • 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
      • reopen
        Öffnet die Verbindung zum Gerät neu und initialisiert es.

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

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

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

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

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

      • ITClock
        Setzt die IT clock fü Intertechno V1 Protokoll. Default 250.

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

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

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

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

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

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

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

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

      • connectCommand
        culfw Befehl, was nach dem Verbindungsaufbau mit dem USB-Gerät, nach Senden der zum Initialisieren der konfigurierten rfmode benötigten Befehle gesendet wird.
      • do_not_notify
      • dummy
      • 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)

      • longids
        Durch Kommata getrennte Liste von Device-Typen für Empfang von langen IDs mit den CUL. Diese zusätzliche ID erlaubt es Wettersensoren, welche auf dem gleichen Kanal senden zu unterscheiden. Hierzu wird eine zufällig generierte ID hinzugefügt. Wenn Sie longids verwenden, dann wird in den meisten Fällen nach einem Batteriewechsel ein neuer Sensor angelegt. Standardmäßig werden keine langen IDs verwendet.
        Folgende Module verwenden diese Funktionalität: 14_Hideki, 41_OREGON, 14_CUL_TCM97001, 14_SD_WS07.
        Beispiele:
          # Keine langen IDs verwenden (Default Einstellung):
          attr cul longids 0
          # Immer lange IDs verwenden:
          attr cul longids 1
          # Verwende lange IDs für SD_WS07 Devices.
          # Device Namen sehen z.B. so aus: SD_WS07_TH_3 for channel 3.
          attr cul longids SD_WS07

      • model (CUL,CUN)

      • rfmode
        Konfiguriert den RF Transceiver des CULs (CC1101). Verfügbare Argumente sind:
        • SlowRF
          Für die Kommunikation mit FS20/FHT/HMS/EM1010/S300/Hoermann Geräten @1 kHz Datenrate (Standardeinstellung).
        • HomeMatic
          Für die Kommunikation mit HomeMatic Geräten @10 kHz Datenrate.
        • MAX
          Für die Kommunikation mit MAX! Geräten @10 kHz Datenrate.
        • WMBus_S
        • WMBus_T
          Für die Kommunikation mit Wireless M-Bus Geräten wie Wasser-, Gas- oder Elektrozählern. Wireless M-Bus verwendet zwei unterschiedliche Kommunikationsarten, S-Mode und T-Mode. In diesem Modus ist der Empfang von anderen Protokollen wie SlowRF oder HomeMatic nicht möglich.

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


      • showtime
      • readingFnAttributes

    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

      • maxPeak <number>
        Gibt den maximal möglichen Spitzenwert für das EM-Meter an ("TOP:"-Wert in Logdatei). Spitzenwerte größer als dieser Wert gelten als EM-Lesefehler und werden ignoriert. Wenn es z.B. nicht möglich ist mehr zu 40kW Leistung zu beziehen setzt man maxPeak auf 40 um das Auslesen des Stromzählers robuster zu machen.

      • CounterOffset
        Gibt den Unterschied zwischen dem tatsächlichen Zählerstand und dem vom EMGZ gemeldeten Wert an.
        CounterOffset = tatsächlicher Zählerstand - Reading "total"
        Beispiel:
          attr Gaszaehler CounterOffset 15427.434

    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.

      Mit dem letzten Build auf SVN oder mit der nächsten offiziellen Version 1.62 oder höher, ist es möglich, FHT80 TF Daten zu senden. Möglich mit einem CUL oder ähnlichen Geräten. So können bis zu vier Fenstersensoren mit einem Gerät simuliert werden (siehe FHEM Wiki). Es muss lediglich das Attribut model mit dem Wert "dummy" hinzugefügt oder geändert werden. Wichtig: Der Devicecode sollte nicht der FHTID entsprechen.

      D
        define <name> CUL_FHTTK <devicecode>

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

      Set
        Nur vorhanden, wenn das Attribut model mit dummy definiert wurde.

        set <name> <value>

        wobei value folgendes sein kann:
          Pair # startet das Anlernen an das FHT80B (FHT80B muss sich im Sync mode befinden) - danach wird der state auf "Closed" gesetzt
          Closed # setzt den Fensterstatus zu Closed
          Open # setzt den Fensterstatus zu Open
          ReSync # neu synchronisieren des virtuellen Sensor mit dem FHT80b Module. Damit wird ein virtueller Batteriewechsel symuliert und der angelernte Sensor wieder aufsynchronisiert. (aktuell nur mit Prototyp CUL FW verfügbar Forum 55774)

      Get
        N/A

      Attributes
      • do_not_notify

      • verbose

      • model
        Mögliche Werte sind: FHT80TF, FHT80TF-2, dummy (zum simulieren eines Fensterkontaktes)

      • showtime

      • IODev

      • ignore

      • eventMap

      • readingFnAttributes

    CUL_HM

      Unterstützung für eQ-3 HomeMatic Geräte via CUL oder HMLAN.

      Define
        define <name> CUL_HM <6-digit-hex-code|8-digit-hex-code>

        Eine korrekte Gerätedefinition ist der Schlüssel zur einfachen Handhabung der HM-Umgebung.
        Hintergrund zur Definition:
        HM-Geräte haben eine 3 Byte (6 stelliger HEX-Wert) lange HMid - diese ist Grundlage der Adressierung. Jedes Gerät besteht aus einem oder mehreren Kanälen. Die HMid für einen Kanal ist die HMid des Gerätes plus die Kanalnummer (1 Byte, 2 Stellen) in hexadezimaler Notation. Kanäle sollten für alle mehrkanaligen Geräte definiert werden. Einträge für Kanäle können nicht angelegt werden wenn das zugehörige Gerät nicht existiert.
        Hinweis: FHEM belegt das Gerät automatisch mit Kanal 1 falls dieser nicht explizit angegeben wird. Daher ist bei einkanaligen Geräten keine Definition nötig.
        Hinweis: Wird ein Gerät gelöscht werden auch die zugehörigen Kanäle entfernt.
        Beispiel einer vollständigen Definition eines Gerätes mit 2 Kanälen:
          define livingRoomSwitch CUL_HM 123456
          define LivingroomMainLight CUL_HM 12345601
          define LivingroomBackLight CUL_HM 12345602

        livingRoomSwitch bezeichnet das zur Kommunikation verwendete Gerät. Dieses wird vor den Kanälen definiert um entsprechende Verweise einstellen zu können.
        LivingroomMainLight hat Kanal 01 und behandelt den Lichtstatus, Kanal-Peers sowie zugehörige Kanalregister. Falls nicht definiert wird Kanal 01 durch die Geräteinstanz abgedeckt.
        LivingRoomBackLight ist der zweite "Kanal", Kanal 02. Seine Definition ist verpflichtend um die Funktion ausführen zu können.

        Sonderfall Sender: HM behandelt jeden Knopf einer Fernbedienung, Drucktaster und ähnliches als Kanal . Es ist möglich (nicht notwendig) einen Kanal pro Knopf zu definieren. Wenn alle Kanäle definiert sind ist der Zugriff auf Pairing-Informationen sowie auf Kanalregister möglich. Weiterhin werden Verknüpfungen durch Namen besser lesbar.

        define kann auch durch das autocreate Modul aufgerufen werden, zusammen mit dem notwendigen subType Attribut. Normalerweise erstellt man hmPairForSec und drückt dann den zugehörigen Knopf am Gerät um die Verknüpfung herzustellen oder man verwendet hmPairSerial falls das Gerät ein Empfänger und die Seriennummer bekannt ist. Autocreate wird dann ein FHEM-Gerät mit allen notwendigen Attributen anlegen. Ohne Pairing wird das Gerät keine Befehle von FHEM akzeptieren. Selbst wenn das Pairing scheitert legt FHEM möglicherweise das Gerät an. Erfolgreiches Pairen wird durch den Eintrag CommandAccepted in den Details zum CUL_HM Gerät angezeigt.

        Falls autocreate nicht verwendet werden kann muss folgendes spezifiziert werden:
        • Der <6-stellige-Hex-Code>oder HMid+ch <8-stelliger-Hex-Code>
          Das ist eine einzigartige, festgelegte Geräteadresse die nicht geändert werden kann (nein, man kann sie nicht willkürlich auswählen wie z.B. bei FS20 Geräten). Man kann sie feststellen indem man das FHEM-Log durchsucht.
        • Das subType Attribut
          Dieses lautet: switch dimmer blindActuator remote sensor swi pushButton threeStateSensor motionDetector keyMatic winMatic smokeDetector
        • Das model Attribut
          ist entsprechend der HM Nomenklatur zu vergeben
        Ohne diese Angaben kann FHEM nicht korrekt mit dem Gerät arbeiten.

        Hinweise
        • Falls das Interface ein Gerät vom Typ CUL ist muss rfmode des zugehörigen CUL/CUN Gerätes auf HomeMatic gesetzt werden. Achtung: Dieser Modus ist nur für BidCos/Homematic. Nachrichten von FS20/HMS/EM/S300 werden durch diese Gerät nicht empfangen. Bereits definierte FS20/HMS Geräte müssen anderen Eingängen zugeordnet werden (CUL/FHZ/etc).
        • Nachrichten eines Geräts werden nur richtig interpretiert wenn der Gerätetyp bekannt ist. FHEM erhält den Gerätetyp aus einer"pairing request" Nachricht, selbst wenn es darauf keine Antwort erhält (siehe hmPairSerial und hmPairForSec um Parinig zu ermöglichen). Alternativ, setzen des richtigen subType sowie Modelattributes, für eine Liste der möglichen subType-Werte siehe "attr hmdevice ?".
        • Die sogenannte "AES-Verschlüsselung" ist eigentlich eine Signaturanforderung: Ist sie aktiviert wird ein Aktor den erhaltenen Befehl nur ausführen falls er die korrekte Antwort auf eine zuvor durch den Aktor gestellte Anfrage erhält. Das bedeutet:
          • Die Reaktion auf Befehle ist merklich langsamer, da 3 Nachrichten anstatt einer übertragen werden bevor der Befehl vom Aktor ausgeführt wird.
          • Jeder Befehl sowie seine Bestätigung durch das Gerät wird in Klartext übertragen, ein externer Beobachter kennt somit den Status jedes Geräts.
          • Die eingebaute Firmware ist fehlerhaft: Ein "toggle" Befehl wir ausgeführt bevor die entsprechende Antwort auf die Signaturanforderung empfangen wurde, zumindest bei einigen Schaltern (HM-LC-Sw1-Pl und HM-LC-SW2-PB-FM).
          • Der HMLAN Konfigurator beantwortet Signaturanforderungen selbstständig, ist dabei die 3-Byte-Adresse einer anderen CCU eingestellt welche noch immer das Standardpasswort hat, kann dieser Signaturanfragen korrekt beantworten.
          • AES-Verschlüsselung wird durch HMLAN und CUL unterstützt. Bei Einsatz eines CUL ist das Perl-Modul Crypt::Rijndael notwendig. Aufgrund dieser Einschränkungen ist der Einsatz der Homematic-Verschlüsselung nicht zu empfehlen!

      Set
        Hinweis: Geräte die normalerweise nur senden (Fernbedienung/Sensor/etc.) müssen in den Pairing/Lern-Modus gebracht werden um die folgenden Befehle zu empfangen.

        Allgemeine Befehle (verfügbar für die meisten HM-Geräte):
        • clear <[rssi|readings|register|msgEvents|attack|all]>
          Eine Reihe von Variablen kann entfernt werden.
            readings: Alle Messwerte werden gelöscht, neue Werte werden normal hinzugefügt. Kann benutzt werden um alte Daten zu entfernen
            register: Alle in FHEM aufgezeichneten Registerwerte werden entfernt. Dies hat KEINEN Einfluss auf Werte im Gerät.
            msgEvents: Alle Anchrichtenzähler werden gelöscht. Ebenso wird der Befehlsspeicher zurückgesetzt.
            rssi: gesammelte RSSI-Werte werden gelöscht.
            attack: Einträge bezüglich einer Attack werden gelöscht.
            all: alles oben genannte.
        • getConfig
          Liest die Hauptkonfiguration eines HM_Gerätes aus. Angewendet auf einen Kanal erhält man Pairing-Information, List0, List1 und List3 des ersten internen Peers. Außerdem erhält man die Liste der Peers für den gegebenen Kanal. Wenn auf ein Gerät angewendet so bekommt man mit diesem Befehl die vorherigen Informationen für alle zugeordneten Kanäle. Ausgeschlossen davon sind Konfigurationen zusätzlicher Peers.
          Der Befehl ist eine Abkürzung für eine Reihe anderer Befehle.
        • getRegRaw [List0|List1|List2|List3|List4|List5|List6]<peerChannel>
          Auslesen der Rohdaten des Registersatzes. Eine Beschreibung der Register sprengt den Rahmen dieses Dokuments.
          Die Register sind in sog. Listen strukturiert welche einen Satz Register enthalten.
          List0: Geräteeinstellungen z.B: Einstellungen für CUL-Pairing Temperaturlimit eines Dimmers.
          List1: Kanaleinstellungen z.B. benötigte Zeit um Rollo hoch und runter zu fahren.
          List3: "link" Einstellungen - d.h. Einstellungen für Peer-Kanal. Das ist eine große Datenmenge! Steuert Aktionen bei Empfang eines Triggers vom Peer.
          List4: Einstellungen für den Kanal (Taster) einer Fernbedienung.

          <PeerChannel> verknüpfte HMid+ch, z.B. 4 byte (8 stellige) Zahl wie '12345601'. Ist verpflichtend für List3 und List4 und kann ausgelassen werden für List0 und 1.
          'all' kann verwendet werden um Daten von jedem mit einem Kanal verknüpften Link zu bekommen.
          'selfxx' wird verwendet um interne Kanäle zu adressieren (verbunden mit den eingebauten Schaltern falls vorhanden). xx ist die Kanalnummer in dezimaler Notation.
          Hinweis 1: Ausführung ist abhängig vom Entity. Wenn List1 für ein Gerät statt einem Kanal abgefragt wird gibt der Befehl List1 für alle zugehörigen Kanäle aus. List3 mit 'peerChannel = all' gibt alle Verbindungen für alle Kanäle eines Gerätes zurück.
          Hinweis 2: für 'Sender' siehe auch remote
          Hinweis 3: Das Abrufen von Informationen kann dauern - besonders für Geräte mit vielen Kanälen und Verknüpfungen. Es kann nötig sein das Webinterface manuell neu zu laden um die Ergebnisse angezeigt zu bekommen.
          Hinweis 4: Direkte Schalter eines HM-Geräts sind standardmäßig ausgeblendet. Dennoch sind sie genauso als Verknüpfungen implemetiert. Um Zugriff auf 'internal links' zu bekommen ist es notwendig folgendes zu erstellen:
          'set <name> regSet intKeyVisib visib'
          oder
          'set <name> regBulk RegL_0. 2:81'
          Zurücksetzen lässt es sich indem '81' mit '01' ersetzt wird.
          example:
            set mydimmer getRegRaw List1
            set mydimmer getRegRaw List3 all
        • getSerial
          Auslesen der Seriennummer eines geräts und speichern in Attribut serialNr.
        • inhibit [on|off]
          Blockieren/Zulassen aller Kanaländerungen eines Aktors, d.h. Zustand des Aktors ist eingefroren bis 'inhibit' wieder deaktiviert wird. 'Inhibit' kann für jeden Aktorkanal ausgeführt werden aber natürlich nicht für Sensoren - würde auch keinen Sinn machen.
          Damit ist es praktischerweise möglich Nachrichten ebenso wie verknüpfte Kanalaktionen temporär zu unterdrücken ohne sie löschen zu müssen.
          Beispiele:
            # Ausführung blockieren
            set keymatic inhibit on

        • pair
          Verbinden eines Geräts bekannter Seriennummer (z.b. nach einem Reset) mit einer FHEM-Zentrale. Diese Zentrale wird normalerweise durch CUL/CUNO, HMLAN,... hergestellt. Wenn verbunden melden Geräte ihren Status and FHEM. Wenn nicht verbunden wird das Gerät auf bestimmte Anfragen nicht reagieren und auch bestimmte Statusinformationen nicht melden. Pairing geschieht auf Geräteebene. Kanäle können nicht unabhängig von einem Gerät mit der Zentrale verbunden werden. Siehe auch getPair und unpair.
          Nicht das Verbinden (mit einer Zentrale) mit verknüpfen (Kanal zu Kanal) oder peerChan verwechseln.
        • peerBulk <peerch1,peerch2,...> [set|unset]
          peerBulk fügt Peer-Kanäle zu einem Kanal hinzu. Alle Peers einer Liste werden dabei hinzugefügt.
          Peering setzt die Einstellungen einer Verknüpfung auf Standardwerte. Da Peers nicht in Gruppen hinzugefügt werden werden sie durch HM standardmäßig als'single' für dieses Gerät angelegt.
          Eine ausgeklügeltere Funktion wird gegeben durch peerChan.
          peerBulk löscht keine vorhandenen Peers sondern bearbeitet nur die Peerliste. Andere bereits angelegt Peers werden nicht verändert.
          peerBulk kann verwendet werden um Peers zu löschen indem die unset Option mit Standardeinstellungen aufgerufen wird.
          Verwendungszweck dieses Befehls ist hauptsächlich das Wiederherstellen von Daten eines Geräts. Empfehlenswert ist das anschließende Wiederherstellen der Registereinstellung mit regBulk.
          Beispiel:
            set myChannel peerBulk 12345601,
            set myChannel peerBulk self01,self02,FB_Btn_04,FB_Btn_03,
            set myChannel peerBulk 12345601 unset # entferne Peer 123456 Kanal 01
        • regBulk <reg List>:<peer> <addr1:data1> <addr2:data2>...
          Dieser Befehl ersetzt das bisherige regRaw. Er erlaubt Register mit Rohdaten zu beschreiben. Hauptzweck ist das komplette Wiederherstellen eines zuvor gesicherten Registers.
          Werte können mit getConfig ausgelesen werden. Die zurückgegebenen Werte können direkt für diesen Befehl verwendet werden.
          <reg List> bezeichnet die Liste in die geschrieben werden soll. Mögliches Format '00', 'RegL_00', '01'...
          <peer> ist eine optionale Angabe falls die Liste ein Peer benötigt. Der Peer kann als Kanalname oder als 4-Byte (8 chars) HM-Kanal ID angegeben werden.
          <addr1:data1> ist die Liste der Register im Hex-Format.
          Beispiel:
            set myChannel regBulk RegL_00. 02:01 0A:17 0B:43 0C:BF 15:FF 00:00
            RegL_03.FB_Btn_07 01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:44 0C:54 0D:93 0E:00 0F:00 11:C8 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 1A:00 1B:00 1C:00 1D:FF 1E:93 1F:00 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:44 8C:54 8D:93 8E:00 8F:00 91:C8 92:00 93:00 94:00 95:00 96:00 97:00 98:00 99:00 9A:00 9B:00 9C:00 9D:05 9E:93 9F:00 00:00
            set myblind regBulk 01 0B:10
            set myblind regBulk 01 0C:00
          myblind setzt die maximale Zeit für das Hochfahren der Rollos auf 25,6 Sekunden
        • regSet [prep|exec] <regName> <value> <peerChannel>
          Für einige Hauptregister gibt es eine lesbarere Version die Registernamen <regName> und Wandlung der Werte enthält. Nur ein Teil der Register wird davon unterstützt.
          Der optionale Parameter [prep|exec] erlaubt das Packen von Nachrichten und verbessert damit deutlich die Datenübertragung. Benutzung durch senden der Befehle mit Parameter "prep". Daten werden dann für das Senden gesammelt. Der letzte Befehl muss den Parameter "exec" habe um die Information zu übertragen.
          <value> enthält die Daten in menschenlesbarer Form die in das Register geschrieben werden.
          <peerChannel> wird benötigt falls das Register 'peerChan' basiert definiert wird. Kann ansonsten auf '0' gesetzt werden. Siehe getRegRaw für komplette Definition.
          Unterstützte Register eines Geräts können wie folgt bestimmt werden:
            set regSet ? 0 0
          Eine verkürzte Beschreibung der Register wird zurückgegeben mit:
            set regSet <regname> ? 0
        • reset
          Rücksetzen des Geräts auf Werkseinstellungen. Muss danach erneut verbunden werden um es mit FHEM zu nutzen.
        • sign [on|off]
          Ein- oder ausschalten der Signierung (auch "AES-Verschlüsselung" genannt, siehe note). Achtung: Wird das Gerät über einen CUL eingebunden, ist schalten (oder deaktivieren der Signierung) nur möglich, wenn das Perl-Modul Crypt::Rijndael installiert ist.
        • statusRequest
          Aktualisieren des Gerätestatus. Für mehrkanalige Geräte sollte dies kanalbasiert erfolgen.
        • unpair
          Aufheben des "Pairings", z.B. um das verbinden mit einem anderen Master zu ermöglichen. Siehe pair für eine Beschreibung.
        • virtual <Anzahl an Knöpfen>
          Konfiguriert eine vorhandene Schaltung als virtuelle Fernbedienung. Die Anzahl der anlegbaren Knöpfe ist 1 - 255. Wird der Befehl für die selbe Instanz erneut aufgerufen werden Knöpfe hinzugefügt.
          Beispiel für die Anwendung:
            define vRemote CUL_HM 100000 # die gewählte HMid darf nicht in Benutzung sein
            set vRemote virtual 20 # definiere eine Fernbedienung mit 20 Knöpfen
            set vRemote_Btn4 peerChan 0 <actorchannel> # verknüpft Knopf 4 und 5 mit dem gewählten Kanal
            set vRemote_Btn4 press
            set vRemote_Btn5 press long
          siehe auch press
        • deviceRename <newName>
          benennt das Device und alle seine Kanäle um.
        • fwUpdate [onlyEnterBootLoader] <filename> [<waitTime>]
          update Fw des Device. Der User muss das passende FW file bereitstellen. waitTime ist optional. Es ist die Wartezeit, um das Device manuell in den FW-update-mode zu versetzen.
          "onlyEnterBootLoader" schickt das Device in den Booloader so dass es vom eq3 Firmware Update Tool geflashed werden kann. Hauptsächlich für Unterputz-Aktoren in Verbindung mit FHEM Installationen die ausschliesslich HM-LANs nutzen interessant.

        subType abhängige Befehle:

        • switch
          • on - setzt Wert auf 100%
          • off - setzt Wert auf 0%
          • on-for-timer <sec> - Schaltet das Gerät für die gewählte Zeit in Sekunden [0-85825945] an.
            Hinweis: off-for-timer wie bei FS20 wird nicht unterstützt. Kann aber über Kanalregister programmiert werden.
          • on-till <time> - einschalten bis zum angegebenen Zeitpunkt.
              set <name> on-till 20:32:10
            Das momentane Maximum für eine Endzeit liegt bei 24 Stunden.
          • press <[short|long]><[on|off]>
            press <[short|long]><[noBurst]> simuliert den Druck auf einen lokalen Knopf oder direkt verbundenen Knopf des Aktors.
            [short|long] wählt aus ob ein kurzer oder langer Tastendruck simuliert werden soll.
            [on|off] ist relevant für Geräte mit direkter Bedienung pro Kanal. Verfügbar für Dimmer und Rollo-Aktoren, normalerweise nicht für Schalter.
            [noBurst] ist relevant für Peers die bedingte Bursts unterstützen. Dies bewirkt das der Befehl der Warteliste des Peers zugefügt wird. Ein Burst wird anschließend nicht ausgeführt da der Befehl wartet bis der Peer aufgewacht ist. Dies führt zu einer Verzögerung des Tastendrucks, reduziert aber Übertragungs- und Performanceaufwand.
          • toggle - toggled den Aktor. Schaltet vom aktuellen Level auf 0% oder von 0% auf 100%
        • pressL <peer>
          Simuliert einen langen Tastendruck für einen angegebenen peer. Siehe press.
        • pressS <peer>
          Simuliert einen kurzen Tastendruck für einen angegebenen peer. Siehe press.

        • dimmer, blindActuator
          Dimmer können virtuelle Kanäle unterstützen. Diese werden automatisch angelegt falls vorhanden. Normalerweise gibt es 2 virtuelle Kanäle zusätzlich zum primären Kanal. Virtuelle Dimmerkanäle sind standardmäßig deaktiviert, können aber parallel zum ersten Kanal benutzt werden um das Licht zu steuern.
          Die virtuellen Kanäle haben Standardnamen SW<channel>_V<nr> z.B. Dimmer_SW1_V1 and Dimmer_SW1_V2.
          Virtuelle Dimmerkanäle unterscheiden sich komplett von virtuellen Knöpfen und Aktoren in FHEM, sind aber Teil des HM-Geräts. Dokumentation und Möglichkeiten würde hier aber zu weit führen.
          • 0 - 100 [on-time] [ramp-time]
            Setzt den Aktor auf den gegeben Wert (In Prozent) mit einer Auflösung von 0.5.
            Bei Dimmern ist optional die Angabe von "on-time" und "ramp-time" möglich, beide in Sekunden mit 0.1s Abstufung.
            "On-time" verhält sich analog dem "on-for-timer".
            "Ramp-time" beträgt standardmäßig 2.5s, 0 bedeutet umgehend.
          • on
          • off
          • press <[short|long]><[on|off]>
          • toggle
          • toggleDir - toggelt die fahrtrichtung des Rollo-Aktors. Es wird umgeschaltet zwischen auf/stop/ab/stop
          • on-for-timer <sec> - Nur Dimmer!
          • on-till <time> - Nur Dimmer!
          • stop - Stopt Bewegung (Rollo) oder Dimmerrampe
          • old - schaltet auf den vorigen Wert zurück. Nur dimmer.
          • pct <level> [<ontime>] [<ramptime>] - setzt Aktor auf gewünschten absolut Wert.
            Optional können für Dimmer "ontime" und "ramptime" angegeben werden.
            "Ontime" kann dabei in Sekunden angegeben werden. Kann auch als Endzeit angegeben werden im Format hh:mm:ss
          • up [changeValue] [<ontime>] [<ramptime>] Einen Schritt hochdimmen.
          • down [changeValue] [<ontime>] [<ramptime>] Einen Schritt runterdimmen.
            "changeValue" ist optional und gibt den zu ändernden Wert in Prozent an. Mögliche Abstufung dabei ist 0.5%, Standard ist 10%.
            "ontime" ist optional und gibt an wielange der Wert gehalten werden soll. '0' bedeutet endlos und ist Standard.
            "ramptime" ist optional und definiert die Zeit bis eine änderung den neuen Wert erreicht. Hat nur für Dimmer Bedeutung.

        • remotes, pushButton
          Diese Geräteart reagiert nicht auf Anfragen, außer sie befinden sich im Lernmodus. FHEM reagiert darauf indem alle Anfragen gesammelt werden bis der Lernmodus detektiert wird. Manuelles Eingreifen durch den Benutzer ist dazu nötig. Ob Befehle auf Ausführung warten kann auf Geräteebene mit dem Parameter 'protCmdPend' abgefragt werden.
          • peerChan <btn_no> <actChan> [single|dual|reverse] [set|unset] [both|actor|remote]
            "peerChan" richtet eine Verbindung zwischen Sender-Kanal und Aktor-Kanal ein, bei HM "link" genannt. "Peering" darf dabei nicht mit "pairing" verwechselt werden.
            Pairing bezeichnet das Zuordnen eines Geräts zu einer Zentrale.
            Peering bezeichnet das faktische Verbinden von Kanälen.
            Peering erlaubt die direkte Interaktion zwischen Sender und Aktor ohne den Einsatz einer CCU
            Peering eines Senderkanals veranlaßt den Sender nach dem Senden eines Triggers auf die Bestätigung eines - jeden - Peers zu warten. Positives Feedback (z.B. grüne LED) gibt es dabei nur wenn alle Peers den Befehl bestätigt haben.
            Peering eines Aktorkanals richtet dabei einen Satz von Parametern ein welche die auszuführenden Aktionen definieren wenn ein Trigger dieses Peers empfangen wird. Dies bedeutet:
            - nur Trigger von Peers werden ausgeführt
            - die auszuführende Aktion muss für den zugehörigen Trigger eines Peers definiert werden
            Ein Aktorkanal richtet dabei eine Standardaktion beim Peering ein - diese hängt vom Aktor ab. Sie kann ebenfalls davon abhängen ob ein oder zwei Tasten ein einem Befehl gepeert werden. Peert man einen Schalter mit 2 Tasten kann eine Taste für 'on' und eine andere für 'off' angelegt werden. Wenn nur eine Taste definiert wird ist die Funktion wahrscheinlich 'toggle'.
            Die Funktion kann durch programmieren des Register (vom Aktor abhängig) geändert werden.
            Auch wenn der Befehl von einer Fernbedienung oder einem Taster kommt hat er direkten Effekt auf den Aktor. Das Peering beider Seiten ist quasi unabhängig und hat unterschiedlich Einfluss auf Sender und Empfänger.
            Peering eines Aktorkanals mit mehreren Senderkanälen ist ebenso möglich wie das eines Senderkanals mit mehreren Empfängerkanälen.
            <actChan> ist der zu verknüpfende Aktorkanal.
            <btn_no> ist der zu verknüpfende Senderkanal (Knopf). Wird 'single' gewählt werden die Tasten von 1 an gezählt. Für 'dual' ist btn_no die Nummer des zu verwendenden Tasterpaares. Z.B. ist '3' iim Dualmodus das dritte Tasterpaar welches mit Tasten 5 und 6 im Singlemodus übereinstimmt.
            Wird der Befehl auf einen Kanal angewendet wird btn_no igroriert. Muss gesetzt sein, sollte dabei 0 sein.
            [single|dual]: Dieser Modus bewirkt das Standardverhalten des Aktors bei Benutzung eines Tasters. Ein Dimmer kann z.B. an einen einzelnen oder ein Paar von Tastern angelernt werden.
            Standardeinstellung ist "dual".
            'dual' (default) Schalter verknüpft zwei Taster mit einem Aktor. Bei einem Dimmer bedeutet das ein Taster für hoch- und einer für runterdimmen.
            'reverse' identisch zu dual - nur die Reihenfolge der Buttons ist gedreht
            'single' benutzt nur einen Taster des Senders. Ist z.B. nützlich für einen einfachen Schalter der nur zwischen an/aus toggled. Aber auch ein Dimmer kann an nur einen Taster angelernt werden.
            [set|unset]: Wählt aus ob Peer hinzugefügt oder entfernt werden soll.
            Hinzufügen ist Standard.
            'set' stellt Peers für einen Kanal ein.
            'unset' entfernt Peer für einen Kanal.
            [actor|remote|both] beschränkt die Ausführung auf Aktor oder Fernbedienung. Das ermöglicht dem Benutzer das entfernen des Peers vom Fernbedienungskanal ohne die Einstellungen am Aktor zu entfernen.
            Standardmäßig gewählt ist "both" für beides.
            Example:
              set myRemote peerChan 2 mySwActChn single set #Peer zweiten Knopf mit Aktorkanal
              set myRmtBtn peerChan 0 mySwActChn single set #myRmtBtn ist ein Knopf der Fernbedienung. '0' wird hier nicht verarbeitet
              set myRemote peerChan 2 mySwActChn dual set #Verknüpfe Knöpfe 3 und 4
              set myRemote peerChan 3 mySwActChn dual unset #Entferne Peering für Knöpfe 5 und 6
              set myRemote peerChan 3 mySwActChn dual unset aktor #Entferne Peering für Knöpfe 5 und 6 nur im Aktor
              set myRemote peerChan 3 mySwActChn dual set remote #Verknüpfe Knöpfe 5 und 6 nur mit Fernbedienung. Linkeinstellungen mySwActChn werden beibehalten.
        • virtual
          • peerChan siehe remote
          • press [long|short] [<peer>] [<repCount>] [<repDelay>]
              Simuliert den Tastendruck am Aktor eines gepeerted Sensors
            • [long|short] soll ein langer oder kurzer Taastendrucl simuliert werden? Default ist kurz.
            • [<peer>] legt fest, wessen peer's trigger simuliert werden soll.Default ist self(channelNo).
            • [<repCount>] nur gueltig fuer long. wie viele messages sollen gesendet werden? (Laenge des Button press). Default ist 1.
            • [<repDelay>] nur gueltig fuer long. definiert die Zeit zwischen den einzelnen Messages.
          • virtTemp <[off -10..50]> Simuliert ein Thermostat. Wenn mit einem Gerät gepeert wird periodisch eine Temperatur gesendet, solange bis "off" gewählt wird. Siehe auch virtHum
          • virtHum <[off -10..50]> Simuliert den Feuchtigkeitswert eines Thermostats. Wenn mit einem Gerät verknüpft werden periodisch Luftfeuchtigkeit undTemperatur gesendet, solange bis "off" gewählt wird. Siehe auch virtTemp
          • valvePos <[off 0..100]> steuert einen Ventilantrieb
        • smokeDetector
          Hinweis: All diese Befehle funktionieren momentan nur wenn mehr als ein Rauchmelder vorhanden ist, und diese gepeert wurden um eine Gruppe zu bilden. Um die Befehle abzusetzen muss der Master dieser gruppe verwendet werden, und momentan muss man raten welcher der Master ist.
          smokeDetector kann folgendermaßen in Gruppen eingeteilt werden: peerChan. Alle Mitglieder müssen mit dem Master verknüpft werden. Auch der Master muss mit peerChan zur Gruppe zugefügt werden - z.B. mit sich selbst verknüpft! Dadurch hat man volle Kontrolle über die Gruppe und muss nicht raten.
          • teamCall - führt einen Netzwerktest unter allen Gruppenmitgliedern aus
          • teamCallBat - Simuliert einen low-battery alarm
          • alarmOn - löst einen Alarm aus
          • alarmOff - schaltet den Alarm aus
        • 4Dis (HM-PB-4DIS-WM|HM-PB-4DIS-WM|HM-RC-Dis-H-x-EU|ROTO_ZEL-STG-RM-DWT-10)
          • text <btn_no> [on|off] <text1> <text2>
            Zeigt Text auf dem Display eines Geräts an. Für diesen Zweck muss zuerst ein set-Befehl (oder eine Anzahl davon) abgegeben werden, dann können im "teach-in" Menü des 4Dis mit "Central" Daten übertragen werden.
            Falls auf einen Kanal angewendet dürfen btn_no und on|off nicht verwendet werden, nur reiner Text.
            \_ wird durch ein Leerzeichen ersetzt.
            Beispiel:
              set 4Dis text 1 on On Lamp
              set 4Dis text 1 off Kitchen Off

              set 4Dis_chn4 text Kitchen Off

        • Climate-Control (HM-CC-TC)
          • desired-temp <temp>
            Setzt verschiedene Temperaturen. <temp> muss zwischen 6°C und 30°C liegen, die Auflösung beträgt 0.5°C.
          • tempListSat [prep|exec] HH:MM temp ... 24:00 temp
          • tempListSun [prep|exec] HH:MM temp ... 24:00 temp
          • tempListMon [prep|exec] HH:MM temp ... 24:00 temp
          • tempListTue [prep|exec] HH:MM temp ... 24:00 temp
          • tempListThu [prep|exec] HH:MM temp ... 24:00 temp
          • tempListWed [prep|exec] HH:MM temp ... 24:00 temp
          • tempListFri [prep|exec] HH:MM temp ... 24:00 temp
            Gibt eine Liste mit Temperaturintervallen an. Bis zu 24 Intervall können pro Wochentag definiert werden, die Auflösung dabei sind 10 Minuten. Die letzte Zeitangabe muss 24:00 Uhr sein.
            Beispiel: bis 6:00 soll die Temperatur 19°C sein, dann bis 23:00 Uhr 22.5°C, anschließend werden bis Mitternacht 19°C gewünscht.
            set th tempListSat 06:00 19 23:00 22.5 24:00 19
          • partyMode <HH:MM><durationDays>
            setzt die Steuerung für die angegebene Zeit in den Partymodus. Dazu ist die Endzeit sowie Anzahl an Tagen die er dauern soll anzugeben. Falls er am nächsten Tag enden soll ist '1' anzugeben
          • sysTime
            setzt Zeit des Klimakanals auf die Systemzeit

        • Climate-Control (HM-CC-RT-DN|HM-CC-RT-DN-BoM)
          • controlMode <auto|boost|day|night>
          • controlManu <temp>
          • controlParty <temp><startDate><startTime><endDate><endTime>
            setzt die Steuerung in den Partymodus, definiert Temperatur und Zeitrahmen.
            Beispiel:
            set controlParty 15 03.8.13 20:30 5.8.13 11:30
          • sysTime
            setzt Zeit des Klimakanals auf die Systemzeit
          • desired-temp <temp>
            Setzt verschiedene Temperaturen. <temp> muss zwischen 6°C und 30°C liegen, die Auflösung beträgt 0.5°C.
          • tempListSat [prep|exec] HH:MM temp ... 24:00 temp
          • tempListSun [prep|exec] HH:MM temp ... 24:00 temp
          • tempListMon [prep|exec] HH:MM temp ... 24:00 temp
          • tempListTue [prep|exec] HH:MM temp ... 24:00 temp
          • tempListThu [prep|exec] HH:MM temp ... 24:00 temp
          • tempListWed [prep|exec] HH:MM temp ... 24:00 temp
          • tempListFri [prep|exec] HH:MM temp ... 24:00 temp
            Gibt eine Liste mit Temperaturintervallen an. Bis zu 24 Intervall können pro Wochentag definiert werden, die Auflösung dabei sind 10 Minuten. Die letzte Zeitangabe muss immer 24:00 Uhr sein.
            Der optionale Parameter [prep|exec] erlaubt das packen der Nachrichten und verbessert damit deutlich die Datenübertragung. Besonders nützlich wenn das Gerät im "Wakeup"-modus betrieben wird. Benutzung durch senden der Befehle mit Parameter "prep". Daten werden dann für das Senden gesammelt. Der letzte Befehl muss den Parameter "exec" habe um die Information zu übertragen.
            Beispiel: bis 6:00 soll die Temperatur 19°C sein, dann bis 23:00 Uhr 22.5°C, anschließend werden bis Mitternacht 19°C gewünscht.
            set th tempListSat 06:00 19 23:00 22.5 24:00 19

            set th tempListSat prep 06:00 19 23:00 22.5 24:00 19
            set th tempListSun prep 06:00 19 23:00 22.5 24:00 19
            set th tempListMon prep 06:00 19 23:00 22.5 24:00 19
            set th tempListTue exec 06:00 19 23:00 22.5 24:00 19
          • tempListTmpl =>"[verify|restore] [[<file>:]templateName] ...
            Die Temperaturlisten für ein oder mehrere Devices können in einem File hinterlegt werden. Es wird ein template für eine Woche hinterlegt. Der User kann dieses template in ein Device schreiben lassen (restore). Er kann auch prüfen, ob das Device korrekt nach dieser Templist programmiert ist (verify). Default Opeartion ist verify.
            Default File ist tempList.cfg.
            Default templateName ist der name der Entity
            Default für file und templateName kann mit dem Attribut tempListTmpl gesetzt werden.
            Beispiel für ein templist File. room1 und room2 sind die Namen 2er Tempaltes:
            entities:room1 tempListSat>08:00 16.0 15:00 18.0 21:30 19.0 24:00 14.0 tempListSun>08:00 16.0 15:00 18.0 21:30 19.0 24:00 14.0 tempListMon>07:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0 tempListTue>07:00 16.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0 tempListWed>07:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0 tempListThu>07:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0 tempListFri>07:00 16.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0 entities:room2 tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0 tempListSun>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0 tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0 tempListTue>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0 tempListWed>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0 tempListThu>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0 tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0 Specials:
          • none: das Template wird ignoriert
          • defaultWeekplan: Es wird als Default jeden Tag 18.0 Grad eingestellt. Sinnvoll nutzbar wenn man einen TC als Kontroller nutzt. Der Wochenplan des TC wird dann imlizit genutzt
          • tempTmplSet =>"[[ <file> :]templateName]
            Setzt das Attribut und sendet die Änderungen an das Device.
          • templateDel =>" <template>
            Löscht eine Templateeintrag an dieser entity.

        • OutputUnit (HM-OU-LED16)
          • led [off|red|green|yellow]
            schaltet die LED des Kanals auf die gewünschte Farbe. Wird der Befehl auf ein Gerät angewandt so werden alle LEDs auf diese Farbe gesetzt.
            Experten können die LEDs separat durch eine 8-stellige Hex-Zahl ansteuern.
          • ilum <Helligkeit><Dauer>
            <Helligkeit> [0-15] der Beleuchtung.
            <Dauer> [0-127] in Sekunden, 0 bedeutet dauernd an.

        • OutputUnit (HM-OU-CFM-PL)
          • led <color>[,<color>..] [<repeat>..]
            Mögliche Farben sind [redL|greenL|yellowL|redS|greenS|yellowS|pause]. Eine Folge von Farben kann durch trennen der Farbeinträge mit ',' eingestellt werden. Leerzeichen dürfen in der Liste nicht benutzt werden. 'S' bezeichnet kurze und 'L' lange Beleuchtungsdauer.
            repeat definiert wie oft die Sequenz ausgeführt werden soll. Standard ist 1.
          • playTone <MP3No>[,<MP3No>..] [<repeat>] [<volume>]
            Spielt eine Reihe von Tönen. Die Liste muss mit ',' getrennt werden. Leerzeichen dürfen in der Liste nicht benutzt werden.
            replay kann verwendet werden um den zuletzt gespielten Klang zu wiederholen.
            repeat definiert wie oft die Sequenz ausgeführt werden soll. Standard ist 1.
            volume kann im Bereich 0..10 liegen. 0 stoppt jeden aktuell gespielten Sound. Standard ist 10 (100%.
            Beispiel:
              set cfm_Mp3 playTone 3 # MP3 Titel 3 einmal
              set cfm_Mp3 playTone 3 3 # MP3 Titel 3 dreimal
              set cfm_Mp3 playTone 3 1 5 # MP3 Titel 3 mit halber Lautstärke
              set cfm_Mp3 playTone 3,6,8,3,4 # MP3 Titelfolge 3,6,8,3,4 einmal
              set cfm_Mp3 playTone 3,6,8,3,4 255# MP3 Titelfolge 3,6,8,3,4 255 mal
              set cfm_Mp3 playTone replay # Wiederhole letzte Sequenz

              set cfm_Led led redL 4 # rote LED dreimal lang blinken
              set cfm_Led led redS,redS,redS,redL,redL,redL,redS,redS,redS 255 # SOS 255 mal

        • HM-RC-19xxx
          • alarm <count>
            sendet eine Alarmnachricht an die Steuerung
          • service <count>
            sendet eine Servicenachricht an die Steuerung
          • symbol <symbol> [set|unset]
            aktiviert ein verfügbares Symbol auf der Steuerung
          • beep [off|1|2|3]
            aktiviert Töne
          • backlight [off|on|slow|fast]
            aktiviert Hintergrundbeleuchtung
          • display <text> comma unit tone backlight <symbol(s)>
            Steuert das Display der Steuerung
            <text> : bis zu 5 Zeichen
            comma : 'comma' aktiviert das Komma, 'no' läßt es aus
            [unit] : setzt Einheitensymbole. [off|Proz|Watt|x3|C|x5|x6|x7|F|x9|x10|x11|x12|x13|x14|x15]. Momentan sind x3..x15 nicht getestet.
            tone : aktiviert einen von 3 Tönen [off|1|2|3]
            backlight: läßt die Hintergrundbeleuchtung aufblinken [off|on|slow|fast]
            <symbol(s)> aktiviert die Anzeige von Symbolen. Mehrere Symbole können zu selben Zeit aktiv sein, Verknüpfung erfolgt komma-getrennt. Dabei keine Leerzeichen verwenden. Mögliche Symbole: [bulb|switch|window|door|blind|scene|phone|bell|clock|arrowUp|arrowDown]

            Beispiel:
              # "Hello" auf dem Display, Symbol bulb an, Hintergrundbeleuchtung, Ton ausgeben
              set FB1 display Hello no off 1 on bulb
              # "1234,5" anzeigen mit Einheit 'W'. Symbole scene,phone,bell und # clock sind aktiv. Hintergrundbeleuchtung blinikt schnell, Ausgabe von Ton 2
              set FB1 display 12345 comma Watt 2 fast scene,phone,bell,clock

        • HM-Dis-WM55
          • displayWM help
            displayWM [long|short] <text1> <color1> <icon1> ... <text6> <color6> <icon6>
            displayWM [long|short] <lineX> <text> <color> <icon>
            es können bis zu 6 Zeilen programmiert werden.
            lineX legt die zu ändernde Zeilennummer fest. Es können die 3 Parameter der Zeile geändert werden.
            textNo ist der anzuzeigende Text. Der Inhalt des Texts wird in den Buttonds definiert. txt<BtnNo>_<lineNo> referenziert den Button und dessn jeweiligen Zeile. Alternativ kann ein bis zu 12 Zeichen langer Freitext angegeben werden
            color kann sein white, red, orange, yellow, green, blue
            icon kann sein off, on, open, closed, error, ok, noIcon
            Example:
              set disp01 displayWM short txt02_2 green noIcon txt10_1 red error txt05_2 yellow closed txt02_2 orange open
              set disp01 displayWM long line3 txt02_2 green noIcon
              set disp01 displayWM long line2 nc yellow noIcon
              set disp01 displayWM long line6 txt02_2
              set disp01 displayWM long line1 nc nc closed

        • HM-Dis-EP-WM55
          • displayEP help
            displayEP <text1,icon1:text2,icon2:text3,icon3> <sound> <repetition> <pause> <signal>
            bis zu 3 Zeilen werden adressiert.
            Wenn help eingegeben wird wird eine hilfe zum Kommando ausgegeben. Optionen der Parameter werden ausgegeben.
            textx 12 char text für die Zeile. Wenn leer wird der Wert gemäß Reading genutzt. Typisch bedeuted es, dass keine Änderung stattfindet. text0-9 zeigt den vordefinierten Wert der Kanäle 4 bis 8 an. 0xHH erlaubt die anzeige eines hex Zeichens.
            iconx Icon der Zeile. Typisch bedeuted es, dass keine Änderung stattfindet.
            sound sound zum Abspielen.
            repetition 0..15
            pause 1..160
            signal Signalfarbe zum Anzeigen

            Note: param reWriteDisplayxx
          • Beim Druck einer Taste ueberschreibt das Geraet diemittleren 3 Zeilen. Wenn da Attribut
            attr chan param reWriteDisplayxx
            gesetzt ist werden die 3 Zeilen nach xx Sekunden auf den Orginalwert zurück geschrieben.

        • keyMatic

            Keymatic verwendet eine AES-signierte Kommunikation. Die Steuerung von KeyMatic ist mit HMLAN und mit CUL möglich. Um die Keymatic mit einem CUL zu steuern, muss das Perl-Modul Crypt::Rijndael installiert sein.

          • lock
            Schließbolzen fährt in Zu-Position
          • unlock [sec]
            Schließbolzen fährt in Auf-Position.
            [sec]: Stellt die Verzögerung ein nach der sich das Schloss automatisch wieder verschließt.
            0 - 65535 Sekunden
          • open [sec]
            Entriegelt die Tür sodass diese geöffnet werden kann.
            [sec]: Stellt die Verzögerung ein nach der sich das Schloss automatisch wieder verschließt.
            0 - 65535 Sekunden
        • winMatic

            winMatic arbeitet mit 2 Kanälen, einem für die Fenstersteuerung und einem für den Akku.

          • level <level> <relockDelay> <speed>
            stellt den Wert ein.
            <level>: Bereich ist 0% bis 100%
            <relockDelay>: Spanne reicht von 0 bis 65535 Sekunden. 'ignore' kann verwendet werden um den Wert zu ignorieren.
            <speed>: Bereich ist 0% bis 100%
          • stop
            stopt die Bewegung
        • CCU_FHEM
          • defIgnUnknown
            Definieren die unbekannten Devices und setze das Attribut ignore. Ddann loesche die Readings.
        • HM-Sys-sRP-Pl
          legt Einträge für den Repeater an. Bis zu 36 Einträge können angelegt werden.
          • setRepeat <entry> <sender> <receiver> <broadcast>
            <entry> [1..36] Nummer des Eintrags in der Tabelle.
            <sender> Name oder HMid des Senders oder der Quelle die weitergeleitet werden soll
            <receiver> Name oder HMid des Empfängers oder Ziels an das weitergeleitet werden soll
            <broadcast> [yes|no] definiert ob Broadcasts von einer ID weitergeleitet werden sollen.

            Kurzanwendung:
            setRepeat setAll 0 0 0
            schreibt die gesamte Liste der Geräte neu. Daten kommen vom Attribut repPeers.
            Das Attribut repPeers hat folgendes Format:
            src1:dst1:[y/n],src2:dst2:[y/n],src2:dst2:[y/n],...

            Formatierte Werte von repPeer:
              Number src dst broadcast verify
              number: Nummer des Eintrags in der Liste
              src: Ursprungsgerät der Nachricht - aus Repeater ausgelesen
              dst: Zielgerät der Nachricht - aus den Attributen abgeleitet
              broadcast: sollen Broadcasts weitergeleitet werden - aus Repeater ausgelesen
              verify: stimmen Attribute und ausgelesen Werte überein?

        Debugging:
        • raw <data> ...
          nur für Experimente benötigt. Sendet eine Liste von "Roh"-Befehlen. Der erste Befehl wird unmittelbar gesendet, die folgenden sobald der vorherige bestätigt wurde. Die Länge wird automatisch berechnet und der Nachrichtenzähler wird erhöht wenn die ersten beiden Zeichen ++ sind. Beispiel (AES aktivieren):
                      set hm1 raw ++A001F100001234560105000000001\
                      ++A001F10000123456010802010AF10B000C00\
                      ++A001F1000012345601080801\
                      ++A001F100001234560106
                    

      Get
      • configSave <filename>
        Sichert die Einstellungen eines Eintrags in einer Datei. Die Daten werden in einem von der FHEM-Befehlszeile ausführbaren Format gespeichert.
        Die Datei liegt im FHEM Home-Verzeichnis neben der fhem.cfg. Gespeichert wird kumulativ- d.h. neue Daten werden an die Datei angehängt. Es liegt am Benutzer das doppelte speichern von Einträgen zu vermeiden.
        Ziel der Daten ist NUR die Information eines HM-Gerätes welche IM Gerät gespeichert ist. Im Deteil sind das nur die Peer-Liste sowie die Register. Durch die Register wird also das Peering eingeschlossen.
        Die Datei ist vom Benutzer les- und editierbar. Zusätzlich gespeicherte Zeitstempel helfen dem Nutzer bei der Validierung.
        Einschränkungen:
        Auch wenn alle Daten eines Eintrags in eine Datei gesichert werden so sichert FHEM nur die zum Zeitpunkt des Speicherns verfügbaren Daten! Der Nutzer muss also die Daten der HM-Hardware auslesen bevor dieser Befehl ausgeführt wird. Siehe empfohlenen Ablauf unten.
        Dieser Befehl speichert keine FHEM-Attribute oder Gerätedefinitionen. Diese verbleiben in der fhem.cfg.
        Desweiteren werden gesicherte Daten nicht automatisch zurück auf die HM-Hardware geladen. Der Benutzer muss die Wiederherstellung auslösen.

        Ebenso wie ander Befehle wird 'configSave' am besten auf ein Gerät und nicht auf einen Kanal ausgeführt. Wenn auf ein Gerät angewendet werden auch die damit verbundenen Kanäle gesichert.

        Empfohlene Arbeitsfolge für ein Gerät 'HMdev':
        set HMdev clear msgEvents # alte Events löschen um Daten besser kontrollieren zu können
        set HMdev getConfig # Geräte- und Kanalinformation auslesen
        # warten bis Ausführung abgeschlossen ist
        # "protState" sollte dann "CMDs_done" sein
        # es sollten keine Warnungen zwischen "prot" und den Variablen auftauchen
        get configSave myActorFile
      • param <paramName>
        Gibt den Inhalt der relevanten Parameter eines Eintrags zurück.
        Hinweis: wird der Befehl auf einen Kanal angewandt und 'model' abgefragt so wird das Model des inhalteanbietenden Geräts zurückgegeben.
      • reg <addr> <list> <peerID>
        liefert den Wert eines Registers zurück. Daten werden aus dem Speicher von FHEM und nicht direkt vom Gerät geholt. Falls der Registerinhalt nicht verfügbar ist muss "getConfig" sowie anschließend "getReg" verwendet werden.
        <addr> Adresse des Registers in HEX. Registername kann alternativ verwendet werden falls in FHEM bekannt. "all" gibt alle dekodierten Register eines Eintrags in einer Liste zurück.
        <list> Liste aus der das Register gewählt wird. Wird der REgistername verwendet wird "list" ignoriert und kann auf '0' gesetzt werden.
        <peerID> identifiziert die Registerbänke für "list3" und "list4". Kann als Dummy gesetzt werden wenn nicht benötigt.
      • regList
        gibt eine Liste der von FHEM für dieses Gerät dekodierten Register zurück.
        Beachten dass noch mehr Register für ein Gerät implemetiert sein können.
      • saveConfig <file>
        speichert Peers und Register in einer Datei.
        Gespeichert werden die Daten wie sie in FHEM verfügbar sind. Es ist daher notwendig vor dem Speichern die Daten auszulesen.
        Der Befehl unterstützt Aktionen auf Geräteebene. D.h. wird der Befehl auf ein Gerät angewendet werden auch alle verbundenen Kanaleinträge gesichert.
        Das Speichern der Datei erfolgt kumulativ. Wird ein Eintrag mehrfach in der selben Datei gespeichert so werden die Daten an diese angehängt. Der Nutzer kann den Zeitpunkt des Speichern bei Bedarf auslesen.
        Der Inhalt der Datei kann verwendet werden um die Geräteeinstellungen wiederherzustellen. Er stellt alle Peers und Register des Eintrags wieder her.
        Zwänge/Beschränkungen:
        vor dem zurückschreiben der Daten eines Eintrags muss das Gerät mit FHEM verbunden werden.
        "restore" löscht keine verknüpften Kanäle, es fügt nur neue Peers hinzu.
      • listDevice
        • bei einer CCU gibt es eine Liste der Devices, welche den ccu service zum zuweisen der IOs zurück
        • beim ActionDetector wird eine Komma geteilte Liste der Entities zurückgegeben
          get ActionDetector listDevice # returns alle assigned entities
          get ActionDetector listDevice notActive# returns entities ohne status alive
          get ActionDetector listDevice alive # returns entities mit status alive
          get ActionDetector listDevice unknown # returns entities mit status unknown
          get ActionDetector listDevice dead # returns entities mit status dead

      Attribute
      • eventMap
      • do_not_notify
      • ignore
      • dummy
      • showtime
      • readingFnAttributes
      • aesCommReq wenn gesetzt wird HMLAN/USB AES signature anfordern bevor ACK zum Device gesendet wird.
        Die Funktion abeitet aktuell nur mit HMLAN/USB.
      • actAutoTry actAutoTry 0_off,1_on
        setzen erlaubt dem ActionDetector ein statusrequest zu senden falls das Device dead markiert werden soll. Das Attribut kann fuer Devices nützlich sein, welche sich nicht von selbst zyklisch melden.
      • actCycle actCycle <[hhh:mm]|off>
        Bietet eine 'alive' oder besser 'not alive' Erkennung für Geräte. [hhh:mm] ist die maximale Zeit ohne Nachricht eines Geräts. Wenn innerhalb dieser Zeit keine Nachricht empfangen wird so wird das Event"<device> is dead" generiert. Sendet das Gerät wieder so wird die Nachricht"<device> is alive" ausgegeben.
        Diese Erkennung wird durch 'autocreate' für jedes Gerät mit zyklischer Statusmeldung angelegt.
        Die Kontrollinstanz ist ein Pseudo-Gerät "ActionDetector" mit der HMId "000000".
        Aufgrund von Performanceüberlegungen liegt die Antwortverzögerung bei 600 Sekunden (10min). Kann über das Attribut "actCycle" des "ActionDetector" kontrolliert werden.
        Sobald die Überwachung aktiviert wurde hat das HM-Gerät 2 Attribute:
          actStatus: Aktivitätsstatus des Geräts
          actCycle: Detektionsspanne [hhh:mm]
        Die gesamte Funktion kann über den "ActionDetector"-Eintrag überprüft werden. Der Status aller Instanzen liegt im READING-Bereich.
        Hinweis: Diese Funktion kann ebenfalls für Geräte ohne zyklische Übertragung aktiviert werden. Es obliegt dem Nutzer eine vernünftige Zeitspanne festzulegen.
      • autoReadReg
        '0' autoReadReg wird ignorert.
        '1' wird automatisch in getConfig ausgeführt für das Device nach jedem reboot von FHEM.
        '2' wie '1' plus nach Power on.
        '3' wie '2' plus update wenn auf das Device geschreiben wird.
        '4' wie '3' plus fordert Status an, wenn es nicht korrekt erscheint
        '5' prüft Registerlisten und peerlisten. Wenn diese nicht komplett sind wird ein update angefordert
        '8_stateOnly' es wird nur der Status geprüft, updates für Register werden nicht gemacht.
        Ausführung wird verzögert ausgeführt. Wenn das IO eine gewisse Last erreicht hat wird das Kommando weiter verzögert um eine Überlast zu vermeiden.
        Empfohlene Zusammenhänge bei Nutzung:
          Benutze das Attribut für das Device, nicht für jeden einzelnen Kanal
          Das Setzen auf Level 5 wird für alle Devices und Typen empfohlen, auch wakeup Devices.
      • burstAccess
        kann für eine Geräteinstanz gesetzt werden falls das Model bedingte Bursts erlaubt. Das Attribut deaktiviert den Burstbetrieb (0_off) was die Nachrichtenmenge des HMLAN reduziert und damit die Wahrscheinlichkeit einer Überlast von HMLAN verringert.
        Einschalten (1_auto) erlaubt kürzere Reaktionszeiten eines Geräts. Der Nutzer muss nicht warten bis das Gerät wach ist.
        Zu beacht ist dass das Register "burstRx" im Gerät ebenfalls gesetzt werden muss.
      • expert
        Dieses Attribut steuert die Sichtbarkeit der Register Readngs. Damit wird die Darstellung der Geräteparameter kontrolliert.
        Es handdelt sich um einen binaer kodierten Wert mit folgenden Empfehlungen:
          0_defReg : default Register
          1_allReg : all Register
          2_defReg+raw : default Register und raw Register
          3_allReg+raw : alle Register und raw reading
          4_off : no Register
          8_templ+default: templates und default Register
          12_templOnly : nur templates
          251_anything : alles verfügbare
        Wird 'expert' auf ein Gerät angewendet so gilt dies auch für alle verknüpften Kanäle. Kann übergangen werden indem das Attribut ' expert' auch für den Gerätekanal gesetzt wird.
        Das Attribut "showInternalValues" bei den globalen Werten muss ebenfalls überprüft werden. "expert" macht sich diese Implementierung zu Nutze. Gleichwohl setzt "showInternalValues" - bei Definition - 'expert' außer Kraft .
      • IOgrp
        kann an Devices vergeben werden udn zeigt auf eine virtuelle ccu. Danach wird die ccu beim Senden das passende IO für das Device auswählen. Es ist notwendig, dass die virtuelle ccu definiert und alle erlaubten IOs eingetragen sind. Beim Senden wird die ccu prüfen welches IO operational ist und welches den besten rssi-faktor für das Device hat.
        Optional kann ein bevorzugtes IO definiert werden. In diesem Fall wird es, wenn operational, genutzt - unabhängig von den rssi Werten.
        Beispiel:
          attr myDevice1 IOgrp vccu
          attr myDevice2 IOgrp vccu:prefIO1,prefIO2,prefIO3
      • levelRange
        nur für Dimmer! Der Dimmbereich wird eingeschränkt. Es ist gedacht um z.B. LED Lichter unterstützen welche mit 10% beginnen und bei 40% bereits das Maximum haben. levelrange normalisiert den Bereich entsprechend. D.h. set 100 wird physikalisch den Dimmer auf 40%, 1% auf 10% setzen. 0% schaltet physikalisch aus.
        Beeinflusst werdne Kommndos on, up, down, toggle und pct. Nicht beeinflusst werden Kommandos die den Wert physikalisch setzen.
        Zu beachten:
        dimmer level von Peers gesetzt wird nicht beeinflusst. Dies wird durch Register konfiguriert.
        Readings level könnte negative werden oder über 100%. Das kommt daher, dass physikalisch der Bereich 0-100% ist aber auf den logischen bereicht normiert wird.
        Sind virtuelle Dimmer Kanäle verfügbar muss das Attribut für jeden Kanal gesetzt werden
        Beispiel:
          attr myChannel levelRange 0,40
          attr myChannel levelRange 10,80
      • tempListTmpl
        Setzt das Default für Heizungskontroller. Ist es nicht gesetzt wird der default filename genutzt und der name der entity als templatename. Z.B. ./tempList.cfg:RT_Clima
        Um das template nicht zu nutzen kann man es auf '0'setzen.
        Format ist <file>:<templatename>.
      • model, subType
        Diese Attribute werden bei erfolgreichem Pairing automatisch gesetzt. Sie sollten nicht per Hand gesetzt werden und sind notwendig um Gerätenachrichten korrekt interpretieren oder senden zu können.
      • param
        'param' definiert modelspezifische Verhalten oder Funktionen. Siehe "models" für Details.
      • msgRepeat
        Definiert die Nummer an Wiederholungen falls ein Gerät nicht rechtzeitig antwortet.
        Für Geräte die nur den "Config"-Modus unterstützen sind Wiederholungen nicht erlaubt.
        Bei Geräte mit wakeup-Modus wartet das Gerät bis zum nächsten Aufwachen. Eine längere Verzögerung sollte in diesem Fall angedacht werden.
        Wiederholen von Bursts hat Auswirkungen auf die HMLAN Übertragungskapazität.
      • rawToReadable
        Wird verwendet um Rohdaten von KFM100 in ein lesbares Fomrat zu bringen, basierend auf den gemessenen Werten. Z.B. langsames Füllen eines Tanks, während die Werte mit inform angezeigt werden. Man sieht:
          10 (bei 0%)
          50 (bei 20%)
          79 (bei 40%)
          270 (bei 100%)
        Anwenden dieser Werte: "attr KFM100 rawToReadable 10:0 50:20 79:40 270:100". FHEM für damit eine lineare Interpolation der Werte in den gegebenen Grenzen aus.
      • unit
        setzt die gemeldete Einheit des KFM100 falls 'rawToReadable' aktiviert ist. Z.B.
        attr KFM100 unit Liter
      • autoReadReg
        '0' autoReadReg wird ignoriert.
        '1' führt ein "getConfig" für ein Gerät automatisch nach jedem Neustart von FHEM aus.
        '2' verhält sich wie '1',zusätzlich nach jedem power_on.
        '3' wie '2', zusätzlich bei jedem Schreiben auf das Gerät
        '4' wie '3' und versucht außerdem den Status abzufragen falls dieser nicht verfügbar erscheint.
        '5' kontrolliert 'reglist' und 'peerlist'. Falls das Auslesen unvollständig ist wird 'getConfig' ausgeführt
        '8_stateOnly' aktualisiert nur Statusinformationen aber keine Konfigurationen wie Daten- oder Peerregister.
        Ausführung wird verzögert um eine Überlastung beim Start zu vermeiden . Daher werden Aktualisierung und Anzeige von Werten abhängig von der Größe der Datenbank verzögert geschehen.
        Empfehlungen und Einschränkungen bei Benutzung:
          Dieses Attribut nur auf ein Gerät oder Kanal 01 anwenden. Nicht auf einzelne Kanäle eines mehrkanaligen Geräts anwenden um eine doppelte Ausführung zu vermeiden.
          Verwendung bei Geräten die nur auf den 'config'-Modus reagieren wird nicht empfohlen da die Ausführung erst starten wird wenn der Nutzer die Konfiguration vornimmt
          Anwenden auf Geräte mit 'wakeup'-Modus ist nützlich. Zu bedenken ist aber dass die Ausführung bis zm "aufwachen" verzögert wird.

      verfügbare Parameter für "param"
      • HM-Sen-RD-O
        offAtPon: nur Heizkanäle: erzwingt Ausschalten der Heizung nach einem powerOn
        onAtRain: nur Heizkanäle: erzwingt Einschalten der Heizung bei Status 'rain' und Ausschalten bei Status 'dry'
      • virtuals
        noOnOff: eine virtuelle Instanz wird den Status nicht ändern wenn ein Trigger empfangen wird. Ist dieser Paramter nicht gegeben so toggled die Instanz ihren Status mit jedem trigger zwischen An und Aus
        msgReduce: falls gesetzt und der Kanal wird für genutzt wird jede Nachricht außer die der Ventilstellung verworfen um die Nachrichtenmenge zu reduzieren
      • blind
        levelInverse während HM 100% als offen und 0% als geschlossen behandelt ist dies evtl. nicht intuitiv für den Nutzer. Defaut für 100% ist offen und wird als 'on'angezeigt. Das Setzen des Parameters invertiert die Anzeige - 0% wird also offen und 100% ist geschlossen.
        ACHTUNG: Die Anpassung betrifft nur Readings und Kommandos. Register sind nicht betroffen.
        ponRestoreSmart bei powerup des Device fährt das Rollo in die vermeintlich nächstgelegene Endposition und anschliessend in die ursprüngliche Position.
        ponRestoreForce bei powerup des Device fährt das Rollo auf Level 0, dann auf Level 100 und anschliessend in die ursprüngliche Position.
      • sensRain
        siren
        powerMeter
        switch
        dimmer
        rgb
        showTimed wenn timedOn running ist wird -till an state gehängt. Dies führt dazu, dass ggf. on-till im State steht was das stateIcon handling verbessert.

      Erzeugte Events:
      • Allgemein
        recentStateType:[ack|info] # kann nicht verwendet werden um Nachrichten zu triggern
        • ack zeigt an das eine Statusinformation aus einer Bestätigung abgeleitet wurde
        • info zeigt eine automatische Nachricht eines Geräts an
        • sabotageAttackId
          Alarmiert bei Konfiguration des Geräts durch unbekannte Quelle
        • sabotageAttack
          Alarmiert bei Konfiguration des Geräts welche nicht durch das System ausgelöst wurde
        • trigDst_<name>: noConfig
          Ein Sensor triggert ein Device welches nicht in seiner Peerliste steht. Die Peerliste ist nicht akuell
      • HM-CC-TC,ROTO_ZEL-STG-RM-FWT
        T: $t H: $h
        battery:[low|ok]
        measured-temp $t
        humidity $h
        actuator $vp %
        desired-temp $dTemp
        desired-temp-manu $dTemp #Temperatur falls im manuellen Modus
        desired-temp-cent $dTemp #Temperatur falls im Zentrale-Modus
        windowopen-temp-%d %.1f (sensor:%s)
        tempList$wd hh:mm $t hh:mm $t ...
        displayMode temp-[hum|only]
        displayTemp [setpoint|actual]
        displayTempUnit [fahrenheit|celsius]
        controlMode [auto|manual|central|party]
        tempValveMode [Auto|Closed|Open|unknown]
        param-change offset=$o1, value=$v1
        ValveErrorPosition_for_$dname $vep %
        ValveOffset_for_$dname : $of %
        ValveErrorPosition $vep %
        ValveOffset $of %
        time-request
        trig_<src> <value> #channel was triggered by <src> channel. Dieses Event hängt vom kompletten Auslesen der Kanalkonfiguration ab, anderenfalls können Daten unvollständig oder fehlerhaft sein.
        trigLast <channel> #letzter empfangener Trigger
      • HM-CC-RT-DN and HM-CC-RT-DN-BoM
        state:T: $actTemp desired: $setTemp valve: $vp %
        motorErr: [ok|ValveTight|adjustRangeTooLarge|adjustRangeTooSmall|communicationERR|unknown|lowBat|ValveErrorPosition] measured-temp $actTemp
        desired-temp $setTemp
        ValvePosition $vp %
        mode [auto|manual|party|boost]
        battery [low|ok]
        batteryLevel $bat V
        measured-temp $actTemp
        desired-temp $setTemp
        actuator $vp %
        time-request
        trig_<src> <value> #Kanal wurde durch <src> Kanal ausgelößt.
      • HM-CC-VD,ROTO_ZEL-STG-RM-FSA
        $vp %
        battery:[critical|low|ok]
        motorErr:[ok|blocked|loose|adjusting range too small|opening|closing|stop]
        ValvePosition:$vp %
        ValveErrorPosition:$vep %
        ValveOffset:$of %
        ValveDesired:$vp % # durch Temperatursteuerung gesetzt
        operState:[errorTargetNotMet|onTarget|adjusting|changed] # operative Bedingung
        operStateErrCnt:$cnt # Anzahl fehlgeschlagener Einstellungen
      • HM-CC-SCD
        [normal|added|addedStrong]
        battery [low|ok]
      • HM-SEC-SFA-SM
        powerError [on|off]
        sabotageError [on|off]
        battery: [critical|low|ok]
      • HM-LC-BL1-PB-FM
        motor: [opening|closing]
      • HM-LC-SW1-BA-PCB
        battery: [low|ok]
      • HM-OU-LED16
        color $value # in Hex - nur für Gerät
        $value # in Hex - nur für Gerät
        color [off|red|green|orange] # für Kanal
        [off|red|green|orange] # für Kanal
      • HM-OU-CFM-PL
        [on|off|$val]
      • HM-Sen-Wa-Od
        $level%
        level $level%
      • KFM100
        $v
        $cv,$unit
        rawValue:$v
        Sequence:$seq
        content:$cv,$unit
      • KS550/HM-WDS100-C6-O
        T: $t H: $h W: $w R: $r IR: $ir WD: $wd WDR: $wdr S: $s B: $b
        temperature $t
        humidity $h
        windSpeed $w
        windDirection $wd
        windDirRange $wdr
        rain $r
        isRaining $ir
        sunshine $s
        brightness $b
        unknown $p
      • HM-Sen-RD-O
        lastRain: timestamp # kein Trigger wird erzeugt. Anfang des vorherigen Regen-Zeitstempels des Messwerts ist Ende des Regens.
      • THSensor und HM-WDC7000
        T: $t H: $h AP: $ap
        temperature $t
        humidity $h
        airpress $ap #nur HM-WDC7000
      • dimmer
        overload [on|off]
        overheat [on|off]
        reduced [on|off]
        dim: [up|down|stop]
      • motionDetector
        brightness:$b
        alive
        motion on (to $dest)
        motionCount $cnt _next:$nextTr"-"[0x0|0x1|0x2|0x3|15|30|60|120|240|0x9|0xa|0xb|0xc|0xd|0xe|0xf]
        cover [closed|open] # nicht bei HM-Sec-MDIR
        sabotageError [on|off] # nur bei HM-Sec-MDIR
        battery [low|ok]
        devState_raw.$d1 $d2
      • remote/pushButton/outputUnit
          (to $dest) wird hinzugefügt wenn der Knopf gepeert ist und keinen Broadcast sendet
          Freigabe ist nur für verknüpfte Kanäle verfügbar
        Btn$x onShort
        Btn$x offShort
        Btn$x onLong $counter
        Btn$x offLong $counter
        Btn$x onLongRelease $counter
        Btn$x offLongRelease $counter
        Btn$x onShort (to $dest)
        Btn$x offShort (to $dest)
        Btn$x onLong $counter (to $dest)
        Btn$x offLong $counter (to $dest)
        Btn$x onLongRelease $counter (to $dest)
        Btn$x offLongRelease $counter (to $dest)
      • remote/pushButton
        battery [low|ok]
        trigger [Long|Short]_$no trigger event from channel
      • swi
        Btn$x Short
        Btn$x Short (to $dest)
        battery: [low|ok]
      • switch/dimmer/blindActuator
        $val
        powerOn [on|off|$val]
        [unknown|motor|dim] [up|down|stop]:$val
        timedOn [running|off]
        # "An" ist temporär - z.B. mit dem 'on-for-timer' gestartet
      • sensRain
        $val
        powerOn
        level <val≥
        timedOn [running|off]
        # "An" ist temporär - z.B. mit dem 'on-for-timer' gestartet trigger [Long|Short]_$no trigger event from channel
      • smokeDetector
        [off|smoke-Alarm|alive] # für Gruppen-Master
        [off|smoke-forward|smoke-alarm] # für Gruppenmitglieder
        [normal|added|addedStrong] #HM-CC-SCD
        SDteam [add|remove]_$dname
        battery [low|ok]
        smoke_detect [none|<src>]
        teamCall:from $src
      • threeStateSensor
        [open|tilted|closed]
        [wet|damp|dry] #nur HM-SEC-WDS
        cover [open|closed] #HM-SEC-WDS und HM-Sec-RHS
        alive yes
        battery [low|ok]
        contact [open|tilted|closed]
        contact [wet|damp|dry] #nur HM-SEC-WDS
        sabotageError [on|off] #nur HM-SEC-SC
      • winMatic
        [locked|$value]
        motorErr [ok|TurnError|TiltError]
        direction [no|up|down|undefined]
        charge [trickleCharge|charge|dischange|unknown]
        airing [inactiv|$air]
        course [tilt|close]
        airing [inactiv|$value]
        contact tesed
      • keyMatic
        unknown:40
        battery [low|ok]
        uncertain [yes|no]
        error [unknown|motor aborted|clutch failure|none']
        lock [unlocked|locked]
        [unlocked|locked|uncertain]
      Internals
      • aesCommToDev
        Information über Erfolg und Fehler der AES Kommunikation zwischen IO-device und HM-Device


    =end html =cut

    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_REDIRECT

      Das CUL_REDIRECT Modul empfängt weitere Protokolle vom CUL
      und leitet diese an die entsprechenden Module weiter.

    CUL_RFR

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

    CUL_TCM97001

      Das CUL_TCM97001 Module verarbeitet von einem IO Gerät (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur-Sensoren.

      Unterstütze Modelle:
      • TCM97...
      • ABS700
      • TCM21....
      • Prologue
      • Rubicson
      • NC_WS
      • GT_WT_02
      • AURIOL
      • Eurochron
      • KW9010

      Neu empfangene Sensoren werden in der fhem Kategory CUL_TCM97001 per autocreate angelegt.

      Define
        Die empfangenen Sensoren werden automatisch angelegt.
        Die ID der angelgten Sensoren sind die ersten zwei HEX Werte des empfangenen Paketes in dezimaler Schreibweise.

      Generierte Events:
      • temperature: Die aktuelle Temperatur
      • humidity: Die aktuelle Luftfeutigkeit (falls verfügbar)
      • battery: Der Batteriestatus: low oder ok (falls verfügbar)
      • channel: Kanalnummer (falls verfügbar)
      • trend: Der Temperaturtrend (falls verfügbar)

      Attribute
      • IODev Spezifiziert das physische Gerät, das die Ausstrahlung der Befehle für das "logische" Gerät ausführt. Ein Beispiel für ein physisches Gerät ist ein CUL.
      • do_not_notify
      • ignore
      • model (TCM97..., ABS700, TCM21...., Prologue, Rubicson, NC_WS, GT_WT_02, AURIOL, KW9010, Unknown)
      • showtime
      • readingFnAttributes

    CUL_TX

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

    CUL_WS

      Das CUL_WS-Modul entschlüsselt die Nachrichten des Types S300, die von dem CUL empfangen wurden.

      Define
        define <name> CUL_WS <code> [corr1...corr4]

        <code> ist der Code, der an dem S300 eingestellt werden muss. Gültige Werte sind 1 bis 8
        corr1..corr4 entsprechen vier möglichen Korrekturwerten, die den jeweiligen Werten hinzuaddiert werden, um die Geräte zu kalibrieren. Hinweis: Bei den Werten für Regenmengen werden die Korrekturwerte nicht hinzuaddiert, sondern als Faktor mit dem Regenwert multipliziert.

      Set
        N/A

      Get
        N/A

      Attribute
      • IODev (!) Achtung: mit diesem Attribut ist es möglich mehrere 8-er Sets an S300-er in FHEM zu definieren. Wichtige Voraussetzung allerdings ist, dass nur das spezifizierte CUL das S300 empfangen kann, z.Bsp. durch Frequenztrennung (433MHz vs. 868MHz).
      • do_not_notify
      • eventMap
      • ignore
      • model (S300,KS300,ASH2200)
      • showtime
      • readingFnAttributes

    CULflash

      CULflash [fhem-device|none]; <TYPE>

      Lädt die spezifizierte Firmware von fhem.de und programmiert das angeschlossene Gerät. Z.Zt unterstützt wird das CUL und folgende Versionen: CUL_V2, CUL_V2_HM, CUL_V3, CUL_V3_ZWAVE, CUL_V4.
      Falls als fhem-device none angegeben wurde, dann muss sich das angeschlossene Gerät bereits in flash-mode befinden.
      Achtung:Für CUL flashen muss dfu-programmer installiert und im Pfad auffindbar sein, das ist der Fall bei dem Fritz!BOX 7390 Paket von fhem.de
      Beispiele:
        CULflash CUL CUL_V3
        CULflash none CUL_V3
      Achtung: die Meldung "dfu-programmer: failed to release interface 0." ist auf der FB7390 "normal".

    Calender


      Define
        define <name> Calendar ical url <URL> [<interval>]
        define <name> Calendar ical file <FILENAME> [<interval>]

        Definiert ein Kalender-Device.

        Ein Kalender-Device ermittelt (Serien-) Termine aus einem Quell-Kalender. Dieser kann eine URL oder eine Datei sein. Die Datei muss im iCal-Format vorliegen.

        Beginnt die URL mit https://, muss das Perl-Modul IO::Socket::SSL installiert sein (use cpan -i IO::Socket::SSL).

        Hinweis für Nutzer des Google-Kalenders: Du kann direkt die private iCal-URL des Google Kalender nutzen. Sollte Deine Google-Kalender-URL mit https:// beginnen und das Perl-Modul IO::Socket::SSL ist nicht auf Deinem Systeme installiert, kannst Du in der URL https:// durch http:// ersetzen, falls keine automatische Umleitung auf die https:// URL erfolgt. Solltest Du unsicher sein, ob dies der Fall ist, überprüfe es bitte zuerst mit Deinem Browser.

        Der optionale Parameter interval bestimmt die Zeit in Sekunden zwischen den Updates. Default-Wert ist 3600 (1 Stunde).

        Beispiele:
              define MeinKalender Calendar ical url https://www.google.com­/calendar/ical/john.doe%40example.com­/private-foo4711/basic.ics
              define DeinKalender Calendar ical url http://www.google.com­/calendar/ical/jane.doe%40example.com­/private-bar0815/basic.ics 86400
              define IrgendeinKalender Calendar ical file /home/johndoe/calendar.ics
              

      Set

        set <name> update
        Erzwingt das Einlesen des Kalenders von der definierten URL. Das nächste automatische Einlesen erfolgt in interval Sekunden später.

        set <name> reload
        Dasselbe wie update, jedoch werden zuerst alle Termine entfernt.


      Get

        get <name> update
        Entspricht set <name> update

        get <name> reload
        Entspricht set <name> reload

        get <name> <format> <filter> [<max>]
        Die Termine für den Kalender <name> werden Zeile für Zeile ausgegeben.

        Folgende Selektoren/Filter stehen zur Verfügung:

        Der Selektor <format> legt den zurückgegeben Inhalt fest:

        <format>Inhalt
        uidUID des Termins
        textBenutzer-/Monitorfreundliche Textausgabe.
        summaryÜbersicht (Betreff, Titel)
        locationOrt
        alarmAlarmzeit
        startStartzeit
        endEndezeit
        fullVollständiger Status
        debugwie <full> mit zusätzlichen Informationen zur Fehlersuche

        Der Filter <filter> grenzt die Termine ein:

        <filter>Inhalt
        mode=<regex>alle Termine, deren Modus durch den regulären Ausdruck <regex> beschrieben werden.
        <mode>alle Termine mit Modus <mode>.
        uid=<regex>Alle Termine, deren UIDs durch den regulären Ausdruck <regex> beschrieben werden.
        <uid>Alle Termine mit der UID <uid>
        <reading>Alle Termine die im Reading <reading> aufgelistet werden (modeAlarm, modeAlarmed, modeStart, etc.) - dieser Filter ist abgekündigt und steht in einer zukünftigen Version nicht mehr zur Verfügung, bitte mode=<regex> benutzen.
        allAlle Termine (vergangene, aktuelle und zukünftige)
        nextAlle Termine, die noch nicht beendet sind. Bei Serienterminen der erste Termin. Benutzer-/Monitorfreundliche Textausgabe

        Die Filter mode=<regex> und uid=<regex> sollten den Filtern <mode> und <uid> vorgezogen werden.

        Der optionale Parameter <max> schränkt die Anzahl der zurückgegebenen Zeilen ein.

        Bitte beachte die Attribute hideOlderThan und hideLaterThan für die Seletion von Terminen in einem bestimmten Zeitfenster. Bitte berücksichtige, dass das globale ±400 Tageslimit gilt .

        Beispiele:
        get MyCalendar text next
        get MyCalendar summary uid:435kjhk435googlecom 1
        get MyCalendar summary 435kjhk435googlecom 1
        get MyCalendar full all
        get MyCalendar text mode=alarm|start
        get MyCalendar text uid=.*6286.*

        get <name> find <regexp>
        Gibt Zeile für Zeile die UIDs aller Termine deren Zusammenfassungen durch den regulären Ausdruck <regex> beschrieben werden. <regexp>.

        get <name> vcalendar
        Gibt den Kalender ICal-Format, so wie er von der Quelle gelesen wurde, zurück.

        get <name> vevents
        Gibt eine Liste aller VEVENT-Einträge des Kalenders <name>, angereichert um Ausgaben für die Fehlersuche, zurück. Es werden nur Eigenschaften angezeigt, die während der Programmausführung beibehalten wurden. Es wird sowohl die Liste der Termine, die von jedem VEVENT-Eintrag erzeugt wurden, als auch die Liste der ausgelassenen Termine angezeigt.

      Attributes

      • hideOlderThan <timespec>
        hideLaterThan <timespec>

        Dieses Attribut grenzt die Liste der durch get <name> full|debug|text|summary|location|alarm|start|end ... gezeigten Termine ein. Die Zeit wird relativ zur aktuellen Zeit t angegeben.
        Wenn <hideOlderThan> gesetzt ist, werden Termine, die vor <t-hideOlderThan> enden, ingnoriert.
        Wenn <hideLaterThan> gesetzt ist, werden Termine, die nach <t+hideLaterThan> anfangen, ignoriert.

        Bitte beachten, dass eine Aktion, die durch einen Wechsel in den Modus "end" ausgelöst wird, nicht auf den Termin zugreifen kann, wenn hideOlderThan 0 ist, weil der Termin dann schon versteckt ist. Besser hideOlderThan auf 10 setzen.

        <timespec> muss einem der folgenden Formate entsprechen:

        FormatBeschreibungBeispiel
        SSSSekunden3600
        SSSsSekunden3600s
        HH:MMStunden:Minuten02:30
        HH:MM:SSStunden:Minuten:Sekunden00:01:30
        D:HH:MM:SSTage:Stunden:Minuten:Sekunden122:10:00:00
        DDDdTage100d
      • onCreateEvent <perl-code>
        Dieses Attribut führt ein Perlprogramm <perl-code> für jeden erzeugten Termin aus. Weitere Informationen unter Plug-ins im Text.
      • SSLVerify
        Dieses Attribut setzt die Art der Überpruuml;fung des Zertifikats des Partners bei mit SSL gesicherten Verbindungen. Entweder auf 0 setzen für SSL_VERIFY_NONE (keine Überprüfung des Zertifikats) oder auf 1 für SSL_VERIFY_PEER (Überprüfung des Zertifikats). Die Überprüfung auszuschalten ist nützlich für lokale Kalenderinstallationen(e.g. OwnCloud, NextCloud) ohne gütiges SSL-Zertifikat.
      • readingFnAttributes

      Beschreibung

        Ein Kalender ist eine Menge von Terminen. Ein Termin hat eine Zusammenfassung (normalerweise der Titel, welcher im Quell-Kalender angezeigt wird), eine Startzeit, eine Endzeit und keine, eine oder mehrere Alarmzeiten. Die Termine werden aus dem Quellkalender ermittelt, welcher über die URL angegeben wird. Sollten mehrere Alarmzeiten für einen Termin existieren, wird nur der früheste Alarmzeitpunkt beibehalten. Wiederkehrende Kalendereinträge werden in einem gewissen Umfang unterstützt: FREQ INTERVAL UNTIL COUNT werden ausgewertet, BYMONTHDAY BYMONTH WKST werden erkannt aber nicht ausgewertet. BYDAY wird für wöchentliche und monatliche Termine korrekt behandelt. Das Modul wird es sehr wahrscheinlich falsch machen, wenn Du wiederkehrende Termine mit unerkannten oder nicht ausgewerteten Schlüsselwörtern hast.

        Termine werden erzeugt, wenn FHEM gestartet wird oder der betreffende Eintrag im Quell-Kalender verändert wurde oder der Kalender mit get <name> reload neu geladen wird. Es werden nur Termine innerhalb ±400 Tage um die Erzeugungs des Termins herum erzeugt. Ziehe in Betracht, den Kalender von Zeit zu Zeit neu zu laden, um zu vermeiden, dass die künftigen Termine ausgehen. Du kann so etwas wie define reloadCalendar at +*240:00:00 set MyCalendar reload dafür verwenden.

        Manche dummen Kalender benutzen LAST-MODIFIED nicht. Das kann dazu führen, dass Veränderungen im Quell-Kalender unbemerkt bleiben. Lade den Kalender neu, wenn Du dieses Problem hast.

        Ein Termin wird durch seine UID identifiziert. Die UID wird vom Quellkalender bezogen. Um das Leben leichter zu machen, werden alle nicht-alphanumerischen Zeichen automatisch aus der UID entfernt.

        Ein Termin kann sich in einem der folgenden Modi befinden:

        upcomingWeder die Alarmzeit noch die Startzeit des Kalendereintrags ist erreicht.
        alarmDie Alarmzeit ist überschritten, aber die Startzeit des Kalender-Ereignisses ist noch nicht erreicht.
        startDie Startzeit ist überschritten, aber die Ende-Zeit des Kalender-Ereignisses ist noch nicht erreicht.
        endDie Ende-Zeit des Kalender-Ereignisses wurde überschritten.

        Ein Kalender-Ereignis wechselt umgehend von einem Modus zum Anderen, wenn die Zeit für eine Änderung erreicht wurde. Dies wird dadurch erreicht, dass auf die früheste zukünftige Zeit aller Alarme, Start- oder Endezeiten aller Kalender-Ereignisse gewartet wird.

        Ein Kalender-Device hat verschiedene Readings. Mit Ausnahme von calname stellt jedes Reading eine Semikolon-getrennte Liste von UIDs von Kalender-Ereignisse dar, welche bestimmte Zustände haben:

        calnameName des Kalenders
        modeAlarmEreignisse im Alarm-Modus
        modeAlarmOrStartEreignisse im Alarm- oder Startmodus
        modeAlarmedEreignisse, welche gerade in den Alarmmodus gewechselt haben
        modeChangedEreignisse, welche gerade in irgendeiner Form ihren Modus gewechselt haben
        modeEndEreignisse im Endemodus
        modeEndedEreignisse, welche gerade vom Start- in den Endemodus gewechselt haben
        modeStartEreignisse im Startmodus
        modeStartedEreignisse, welche gerade in den Startmodus gewechselt haben
        modeUpcomingEreignisse im zukünftigen Modus

        Für Serientermine werden mehrere Termine mit der selben UID erzeugt. In diesem Fall wird die UID nur im interessantesten gelesenen Modus-Reading angezeigt. Der interessanteste Modus ist der erste zutreffende Modus aus der Liste der Modi start, alarm, upcoming, end.

        Die UID eines Serientermins wird nicht angezeigt, solange sich der Termin im Modus: modeEnd oder modeEnded befindet und die Serie nicht beendet ist. Die UID befindet sich in einem der anderen mode... Readings. Hieraus ergibts sich, das FHEM-Events nicht auf einem mode... Reading basieren sollten. Weiter unten im Text gibt es hierzu eine Empfehlung.

      Events

        Wenn der Kalendar neu geladen oder aktualisiert oder eine Alarm-, Start- oder Endezeit erreicht wurde, wird ein FHEM-Event erzeugt:

        triggered

        Man kann sich darauf verlassen, dass alle Readings des Kalenders in einem konsistenten und aktuellen Zustand befinden, wenn dieses Event empfangen wird.

        Wenn ein Termin geändert wurde, werden zwei FHEM-Events erzeugt:

        changed: UID <mode>
        <mode>: UID

        <mode> ist der aktuelle Modus des Termins nach der änderung. Bitte beachten: Im FHEM-Event befindet sich ein Doppelpunkt gefolgt von einem Leerzeichen.

        FHEM-Events sollten nur auf den vorgenannten Events basieren und nicht auf FHEM-Events, die durch ändern eines mode... Readings ausgelöst werden.

      Plug-ins

        Experimentell, bitte mit Vorsicht nutzen.

        Ein Plug-In ist ein kleines Perl-Programm, dass Termine nebenher verändern kann. Das Perl-Programm arbeitet mit der Hash-Referenz $e.
        Die wichtigsten Elemente sind:

        codedescription
        $e->{start}Startzeit des Termins, in Sekunden seit 1.1.1970
        $e->{end}Endezeit des Termins, in Sekunden seit 1.1.1970
        $e->{alarm}Alarmzeit des Termins, in Sekunden seit 1.1.1970
        $e->{summary}die Zusammenfassung (Betreff, Titel) des Termins
        $e->{location}Der Ort des Termins

        Um für alle Termine mit dem Text "Tonne" in der Zusammenfassung die Alarmzeit zu ergänzen / zu ändern, kann folgendes Plug-In benutzt werden:

        attr MyCalendar onCreateEvent { $e->{alarm}= $e->{start}-86400 if($e->{summary} =~ /Tonne/);; }

        Das doppelte Semikolon maskiert das Semikolon. Perl specials können nicht genutzt werden.


      Anwendungsbeispiele

        Alle Termine inkl. Details anzeigen

          get MyCalendar full all
          2767324dsfretfvds7dsfn3e4­dsa234r234sdfds6bh874­googlecom known alarm 31.05.2012 17:00:00 07.06.2012 16:30:00-07.06.2012 18:00:00 Erna for coffee
          992hydf4y44awer5466lhfdsr­gl7tin6b6mckf8glmhui4­googlecom known upcoming 08.06.2012 00:00:00-09.06.2012 00:00:00 Vacation


        Zeige Termine in Deinem Bilderrahmen

          Füge eine Zeile in die layout description ein, um Termine im Alarm- oder Startmodus anzuzeigen:

          text 20 60 { fhem("get MyCalendar text next 2") }

          Dies kann dann z.B. so aussehen:

          07.06.12 16:30 Erna zum Kaffee
          08.06.12 00:00 Urlaub


        Schalte das Licht ein, wenn Erna kommt

          Finde zuerst die UID des Termins:

          get MyCalendar find .*Erna.*
          2767324dsfretfvds7dsfn3e4­dsa234r234sdfds6bh874­googlecom


          Definiere dann ein notify: (Der Punkt nach dem zweiten Doppelpunkt steht für ein Leerzeichen)

          define ErnaComes notify MyCalendar:start:.2767324dsfretfvds7dsfn3e4­dsa234r234sdfds6bh874­googlecom.* set MyLight on

          Du kannst auch ein Logging aufsetzen:

          define LogErna notify MyCalendar:alarm:.2767324dsfretfvds7dsfn3e4­dsa234r234sdfds6bh874­googlecom.* { Log3 $NAME, 1, "ALARM name=$NAME event=$EVENT part1=$EVTPART0 part2=$EVTPART1" }

        Schalte die Aktoren an und aus

          Stell Dir einen Kalender vor, dessen Zusammenfassungen (Betreff, Titel) die Namen von Devices in Deiner fhem-Installation sind. Du willst nun die entsprechenden Devices an- und ausschalten, wenn das Kalender-Ereignis beginnt bzw. endet.

          define SwitchActorOn notify MyCalendar:start:.* {}
          Dann auf DEF klicken und im DEF-Editor folgendes zwischen die beiden geschweiften Klammern {} eingeben: my $reading="$EVTPART0"; my $uid= "$EVTPART1"; my $actor= fhem("get MyCalendar summary $uid"); if(defined $actor) { fhem("set $actor on") }

          define SwitchActorOff notify MyCalendar:end:.* {}
          Dann auf DEF klicken und im DEF-Editor folgendes zwischen die beiden geschweiften Klammern {} eingeben: my $reading="$EVTPART0"; my $uid= "$EVTPART1"; my $actor= fhem("get MyCalendar summary $uid"); if(defined $actor) { fhem("set $actor off") }

          Auch hier kann ein Logging aufgesetzt werden:

          define LogActors notify MyCalendar:(start|end).* {}
          Dann auf DEF klicken und im DEF-Editor folgendes zwischen die beiden geschweiften Klammern {} eingeben: my $reading= "$EVTPART0"; my $uid= "$EVTPART1"; my $actor= fhem("get MyCalendar summary $uid"); Log 3 $NAME, 1, "Actor: $actor, Reading $reading";

      Eingebettetes HTML

        Das Modul stellt eine zusätzliche Funktion CalendarAsHtml(<name>,<options>) bereit. Diese gibt den HTML-Kode für eine Liste von Terminen zurück. <name> ist der Name des Kalendar-Device und <options> ist das, was Du hinter get <name> text ... schreiben würdest.

        Beispiel: define MyCalendarWeblink weblink htmlCode { CalendarAsHtml("MyCalendar","next 3") }

        Dies ist eine rudimentäre Funktion, die vielleicht in künftigen Versionen erweitert wird.

    ComfoAir

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

    CustomReadings

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

    DLNARenderer

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

    DOIF

      DOIF (ausgeprochen: du if, übersetzt: tue wenn) ist ein universelles Modul, welches ereignis- und zeitgesteuert in Abhängigkeit definierter Bedingungen Anweisungen ausführt.

      In einer Hausautomatisation geht es immer wieder um die Ausführung von Befehlen abhängig von einem Ereignis. Oft reicht aber eine einfache Abfrage der Art: "wenn Ereignis eintritt, dann Befehl ausführen" nicht aus. Ebenso häufig möchte man eine Aktion nicht nur von einem einzelnen Ereignis abhängig ausführen, sondern abhängig von mehreren Bedingungen, z. B. "schalte Außenlicht ein, wenn es dunkel wird, aber nicht vor 18:00 Uhr" oder "schalte die Warmwasserzirkulation ein, wenn die Rücklauftemperatur unter 38 Grad fällt und jemand zuhause ist". In solchen Fällen muss man mehrere Bedingung logisch miteinander verknüpfen. Ebenso muss sowohl auf Ereignisse wie auch auf Zeittrigger gleichermaßen reagiert werden.

      An dieser Stelle setzt das Modul DOIF an. Es stellt eine eigene Benutzer-Schnittstelle zur Verfügung ohne Programmierkenntnisse in Perl unmittelbar vorauszusetzen. Mit diesem Modul ist es möglich, sowohl Ereignis- als auch Zeitsteuerung mit Hilfe logischer Abfragen miteinander zu kombinieren. Damit können komplexere Problemstellungen innerhalb eines DOIF-Moduls gelöst werden, ohne Perlcode in Kombination mit anderen Modulen programmieren zu müssen.

      Das DOIF-Modul bedient sich selbst des Perlinterpreters, damit sind beliebige logische Abfragen möglich. Logische Abfragen werden in DOIF/DOELSEIF-Bedingungen vornehmlich mit Hilfe von and/or-Operatoren erstellt. Diese werden mit Angaben von Stati, Readings, Internals, Events oder Zeiten kombiniert. Sie werden grundsätzlich in eckigen Klammern angegeben und führen zur Triggerung des Moduls und damit zur Auswertung der dazugehörigen Bedingung. Zusätzlich können in einer Bedingung Perl-Funktionen angegeben werden, die in FHEM definiert sind. Wenn eine Bedingung wahr wird, so werden die dazugehörigen Befehle ausgeführt.

      Syntax:

        define <name> DOIF (<Bedingung>) (<Befehle>) DOELSEIF (<Bedingung>) (<Befehle>) DOELSEIF ... DOELSE (<Befehle>)

      Die Angaben werden immer von links nach rechts abgearbeitet. Zu beachten ist, dass nur die Bedingungen überprüft werden, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten. Kommt ein Device in mehreren Bedingungen vor, so wird immer nur ein Kommando ausgeführt, und zwar das erste, für das die dazugehörige Bedingung in der abgearbeiteten Reihenfolge wahr ist.

      Das DOIF-Modul arbeitet mit Zuständen. Jeder Ausführungszweig DOIF/DOELSEIF..DOELSEIF/DOELSE stellt einen eigenen Zustand dar (cmd_1, cmd_2, usw.). Das Modul merkt sich den zuletzt ausgeführten Ausführungszweig und wiederholt diesen standardmäßig nicht. Ein Ausführungszweig wird erst dann wieder ausgeführt, wenn zwischenzeitlich ein anderer Ausführungszweig ausgeführt wurde, also ein Zustandswechsel stattgefunden hat. Dieses Verhalten ist sinnvoll, um zu verhindern, dass zyklisch sendende Sensoren (Temperatur, Feuchtigkeit, Helligkeit, usw.) zu ständiger Wiederholung des selben Befehls oder Befehlsabfolge führen.

      Einfache Anwendungsbeispiele:

        Fernbedienung (Ereignissteuerung): define di_rc_tv DOIF ([remotecontol] eq "on") (set tv on) DOELSE (set tv off)

        Zeitschaltuhr (Zeitsteuerung): define di_clock_radio DOIF ([06:30]) (set radio on) DOELSEIF ([08:00]) (set radio off)

        Kombinierte Ereignis- und Zeitsteuerung: define di_lamp DOIF ([06:00-09:00] and [sensor:brightness] < 40) (set lamp on) DOELSE (set lamp off)

      Inhaltsübersicht

        Features
        Lesbarkeit der Definitionen
        Ereignissteuerung
        Teilausdrücke abfragen
        Ereignissteuerung über Auswertung von Events
        Angaben im Ausführungsteil
        Zeitsteuerung
        Relative Zeitangaben
        Zeitangaben nach Zeitraster ausgerichtet
        Relative Zeitangaben nach Zeitraster ausgerichtet
        Zeitangaben nach Zeitraster ausgerichtet alle X Stunden
        Wochentagsteuerung
        Zeitsteuerung mit Zeitintervallen
        Indirekten Zeitangaben
        Zeitsteuerung mit Zeitberechnung
        Kombination von Ereignis- und Zeitsteuerung mit logischen Abfragen
        Zeitintervalle, Readings und Stati ohne Trigger
        Nutzung von Readings, Stati oder Internals im Ausführungsteil
        Berechnungen im Ausführungsteil
        Ersatzwert für nicht existierende Readings oder Stati
        Filtern nach Ausdrücken mit Ausgabeformatierung
        Verzögerungen
        Verzögerungen von Timern
        Zurücksetzen des Waittimers für das gleiche Kommando
        Wiederholung von Befehlsausführung
        Zwangspause für das Ausführen eines Kommandos seit der letzten Zustandsänderung
        Begrenzung von Wiederholungen eines Kommandos
        Ausführung eines Kommandos nach einer Wiederholung einer Bedingung
        Löschen des Waittimers nach einer Wiederholung einer Bedingung
        Readingauswertung nur beim Event des jeweiligen Readings
        Eindeutige Statuserkennung
        Triggerung durch selbst ausgelöste Events
        Setzen der Timer mit Event
        Zeitspanne eines Readings seit der letzten Änderung
        Darstellungselement mit Eingabemöglichkeit im Frontend und Schaltfunktion
        Status des Moduls
        Reine Statusanzeige ohne Ausführung von Befehlen
        Anpassung des Status mit Hilfe des Attributes state
        Vorbelegung des Status mit Initialisierung nach dem Neustart mit dem Attribut initialize
        Deaktivieren des Moduls
        Bedingungslose Ausführen von Befehlszweigen
        Initialisieren des Moduls
        Weitere Anwendungsbeispiele
        Zu beachten
        DOIF im FHEM-Wiki
        DOIF im FHEM-Forum
        Kurzreferenz

      Attribute
        cmdpause   cmdState   disable   do always   do resetwait   initialize   notexist   repeatcmd   repeatsame   state   timerWithWait   wait   waitdel   waitsame   checkReadingEvent   addStateEvent   selftrigger   timerevent   checkall   setList   readingList  
        readingFnAttributes  

      Features   back

        + Syntax angelehnt an Verzweigungen if - elseif - ... - elseif - else in höheren Programmiersprachen
        + Pro Modul können beliebig viele Zeit- und beliebig viele Ereignis-Angaben logisch miteinander kombiniert werden
        + Das Modul reagiert sowohl auf Ereignisse als auch auf Zeittrigger
        + Bedingungen werden vom Perl-Interpreter ausgewertet, daher sind beliebige logische Abfragen möglich
        + Es können beliebig viele DOELSEIF-Angaben gemacht werden, sie sind, wie DOELSE am Ende der Kette, optional
        + Verzögerungsangaben mit Zurückstellung sind möglich (watchdog-Funktionalität)
        + Der Ausführungsteil kann jeweils ausgelassen werden. Damit kann das Modul für reine Statusanzeige genutzt werden

      Lesbarkeit der Definitionen   back

      Da die Definitionen im Laufe der Zeit recht umfangreich werden können, sollten die gleichen Regeln, wie auch beim Programmieren in höheren Programmiersprachen, beachtet werden. Dazu zählen: das Einrücken von Befehlen, Zeilenumbrüche sowie das Kommentieren seiner Definition, damit man auch später noch die Funktionalität seines Moduls nachvollziehen kann.

      Das Modul unterstützt dazu Einrückungen, Zeilenumbrüche an beliebiger Stelle und Kommentierungen beginnend mit ## bis zum Ende der Zeile. Die Formatierungen lassen sich im DEF-Editor der Web-Oberfläche vornehmen.

      So könnte eine Definition aussehen:

      define di_Modul DOIF ([Switch1] eq "on" and [Switch2] eq "on") ## wenn Schalter 1 und Schalter 2 on ist

        (set lamp on) ## wird Lampe eingeschaltet

      DOELSE ## im sonst-Fall, also wenn einer der Schalter off ist

        (set lamp off) ## wird die Lampe ausgeschaltet

      Im Folgenden wird die Funktionalität des Moduls im Einzelnen an vielen praktischen Beispielen erklärt.

      Ereignissteuerung   back

      Vergleichende Abfragen werden, wie in Perl gewohnt, mit Operatoren ==, !=, <, <=, >, >= bei Zahlen und mit eq, ne, lt, le, gt, ge, =~, !~ bei Zeichenketten angegeben. Logische Verknüpfungen sollten zwecks Übersichtlichkeit mit and bzw. or vorgenommen werden. Selbstverständlich lassen sich auch alle anderen Perl-Operatoren verwenden, da die Auswertung der Bedingung vom Perl-Interpreter vorgenommen wird. Die Reihenfolge der Auswertung wird, wie in höheren Sprachen üblich, durch runde Klammern beeinflusst. Stati werden mit [<devicename>], Readings mit [<devicename>:<readingname>], Internals mit [<devicename>:&<internal>] angegeben.

      Anwendungsbeispiel: Einfache Ereignissteuerung wie beim notify mit einmaliger Ausführung beim Zustandswechsel, "remotecontrol" ist hier ein Device, es wird in eckigen Klammern angegeben. Ausgewertet wird der Status des Devices - nicht das Event.

      define di_garage DOIF ([remotecontrol] eq "on") (set garage on) DOELSEIF ([remotecontrol] eq "off") (set garage off)

      Das Modul wird getriggert, sobald das angegebene Device hier "remotecontrol" ein Event erzeugt. Das geschieht, wenn irgendein Reading oder der Status von "remotecontrol" aktualisiert wird. Ausgewertet wird hier der Zustand des Statuses von remotecontrol nicht das Event selbst. Die Ausführung erfolgt standardmäßig einmalig nur nach Zustandswechsel des Moduls. Das bedeutet, dass ein mehrmaliges Drücken der Fernbedienung auf "on" nur einmal "set garage on" ausführt. Die nächste mögliche Ausführung ist "set garage off", wenn Fernbedienung "off" liefert. Wünscht man eine Ausführung des gleichen Befehls mehrfach nacheinander bei jedem Trigger, unabhängig davon welchen Zustand das DOIF-Modul hat, weil z. B. Garage nicht nur über die Fernbedienung geschaltet wird, dann muss man das per "do always"-Attribut angeben:

      attr di_garage do always

      Bei der Angabe von zyklisch sendenden Sensoren (Temperatur, Feuchtigkeit, Helligkeit usw.) wie z. B.:

      define di_heating DOIF ([sens:temperature] < 20) (set heating on)

      ist die Nutzung des Attributes do always nicht sinnvoll, da das entsprechende Kommando hier: "set heating on" jedes mal ausgeführt wird, wenn der Temperatursensor in regelmäßigen Abständen eine Temperatur unter 20 Grad sendet. Ohne do always wird hier dagegen erst wieder "set heating on" ausgeführt, wenn der Zustand des Moduls auf "cmd_2" gewechselt hat, also die Temperatur zwischendurch größer oder gleich 20 Grad war.

      Zu beachten ist, dass bei do always der Zustand "cmd_2" bei Nichterfüllung der Bedingung nicht gesetzt wird. Möchte man dennoch bei Nichterfüllung der Bedingung einen Zustandswechsel auf "cmd_2" erreichen, so muss man am Ende seiner Definition DOELSE ohne weitere Angaben setzen. Wenn das Attribut do always nicht gesetzt ist, wird dagegen bei Definitionen mit einer einzigen Bedingung, wie im obigen Beispiel, der Zustand "cmd_2" bei Nichterfüllung der Bedingung automatisch gesetzt. Ohne diesen automatischen Zustandswechsel, wäre ansonsten die Definition nicht sinnvoll, da der Zustand "cmd_1" ohne do always nur ein einziges Mal ausgeführt werden könnte.

      Teilausdrücke abfragen   back

      Abfragen nach Vorkommen eines Wortes innerhalb einer Zeichenkette können mit Hilfe des Perl-Operators =~ vorgenommen werden.

      Anwendungsbeispiel: Garage soll beim langen Tastendruck öffnen, hier: wenn das Wort "Long" im Status vorkommt (bei HM-Komponenten stehen im Status noch weitere Informationen).

      define di_garage DOIF ([remotecontrol] =~ "Long") (set garage on)
      attr di_garage do always


      Weitere Möglichkeiten bei der Nutzung des Perl-Operators: =~, insbesondere in Verbindung mit regulären Ausdrücken, können in der Perl-Dokumentation nachgeschlagen werden.

      Ereignissteuerung über Auswertung von Events   back

      Eine Alternative zur Auswertung von Stati oder Readings ist das Auswerten von Ereignissen (Events) mit Hilfe von regulären Ausdrücken, wie beim notify. Der Suchstring wird als regulärer Ausdruck in Anführungszeichen angegeben. Die Syntax lautet: [<devicename>:"<regex>"]

      Anwendungsbeispiel: wie oben, jedoch wird hier nur das Ereignis (welches im Eventmonitor erscheint) ausgewertet und nicht der Status von "remotecontrol" wie im vorherigen Beispiel

      define di_garage DOIF ([remotecontrol:"on"]) (set garage on) DOELSEIF ([remotecontrol:"off"]) (set garage off)

      In diesem Beispiel wird nach dem Vorkommen von "on" innerhalb des Events gesucht. Falls "on" gefunden wird, wird der Ausdruck wahr und der DOIF-Fall wird ausgeführt, ansonsten wird der DOELSEIF-Fall entsprechend ausgewertet. Die Auswertung von reinen Ereignissen bietet sich dann an, wenn ein Modul keinen Status oder Readings benutzt, die man abfragen kann, wie z. B. beim Modul "sequence". Die Angabe von regulären Ausdrücken kann recht komplex werden und würde die Aufzählung aller Möglichkeiten an dieser Stelle den Rahmen sprengen. Weitere Informationenen zu regulären Ausdrücken sollten in der Perl-Dokumentation nachgeschlagen werden. Die logische Verknüpfung "and" mehrerer Ereignisse ist nicht sinnvoll, da zu einem Zeitpunkt immer nur ein Ereignis zutreffen kann.

      Die alte Syntax [<devicename>:?<regex>] wird aus Kompatibilitätsgründen noch unterstützt, sollte aber nicht mehr benutzt werden.

      Sollen Events verschiedener Devices ausgewertet werden, so lässt sich folgende Syntax anwenden: ["<device regex>:<event regex>"]

      Im Gegensatz zum notify werden vom DOIF-Modul selbst keine Regex-Sonderzeichen hinzugefügt. Insb. wird kein ^ für Anfang vorangestellt, bzw. kein $ für Ende angehängt.

      Beispiele für Regex-Angaben:

      ["FS"] triggert auf alle Devices, die "FS" im Namen beinhalten
      ["^FS"] triggert auf alle Devices, die mit "FS" im Namen anfangen
      ["FS:temp"] triggert auf alle Devices, die "FS" im Namen und "temp" im Event beinhalten
      ([":^temp"]) triggert auf beliebige Devices, die im Event mit "temp" beginnen
      (["^FS$:^temp$"] triggert auf Devices, die genau "FS" heißen und im Event genau "temp" vorkommt
      [""] triggert auf alles

      In der Bedingung und im Ausführungsteil werden die Schlüsselwörter $SELF durch den eigenen Namen des DOIF-Moduls, $DEVICE durch das aktuelle Device, $EVENT durch die passende Eventzeile, $EVENTS kommagetrennt durch alle Eventzeilen des Triggers ersetzt.

      Entsprechend können Perl-Variablen in der DOIF-Bedingung ausgewertet werden, sie werden in Kleinbuchstaben geschrieben. Sie lauten: $device, $event, $events

      Anwendungsbeispiele:

      Loggen aller Ereignisse in FHEM

      define di_all_events DOIF ([""]) ({Log 3,"Events from device $DEVICE:$EVENTS"})

      attr di_all_events do always

      "Fenster offen"-Meldung

      define di_window_open (["^window_:open"]) (set Pushover msg 'alarm' 'open windows $DEVICE' '' 2 'persistent' 30 3600)

      attr di_window_open do always


      Hier werden alle Fenster, die mit dem Device-Namen "window_" beginnen auf "open" im Event überwacht.

      Verzögerte "Fenster offen"-Meldung

      define di_window_open DOIF ["^window_:open|tilted"])
      (defmod at_$DEVICE at +00:05 set send window $DEVICE open)
      DOELSEIF (["^window_:closed"])
      (delete at_$DEVICE)

      attr di_window_open do always


      Alternative mit sleep

      define di_window_open DOIF ["^window_:open|tilted"])
      (sleep 300 $DEVICE quiet;set send window $DEVICE open)
      DOELSEIF (["^window_:closed"])
      (cancel $DEVICE quiet)

      attr di_window_open do always


      In den obigen beiden Beispielen ist eine Verzögerung über das Attribut wait nicht sinnvoll, da pro Fenster ein eigener Timer (hier mit Hilfe von at/sleep) gesetzt werden muss.

      Batteriewarnung per E-Mail verschicken

      define di_battery DOIF ([":battery: low"] and [?$SELF:B_$DEVICE] ne "low")
        ({DebianMail('yourname@gmail.com', 'FHEM - battery warning from device: $DEVICE')}, setreading $SELF B_$DEVICE low)
      DOELSEIF ([":battery: ok"] and [?$SELF:B_$DEVICE] ne "ok")
        (setreading $SELF B_$DEVICE ok)

      attr di_battery do always


      Eine aktuelle Übersicht aller Batterie-Stati entsteht gleichzeitig in den Readings des di_battery-DOIF-Moduls.


      Allgemeine Ereignistrigger können ebenfalls so definiert werden, dass sie nicht nur wahr zum Triggerzeitpunkt und sonst nicht wahr sind, sondern Inhalte des Ereignisses zurückliefern. Initiiert wird dieses Verhalten durch die Angabe eines Default-Wertes.

      Syntax:

      ["regex for trigger",<default value>]

      Anwendungsbeispiel:

      define di_warning DOIF ([":^temperature",0]< 0 and [06:00-09:00] ) (set pushmsg danger of frost)

      Damit wird auf alle Devices getriggert, die mit "temperature" im Event beginnen. Zurückgeliefert wird der Wert, der im Event hinter "temperature: " steht. Wenn kein Event stattfindet, wird der Defaultwert, hier 0, zurückgeliefert.
      Ebenfalls kann ein Ereignisfilter mit Ausgabeformatierung angegeben werden.

      Syntax:

      ["regex for trigger":"<regex filter>":<output>,<default value>]

      Regex-Filter- und Output-Parameter sind optional. Der Default-Wert ist verpflichtend.

      Die Angaben zum Filter und Output funktionieren, wie die beim Reading-Filter. Siehe: Filtern nach Ausdrücken mit Ausgabeformatierung


      Wenn kein Filter, wie obigen Beispiel, angegeben wird, so wird intern folgende Regex vorbelegt: "[^\:]*: (.*)" Damit wird der Wert hinter der Readingangabe genommen. Durch eigene Regex-Filter-Angaben kann man beliebige Teile des Events herausfiltern, ggf. über Output formatieren und in der Bedingung entsprechend auswerten, ohne auf Readings zurückgreifen zu müssen.

      Angaben im Ausführungsteil:   back

      Der Ausführungsteil wird immer, wie die Bedingung, in runden Klammern angegeben. Es werden standardmäßig FHEM-Befehle angegeben, wie z. B.: ...(set lamp on)

      Sollen mehrere FHEM-Befehle ausgeführt werden, so werden sie mit Komma statt mit Semikolon angegeben ... (set lamp1 on, set lamp2 off)

      Falls ein Komma nicht als Trennzeichen zwischen FHEM-Befehlen gelten soll, so muss der FHEM-Ausdruck zusätzlich in runde Klammern gesetzt werden: ...((set lamp1,lamp2 on),set switch on)

      Perlbefehle müssen zusätzlich in geschweifte Klammern gesetzt werden: ... ({system ("wmail Peter is at home")})

      Mehrere Perlbefehle hintereinander werden im DEF-Editor mit zwei Semikolons angegeben: ...({system ("wmail Peter is at home");;system ("wmail Marry is at home")})

      FHEM-Befehle lassen sich mit Perl-Befehlen kombinieren: ... ({system ("wmail Peter is at home")}, set lamp on)

      Zeitsteuerung   back

      Zeitangaben in der Bedingung im Format: [HH:MM:SS] oder [HH:MM] oder [Zahl]

      Anwendungsbeispiele:

      Einschalten um 8:00 Uhr, ausschalten um 10:00 Uhr.

      define di_light DOIF ([08:00]) (set switch on) DOELSEIF ([10:00]) (set switch off)

      Zeitsteuerung mit mehreren Zeitschaltpunkten:

      define di_light DOIF ([08:00] or [10:00] or [20:00]) (set switch on) DOELSEIF ([09:00] or [11:00] or [00:00]) (set switch off)

      Zeitangaben können ebenfalls in Sekunden angegeben werden. Es handelt sich dann um Sekundenangaben nach Mitternacht, hier also um 01:00 Uhr:

      define di_light DOIF ([3600]) (set lamp on)

      Relative Zeitangaben   back

      Zeitangaben, die mit Pluszeichen beginnen, werden relativ behandelt, d. h. die angegebene Zeit wird zum aktuellen Zeitpunkt hinzuaddiert.

      Anwendungsbeispiel: Automatisches Speichern der Konfiguration im Stundentakt:

      define di_save DOIF ([+01:00]) (save)
      attr di_save do always


      Ebenfalls lassen sich relative Angaben in Sekunden angeben. Das obige Beispiel entspricht:

      define di_save DOIF ([+3600]) (save)

      Zeitangaben nach Zeitraster ausgerichtet   back

      Das Format lautet: [:MM] MM sind Minutenangaben zwischen 00 und 59.

      Anwendungsbeispiel: Viertelstunden-Gong

      define di_gong DOIF ([:00])
        ({system ("mplayer /opt/fhem/Sound/BigBen_00.mp3 -volume 90 −really−quiet &")})
      DOELSEIF ([:15])
        ({system ("mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume 90 −really−quiet &")})
      DOELSEIF ([:30])
        ({system ("mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume 90 −really−quiet &")})
      DOELSEIF ([:45])
        ({system ("mplayer /opt/fhem/Sound/BigBen_45.mp3 -volume 90 −really−quiet &")})

      Relative Zeitangaben nach Zeitraster ausgerichtet   back

      Das Format lautet: [+:MM] MM sind Minutenangaben zwischen 1 und 59.

      Anwendungsbeispiel: Gong alle fünfzehn Minuten um XX:00 XX:15 XX:30 XX:45

      define di_gong DOIF ([+:15]) (set Gong_mp3 playTone 1)
      attr di_gong do always


      Zeitangaben nach Zeitraster ausgerichtet alle X Stunden   back

      Format: [+[h]:MM] mit: h sind Stundenangaben zwischen 2 und 23 und MM Minuten zwischen 00 und 59

      Anwendungsbeispiel: Es soll immer fünf Minuten nach einer vollen Stunde alle 2 Stunden eine Pumpe eingeschaltet werden, die Schaltzeiten sind 00:05, 02:05, 04:05 usw.

      define di_gong DOIF ([+[2]:05]) (set pump on-for-timer 300)
      attr di_gong do always


      Wochentagsteuerung   back

      Hinter der Zeitangabe kann ein oder mehrere Wochentage als Ziffer getrennt mit einem Pipezeichen | angegeben werden. Die Syntax lautet:

      [<time>|012345678] 0-8 entspricht: 0-Sonntag, 1-Montag, ... bis 6-Samstag sowie 7 für Wochenende und Feiertage (entspricht $we) und 8 für Arbeitstage (entspricht !$we)

      Anwendungsbeispiel: Radio soll am Wochenende und an Feiertagen um 08:30 Uhr eingeschaltet und um 09:30 Uhr ausgeschaltet werden. An Arbeitstagen soll das Radio um 06:30 Uhr eingeschaltet und um 07:30 Uhr ausgeschaltet werden.

      define di_radio DOIF ([06:30|8] or [08:30|7]) (set radio on) DOELSEIF ([07:30|8] or [09:30|7]) (set radio off)

      Anstatt einer Zifferkombination kann ein Status oder Reading in eckigen Klammern angegeben werden. Dieser muss zum Triggerzeitpunkt mit der gewünschten Ziffernkombination für Wochentage, wie oben definiert, belegt sein.

      Anwendungsbeispiel: Der Wochentag soll über einen Dummy bestimmt werden.

      define dummy Wochentag
      set Wochentag 135

      define di_radio DOIF ([06:30|[Wochentag]]) (set radio on) DOELSEIF ([07:30|[Wochentag]]) (set radio off)


      Zeitsteuerung mit Zeitintervallen   back

      Zeitintervalle werden im Format angegeben: [<begin>-<end>], für <begin> bzw. <end> wird das gleiche Zeitformat verwendet, wie bei einzelnen Zeitangaben. Getriggert wird das Modul zum Zeitpunkt <begin> und zum Zeitpunkt <end>. Soll ein Zeitintervall ohne Zeittrigger lediglich zur Abfrage dienen, so muss hinter der eckigen Klammer ein Fragezeichen angegeben werden (siehe Beispiele weiter unten). Das Zeitintervall ist als logischer Ausdruck ab dem Zeitpunkt <begin> wahr und ab dem Zeitpunkt <end> nicht mehr wahr.

      Anwendungsbeispiele:

      Radio soll zwischen 8:00 und 10:00 Uhr an sein:

      define di_radio DOIF ([08:00-10:00]) (set radio on) DOELSE (set radio off)

      mit mehreren Zeitintervallen:

      define di_radio DOIF ([08:00-10:00] or [20:00-22:00]) (set radio on) DOELSE (set radio off)

      Radio soll nur sonntags (0) eingeschaltet werden:

      define di_radio DOIF ([08:00-10:00|0]) (set radio on) DOELSE (set radio off)

      Nur montags, mittwochs und freitags:

      define di_radio DOIF ([08:00-10:00|135]) (set radio on) DOELSE (set radio off)

      Nur am Wochenende bzw. an Feiertagen lt. holiday-Datei (7 entspricht $we):

      define di_radio DOIF ([08:00-10:00|7]) (set radio on) DOELSE (set radio off)

      Zeitintervalle über Mitternacht:

      define di_light DOIF ([22:00-07:00]) (set light on) DOELSE (set light off)

      in Verbindung mit Wochentagen (einschalten am Freitag ausschalten am Folgetag):

      define di_light DOIF ([22:00-07:00|5]) (set light on) DOELSE (set light off)

      Zeitintervalle über mehrere Tage müssen als Zeitpunkte angegeben werden.

      Einschalten am Freitag ausschalten am Montag:

      define di_light DOIF ([22:00|5]) (set light on) DOELSEIF ([10:00|1]) (set light off)

      Schalten mit Zeitfunktionen, hier: bei Sonnenaufgang und Sonnenuntergang:

      define di_light DOIF ([+{sunrise_rel(900,"06:00","08:00")}]) (set outdoorlight off) DOELSEIF ([+{sunset_rel(900,"17:00","21:00")}]) (set outdoorlight on)

      Indirekten Zeitangaben   back

      Oft möchte man keine festen Zeiten im Modul angeben, sondern Zeiten, die man z. B. über Dummys über die Weboberfläche verändern kann. Statt fester Zeitangaben können Stati, Readings oder Internals angegeben werden. Diese müssen eine Zeitangabe im Format HH:MM oder HH:MM:SS oder eine Zahl beinhalten.

      Anwendungsbeispiel: Lampe soll zu einer bestimmten Zeit eingeschaltet werden. Die Zeit soll über den Dummy time einstellbar sein:

      define time dummy
      set time 08:00
      define di_time DOIF ([[time]])(set lamp on)
      attr di_time do always


      Die indirekte Angabe kann ebenfalls mit einer Zeitfunktion belegt werden. Z. B.

      set time {sunset()}

      Das Dummy kann auch mit einer Sekundenzahl belegt werden, oder als relative Zeit angegeben werden, hier z. B. schalten alle 300 Sekunden:

      define time dummy
      set time 300
      define di_time DOIF ([+[time]])(save)


      Ebenfalls funktionieren indirekte Zeitangaben mit Zeitintervallen. Hier wird die Ein- und Ausschaltzeit jeweils über einen Dummy bestimmt:

      define begin dummy
      set begin 08:00

      define end dummy
      set end 10:00

      define di_time DOIF ([[begin]-[end]]) (set radio on) DOELSE (set radio off)


      Indirekte Zeitangaben können auch als Übergabeparameter für Zeitfunktionen, wie z. B. sunset oder sunrise übergeben werden:

      define di_time DOIF ([{sunrise(0,"[begin]","09:00")}-{sunset(0,"18:00","[end]")}]) (set lamp off) DOELSE (set lamp on)

      Bei einer Änderung des angebenen Status oder Readings wird die geänderte Zeit sofort im Modul aktualisiert.

      Angabe eines Readings als Zeitangabe. Beispiel: Schalten anhand eines Twilight-Readings:

      define di_time DOIF ([[myTwilight:ss_weather]])(set lamp on)

      Dynamische Änderung einer Zeitangabe.

      Anwendungsbeispiel: Die Endzeit soll abhängig von der Beginnzeit mit Hilfe einer eigenen Perl-Funktion, hier: OffTime(), bestimmt werden. begin und end sind Dummys, wie oben definiert:

      define di_time DOIF ([[begin]-[end]]) (set lamp on, set end {(OffTime("[begin]"))}) DOELSE (set lamp off)

      Indirekte Zeitangaben lassen sich mit Wochentagangaben kombinieren, z. B.:

      define di_time DOIF ([[begin]-[end]|7]) (set radio on) DOELSE (set radio off)

      Zeitsteuerung mit Zeitberechnung   back

      Zeitberechnungen werden innerhalb der eckigen Klammern zusätzlich in runde Klammern gesetzt. Die berechneten Triggerzeiten können absolut oder relativ mit einem Pluszeichen vor den runden Klammern angegeben werden. Es können beliebige Ausdrücke der Form HH:MM und Angaben in Sekunden als ganze Zahl in Perl-Rechenoperationen kombiniert werden. Perlfunktionen, wie z. B. sunset(), die eine Zeitangabe in HH:MM liefern, werden in geschweifte Klammern gesetzt. Zeiten im Format HH:MM bzw. Stati oder Readings, die Zeitangaben in dieser Form beinhalten werden in eckige Klammern gesetzt.

      Anwendungsbeispiele:

      Lampe wird nach Sonnenuntergang zwischen 900 und 1500 (900+600) Sekunden zufällig zeitverzögert eingeschaltet. Ausgeschaltet wird die Lampe nach 23:00 Uhr um bis zu 600 Sekunden zufällig verzögert:

      define di_light DOIF ([({sunset()}+900+int(rand(600)))])
        (set lamp on)
      DOELSEIF ([([23:00]+int(rand(600)))])
        (set lamp off)

      Zeitberechnung können ebenfalls in Zeitintervallen genutzt werden.

      Licht soll eine Stunde vor gegebener Zeit eingeschaltet werden und eine Stunde danach wieder ausgehen:

      define Fixtime dummy
      set Fixtime 20:00

      define di_light DOIF ([([Fixtime]-[01:00]) - ([Fixtime]+[01:00])])
        (set lampe on)
      DOELSE
        (set lampe off)

      Hier das Gleiche wie oben, zusätzlich mit Zufallsverzögerung von 300 Sekunden und nur an Wochenenden:

      define di_light DOIF ([([Fixtime]-[01:00]-int(rand(300))) - ([Fixtime]+[01:00]+int(rand(300)))]|7])
        (set lampe on)
      DOELSE
        (set lampe off)

      Ein Änderung des Dummys Fixtime z. B. durch "set Fixtime ...", führt zur sofortiger Neuberechnung der Timer im DOIF-Modul.

      Für die Zeitberechnung wird der Perlinterpreter benutzt, daher sind für die Berechnung der Zeit keine Grenzen gesetzt.

      Kombination von Ereignis- und Zeitsteuerung mit logischen Abfragen   back

      Anwendungsbeispiel: Lampe soll ab 6:00 Uhr angehen, wenn es dunkel ist und wieder ausgehen, wenn es hell wird, spätestens aber um 9:00 Uhr:

      define di_lamp DOIF ([06:00-09:00] and [sensor:brightness] < 40) (set lamp on) DOELSE (set lamp off)

      Anwendungsbeispiel: Rollläden sollen an Arbeitstagen nach 6:25 Uhr hochfahren, wenn es hell wird, am Wochenende erst um 9:00 Uhr, herunter sollen sie wieder, wenn es dunkel wird:

      define di_shutters DOIF ([sensor:brightness]>100 and [06:25-09:00|8] or [09:00|7]) (set shutters up) DOELSEIF ([sensor:brightness]<50) (set shutters down)

      Zeitintervalle, Readings und Stati ohne Trigger   back

      Angaben in eckigen Klammern, die mit einem Fragezeichen beginnen, führen zu keiner Triggerung des Moduls, sie dienen lediglich der Abfrage.

      Anwendungsbeispiel: Licht soll zwischen 06:00 und 10:00 angehen, getriggert wird nur durch den Taster nicht um 06:00 bzw. 10:00 Uhr und nicht durch das Device Home

      define di_motion DOIF ([?06:00-10:00] and [button] and [?Home] eq "present")(set lamp on-for-timer 600)
      attr di_motion do always


      Nutzung von Readings, Stati oder Internals im Ausführungsteil   back

      Anwendungsbeispiel: Wenn ein Taster betätigt wird, soll Lampe1 mit dem aktuellen Zustand der Lampe2 geschaltet werden:

      define di_button DOIF ([button]) (set lamp1 [lamp2])
      attr di_button do always


      Anwendungsbeispiel: Benachrichtung beim Auslösen eines Alarms durch Öffnen eines Fensters:

      define di_pushmsg DOIF ([window] eq "open" and [alarm] eq "armed") (set Pushover msg 'alarm' 'open windows [window:LastDevice]' '' 2 'persistent' 30 3600)

      Berechnungen im Ausführungsteil   back

      Berechnungen können in geschweiften Klammern erfolgen. Aus Kompatibilitätsgründen, muss die Berechnung unmittelbar mit einer runden Klammer beginnen. Innerhalb der Perlberechnung können Readings, Stati oder Internals wie gewohnt in eckigen Klammern angegeben werden.

      Anwendungsbeispiel: Es soll ein Vorgabewert aus zwei verschiedenen Readings ermittelt werden und an das set Kommando übergeben werden:

      define di_average DOIF ([08:00]) (set TH_Modul desired {([default:temperature]+[outdoor:temperature])/2})
      attr di_average do always


      Ersatzwert für nicht existierende Readings oder Stati   back

      Es kommt immer wieder vor, dass in der Definition des DOIF-Moduls angegebene Readings oder Stati zur Laufzeit nicht existieren. Der Wert ist dann leer. Bei der Definition von Stati oder Readings kann für diesen Fall ein Vorgabewert oder sogar eine Perlberechnung am Ende des Ausdrucks kommagetrennt angegeben werden.

      Syntax:

      [<device>,<default value>]
      oder
      [<device>:<reading>,<default value>]

      Beispiele:

      [lamp,"off"]
      [room:temperatur,20]
      [brightness,3*[myvalue]+2]
      [heating,AttrVal("mydevice","myattr","")]
      [[mytime,"10:00"]]

      Möchte man stattdessen einen bestimmten Wert global für das gesamte Modul definieren, so lässt sich das über das Attribut notexist bewerkstelligen. Ein angegebener Default-Wert beim Status oder beim Reading übersteuert das "notexist"-Attribut.

      Syntax: attr <DOIF-module> notexist "<default value>"

      Filtern nach Ausdrücken mit Ausgabeformatierung   back

      Syntax: [<Device>:<Reading>|<Internal>:d|"<Regex>":<Output>]

      d - Der Buchstabe "d" ist ein Synonym für das Filtern nach Dezimalzahlen, es entspricht intern dem regulären Ausdruck "(-?\d+(\.\d+)?)"
      <Regex>- Der reguläre Ausdruck muss in Anführungszeichen angegeben werden. Dabei werden Perl-Mechanismen zu regulären Ausdrücken mit Speicherung der Ergebnisse in Variablen $1, $2 usw. genutzt.
      <Output> - ist ein optionaler Parameter, hier können die in den Variablen $1, $2, usw. aus der Regex-Suche gespeicherten Informationen für die Aufbereitung genutzt werden. Sie werden in Anführungzeichen bei Texten oder in Perlfunktionen angegeben. Wird kein Output-Parameter angegeben, so wird automatisch $1 genutzt.

      Beispiele:

      Es soll aus einem Reading, das z. B. ein Prozentzeichen beinhaltet, nur der Zahlenwert für den Vergleich genutzt werden:

      define di_heating DOIF ([adjusting:actuator:d] < 10) (set heating off) DOELSE (set heating on)

      Alternativen für die Nutzung der Syntax am Beispiel des Filterns nach Zahlen:

      [mydevice:myreading:d]
      entspricht:
      [mydevice:myreading:"(-?\d+(\.\d+)?)"]
      entspricht:
      [mydevice:myreading:"(-?\d+(\.\d+)?)":$1]
      entspricht:
      [mydevice:myreading:"(-?\d+(\.\d+)?)":"$1"]
      entspricht:
      [mydevice:myreading:"(-?\d+(\.\d+)?)":sprintf("%s":$1)]

      Es soll aus einem Text eine Zahl herausgefiltert werden und anschließend die Einheit °C angehängt werden:

      ... (set mydummy [mydevice:myreading:d:"$1 °C"])

      Es soll die Zahl aus einem Reading auf 2 Nachkommastellen formatiert werden:

      [mydevice:myreading:d:sprintf("%.2f",$1)]

      Es sollen aus einem Reading der Form "HH:MM:SS" die Stunden, Minuten und Sekunden separieret werden:

      [mydevice:myreading:"(\d\d):(\d\d):(\d\d)":"hours: $1, minutes $2, seconds: $3"]

      Der Inhalt des Dummys Alarm soll in einem Text eingebunden werden:

      [alarm:state:"(.*)":"state of alarm is $1"]

      Die Definition von regulären Ausdrücken mit Nutzung der Perl-Variablen $1, $2 usw. kann in der Perldokumentation nachgeschlagen werden.

      Verzögerungen   back

      Verzögerungen für die Ausführung von Kommandos werden pro Befehlsfolge über das Attribut "wait" definiert. Syntax:

      attr <DOIF-module> wait <Sekunden für Befehlsfolge des ersten DO-Falls>:<Sekunden für Befehlsfolge des zweiten DO-Falls>:...

      Sollen Verzögerungen innerhalb von Befehlsfolgen stattfinden, so müssen diese Komandos in eigene Klammern gesetzt werden, das Modul arbeitet dann mit Zwischenzuständen.

      Beispiel: Bei einer Befehlssequenz, hier: (set lamp1 on, set lamp2 on), soll vor dem Schalten von lamp2 eine Verzögerung von einer Sekunde stattfinden. Die Befehlsfolge muss zunächst mit Hilfe von Klammerblöcke in eine Befehlssequenz aufgespalten werden: (set lamp1 on)(set lamp2 on). Nun kann mit dem wait-Attribut nicht nur für den Beginn der Sequenz, sondern für jeden Klammerblock eine Verzögerung, getrennt mit Komma, definieren werden, hier also: wait 0,1. Damit wird lamp1 sofort, lamp2 eine Sekunde danach geschaltet. Die Verzögerungszeit bezieht sich immer auf den vorherigen Befehl.

      Beispieldefinition bei mehreren DO-Blöcken mit Befehlssequenzen:

      DOIF (Bedingung1)
      (set ...) ## erster Befehl der ersten Sequenz soll um eine Sekunde verzögert werden
      (set ...) ## zweiter Befehl der ersten Sequenz soll um 2 Sekunden nach dem ersten Befehl verzögert werden
      DOELSEIF (Bedingung2)
      (set ...) ## erster Befehl der zweiten Sequenz soll um 3 Sekunden verzögert werden
      (set ...) ## zweiter Befehl der zweiten Sequenz soll um 0,5 Sekunden nach dem ersten Befehl verzögert werden

      attr <DOIF-module> wait 1,2:3,0.5


      Das Aufspalten einer kommagetrennten Befehlskette in eine Befehlssequenz, wie im obigen Beispiel, sollte nicht vorgenommen werden, wenn keine Verzögerungen zwischen den Befehlen benötigt werden. Denn bei einer Befehlssequenz werden Zwischenzustände cmd1_1, cmd1_2 usw. generiert, die Events erzeugen und damit unnötig FHEM-Zeit kosten.

      Für Kommandos, die nicht verzögert werden sollen, werden Sekundenangaben ausgelassen oder auf Null gesetzt. Die Verzögerungen werden nur auf Events angewandt und nicht auf Zeitsteuerung. Eine bereits ausgelöste Verzögerung wird zurückgesetzt, wenn während der Wartezeit ein Kommando eines anderen DO-Falls, ausgelöst durch ein neues Ereignis, ausgeführt werden soll.

      Statt Sekundenangaben können ebenfalls Stati, Readings in eckigen Klammen, Perl-Funktionen sowie Perl-Berechnung angegeben werden. Dabei werden die Trennzeichen Komma und Doppelpunkt in Klammern geschützt und gelten dort nicht als Trennzeichen. Diese Angaben können ebenfalls bei folgenden Attributen gemacht werden: cmdpause, repeatcmd, repeatsame, waitsame, waitdel

      Beispiel:

      attr my_doif wait 1:[mydummy:state]*3:rand(600)+100,Attr("mydevice","myattr","")


      Verzögerungen von Timern   back

      Verzögerungen können mit Hilfe des Attributs timerWithWait auf Timer ausgeweitet werden.

      Anwendungsbeispiel: Lampe soll zufällig nach Sonnenuntergang verzögert werden.

      define di_rand_sunset DOIF ([{sunset()}])(set lamp on)
      attr di_rand_sunset wait rand(1200)
      attr di_rand_sunset timerWithWait 1
      attr di_rand_sunset do always


      Anwendungsbeispiel: Benachrichtung "Waschmaschine fertig", wenn Verbrauch mindestens 5 Minuten unter 2 Watt (Perl-Code wird in geschweifte Klammern gesetzt):

      define di_washer DOIF ([power:watt]<2) ({system("wmail washer finished")})
      attr di_washer wait 300


      Eine erneute Benachrichtigung wird erst wieder ausgelöst, wenn zwischendurch der Verbrauch über 2 Watt angestiegen war.

      Anwendungsbeispiel: Rolladen um 20 Minuten zeitverzögert bei Sonne runter- bzw. hochfahren (wenn der Zustand der Sonne wechselt, wird die Verzögerungszeit zurückgesetzt):

      define di_shutters DOIF ([Sun] eq "on") (set shutters down) DOELSE (set shutters up)
      attr di_shutters wait 1200:1200


      Anwendungsbeispiel: Beschattungssteuerung abhängig von der Temperatur. Der Rollladen soll runter von 11:00 Uhr bis Sonnenuntergang, wenn die Temperatur über 26 Grad ist. Temperaturschwankungen um 26 Grad werden mit Hilfe des wait-Attributes durch eine 15 minutige Verzögerung ausgeglichen.

      define di_shutters DOIF ([sensor:temperature] > 26 and [11:00-{sunset_abs()}] (set shutters down) DOELSE (set shutters up)
      attr di_shutters wait 900:900


      Anwendungsbeispiel: Belüftung in Kombination mit einem Lichtschalter mit Nachlaufsteuerung. Der Lüfter soll angehen, wenn das Licht mindestens 2 Minuten lang brennt oder die Luftfeuchtigkeit 65 % überschreitet, der Lüfter soll ausgehen, drei Minuten nachdem die Luftfeuchtigkeit unter 60 % fällt und das Licht aus ist bzw. das Licht ausgeht und die Luftfeuchtigkeit unter 60% ist. Definitionen lassen sich über die Weboberfläche (DEF-Eingabebereich) übersichtlich gestalten:

      define di_fan DOIF ([light] eq "on")
        (set fan on)
      DOELSEIF ([sensor:humidity]>65)
        (set fan on)
      DOELSEIF ([light] eq "off" and [sensor:humidity]<60)
        (set fan off)

      attr di_fan wait 120:0:180


      Zurücksetzen des Waittimers für das gleiche Kommando   back

      Im Gegensatz zu do always wird ein Waittimer mit dem Attribut do resetwait auch dann zurückgesetzt, wenn die gleiche Bedingung wiederholt wahr wird.
      Damit können Ereignisse ausgelöst werden, wenn etwas innerhalb einer Zeitspanne nicht passiert.
      Das Attribut do resetwait impliziert eine beliebige Wiederholung wie do always. Diese lässt sich allerdings mit dem Attribut repeatsame einschränken s. u.

      Anwendungsbeispiel: Meldung beim Ausbleiben eines Events

      define di_push DOIF ([Tempsensor])(set pushmsg "sensor failed again")
      attr di_push wait 1800
      attr di_push do resetwait


      Wiederholung von Befehlsausführung   back

      Wiederholungen der Ausführung von Kommandos werden pro Befehlsfolge über das Attribut "repeatcmd" definiert. Syntax:

      attr <DOIF-modul> repeatcmd <Sekunden für Befehlsfolge des ersten DO-Falls>:<Sekunden für Befehlsfolge des zweiten DO-Falls>:...

      Statt Sekundenangaben können ebenfalls Stati in eckigen Klammen oder Perlbefehle angegeben werden.

      Die Wiederholung findet so lange statt, bis der Zustand des Moduls in einen anderen DO-Fall wechselt.

      Anwendungsbeispiel: Nach dem Eintreffen des Ereignisses wird die push-Meldung stündlich wiederholt, bis Frost ungleich "on" ist.

      define di_push DOIF ([frost] eq "on")(set pushmsg "danger of frost")
      attr di_push repeatcmd 3600


      Eine Begrenzung der Wiederholungen kann mit dem Attribut repeatsame vorgenommen werden
      attr di_push repeatsame 3

      Ebenso lässt sich das repeatcmd-Attribut mit Zeitangaben kombinieren.

      Anwendungsbeispiel: Wiederholung ab einem Zeitpunkt

      define di_alarm_clock DOIF ([08:00])(set alarm_clock on)
      attr di_alarm_clock repeatcmd 300
      attr di_alarm_clock repeatsame 3
      attr di_alarm_clock do always


      Ab 8:00 Uhr wird 3 mal der Weckton jeweils nach 5 Minuten wiederholt.

      Anwendungsbeispiel: Warmwasserzirkulation

      define di_pump_circ DOIF ([05:00-22:00])(set pump on)(set pump off) DOELSE (set pump off)
      attr di_pump_circ wait 0,300
      attr di_pump_circ repeatcmd 3600


      Zwischen 5:00 und 22:00 Uhr läuft die Zirkulationspumpe alle 60 Minuten jeweils 5 Minuten lang.

      Anwendungsbeispiel: Anwesenheitssimulation

      define di_presence_simulation DOIF ([19:00-00:00])(set lamp on-for-timer {(int(rand(1800)+300))}) DOELSE (set lamp off)
      attr di_presence_simulation repeatcmd rand(3600)+2200



      Zwangspause für das Ausführen eines Kommandos seit der letzten Zustandsänderung   back

      Mit dem Attribut cmdpause <Sekunden für cmd_1>:<Sekunden für cmd_2>:... wird die Zeitspanne in Sekunden angegeben für eine Zwangspause seit der letzten Zustandsänderung. In der angegebenen Zeitspanne wird ein Kommando nicht ausgeführt, auch wenn die dazugehörige Bedingung wahr wird.

      Anwendungsbeispiel: Meldung über Frostgefahr alle 60 Minuten

      define di_frost DOIF ([outdoor:temperature] < 0) (set pushmsg "danger of frost")
      attr di_frost cmdpause 3600
      attr di_frost do always


      Begrenzung von Wiederholungen eines Kommandos   back

      Mit dem Attribut repeatsame <maximale Anzahl von cmd_1>:<maximale Anzahl von cmd_2>:... wird die maximale Anzahl hintereinander folgenden Ausführungen festgelegt.

      Anwendungsbeispiel: Die Meldung soll maximal dreimal erfolgen mit einer Pause von mindestens 10 Minuten

      define di_washer DOIF ([Watt]<2) (set pushmeldung "washer finished")
      attr di_washer repeatsame 3
      attr di_washer cmdpause 600


      Das Attribut repeatsame lässt sich mit do always oder do resetwait kombinieren. Wenn die maximale Anzahl für ein Kommando ausgelassen oder auf Null gesetzt wird, so gilt für dieses Kommando der Defaultwert "einmalige Wiederholung"; in Kombination mit do always bzw. do resetwait gilt für dieses Kommando "beliebige Wiederholung".

      Anwendungsbeispiel: cmd_1 soll beliebig oft wiederholt werden, cmd_2 maximal zweimal

      attr di_repeat repeatsame 0:2
      attr di_repeat do always


      Ausführung eines Kommandos nach einer Wiederholung einer Bedingung   back

      Mit dem Attribut waitsame <Zeitspanne in Sekunden für cmd_1>:<Zeitspanne in Sekunden für das cmd_2>:... wird ein Kommando erst dann ausgeführt, wenn innerhalb einer definierten Zeitspanne die entsprechende Bedingung zweimal hintereinander wahr wird.
      Für Kommandos, für die waitsame nicht gelten soll, werden die entsprechenden Sekundenangaben ausgelassen oder auf Null gesetzt.

      Anwendungsbeispiel: Rollladen soll hoch, wenn innerhalb einer Zeitspanne von 2 Sekunden ein Taster betätigt wird

      define di_shuttersup DOIF ([Button])(set shutters up)
      attr di_shuttersup waitsame 2
      attr di_shuttersup do always


      Löschen des Waittimers nach einer Wiederholung einer Bedingung   back

      Das Gegenstück zum repeatsame-Attribut ist das Attribut waitdel. Die Syntax mit Sekundenangaben pro Kommando entspricht der, des wait-Attributs. Im Gegensatz zum wait-Attribut, wird ein laufender Timer gelöscht, falls eine Bedingung wiederholt wahr wird. Sekundenangaben können pro Kommando ausgelassen oder auf Null gesetzt werden.

      Anwendungsbeispiel: Rollladen soll herunter, wenn ein Taster innerhalb von zwei Sekunden nicht wiederholt wird

      define di_shuttersdown DOIF ([Button])(set shutters down)
      attr di_shuttersdown waitdel 2
      attr di_shuttersdown do always


      "di_shuttersdown" kann nicht mit dem vorherigen Anwendungsbeispiel "di_shuttersup" innerhalb eines DOIF-Moduls kombiniert werden, da in beiden Fällen die gleiche Bedingung vorkommt.

      Die Attribute wait und waitdel lassen sich für verschiedene Kommandos kombinieren. Falls das Attribut für ein Kommando nicht gesetzt werden soll, kann die entsprechende Sekundenzahl ausgelassen oder eine Null angegeben werden.

      Beispiel: Für cmd_1 soll wait gelten, für cmd_2 waitdel

      attr di_cmd wait 2:0
      attr di_cmd waitdel 0:2


      Readingauswertung nur beim Event des jeweiligen Readings   back

      Standardmäßig werden angegebene Readings ausgewertet, wenn irgend ein Event des angegebenen Devices triggert. Möchte man gezielt nur dann ein angegebenes Reading auswerten, wenn sich nur dieses ändert, so lässt sich das mit dem Attribut checkReadingEvent einschränken. Das ist insb. dann interessant, wenn ein Modul verschiedene Readings zu unterschiedlichen Zeitpunkten aktualisiert.

      Beispiel:

      define di_lamp DOIF ([mytwilight:light] < 3) (set lamp on) DOELSEIF ([mytwilight:light] > 3) (set lamp off)
      attr di_lamp checkReadingEvent 1


      Bei der Angabe von indirekten Timern wird grundsätzlich intern checkReadingEvent benutzt:

      define di_lamp ([[mytwilight:ss_weather]]) (set lamp on)
      attr di_lamp do always


      Hier braucht das Attribut checkReadingEvent nicht explizit gesetzt werden. Die Zeit wird nur dann neu gesetzt, wenn sich tatsächlich das Reading ss_weather ändert.

      Eindeutige Statuserkennung   back

      Bei Änderungen des Readings state wird in FHEM standardmäßig, im Gegensatz zu allen anderen Readings, der Readingname hier: "state: " im Event nicht vorangestellt. Möchte man eindeutig eine Statusänderung eines Moduls erkennen, so lässt sich das mit dem Attribut addStateEvent bewerksteligen. Bei Statusänderungen eines Devices wird bei der Angabe des Attributes addStateEvent im Event "state: " vorangestellt, darauf kann man dann gezielt im DOIF-Modul triggern.

      Beispiel:

      define di_lamp ([FB:"^state: on$"]) (set lamp on)
      attr di_lamp do always
      attr di_lamp addStateEvent


      Triggerung durch selbst ausgelöste Events   back

      Standardmäßig unterbindet das DOIF-Modul Selbsttriggerung. D. h. das Modul reagiert nicht auf Events, die es selbst direkt oder indirekt auslöst. Dadurch werden Endlosschleifen verhindert. Wenn das Attribut selftrigger wait gesetzt ist, kann das DOIF-Modul auf selbst ausgelöste Events reagieren. Dazu müssen die entsprchenden Kommandos mit wait verzögert werden. Bei der Angabe selftrigger all reagiert das Modul grundsätzlich alle selbst ausgelösten Trigger.

      Zu beachten ist, dass der Zustand des Moduls erst nach der Ausführung des Befehls gesetzt wird, dadurch wird die Zustandsverwaltung (ohne do always) ausgehebelt. Die Auswertung des eigenen Zustands z. B. über [$SELF:cmd] funktioniert dagegen korrekt, weil dieser immer bei der eigenen Triggerung bereits gesetzt ist. Bei der Verwendung des Attributes selftrigger all sollte beachtet werden, dass bereits in der zweiten Rekursion, wenn ein Befehl nicht durch wait verzögert wird, FHEM eine weitere Triggerung unterbindet, um Endlosschleifen zu verhindern.

      Setzen der Timer mit Event   back

      Wenn das Attribut timerevent ungleich Null gesetzt ist, wird beim Setzen der Timer im DOIF-Modul ein Event erzeugt. Das kann z. B. bei FHEM2FHEM nützlich sein, um die Timer-Readings zeitnah zu aktualisieren.

      Zeitspanne eines Readings seit der letzten Änderung   back

      Bei Readingangaben kann die Zeitspanne mit [<Device>:<Reading>:sec] in Sekunden seit der letzten Änderung bestimmt werden.

      Anwendungsbeispiel: Licht soll angehen, wenn der Status des Bewegungsmelders in den letzten fünf Sekunden upgedatet wurde.

      define di_lamp DOIF ([BM:state:sec] < 5) (set lamp on-for-timer 300)
      attr di_lamp do always


      Bei HM-Bewegungsmelder werden periodisch Readings aktualisiert, dadurch wird das Modul getrigger, auch wenn keine Bewegung stattgefunden hat. Der Status bleibt dabei auf "motion". Mit der obigen Abfrage lässt sich feststellen, ob der Status aufgrund einer Bewegung tatsächlich upgedatet wurde.

      Alle Bedingungen prüfen   back

      Bei der Abarbeitung der Bedingungen, werden nur die Bedingungen überprüft, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten. Mit dem Attribut checkall lässt sich das Verhalten so verändern, dass bei einem Event-Trigger auch Bedingungen geprüft werden, die das triggernde Device nicht beinhalten. Folgende Parameter können angebeben werden:

      checkall event Es werden alle Bedingungen geprüft, wenn ein Event-Trigger auslöst.
      checkall timer Es werden alle Bedingungen geprüft, wenn ein Timer-Trigger auslöst.
      checkall all   Es werden grundsätzlich alle Bedingungen geprüft.

      Zu beachten ist, dass bei einer wahren Bedingung die dazugehörigen Befehle ausgeführt werden und die Abarbeitung immer beendet wird - es wird also grundsätzlich immer nur ein Befehlszweig ausgeführt und niemals mehrere.

      Darstellungselement mit Eingabemöglichkeit im Frontend und Schaltfunktion   back

      Die unter Dummy beschriebenen Attribute readingList und setList stehen auch im DOIF zur Verfügung. Damit wird erreicht, dass DOIF im WEB-Frontend als Eingabeelement mit Schaltfunktion dienen kann. Zusätzliche Dummys sind nicht mehr erforderlich. Es können im Attribut setList, die in FHEMWEB angegebenen Modifier des Attributs widgetOverride verwendet werden. Siehe auch das weiterführende Beispiel für Tablet-UI. Für die Verwendung moduleigener Readings ist die Funktionalität nicht gewährleistet, siehe benutzerdefinierte Readings.

      Anwendungsbeispiel: Eine Schaltuhr mit time-Widget für die Ein- u. Ausschaltzeiten und der Möglichkeit über eine Auswahlliste manuell ein und aus zu schalten.

      define time_switch DOIF (["$SELF:mybutton: on"] or [[$SELF:mybegin,"00:00"]])
        (set lamp on)
      DOELSEIF (["$SELF:mybutton: off"] or [[$SELF:myend,"00:00"]])
        (set lamp off)

      attr time_switch cmdState on|off
      attr time_switch readingList mybutton mybegin myend
      attr time_switch setList mybutton:on,off mybegin:time myend:time
      attr time_switch webCmd mybutton:mybegin:myend


      Status des Moduls   back

      Der Status des Moduls wird standardmäßig mit cmd_1, cmd_2, usw., bzw. cmd1_1 cmd1_2 usw. für Befehlssequenzen belegt. Dieser lässt sich über das Attribut "cmdState" mit Komma bzw. | getrennt umdefinieren:

      attr <DOIF-modul> cmdState <Status für cmd1_1>,<Status für cmd1_2>,...| <Status für cmd2_1>,<Status für cmd2_2>,...|...

      Beispiele:

      attr di_lamp cmdState on|off

      Pro Status können ebenfalls Stati oder Readings in eckigen Klammern oder Perlfunktionen sowie Berechnungen in Klammern der Form {(...)} angegeben werden.
      Die Trennzeichen Komma und | sind in Klammern und Anführungszeichen geschützt und gelten dort nicht als Trennzeichen.

      Zustände cmd1_1, cmd1 und cmd2 sollen wie folgt umdefiniert werden:

      attr di_mytwilight cmdState [mytwilight:ss_astro], {([mytwilight:twilight_weather]*2+10)}|My attribut is: {(Attr("mydevice","myattr",""))}

      Reine Statusanzeige ohne Ausführung von Befehlen   back

      Der Ausführungsteil kann jeweils ausgelassen werden.

      Anwendungsbeispiel: Aktuelle Außenfeuchtigkeit im Status

      define di_hum DOIF ([outdoor:humidity]>70) DOELSEIF ([outdoor:humidity]>50) DOELSE
      attr di_hum cmdState wet|normal|dry


      Anpassung des Status mit Hilfe des Attributes state   back

      Es können beliebige Reading und Stati oder Internals angegeben werden.

      Anwendungsbeispiel: Aktuelle Außenfeuchtigkeit inkl. Klimazustand (Status des Moduls wurde mit cmdState definiert s. o.)

      attr di_hum state The current humidity is [outdoor:humidity], it is [di_hum]

      Es können beim Attribut state ebenfalls Berechnungen in geschweiften Klammern durchgeführt werden. Aus Kompatibilitätsgründen, muss die Berechnung mit einer runden Klammer beginnen.

      Anwendungsbeispiel: Berechnung des Mittelwertes zweier Readings:

      define di_average DOIF
      attr di_average state Average of the two rooms is {([room1:temperature]+[room2:temperature])/2}


      Der Status wird automatisch aktualisiert, sobald sich eine der Temperaturen ändert

      Da man beliebige Perl-Ausdrücke verwenden kann, lässt sich z. B. der Mittelwert auf eine Stelle mit der Perlfunktion sprintf formatieren:

      attr di_average state Average of the two rooms is {(sprintf("%.1f",([room1:temperature]+[room2:temperature])/2))}

      Vorbelegung des Status mit Initialisierung nach dem Neustart mit dem Attribut initialize   back

      Anwendungsbeispiel: Nach dem Neustart soll der Zustand von di_lamp mit "initialized" vorbelegt werden. Das Reading cmd_nr wird auf 0 gesetzt, damit wird ein Zustandswechsel provoziert, das Modul wird initialisiert - der nächste Trigger führt zum Ausführen eines Kommandos.

      attr di_lamp intialize initialized

      Das ist insb. dann sinnvoll, wenn das System ohne Sicherung der Konfiguration (unvorhergesehen) beendet wurde und nach dem Neustart die zuletzt gespeicherten Zustände des Moduls nicht mit den tatsächlichen übereinstimmen.

      Deaktivieren des Moduls   back

      Ein DOIF-Modul kann mit Hilfe des Attributes disable, deaktiviert werden. Dabei werden alle Timer und Readings des Moduls gelöscht. Soll das Modul nur vorübergehend deaktiviert werden, so kann das durch set <DOIF-modul> disable geschehen. Hierbei bleiben alle Timer aktiv, sie werden aktualisiert - das Modul bleibt im Takt, allerding werden keine Befehle ausgeführt. Das Modul braucht mehr Rechenzeit, als wenn es komplett über das Attribut deaktiviert wird. In beiden Fällen bleibt der Zustand nach dem Neustart erhalten, das Modul bleibt deaktiviert.

      Initialisieren des Moduls   back

      Mit set <DOIF-modul> initialize wird ein mit set <DOIF-modul> disable deaktiviertes Modul wieder aktiviert. Das Kommando set <DOIF-modul> initialize kann auch dazu genutzt werden ein aktives Modul zu initialisiert, in diesem Falle wird der letzte Zustand des Moduls gelöscht, damit wird ein Zustandswechsel herbeigeführt, der nächste Trigger führt zur Ausführung.

      Auführen von Befehlszweigen ohne Auswertung der Bedingung   back

      Mit set <DOIF-modul> cmd_<nr> lässt sich ein Befehlszweig (cmd_1, cmd_2, usw.) bedingunglos ausführen.

      Der Befehl hat folgende Eigenschaften:

      1) der set-Befehl übersteuert alle Attribute wie z. B. wait, do, usw.
      2) ein laufender Wait-Timer wird unterbrochen
      3) beim deaktivierten oder im Modus disable befindlichen Modul wird der set Befehl ignoriert

      Anwendungsbeispiel: Schaltbare Lampe über Fernbedienung und Webinterface

      define di_lamp DOIF ([FB:"on"]) (set lamp on) DOELSEIF ([FB:"off"]) (set lamp off)
      attr di_lamp cmdState on|off
      attr di_lamp devStateIcon on:on:cmd_2 initialized|off:off:cmd_1

      Mit der Definition des Attribut devStateIcon führt das Anklicken des on/off-Lampen-Icons zum Ausführen des set-Kommandos cmd_1 bzw. cmd_2 und damit zum Schalten der Lampe.

      Weitere Anwendungsbeispiele   back

      Zweipunktregler a la THRESHOLD

      setreading sensor default 20
      setreading sensor hysteresis 1

      define di_threshold DOIF ([sensor:temperature]<([sensor:default]-[sensor:hysteresis])) (set heating on) DOELSEIF ([sensor:temperature]>[sensor:default]) (set heating off)


      Eleganter lässt sich ein Zweipunktregler (Thermostat) mit Hilfe des, für solche Zwecke, spezialisierten THRESHOLD-Moduls realisieren, siehe: THRESHOLD

      on-for-timer

      Die Nachbildung eines on-for-timers lässt sich wie folgt realisieren:

      define di_on_for_timer ([detector:"motion"])
      (set light on)
      (set light off)
      attr di_on_for_timer do resetwait
      attr di_on_for_timer wait 0,30


      Hiermit wird das Licht bei Bewegung eingeschaltet. Dabei wird, solange es brennt, bei jeder Bewegung die Ausschaltzeit neu auf 30 Sekunden gesetzt, "set light on" wird dabei nicht unnötig wiederholt.

      Die Beispiele stellen nur eine kleine Auswahl von möglichen Problemlösungen dar. Da sowohl in der Bedingung (hier ist die komplette Perl-Syntax möglich), als auch im Ausführungsteil, keine Einschränkungen gegeben sind, sind die Möglichkeiten zur Lösung eigener Probleme mit Hilfe des Moduls sehr vielfältig.

      Zu beachten   back

      In jeder Bedingung muss mindestens ein Trigger angegeben sein (Angaben in eckigen Klammern). Die entsprechenden DO-Fälle werden nur dann ausgewertet, wenn auch das entsprechende Event oder Zeit-Trigger ausgelöst wird.

      Zeitangaben der Art:

      define di_light DOIF ([08:00] and [10:00]) (set switch on)

      sind nicht sinnvoll, da diese Bedingung nie wahr sein wird.

      Angaben, bei denen aufgrund der Definition kein Zustandswechsel erfolgen kann z. B.:

      define di_light DOIF ([08:00]) (set switch on)
      attr di_light do always


      müssen mit Attribut do always definiert werden, damit sie nicht nur einmal, sondern jedes mal (hier jeden Tag) ausgeführt werden.

      Bei Devices, die mit Zwischenzuständen arbeiten, insbesondere HM-Komponenten (Zwischenzustand: set_on, set_off), sollte die Definition möglichst genau formuliert werden, um unerwünschte Effekte zu vermeiden:

      statt:

      define di_lamp DOIF ([HM_switch] eq "on") (set lamp on) DOELSE (set lamp off)

      konkreter spezifizieren:

      define di_lamp DOIF ([HM_switch] eq "on") (set lamp on) DOELSEIF ([HM_switch] eq "off") (set lamp off)

      Namenskonvention: Da der Doppelpunkt bei Readingangaben als Trennzeichen gilt, darf er nicht im Namen des Devices vorkommen. In solchen Fällen bitte das Device umbenennen.

      Standardmäßig, ohne das Attribut do always, wird das Wiederholen desselben Kommmandos vom Modul unterbunden. Daher sollte nach Möglichkeit eine Problemlösung mit Hilfe eines und nicht mehrerer DOIF-Module realisiert werden, getreu dem Motto "wer die Lampe einschaltet, soll sie auch wieder ausschalten". Dadurch wird erreicht, dass unnötiges (wiederholendes) Schalten vom Modul unterbunden werden kann, ohne dass sich der Anwender selbst darum kümmern muss.

      Mehrere Bedingungen, die zur Ausführung gleicher Kommandos führen, sollten zusammengefasst werden. Dadurch wird ein unnötiges Schalten aufgrund verschiedener Zustände verhindert.

      Beispiel:

      define di_lamp DOIF ([brightness] eq "off") (set lamp on) DOELSEIF ([19:00]) (set lamp on) DOELSE (set lamp off)

      Hier wird um 19:00 Uhr Lampe eingeschaltet, obwohl sie evtl. vorher schon durch das Ereignis brightness "off" eingeschaltet wurde.

      define di_lamp DOIF ([brightness] eq "off" or [19:00]) (set lamp on) DOELSE (set lamp off)

      Hier passiert das nicht mehr, da die ursprünglichen Zustände cmd_1 und cmd_2 jetzt nur noch einen Zustand cmd_1 darstellen und dieser wird nicht wiederholt.

      Kurzreferenz   back
        ⟨⟩ kennzeichnet optionale Angaben

      Definition
        define <name> DOIF ⟨(<Bedingung>) ⟨⟨(⟨<Befehle>⟩)⟩ ⟨⟨⟨DOELSEIF (<Bedingung>) ⟨(⟨<Befehle>⟩)⟩⟩ ... ⟩⟨DOELSE ⟨(⟨<Befehle>⟩)⟩⟩⟩⟩⟩
        Befehlstrennzeichen ist das Komma (<Befehl>, <Befehl>, ...)
        Befehlssequenzen werden in runde Klammern gesetzt (<Befehlssequenz A>) (<Befehlssequenz B>) ...
        Enthält ein Befehl Kommata, ist er zusätzlich in runde Klammern einzuschliessen (<Befehlsteil a>, <Befehlsteil b> ... )
        Perl-Befehle {<Perl-Befehl>} sind in geschweifte Klammern einzuschliessen
        Jede Berechnung {(<Berechnung>)⟨<Berechnung>⟩} in einem Befehl ist in geschweifte Klammern einzuschliessen und muss mit einer geöffneten runden Klammer beginnen.

      Readings
        Device
        Name des auslösenden Gerätes

        cmd
        Nr. des letzten ausgeführten Befehls als Dezimalzahl oder 0 nach Initialisierung des DOIF, in der Form <Nr. des Befehlszweiges>⟨.<Nr. der Sequenz>⟩

        cmd_event
        Angabe des auslösenden Ereignisses

        cmd_nr
        Nr. des letzten ausgeführten Befehlszweiges

        cmd_seqnr
        Nr. der letzten ausgeführten Befehlssequenz

        e_<Device>_<Reading>|<Internal>|Events
        Bezeichner und Wert der auslösenden Geräte mit Readings, Internals oder Events

        error
        Enthält Fehlermeldungen oder Rückgabewerte von Befehlen, siehe Besonderheit des Error-Reading

        last_cmd
        letzter Status

        matched_event_c<lfd. Nr. der Bedingung>_<lfd. Nr. des Events>
        Wert, der mit dem Regulären Ausdruck übereinstimmt

        mode
        der Modus, in dem sich DOIF befindet: <disabled|enable>

        state
        Status des DOIF nach Befehlsausführung, Voreinstellung: cmd_<Nr. des Befehlszweiges>⟨_<Nr. der Befehlssequenz>⟩

        timer_<lfd. Nr.>_c<Nr. des Befehlszweiges>
        verwendete Timer mit Angabe des nächsten Zeitpunktes

        wait_timer
        Angabe des aktuellen Wait-Timers

        <A-Z>_<readingname>
        Readings, die mit einem Großbuchstaben und nachfolgendem Unterstrich beginnen, sind für User reserviert und werden auch zukünftig nicht vom Modul selbst benutzt.

      Operanden in der Bedingung und den Befehlen
        Stati [<Device>⟨,<Default>⟩]

        Readings [<Device>:<Reading>⟨,<Default>⟩]

        Internals [<Device>:&<Internal>⟨,<Default>⟩]

        Filtern allgemein nach Ausdrücken mit Ausgabeformatierung: [<Device>:<Reading>|<Internal>:"<Filter>"⟨:<Output>⟩⟨,<Default>⟩]

        Filtern einer Zahl [<Device>:<Reading>:d⟨,<Default>⟩]

        Zeitspanne eines Readings seit der letzten Änderung [<Device>:<Reading>:sec⟨,<Default>⟩]

        $DEVICE
        für den Gerätenamen

        $EVENT
        für das zugehörige Ereignis

        $EVENTS
        für alle zugehörigen Ereignisse eines Triggers

        $SELF
        für den Gerätenamen des DOIF

        <Perl-Funktionen>
        vorhandene und selbsterstellte Perl-Funktionen

      Operanden in der Bedingung
        Events [<Device>:"<Regex-Events>"] oder ["<Regex-Devices>:<Regex-Events>"] oder ["<Regex-Devices>"⟨:"<Regex-Filter>"⟩⟨:<Output>⟩,<Default>]
        für <Regex> gilt: ^<ist eindeutig>$, ^<beginnt mit>, <endet mit>$, "" entspricht ".*", Regex-Filter ist mit [^\:]*: (.*) vorbelegt siehe auch Reguläre Ausdrücke und Events des Gerätes global

        Zeitpunkte [<time>]
        als [HH:MM], [HH:MM:SS] oder [Zahl] in Sekunden nach Mitternacht

        Zeitintervalle [<begin>-<end>]
        als [HH:MM], [HH:MM:SS] oder [Zahl] in Sekunden nach Mitternacht

        indirekte Zeitangaben [[<indirekte Zeit>]]
        als [HH:MM], [HH:MM:SS] oder [Zahl] in Sekunden nach Mitternacht, <indirekte Zeit> ist ein Stati, Reading oder Internal

        relative Zeitangaben [+<time>]
        als [HH:MM], [HH:MM:SS] oder [Zahl] in Sekunden

        ausgerichtete Zeitraster [:MM]
        in Minuten zwischen 00 und 59

        rel. Zeitraster ausgerichtet [+:MM]
        in Minuten zwischen 1 und 59

        rel. Zeitraster ausgerichtet alle X Stunden [+[h]:MM]
        MM in Minuten zwischen 1 und 59, h in Stunden zwischen 2 und 23

        Wochentagsteuerung [<time>|012345678], [<begin>-<end>]|012345678]
        Pipe, gefolgt von ein o. mehreren Ziffern. Bedeutung: 0 bis 6 für So. bis Sa., 7 für $we, Wochenende oder Feiertag, 8 für !$we, Werktags.

        berechnete Zeitangaben [(<Berechnung, gibt Zeit in Sekunden zurück, im Sinne von time>)]
        Berechnungen sind mit runden Klammern einzuschliessen. Perlfunktionen, die HH:MM zurückgeben sind mit geschweiften Klammern einzuschliessen.

        Trigger verhindern [?<devicename>], [?<devicename>:<readingname>], [?<devicename>:&<internalname>], [?<time specification>]
        Werden Stati, Readings, Internals und Zeitangaben in der Bedingung mit einem Fragezeichen eingeleitet, triggern sie nicht.

        $device, $event, $events
        Perl-Variablen mit der Bedeutung der Schlüsselworte $DEVICE, $EVENT, $EVENTS

        $cmd
        Perl-Variablen mit der Bedeutung [$SELF:cmd]

        <Perl-Zeitvariablen>
        Variablen für Zeit- und Datumsangaben, $sec, $min, $hour, $mday, $month, $year, $wday, $yday, $isdst, $week, $hms, $hm, $md, $ymd

      set-Befehl
        disable set <name> disable
        blockiert die Befehlsausführung

        initialize set <name> initialize
        initialisiert das DOIF und aktiviert die Befehlsausführung

        enable set <name> enable
        aktiviert die Befehlsausführung, im Gegensatz zur obigen Initialisierung bleibt der letzte Zustand des Moduls erhalten

        cmd_<nr> set <name> cmd_<nr>
        führt ohne Auswertung der Bedingung den Befehlszweig mit der Nummer <nr> aus

      Attribute
        Verzögerungen attr <name> wait <timer_1_1>,<timer_1_2>,...:<timer_2_1>,<timer_2_2>,...:...
        Zeit in Sekunden als direkte Angabe oder Berechnung, ein Doppelpunkt trennt die Timer der Bedingungsweige, ein Komma die Timer der Befehlssequenzen eines Bedingungszweiges.

        Verzögerung von Timern attr <name> timerWithWait
        erweitert wait auf Zeitangaben

        Befehlswiederholung zulassen attr <name> do always
        wiederholt den Ausführungsteil, wenn die selbe Bedingung wiederholt wahr wird.

        Zurücksetzen des Waittimers bei Wiederholung attr <name> do resetwait
        setzt den Waittimer zurück, wenn die selbe Bedingung wiederholt wahr wird.

        Befehle wiederholen attr <name> repeatcmd <timer Bedingungszweig 1>:<timer Bedingungszweig 2>:...
        Zeit in Sekunden als direkte Angabe oder Berechnung, nach der Befehle wiederholt werden.

        Pause für Wiederholung attr <name> cmdpause <Pause cmd_1>:<Pause cmd_2>:...
        Zeit in Sekunden als direkte Angabe oder Berechnung, blockiert die Befehlsausführung während der Pause.

        Begrenzung von Wiederholungen attr <name> repeatsame <maximale Anzahl von cmd_1>:<maximale Anzahl von cmd_2>:...
        Anzahl als direkte Angabe oder Berechnung, begrenzt die maximale Anzahl unmittelbar folgender Befehlsausführungen.

        Warten auf Wiederholung attr <name> waitsame <Wartezeit cmd_1>:<Wartezeit cmd_2>:...
        Wartezeit in Sekunden als direkte Angabe oder Berechnung, für ein unmittelbar wiederholtes Zutreffen einer Bedingung.

        Löschen des Waittimers attr <name> waitdel <timer_1_1>,<timer_1_2>,...:<timer_2_1>,<timer_2_2>,...:...
        Zeit in Sekunden als direkte Angabe oder Berechnung, ein laufender Timer wird gelöscht und die Befehle nicht ausgeführt, falls eine Bedingung vor Ablauf des Timers wiederholt wahr wird.

        Auswertung von Readings auf passende Events beschränken attr <name> checkReadingEvent <0|ungleich Null>
        ungleich Null aktiviert, 0 deaktiviert

        Selbsttriggerung attr <name> selftrigger <wait|all>
        lässt die Triggerung des Gerätes durch sich selbst zu. wait zugelassen für verzögerte Befehle, all zugelassen auch für nicht durch wait verzögerte Befehle; es ist nur eine Rekusion möglich

        Event beim Setzen eines Timers attr <name> timerevent <0|ungleich Null>
        erzeugt beim Setzen eines Timers ein Event. ungleich Null aktiviert, 0 deaktiviert

        Gerätestatus ersetzen attr <name> cmdState <Ersatz cmd_1_1>,...,<Ersatz cmd_1>|<Ersatz cmd_2_1>,...,<Ersatz cmd_2>|...
        ersetzt die Standartwerte des Gerätestatus als direkte Angabe oder Berechnung, die Ersatzstati von Befehlssequenzen werden durch Kommata, die von Befehlszweigen durch Pipe Zeichen getrennt.

        dynamischer Status attr <name> state <dynamischer Inhalt>
        Zum Erstellen von <dynamischer Inhalt> können die für Befehle verfügbaren Operanden verwendet werden.

        Ersatzwert für nicht existierende Readings oder Stati attr <name> notexist "<Ersatzwert>"

        Status Initialisierung nach Neustart attr <name> intialize <Status nach Neustart>

        Gerät vollständig deaktivieren attr <name> disable <0|1>
        1 deaktiviert das Modul vollständig, 0 aktiviert es.

        Alle Bedingungen prüfen attr <name> checkall <event|timer|all>
        event Alle Bedingungen werden geprüft, wenn ein Event-Trigger (Ereignisauslöser) auslöst.
        timer Alle Bedingungen werden geprüft, wenn ein Timer-Trigger (Zeitauslöser) auslöst.
        all   Alle Bedingungen werden geprüft.
        Die Befehle nach der ersten wahren Bedingung werden ausgeführt.

        Eindeutige Statuserkennung attr <name> addStateEvent <0|ungleich Null>
        fügt einem Gerätestatus-Event "state:" hinzu. ungleich Null aktiviert, 0 deaktiviert, siehe auch addStateEvent

        Readings, die mit set gesetzt werden können attr <name> readingList <Reading1> <Reading2> ...
        fügt zum set-Befehl direkt setzbare, durch Leerzeichen getrennte Readings hinzu. siehe auch readingList

        Readings mit Werteliste und optionaler Widgetangabe attr <name> setList <Reading1>:⟨<Modifier1>,⟩<Value1>,<Value2>,<...> <Reading2>:⟨<Modifier2>,⟩<Value1>,<Value2>,<...> ...
        fügt einem Reading einen optionalen Widgetmodifier und eine Werteliste (, getrennt) hinzu, siehe auch setList, widgetOverride, und webCmd

        readingFnAttributes

    DOIFtools

      DOIFtools stellt Funktionen zur Unterstützung von DOIF-Geräten bereit.

      • erstellen von readingsGroup Definitionen, zur Beschriftung von Frontendelementen.
      • erstellen eines Debug-Logfiles, in dem mehrere DOIF und zugehörige Geräte geloggt werden.
      • optionales DOIF-Listing bei jeder Status und Wait-Timer Aktualisierung im Debug-Logfile.
      • Navigation zwischen den DOIF-Listings im Logfile, wenn es über DOIFtools geöffnet wird.
      • erstellen von userReadings in DOIF-Geräten zur Anzeige des realen Datums bei Wochentag behafteten Timern.
      • löschen von benutzerdefinierten Readings in DOIF-Definitionen über eine Mehrfachauswahl.
      • löschen von Readings in anderen Geräten über eine Mehrfachauswahl, nicht state.
      • erfassen statistischer Daten über Events.
      • Begrenzung der Datenaufzeichnungsdauer.
      • erstellen eines Statistikreports.
      • Liste aller DOIF-Definitionen in probably associated with.
      • Zugriff auf DOIFtools aus jeder DOIF-Definition über die Liste in probably associated with.
      • Zugriff aus DOIFtools auf vorhandene DOIFtoolsLog-Logdateien.
      • zeigt den Event Monitor in der Detailansicht von DOIFtools.
      • ermöglicht den Zugriff auf den Event Monitor in der Detailansicht von DOIF.
      • prüfen der DOIF Definitionen mit Empfehlungen.
      • erstellen von Shortcuts
      • optionalen Menüeintrag erstellen
      • Liste der laufenden Wait-Timer anzeigen

      Bedienungsanleitung
        Eine Bedienungsanleitung für DOIFtools gibt es im FHEM-Wiki.

      Definition
        define <name> DOIFtools
        Es ist nur eine Definition pro FHEM Installation möglich. Die Definition wird mit den vorhanden DOIF-Namen ergänzt, daher erscheinen alle DOIF-Geräte in der Liste probably associated with. Zusätzlich wird in jedem DOIF-Gerät in dieser Liste auf das DOIFtool verwiesen.

        Definitionsvorschlag zum Import mit Raw definition:
        defmod DOIFtools DOIFtools
        attr DOIFtools DOIFtoolsEventMonitorInDOIF 1
        attr DOIFtools DOIFtoolsEMbeforeReadings 1
        attr DOIFtools DOIFtoolsExecuteDefinition 1
        attr DOIFtools DOIFtoolsExecuteSave 1
        attr DOIFtools DOIFtoolsMenuEntry 1
        attr DOIFtools DOIFtoolsMyShortcuts ##<br>My Shortcuts:,,list DOIFtools,fhem?cmd=list DOIFtools

      Set
        set <name> deleteReadingInTargetDOIF <readings to delete name>
        deleteReadingInTargetDOIF löscht die benutzerdefinierten Readings im Ziel-DOIF

        set <name> targetDOIF <target name>
        targetDOIF vor dem Löschen der Readings muss das Ziel-DOIF gesetzt werden.

        set <name> deleteReadingInTargetDevice <readings to delete name>
        deleteReadingInTargetDevice löscht sichtbare Readings, ausser state im Ziel-Gerät. Bitte den Gefahrenhinweis zum Befehl deletereading beachten!

        set <name> targetDevice <target name>
        targetDevice vor dem Löschen der Readings muss das Ziel-Gerät gesetzt werden.

        set <name> sourceAttribute <readingList>
        sourceAttribute vor dem Erstellen einer ReadingsGroup muss das Attribut gesetzt werden aus dem die Readings gelesen werden, um die ReadingsGroup zu erstellen und zu beschriften. Default, readingsList

        set <name> statisticsDeviceFilterRegex <regular expression as device filter>
        statisticsDeviceFilterRegex setzt einen Filter auf Gerätenamen, nur die gefilterten Geräte werden im Bericht ausgewertet. Default, ".*".

        set <name> statisticsTYPEs <List of TYPE used for statistics generation>
        statisticsTYPEs setzt eine Liste von TYPE für die Statistikdaten erfasst werden, bestehende Statistikdaten werden gelöscht. Default, "".

        set <name> statisticsShowRate_ge <integer value for event rate>
        statisticsShowRate_ge setzt eine Event-Rate, ab der ein Gerät in die Auswertung einbezogen wird. Default, 0.

        set <name> specialLog <0|1>
        specialLog 1 DOIF-Listing bei Status und Wait-Timer Aktualisierung im Debug-Logfile. Default, 0.

        set <name> doStatistics <enabled|disabled|deleted>
        doStatistics
         deleted setzt die Statistik zurück und löscht alle stat_ Readings.
         disabled pausiert die Statistikdatenerfassung.
         enabled startet die Statistikdatenerfassung.

        set <name> recording_target_duration <hours>
        recording_target_duration gibt an wie lange Daten erfasst werden sollen. Default, 0 die Dauer ist nicht begrenzt.

      Get
        get <name> DOIF_to_Log <DOIF names for logging>
        DOIF_to_Log erstellt eine FileLog-Definition, die für alle angegebenen DOIF-Definitionen loggt. Der Reguläre Ausdruck wird aus den, direkt in den DOIF-Greräte angegebenen und den wahrscheinlich verbundenen Geräten, ermittelt.

        get <name> checkDOIF
        checkDOIF führt eine einfache Syntaxprüfung durch und empfiehlt Änderungen.

        get <name> readingsGroup_for <DOIF names to create readings groups>
        readingsGroup_for erstellt readingsGroup-Definitionen für die angegebenen DOIF-namen. sourceAttribute verweist auf das Attribut, dessen Readingsliste als Basis verwendet wird. Die Eingabeelemente im Frontend werden mit den Readingsnamen beschriftet.

        get <name> userReading_nextTimer_for <DOIF names where to create real date timer readings>
        userReading_nextTimer_for erstellt userReadings-Attribute für Timer-Readings mit realem Datum für Timer, die mit Wochentagangaben angegeben sind, davon ausgenommen sind indirekte Wochentagsangaben.

        get <name> statisticsReport
        statisticsReport erstellt einen Bericht aus der laufenden Datenerfassung.

        Die Statistik kann genutzt werden, um Geräte mit hohen Ereignisaufkommen zu erkennen. Bei einer hohen Rate, sollte im Interesse der Systemperformance geprüft werden, ob die Events eingeschränkt werden können. Werden keine Events eines Gerätes weiterverarbeitet, kann das Attribut event-on-change-reading auf none oder eine andere Zeichenfolge, die im Gerät nicht als Readingname vorkommt, gesetzt werden.

        get <name> runningTimerInDOIF
        runningTimerInDOIF zeigt eine Liste der laufenden Timer. Damit kann entschieden werden, ob bei einem Neustart wichtige Timer gelöscht werden und der Neustart ggf. verschoben werden sollte.

      Attribute
        attr <name> DOIFtoolsExecuteDefinition <0|1>
        DOIFtoolsExecuteDefinition 1 führt die erzeugten Definitionen aus. Default 0, zeigt die erzeugten Definitionen an, sie können mit Raw definition importiert werden.

        attr <name> DOIFtoolsExecuteSave <0|1>
        DOIFtoolsExecuteSave 1, die Definitionen werden automatisch gespeichert. Default 0, der Benutzer kann die Definitionen speichern.

        attr <name> DOIFtoolsTargetGroup <group names for target>
        DOIFtoolsTargetGroup gibt die Gruppen für die zu erstellenden Definitionen an. Default, die Gruppe der Ursprungs Definition.

        attr <name> DOIFtoolsTargetRoom <room names for target>
        DOIFtoolsTargetRoom gibt die Räume für die zu erstellenden Definitionen an. Default, der Raum der Ursprungs Definition.

        attr <name> DOIFtoolsReadingsPrefix <user defined prefix>
        DOIFtoolsReadingsPrefix legt den Präfix der benutzerdefinierten Readingsnamen für die Zieldefinition fest. Default, DOIFtools bestimmt den Präfix.

        attr <name> DOIFtoolsEventMonitorInDOIF <1|0>
        DOIFtoolsEventMonitorInDOIF 1, die Anzeige des Event-Monitors wird in DOIF ermöglicht. Default 0, kein Zugriff auf den Event-Monitor im DOIF.

        attr <name> DOIFtoolsEMbeforeReadings <1|0>
        DOIFtoolsEMbeforeReading 1, die Anzeige des Event-Monitors wird in DOIF direkt über den Readings angezeigt. Default 0, anzeige des Event-Monitors über den Internals.

        attr <name> DOIFtoolsHideGetSet <0|1>
        DOIFtoolsHideModulGetSet 1, verstecken der Set- und Get-Shortcuts. Default 0.

        attr <name> DOIFtoolsNoLookUp <0|1>
        DOIFtoolsNoLookUp 1, es werden keine Lookup-Fenster in DOIFtools geöffnet. Default 0.

        attr <name> DOIFtoolsNoLookUpInDOIF <0|1>
        DOIFtoolsNoLookUpInDOIF 1, es werden keine Lookup-Fenster in DOIF geöffnet. Default 0.

        attr <name> DOIFtoolsHideModulShortcuts <0|1>
        DOIFtoolsHideModulShortcuts 1, verstecken der DOIFtools Shortcuts. Default 0.

        attr <name> DOIFtoolsHideStatReadings <0|1>
        DOIFtoolsHideStatReadings 1, verstecken der stat_ Readings. Das Ändern des Attributs löscht eine bestehende Event-Aufzeichnung. Default 0.

        attr <name> DOIFtoolsEventOnDeleted <0|1>
        DOIFtoolsEventOnDeleted 1, es werden Events für alle stat_ erzeugt, bevor sie gelöscht werden. Damit könnten die erfassten Daten geloggt werden. Default 0.

        attr <name> DOIFtoolsMyShortcuts <shortcut name>,<command>, ...
        DOIFtoolsMyShortcuts <Bezeichnung>,<Befehl>,... anzeigen eigener Shortcuts, siehe globales Attribut menuEntries.
        Zusätzlich gilt, wenn ein Eintrag mit ## beginnt und mit ,, endet, wird er als HTML interpretiert.
        Beispiel:
        attr DOIFtools DOIFtoolsMyShortcuts ##<br>My Shortcuts:,,list DOIFtools,fhem?cmd=list DOIFtools

        attr <name> DOIFtoolsMenuEntry <0|1>
        DOIFtoolsMenuEntry 1, erzeugt einen Menüeintrag im FHEM-Menü. Default 0.

        disabledForIntervals pausiert die Statistikdatenerfassung.

      Readings
        DOIFtools erzeugt bei der Aktualisierung von Readings keine Events, daher muss die Seite im Browser aktualisiert werden, um aktuelle Werte zu sehen.

      • Action zeigt den Status der Event-Aufzeichnung an.
      • DOIF_version zeigt die Version des DOIF an.
      • FHEM_revision zeigt die Revision von FHEM an.
      • doStatistics zeigt den Status der Statistikerzeugung an
      • logfile gibt den Pfad und den Dateinamen mit Ersetzungszeichen an.
      • recording_target_duration gibt an wie lange Daten erfasst werden sollen.
      • stat_<devicename> zeigt die Anzahl der gezählten Ereignisse, die das jeweilige Gerät erzeugt hat.
      • statisticHours zeigt die kumulierte Zeit für den Status enabled an, während der, Statistikdaten erfasst werden.
      • statisticShowRate_ge zeigt die Event-Rate, ab der Geräte in die Auswertung einbezogen werden.
      • statisticsDeviceFilterRegex zeigt den aktuellen Gerätefilterausdruck an.
      • statisticsTYPEs zeigt eine Liste von TYPE an, für deren Geräte die Statistik erzeugt wird.
      • targetDOIF zeigt das Ziel-DOIF, bei dem Readings gelöscht werden sollen.
      • targetDevice zeigt das Ziel-Gerät, bei dem Readings gelöscht werden sollen.

      Links
        DOIFtools im FHEM-Forum
        DOIFtools im FHEM-Wiki

    DUOFERN

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

    DUOFERNSTICK

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

    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>

      Set
        set <name> lock

        Sperrt das Dashboard so das keine Positionsänderungen vorgenommen werden können
        set <name> unlock

        Entsperrt das Dashboard

      Get
        N/A

      Attributes
      • dashboard_tabcount
        Gibt die Anzahl der angezeigten Tabs an. (Dieser Parameter is veraletet, die Anzahl der Tabs wird aus der Dashboard-Konfiguration gelesen) Standard: 1

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

      • dashboard_tabXname
        Titel des X. Tab.

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

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

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

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

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

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

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

      • dashboard_tab1groups
        Durch Komma getrennte Liste mit den Namen der Gruppen, die im Tab 1 angezeigt werden. Falsche Gruppennamen werden hervorgehoben.
        Jede Gruppe kann zusätzlich ein Icon anzeigen, dazu muss der Gruppen name um ":<icon>@<farbe>"ergänzt werden
        Beispiel: Light:Icon_Fisch@blue,AVIcon_Fisch@red,Single Lights:Icon_Fisch@yellow
        Der Gruppenname kann ebenfalls einen regulären Ausdruck beinhalten, um alle Gruppen anzuzeigen, die darauf passen.
        Beispiel: .*Licht.* zeigt alle Gruppen an, die das Wort "Licht" im Namen haben.

      • dashboard_tabXdevices
        devspec Liste von Geräten, die im Tab angezeigt werden sollen. Das format ist:
        GROUPNAME:devspec1,devspec2,...,devspecN:ICONNAME
        Das Icon ist optional. Auch der Gruppenname muss nicht vorhanden sein. Im Falle dass dieser fehlt, werden die gefunden Geräte nicht gruppiert sondern als einzelne Widgets im Tab angezeigt. Für weitere Details bezüglich devspec: Dev-Spec

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

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

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

      • dashboard_tabXbackgroundimage
        Zeigt ein Hintergrundbild für den X-ten Tab an. Das Bild wird nicht gestreckt, es sollte also auf die Größe des Tabs passen oder diese überschreiten. Standard:

      • dashboard_flexible
        Hat dieser Parameter einen Wert > 0, dann können die Widgets in den Tabs frei positioniert werden und hängen nicht mehr an den Spalten fest. Der Wert gibt ebenfalls das Raster an, in dem die Positionierung "zu schnappt". Standard: 0

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

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

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

      • dashboard_backgroundimage
        Zeig in Hintergrundbild im Dashboard an. Das Bild wird nicht gestreckt, es sollte daher auf die Größe des Dashboards passen oder diese überschreiten. Default:

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

    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.

        DbLog unterscheidet den synchronen (Default) und asynchronen Logmodus. Der Logmodus ist über das Attribut asyncMode einstellbar.

        Die Perl-Module DBI und 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/SQLite 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. (siehe auch Attribut DbLogType) 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 Readings 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> commitCache

          Im asynchronen Modus (Attribut asyncMode=1), werden die im Speicher gecachten Daten in die Datenbank geschrieben und danach der Cache geleert. Der interne Timer des asynchronen Modus wird dabei neu gesetzt. Der Befehl kann nützlich sein um manuell oder z.B. über ein AT den Cacheinhalt zu einem definierten Zeitpunkt in die Datenbank zu schreiben.

        set <name> reopen [n]

          Schließt die Datenbank und öffnet sie danach sofort wieder wenn keine Zeit [n] in Sekunden angegeben wurde. Dabei wird die Journaldatei geleert und neu angelegt.
          Verbessert den Datendurchsatz und vermeidet Speicherplatzprobleme.
          Wurde eine optionale Verzögerungszeit [n] in Sekunden angegeben, wird die Verbindung zur Datenbank geschlossen und erst nach Ablauf von [n] Sekunden wieder neu verbunden. Im synchronen Modus werden die Events in dieser Zeit nicht gespeichert. Im asynchronen Modus werden die Events im Cache gespeichert und nach dem Reconnect in die Datenbank geschrieben.

        set <name> rereadcfg

          Schließt die Datenbank und öffnet sie danach sofort wieder. Dabei wird die Journaldatei geleert und neu angelegt.
          Verbessert den Datendurchsatz und vermeidet Speicherplatzprobleme.
          Zwischen dem Schließen der Verbindung und dem Neuverbinden werden die Konfigurationsdaten neu gelesen

        set <name> listCache

          Wenn DbLog im asynchronen Modus betrieben wird (Attribut asyncMode=1), können mit diesem Befehl die im Speicher gecachten Events angezeigt werden.

        set <name> 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> purgeCache

          Im asynchronen Modus (Attribut asyncMode=1), werden die im Speicher gecachten Daten gelöscht. Es werden keine Daten aus dem Cache in die Datenbank geschrieben.

        set <name> reduceLog <n> [average[=day]] [exclude=deviceRegExp1:ReadingRegExp1,deviceRegExp2:ReadingRegExp2,...]

          Reduziert historische Datensaetze, die aelter sind als <n> Tage auf einen Eintrag pro Stunde (den ersten) je device & reading.
          ACHTUNG: Es wird dringend empfohlen zu überprüfen ob der standard INDEX 'Search_Idx' in der Tabelle 'history' existiert!
          Die Abarbeitung dieses Befehls dauert unter umständen (ohne INDEX) extrem lange, FHEM wird nach absetzen des Befehls bis zur Fertigstellung komplett blockiert!
          Durch die optionale Angabe von 'average' wird nicht nur die Datenbank bereinigt, sondern alle numerischen Werte einer Stunde werden auf einen einzigen Mittelwert reduziert.
          Durch die optionale Angabe von 'average=day' wird nicht nur die Datenbank bereinigt, sondern alle numerischen Werte eines Tages auf einen einzigen Mittelwert reduziert. (impliziert 'average')
          Optional kann als letzer Parameter "EXCLUDE=deviceRegExp1:ReadingRegExp1,deviceRegExp2:ReadingRegExp2,...." angegeben werden um device/reading Kombinationen von reduceLog auszuschließen.
          Optional kann als letzer Parameter "INCLUDE=Database-deviceRegExp:Database-ReadingRegExp" angegeben werden um die auf die Datenbank ausgeführte SELECT abfrage einzugrenzen, was die RAM-Belastung verringer und die Performance erhöht. (Wildcards sind % und _)

        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 Auspägungen wie -5.7°C.
            • delta-h / delta-d
              Ermittelt die relative Veränderung eines Zahlenwertes pro Stunde oder pro Tag. Wird benutzt z.B. für Spalten die einen hochlaufenden Zähler enthalten wie im Falle für ein KS300 Regenzähler oder dem 1-wire Modul OWCOUNT.
            • delta-ts
              Ermittelt die vergangene Zeit zwischen dem letzten und dem aktuellen Logeintrag in Sekunden und ersetzt damit den originalen Wert.
          • <regexp>
            Diese Zeichenkette wird als Perl Befehl ausgewertet. Die regexp wird vor dem angegebenen <fn> Parameter ausgeföhrt.
            Bitte zur Beachtung: Diese Zeichenkette darf keine Leerzeichen enthalten da diese sonst als <column_spec> Trennung interpretiert werden und alles nach dem Leerzeichen als neue <column_spec> gesehen wird.
            Schlüsselwörter
          • $val ist der aktuelle Wert die die Datenbank für ein Device/Reading ausgibt.
          • $ts ist der aktuelle Timestamp des Logeintrages.
          • Wird als $val das Schlüsselwort "hide" zurückgegeben, so wird dieser Logeintrag nicht ausgegeben, trotzdem aber för die Zeitraumberechnung verwendet.
          • Wird als $val das Schlüsselwort "ignore" zurückgegeben, so wird dieser Logeintrag nicht för eine Folgeberechnung verwendet.


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

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


      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
        asyncMode
          attr <device> asyncMode [1|0]
          Dieses Attribut stellt den Arbeitsmodus von DbLog ein. Im asynchronen Modus (asyncMode=1), werden die zu speichernden Events zunächst in Speicher gecacht. Nach Ablauf der Synchronisationszeit (Attribut syncInterval) oder bei Erreichen der maximalen Anzahl der Datensätze im Cache (Attribut cacheLimit) werden die gecachten Events im Block in die Datenbank geschrieben. Ist die Datenbank nicht verfügbar, werden die Events weiterhin im Speicher gehalten und nach Ablauf des Syncintervalls in die Datenbank geschrieben falls sie dann verfügbar ist.
          Im asynchronen Mode werden die Daten nicht blockierend mit einem separaten Hintergrundprozess in die Datenbank geschrieben. Det Timeout-Wert für diesen Hintergrundprozess kann mit dem Attribut "timeout" (Default 120s) eingestellt werden. Im synchronen Modus (Normalmodus) werden die Events nicht gecacht und sofort in die Datenbank geschrieben. Ist die Datenbank nicht verfügbar gehen sie verloren.

        cacheEvents
          attr <device> cacheEvents [2|1|0]
          • cacheEvents=1: es werden Events für das Reading CacheUsage erzeugt wenn ein Event zum Cache hinzugefügt wurde.
          • cacheEvents=2: es werden Events für das Reading CacheUsage erzeugt wenn im asynchronen Mode der Schreibzyklus in die Datenbank beginnt. CacheUsage enthält zu diesem Zeitpunkt die Anzahl der in die Datenbank zu schreibenden Datensätze.


        cacheLimit
          attr <device> cacheLimit <n>
          Im asynchronen Logmodus wird der Cache in die Datenbank weggeschrieben und geleert wenn die Anzahl <n> Datensätze im Cache erreicht ist (Default: 500). Der Timer des asynchronen Logmodus wird dabei neu auf den Wert des Attributs "syncInterval" gesetzt.

        colEvent
          attr <device> colEvent <n>
          Die Feldlänge für das DB-Feld EVENT wird userspezifisch angepasst. Mit dem Attribut kann der Default-Wert im Modul verändert werden wenn die Feldlänge in der Datenbank manuell geändert wurde. Mit colEvent=0 wird das Datenbankfeld EVENT nicht gefüllt.
          Hinweis:
          Mit gesetztem Attribut gelten alle Feldlängenbegrenzungen auch für SQLite DB wie im Internal COLUMNS angezeigt !

        colReading
          attr <device> colReading <n>
          Die Feldlänge für das DB-Feld READING wird userspezifisch angepasst. Mit dem Attribut kann der Default-Wert im Modul verändert werden wenn die Feldlänge in der Datenbank manuell geändert wurde. Mit colReading=0 wird das Datenbankfeld READING nicht gefüllt.
          Hinweis:
          Mit gesetztem Attribut gelten alle Feldlängenbegrenzungen auch für SQLite DB wie im Internal COLUMNS angezeigt !

        colValue
          attr <device> colValue <n>
          Die Feldlänge für das DB-Feld VALUE wird userspezifisch angepasst. Mit dem Attribut kann der Default-Wert im Modul verändert werden wenn die Feldlänge in der Datenbank manuell geändert wurde. Mit colValue=0 wird das Datenbankfeld VALUE nicht gefüllt.
          Hinweis:
          Mit gesetztem Attribut gelten alle Feldlängenbegrenzungen auch für SQLite DB wie im Internal COLUMNS angezeigt !

        DbLogType
          attr <device> DbLogType [Current|History|Current/History]
          Dieses Attribut legt fest, welche Tabelle oder Tabellen in der Datenbank genutzt werden sollen. Ist dieses Attribut nicht gesetzt, wird per default die Tabelle history verwendet.
          Hinweis:
          Die Current-Tabelle muß genutzt werden um eine Device:Reading-DropDownliste zur Erstellung eines SVG-Plots zu erhalten.

        DbLogSelectionMode
          attr <device> DbLogSelectionMode [Exclude|Include|Exclude/Include]
          Dieses, fuer DbLog-Devices spezifische Attribut beeinflußt, wie die Device-spezifischen Attributes DbLogExclude und DbLogInclude (s.u.) ausgewertet werden.
          Fehlt dieses Attribut, wird dafuer "Exclude" als Default angenommen.
          • Exclude: DbLog verhaelt sich wie bisher auch, alles was ueber die RegExp im DEF angegeben ist, wird geloggt, bis auf das, was ueber die RegExp in DbLogExclude ausgeschlossen wird
            Das Attribut DbLogInclude wird in diesem Fall nicht beruecksichtigt
          • Include: Es wird nur das geloggt was ueber die RegExp in DbLogInclude eingeschlossen wird.
            Das Attribut DbLogExclude wird in diesem Fall ebenso wenig beruecksichtigt wie die Regex im DEF.
          • Exclude/Include: Funktioniert im Wesentlichen wie "Exclude", nur das sowohl DbLogExclude als auch DbLogInclude geprueft werden. Readings die durch DbLogExclude zwar ausgeschlossen wurden, mit DbLogInclude aber wiederum eingeschlossen werden, werden somit dennoch geloggt.

        DbLogInclude
          attr <device> DbLogInclude regex:MinInterval,[regex:MinInterval] ...
          Wenn DbLog genutzt wird, wird in allen Devices das Attribut DbLogInclude propagiert. DbLogInclude funktioniert im Endeffekt genau wie DbLogExclude, ausser dass eben readings mit diesen RegExp in das Logging eingeschlossen werden koennen, statt ausgeschlossen. Siehe dazu auch das DbLog-Device-Spezifische Attribut DbLogSelectionMode, das beeinflußt wie DbLogExclude und DbLogInclude ausgewertet werden.
          Beispiel
          attr MyDevice1 DbLogInclude .*
          attr MyDevice2 DbLogInclude state,(floorplantext|MyUserReading):300,battery:3600

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

        excludeDevs
          attr <device> excludeDevs <device1>,<device2>,<device..>
          Die Devices "device1", "device2" bis "device.." werden vom Logging in der Datenbank ausgeschlossen. Diese Attribut wirkt nur wenn im Define des DbLog-Devices ".*:.." (d.h. alle Devices werden geloggt) angegeben wurde. Dadurch können Devices explizit ausgeschlossen werden anstatt alle zu loggenden Devices im Define einzuschließen (z.B. durch den String (device1|device2|device..):.* usw.). Die auszuschließenden Devices werden als Regex ausgewertet.
          Beispiel
          attr <device> excludeDevs global,Log.*,Cam.*
          # Es werden die Devices global bzw. Devices beginnend mit "Log" oder "Cam" vom Datenbanklogging ausgeschlossen.

        shutdownWait
          attr <device> shutdownWait
          FHEM wartet während des shutdowns fuer n Sekunden, um die Datenbank korrekt zu beenden

        noNotifyDev
          attr <device> noNotifyDev [1|0]
          Erzwingt dass NOTIFYDEV nicht gesetzt und somit nicht verwendet wird .

        showproctime
          attr <device> showproctime [1|0]
          Wenn gesetzt, zeigt das Reading "sql_processing_time" die benötigte Abarbeitungszeit (in Sekunden) für die SQL-Ausführung der durchgeführten Funktion. Dabei wird nicht ein einzelnes SQl-Statement, sondern die Summe aller notwendigen SQL-Abfragen innerhalb der jeweiligen Funktion betrachtet. Das Reading "background_processing_time" zeigt die im Kindprozess BlockingCall verbrauchte Zeit.

        showNotifyTime
          attr <device> showNotifyTime [1|0]
          Wenn gesetzt, zeigt das Reading "notify_processing_time" die benötigte Abarbeitungszeit (in Sekunden) für die Abarbeitung der DbLog Notify-Funktion. Das Attribut ist für Performance Analysen geeignet und hilft auch die Unterschiede im Zeitbedarf bei der Umschaltung des synchronen in den asynchronen Modus festzustellen.

        syncEvents
          attr <device> syncEvents [1|0]
          es werden Events für Reading NextSync erzeugt.

        syncInterval
          attr <device> syncInterval <n>
          Wenn DbLog im asynchronen Modus betrieben wird (Attribut asyncMode=1), wird mit diesem Attribut das Intervall in Sekunden zur Speicherung der im Speicher gecachten Events in die Datenbank eingestellt. Der Defaultwert ist 30 Sekunden.

        suppressUndef
          attr <device> ignoreUndef
          Unterdrueckt alle undef Werte die durch eine Get-Anfrage zb. Plot aus der Datenbank selektiert werden
          Beispiel
          #DbLog eMeter:power:::$val=($val>1500)?undef:$val

        timeout
          attr <device> timeout
          Setzt den Timeout-Wert für den Schreibzyklus in die Datenbank im asynchronen Modus (default 120s).

        verbose4Devs
          attr <device> verbose4Devs <device1>,<device2>,<device..>
          Mit verbose Level 4 werden nur Ausgaben bezüglich der in diesem Attribut aufgeführten Devices im Logfile protokolliert. Ohne dieses Attribut werden mit verbose 4 Ausgaben aller relevanten Devices im Logfile protokolliert. Die angegebenen Devices werden als Regex ausgewertet.
          Beispiel
          attr <device> verbose4Devs sys.*,.*5000.*,Cam.*,global
          # Es werden Devices beginnend mit "sys", "Cam" bzw. Devices die "5000" enthalten und das Device "global" protokolliert falls verbose=4 eingestellt ist.

    DbRep


      Zweck des Moduls ist es, den Inhalt von DbLog-Datenbanken nach bestimmten Kriterien zu durchsuchen, zu managen, das Ergebnis hinsichtlich verschiedener Aggregationen auszuwerten und als Readings darzustellen. Die Abgrenzung der zu berücksichtigenden Datenbankinhalte erfolgt durch die Angabe von Device, Reading und die Zeitgrenzen für Auswertungsbeginn bzw. Auswertungsende.

      Alle Datenbankoperationen werden nichtblockierend ausgeführt. Die Ausführungszeit der (SQL)-Hintergrundoperationen kann optional ebenfalls als Reading bereitgestellt werden (siehe Attribute).
      Alle vorhandenen Readings werden vor einer neuen Operation gelöscht. Durch das Attribut "readingPreventFromDel" kann eine Komma separierte Liste von Readings angegeben werden die nicht gelöscht werden sollen.

      Zur Zeit werden folgende Operationen unterstützt:

        • Selektion aller Datensätze innerhalb einstellbarer Zeitgrenzen.
        • Darstellung der Datensätze einer Device/Reading-Kombination innerhalb einstellbarer Zeitgrenzen.
        • Selektion der Datensätze unter Verwendung von dynamisch berechneter Zeitgrenzen zum Ausführungszeitpunkt.
        • Berechnung der Anzahl von Datensätzen einer Device/Reading-Kombination unter Berücksichtigung von Zeitgrenzen und verschiedenen Aggregationen.
        • Die Berechnung von Summen- , Differenz- , Maximum- , Minimum- und Durchschnittswerten von numerischen Readings in Zeitgrenzen und verschiedenen Aggregationen.
        • Löschung von Datensätzen. Die Eingrenzung der Löschung kann durch Device und/oder Reading sowie fixer oder dynamisch berechneter Zeitgrenzen zum Ausführungszeitpunkt erfolgen.
        • Export von Datensätzen in ein File im CSV-Format
        • Import von Datensätzen aus File im CSV-Format
        • Umbenennen von Device-Namen in Datenbanksätzen
        • automatisches Umbenennen von Device-Namen in Datenbanksätzen und DbRep-Definitionen nach FHEM "rename" Befehl (siehe DbRep-Agent)

      Zur Aktivierung der Funktion "Autorename" wird dem definierten DbRep-Device mit dem Attribut "role" die Rolle "Agent" zugewiesen. Die Standardrolle nach Definition ist "Client". Mehr ist dazu im Abschnitt DbRep-Agent beschrieben.

      FHEM-Forum:
      Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog).

      Voraussetzungen

      Das Modul setzt den Einsatz einer oder mehrerer DBLog-Instanzen voraus. Es werden die Zugangsdaten dieser Datenbankdefinition genutzt (bisher getestet mit MySQL und SQLite).
      Es werden nur Inhalte der Tabelle "history" berücksichtigt.

      Überblick welche anderen Perl-Module DbRep verwendet:

      POSIX
      Time::HiRes
      Time::Local
      Scalar::Util
      DBI
      Blocking (FHEM-Modul)

      Aus Performancegründen sollten zusätzlich folgender Index erstellt werden:
      ALTER TABLE 'fhem'.'history' ADD INDEX `Reading_Time_Idx` (`READING`, `TIMESTAMP`) USING BTREE;

    Definition
      define <name> DbRep <Name der DbLog-instanz>

      (<Name der DbLog-instanz> - es wird der Name der auszuwertenden DBLog-Datenbankdefinition angegeben nicht der Datenbankname selbst)


    Set
      Zur Zeit gibt es folgende Set-Kommandos. Über sie werden die Auswertungen angestoßen und definieren selbst die Auswertungsvariante. Nach welchen Kriterien die Datenbankinhalte durchsucht werden und die Aggregation erfolgt, wird durch Attribute gesteuert.

        • averageValue - berechnet den Durchschnittswert der Readingwerte (DB-Spalte "VALUE") in den gegebenen Zeitgrenzen ( siehe Attribute). Es muss das auszuwertende Reading über das Attribut "reading" angegeben sein.

        • countEntries - liefert die Anzahl der DB-Einträge in den gegebenen Zeitgrenzen (siehe Attribute). Sind die Timestamps nicht gesetzt werden alle Einträge gezählt. Beschränkungen durch die Attribute Device bzw. Reading gehen in die Selektion mit ein.

        • deviceRename - benennt den Namen eines Device innerhalb der angeschlossenen Datenbank (Internal DATABASE) um. Der Gerätename wird immer in der gesamten Datenbank umgesetzt. Eventuell gesetzte Zeitgrenzen oder Beschränkungen durch die Attribute Device bzw. Reading werden nicht berücksichtigt.

            Eingabeformat: set <name> deviceRename <alter Devicename>,<neuer Devicename>
            # Die Anzahl der umbenannten Device-Datensätze wird im Reading "device_renamed" ausgegeben.
            # Wird der umzubenennende Gerätename in der Datenbank nicht gefunden, wird eine WARNUNG im Reading "device_not_renamed" ausgegeben.
            # Entsprechende Einträge erfolgen auch im Logfile mit verbose=3


        • readingRename - benennt den Namen eines Readings innerhalb der angeschlossenen Datenbank (siehe Internal DATABASE) um. Der Readingname wird immer in der gesamten Datenbank umgesetzt. Eventuell gesetzte Zeitgrenzen oder Beschränkungen durch die Attribute Device bzw. Reading werden nicht berücksichtigt.

            Eingabeformat: set <name> readingRename <alter Readingname>,<neuer Readingname>
            # Die Anzahl der umbenannten Device-Datensätze wird im Reading "reading_renamed" ausgegeben.
            # Wird der umzubenennende Readingname in der Datenbank nicht gefunden, wird eine WARNUNG im Reading "reading_not_renamed" ausgegeben.
            # Entsprechende Einträge erfolgen auch im Logfile mit verbose=3.


        • exportToFile - exportiert DB-Einträge im CSV-Format in den gegebenen Zeitgrenzen. Einschränkungen durch die Attribute Device bzw. Reading gehen in die Selektion mit ein. Der Filename wird durch das Attribut "expimpfile" bestimmt.

        • fetchrows - liefert alle DB-Einträge in den gegebenen Zeitgrenzen ( siehe Attribute). Eine evtl. gesetzte Aggregation wird nicht berücksichtigt.

        • insert - Manuelles Einfügen eines Datensatzes in die Tabelle "history". Obligatorisch sind Eingabewerte für Datum, Zeit und Value. Die Werte für die DB-Felder Type bzw. Event werden mit "manual" gefüllt, sowie die Werte für Device, Reading aus den gesetzten Attributen genommen.

            Eingabeformat: Datum,Zeit,Value,[Unit]
            # Unit ist optional, Attribute "reading" und "device" müssen gesetzt sein
            # Soll "Value=0" eingefügt werden, ist "Value = 0.0" zu verwenden.

            Beispiel: 2016-08-01,23:00:09,TestValue,TestUnit
            # die Feldlänge ist maximal 64 Zeichen lang , es sind KEINE Leerzeichen im Feldwert erlaubt !

            Hinweis:
            Bei der Eingabe ist darauf zu achten dass im beabsichtigten Aggregationszeitraum (Tag, Woche, Monat, etc.) MINDESTENS zwei Datensätze für die Funktion diffValue zur Verfügung stehen. Ansonsten kann keine Differenz berechnet werden und diffValue gibt in diesem Fall "0" in der betroffenen Periode aus !

        • importFromFile - importiert Datensätze im CSV-Format aus einem File in die Datenbank. Der Filename wird durch das Attribut "expimpfile" bestimmt.

            Datensatzformat: "TIMESTAMP","DEVICE","TYPE","EVENT","READING","VALUE","UNIT"

            # Die Felder "TIMESTAMP","DEVICE","TYPE","EVENT","READING" und "VALUE" müssen gesetzt sein. Das Feld "UNIT" ist optional. Der Fileinhalt wird als Transaktion importiert, d.h. es wird der Inhalt des gesamten Files oder, im Fehlerfall, kein Datensatz des Files importiert. Wird eine umfangreiche Datei mit vielen Datensätzen importiert sollte KEIN verbose=5 gesetzt werden. Es würden in diesem Fall sehr viele Sätze in das Logfile geschrieben werden was FHEM blockieren oder überlasten könnte.

            Beispiel: "2016-09-25 08:53:56","STP_5000","SMAUTILS","etotal: 11859.573","etotal","11859.573",""


        • sumValue - berechnet die Summenwerte eines Readingwertes (DB-Spalte "VALUE") in den Zeitgrenzen (Attribute) "timestamp_begin", "timestamp_end" bzw. "timeDiffToNow / timeOlderThan". Es muss das auszuwertende Reading im Attribut "reading" angegeben sein. Diese Funktion ist sinnvoll wenn fortlaufend Wertedifferenzen eines Readings in die Datenbank geschrieben werden.

        • maxValue - berechnet den Maximalwert eines Readingwertes (DB-Spalte "VALUE") in den Zeitgrenzen (Attribute) "timestamp_begin", "timestamp_end" bzw. "timeDiffToNow / timeOlderThan". Es muss das auszuwertende Reading über das Attribut "reading" angegeben sein. Die Auswertung enthält den Zeitstempel des ermittelten Maximumwertes innerhalb der Aggregation bzw. Zeitgrenzen. Im Reading wird der Zeitstempel des letzten Auftretens vom Maximalwert ausgegeben falls dieser Wert im Intervall mehrfach erreicht wird.

        • minValue - berechnet den Minimalwert eines Readingwertes (DB-Spalte "VALUE") in den Zeitgrenzen (Attribute) "timestamp_begin", "timestamp_end" bzw. "timeDiffToNow / timeOlderThan". Es muss das auszuwertende Reading über das Attribut "reading" angegeben sein. Die Auswertung enthält den Zeitstempel des ermittelten Minimumwertes innerhalb der Aggregation bzw. Zeitgrenzen. Im Reading wird der Zeitstempel des ersten Auftretens vom Minimalwert ausgegeben falls dieser Wert im Intervall mehrfach erreicht wird.

        • diffValue - berechnet den Differenzwert eines Readingwertes (DB-Spalte "Value") in den Zeitgrenzen (Attribute) "timestamp_begin", "timestamp_end" bzw "timeDiffToNow / timeOlderThan". Es muss das auszuwertende Reading im Attribut "reading" angegeben sein. Diese Funktion ist z.B. zur Auswertung von Eventloggings sinnvoll, deren Werte sich fortlaufend erhöhen und keine Wertdifferenzen wegschreiben.
          Es wird immer die Differenz aus dem Value-Wert des ersten verfügbaren Datensatzes und dem Value-Wert des letzten verfügbaren Datensatzes innerhalb der angegebenen Zeitgrenzen/Aggregation gebildet, wobei ein Übertragswert der Vorperiode (Aggregation) zur darauf folgenden Aggregationsperiode berücksichtigt wird sofern diese einen Value-Wert enhtält.
          Dabei wird ein Zählerüberlauf (Neubeginn bei 0) mit berücksichtigt (vergleiche Attribut "diffAccept").
          Wird in einer auszuwertenden Zeit- bzw. Aggregationsperiode nur ein Datensatz gefunden, kann die Differenz in Verbindung mit dem Differenzübertrag der Vorperiode berechnet werden. in diesem Fall kann es zu einer logischen Ungenauigkeit in der Zuordnung der Differenz zu der Aggregationsperiode kommen. Deswegen wird eine Warnung im "state" und das Reading "less_data_in_period" mit einer Liste der betroffenen Perioden wird erzeugt.

            Hinweis:
            Im Auswertungs- bzw. Aggregationszeitraum (Tag, Woche, Monat, etc.) sollten dem Modul pro Periode mindestens ein Datensatz zu Beginn und ein Datensatz gegen Ende des Aggregationszeitraumes zur Verfügung stehen um eine möglichst genaue Auswertung der Differenzwerte vornehmen zu können.

        • delEntries - löscht alle oder die durch die Attribute device und/oder reading definierten Datenbankeinträge. Die Eingrenzung über Timestamps erfolgt folgendermaßen:

            "timestamp_begin" gesetzt: gelöscht werden DB-Einträge ab diesem Zeitpunkt bis zum aktuellen Datum/Zeit
            "timestamp_end" gesetzt : gelöscht werden DB-Einträge bis bis zu diesem Zeitpunkt
            beide Timestamps gesetzt : gelöscht werden DB-Einträge zwischen diesen Zeitpunkten

            Aus Sicherheitsgründen muss das Attribut "allowDeletion" gesetzt sein um die Löschfunktion freizuschalten.

      Für alle Auswertungsvarianten gilt:
      Zusätzlich zu dem auszuwertenden Reading kann das Device mit angegeben werden um das Reporting nach diesen Kriterien einzuschränken. Sind keine Zeitgrenzen-Attribute angegeben, wird '1970-01-01 01:00:00' und das aktuelle Datum/Zeit als Zeitgrenze genutzt.

      Hinweis:
      In der Detailansicht kann ein Browserrefresh nötig sein um die Operationsergebnisse zu sehen sobald im DeviceOverview "state = done" angezeigt wird.

    Get
      Die Get-Kommandos von DbRep dienen dazu eine Reihe von Metadaten der verwendeten Datenbankinstanz abzufragen. Dies sind zum Beispiel eingestellte Serverparameter, Servervariablen, Datenbankstatus- und Tabelleninformationen. Die verfügbaren get-Funktionen sind von dem verwendeten Datenbanktyp abhängig. So ist für SQLite z.Zt. nur "svrinfo" verfügbar. Die Funktionen liefern nativ sehr viele Ausgabewerte, die über über funktionsspezifische Attribute abgrenzbar sind. Der Filter ist als kommaseparierte Liste anzuwenden. Dabei können SQL-Wildcards (% _) verwendet werden.

      Hinweis:
      Nach der Ausführung einer get-Funktion in der Detailsicht einen Browserrefresh durchführen um die Ergebnisse zu sehen !

        • dbstatus - listet globale Informationen zum MySQL Serverstatus (z.B. Informationen zum Cache, Threads, Bufferpools, etc. ). Es werden zunächst alle verfügbaren Informationen berichtet. Mit dem Attribut "showStatus" kann die Ergebnismenge eingeschränkt werden, um nur gewünschte Ergebnisse abzurufen. Detailinformationen zur Bedeutung der einzelnen Readings sind hier verfügbar.

            Bespiel:
            get <name> dbstatus
            attr <name> showStatus %uptime%,%qcache%
            # Es werden nur Readings erzeugt die im Namen "uptime" und "qcache" enthalten

        • dbvars - zeigt die globalen Werte der MySQL Systemvariablen. Enthalten sind zum Beispiel Angaben zum InnoDB-Home, dem Datafile-Pfad, Memory- und Cache-Parameter, usw. Die Ausgabe listet zunächst alle verfügbaren Informationen auf. Mit dem Attribut "showVariables" kann die Ergebnismenge eingeschränkt werden um nur gewünschte Ergebnisse abzurufen. Weitere Informationen zur Bedeutung der ausgegebenen Variablen sind hier verfügbar.

            Bespiel:
            get <name> dbvars
            attr <name> showVariables %version%,%query_cache%
            # Es werden nur Readings erzeugt die im Namen "version" und "query_cache" enthalten

        • svrinfo - allgemeine Datenbankserver-Informationen wie z.B. die DBMS-Version, Serveradresse und Port usw. Die Menge der Listenelemente ist vom Datenbanktyp abhängig. Mit dem Attribut "showSvrInfo" kann die Ergebnismenge eingeschränkt werden. Weitere Erläuterungen zu den gelieferten Informationen sind hier zu finden.

            Bespiel:
            get <name> svrinfo
            attr <name> showSvrInfo %SQL_CATALOG_TERM%,%NAME%
            # Es werden nur Readings erzeugt die im Namen "SQL_CATALOG_TERM" und "NAME" enthalten

        • tableinfo - ruft Detailinformationen der in einem MySQL-Schema angelegten Tabellen ab. Die ausgewerteten Schemata sind abhängig von den Rechten des verwendeten Datenbankusers (default: das DB-Schema der current/history-Tabelle). Mit dem Attribut "showTableInfo" können die Ergebnisse eingeschränkt werden. Erläuterungen zu den erzeugten Readings sind hier zu finden.

            Bespiel:
            get <name> tableinfo
            attr <name> showTableInfo current,history
            # Es werden nur Information der Tabellen "current" und "history" angezeigt


    Attribute
      Über die modulspezifischen Attribute wird die Abgrenzung der Auswertung und die Aggregation der Werte gesteuert.

      Hinweis zur SQL-Wildcard Verwendung:
      Innerhalb der Attribut-Werte für "device" und "reading" können SQL-Wildcards, "%" und "_", angegeben werden. Dabei ist "%" = beliebig viele Zeichen und "_" = ein Zeichen.
      Dies gilt für alle Funktionen außer "insert", "deviceRename" und "delEntries".
      Die Funktion "insert" erlaubt nicht dass die genannten Attribute das Wildcard "%" enthalten, "_" wird als normales Zeichen gewertet.
      Die Löschfunktion "delEntries" wertet die Zeichen "$", "_" NICHT als Wildcards und löscht nur Device/Readings die exakt wie in den Attributen angegeben in der DB gespeichert sind.
      In den Readings wird das Wildcardzeichen "%" durch "/" ersetzt um die Regeln für erlaubte Zeichen in Readings einzuhalten.

        • aggregation - Zusammenfassung der Device/Reading-Selektionen in Stunden,Tages,Kalenderwochen,Kalendermonaten oder "no". Liefert z.B. die Anzahl der DB-Einträge am Tag (countEntries), Summation von Differenzwerten eines Readings (sumValue), usw. Mit Aggregation "no" (default) erfolgt keine Zusammenfassung in einem Zeitraum sondern die Ausgabe ergibt alle Werte eines Device/Readings zwischen den definierten Zeiträumen.

        • allowDeletion - schaltet die Löschfunktion des Moduls frei

        • device - Abgrenzung der DB-Selektionen auf ein bestimmtes Device.

        • diffAccept - gilt für Funktion diffValue. diffAccept legt fest bis zu welchem Schwellenwert eine berechnete positive Werte-Differenz zwischen zwei unmittelbar aufeinander folgenden Datensätzen akzeptiert werden soll (Standard ist 20).
          Damit werden fehlerhafte DB-Einträge mit einem unverhältnismäßig hohen Differenzwert von der Berechnung ausgeschlossen und verfälschen nicht das Ergebnis. Sollten Schwellenwertüberschreitungen vorkommen, wird das Reading "diff_overrun_limit_<diffLimit>" erstellt. (<diffLimit> wird dabei durch den aktuellen Attributwert ersetzt) Es enthält eine Liste der relevanten Wertepaare. Mit verbose 3 werden diese Datensätze ebenfalls im Logfile protokolliert.

          • Beispiel Ausgabe im Logfile beim Überschreiten von diffAccept=10:

            DbRep Rep.STP5000.etotal -> data ignored while calc diffValue due to threshold overrun (diffAccept = 10):
            2016-04-09 08:50:50 0.0340 -> 2016-04-09 12:42:01 13.3440

            # Der erste Datensatz mit einem Wert von 0.0340 ist untypisch gering zum nächsten Wert 13.3440 und führt zu einem zu hohen Differenzwert.
            # Es ist zu entscheiden ob der Datensatz gelöscht, ignoriert, oder das Attribut diffAccept angepasst werden sollte.

        • disable - deaktiviert das Modul

        • expimpfile - Pfad/Dateiname für Export/Import in/aus einem File.

        • reading - Abgrenzung der DB-Selektionen auf ein bestimmtes Reading

        • readingNameMap - der Name des ausgewerteten Readings wird mit diesem String für die Anzeige überschrieben

        • readingPreventFromDel - Komma separierte Liste von Readings die vor einer neuen Operation nicht gelöscht werden sollen

        • role - die Rolle des DbRep-Device. Standard ist "Client". Die Rolle "Agent" ist im Abschnitt DbRep-Agent beschrieben.

        • showproctime - wenn gesetzt, zeigt das Reading "sql_processing_time" die benötigte Abarbeitungszeit (in Sekunden) für die SQL-Ausführung der durchgeführten Funktion. Dabei wird nicht ein einzelnes SQl-Statement, sondern die Summe aller notwendigen SQL-Abfragen innerhalb der jeweiligen Funktion betrachtet.

        • showStatus - grenzt die Ergebnismenge des Befehls "get ... dbstatus" ein. Es können SQL-Wildcards (% _) verwendet werden.

          • Bespiel: attr ... showStatus %uptime%,%qcache%
            # Es werden nur Readings erzeugt die im Namen "uptime" und "qcache" enthalten

        • showVariables - grenzt die Ergebnismenge des Befehls "get ... dbvars" ein. Es können SQL-Wildcards (% _) verwendet werden.

          • Bespiel: attr ... showVariables %version%,%query_cache%
            # Es werden nur Readings erzeugt die im Namen "version" und "query_cache" enthalten

        • showSvrInfo - grenzt die Ergebnismenge des Befehls "get ... svrinfo" ein. Es können SQL-Wildcards (% _) verwendet werden.

          • Bespiel: attr ... showSvrInfo %SQL_CATALOG_TERM%,%NAME%
            # Es werden nur Readings erzeugt die im Namen "SQL_CATALOG_TERM" und "NAME" enthalten

        • showTableInfo - grenzt die Ergebnismenge des Befehls "get ... tableinfo" ein. Es können SQL-Wildcards (% _) verwendet werden.

          • Bespiel: attr ... showTableInfo current,history
            # Es werden nur Information der Tabellen "current" und "history" angezeigt

        • timestamp_begin - der zeitliche Beginn für die Datenselektion (*)

        • timestamp_end - das zeitliche Ende für die Datenselektion. Wenn nicht gesetzt wird immer die aktuelle Datum/Zeit-Kombi für das Ende der Selektion eingesetzt. (*)

        • timeDiffToNow - der Selektionsbeginn wird auf den Zeitpunkt "<aktuelle Zeit> - <timeDiffToNow>" gesetzt (in Sekunden). Es werden immer die letzten <timeDiffToNow>-Sekunden berücksichtigt (z.b. 86400 wenn immer die letzten 24 Stunden in die Selektion eingehen sollen). Die Timestampermittlung erfolgt dynamisch zum Ausführungszeitpunkt.

        • timeOlderThan - das Selektionsende wird auf den Zeitpunkt "<aktuelle Zeit> - <timeOlderThan>" gesetzt (in Sekunden). Dadurch werden alle Datensätze bis zu dem Zeitpunkt "<aktuelle Zeit> - <timeOlderThan>" berücksichtigt (z.b. wenn auf 86400 gesetzt werden alle Datensätze die älter als ein Tag sind berücksichtigt). Die Timestampermittlung erfolgt dynamisch zum Ausführungszeitpunkt.

        • timeout - das Attribut setzt den Timeout-Wert für die Blocking-Call Routinen (Standard 60) in Sekunden


      (*) Das Format von Timestamp ist wie in DbLog "YYYY-MM-DD HH:MM:SS". Für die Attribute "timestamp_begin", "timestamp_end" kann ebenso eine der folgenden Eingaben verwendet werden:

        current_year_begin : belegt das timestamp-Attribut dynamisch mit "<aktuelles Jahr>-01-01 00:00:00"
        current_year_end : belegt das timestamp-Attribut dynamisch mit "<aktuelles Jahr>-12-31 23:59:59"
        previous_year_begin : belegt das timestamp-Attribut dynamisch mit "<voriges Jahr>-01-01 00:00:00"
        previous_year_end : belegt das timestamp-Attribut dynamisch mit "<voriges Jahr>-12-31 23:59:59"

      Natürlich sollte man immer darauf achten dass timestamp_begin < timestamp_end ist.

      Hinweis
      Wird das Attribut "timeDiffToNow" gesetzt, werden die evtentuell gesetzten Attribute "timestamp_begin" bzw. "timestamp_end" gelöscht. Das Setzen von "timestamp_begin" bzw. "timestamp_end" bedingt die Löschung von Attribut "timeDiffToNow" wenn es vorher gesetzt war.

    Readings
      Abhängig von der ausgeführten DB-Operation werden die Ergebnisse in entsrechenden Readings dargestellt. Zu Beginn einer neuen Operation werden alle alten Readings einer vorangegangenen Operation gelöscht um den Verbleib unpassender bzw. ungültiger Readings zu vermeiden.

      Zusätzlich werden folgende Readings erzeugt:

        • state - enthält den aktuellen Status der Auswertung. Wenn Warnungen auftraten (state = Warning) vergleiche Readings "diff_overrun_limit_<diffLimit>" und "less_data_in_period"

        • errortext - Grund eines Fehlerstatus

        • background_processing_time - die gesamte Prozesszeit die im Hintergrund/Blockingcall verbraucht wird

        • sql_processing_time - der Anteil der Prozesszeit die für alle SQL-Statements der ausgeführten Operation verbraucht wird

        • diff_overrun_limit_<diffLimit> - enthält eine Liste der Wertepaare die eine durch das Attribut "diffAccept" festgelegte Differenz <diffLimit> (Standard: 20) überschreiten. Gilt für Funktion "diffValue".

        • less_data_in_period - enthält eine Liste der Zeitperioden in denen nur ein einziger Datensatz gefunden wurde. Die Differenzberechnung berücksichtigt den letzten Wert der Vorperiode. Gilt für Funktion "diffValue".


    DbRep Agent - automatisches Ändern von Device-Namen in Datenbanken und DbRep-Definitionen nach FHEM "rename" Kommando
      Mit dem Attribut "role" wird die Rolle des DbRep-Device festgelegt. Die Standardrolle ist "Client". Mit der Änderung der Rolle in "Agent" wird das Device veranlasst auf Umbenennungen von Geräten in der FHEM Installation zu reagieren.

      Durch den DbRep-Agenten werden folgende Features aktiviert wenn ein Gerät in FHEM mit "rename" umbenannt wird:

        • in der dem DbRep-Agenten zugeordneten Datenbank (Internal Database) wird nach Datensätzen mit dem alten Gerätenamen gesucht und dieser Gerätename in allen betroffenen Datensätzen in den neuen Namen geändert.

        • in dem DbRep-Agenten zugeordneten DbLog-Device wird in der Definition das alte durch das umbenannte Device ersetzt. Dadurch erfolgt ein weiteres Logging des umbenannten Device in der Datenbank.

        • in den existierenden DbRep-Definitionen vom Typ "Client" wird ein evtl. gesetztes Attribut "device = alter Devicename" in "device = neuer Devicename" geändert. Dadurch werden Auswertungsdefinitionen bei Geräteumbenennungen automatisch konstistent gehalten.

      Mit der Änderung in einen Agenten sind folgende Restriktionen verbunden die mit dem Setzen des Attributes "role = Agent" eingeschaltet und geprüft werden:

        • es kann nur einen Agenten pro Datenbank in der FHEM-Installation geben. Ist mehr als eine Datenbank mit DbLog definiert, können ebenso viele DbRep-Agenten eingerichtet werden

        • mit der Umwandlung in einen Agenten wird nur noch das Set-Komando "renameDevice" verfügbar sein sowie nur ein eingeschränkter Satz von DbRep-spezifischen Attributen zugelassen. Wird ein DbRep-Device vom bisherigen Typ "Client" in einen Agenten geändert, werden evtl. gesetzte und nun nicht mehr zugelassene Attribute glöscht.

      Die Aktivitäten wie Datenbankänderungen bzw. Änderungen an anderen DbRep-Definitionen werden im Logfile mit verbose=3 protokolliert. Damit die renameDevice-Funktion bei großen Datenbanken nicht in ein timeout läuft, sollte das Attribut "timeout" entsprechend dimensioniert werden. Wie alle Datenbankoperationen des Moduls wird auch das Autorename nonblocking ausgeführt.

        Beispiel für die Definition eines DbRep-Device als Agent:

        define Rep.Agent DbRep LogDB
        attr Rep.Agent devStateIcon connected:10px-kreis-gelb .*disconnect:10px-kreis-rot .*done:10px-kreis-gruen
        attr Rep.Agent icon security
        attr Rep.Agent role Agent
        attr Rep.Agent room DbLog
        attr Rep.Agent showproctime 1
        attr Rep.Agent stateFormat { ReadingsVal("$name","state", undef) eq "running" ? "renaming" : ReadingsVal("$name","state", undef). " »; ProcTime: ".ReadingsVal("$name","sql_processing_time", undef)." sec"}
        attr Rep.Agent timeout 3600

    Dooya

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

    EC3000

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

    ECMD

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

    ECMDDevice

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

    EDIPLUG

    FHEM Module für die Edimax Smart Plug Switches SP-2101W und SP-1101W (http://www.edimax.com)
    FHEM Forum : http://forum.fhem.de/index.php/topic,29541.0.html
    SP-2101W - Edimax Smart Plug Switch mit Strom Verbrauchsmessung
    SP-1101W - Edimax Smart Plug Switch
    ben&oml;ntigt XML:Simple -> sudo apt-get install libxml-simple-perl
      Define
        define <name> EDIPLUG IP_des_EDIPlug (oder FQDN Name)
        Beispiel:
      • define myediplug EDIPLUG 192.168.0.99
      • define myediplug EDIPLUG ediplug.fritz.box

      Set
      • on => schalte an
      • off => schalte aus
      • list => erzeugt eine neue Zeitplan Liste mit einem Eintrag : Wochentag(0-6) Startzeit(hh:mm) Endezeit(hh:mm) Kommando(on/off) Bsp. 1 10:00 11:30 on
        mit Wochentag 00:00 24:00 on kann man den kompletten Tag einschalten
      • addlist => fügt eine neue Schaltzeit einer bestehenden Zeitplan Liste hinzu : Wochentag(0-6) Startzeit(hh:mm) Endtezeit(hh:mm) Kommando(on/off) Bsp. 1 10:00 11:30 on
      • dellist => löscht eine bestimmte Schaltzeit eines Tages : Wochentag(0-6) Startzeit(hh:mm) Endezeit(hh:mm) Bsp. 1 10:00 11:30
      • delete => löscht die Liste eines ganzen Tages : Wochentag(0-6)
      • day => schaltet die Zeitplanung eines Tages ein oder aus : Wochentag(0-6) on/off Bsp. 5 on

      Get
      • info => Anzeige von MAC , Firmware Version , Modell , Name
      • power => zeigt alle Stromverbrauchswerte ( nur Modell SP-2101W )
      • schedule => zeigt alle internen Schaltzeiten (ACHTUNG : Firmware Version beachten !)
      • status => zeigt an/aus Status der Schaltdose

      Attributes
      • interval => polling interval (default 60)
      • timeout => max. Wartezeit in Sekunden (default 2)
      • read-only => es ist nur lesen (Get) erlaubt (default 0)
      • user => Username (default admin)
      • password => Passwort (default 1234)

      Readings
      • 0.So -> Schaltzeiten Sonntag
      • 0.So.state -> Sonntag an/aus
      • .
      • .
      • .
      • 6.Sa -> Schaltzeiten Samstag
      • 6.Sa.state -> Samstag an/aus
      • last_Toggle_Time ( nur Modell SP-2101W)
      • current (nur Modell SP-2101W)
      • power_now (nur Modell SP-2101W)
      • power_day (nur Modell SP-2101W)
      • power_week (nur Modell SP-2101W)
      • power_month (nur Modell SP-2101W)

    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

    EMT7110

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

    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

    EQ3BT

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

    ESA2000

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

    ElectricityCalculator

      Das ElectricityCalculator Modul berechnet den Verbrauch an elektrischer Energie (Stromverbrauch) und den verbundenen Kosten von einem oder mehreren Elektrizitätszählern.
      Es ist kein eigenes Zählermodul sondern benötigt eine Regular Expression (regex or regexp) um das Reading mit den Zählimpulse von einem oder mehreren Electrizitätszählern zu finden.

      Sobald das Modul in der fhem.cfg definiert wurde, reagiert das Modul auf jedes durch das regex definierte event wie beispielsweise ein myOWDEVICE:counter.* etc.

      Das ElectricityCalculator Modul berechnet augenblickliche, historische statistische und vorhersehbare Werte von einem oder mehreren Elektrizitätszählern und erstellt die entsprechenden Readings.

      Um zu verhindern, dass man bis zu 12 Monate warten muss, bis alle Werte der Realität entsprechen, müssen die Readings
      <DestinationDevice>_<SourceCounterReading>_CounterDay1st,
      <DestinationDevice>_<SourceCounterReading>_CounterMonth1st,
      <DestinationDevice>_<SourceCounterReading>_CounterYear1st und
      <DestinationDevice>_<SourceCounterReading>_CounterMeter1st
      entsprechend mit dem setreading - Befehl korrigiert werden.
      Diese Werte findet man unter Umständen auf der letzten Abrechnung des Elektrizitätsversorgers. Andernfalls dauert es bis zu 24h für die täglichen, 30 Tage für die monatlichen und bis zu 12 Monate für die jährlichen Werte bis diese der Realität entsprechen.


      Intervalle kleienr als 10s werden ignoriert um Spitzen zu verhindern die von Blockaden des fhem Systems hervorgerufen werden (z.B. DbLog - reducelog).
      Define
        define <name> ElectricityCalculator <regex>
          <name> : Der Name dieses Berechnungs-Device. Empfehlung: "myElectricityCalculator".
          <regex> : Eine gültige Regular Expression (regex or regexp) von dem Event wo der Zählerstand gefunden werden kann
        Beispiel: define myElectricityCalculator ElectricityCalculator myElectricityCounter:countersA.*

      Set
        Die set - Funktion erlaubt individuelle Readings zu verändern um beispielsweise nach einem Stromausfall Werte zu korrigieren.
        Die set - Funktion funktioniert nur für Readings welche im CalculatorDevice gespeichert wurden.
        Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit set - Befehl gesetzt werden.

      Get
        Die get - Funktion liefert nur den Wert des jeweiligen Readings zurück.
        Die get - Funktion funktioniert nur für Readings welche im CalculatorDevice gespeichert wurden.
        Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit get - Befehl ausgelesen werden.

      Attributes
        Sollten die unten ausfeg&auuml;hrten Attribute bei der Definition eines entsprechenden Gerätes nicht gesetzt sein, so werden sie vom Modul mit Standard Werten automatisch gesetzt
        Zusätzlich können die globalen Attribute wie room verwendet werden.
        • BasicPricePerAnnum :
        • Eine gültige float Zahl für die jährliche Grundgebühr in der gewählten Währung für die Elektrizitäts-Versorgung zum Endverbraucher.
          Dieser Wert stammt vom Elektrizitätsversorger und steht auf der Abrechnung.
          Der Standard Wert ist 0.00
        • Currency :
        • Eines der vordefinerten Währungssymbole: [€,£,$].
          Der Standard Wert ist €
        • disable :
        • Deaktiviert das device. Das Modul wird nicht mehr auf die Events reagieren die durch die Regular Expression definiert wurde.
          Der Standard Wert ist 0 = aktiviert.
        • ElectricityCounterOffset :
        • Eine gültige float-Zahl für den Unterschied = Offset (Nicht der Unterschied zwischen Zählimpulsen) zwischen dem am mechanischen Elektrizitätszählern und dem angezeigten Wert im Reading dieses Device.
          Der Offset-Wert wird wie folgt ermittelt: WOffset = WMechanisch - WModule
          Der Standard-Wert ist 0.00
        • ElectricityKwhPerCounts :
        • Eine gültige float-Zahl für die Menge kWh pro Zählimpulsen.
          Der Wert ist durch das mechanische Zählwerk des Elektrizitätszählern vorgegeben. ElectricityKwhPerCounts = 0.001 bedeutet, dass jeder Zählimpuls ein Tausendstel einer kWh ist (=Wh).
          Einige elektronische Zähler (Bsp.: HomeMatic HM-ES-TX-WM) stellen die gezählte Menge an elektrischer Energie als Wh bereit.
          Aus diesem Grund muss dieses Attribut auf 0.001 gesetzt werden um eine korrekte Transformation in kWh zu ermöglichen.
          Der Standard-Wert ist 1
        • ElectricityPricePerKWh :
        • Eine gültige float-Zahl für den Preis pro kWh.
          Dieser Wert stammt vom Elektrizitätsversorger und steht auf der Abrechnung.
          Der Standard-Wert ist 0.2567
        • MonthlyPayment :
        • Eine gültige float-Zahl für die monatlichen Abschlagszahlungen in der gewählten Währung an den Elektrizitätsversorger.
          Der Standard-Wert ist 0.00
        • MonthOfAnnualReading :
        • Eine gültige Ganz-Zahl für den Monat wenn der mechanische Elektrizitätszähler jedes Jahr durch den Elektrizitätsversorger abgelesen wird.
          Der Standard-Wert ist 5 (Mai)
        • ReadingDestination :
        • Eines der vordefinerten Device als Ziel der errechneten Readings: [CalculatorDevice,CounterDevice].
          Das CalculatorDevice ist das mit diesem Modul erstellte Device.
          Das CounterDevice ist das Device von welchem der mechanische Zähler ausgelesen wird.
          Der Standard-Wert ist CalculatorDevice.
        • SiPrefixPower :
        • Ein Wert der vorgegebenen Auswahlliste: W (Watt), kW (Kilowatt), MW (Megawatt) or GW (Gigawatt).
          Es definiert welcher SI-Prefix verwendet werden soll und teilt die Leistung entsprechend durch ein Vielfaches von 1000. Der Standard-Wert ist W (Watt).

      Readings
        Sobald das Device in der Lage war mindestens 2 Werte des Zählers einzulesen, werden automatisch die entsprechenden Readings erzeugt:
        Der Platzhalter <DestinationDevice> steht für das Device, welches man in dem Attribut ReadingDestination oben festgelegt hat. Dieser Platzhalter bleibt leer, sobald man dort CalculatorDevice ausgewählt hat.
        Der Platzhalter <SourceCounterReading> steht für das Reading welches mit der Regular Expression definiert wurde.
        • <DestinationDevice>_<SourceCounterReading>_CounterCurrent :
        • Aktueller Zählerstand am mechanischen Zähler. Bei Unterschied muss das Offset-Attribut entspechend korrigiert werden.
        • <DestinationDevice>_<SourceCounterReading>_CounterDay1st :
        • Der erste Zählerstand des laufenden Tages seit Mitternacht.
        • <DestinationDevice>_<SourceCounterReading>_CounterDayLast :
        • Der letzte Zählerstand des vorherigen Tages.
        • <DestinationDevice>_<SourceCounterReading>_CounterMeter1st :
        • Der erste Zählerstand seit Mitternacht des ersten Tages der laufenden Ableseperiode.
        • <DestinationDevice>_<SourceCounterReading>_CounterMeterLast :
        • Der letzte Zählerstand seit Mitternacht des ersten Tages der vorherigen Ableseperiode.
        • <DestinationDevice>_<SourceCounterReading>_CounterMonth1st :
        • Der erste Zählerstand seit Mitternacht des ersten Tages des laufenden Monats.
        • <DestinationDevice>_<SourceCounterReading>_CounterMonthLast :
        • Der letzte Zählerstand des vorherigen Monats.
        • <DestinationDevice>_<SourceCounterReading>_CounterYear1st :
        • Der erste Zählerstand seit Mitternacht des ersten Tages des laufenden Jahres.
        • <DestinationDevice>_<SourceCounterReading>_CounterYearLast :
        • Der letzte Zählerstand des letzten Jahres.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostDayLast :
        • Elektrische Energiekosten des letzten Tages.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostMeterLast :
        • Elektrische Energiekosten der letzten Ableseperiode.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostMonthLast :
        • Elektrische Energiekosten des letzten Monats.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostYearLast :
        • Elektrische Energiekosten des letzten Kalenderjahres.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostDay :
        • Energiekosten in gewählter Währung seit Mitternacht des laufenden Tages.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostMeter :
        • Energiekosten in gewählter Währung seit Beginn der laufenden Ableseperiode.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostMonth :
        • Energiekosten in gewählter Währung seit Beginn des laufenden Monats.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostYear :
        • Energiekosten in gewählter Währung seit Beginn des laufenden Kalenderjahres.
        • <DestinationDevice>_<SourceCounterReading>_EnergyDay :
        • Energieverbrauch seit Beginn der aktuellen Tages (Mitternacht).
        • <DestinationDevice>_<SourceCounterReading>_EnergyDayLast :
        • Energieverbrauch in kWh des vorherigen Tages.
        • <DestinationDevice>_<SourceCounterReading>_EnergyMeter :
        • Energieverbrauch seit Beginn der aktuellen Ableseperiode.
        • <DestinationDevice>_<SourceCounterReading>_EnergyMeterLast :
        • Energieverbrauch in kWh der vorherigen Ableseperiode.
        • <DestinationDevice>_<SourceCounterReading>_EnergyMonth :
        • Energieverbrauch seit Beginn des aktuellen Monats.
        • <DestinationDevice>_<SourceCounterReading>_EnergyMonthLast :
        • Energieverbrauch in kWh des vorherigen Monats.
        • <DestinationDevice>_<SourceCounterReading>_EnergyYear :
        • Energieverbrauch seit Beginn des aktuellen Kalenderjahres.
        • <DestinationDevice>_<SourceCounterReading>_EnergyYearLast :
        • Energieverbrauch in kWh des vorherigen Kalenderjahres.
        • <DestinationDevice>_<SourceCounterReading>_FinanceReserve :
        • Finanzielle Reserve basierend auf den Abschlagszahlungen die jeden Monat an den Elektrizitätsversorger gezahlt werden. Bei negativen Werten ist von einer Nachzahlung auszugehen.
        • <DestinationDevice>_<SourceCounterReading>_MonthMeterReading :
        • Anzahl der Monate seit der letzten Zählerablesung. Der Monat der Zählerablesung ist der erste Monat = 1.
        • <DestinationDevice>_<SourceCounterReading>_PowerCurrent :
        • Aktuelle elektrische Leistung. (Mittelwert zwischen aktueller und letzter Messung)
        • <DestinationDevice>_<SourceCounterReading>_PowerDayAver :
        • Mittlere elektrische Leistung seit Mitternacht.
        • <DestinationDevice>_<SourceCounterReading>_PowerDayMax :
        • Maximale elektrische Leistungsaufnahme seit Mitternacht.
        • <DestinationDevice>_<SourceCounterReading>_PowerDayMin :
        • Minimale elektrische Leistungsaufnahme seit Mitternacht.

    EleroDrive

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

    EleroStick

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

    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"

      Da manchmal die FRITZ!Box die interne Nummer der FBDECT Geräte neu vergibt, werden beim Verbindungsaufbau zum AHA Server die gespeicherten Namen (FBNAME) mit dem aktuellen Wert verglichen. Damit das funktioniert, müssen alle FBDECT Geräte auf dem FRITZ!Box einen eindeutigen Namen bekommen, und in FHEM muss für alle Geräte "get FBDECTDEVICE devInfo" ausgeführt werden, um FBNAME als Reading zu speichern.

    FBAHAHTTP

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

    FBDECT

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

      Define
        define <name> FBDECT [<FBAHAname>:]<id> props

        Beispiel:
          define lampe FBDECT 16 switch,powerMeter
        Achtung:FBDECT Einträge werden normalerweise per autocreate angelegt. Falls sie die zugeordnete FBAHA oder FBAHAHTTP Instanz umbenennen, dann muss die FBDECT Definition manuell angepasst werden.


      Set
      • on/off
        Gerät einschalten bzw. ausschalten.
      • desired-temp <value&/gt;
        Gewünschte Temperatur beim Comet DECT setzen (nur mit FBAHAHTTP als IODev).
      • Die set extensions werden unterstützt.
      • msgInterval <sec>
        Anzahl der Sekunden zwischen den Sensornachrichten (nur mit FBAHA als IODev).

      Get
      • devInfo
        meldet Geräte-Informationen (nur mit FBAHA als IODev)

      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 ([measured|corrected])
      • 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_CALLLIST

      Das FB_CALLLIST Modul erstellt eine Anrufliste für eine konfigurierte FB_CALLMONITOR Definition. Es speichert alle Anrufe und zeigt sie in einer historischen Tabelle an.

      Es wird eine bereits konfigurierte FB_CALLMONITOR Definition benötigt, von der FB_CALLLIST die Events entsprechend verarbeiten kann.

      Abhängig von der Konfiguration der Attribute wird der Status als Icon oder als Textzeichen ausgegeben. Um die Icons korrekt anzeigen zu können, muss das openautomation Icon-Set in der entsprechenden FHEMWEB-Instanz konfiguriert sein (siehe dazu FHEMWEB Attribut iconPath).

      Die Icons haben verschiedene Farben:

      • blau - Eingehender Anruf (aktiv oder beendet)
      • grün - Ausgehender Anruf (aktiv oder beendet))
      • rot - Verpasster Anruf (eingehend)

      Falls keine Icons verwendet werden sollen (siehe Attribut show-icons), wird der Status wie folgt angezeigt:

      • <= ((o)) - Ausgehender Anruf (klingelt)
      • => ((o)) - Eingehender Anruf (klingelt)

      • <= [=] - Ausgehender Anruf (laufendes Gespräch)
      • => [=] - Eingehender Anruf (laufendes Gespräch)

      • <= X - Ausgehender, erfolgloser Anruf (Gegenseite nicht abgenommen)
      • => X - Eingehender, erfolgloser Anruf (Verpasster Anruf)

      • => O_O - Eingehender Anruf, der durch einen Anrufbeantworter entgegen genommen wurde

      • <= - Ausgehender Anruf (beendet)
      • => - Eingehender Anruf (beendet)

      Definition
        define <Name> FB_CALLLIST <FB_CALLMONITOR Name>

      Set-Kommandos
      • clear - löscht die gesamte Anrufliste

      Get
        N/A

      Attributes

      • do_not_notify
      • readingFnAttributes

      • answMachine-is-missed-call 0,1
      • Sofern aktiviert, werden Anrufe, welche durch einen internen Anrufbeantworter beantwortet werden, als "verpasster Anruf" gewertet. Diese Funktionalität ist nur relevant, wenn list-type auf "missed-call" gesetzt ist.

        Mögliche Werte: 0 => deaktiviert, 1 => aktiviert (Anrufbeantworter gilt als "verpasster Anruf").
        Standardwert ist 0 (deaktiviert)

      • create-readings 0,1
      • Sofern aktiviert, werden für alle sichtbaren Anrufe in der Liste entsprechende Readings und Events erzeugt. Es wird empfohlen das Attribut event-on-change-reading auf den Wert .* zu stellen um die hohe Anzahl an Events in bestimmten Fällen zu minimieren.

        Mögliche Werte: 0 => keine Readings erstellen, 1 => Readings und Events werden erzeugt.
        Standardwert ist 0 (keine Readings erstellen)

      • connection-mapping <hash>
      • Definiert eine eigene Zuordnung der Endgeräte (Reading: internal_connection) zu eigenen Bezeichnungen. Die Zuordnung erfolgt über eine Hash-Struktur.

        z.B.
          attr <name> connection-mapping {'DECT_1' => 'Mobilteil Küche', 'FON1' => 'Fax', 'Answering_Machine_1' => 'Anrufbeantworter'}

        Die jeweils zugeordnete Bezeichnung wird in der Anrufliste dann entsprechend angezeigt anstatt des originalen Werten von FB_CALLMONITOR.

        Standardwert ist nicht gesetzt (Keine Zuordnung, es werden die Originalwerte verwendet)

      • disable 0,1
      • Optionales Attribut zur Deaktivierung der Anrufliste. Es werden dann keine Anruf-Events mehr verarbeitet und die Liste nicht weiter aktualisiert.

        Mögliche Werte: 0 => Anrufliste ist aktiv, 1 => Anrufliste ist deaktiviert.
        Standardwert ist 0 (aktiv)

      • disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM...
      • Optionales Attribut zur Deaktivierung der Anrufliste innerhalb von bestimmten Zeitintervallen. Das Argument ist eine Leerzeichen-getrennte Liste von Minuszeichen-getrennten HH:MM Paaren (Stunde : Minute). Falls die aktuelle Uhrzeit zwischen diese Werte fällt, dann wird die Ausführung, wie bei disable, ausgesetzt. Statt HH:MM kann man auch HH oder HH:MM:SS angeben.

        Um einen Intervall um Mitternacht zu spezifizieren, muss man zwei einzelne Intervalle angeben, z.Bsp.:
        23:00-24:00 00:00-01:00
        Standardwert ist nicht gesetzt (dauerhaft aktiv)

      • expire-calls-after <Zeitfenster>
      • Optionales Attribut um beendete Anrufe nach einem angegeben Zeitfenster automatisch aus der Anrufliste zu löschen. Sobald ein beendetes Gespräch älter ist als das angegebene Zeitfenster, wird es automatisch aus der Liste entfernt.

        Ein Zeitfenster kann wie folgt angegeben werden:
        • als Minuten: 1 minute oder 30 minutes
        • als Stunden: 1 hour oder 12 hours
        • als Tage: 1 day oder 5 days
        • als Monate: 1 month oder 6 months (ein Monat entspricht hierbei 30 Tagen month is here equal to 30 days)
        • als Jahr: 1 year oder 2 years (ein Jahr entspricht hierbei 365 Tagen)

        WICHTIG: Es wird hierbei der Endezeitpunkt eines Gesprächs betrachtet, nicht der Beginn des Gesprächs.

        Wenn keine Einheit angegeben ist, wird die angegebene Zahl als Sekunden interpretiert. Es können auch Fliesskommazahlen mit einem Punkt als Kommastelle angegeben werden (z.B. 0.5 day). Der Wert 0 bedeutet, das keine Gespräche nach einem gewissen Zeitfenster gelöscht werden.

        Standardwert ist 0 (keine Gespräche werden nach einem Zeitfenster gelöscht)

      • external-mapping <hash>
      • Definiert eine eigene Zuordnung der externen Anschlussbezeichnung (Reading: external_connection) zu eigenen Bezeichnungen. Die Zuordnung erfolgt über eine Hash-Struktur.

        z.B.
          attr <name> external-mapping {'ISDN' => 'Festnetz', 'SIP0' => 'Anbieter A', 'SIP1' => 'Anbieter B'}

        Die jeweils zugeordnete Bezeichnung wird in der Anrufliste dann entsprechend angezeigt anstatt des originalen Werten von FB_CALLMONITOR.

        Standardwert ist nicht gesetzt (Keine Zuordnung, es werden die Originalwerte verwendet)

      • icon-mapping <hash>
      • Definiert eine eigene Zuordnung eines Anrufstatus zu einem Icon. Die Zuordnung erfolgt über eine Hash-Struktur.

        z.B.
          attr <name> icon-mapping {'incoming.connected' => 'phone_ring_in@yellow', 'outgoing.missed' => 'phone_missed_out@red'}

        Das entsprechende Icon wird an Stelle des Original-Icons bzw. Text verwendet. Sofern SVG-basierte Icons verwendet werden, kann man die Farbe optional definieren durch das Anfügen via @ mit Name oder einem HTML Farbcode.

        Mögliche Werte und ihre Standard-Icons sind:

        • incoming.ring => phone_ring@blue
        • outgoing.ring => phone_ring@green
        • incoming.connected => phone_ring_in@blue
        • outgoing.connected => phone_ring_in@green
        • incoming.missed => phone_missed_in@red
        • outgoing.missed => phone_missed_out@green
        • incoming.done => phone_call_end_in@blue
        • outgoing.done => phone_call_end_out@green
        • incoming.tam => phone_answering@blue


        Standardwert ist nicht gesetzt (Keine Zuordnung, es werden die Standard-Icons verwendet, sofern Icons akitivert sind)

      • internal-number-filter <hash>
      • Dieses Attribut ermöglicht das Filtern der angezeigten Anrufe auf bestimmte interne Rufnummern sowie das Zuordnen von Namen zu den internen Rufnummern.

        Es ist möglich eine kommaseparierte Liste an internen Rufnummern anzugeben oder eine Hash-Tabelle in der man den internen Rufnummern eine eigene Bezeichnung zuweist.

        z.B.
          attr <name> internal-number-filter 304050,304060

          attr <name> internal-number-filter {'304050' => 'geschftl.', '304060' => 'privat'}

        Wichtig: Je nach Telefonanbieter kann der Wert die Ortsvorwahl enthalten. Die Rufnummer muss genauso angegeben werden, wie sie ohne eine Zuordnung in der Anrufliste auftaucht.

        Wenn dieses Attribut gesetzt ist, werden nur die eingestellten Rufnummern in der Liste angezeigt.

        Standardwert ist nicht gesetzt (alle internen Rufnummern werden angezeigt)

      • list-order descending,ascending
      • Gibt an ob der neueste Anruf in der ersten Zeile (aufsteigend => descending) oder in der letzten Zeile (absteigend => ascending) in der Liste angezeigt werden soll. Dementsprechend rollt die Liste dann nach oben oder unten durch.

        Standardwert ist "descending" (absteigend, neuester Anruf in der ersten Zeile)

      • list-type all,incoming,outgoing,missed-calls,completed,active
      • Ist dieses Attribut gesetzt, werden nur bestimmte Typen von Anrufen in der Liste angezeigt:

        • all - Alle Anrufe werden angezeigt
        • incoming - Alle eingehenden Anrufe werden angezeigt (aktive und abgeschlossene)
        • outgoing - Alle ausgehenden Anrufe werden angezeigt (aktive und abgeschlossene)
        • missed-calls - Alle eingehenden, verpassten Anrufe werden angezeigt.
        • completed - Alle abgeschlossenen Anrufe werden angezeigt (eingehend und ausgehend)
        • active - Alle aktuell laufenden Anrufe werden angezeigt (eingehend und ausgehend)

        Standardwert ist "all" (alle Anrufe anzeigen)

      • no-heading 0,1
      • Sofern aktiviert, wird die Überschriftenzeile ausserhalb der Liste inkl. Link auf die Detail-Seite der aktuellen Definition ausgeblendet.

        Mögliche Werte: 0 => Überschriftenzeile wird angezeigt , 1 => Überschriftenzeile wird ausgeblendet
        Standardwert ist 1 (Überschriftenzeile wird angezeigt)

      • no-table-header 0,1
      • Sofern aktiviert, wird die Kopfzeile der Tabelle für die aktuelle Definition ausgeblendet.

        Mögliche Werte: 0 => Kopfzeile wird angezeigt , 1 => Kopfzeile wird ausgeblendet
        Standardwert ist 1 (Kopfzeile wird angezeigt)

      • number-cmd <Befehl>
      • Kann gesetzt werden, um ein FHEM-Befehl oder Perl-Code (in geschweiften Klammern: { ... } ) auszuführen, wenn man auf eine Rufnummer in der Anrufliste klickt. Der Platzhalter $NUMBER wird dabei mit der entsprechenden Rufnummer der jeweiligen Zeile ersetzt.

        Damit kann man beispielsweise einen Rückruf starten. e.g.:

        • set FRITZBOX call $NUMBER
        • {dialNumber("$NUMBER")}

        Sofern nicht gesetzt, wird kein Link angezeigt.

      • number-of-calls 1..20
      • Setzt die maximale Anzahl an Einträgen in der Anrufliste. Sollte die Anrufliste voll sein, wird das älteste Gespräch gelöscht.

        Standardwert sind 5 Einträge

      • show-icons 0,1
      • Im Normalfall wird der Status eines jeden Anrufs mit einem Icon angezeigt. Dazu muss das openautomation Icon-Set im iconpath-Attribut der entsprechenden FHEMWEB Instanz konfiguriert sein. Sollte man keine Icons wünschen, so kann man diese hiermit abschalten. Der Status wird dann mittels Textzeichen dargestellt.

        Mögliche Werte: 0 => keine Icons , 1 => benutze Icons
        Standardwert ist 1 (benutze Icons)

      • time-format-string <string>
      • Definiert einen Formatierungs-String welcher benutzt wird um die Zeitangaben in der Anrufliste nach eigenen Wünschen anzupassen. Es stehen hier eine ganze Reihe an Platzhaltern zur Verfügung um die einzelnen Elemente einer Datums-/Zeitangabe einzeln zu setzen. Die möglichen Werte sind alle Standard POSIX strftime() Platzhalter. Gängige Platzhalter sind:

        • %a - Der abgekürzte Wochentagname
        • %b - Der abgekürzte Monatsname
        • %S - Die Sekunden als Dezimalzahl
        • %M - Die Minuten als Dezimalzahl
        • %H - Die Stunden als Dezimalzahl
        • %d - Der Tag im Monat als Dezimalzahl
        • %m - Der Monat als Dezimalzahl
        • %Y - Das Jahr als Dezimalzahl (4-stellig).

        Es gibt hierfür noch weitere Platzhalter. Weitere Informationen dazu findet man in der Manpage von strftime() oder der Dokumentation des entsprechenden Perl Interpreters.

        Standardwert ist "%a, %d %b %Y %H:%M:%S" (entspricht "So, 07 Jun 2015 12:50:09")

      • language en,de
      • Definiert die Sprache in der die Anrufliste angezeigt werden soll (Tabellenkopf, Datum). Die entsprechende Sprache muss auch im Betriebssystem installiert und unterstützt werden.

        Mögliche Werte: en => Englisch , de => Deutsch
        Standardwert ist en (Englisch)

      • visible-columns row,state,timestamp,name,number,internal,external,connection,duration
      • Legt fest, welche Spalten in welcher Reihenfolge (von links nach rechts) in der Anrufliste angezeigt werden sollen. Es müssen nicht alle verfügbaren Spalten angezeigt werden. Es kann auch eine Auswahl von einzelnen Spalten angezeigt werden.

        Die möglichen Werte repräsentieren die jeweilige Spalte. Der Wert "row" steht für die Zeilennummer innerhalb der Liste.

        Mögliche Werte: Eine Kombination der folgenden Werte in der gewünschten Reihenfolge: row,state,timestamp,name,number,internal,external,connection,duration
        Standardwert ist "row,state,timestamp,name,number,internal,external,connection,duration" (Anzeige aller Spalten)


      Generierte Events:

        Dieses Modul generiert Readings/Events sofern das Attribut create-readings aktiviert ist. Die Anzahl, sowie der Name der Readings ist von den gewählten Spalten (Attribut: visible-columns), sowie der Anzahl der anzuzeigenden Anrufe abhängig (Attribut: number-of-calls).

    FB_CALLMONITOR

      Das Modul FB_CALLMONITOR verbindet sich zu einer AVM FritzBox Fon und verarbeitet Telefonie-Ereignisse.(eingehende & ausgehende Telefonate)

      Um dieses Modul nutzen zu können, muss der Callmonitor via Kurzwahl mit einem Telefon aktiviert werden. .

        #96*5* - Callmonitor aktivieren
        #96*4* - Callmonitor deaktivieren

      Einfach die entsprechende Kurzwahl auf irgend einem Telefon eingeben, welches an die Fritz!Box angeschlossen ist. Nach ca. 3 Sekunden kann man einfach wieder auflegen. Nun ist der Callmonitor aktiviert.

      Sobald der Callmonitor auf der Fritz!Box aktiviert wurde erzeugt das Modul entsprechende Events (s.u.) für alle externen Anrufe. Interne Anrufe werden nicht durch den Callmonitor erfasst.

      Dieses Modul funktioniert mit allen Fritz!Box Modellen, welche Telefonie unterstützen (Namenszusatz: Fon).

      Definition
        define <name> FB_CALLMONITOR <IP-Addresse>[:Port]

        Port 1012 ist der Standardport und muss daher nicht explizit angegeben werden.

      Set-Kommandos
      • reopen - schliesst die Verbindung zur FritzBox und öffnet sie erneut
      • rereadCache - Liest den Cache aus der Datei neu ein (sofern konfiguriert, siehe dazu Attribut reverse-search-cache-file)
      • rereadPhonebook - Liest das Telefonbuch der FritzBox neu ein (per Datei, Telnet oder direkt lokal)
      • rereadTextfile - Liest die nutzereigene Textdatei neu ein (sofern konfiguriert, siehe dazu Attribut reverse-search-text-file)
      • password - speichert das FritzBox Passwort, welches für das Einlesen aller Telefonbücher direkt von der FritzBox benötigt wird. Dieses Kommando ist nur verfügbar, wenn ein Passwort benötigt wird um das Telefonbuch via Netzwerk einzulesen, siehe dazu Attribut fritzbox-remote-phonebook.

      Get-Kommandos
      • search <Rufnummer> - gibt den Namen der Telefonnummer zurück (aus Cache, Telefonbuch oder Rückwärtssuche)
      • showPhonebookIds - gibt eine Liste aller verfügbaren Telefonbücher auf der FritzBox zurück (nicht verfügbar wenn das Telefonbuch via Telnet-Verbindung eingelesen wird)
      • showPhonebookEntries - gibt eine Liste aller bekannten Telefonbucheinträge zurück (nur verfügbar, wenn eine Rückwärtssuche via Telefonbuch aktiviert ist)
      • showCacheEntries - gibt eine Liste aller bekannten Cacheeinträge zurück (nur verfügbar, wenn die Cache-Funktionalität der Rückwärtssuche aktiviert ist))
      • showTextEntries - gibt eine Liste aller Einträge aus der nutzereigenen Textdatei zurück (nur verfügbar, wenn eine Textdatei als Attribut definiert ist))

      Attribute

      • do_not_notify
      • readingFnAttributes

      • disable 0,1
      • 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)

      • disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM...
      • Optionales Attribut zur Deaktivierung des Callmonitors innerhalb von bestimmten Zeitintervallen. Das Argument ist eine Leerzeichen-getrennte Liste von Minuszeichen-getrennten HH:MM Pärchen (Stunde : Minute). Falls die aktuelle Uhrzeit zwischen diese Werte fällt, dann wird die Verarbeitung, wie bei disable, ausgesetzt. Statt HH:MM kann man auch HH oder HH:MM:SS angeben.

        Um einen Intervall um Mitternacht zu spezifizieren, muss man zwei einzelne Intervalle angeben, z.Bsp.:
        23:00-24:00 00:00-01:00
        Standardwert ist nicht gesetzt (dauerhaft aktiv)

      • answMachine-is-missed-call 0,1
      • Sofern aktiviert, werden Anrufe, welche durch einen internen Anrufbeantworter beantwortet werden, als "unbeantworteter Anruf" gewertet (siehe Reading "missed_call" unter Generated Events).

        Mögliche Werte: 0 => deaktiviert, 1 => aktiviert (Anrufbeantworter gilt als "unbeantworteter Anruf").
        Standardwert ist 0 (deaktiviert)

      • reverse-search (phonebook,klicktel.de,dasoertliche.de,search.ch,dasschnelle.at)
      • Aktiviert die Rückwärtssuche der externen Rufnummer (bei eingehenden/ausgehenden Anrufen). Dieses Attribut enthält eine komma-separierte Liste mit allen Anbietern die für eine Rückwärtssuche benutzt werden sollen. Die Rückwärtssuche prüft in der gegebenen Reihenfolge (von links nach rechts) ob der entsprechende Anbieter (Telefonbuch, Textdatei oder Internetanbieter) die Rufnummer auflösen können. Das erste Resultat was dabei gefunden wird, wird als Ergebnis für die Rückwärtssuche verwendet. Es ist möglich einen bestimmten Suchanbieter zu verwenden, welcher für die Rückwärtssuche verwendet werden soll. Der Anbieter "textfile" verwendet die nutzereigene Textdatei, sofern definiert (siehe Attribut reverse-search-text-file). Der Anbieter "phonebook" verwendet das Telefonbuch der FritzBox (siehe Attribut reverse-search-phonebook-file oder fritzbox-remote-phonebook).

        Standardmäßig ist diese Funktion deaktiviert (nicht gesetzt)

      • reverse-search-cache 0,1
      • Wenn dieses Attribut gesetzt ist, werden alle Ergebisse von Internetanbietern in einem modul-internen Cache gespeichert und alle existierenden Ergebnisse aus dem Cache genutzt anstatt eine erneute Anfrage bei einem Internet-Anbieter durchzuführen. Der Cache ist immer an die Internetanbieter gekoppelt und speichert nur Ergebnisse von Internetanbietern.

        Mögliche Werte: 0 => deaktiviert , 1 => aktiviert
        Standardwert ist 0 (deaktiviert)

      • reverse-search-cache-file <Dateipfad>
      • Da der Cache nur im Arbeitsspeicher existiert, ist er nicht persistent und geht beim stoppen von FHEM verloren. Mit diesem Parameter werden alle Cache-Ergebnisse in eine Textdatei geschrieben (z.B. /usr/share/fhem/telefonbuch.txt) und beim nächsten Start von FHEM wieder in den Cache geladen und genutzt.

      • reverse-search-text-file <Dateipfad>
      • Lädt eine nutzereigene Textdatei welche eine eigene Namenszuordnungen für Rufnummern enthält. Diese Datei enthält zeilenweise komma-separierte Werte nach folgendem Schema:
            <Nummer1>,<Name1>
            <Nummer2>,<Name2>
            ...
            <NummerN>,<NameN>
            
        Die Datei kann dabei auch Kommentar-Zeilen enthalten mit # vorangestellt. Sollte die Datei nicht existieren, wird sie durch FHEM erstellt.

      • reverse-search-phonebook-file <Dateipfad>
      • Mit diesem Attribut kann man optional den Pfad zu einer Datei angeben, welche ein Telefonbuch im FritzBox-Format (XML-Struktur) enthält. Dadurch ist es möglich ein FritzBox-Telefonbuch zu verwenden, ohne das FHEM auf einer FritzBox laufen muss. Sofern FHEM auf einer FritzBox läuft (und nichts abweichendes angegeben wurde), wird das interne File /var/flash/phonebook verwendet. Alternativ kann man das Telefonbuch in der FritzBox-Weboberfläche exportieren und dieses verwenden

        Standardwert ist /var/flash/phonebook (entspricht dem Pfad auf einer FritzBox)

      • remove-leading-zero 0,1
      • 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 0,1
      • Wenn dieses Attribut aktiviert ist, wird für jedes Gespräch eine eineindeutige Identifizierungsnummer verwendet. Dadurch lassen sich auch bereits beendete Gespräche voneinander unterscheiden. Dies ist z.B. notwendig bei der Verarbeitung der Events durch eine Datenbank.

        Mögliche Werte: 0 => deaktiviert , 1 => aktiviert
        Standardwert ist 0 (deaktiviert)

      • local-area-code <Ortsvorwahl>
      • Verwendet die gesetze Vorwahlnummer bei Rückwärtssuchen von Ortsgesprächen (z.B. 0228 für Bonn)

      • country-code <Landesvorwahl>
      • Die Landesvorwahl wird benötigt um Telefonbucheinträge mit lokaler Landesvorwahl als Inlands-Rufnummern, als auch um Call-By-Call-Vorwahlen richtig zu erkennen (z.B. 0049 für Deutschland, 0043 für Österreich oder 001 für USA).

        Standardwert ist 0049 (Deutschland)

      • fritzbox-remote-phonebook 0,1
      • Wenn dieses Attribut aktiviert ist, wird das FritzBox Telefonbuch direkt von der FritzBox gelesen. Dazu ist das FritzBox Passwort und je nach FritzBox Konfiguration auch ein Username notwendig, der in den entsprechenden Attributen konfiguriert sein muss.

        Mögliche Werte: 0 => deaktiviert , 1 => aktiviert
        Standardwert ist 0 (deaktiviert)

      • fritzbox-remote-phonebook-via tr064,web,telnet
      • Setzt die Methode mit der das Telefonbuch von der FritzBox abgefragt werden soll. Bei der Methode "web", werden alle verfügbaren Telefonbücher (lokales sowie alle konfigurierten Online-Telefonbücher) über die Web-Oberfläche eingelesen. Bei der Methode "telnet" wird eine Telnet-Verbindung zur FritzBox aufgebaut um das lokale Telefonbuch abzufragen (keine Online-Telefonbücher). Dazu muss die Telnet-Funktion aktiviert sein (Telefon Kurzwahl: #96*7*). Bei der Methode "tr064" werden alle verfügbaren Telefonbücher über die TR-064 SOAP Schnittstelle ausgelesen.

        Mögliche Werte: tr064,web,telnet
        Standardwert ist "tr064" (Abfrage aller verfügbaren Telefonbücher über die TR-064-Schnittstelle)

      • fritzbox-remote-phonebook-exclude <Liste>
      • Eine komma-separierte Liste von Telefonbuch-ID's oder Namen welche beim einlesen übersprungen werden sollen. Dieses Attribut greift nur beim einlesen der Telefonbücher via "web"- oder "tr064"-Methode (siehe Attribut fritzbox-remote-phonebook-via). Eine Liste aller möglichen Werte kann über das Get-Kommando showPhonebookIds angezeigt werden.

        Standardmäßig ist diese Funktion deaktiviert (alle Telefonbücher werden eingelesen)

      • fritzbox-user <Username>
      • Der Username für das Telnet-Interface, sofern das Telefonbuch direkt von der FritzBox geladen werden soll (siehe Attribut: fritzbox-remote-phonebook). Dieses Attribut ist nur notwendig, wenn mehrere Benutzer auf der FritzBox konfiguriert sind.


      Generierte Events:

      • event (call|ring|connect|disconnect) - Welches Event wurde genau ausgelöst. ("call" => ausgehender Rufversuch, "ring" => eingehender Rufversuch, "connect" => Gespräch ist zustande gekommen, "disconnect" => es wurde aufgelegt)
      • direction (incoming|outgoing) - Die Anruf-Richtung ("incoming" => eingehender Anruf, "outgoing" => ausgehender Anruf)
      • external_number - Die Rufnummer des Gegenübers, welcher anruft (event: ring) oder angerufen wird (event: call)
      • external_name - Das Ergebniss der Rückwärtssuche (sofern aktiviert). Im Fehlerfall kann diese Reading auch den Inhalt "unknown" (keinen Eintrag gefunden) enthalten. Im Falle einer Zeitüberschreitung bei der Rückwärtssuche und aktiviertem Caching, wird die Rufnummer beim nächsten Mal erneut gesucht.
      • internal_number - Die interne Rufnummer (Festnetz, VoIP-Nummer, ...) auf welcher man angerufen wird (event: ring) oder die man gerade nutzt um jemanden anzurufen (event: call)
      • internal_connection - Der interne Anschluss an der Fritz!Box welcher genutzt wird um das Gespräch durchzuführen (FON1, FON2, ISDN, DECT, ...)
      • external_connection - Der externe Anschluss welcher genutzt wird um das Gespräch durchzuführen ("POTS" => analoges Festnetz, "SIPx" => VoIP Nummer, "ISDN", "GSM" => Mobilfunk via GSM/UMTS-Stick)
      • call_duration - Die Gesprächsdauer in Sekunden. Dieser Wert wird nur bei einem disconnect-Event erzeugt. Ist der Wert 0, so wurde das Gespräch von niemandem angenommen.
      • call_id - Die Identifizierungsnummer eines einzelnen Gesprächs. Dient der Zuordnung bei zwei oder mehr parallelen Gesprächen, damit alle Events eindeutig einem Gespräch zugeordnet werden können
      • missed_call - Dieses Event wird nur generiert, wenn ein eingehender Anruf nicht beantwortet wird. Sofern der Name dazu bekannt ist, wird dieser ebenfalls mit angezeigt.

      Rechtlicher Hinweis:

      • klicktel.de reverse search ist powered by telegate MEDIA

    FHEM2FHEM

      FHEM2FHEM ist ein Hilfsmodul, um mehrere FHEM-Installationen zu verbinden.

      Define
        define <name> FHEM2FHEM <host>[:<portnr>][:SSL] [LOG:regexp|RAW:devicename] {portpassword}

        Zum remote (entfernten) FHEM auf Rechner <host> verbinden. <portnr> ist der telnetPort des remote FHEM, Standardport ist 7072. Der Zusatz :SSL wird benötigt, wenn das remote FHEM SSL-Verschlüsselung voraussetzt. Auch auf dem lokalen Host muss dann das Perl-Modul IO::Socket::SSL installiert sein.
        Anmerkung: Wenn das remote FHEM auf einem eigenen Host läuft, muss "telnetPort" des remote FHEM als global festgelegt sein.
        Der nächste Parameter spezifiziert den Verbindungs-Typ:
        • LOG
          Bei Verwendung dieses Verbindungstyps werden alle Ereignisse (Events) der remote FHEM-Installation empfangen. Die Ereignisse sehen aus wie die, die nach inform on Befehl erzeugt werden. Sie können wie lokale Ereignisse durch FileLog oder notify genutzt werden und mit einem regulären Ausdruck gefiltert werden. Die Syntax dafür ist unter der notify-Definition beschrieben.
          Einschränkungen: die Geräte der remote Installation werden nicht lokal angelegt und können weder mit list angezeigt noch lokal angesprochen werden. Auf beiden FHEM-Installationen können Geräte gleichen Namens angelegt werden, aber wenn beide dasselbe Ereignis empfangen (z.B. wenn an beiden Installationen CULs angeschlossen sind), werden alle FileLogs und notifys doppelt ausgelöst.
          Falls man lokal Geräte mit dem gleichen Namen (z.Bsp. als dummy) angelegt hat, dann werden die Readings von dem lokalen Gerät aktualisiert.
        • RAW
          Bei diesem Verbindungstyp werden unaufbereitete Ereignisse (raw messages) des remote FHEM-Geräts devicename genau so empfangen, als wäre das Gerät lokal verbunden.
          Einschränkungen: nur Geräte, welche die "Dispatch-Funktion" unterstützen (CUL, FHZ, CM11, SISPM, RFXCOM, TCM, TRX, TUL) erzeugen raw messages, und für jedes entfernte Gerät muss ein eigenes FHEM2FHEM Objekt erzeugt werden.
          devicename muss mit demselben Namen und Typ wie das Remote Devive angelegt sein, aber als Dummy, d.h. als device-node "none". Zusätzlich müssen alle notwendigen Attribute lokal gesetzt sein (z.B. rfmode, wenn die remote CUL im HomeMatic-Modus läuft). Die Verwendung bereits bestehender lokaler Geräte ist zu vermeiden, weil sonst die Duplikatsfilterung nicht richtig funktioniert (siehe dupTimeout).
        Der letzte Parameter enthält das Passwort des Remote-Servers, wenn dort eines aktiviert ist portpassword.
        Beispiele:
          define ds1 FHEM2FHEM 192.168.178.22:7072 LOG:.*

          define RpiCUL CUL none 0000
          define ds2 FHEM2FHEM 192.168.178.22:7072 RAW:RpiCUL
          und auf dem RPi (192.168.178.22):
          rename CUL_0 RpiCUL

      Set
      • reopen
        Öffnet die Verbindung erneut.
      Get
        N/A

      Attribute
      • dummy
      • disable
      • disabledForIntervals
      • eventOnly
        falls gesetzt, werden nur die Events generiert, und es wird kein Reading aktualisiert. Ist nur im LOG-Mode aktiv.
      • excludeEvents <regexp> die auf das <regexp> zutreffende Events werden nicht bereitgestellt.

    FHEMWEB

      FHEMWEB ist das default WEB-Frontend, es implementiert auch einen einfachen Webserver (optional mit Basic-Auth und HTTPS).

      Define
        define <name> FHEMWEB <tcp-portnr> [global]

        Aktiviert das Webfrontend auf dem Port <tcp-portnr>. Mit dem Parameter global werden Anfragen von allen Netzwerkschnittstellen akzeptiert (nicht nur vom localhost / 127.0.0.1) .
        Informationen für den Betrieb mit IPv6 finden Sie hier.

      Set
      • rereadicons
        Damit wird die Liste der Icons neu eingelesen, für den Fall, dass Sie Icons löschen oder hinzufügen.
      • clearSvgCache
        Im Verzeichnis www/SVGcache werden SVG Daten zwischengespeichert, wenn das Attribut SVGcache gesetzt ist. Mit diesem Befehl leeren Sie diesen Zwischenspeicher.

      Get
      • icon <logical icon>
        Liefert den absoluten Pfad des (logischen) Icons zurück. Beispiel:
          get myFHEMWEB icon FS20.on
          /data/Homeautomation/fhem/FHEM/FS20.on.png
      • pathlist
        Zeigt diejenigen Verzeichnisse an, in welchen die verschiedenen Dateien für FHEMWEB liegen.


      Attribute
      • addStateEvent

      • alias_<RoomName>
        Falls man das Attribut alias_<RoomName> definiert, und dieses Attribut für ein Gerät setzt, dann wird dieser Wert bei Anzeige von <RoomName> verwendet.
        Achtung: man kann im userattr auch alias_.* verwenden um alle möglichen Räume abzudecken, in diesem Fall wird aber die Attributauswahl in der Detailansicht für alias_.* nicht funktionieren.

      • allowfrom

      • allowedCommands, basicAuth, basicAuthMsg
        Diese Attribute müssen ab sofort bei dem passenden allowed Gerät angelegt werden, und sind für eine FHEMWEB Instanz unerwünscht.

      • closeConn
        Falls gesetzt, wird pro TCP Verbindung nur ein HTTP Request durchgeführt. Für iOS9 WebApp startups scheint es zu helfen.

      • cmdIcon
        Leerzeichen getrennte Auflistung von cmd:iconName Paaren. Falls gesetzt, wird das webCmd text durch den icon gesetzt. Am einfachsten setzt man cmdIcon indem man "Extend devStateIcon" im Detail-Ansicht verwendet, und den Wert nach cmdIcon kopiert.
        Beispiel:
          attr lamp cmdIcon on:control_centr_arrow_up off:control_centr_arrow_down

      • column
        Damit werden mehrere Spalten für einen Raum angezeigt, indem sie verschiedene Gruppen Spalten zuordnen. Beispiel:
          attr WEB column LivingRoom:FS20,notify|FHZ,notify DiningRoom:FS20|FHZ
        In diesem Beispiel werden im Raum LivingRoom die FS20 sowie die notify Gruppe in der ersten Spalte, die FHZ und das notify in der zweiten Spalte angezeigt.
        Anmerkungen: einige Elemente, wie SVG Plots und readingsGroup können nur dann Teil einer Spalte sein wenn sie in group stehen. Dieses Attribut kann man zum sortieren der Gruppen auch dann verwenden, wenn man nur eine Spalte hat. Leerzeichen im Raum- und Gruppennamen sind für dieses Attribut als %20 zu schreiben.

      • confirmDelete
        Löschaktionen weden mit einem Dialog bestätigt. Falls dieses Attribut auf 0 gesetzt ist, entfällt das.

      • confirmJSError
        JavaScript Fehler werden per Voreinstellung in einem Dialog gemeldet. Durch setzen dieses Attributes auf 0 werden solche Fehler nicht gemeldet.

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

      • csrfToken
        Falls gesetzt, wird der Wert des Attributes als fwcsrf Parameter bei jedem über FHEMWEB abgesetzten Kommando verlangt, es dient zum Schutz von Cross Site Resource Forgery Angriffen. Falls der Wert random ist, dann wird ein Zufallswert beim jeden FHEMWEB Start neu generiert, falls er none ist, dann wird kein Parameter verlangt. Default ist random für featurelevel 5.8 und größer, und none für featurelevel kleiner 5.8

      • CssFiles
        Leerzeichen getrennte Liste von .css Dateien, die geladen werden. Die Dateinamen sind relativ zum www Verzeichnis anzugeben. Beispiel:
          attr WEB CssFiles pgm2/mystyle.css

      • defaultRoom
        Zeigt den angegebenen Raum an falls kein Raum explizit ausgewählt wurde. Achtung: falls gesetzt, wird motd nicht mehr angezeigt. Beispiel:
        attr WEB defaultRoom Zentrale

      • devStateIcon
        Erste Variante:
          Leerzeichen getrennte Auflistung von regexp:icon-name:cmd Dreierpärchen, icon-name und cmd dürfen leer sein.
          Wenn der Zustand des Gerätes mit der regexp übereinstimmt, wird als icon-name das entsprechende Status Icon angezeigt, und (falls definiert), löst ein Klick auf das Icon das entsprechende cmd aus. Wenn fhem icon-name nicht finden kann, wird der Status als Text angezeigt. Beispiel:
            attr lamp devStateIcon on:closed off:open
            attr lamp devStateIcon on::A0 off::AI
            attr lamp devStateIcon .*:noIcon
          Anmerkung: Wenn das Icon ein SVG Bild ist, kann das @colorname Suffix verwendet werden um das Icon einzufärben. Z.B.:
            attr Fax devStateIcon on:control_building_empty@red off:control_building_filled:278727
          Falls cmd noFhemwebLink ist, dann wird kein HTML-Link generiert, d.h. es passiert nichts, wenn man auf das Icon/Text klickt.
        Zweite Variante:
          Perl regexp eingeschlossen in {}. Wenn der Code undef zurückliefert, wird das Standard Icon verwendet; wird ein String in <> zurück geliefert, wird dieser als HTML String interpretiert. Andernfalls wird der String als devStateIcon gemäß der ersten Variante interpretiert, siehe oben. Beispiel:
          {'<div style="width:32px;height:32px;background-color:green"></div>'}

      • devStateStyle
        Für ein best. Gerät einen best. HTML-Style benutzen. Beispiel:
          attr sensor devStateStyle style="text-align:left;;font-weight:bold;;"

      • deviceOverview
        Gibt an ob die Darstellung aus der Raum-Ansicht (Zeile mit Gerüteicon, Stateicon und webCmds/cmdIcons) auch in der Detail-Ansicht angezeigt werden soll. Kann auf always, onClick, iconOnly oder never gesetzt werden. Der Default ist always.

      • editConfig
        Falls dieses FHEMWEB Attribut (auf 1) gesetzt ist, dann kann man die FHEM Konfigurationsdatei in dem "Edit files" Abschnitt bearbeiten. Beim Speichern dieser Datei wird automatisch rereadcfg ausgefuehrt, was diverse Nebeneffekte hat.

      • editFileList
        Definiert die Liste der angezeigten Dateien in der "Edit Files" Abschnitt. Es ist eine Newline getrennte Liste von Tripeln bestehend aus Titel, Verzeichnis für die Suche, und Regexp. Die Voreinstellung ist:
          Own modules and helper files:$MW_dir:^(.*sh|[0-9][0-9].*Util.*pm|.*cfg|.*holiday|myUtilsTemplate.pm|.*layout)$
          Gplot files:$FW_gplotdir:^.*gplot$
          Styles:$FW_cssdir:^.*(css|svg)$
        Achtung: die Verzeichnis Angabe ist nicht flexibel: alle .js/.css/_defs.svg Dateien sind in www/pgm2 ($FW_cssdir), .gplot Dateien in $FW_gplotdir (www/gplot), alles andere in $MW_dir (FHEM).

      • endPlotNow
        Wenn Sie dieses FHEMWEB Attribut auf 1 setzen, werden Tages und Stunden-Plots zur aktuellen Zeit beendet. (Ähnlich wie endPlotToday, nur eben minütlich). Ansonsten wird der gesamte Tag oder eine 6 Stunden Periode (0, 6, 12, 18 Stunde) gezeigt. Dieses Attribut wird nicht verwendet, wenn das SVG Attribut startDate benutzt wird.

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

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

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

      • hiddenroom
        Eine Komma getrennte Liste, um Räume zu verstecken, d.h. nicht anzuzeigen. Besondere Werte sind input, detail und save. In diesem Fall werden diverse Eingabefelder ausgeblendent. Durch direktes Aufrufen der URL sind diese Räume weiterhin erreichbar!
        Ebenso können Einträge in den Logfile/Commandref/etc Block versteckt werden.

      • HTTPS
        Ermöglicht HTTPS Verbindungen. Es werden die Perl Module IO::Socket::SSL benötigt, installierbar mit cpan -i IO::Socket::SSL oder apt-get install libio-socket-ssl-perl; (OSX und die FritzBox-7390 haben dieses Modul schon installiert.)
        Ein lokales Zertifikat muss im Verzeichis certs erzeugt werden. Dieses Verzeichnis muss im modpath angegeben werden, also auf der gleichen Ebene wie das FHEM Verzeichnis. Beispiel:
          mkdir certs
          cd certs
          openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem

      • icon
        Damit definiert man ein Icon für die einzelnen Geräte in der Raumübersicht. Es gibt einen passenden Link in der Detailansicht um das zu vereinfachen. Um ein Bild für die Räume selbst zu definieren muss ein Icon mit dem Namen ico<Raumname>.png im iconPath existieren (oder man verwendet roomIcons, s.u.)

      • iconPath
        Durch Doppelpunkt getrennte Aufzählung der Verzeichnisse, in welchen nach Icons gesucht wird. Die Verzeichnisse müssen unter fhem/www/images angelegt sein. Standardeinstellung ist: $styleSheetPrefix:default:fhemSVG:openautomation
        Setzen Sie den Wert auf fhemSVG:openautomation um nur SVG Bilder zu benutzen.

      • JavaScripts
        Leerzeichen getrennte Liste von JavaScript Dateien, die geladen werden. Die Dateinamen sind relativ zum www Verzeichnis anzugeben. Für jede Datei wird ein zusätzliches Attribut angelegt, damit der Benutzer dem Skript Parameter weiterreichen kann. Bei diesem Attributnamen werden Verzeichnisname und fhem_ Präfix entfernt und Param als Suffix hinzugefügt. Beispiel:
          attr WEB JavaScripts codemirror/fhem_codemirror.js
          attr WEB codemirrorParam { "theme":"blackboard", "lineNumbers":true }
        Falls der Dateiname mit - anfängt, dann wird diese sonst aus www/pgm2 automatisch geladene Datei nicht geladen. (z.Bsp.: -fhemweb_fbcalllist.js)

      • longpoll
        Dies betrifft die Aktualisierung der Gerätestati in der Weboberfläche. Ist longpoll aktiviert, werden Statusänderungen sofort im Browser dargestellt. ohne die Seite manuell neu laden zu müssen. Standard ist aktiviert.

      • longpollSVG
        Lädt SVG Instanzen erneut, falls ein Ereignis dessen Inhalt ändert. Funktioniert nur, falls die dazugehörige Definition der Quelle in der .gplot Datei folgenden Form hat: deviceName.Event bzw. deviceName.*. Wenn man den Plot Editor benutzt, ist das übrigens immer der Fall. Die SVG Datei wird bei jedem auslösenden Event dieses Gerätes neu geladen. Die Voreinstellung ist aus.

      • mainInputLength
        Länge des maininput Eingabefeldes (Anzahl der Buchstaben, Ganzzahl).

      • menuEntries
        Komma getrennte Liste; diese Links werden im linken Menü angezeigt. Beispiel:
        attr WEB menuEntries fhem.de,http://fhem.de,culfw.de,http://culfw.de
        attr WEB menuEntries AlarmOn,http://fhemhost:8083/fhem?cmd=set%20alarm%20on

      • nameDisplay
        Das Argument ist Perl-Code, was für jedes Gerät in der Raum-Übersicht ausgeführt wird, um den angezeigten Namen zu berechnen. Dabei kann man die Variable $DEVICE für den aktuellen Gerätenamen, und $ALIAS für den aktuellen alias bzw. Name, falls alias nicht gesetzt ist, verwenden. Z.Bsp. für eine FHEMWEB Instanz mit ungarischer Anzeige fügt man ein global userattr alias_hu hinzu, und man setzt nameDisplay für diese FHEMWEB Instanz auf dem Wert:
          AttrVal($DEVICE, "alias_hu", $ALIAS)

      • nrAxis
        (bei mehrfach-Y-Achsen im SVG-Plot) Die Darstellung der Y Achsen benötigt Platz. Hierdurch geben Sie an wie viele Achsen Sie links,rechts [useLeft,useRight] benötigen. Default ist 1,1 (also 1 Achse links, 1 Achse rechts).

      • ploteditor
        Gibt an ob der Plot Editor in der SVG detail ansicht angezeigt werden soll. Kann auf always, onClick oder never gesetzt werden. Der Default ist always.

      • plotEmbed 0
        SVG Grafiken werden als Teil der <embed> Tags dargestellt, da früher das der einzige Weg war SVG darzustellen, weiterhin erlaubt es das parallele Berechnen via plotfork (s.o.) Falls plotEmbed auf 0 gesetzt wird, dann werden die SVG Grafiken als Teil der HTML-Seite generiert, was leider das plotfork Attribut wirkungslos macht.

      • plotfork
        Normalerweise wird die Ploterstellung im Hauptprozess ausgeführt, FHEM wird wärend dieser Zeit nicht auf andere Ereignisse reagieren. Falls dieses Attribut auf einen nicht 0 Wert gesetzt ist, dann wird die Berechnung in weitere Prozesse ausgelagert. Das kann die Berechnung auf Rechnern mit mehreren Prozessoren beschleunigen, allerdings kann es auf Rechnern mit wenig Speicher (z.Bsp. FRITZ!Box 7390) zum automatischen Abschuss des FHEM Prozesses durch das OS führen.

      • plotmode
        Spezifiziert, wie Plots erzeugt werden sollen:
        • SVG
          Die Plots werden mit Hilfe des SVG Moduls als SVG Grafik gerendert. Das ist die Standardeinstellung.
        • gnuplot-scroll
          Die plots werden mit dem Programm gnuplot erstellt. Das output terminal ist PNG. Der einfache Zugriff auf historische Daten ist möglich (analog SVG).
        • gnuplot-scroll-svg
          Wie gnuplot-scroll, aber als output terminal wird SVG angenommen.

      • plotsize
        gibt die Standardbildgröße aller erzeugten Plots an als Breite,Höhe an. Um einem individuellen Plot die Größe zu ändern muss dieses Attribut bei der entsprechenden SVG Instanz gesetzt werden. Default sind 800,160 für Desktop und 480,160 für Smallscreen

      • plotWeekStartDay
        Starte das Plot in der Wochen-Ansicht mit diesem Tag. 0 ist Sonntag, 1 ist Montag, usw.

      • redirectCmds
        Damit wird das URL Eingabefeld des Browser nach einem Befehl geleert. Standard ist eingeschaltet (1), ausschalten kann man es durch setzen des Attributs auf 0, z.Bsp. um den Syntax der Kommunikation mit FHEMWEB zu untersuchen.

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

      • reverseLogs
        Damit wird das Logfile umsortiert, die neuesten Einträge stehen oben. Der Vorteil ist, dass man nicht runterscrollen muss um den neuesten Eintrag zu sehen, der Nachteil dass FHEM damit deutlich mehr Hauptspeicher benötigt, etwa 6 mal so viel, wie das Logfile auf dem Datenträger groß ist. Das kann auf Systemen mit wenig Speicher (FRITZ!Box) zum Terminieren des FHEM Prozesses durch das Betriebssystem führen.

      • roomIcons
        Leerzeichen getrennte Liste von room:icon Zuordnungen Der erste Teil wird als regexp interpretiert, daher muss ein Leerzeichen als Punkt geschrieben werden. Beispiel:
        attr WEB roomIcons Anlagen.EDV:icoEverything

      • sortby
        Der Wert dieses Attributs wird zum sortieren von Geräten in Räumen verwendet, sonst wäre es der Alias oder, wenn keiner da ist, der Gerätename selbst. Falls der Wert des sortby Attributes in {} eingeschlossen ist, dann wird er als ein perl Ausdruck evaluiert. $NAME wird auf dem Gerätenamen gesetzt.

      • showUsedFiles
        Zeige nur die verwendeten Dateien in der "Edit files" Abschnitt. Achtung: aktuell ist das nur für den "Gplot files" Abschnitt implementiert.

      • sortRooms
        Durch Leerzeichen getrennte Liste von Räumen, um deren Reihenfolge zu definieren. Da die Räume in diesem Attribut als Regexp interpretiert werden, sind Leerzeichen im Raumnamen als Punkt (.) zu hinterlegen. Beispiel:
        attr WEB sortRooms DG OG EG Keller

      • smallscreenCommands
        Falls auf 1 gesetzt werden Kommandos, Slider und Dropdown Menüs im Smallscreen Landscape Modus angezeigt.

      • sslVersion
        Siehe das global Attribut sslVersion.

      • stylesheetPrefix
        Präfix für die Dateien style.css, svg_style.css und svg_defs.svg. Wenn die Datei mit dem Präfix fehlt, wird die Default Datei (ohne Präfix) verwendet. Diese Dateien müssen im FHEM Ordner liegen und können direkt mit "Select style" im FHEMWEB Menüeintrag ausgewählt werden. Beispiel:
          attr WEB stylesheetPrefix dark

          Referenzdateien:
            darksvg_defs.svg
            darksvg_style.css
            darkstyle.css

        Anmerkung:Wenn der Parametername smallscreen oder touchpad enthält, wird FHEMWEB das Layout/den Zugriff für entsprechende Geräte (Smartphones oder Touchpads) optimieren
        Standardmäßig werden 3 FHEMWEB Instanzen aktiviert: Port 8083 für Desktop Browser, Port 8084 für Smallscreen, und 8085 für Touchpad.
        Wenn touchpad oder smallscreen benutzt werden, wird WebApp support aktiviert: Nachdem Sie eine Seite am iPhone oder iPad mit Safari angesehen haben, können Sie einen Link auf den Homescreen anlegen um die Seite im Fullscreen Modus zu sehen. Links werden in diesem Modus anders gerendert, um ein "Zurückfallen" in den "normalen" Browser zu verhindern.

      • SVGcache
        Plots die sich nicht mehr ändern, werden im SVGCache Verzeichnis (www/SVGcache) gespeichert, um die erneute, rechenintensive Berechnung der Grafiken zu vermeiden. Default ist 0, d.h. aus.
        Siehe den clearSvgCache Befehl um diese Daten zu löschen.

      • title
        Setzt den Titel der Seite. Falls in {} eingeschlossen, dann wird es als Perl Ausdruck evaluiert.

      • viewport
        Setzt das "viewport" Attribut im HTML Header. Das kann benutzt werden um z.B. die Breite fest vorzugeben oder Zoomen zu verhindern.
        Beispiel: attr WEB viewport width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no

      • webCmd
        Durch Doppelpunkte getrennte Auflistung von Befehlen, die für ein bestimmtes Gerät gelten sollen. Funktioniert nicht mit smallscreen, ein Ersatz dafür ist der devStateIcon Befehl.
        Beispiel:
          attr lamp webCmd on:off:on-for-timer 10

        Der erste angegebene Befehl wird in der "set device ?" list nachgeschlagen (Siehe das setList Attrib für Dummy Geräte). Wenn dort bekannte Modifier sind, wird ein anderes Widget angezeigt. Siehe auch widgetOverride.
        Wenn der Befehl state ist, wird der Wert als Kommando interpretiert.
        Beispiele:
          define d1 dummy
          attr d1 webCmd state
          attr d1 setList state:on,off
          define d2 dummy
          attr d2 webCmd state
          attr d2 setList state:slider,0,1,10
          define d3 dummy
          attr d3 webCmd state
          attr d3 setList state:time
        Anmerkung: dies ist ein Attribut für das anzuzeigende Gerät, nicht für die FHEMWEBInstanz.

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

      • widgetOverride
        Leerzeichen separierte Liste von Name/Modifier Paaren, mit dem man den vom Modulautor für einen bestimmten Parameter (Set/Get/Attribut) vorgesehene Widgets ändern kann.
        • Ist der Modifier ":noArg", wird kein weiteres Eingabefeld angezeigt.
        • Ist der Modifier ":time", wird ein in Javaskript geschreibenes Zeitauswahlmenü angezeigt.
        • Ist der Modifier ":textField", wird ein Eingabefeld angezeigt.
        • Ist der Modified ":textField-long" ist wie textField, aber beim Click im Eingabefeld ein Dialog mit einer HTML textarea (60x25) wird geöffnet.
        • Ist der Modifier in der Form ":slider,<min>,<step>,<max>[,1]", so wird ein in JavaScript programmierter Slider angezeigt. Das optionale 1 (isFloat) vermeidet eine Rundung der Fliesskommazahlen
        • Ist der Modifier ":multiple,val1,val2,...", dann ist eine Mehrfachauswahl möglich und es können neue Werte gesetzt werden. Das Ergebnis ist Komma-separiert.
        • Ist der Modifier ":multiple-strict,val1,val2,...", dann ist eine Mehrfachauswahl möglich, es können jedoch keine neuen Werte definiert werden. Das Ergebnis ist Komma-separiert.
        • Ist der Modifier ":knob,min:1,max:100,...", dass ein jQuery knob Widget wird angezeigt. Die Parameter werden als eine Komma separierte Liste von Key:Value Paaren spezifiziert, wobei das data- Präfix entfällt.
        • Ist der Modifier ":sortable,val1,val2,...", dann ist es möglich aus den gegebenen Werten eine Liste der gewünschten Werte durch Drag & Drop zusammenzustellen. Die Reihenfolge der Werte kann dabei entsprechend geändert werden. Es müssen keine Werte explizit vorgegeben werden, das Widget kann auch ohne vorgegebenen Werte benutzt werden. Es können eigene Werte zur Liste hinzugefügt und einsortiert werden. Das Ergebnis ist Komma-separiert entsprechend aufsteigend sortiert.
        • Ist der Modifier ":sortable-strict,val1,val2,...", dann ist es möglich aus den gegebenen Werten eine Liste der gewünschten Werte durch Drag & Drop zusammenzustellen. Die Reihenfolge der Werte kann dabei entsprechend geändert werden. Es können jedoch keine eigenen Werte zur Liste hinzugefügt werden. Das Ergebnis ist Komma-separiert entsprechend aufsteigend sortiert.
        • Ist der Modifier ":sortable-given,val1,val2,...", dann ist es möglich aus den gegebenen Werten eine sortierte Liste der gewünschten Werte durch Drag & Drop zusammenzustellen. Es können keine Elemente gelöscht und hinzugefügt werden. Es müssen alle gegeben Werte benutzt und entsprechend sortiert sein. Das Ergebnis ist Komma-separiert entsprechend aufsteigend sortiert.
        • Ist der Modifier ":uzsuToggle,zust1,zust2", dann ist es mögliche mit einem Toggle-Button zwischen zwei Zuständen zu wählen. Der Erste ist der aktive Zustand.
        • Ist der Modifier ":uzsuSelect,val1,val2,...", dann ist es mögliche in einer Buttonleiste meherere Werte auszuwählen. Das Ergebnis ist Komma-separiert.
        • Ist der Modifier ":uzsuSelectRadio,val1,val2,...", dann ist es mögliche in einer Buttonleiste einen aus meherere Werten auszuwählen.
        • Ist der Modifier ":uzsuDropDown,val1,val2,...", dann ist es mögliche mit einem DropDown Menü einen der Werte auszuwählen.
        • Ist der Modifier ":uzsuTimerEntry[,modifier2]", werden je ein uzsuSelect, uzsuDropDown und uzsuToggle Widget kombiniert um einen Schaltzeitpunkt auszuwählen. Über den optionalen modifier2 kann ein Widget zur Auswahl des Schaltwertes angegeben werden. Siehe Beispiele unten. Das Ergebniss is eine komma-separiert Liste von Wochentagen gefolgt vom Zeitpunkt, eine Aktiv-Indikator und dem Schaltwert, jeweils durch | abetrennt. Zum Beispiel: Mo,Di,Sa,So|00:00|enabled|19.5
        • Ist der Modifier ":uzsu[,modifier2]", werden mehere uzsuTimerEntry Widets kombiniert um eine beliebige Anzahl an Schaltzeiten einzugeben. Über den optionalen modifier2 kann ein Widget zur Auswahl des Schaltwertes angegeben werden. Siehe Beispiele unten. Das Ergebiss ist eine durch leerzeichen getrennte Liste von uzsuTimerEntry Ergebnissen.
        • In allen anderen Fällen (oder falls der Modifier explizit mit :select anfaegt) erscheint ein HTML select mit allen Modifier Werten.
        Falls das Attribut für eine WEB Instanz gesetzt wurde, dann wird es bei allen von diesem Web-Instan angezeigten Geräten angewendet. Beispiele:
          attr FS20dev widgetOverride on-till:time
          attr WEB widgetOverride room:textField
          attr dimmer widgetOverride dim:knob,min:1,max:100,step:1,linecap:round

          attr myToggle widgetOverride state:uzsuToggle,123,xyz
          attr mySelect widgetOverride state:uzsuSelect,abc,123,456,xyz
          attr myTemp widgetOverride state:uzsuDropDown,18,18.5,19,19.5,20,20.5,21,21.5,22,22.5,23
          attr myTimerEntry widgetOverride state:uzsuTimerEntry
          attr myTimer widgetOverride state:uzsu

          Im Folgenden wird die Verwendung des modifier2 parameters von uzsuTimerEntry und uzsu gezeigt um die Auswahl des Schaltzeitpunktes mit der Auswahl des Schaltwertes zu kombinieren:
          ... widgetOverride state:uzsu,slider,0,5,100                                         -> ein slider
          ... widgetOverride state:uzsu,uzsuToggle,off,on                                      -> ein on/off button
          ... widgetOverride state:uzsu,uzsuDropDown,18,19,20,21,22,23                         -> ein dropDownMenue
          ... widgetOverride state:uzsu,knob,min:18,max:24,step:0.5,linecap:round,fgColor:red  -> ein knob widget
          ... widgetOverride state:uzsu,colorpicker                                            -> ein colorpicker
          ... widgetOverride state:uzsu,colorpicker,CT,2700,50,5000                            -> ein colortemperature slider
                    

    FHT

      Fhem kann FHT Funktelegramme (868.35 MHz) entweder mit einem FHZ oder einem CUL empfangen, daher muss dieses zuerst definiert sein.

      Define
        define <name> FHT <fhtaddress>

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

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

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


      Get
        N/A

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

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

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

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

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

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

      Define
        define <name> FLOORPLAN

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

        Beispiel:
          define Grundriss FLOORPLAN
          fp_Grundriss.png


      Set
      • N/A

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

      Attribute
      • userattr fp_<name> <top>,<left>[,<style>[,<description>]]

        A userattr fp_<name> wird automatisch angelegt, sofern es noch nicht existiert.
        • top = Bildschirmposition, pixel vom oberen Bildschirmrand
        • left = Bildschirmposition, pixel vom linken Bildschirmrand
        • style =
          • 0 nur icon/Status
          • 1 Gerätename und icon/Status
          • 2 Gerätename, icon/Status und Kommandos
          • 3 Geräte-reading und optionale Beschreibung
          • 4 S300TH-spezifisch, zeigt Temperatur und Luftfeuchtigkeit an
          • 5 icon/Status und Kommandos (ohne Gerätename)
          • 6 Geräte-reading, Zeitstempel und optionale Beschreibung
          • 7 nur Kommandos
          • 8 popup für kommandos
        • Eine ggf. angegebene Bschreibung wird anstelle des original-Gerätenamens angezeigt.

      • Beispiele:
          attr lamp1 fp_Erdgeschoss 100,100#display lamp1 with icon only at screenposition 100,100
          attr lamp2 fp_Erdgeschoss 100,140,1,Art-Deco#display lamp2 with description 'Art-Deco-Light' at 100,140
          attr lamp2 fp_ErsteEtage 130,100,1#display the same device at different positions on other floorplans
          attr myFHT fp_Erdgeschoss 300,20,10,Temperature#display given Text + FHT-temperature
        Hinweis: Die Parameter müssen ohne Leerstellen aneinandergereiht werden.

      • fp_arrange
        Aktiviert den "arrange-Modus" der ein zusätzliches Menü anzeigt, mit dem Geräte auf dem Bildschirm angeordnet werden können. Bei aktiviertem arrange-mode können alle devices per drag&drop platziert werden.
        Beispiel:
          attr Erdgeschoss fp_arrange 1
          attr Erdgeschoss fp_arrange WEB #Aktiviert den arrange-Modus nur für die Webinstanz WEB

      • stylesheet
        Ermöglicht die Verwendung eines eigenen css-stylesheet für Ihren floorplan. Dieses Attribut hat Vorrang vor dem Standard-stylesheet. Das Standard-stylesheet für floorplans ist floorplanstyle.css. Falls stylesheetPrefix in der korrespondierenden FHEMWEB-Instanz gesetzt ist, wird dieser stylesheetPrefix auch dem stylesheet für floorplans vorangestellt (prepend).
        Alle stylesheets werden im stylesheet-Ordner des fhem-Dateisystems abgelegt. Legen Sie dort Ihr eigenes stylesheet neben floorplanstyle.css in demselben Ordner ab.
        Beispiel:
          attr Erdgeschoss stylesheet myfloorplanstyle.css

      • fp_default
        Der floorplan-Startbildschirm wird übersprungen wenn dieses Attribut einem der von Ihnen definierten floorplans zugeordnet ist.
      • Beispiel:
          attr Erdgeschoss fp_default 1

      • fp_noMenu
        Blendet das floorplans-Menü aus, das normalerweise am linken Bildschirmrand angezeigt wird.
      • Beispiel:
          attr Erdgeschoss fp_noMenu 1

      • commandfield
        Fügt Ihrem floorplan ein fhem-Kommandofeld hinzu.
      • Beispiel:
          attr Erdgeschoss commandfield 1

      • fp_backgroundimg
        Gestattet die Bennung eine Hintergundbilds unabhängig vom floorplan-Namen.
        Hinweis: Das Attribut kann mittels notify geändert werden, um z.B. unterschiedliche Hintergundbidlder am Tag oder in der Nacht anzuzeigen.
        Beispiel:
          attr Erdgeschoss fp_backgroundimg foobar.png

      • fp_viewport
        Gestattet die Verwendung eines abweichenden viewport-Wertes für die touchpad-Ausgabe.
        Die Default-viewport-Angbe ist "width=768".
      • fp_roomIcons
        Mit Leerstellen getrennte Liste von floorplan:icon -Paaren, um einem Eintrag des floorplan-Menues icons zuzuordnen, genau wie die entsprechende Funktionalitaet in FHEMWEB. Beispiel:
        attr Grundriss fp_roomIcons Grundriss:control_building_empty Media:audio_eq
      • Vererbt von FHEMWEB
        Die folgenden Attribute werden von der zugrundliegenden FHEMWEB-Instanz vererbt:
          smallscreen
          touchpad
          refresh
          plotmode
          plotsize
          webname
          redirectCmds
          longpoll
          allowedCommands


    FRAMEBUFFER

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

    FRITZBOX

    (en | de)
      Steuert gewisse Funktionen eines Fritz!Box Routers. Verbundene Fritz!Fon's (MT-F, MT-D, C3, C4) können als Signalgeräte genutzt werden. MP3-Dateien und Text (Text2Speech) können als Klingelton oder einem angerufenen Telefon abgespielt werden.
      Für detailierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.

      Das Modul schaltet in den lokalen Modus, wenn FHEM auf einer Fritz!Box läuft (als root-Benutzer!). Ansonsten versucht es eine Web oder Telnet Verbindung zu "fritz.box" zu öffnen. D.h. Telnet (#96*7*) muss auf der Fritz!Box erlaubt sein. Für diesen Fernzugriff muss einmalig das Passwort gesetzt werden.

      Die Steuerung erfolgt teilweise über die offizielle TR-064-Schnittstelle und teilweise über undokumentierte Schnittstellen zwischen Webinterface und Firmware Kern. Das Modul funktioniert am besten mit dem Fritz!OS 6.24. Bei den nachfolgenden Fritz!OS Versionen hat AVM einige interne Schnittstellen (telnet, webcm) ersatzlos gestrichen. Einige Modul-Funktionen sind dadurch nicht oder nur eingeschränkt verfügbar (siehe Anmerkungen zu benötigten API).
      Bitte auch die anderen Fritz!Box-Module beachten: SYSMON und FB_CALLMONITOR.
      Das Modul nutzt das Perlmodule 'Net::Telnet', 'JSON::XS', 'LWP', 'SOAP::Lite' für den Fernzugriff.

      Define

        define <name> FRITZBOX [host]
        Das Attribut host ist die Web-Adresse (Name oder IP) der Fritz!Box. Fehlt es, so schaltet das Modul in den lokalen Modus oder nutzt die Standardadresse "fritz.box".

        Beispiel: define Fritzbox FRITZBOX

        Das FritzOS hat eine versteckte Funktion (Osterei).
        define MyEasterEgg weblink htmlCode { FRITZBOX_fritztris("Fritzbox") }

      Set

      • set <name> alarm <Nummer> [on|off] [time] [once|daily|Mo|Tu|We|Th|Fr|Sa|So]
        Schaltet den Weckruf Nummer 1, 2 oder 3 an oder aus (Standard ist on). Setzt die Zeit und den Wochentag.
        Benötigt die API: Telnet oder webcm.

      • set <name> call <number> [Dauer] [say:Text|play:MP3URL]
        Ruf für 'Dauer' Sekunden (Standard 60 s) die angegebene Telefonnummer von einem internen Telefonanschluss an (Standard ist 1 oder das Attribut 'ringWithIntern'). Wenn der Angerufene abnimmt, hört er die Wartemusik oder den angegebenen Text oder Klang. Der interne Telefonanschluss klingelt ebenfalls.
        "say:" und "play:" benötigen die API: Telnet oder webcm.

      • set <name> checkAPIs
        Startet eine erneute Abfrage der exitierenden Programmierschnittstellen der FRITZ!BOX.

      • set <name> customerRingTone <internalNumber> <MP3DateiInklusivePfad>
        Lädt die MP3-Datei als Klingelton auf das angegebene Telefon. Die Datei muss im Dateisystem der Fritzbox liegen.
        Das Hochladen dauert etwa eine Minute bis der Klingelton verfügbar ist. (API: Telnet)

      • set <name> dect <on|off>
        Schaltet die DECT-Basis der Box an oder aus.
        Benötigt die API: Telnet oder webcm.

      • set <name> diversity <number> <on|off>
        Schaltet die Rufumleitung (Nummer 1, 2 ...) für einzelne Rufnummern an oder aus.
        Die Rufumleitung muss zuvor auf der Fritz!Box eingerichtet werden. Benötigt die API: Telnet oder webcm.
        Achtung! Es lassen sich nur Rufumleitungen für einzelne angerufene Telefonnummern (also nicht "alle") und ohne Abhängigkeit von der anrufenden Nummer schalten. Es muss also ein diversity-Geräwert geben.
        Benötigt die API: Telnet, webcm oder TR064 (>=6.50).

      • set <name> guestWLAN <on|off>
        Schaltet das Gäste-WLAN an oder aus. Das Gäste-Passwort muss gesetzt sein. Wenn notwendig wird auch das normale WLAN angeschaltet.

      • set <name> moh <default|sound|customer> [<MP3DateiInklusivePfad|say:Text>]
        Beispiel: set fritzbox moh customer say:Die Wanne ist voll
        set fritzbox moh customer /var/InternerSpeicher/warnung.mp3
        Ändert die Wartemusik ('music on hold') der Box. Mit dem Parameter 'customer' kann eine eigene MP3-Datei aufgespielt werden. Alternativ kann mit "say:" auch ein Text gesprochen werden. Die Wartemusik hat immer eine Länge von 8,13 s. Sie wird kontinuierlich während des Makelns von Gesprächen aber auch bei Nutzung der internen Wählhilfe bis zum Abheben des rufenden Telefons abgespielt. Dadurch können über FHEM dem Angerufenen 8s-Nachrichten vorgespielt werden.

      • set <name> password <Passwort>
        Speichert das Passwort für den Fernzugriff über Telnet.

      • set <name> ring <intNummern> [Dauer [Klingelton]] [show:Text] [say:Text | play:Link]
        Beispiel:
        set fritzbox ring 611,612 5 Budapest show:Es regnet
        set fritzbox ring 610 8 say:Es regnet
        set fritzbox ring 610 10 play:http://raspberrypi/sound.mp3
        Lässt die internen Nummern für "Dauer" Sekunden und (auf Fritz!Fons) mit dem angegebenen "Klingelton" klingeln.
        Mehrere interne Nummern müssen durch ein Komma (ohne Leerzeichen) getrennt werden.
        Standard-Dauer ist 5 Sekunden. Es kann aber zu Verzögerungen in der Fritz!Box kommen. Standard-Klingelton ist der interne Klingelton des Gerätes. Der Klingelton wird für Rundrufe (9 oder 50) ignoriert.
        Wenn der Anruf angenommen wird, hört der Angerufene die Wartemusik (music on hold), welche ebenfalls zur Nachrichtenübermittlung genutzt werden kann.
        Die Parameter Klingelton, show:, say: und play: benötigen die API Telnet oder webcm.

        Wenn das Attribut 'ringWithIntern' existiert, wird der Text hinter 'show:' als Name des Anrufers angezeigt. Er darf maximal 30 Zeichen lang sein.

        Auf Fritz!Fons wird der Text (max. 100 Zeichen) hinter dem Parameter 'say:' direkt angesagt und ersetzt den Klingelton.
        Alternativ kann mit 'play:' auch ein MP3-Link (vom einem Webserver) abgespielt werden. Dabei wird die Internetradiostation 39 'FHEM' erzeugt und translate.google.com für Text2Speech genutzt. Es wird immer der komplette Text/Klang abgespielt. Bis zum Ende der 'Klingeldauer' klingelt das Telefon dann mit seinem Standard-Klingelton. Das Abspielen ist eventuell nicht auf mehreren Fritz!Fons gleichzeitig möglich.
        Je nach Fritz!OS kann das beschriebene Verhalten abweichen.

      • set <name> sendMail [to:<Address>] [subject:<Subject>] [body:<Text>]
        Sendet eine Email über den Emailbenachrichtigungsservice der als Push Service auf der Fritz!Box konfiguriert wurde. Mit "\n" kann einen Zeilenumbruch im Textkörper erzeut werden. Alle Parameter können ausgelassen werden. Bitte kontrolliert, dass die Email nicht im Junk-Verzeichnis landet.
        Benötigt einen Telnet Zugang zur Box.

      • set <name> startRadio <internalNumber> [Name oder Nummer]
        Startet das Internetradio auf dem angegebenen Fritz!Fon. Eine verfügbare Radiostation kann über den Namen oder die (Gerätewert)Nummer ausgewählt werden. Ansonsten wird die in der Box als Internetradio-Klingelton eingestellte Station abgespielt. (Also nicht die am Telefon ausgewählte.)

      • set <name> tam <number> <on|off>
        Schaltet den Anrufbeantworter (Nummer 1, 2 ...) an oder aus. Der Anrufbeantworter muss zuvor auf der Fritz!Box eingerichtet werden.

      • set <name> update
        Startet eine Aktualisierung der Gerätewerte.

      • set <name> wlan <on|off>
        Schaltet WLAN an oder aus.

      Get

      • get <name> ringTones
        Zeigt die Liste der Klingeltöne, die benutzt werden können.

      • get <name> shellCommand <Befehl>
        Führt den angegebenen Befehl auf der Fritz!Box-Shell aus und gibt das Ergebnis zurück. Kann benutzt werden, um Shell-Befehle auszuführen, die nicht im Modul implementiert sind.
        Muss zuvor über das Attribute "allowShellCommand" freigeschaltet werden.

      • get <name> tr064Command <service> <control> <action> [[argName1 argValue1] ...]
        Führt über TR-064 Aktionen aus (siehe Schnittstellenbeschreibung von AVM).
        argValues mit Leerzeichen müssen in Anführungszeichen eingeschlossen werden.
        Beispiel: get Fritzbox tr064Command X_AVM-DE_OnTel:1 x_contact GetDECTHandsetInfo NewDectID 1
        Muss zuvor über das Attribute "allowTR064Command" freigeschaltet werden.

      • get <name> tr064ServiceListe
        Zeigt die Liste der TR-064-Dienste und Aktionen, die auf dem Gerät erlaubt sind.

      Attributes

      • allowShellCommand <0 | 1>
        Freischalten des get-Befehls "shellCommand"

      • allowTR064Command <0 | 1>
        Freischalten des get-Befehls "tr064Command"

      • boxUser <user name>
        Benutzername für den TR064- oder einen anderen webbasierten Zugang. Normalerweise wird keine Benutzername für das Login benötigt. Wenn die Fritz!Box anders konfiguriert ist, kann der Nutzer über dieses Attribut definiert werden.

      • defaultCallerName <Text>
        Standard-Text, der auf dem angerufenen internen Telefon als "Anrufer" gezeigt wird.
        Dies erfolgt, indem während des Klingelns temporär der Name der internen anrufenden Nummer geändert wird.
        Es sind maximal 30 Zeichen erlaubt. Das Attribute "ringWithIntern" muss ebenfalls spezifiziert sein.
        Benötigt die API: Telnet oder webcmd

      • defaultUploadDir <fritzBoxPath>
        Dies ist der Standard-Pfad der für Dateinamen benutzt wird, die nicht mit einem / (Schrägstrich) beginnen.
        Es muss ein Pfad auf der Fritz!Box sein. D.h., er sollte mit /var/InternerSpeicher starten, wenn es in Windows unter \\ip-address\fritz.nas erreichbar ist.

      • forceTelnetConnection <0 | 1>
        Erzwingt den Fernzugriff über Telnet (anstatt über die WebGUI oder TR-064).
        Dieses Attribut muss bei älteren Geräten/Firmware aktiviert werden.

      • fritzBoxIP <IP-Adresse>
        Veraltet.

      • INTERVAL <Sekunden>
        Abfrage-Interval. Standard ist 300 (Sekunden). Der kleinste mögliche Wert ist 60.

      • ringWithIntern <1 | 2 | 3>
        Um ein Telefon klingeln zu lassen, muss in der Fritzbox eine Anrufer (Wählhilfe, Wert 'box_stdDialPort') spezifiziert werden.
        Um während des Klingelns eine Nachricht (Standard: "FHEM") anzuzeigen, kann hier die interne Nummer 1-3 angegeben werden. Der entsprechende analoge Telefonanschluss muss vorhanden sein.

      • telnetTimeOut <Sekunden>
        Maximale Zeit, bis zu der während einer Telnet-Sitzung auf Antwort gewartet wird. Standard ist 10 s.

      • telnetUser <user name>
        Benutzername für den Telnetzugang. Normalerweise wird keine Benutzername für das Login benötigt. Wenn die Fritz!Box anders konfiguriert ist, kann der Nutzer über dieses Attribut definiert werden.

      • useGuiHack <0 | 1>
        Falls die APIs der Box nicht mehr die Änderung des Klingeltones unterstützen (Fritz!OS >6.24), kann dieses Attribute entsprechend der WIKI-Anleitung genutzt werden.

      • readingFnAttributes

      Readings

      • alarm1 - Name des Weckrufs 1
      • alarm1_state - Aktueller Status des Weckrufs 1
      • alarm1_target - Interne Nummer des Weckrufs 1
      • alarm1_time - Weckzeit des Weckrufs 1
      • alarm1_wdays - Wochentage des Weckrufs 1

      • box_dect - Aktueller Status des DECT-Basis
      • box_fwVersion - Firmware-Version der Box, wenn veraltet dann wird '(old)' angehangen
      • box_guestWlan - Aktueller Status des Gäste-WLAN
      • box_guestWlanCount - Anzahl der Geräte die über das Gäste-WLAN verbunden sind
      • box_guestWlanRemain - Verbleibende Zeit bis zum Ausschalten des Gäste-WLAN
      • box_ipExtern - Internet IP der Fritz!Box
      • box_model - Fritz!Box-Modell
      • box_moh - Wartemusik-Einstellung
      • box_powerRate - aktueller Stromverbrauch in Prozent der maximalen Leistung
      • box_rateDown - Download-Geschwindigkeit des letzten Intervals in kByte/s
      • box_rateUp - Upload-Geschwindigkeit des letzten Intervals in kByte/s
      • box_stdDialPort - Anschluss der geräteseitig von der Wählhilfe genutzt wird
      • box_tr064 - Anwendungsschnittstelle TR-064 (wird auch von diesem Modul benötigt)
      • box_tr069 - Provider-Fernwartung TR-069 (sicherheitsrelevant!)
      • box_wlanCount - Anzahl der Geräte die über WLAN verbunden sind
      • box_wlan_2.4GHz - Aktueller Status des 2.4-GHz-WLAN
      • box_wlan_5GHz - Aktueller Status des 5-GHz-WLAN

      • dect1 - Name des DECT Telefons 1
      • dect1_alarmRingTone - Klingelton beim Wecken über das DECT Telefon 1
      • dect1_custRingTone - Benutzerspezifischer Klingelton des DECT Telefons 1
      • dect1_fwVersion - Firmware-Version des DECT Telefons 1
      • dect1_intern - Interne Nummer des DECT Telefons 1
      • dect1_intRingTone - Interner Klingelton des DECT Telefons 1
      • dect1_manufacturer - Hersteller des DECT Telefons 1
      • dect1_model - Modell des DECT Telefons 1
      • dect1_radio - aktueller Internet-Radio-Klingelton des DECT Telefons 1

      • diversity1 - Eigene Rufnummer der Rufumleitung 1
      • diversity1_dest - Zielnummer der Rufumleitung 1
      • diversity1_state - Aktueller Status der Rufumleitung 1

      • fon1 - Name des analogen Telefonanschlusses 1 an der Fritz!Box
      • fon1_intern - Interne Nummer des analogen Telefonanschlusses 1
      • fon1_out - ausgehende Nummer des Anschlusses 1

      • gsm_internet - Internetverbindung errichtet über Mobilfunk-Stick
      • gsm_rssi - Indikator der empfangenen GSM-Signalstärke (0-100)
      • gsm_state - Status der Mobilfunk-Verbindung
      • gsm_technology - GSM-Technologie, die für die Datenübertragung genutzt wird (GPRS, EDGE, UMTS, HSPA)

      • mac_01_26_FD_12_01_DA - MAC Adresse und Name eines aktiven Netzwerk-Gerätes.
        Bei einer WLAN-Verbindung wird "WLAN" und (von der Box gesehen) die Sende- und Empfangsgeschwindigkeit und die Empfangsstärke angehangen. Bei einer LAN-Verbindung wird der LAN-Port und die LAN-Geschwindigkeit angehangen. Gast-Verbindungen werden mit "gWLAN" oder "gLAN" gekennzeichnet.
        Inaktive oder entfernte Geräte erhalten zuerst den Werte "inactive" und werden beim nächsten Update gelöscht.

      • radio01 - Name der Internetradiostation 01

      • tam1 - Name des Anrufbeantworters 1
      • tam1_newMsg - Anzahl neuer Nachrichten auf dem Anrufbeantworter 1
      • tam1_oldMsg - Anzahl alter Nachrichten auf dem Anrufbeantworter 1
      • tam1_state - Aktueller Status des Anrufbeantworters 1

      • user01 - Name von Nutzer/IP 1 für den eine Zugangsbeschränkung (Kindersicherung) eingerichtet ist
      • user01_thisMonthTime - Internetnutzung des Nutzers/IP 1 im aktuellen Monat (Kindersicherung)
      • user01_todaySeconds - heutige Internetnutzung des Nutzers/IP 1 in Sekunden (Kindersicherung)
      • user01_todayTime - heutige Internetnutzung des Nutzers/IP 1 (Kindersicherung)

    FRM

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

    FRM_AD

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

    FRM_I2C

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

    FRM_IN

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

    FRM_LCD

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

    FRM_OUT

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

    FRM_PWM

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

    FRM_RGB

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

    FRM_ROTENC

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

    FRM_SERVO

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

    FRM_STEPPER

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

    FReplacer

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

    FS20

      Das FS20 Protokoll wird von einem großen Spektrum an Geräten verwendet. Diese stammen entweder aus der Kategorie Sensor/Sender oder Aktor/Empfänger. Die Funknachrichten (868.35 MHz) können mit einem FHZ oder einem CUL empfangen werden. Dieses muss daher zuerst definiert werden.

      Define
        define <name> FS20 <housecode> <button> [fg <fgaddr>] [lm <lmaddr>] [gm FF]

        Die Werte housecode, button, fg, lm, und gm können entweder hexadezimal oder in der ELV-typischen quaternären Notation (Zahlen von 1-4) eingegeben werden. Hier und auch in späteren Beispielen wird als Referenz die ELV4 Notation verwendet. Die Notationen können auch gemischt werden da FHEM die verwendete Notation durch zählen der Zeichen erkennt.
        • <housecode> ist eine 4 stellige Hex oder 8 stellige ELV4 Zahl, entsprechend der Hauscode Adresse.
        • <button> ist eine 2 stellige Hex oder 4 stellige ELV4 Zahl, entsprechend dem Button des Transmitters.
        • Optional definiert <fgaddr> die Funktionsgruppe mit einer 2 stelligen Hex oder 4 stelligen ELV4 Adresse. Bei Hex muss die erste Stelle F, bei ELV4 die ersten zwei Stellen 44 sein.
        • Optional definiert <lmaddr> definiert einen local master mit einer 2 stelligen Hex oder 4 stelligen ELV4 Adresse. Bei Hex muss die letzte Stelle F, bei ELV4 die letzten zwei Stellen 44 sein.
        • Optional definiert gm den global master. Die Adresse muss FF bei HEX und 4444 bei ELV4 Notation sein.

        Beispiele:
          define lamp FS20 7777 00 fg F1 gm F
          define roll1 FS20 7777 01
          define otherlamp FS20 24242424 1111 fg 4412 gm 4444
          define otherroll1 FS20 24242424 1114

      Set
        set <name> <value> [<time>]

        Wobei value einer der folgenden Werte sein kann:
          dim06% dim12% dim18% dim25% dim31% dim37% dim43% dim50%
          dim56% dim62% dim68% dim75% dim81% dim87% dim93% dim100%
          dimdown
          dimup
          dimupdown
          off
          off-for-timer
          on # dimmer: Setze auf diesen Wert vor dem Ausschalten
          on-for-timer # Siehe Hinweise
          on-old-for-timer # Setze zum vorherigen (vor dem Einschalten)
          ramp-on-time # Zeit bis zum erreichen des gewünschten Dim-Wertes
          ramp-off-time # Zeit bis zum Ausschalten bei Dimmern
          reset
          sendstate
          timer
          toggle # zwischen aus und dem letztern Dim-Wert

        Die set extensions sind ebenfalls unterstützt.

        Beispiele:
          set lamp on
          set lamp1,lamp2,lamp3 on
          set lamp1-lamp3 on
          set lamp on-for-timer 12

        Hinweise:
        • reset nur mit Vorsicht verwenden: Auch der Hauscode wird gelöscht.
        • Da das FS20 Protokoll 0.22Sek für eine Funksequenz benötigt wird nach jeder Ausführung eine Pause von 0.22Sek eingefügt.
        • Das FS20ST schaltet für dim*% und dimup ein. Es reagiert nicht auf sendstate.
        • Wenn ein Timer gesetzt ist (und dieser nicht 0 ist) werden on, dim*, und *-for-timer berücksichtigt (zumindest beim FS20ST).
        • Das time Argument geht von 0.25Sek bis 4Std und 16Min. Da time nur mit einem Byte dargestellt wird ergeben sich hieraus nur 112 eindeutige Zeit-Werte die mit ansteigender größe immer gröber aufgelöst werden. Das Programm zeigt die exakte Restzeit an wenn die gewählte Auflösung nicht eindeutig war. Die Auflösung ist is 0.25Sek von 0 bis 4 Sekunden, 0.5Sek von 4 bis 8Sek, 1Sek von 8 bis 16 Sek und so weiter. Wenn eine höhere Genauigkeit bei großen Werten gebraucht wird, dann hilft at mit einer Auflösung von 1Sek.

      Get
        N/A

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

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

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

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

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

      • model
        Das "model" Attribut bezeichnet den Modelltyp des Gerätes. Dieses Attribut wird (derzeit) nicht direkt durch fhem.pl genutzt. Es kann beispielsweise von externen Programmen oder Webinterfaces genutzt werden um Geräteklassen zu unterscheiden und dazu passende Befehle zu senden (z.B. "on" oder "off" an ein fs20st, "dim..%" an ein fs20du etc.). Die Schreibweise des Modellnamens ist wie die in Anführungszeichen in der Anleitung gedruckte Bezeichnung die jedem Gerät beiliegt. Dieser Name wird ohne Leerzeichen ausschließlich in Kleinbuchstaben verwendet. Gültige Zeichen sind a-z 0-9 und -, andere Zeichen sind zu vermeiden. Hier ist eine Liste der "offiziellen" Devices:

        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.

    FTUISRV

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

    FileLog


      Define
        define <name> FileLog <filename> <regexp> [readonly]

        Speichert Ereignisse in einer Log-Datei mit Namen <filename>. Das Log-Format ist

          YYYY-MM-DD_HH:MM:SS <device> <event>

        Der Ausdruck unter regexp wird anhand des Gerätenames überprüft und zwar devicename:event oder der timestamp:devicename:event-Kombination. Der regexp muss mit dem kompletten String übereinstimmen und nicht nur teilweise.
        <filename> können %-wildcards der POSIX strftime-Funktion des darunterliegenden OS enthalten (siehe auch strftime Beschreibung). Allgemein gebräuchliche Wildcards sind:
        • %d Tag des Monats (01..31)
        • %m Monat (01..12)
        • %Y Jahr (1970...)
        • %w Wochentag (0..6); beginnend mit Sonntag (0)
        • %j Tag des Jahres (001..366)
        • %U Wochennummer des Jahres, wobei Wochenbeginn = Sonntag (00..53)
        • %W Wochennummer des Jahres, wobei Wochenbeginn = Montag (00..53)
        FHEM ersetzt %L mit dem Wert des global logdir Attributes.
        Bevor %V für ISO 8601 Wochennummern verwendet werden, muss überprüft werden, ob diese Funktion durch das Brriebssystem unterstützt wird (Es kann sein, dass %V nicht umgesetzt wird, durch einen Leerstring ersetzt wird oder durch eine falsche ISO-Wochennummer dargestellt wird - besonders am Jahresanfang) Bei der Verwendung von %V muss gleichzeitig für das Jahr ein %G anstelle von %Y benutzt werden.
        Falls man readonly spezifiziert, dann wird die Datei nur zum visualisieren verwendet, und nicht zum Schreiben geöffnet.
        Beispiele:
          define lamplog FileLog %L/lamp.log lamp
          define wzlog FileLog ./log/wz-%Y-%U.log wz:(measured-temp|actuator).*
          Mit ISO 8601 Wochennummern falls unterstützt:
          define wzlog FileLog ./log/wz-%G-%V.log wz:(measured-temp|actuator).*

      Set
      • reopen
          Erneutes Öffnen eines FileLogs nach händischen Änderungen in dieser Datei.
      • clear
          Löschen und erneutes Öffnen eines FileLogs.
      • addRegexpPart <device> <regexp>
          Fügt ein regexp Teil hinzu, der als device:regexp aufgebaut ist. Die Teile werden nach Regexp-Regeln mit | getrennt. Achtung: durch hinzufügen können manuell erzeugte Regexps ungültig werden.
      • removeRegexpPart <re>
          Entfernt ein regexp Teil. Die Inkonsistenz von addRegexpPart / removeRegexPart-Argumenten hat seinen Ursprung in der Wiederverwendung von Javascript-Funktionen.
      • absorb secondFileLog
          Führt den gegenwärtigen Log und den secondFileLog zu einer gemeinsamen Datei zusammen, fügt danach die regexp des secondFileLog dem gegenwärtigen Filelog hinzu und löscht dann anschließend das secondFileLog.
          Dieses Komanndo wird zur Erzeugung von kombinierten Plots (weblinks) benötigt.
          Hinweise:
          • secondFileLog wird gelöscht (d.h. die FHEM-Definition und die Datei selbst).
          • nur das aktuelle File wird zusammengeführt, keine archivierten Versionen.
          • Weblinks, die das secondFilelog benutzen werden unbrauchbar, sie müssen deshalb auf das neue Logfile angepasst oder gelöscht werden.


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

        Liest Daten aus einem Logfile und wird von einem Frontend benötigt, um Daten ohne direkten Zugriff aus der Datei zu lesen.
        • <infile>
          Name des Logfiles, auf das zugegriffen werden soll. Sonderfälle: "-" steht für das aktuelle Logfile, und "CURRENT" öffnet die zum "from" passende Datei.
        • <outfile>
          Bei einem "-", bekommt man die Daten auf der aktuellen Verbindung zurück, anderenfall ist es das Name (eigentlich Prefix, s.u.) des Output-Files. Wenn mehr als ein File angesprochen wird, werden die einzelnen Dateinamen durch ein "-" getrennt, anderenfalls werden die Daten in einzelne Dateien geschrieben, die - beginnend mit 0 - durchnummeriert werden.
        • <from> <to>
          Bezeichnet den gewünschten Datenbereich. Die beiden Elemente müssen ganz oder mit dem Anfang des Zeitformates übereinstimmen.
        • <column_spec>
          Jede column_spec sendet die gewünschten Daten entweder in eine gesonderte Datei oder über die gegenwärtige Verbindung durch "-" getrennt.
          Syntax: <col>:<regexp>:<default>:<fn>
          • <col> gibt die Spaltennummer zurück, beginnend mit 1 beim Datum. Wenn die Spaltenmummer in doppelten Anführungszeichen steht, handelt es sich um einen festen Text und nicht um eine Spaltennummer.
          • <regexp> gibt, falls vorhanden, Zeilen mit Inhalten von regexp zurück. Groß- und Kleinschreibung beachten.
          • <default>
            Wenn keine Werte gefunden werden, und der Default-Wert (Voreinstellung) wurde gesetzt, wird eine Zeile zurückgegeben, die den von-Wert (from) und diesen Default-Wert enthält. Dieses Leistungsmerkmal ist notwendig, da gnuplot abbricht, wenn ein Datensatz keine Daten enthält.
          • <fn> Kann folgende Inhalte haben:
            • int
              Löst den Integer-Wert zu Beginn eines Strings heraus. Wird z.B. bei 10% gebraucht.
            • delta-h oder delta-d
              Gibt nur den Unterschied der Werte-Spalte pro Stunde oder pro Tag aus. Wird benötigt, wenn die Spalte einen Zähler enthält, wie im Falles des KS300 in der Spalte für die Regenmenge.
            • alles andere
              Dieser String wird als Perl-Ausdruck ausgewertet. @fld enthaelt die aktuelle Zeile getrennt durch Leerzeichen. Achtung: Dieser String/Perl-Ausdruck darf keine Leerzeichen enthalten.


        Beispiel:

          get outlog out-2008.log - 2008-01-01 2008-01-08 4:IR:int: 9:IR::

      Attribute
      • addStateEvent


      • archivecmd / archivedir / nrarchive
        Wenn eine neue FileLog-Datei geöffnet wird, wird der FileLog archiver aufgerufen. Das geschieht aber nur , wenn der Name der Datei sich geändert hat(abhängig von den zeitspezifischen Wildcards, die weiter oben unter FileLog (define) beschrieben werden) und gleichzeitig ein neuer Datensatz in diese Datei geschrieben werden muss.
        Wenn das Attribut archivecmd benutzt wird, startet es als shell-Kommando ( eine Einbettung in " ist nicht notwendig), und jedes % in diesem Befehl wird durch den Namen des alten Logfiles ersetzt.
        Wenn dieses Attribut nicht gesetzt wird, aber dafür nrarchive, werden nrarchive viele Logfiles im aktuellen Verzeichnis gelassen, und ältere Dateien in das Archivverzeichnis (archivedir) verschoben (oder gelöscht, falls kein archivedir gesetzt wurde).
        Achtung: "ältere Dateien" sind die, die in der alphabetisch sortierten Liste oben sind.
        Hinweis: Werden diese Attribute als global instance gesetzt, hat das auschließlich auf das FHEM logfile Auswirkungen.

      • archiveCompress
        Falls nrarchive, archivedir und archiveCompress gesetzt ist, dann werden die Dateien im archivedir komprimiert abgelegt.

      • createGluedFile
        Falls gesetzt (1), und im SVG-Plot ein Zeitbereich abgefragt wird, was in zwei Logdateien gespeichert ist, dann wird für die Anfrage eine temporäre Datei mit dem Inhalt der beiden Dateien erzeugt.

      • disable
      • disabledForIntervals

      • eventOnThreshold
        Falls es auf eine (nicht Null-) Zahl gesetzt ist, dann wird das linesInTheFile Event generiert, falls die Anzahl der Zeilen in der Datei ein Mehrfaches der gesetzen Zahl ist. Achtung: der Zähler ist nur für solche Dateien korrekt, die nach dem Impementieren dieses Features angelegt wurden. Ein Absturz/Abschuß von FHEM verfälscht die Zählung.

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

      • mseclog

      • reformatFn
        wird verwendet, um "fremde" Dateien für die SVG-Anzeige ins FileLog-Format zu konvertieren. Es enthält nur den Namen einer Funktion, der mit der ursprünglichen Zeile aufgerufen wird. Z.Bsp. um die NTP loopstats Datei zu visualisieren kann man den Wert von reformatFn auf ntpLoopstats setzen, und folgende Funktion in 99_myUtils.pm definieren:
        
              sub            
              ntpLoopstats($)
              {
                my ($d) = @_;
                return $d if($d !~ m/^(\d{5}) (\d+)\.(\d{3}) (.*)$/);
                my ($r, $t) = ($4, FmtDateTime(($1-40587)*86400+$2));
                $t =~ s/ /_/;
                return "$t ntpLoopStats $r";
              }

    GAEBUS

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

    GEOFANCY

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

    GHoma

    (en | de)
        Verbindet fhem mit einem G-Homa Zwischenstecker

        Achtung!:
        Mit aktueller Firmware und nach einem Firmware Update ist der integrierte Webserver nicht mehr erreichbar.
        Dadurch lassen sich keine Einstellungen mehr anpassen. Die einzige Möglichkeit ist, die DNS anfragen der G-Homa Dose an plug.g-homa.com zum FHEM server umzuleiten.
        Vorbereitung:
      • WLAN konfigurieren:
        Gerät in den AP modus bringen (Knopf für mehr als 3s drücken, diesen Schritt wiederholen bis die LED permanent leuchtet)
        Nun einen Computer mit der SSID G-Home verbinden.
        Im Browser zu 10.10.100.254 (username:passwort = admin:admin)
        In STA Setting WLAN Einstellungen eintragen
      • Network Parameters settings:
        Other Setting -> Protocol auf TCP-Server
        Other Setting -> Port ID (wird später für FHEM benötigt)
        Other Setting -> Server Address (IP Adresse des FHEM Servers)
      • Optional:
        Im Router alle ausgehenden Verbindungen für G-Homa blockieren.


      Define
        define <name> GHoma <port>
        Legt ein GHoma Server device an.
        Neue Zwischenstecker werden beim ersten verbinden automatisch angelegt.
        Diese können aber auch manuell angelegt werden:
        define <name> GHoma <Id>
        Die Id besteht aus den letzten 6 Stellen der MAC Adresse des Zwischensteckers.
        Beispiel: MAC= AC:CF:23:A5:E2:3B -> Id= A5E23B

      Set
        set <name> <value>

        Gültige Werte für value:
          off
          on
        Die set extensions werden auch unterstützt.

      Attributes
        Für Zwischenstecker devices:
        • restoreOnStartup
          Wiederherstellen der Portzustände nach Neustart
          Standard: last, gültige Werte: last, on, off

        • restoreOnReinit
          Wiederherstellen der Portzustände nach Neustart
          Standard: last, gültige Werte: last, on, off

        • blocklocal
          Wert im Reading State sofort nach Änderung über lokale Taste wiederherstellen
          Standard: no, gültige Werte: no, yes

        Für Server devices:
        • allowfrom
          Regexp der erlaubten IP-Adressen oder Hostnamen. Wenn dieses Attribut gesetzt wurde, werden ausschließlich Verbindungen von diesen Adressen akzeptiert.

      • readingFnAttributes

    GUEST

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

        Stellt ein spezielles virtuelles Device bereit, welches einen Gast zu Hause repräsentiert.
        Basierend auf dem aktuellen Status und anderen Readings können andere Aktionen innerhalb von FHEM angestoßen werden.

        Wird vom übergeordneten Modul RESIDENTS verwendet, kann aber auch einzeln benutzt werden.

        Bei Mitgliedschaft mehrerer Bewohnergruppen werden diese durch Komma getrennt angegeben (siehe Beispiel unten).

        Beispiele:
          # Einzeln
          define rg_Guest GUEST

          # Typisches Gruppenmitglied
          define rg_Guest GUEST rgr_Residents # um Mitglied der Gruppe rgr_Residents zu sein

          # Mitglied in mehreren Gruppen
          define rg_Guest GUEST rgr_Residents,rgr_Guests # um Mitglied der Gruppen rgr_Residents und rgr_Guests zu sein

        Bitte beachten, dass das RESIDENTS Gruppen Device zunächst angelegt werden muss, bevor ein GUEST Objekt dort Mitglied werden kann.



      Set
        set <rg_FirstName> <command> [<parameter>]

        Momentan sind die folgenden Kommandos definiert.
        • location   -   setzt das Reading 'location'; siehe auch Attribut rg_locations, um die in FHEMWEB angezeigte Liste anzupassen
        • mood   -   setzt das Reading 'mood'; siehe auch Attribut rg_moods, um die in FHEMWEB angezeigte Liste anzupassen
        • state   home,gotosleep,asleep,awoken,absent,gone   wechselt den Status; siehe auch Attribut rg_states, um die in FHEMWEB angezeigte Liste anzupassen
        • create
        • locationMap   fügt ein vorkonfiguriertes weblink Device hinzu, welches eine Google Map anzeigt, sofern die Readings locationLat+locationLong vorhanden sind.
        • wakeuptimer   fügt diverse Vorkonfigurationen auf Basis von RESIDENTS Toolkit hinzu. Siehe separate Sektion in der RESIDENTS Modul Kommandoreferenz.
          Hinweis: Sofern der Zugriff auf administrative set-Kommandos (-> create) eingeschränkt werden soll, kann in einer FHEMWEB Instanz das Attribut allowedCommands ähnlich wie 'set,set-user' erweitert werden. Die Zeichenfolge 'set-user' stellt dabei sicher, dass beim Zugriff auf FHEM über diese FHEMWEB Instanz nur nicht-administrative set-Kommandos ausgeführt werden können.


        Mögliche Status und ihre Bedeutung

          Dieses Modul unterscheidet 6 verschiedene Status:

          • home - Mitbewohner ist zu Hause und wach
          • gotosleep - Mitbewohner ist auf dem Weg ins Bett
          • asleep - Mitbewohner schläft
          • awoken - Mitbewohner ist gerade aufgewacht
          • absent - Mitbewohner ist momentan nicht zu Hause, wird aber bald zurück sein
          • none - Gast Device ist deaktiviert


        Zusammenhang zwischen Anwesenheit/Presence und Aufenthaltsort/Location

          Unter bestimmten Umständen führt der Wechsel des Status auch zu einer Änderung des Readings 'location'.

          Wannimmer die Anwesenheit (bzw. das Reading 'presence') von 'absent' auf 'present' wechselt, wird 'location' auf 'home' gesetzt. Sofern das Attribut rg_locationHome gesetzt ist, wird die erste Lokation daraus anstelle von 'home' verwendet.

          Wannimmer die Anwesenheit (bzw. das Reading 'presence') von 'present' auf 'absent' wechselt, wird 'location' auf 'underway' gesetzt. Sofern das Attribut rg_locationUnderway gesetzt ist, wird die erste Lokation daraus anstelle von 'underway' verwendet.


        Auto-Status 'gone'

          Immer wenn ein Mitbewohner auf 'absent' gesetzt wird, wird ein Zähler gestartet, der nach einer bestimmten Zeit den Status automatisch auf 'gone' setzt.
          Der Standard ist nach 16 Stunden.

          Dieses Verhalten kann über das Attribut rg_autoGoneAfter angepasst werden.


        Anwesenheit mit anderen GUEST oder ROOMMATE Devices synchronisieren

          Wenn Sie immer zusammen mit anderen Mitbewohnern oder Gästen das Haus verlassen oder erreichen, können Sie ihren Status ganz einfach auf andere Mitbewohner übertragen.
          Durch das Setzen des Attributs rg_PassPresenceTo folgen die dort aufgeführten Mitbewohner ihren eigenen Statusänderungen nach 'home', 'absent' oder 'gone'.

          Bitte beachten, dass Mitbewohner mit dem aktuellen Status 'none' oder 'gone' (im Falle von ROOMMATE Devices) nicht beachtet werden.


        Zusammenhang zwischen Aufenthaltsort/Location und Anwesenheit/Presence

          Unter bestimmten Umständen hat der Wechsel des Readings 'location' auch einen Einfluss auf den tatsächlichen Status.

          Immer wenn eine Lokation mit dem Namen 'home' gesetzt wird, wird auch der Status auf 'home' gesetzt, sofern die Anwesenheit bis dahin noch auf 'absent' stand. Sofern das Attribut rg_locationHome gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'home' aus.

          Immer wenn eine Lokation mit dem Namen 'underway' gesetzt wird, wird auch der Status auf 'absent' gesetzt, sofern die Anwesenheit bis dahin noch auf 'present' stand. Sofern das Attribut rg_locationUnderway gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'underway' aus. Diese Lokationen werden auch nicht in das Reading 'lastLocation' übertragen.

          Immer wenn eine Lokation mit dem Namen 'wayhome' gesetzt wird, wird das Reading 'wayhome' auf '1' gesetzt, sofern die Anwesenheit zu diesem Zeitpunkt 'absent' ist. Sofern das Attribut rg_locationWayhome gesetzt wurde, so führt das VERLASSEN einer dort aufgeführten Lokation ebenfalls dazu, dass das Reading 'wayhome' auf '1' gesetzt wird. Es gibt also 2 Möglichkeiten den Nach-Hause-Weg-Indikator zu beeinflussen (implizit und explizit).
          Die Ankunft zu Hause setzt den Wert von 'wayhome' zurück auf '0'.

          Wenn Sie auch das GEOFANCY Modul verwenden, können Sie das Reading 'location' ganz einfach über GEOFANCY Ereignisse aktualisieren lassen. Definieren Sie dazu einen NOTIFY-Trigger wie diesen:

          define n_rg_Manfred.location notify geofancy:currLoc_Manfred.* set rg_Manfred:FILTER=location!=$EVTPART1 location $EVTPART1

          Durch das Anlegen von Geofencing-Zonen mit den Namen 'home' und 'wayhome' in der iOS App werden zukünftig automatisch alle Statusänderungen wie oben beschrieben durchgeführt.


      Attribute
        • rg_autoGoneAfter - Anzahl der Stunden, nach denen sich der Status automatisch auf 'gone' ändert, wenn der aktuellen Status 'absent' ist; Standard ist 36 Stunden
        • rg_geofenceUUIDs - Mit Komma getrennte Liste von Geräte UUIDs, die ihren Standort über GEOFANCY aktualisieren. Vermeidet zusätzliche notify/DOIF/watchdog Geräte und kann als Ersatz für das GEOFANCY attribute devAlias dienen. (hier ehr als eine UUID/Device zu hinterlegen ist eher keine gute Idee da die Lokation dann womöglich anfängt zu springen)
        • rg_locationHome - hiermit übereinstimmende Lokationen werden als zu Hause gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'home'
        • rg_locationUnderway - hiermit übereinstimmende Lokationen werden als unterwegs gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'underway'
        • rg_locationWayhome - das Verlassen einer Lokation, die hier aufgeführt ist, lässt das Reading 'wayhome' auf '1' setzen; mehrere Einträge durch Leerzeichen trennen; Standard ist "wayhome"
        • rg_locations - Liste der in FHEMWEB anzuzeigenden Lokationsauswahlliste in FHEMWEB; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
        • rg_moodDefault - die Stimmung, die nach Ankunft zu Hause oder nach dem Statuswechsel von 'awoken' auf 'home' gesetzt werden soll
        • rg_moodSleepy - die Stimmung, die nach Statuswechsel zu 'gotosleep' oder 'awoken' gesetzt werden soll
        • rg_moods - Liste von Stimmungen, wie sie in FHEMWEB angezeigt werden sollen; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
        • rg_noDuration - deaktiviert die Berechnung der Zeitspannen (siehe Readings durTimer*)
        • rg_passPresenceTo - synchronisiere die Anwesenheit mit anderen GUEST oder ROOMMATE Devices; mehrere Devices durch Leerzeichen trennen
        • rg_presenceDevices - übernehmen des presence Status von einem anderen FHEM Device. Bei mehreren Devices diese mit Komma trennen, um ein Update des GUEST Devices auszulösen, sobald ALLE Devices entweder absent oder present sind.
        • rg_realname - wo immer GUEST den richtigen Namen verwenden möchte nutzt es den Wert des Attributs alias oder group; Standard ist group
        • rg_showAllStates - die Status 'asleep' und 'awoken' sind normalerweise nicht immer sichtbar, um einen einfachen Zubettgeh-Prozess über das devStateIcon Attribut zu ermöglichen; Standard ist 0
        • rg_states - Liste aller in FHEMWEB angezeigter Status; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Status führen zu Fehlern
        • rg_wakeupDevice - Referenz zu versklavten DUMMY Geräten, welche als Wecker benutzt werden (Teil von RESIDENTS Toolkit's wakeuptimer)



      Generierte Readings/Events:
        • durTimerAbsence - Timer, der die Dauer der Abwesenheit in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
        • durTimerAbsence_cr - Timer, der die Dauer der Abwesenheit in Computer lesbarem Format anzeigt (Minuten)
        • durTimerPresence - Timer, der die Dauer der Anwesenheit in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
        • durTimerPresence_cr - Timer, der die Dauer der Anwesenheit in Computer lesbarem Format anzeigt (Minuten)
        • durTimerSleep - Timer, der die Schlafdauer in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
        • durTimerSleep_cr - Timer, der die Schlafdauer in Computer lesbarem Format anzeigt (Minuten)
        • lastArrival - Zeitstempel der letzten Ankunft zu Hause
        • lastAwake - Zeitstempel des Endes des letzten Schlafzyklus
        • lastDeparture - Zeitstempel des letzten Verlassens des Zuhauses
        • lastDurAbsence - Dauer der letzten Abwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
        • lastDurAbsence_cr - Dauer der letzten Abwesenheit in Computer lesbarem Format (Minuten)
        • lastDurPresence - Dauer der letzten Anwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
        • lastDurPresence_cr - Dauer der letzten Anwesenheit in Computer lesbarem Format (Minuten)
        • lastDurSleep - Dauer des letzten Schlafzyklus in normal lesbarem Format (Stunden:Minuten:Sekunden)
        • lastDurSleep_cr - Dauer des letzten Schlafzyklus in Computer lesbarem Format (Minuten)
        • lastLocation - der vorherige Aufenthaltsort
        • lastMood - die vorherige Stimmung
        • lastSleep - Zeitstempel des Beginns des letzten Schlafzyklus
        • lastState - der vorherige Status
        • lastWakeup - Zeit der letzten Wake-up Timer Ausführing
        • lastWakeupDev - Device Name des zuletzt verwendeten Wake-up Timers
        • location - der aktuelle Aufenthaltsort
        • mood - die aktuelle Stimmung
        • nextWakeup - Zeit der nächsten Wake-up Timer Ausführung
        • nextWakeupDev - Device Name des als nächstes ausgefährten Wake-up Timer
        • presence - gibt den zu Hause Status in Abhängigkeit des Readings 'state' wieder (kann 'present' oder 'absent' sein)
        • state - gibt den aktuellen Status wieder
        • wakeup - hat den Wert '1' während ein Weckprogramm dieses Bewohners ausgeführt wird
        • wayhome - abhängig vom aktullen Aufenthaltsort, kann der Wert '1' werden, wenn die Person auf dem weg zurück nach Hause ist

        • Die folgenden Readings werden auf '-' gesetzt, sobald der Status auf 'none' steht:
          lastArrival, lastDurAbsence, lastLocation, lastMood, location, mood

    GasCalculator

      Das GasCalculator Modul berechnet den Gas - Verbrauch und den verbundenen Kosten von einem oder mehreren Gas-Zählern.
      Es ist kein eigenes Zählermodul sondern benötigt eine Regular Expression (regex or regexp) um das Reading mit den Zähl-Impulse von einem oder mehreren Gaszählern zu finden.

      Sobald das Modul in der fhem.cfg definiert wurde, reagiert das Modul auf jedes durch das regex definierte event wie beispielsweise ein myOWDEVICE:counter.* etc.

      Das GasCalculator Modul berechnet augenblickliche, historische statistische und vorhersehbare Werte von einem oder mehreren Gas-Zählern und erstellt die entsprechenden Readings.

      Um zu verhindern, dass man bis zu 12 Monate warten muss, bis alle Werte der Realität entsprechen, müssen die Readings <DestinationDevice>_<SourceCounterReading>_Vol1stDay, <DestinationDevice>_<SourceCounterReading>_Vol1stMonth, <DestinationDevice>_<SourceCounterReading>_Vol1stYear und <DestinationDevice>_<SourceCounterReading>_Vol1stMeter entsprechend mit dem setreading - Befehl korrigiert werden. Diese Werte findet man unter Umständen auf der letzten Gas-Rechnung. Andernfalls dauert es bis zu 24h für die täglichen, 30 Tage für die monatlichen und bis zu 12 Monate für die jährlichen Werte bis diese der Realität entsprechen.

      Define
        define <name> GasCalculator <regex>
          <name> : Der Name dieses Berechnungs-Device. Empfehlung: "myGasCalculator".
          <regex> : Eine gültige Regular Expression (regex or regexp) von dem Event wo der Zählerstand gefunden werden kann
        Beispiel: define myGasCalculator GasCalculator myGasCounter:countersA.*

      Set
        Die set - Funktion erlaubt individuelle Readings zu verändern um beispielsweise nach einem Stromausfall Werte zu korrigieren.
        Die set - Funktion funktioniert nur für Readings welche im CalculatorDevice gespeichert wurden.
        Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit set - Befehl gesetzt werden.

      Get
        Die get - Funktion liefert nur den Wert des jeweiligen Readings zurück.
        Die get - Funktion funktioniert nur für Readings welche im CalculatorDevice gespeichert wurden.
        Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit get - Befehl ausgelesen werden.

      Attributes
        Sollten die unten ausfeg&auuml;hrten Attribute bei der Definition eines entsprechenden Gerätes nicht gesetzt sein, so werden sie vom Modul mit Standard Werten automatisch gesetzt
        Zusätzlich können die globalen Attribute wie room verwendet werden.
        • BasicPricePerAnnum :
        • Eine gültige float Zahl für die jährliche Grundgebühr in der gewählten Währung für die Gas-Versorgung zum End-Verbraucher.
          Dieser Wert stammt vom Gas-Zulieferer und steht auf der Gas-Rechnung.
          Der Standard Wert ist 0.00
        • Currency :
        • Eines der vordefinerten Währungssymbole: [€,£,$].
          Der Standard Wert ist €
        • disable :
        • Deaktiviert das devive. Das Modul wird nicht mehr auf die Events reagieren die durch die Regular Expression definiert wurde.
          Der Standard Wert ist 0 = ativiert.
        • GasCounterOffset :
        • Eine gültige float-Zahl für den Volumen Unterschied = Offset (Nicht der Unterschied zwischen Zählimpulsen) zwischen dem am mechanischen Gaszähler und dem angezeigten Wert im Reading dieses Device.
          Der Offset-Wert wird wie folgt ermittelt: VOffset = VMechanisch - VModule
          Der Standard-Wert ist 0.00
        • GasCubicPerCounts :
        • Eine gültige float-Zahl für die Menge an Zählimpulsen pro gewählter Volumen-Grundeinheit.
          Der Wert ist durch das mechanische Zählwerk des Gaszählers vorgegeben. GasCubicPerCounts = 0.01 bedeutet, dass jeder Zählimpuls ein hunderstel der gewählten Volumengrundeinheit.
          Der Standard-Wert ist 0.01
        • GasNominalHeatingValue :
        • Eine gültige float-Zahl für den Heizwert des gelieferten Gases in [kWh/ gewählter Volumeneinheit].
          Dieser Wert stammt vom Gas-Zulieferer und steht auf der Gas-Rechnung.
          Der Standard-Wert ist 10.00
        • GaszValue :
        • Eine gültige float-Zahl für die Zustandszahl des Gases basierend auf der Relation based on the local installation of the mechganical gas meter in relation of the gas providers main supply station.
          Dieser Wert stammt vom Gas-Zulieferer und steht auf der Gas-Rechnung.
          Der Standard-Wert ist 1.00
        • GasPricePerKWh :
        • Eine gültige float-Zahl für den Gas Preis in der gewählten Währung pro kWh.
          Dieser Wert stammt vom Gas-Zulieferer und steht auf der Gas-Rechnung.
          Der Standard-Wert ist 0.0654
        • MonthlyPayment :
        • Eine gültige float-Zahl für die monatlichen Abschlagszahlungen in der gewählten Währung an den Gas-Lieferanten.
          Der Standard-Wert ist 0.00
        • MonthOfAnnualReading :
        • Eine gültige Ganz-Zahl für den Monat wenn der mechanische Gas-Zähler jedes Jahr durch den Gas-Lieferanten abgelesen wird.
          Der Standard-Wert ist 5 (Mai)
        • ReadingDestination :
        • Eines der vordefinerten Device als Ziel der errechneten Readings: [CalculatorDevice,CounterDevice].
          Das CalculatorDevice ist das mit diesem Modul erstellte Device.
          Das CounterDevice ist das Device von welchem der mechanische Zähler ausgelesen wird.
          Der Standard-Wert ist CalculatorDevice.
        • Volume :
        • Eine der vordefinierten Volumensymbole für die Volumeneinheit [m³,ft³].
          Der Standard-Wert ist m³

      Readings
        Sobald das Device in der Lage war mindestens 2 Werte des Zählers einzulesen, werden automatisch die entsprechenden Readings erzeugt:
        Der Platzhalter <DestinationDevice> steht für das Device, welches man in dem Attribut ReadingDestination oben festgelegt hat. Dieser Platzhalter bleibt leer, sobald man dort CalculatorDevice ausgewählt hat.
        Der Platzhalter <SourceCounterReading> steht für das Reading welches mit der Regular Expression definiert wurde.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostLastDay :
        • Energiekosten in der gewählten Währung des letzten Tages.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostMeter :
        • Energiekosten in der gewählten Währung seit Anfang des Monats wo der Gas-Versorger den Zähler abliest.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostMeterLast :
        • Energiekosten in der gewählten Währung der letzten Zählperiode des Gas-Versorgers.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostMonth :
        • Energiekosten in der gewählten Währung seit Anfang des Monats.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostMonthLast :
        • Energiekosten in der gewählten Währung des letzten Monats.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostYear :
        • Energiekosten in der gewählten Währung seit Anfang des Jahres.
        • <DestinationDevice>_<SourceCounterReading>_EnergyCostYearLast :
        • Energiekosten in der gewählten Währung des letzten Jahres.
        • <DestinationDevice>_<SourceCounterReading>_EnergyDay :
        • Energieverbrauch in kWh seit Mitternacht.
        • <DestinationDevice>_<SourceCounterReading>_EnergyDayLast :
        • Gesamter Energieverbrauch des letzten Tages (Gestern).
        • <DestinationDevice>_<SourceCounterReading>_EnergyMeter :
        • Energieverbrauch in kWh seit Anfang seit Anfang des Monats wo der Gas-Versorger den Zähler abliest.
        • <DestinationDevice>_<SourceCounterReading>_EnergyMeterLast :
        • Gesamter Energieverbrauch der letzten Zählerperiode des Gas-Versorgers.
        • <DestinationDevice>_<SourceCounterReading>_EnergyMonth :
        • Energieverbrauch in kWh seit Anfang seit Anfang des Monats (Mitternacht des 01.).
        • <DestinationDevice>_<SourceCounterReading>_EnergyMonthLast :
        • Gesamter Energieverbrauch im letzten Monat.
        • <DestinationDevice>_<SourceCounterReading>_EnergyYear :
        • Energieverbrauch in kWh seit Anfang seit Anfang des Jahres (Mitternacht des 01. Januar).
        • <DestinationDevice>_<SourceCounterReading>_EnergyYearLast :
        • Gesamter Energieverbrauch in kWh des letzten Kalender-Jahres.
        • <DestinationDevice>_<SourceCounterReading>_FinanceReserve :
        • Finanzielle Reserve basierend auf den Abschlagszahlungen die jeden Monat an den Gas-Versorger gezahlt werden. Bei negativen Werten ist von einer Nachzahlung auszugehen.
        • <DestinationDevice>_<SourceCounterReading>_MonthMeterReading :
        • Anzahl der Monate seit der letzten Zählerablesung. Der Monat der Zählerablesung ist der erste Monat = 1.
        • <DestinationDevice>_<SourceCounterReading>_Meter :
        • Zählerstand am Gaszähler. Bei Differenzen muss das Offset-Attribut korrigiert werden.
        • <DestinationDevice>_<SourceCounterReading>_PowerCurrent :
        • Aktuelle Heizleistung. (Mittelwert zwischen aktueller und letzter Messung)
        • <DestinationDevice>_<SourceCounterReading>_PowerDayAver :
        • Mittlere Heitzleistung seit Mitternacht.
        • <DestinationDevice>_<SourceCounterReading>_PowerDayMax :
        • Maximale Leistungsaufnahme seit Mitternacht.
        • <DestinationDevice>_<SourceCounterReading>_PowerDayMin :
        • Minimale Leistungsaufnahme seit Mitternacht.
        • <DestinationDevice>_<SourceCounterReading>_Vol1stDay :
        • Erster Volumenmesswert des Tages (Mitternacht).
        • <DestinationDevice>_<SourceCounterReading>_VolLastDay :
        • Verbrauchtes Volumen des vorherigen Tages.
        • <DestinationDevice>_<SourceCounterReading>_Vol1stMonth :
        • Erster Volumenmesswert des Monats (Mitternacht des 01.).
        • <DestinationDevice>_<SourceCounterReading>_VolLastMonth :
        • Verbrauchtes Volumen des vorherigen Monats.
        • <DestinationDevice>_<SourceCounterReading>_Vol1stYear :
        • Erster Volumenmesswert des Jahres (Mitternacht des 01. Januar).
        • <DestinationDevice>_<SourceCounterReading>_VolLastYear :
        • Verbrauchtes Volumen des vorherigen Jahres.
        • <DestinationDevice>_<SourceCounterReading>_Vol1stMeter :
        • Erster Volumenmesswert des Zeitraums seit Anfang des Monats wo der Gas-Versorger den Zähler abliest.
        • <DestinationDevice>_<SourceCounterReading>_VolLastMeter :
        • Verbrauchtes Volumen des vorherigen Abrechnungszeitraums.

    GoogleAuth

      Sorry, keine deutsche Dokumentation vorhanden.

      Die englische Doku gibt es hier: GoogleAuth

    HCS

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

    HEATRONIC

      Das HEATRONIC Modul wertet die Nachrichten aus, die über den HT-Bus von einer Junkers-Heizung übertragen werden.
      Mögliche Adapter werden unter http://www.mikrocontroller.net/topic/317004 vorgestellt.

      Define:
        define <name> HEATRONIC <serial-device> | <proxy-server IP-Adresse:port>

        Beispiel für serielles Gerät:
          define Heizung HEATRONIC /dev/ttyUSB0@9600

        Beispiel für Proxy-Server:
          define Heizung HEATRONIC 192.168.2.11:8088

      Set:
        set <name> <param> <value>
          (nur mit ht_pitiny- oder ht_piduino-Adapter möglich)

        wobei die Parameter folgende Werte haben:
        • hc1_Trequired <temp>
          Setzt das 'Heizen' Temperatur-Niveau für Heizkreis 1 (permanent)
          Auflösung 0.5 Celsius, Bereich: 10 bis 30 Celsius
        • hc1_mode [ auto | comfort | eco | frost ]
          Setzt die Betriebsart des Heizkreises 1
          • auto : Das Timerprogramm und die Sommerzeit-Umschaltung sind aktiv
          • comfort: Manueller 'comfort' Mode, Timerprogramm deaktiv
          • eco : Manueller 'eco' Mode, Timerprogramm deaktiv
          • frost : Manueller 'frost' Mode, Timerprogramm deaktiv

        Beispiele:
          set Boiler hc1_Trequired 22.5
          set Boiler hc1_mode eco


      Attributes:
      • interval_ch_time, interval_ch_Tflow_measured, interval_dhw_Tmeasured, interval_dhw_Tcylinder
        Intervall (in Sekunden) zum Update der entsprechenden Werte

      • minDiff_ch_Tflow_measured
        Minimaldifferenz (in Grad, z.B. 0.2) zum Update der entsprechenden Werte

      Readings:
      • ch_Tflow_desired
        benötigte Vorlauf-Temperatur (im Warmwasser-Modus max. Kesseltemperatur)

      • ch_Tflow_measured
        aktuell gemessene Vorlauf-Temperatur

      • ch_Treturn
        aktuell gemessene Rücklauf-Temperatur

      • ch_Tmixer
        aktuell gemessene Mischer-Temperatur

      • ch_mode
        aktueller Betriebsmodus (0=aus, 1=Heizen, 2=Warmwasser)

      • ch_code
        aktueller Betriebs-Code oder erweiterter Störungs-Code (siehe Heizungs-Anleitung)

      • ch_code
        Störungs-Code (siehe Heizungs-Anleitung)

      • ch_burner_fan
        Status Brenner-Gebläse (0=aus, 1=läuft)

      • ch_burner_operation
        Brenner-Status (0=off, 1=an)

      • ch_pump_heating
        Status der Heizungspumpe(0=aus, 1=läuft)

      • ch_pump_cylinder
        Status der Speicherladepumpe (0=aus, 1=läuft)

      • ch_pump_circulation
        Status der Zirkulationspumpe (0=aus, 1=läuft)

      • ch_burner_power
        Brennerleistung in Prozent

      • ch_pump_heating_power
        Leistung der Heizungspumpe in Prozent

      • ch_Toutside
        Außentemperatur

      • ch_runtime_total
        Brennerlaufzeit in Minuten (Heizen und Warmwasser)

      • ch_runtime_ch
        Brennerlaufzeit in Minuten (nur Heizen)

      • ch_runtime_dhw
        Brennerlaufzeit in Minuten (nur Warmwasser)

      • ch_starts_tot
        Anzahl der Brennerstarts (Heizen und Warmwasser)

      • ch_starts_ch
        Anzahl der Brennerstarts (nur Heizen)

      • ch_starts_dhw
        Anzahl der Brennerstarts (nur Warmwasser)

      • ch_time
        Systemzeit der Heizung

      • hc1_Tdesired .. hc4_Tdesired
        benötigte Raumtemperatur Heizkreis 1-4

      • hc1_Tmeasured .. hc4_Tmeasured
        aktuell gemessene Raumtemperatur Heizkreis 1-4

      • hc1_Tmode .. hc4_Tmode
        Betriebsmodus Heizkreis 1-4

      • dhw_Tdesired
        benötigte Warmwasser-Temperatur

      • dhw_Tmeasured
        aktuell gemessene Warmwasser-Temperatur

      • dhw_Tcylinder
        aktuell gemessene Warmwasser-Temperatur Speicher oben

      • sol_Tcollector
        Temperatur Kollektorgruppe 1

      • sol_Tcylinder_bottom
        Temperatur Solarspeicher unten

      • sol_yield_last_hour
        Kollektorertrag der letzten Stunde

      • sol_yield_2
        Der Wert ist noch nicht bekannt. Der Name kann sich noch ändern.

      • sol_pump
        Status der Solarpumpe (0=off, 1=läuft)

      • sol_runtime
        Laufzeit der Solarpumpe in Minuten

    HMCCU

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

    HMCCUCHN

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

    HMCCUDEV

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

    HMLAN

      Das HMLAN ist das fhem-Modul für den eQ-3 HomeMatic LAN Configurator welcher als IO in FHEM fungiert. Siehe HM-CFG-LAN_LAN_Konfigurations-Adapter zur Konfiguration.
      Eine weitere Beschreibung, wie der HomeMatic USB Konfigurations-Adapter (HM-CFG-USB) verwendet werden kann, ist unter dem angegebenen Link zu finden.

      Dieses Gerät kann gleichzeitig mit einer CCU und (nur lesend) mit FHEM verwendet werden. Hierfür ist wie folgt vorzugehen:
      • Starten des fhem/contrib/tcptee.pl Programms
      • Umleiten der CCU zum local host
      • Ausschalten der LAN-Encryption auf der CCU für den LAN-Configurator
      • Setzen des dummy Attributes für das HMLAN Gerät in FHEM


      Define
        define <name> HMLAN <ip-address>[:port]

        Der Standard-Port lautet: 1000.
        Wenn keine IP-Adresse angegeben wird, wird auch kein Gerät geöffnet; man kann also auch ohne angeschlossene Hardware experimentieren.


      Set
      • hmPairForSec
      • hmPairSerial
      • reopen Connection zum IO device neu starten
      • restart Neustart des IOdevice
      • reassignIDs Synchronisiert die im HMLAN eingetragenen IDs mit der von FHEM verwalteten Liste. I.a. findet dies automatisch statt, koennte aber in reset Fällen abweichen.


      Get
      • assignIDs Gibt eine Liste aller diesem IO zugewiesenen IOs aus.


      Attributes
      • do_not_notify

      • dummy

      • addvaltrigger

      • logIDs
        Schaltet selektives Aufzeichnen der HMLAN Meldungen ein. Eine Liste der HMIds oder Namen, die aufgezeichnet werden sollen, können - getrennt durch Kommata - eingegeben werden.
        Die Attribute erlauben ausschließlich die Angabe von Device-IDs und keine Kanal-IDs. Die Kanal-IDs werden automatisch in Device-IDs umgewandelt.
        all zeichnet die Original-Meldungen für alle HMIds auf.
        sys zeichnet alle systemrelevanten Meldungen wie keep-alive auf.
        all,sys damit wird die Aufzeichnung aller Meldungen eingeschaltet
      • loadLevel
        loadlevel mapped den Auslastungslevel auf die Namen in ein Reading.
        0:low,30:mid,40:batchLevel,90:high,99:suspended
        Der batchLevel Wert wird auf 40 gesetzt., sollte er fehlen. Das ist der Levelbei dem die Hintergrundnachrichten z.B. durch autoReadReg gestoppt werden

      • hmId

      • hmKey

      • hmKey2

      • hmKey3

      • hmKey4

      • hmKey5
        AES Schlüssel für den HMLAN Adapter.
        Der Schlüssel wird in eine hash-Zeichenfolge umgewandelt. Wenn eine Hash-Folge unmittelbar eingegeben wird, erfolgt keine Umwandlung, sondern eine eine direkte Benutzung der Hash-Folge. Deshalb kann der Originalschlüssel auch nicht entschlüsselt werden.
      • hmProtocolEvents

      • respTime
        Definiert die maximale Antwortzeit des HMLAN-Adapters in Sekunden. Standardwert ist 1 Sekunde.
        Längere Zeiten können übergangsweise in langsamen und instabilen Systemen oder in LAN-Konfigurationen verwendet werden.
      • wdTimer
        Zeit in Sekunden, um den HMLAN zu triggern. Werte zwischen 5 und 25 sind zulässig. Standardwert ist 25 Sekunden.
        Es wird davon abgeraten diesen Timer zu verändern. Wenn Probleme mit HMLAN-Abbrüchen bestehen wird empfohlen die Ursache des Problems zu finden und zu beheben und nicht die Symptom.
      • hmLanQlen
        Definiert die Länge der Warteschlange des HMLAN Interfaces. Es ist deshalb die Anzahl der gleichzeitig zu sendenden Meldungen. Erhöhung des Wertes kann eine Steigerung der Übertragungsgeschwindigkeit verursachen, ebenso können wiederholte Aussendungen Datenverlust bewirken.
        Die Auswirkungen werden durch die Ereignisse im Protokoll sichtbar.
        1 - ist ein Wert auf der sicheren Seite und deshalb der Standardwert
        5 - ist eine kritische Länge und verursacht wahrscheinlich Meldungsverluste
      parameter
      • assignedIDsCnt
        Anzahl der IDs, die von FHEM einem HMLAN zugeordnet sind. Sollte die Anzahl von der im HMLAN abweichen wird dies als 'reported' gemeldet.
        Wird eine Abweichung festgestellt kann man mit dem Kommando assignIDs das HMLAN synchronisieren.
      • msgKeepAlive
        Güte der keep-alive Meldungen.
        dlyMax: maximale Verzögerungsdauer zwischen dem geplanten Meldungszeitpunkt und der tatsächlich gesendeten Meldung.
        bufferMin: minimal verfügbarer Speicher bevor HMLAN voraussichtlich unterbrochen wird bedingt durch die fehlende keepAlive Meldung. bufferMin wird auf 30 Sekunden zurückgesetzt wenn das Attribut wdTimer verändert wird.
        Wenn dlyMax hoch ist (mehrere Sekunden) oder bufferMin geht gegen "0" (normal ist 4) leidet das System unter den internen Verzögerungen. Den Gründen hierfür muss nachgegangen werdensystem. Als schnelle Lösung kann der Wert für wdTimer verkleinert werden, um HMLAN schneller zu triggern.
      • msgLoadCurrent
        Aktuelle Funklast des HMLAN. Da HMLAN nur eine begrenzte Kapzität je Stunde hat Telegramme abzusetzen stellt es bei 100% das Senden ein. Siehe auch loadLevel
      • msgLoadHistoryAbs
        IO Funkbelastung vergangener Zeitabschnitte.
      • msgParseDly
        Kalkuliert die Verzögerungen einer Meldung vom Zeitpunkt des Abschickens im HMLAN bis zu Verarbeitung in FHEM. Deshalb ist dies ein Indikator für die Leistungsfähigkeit des Systems von FHEM.
      Parameter und Readings
      • prot_disconnect
        letzter HMLAN disconnect
      • prot_init
        letzter HMLAN init
      • prot_keepAlive
        HMLAN unterbrochen, wahrscheinlich um langsame keep-alive Meldungen zu senden.
      • prot_ok
        letzte HMLAN ok Bedingung
      • prot_timeout
        letzter HMLAN Timeout
      • prot_Warning-HighLoad
        hohe Auslastung erreicht - HMLAN hat nur noch 10% seiner Leistungsfähigkeit übrig
      • prot_ERROR-Overload
        Überlastung - HMLAN wird zwar Meldungen empfangen aber keine Meldungen mehr absenden
      • prot_Overload-released
        Überlastung beendet - normale Arbeitsweise ist möglich
    =end html =cut

    HMS

      Define
        define <name> HMS <housecode>

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

    HMUARTLGW

      Das Modul HMUARTLGW ermöglicht die Anbindung des eQ-3 HomeMatic Wireless LAN Gateways (HM-LGW-O-TW-W-EU) und des eQ-3 HomeMatic UART Moduls (HM-MOD-UART), welches Teil des HomeMatic-Moduls für den Raspberry Pi (HM-MOD-RPI-PCB) ist.


      Define
        define <name> HMUARTLGW <device>

        Der Parameter <device> hängt vom eingesetzten Gerätetyp ab:
        • HM-MOD-UART: <device> ist die zu benutzende serielle Schnittstelle. Die Baudrate ist fest auf 115200 eingestellt und muss nicht angegeben werden.
          Falls der HM-MOD-UART über einen Seriell-zu-Ethernet-Konverter mit dem Netzwerk verbunden ist, muss die Definition in einem an URLs angelehnten Format geschehen (uart://ip:port).
        • HM-LGW-O-TW-W-EU: <device> gibt die IP-Adresse oder den Hostnamen des Gateways an, optional gefolgt von einem Doppelpunkt und der Portnummer des BidCos-Ports (Default falls nicht angegeben: 2000).


        Beispiele:
        • Lokaler HM-MOD-UART an der Schnittstelle /dev/ttyAMA0:
          define myHmUART HMUARTLGW /dev/ttyAMA0
           
        • LAN Gateway mit der IP-Adresse 192.168.42.23:
          define myHmLGW HMUARTLGW 192.168.42.23
           
        • Entfernter HM-MOD-UART unter Verwendung von socat auf einem Raspberry Pi:
          define myRemoteHmUART HMUARTLGW uart://192.168.42.23:12345

          Entfernter Raspberry Pi:
          $ socat TCP4-LISTEN:12345,fork,reuseaddr /dev/ttyAMA0,raw,echo=0,b115200

      Set

      • close
        Schließt die Verbindung zum Gerät.
      • hmPairForSec
      • hmPairSerial
      • open
        Öffnet die Verbindung zum Gerät und initialisiert es.
      • reopen
        Schlißt und öffnet die Verbindung zum Gerät und re-initialisiert es.
      • restart
        Rebootet das Gerät.
      • updateCoPro </path/to/firmware.eq3>
        Aktualisierung der Koprozessor-Firmware (Reading D-firmware) mit der angegebenen Datei. Quelle für Firmware-Images (Version 1.4.1, offizielles eQ-3 Repository):
        • HM-MOD-UART: coprocessor_update.eq3
        • HM-LGW-O-TW-W-EU: coprocessor_update_hm_only.eq3
          Bitte zusätzlich sicherstellen, dass die Version der D-LANfirmware mindestens 1.1.5 beträgt. Um auf diese Version zu aktualisieren können die eQ-3 CLI Tools (siehe Wiki) oder der eQ-3 Netfinder genutzt werden. Das passende Image ist: hm-lgw-o-tw-w-eu_update.eq3
          Die Datei hm-lgw-o-tw-w-eu_update.eq3 nicht mit updateCoPro flashen!

      Get

      • assignIDs
        Gibt die aktuell diesem IO-Gerät zugeordneten HomeMatic-Geräte zurück.

      Attribute
      • csmaCa
        Aktiviert oder deaktiviert CSMA/CA (Carrier sense multiple access with collision avoidance), auch bekannt als Listen-Before-Talk.
        Default: 0 (deaktiviert)
      • dummy
        Ermöglicht die Definition des Geräts ohne jegliche Interaktion mit einem physikalischen Gerät.
        Default: nicht gesetzt
      • dutyCycle
        Aktiviert oder deaktiviert die Überprüfung des Arbeitszyklus (1%-Regel) durch das Sendemodul.
        Die Abschaltung dieser Funktion kann in verschiedenen Ländern gegen das Gesetz verstossen, weshalb zuerst die Situation anhand lokaler Richtlinien zu prüfen ist!
        Default: 1 (aktiviert)
      • hmId
      • hmKey
      • hmKey2
      • hmKey3
      • lgwPw
        AES-Passwort für das eQ-3 HomeMatic Wireless LAN Gateway. Das initiale Passwort befindet sich auf der Rückseite des Geräts, kann aber durch den Benutzer geändert werden. Falls die AES gesicherte Kommunikation aktiviert ist (Auslieferungszustand), muss dieses Attribut auf den richtigen Wert gesetzt werden, da ansonsten keine Kommunikation möglich ist. Zusätzlich muss das Perl-Modul Crypt::Rijndael (stellt den AES-Algorithmus bereit) installiert sein.
      • logIDs
        Aktiviert die gezielte Erzeugung von Log-Nachrichten. Der Parameter ist eine durch Komma getrennte Liste an HMIds oder HM Geräte-/Kanalnamen, deren Nachrichten aufgezeichnet werden sollen.
        • all: Zeichnet die Rohnachrichten aller HMIds auf
        • sys: Zeichnet Systemnachrichten (z.B. Keep-Alive) auf
        Um alle möglichen Nachrichten aufzuzeichnen, kann all,sys genutzt werden.
      • qLen
        Maximale Anzahl an Kommandos in der internen Warteschlange des HMUARTLGW-Moduls. Neue Kommandos werden verworfen, wenn die Warteschlange gefüllt ist.
        Default: 20

    HMinfo

      Das Modul HMinfo ermöglicht einen Überblick über eQ-3 HomeMatic Geräte, die mittels CUL_HM definiert sind.

      Status Informationen und Zähler
      HMinfo gibt einen Überlick über CUL_HM Installationen einschliesslich aktueller Zustände. Readings und Zähler werden aus Performance Gründen nicht automatisch aktualisiert.
      Mit dem Kommando update können die Werte aktualisiert werden.

        set hm update

      Die Webansicht von HMinfo stellt Details über CUL_HM Instanzen mit ungewöhnlichen Zuständen zur Verfügung. Dazu gehören:
      • Action Detector Status
      • CUL_HM Geräte und Zustände
      • Ereignisse im Zusammenhang mit Kommunikationsproblemen
      • Zähler für bestimmte Readings und Zustände (z.B. battery) - attribut controlled
      • Zähler für Readings, die auf Fehler hindeuten (z.B. overheat, motorErr) - attribut controlled

      Weiterhin stehen HM Kommandos zur Verfügung, z.B. für das Speichern aller gesammelten Registerwerte.

      Ein Kommando wird für alle HM Instanzen der kompletten Installation ausgeführt. Die Ausführung ist jedoch auf die dazugehörigen Instanzen beschränkt. So wird rssi nur auf Geräte angewendet, da Kanäle RSSI Werte nicht unterstützen.

      Filter
        werden wie folgt angewendet:

        set <name> <cmd> <filter> [<param>]
        wobei sich filter aus Typ und Name zusammensetzt
        [-dcasev] [-f <filter>]

        Typ
        • d - device :verwende Gerät
        • c - channels :verwende Kanal
        • v - virtual :unterdrücke virtuelle Instanz
        • p - physical :unterdrücke physikalische Instanz
        • a - aktor :unterdrücke Aktor
        • s - sensor :unterdrücke Sensor
        • e - empty :verwendet das Resultat auch wenn die Felder leer sind
        • 2 - alias :2ter name alias anzeigen
        und/oder Name:
        • -f <filter> :Regulärer Ausdruck (regexp), um die Instanznamen zu filtern
        Beispiel:
          set hm param -d -f dim state # Zeige den Parameter 'state' von allen Geräten, die "dim" im Namen enthalten
          set hm param -c -f ^dimUG$ peerList # Zeige den Parameter 'peerList' für alle Kanäle mit dem Namen "dimUG"
          set hm param -dcv expert # Ermittle das Attribut expert für alle Geräte, Kanäle und virtuelle Instanzen

      Define
        define <name> HMinfo
        Es muss nur eine Instanz ohne jegliche Parameter definiert werden.

      Get
      • models
        zeige alle HM Modelle an, die von FHEM unterstützt werden
      • param [filter] <name> <name>...
        zeigt Parameterwerte (Attribute, Readings, ...) für alle Instanzen in Tabellenform an
      • register [filter]
        zeigt eine Tabelle mit Registern einer Instanz an
      • regCheck [filter]
        validiert Registerwerte
      • peerCheck [filter]
        validiert die Einstellungen der Paarungen (Peers). Hat ein Kanal einen Peer gesetzt, muss dieser auch auf der Gegenseite gesetzt sein.
      • peerXref [filter]
        erzeugt eine komplette Querverweisliste aller Paarungen (Peerings)
      • configCheck [filter]
        Plausibilitätstest aller HM Einstellungen inklusive regCheck und peerCheck
      • templateList [<name>]
        zeigt eine Liste von Vorlagen. Ist kein Name angegeben, werden alle Vorlagen angezeigt
      • templateUsg <template> [sortPeer|sortTemplate]
        Liste der genutzten templates.
        template filtert die Einträge nach diesem template
      • msgStat [filter]
        zeigt eine Statistik aller Meldungen der letzen Woche
      • protoEvents [filter]
        vermutlich die wichtigste Auflistung für Meldungsprobleme. Informationen über ausstehende Kommandos und fehlgeschlagene Sendevorgänge für alle Geräte in Tabellenform.
        Mit clear msgEvents kann die Statistik gelöscht werden.
      • rssi [filter]
        Statistik über die RSSI Werte aller HM Instanzen.
      • templateChk [filter] <template> <peer:[long|short]> [<param1> ...]
        Verifiziert, ob die Registerwerte mit der Vorlage in Einklang stehen.
        Die Parameter sind identisch mit denen aus templateSet.
        Wenn kein Peer benötigt wird, stattdessen none verwenden. Beispiele für die Überprüfung von Einstellungen
          set hm templateChk -f RolloNord BlStopUpLg none 1 2 # RolloNord, no peer, parameter 1 and 2 given
          set hm templateChk -f RolloNord BlStopUpLg peerName:long # RolloNord peerName, long only
          set hm templateChk -f RolloNord BlStopUpLg peerName # RolloNord peerName, long and short
          set hm templateChk -f RolloNord BlStopUpLg peerName:all # RolloNord peerName, long and short
          set hm templateChk -f RolloNord BlStopUpLg all:long # RolloNord any peer, long only
          set hm templateChk -f RolloNord BlStopUpLg all # RolloNord any peer,long and short
          set hm templateChk -f Rollo.* BlStopUpLg all # each Rollo* any peer,long and short
          set hm templateChk BlStopUpLg # each entities
          set hm templateChk # all assigned templates
          set hm templateChk sortTemplate # all assigned templates, sort by template
          set hm templateChk sortPeer # all assigned templates, sort by peer
      Set
        Obwohl die Kommandos Einstellungen abrufen (get function), werden sie mittels set ausgeführt, um die Benutzung mittels Web Interface zu erleichtern.
        • update
          Aktualisiert HM Status Zähler.
        • autoReadReg [filter]
          Aktiviert das automatische Lesen der Konfiguration für ein CUL_HM Gerät, wenn das Attribut autoReadReg auf 1 oder höher steht.
        • clear [filter] [msgEvents|readings|msgStat|register|rssi]
          Führt ein set clear ... für alle HM Instanzen aus
          • Protocol bezieht sich auf set clear msgEvents
          • readings bezieht sich auf set clear readings
          • rssi löscht alle rssi Zähler
          • msgStat löscht die HM Meldungsstatistik
          • register löscht alle Einträge in den Readings
        • saveConfig [filter] [<file>]
          Sichert alle HM Registerwerte und Peers. Siehe CUL_HM saveConfig.
          purgeConfig wird automatisch ausgeführt, wenn die Datenmenge 1 MByte übersteigt.
        • archConfig [filter] [<file>]
          Führt saveConfig für alle Instanzen aus, sobald sich deren Konfiguration ändert. Es schont gegenüber saveConfig die Resourcen, da es nur vollständige Konfigurationen sichert.
          Die Option -a erzwingt das sofortige Archivieren für alle Geräte, die eine vollständige Konfiguration aufweisen.
        • loadConfig [filter] [<file>]
          Lädt Register und Peers aus einer zuvor mit saveConfig gesicherten Datei.
          Es sollte mit Vorsicht verwendet werden, da es Daten zu FHEM hinzufügt, die nicht verifiziert sind. Readings werden nicht ersetzt, nur fehlende Readings werden hinzugefügt. Der Befehl ist dazu geignet, um Readings zu erstellen, die schwer zu erhalten sind. Readings von Geräten, die nicht dauerhaft empfangen sondern nur auf Tastendruck aufwachen (z.B. Türsensoren), können nicht ohne Weiteres gelesen werden.
          Daher liegt es in der Verantwortung des Benutzers gültige Werte zu verwenden. Es sollte autoReadReg für Geräte verwendet werden, die einfach ausgelesen werden können.
          Der Befehl aktualisiert lediglich FHEM Readings und Attribute. Die Programmierung des Gerätes wird nicht verändert.
        • purgeConfig [filter] [<file>]
          Bereinigt die gespeicherte Konfigurationsdatei. Durch die kumulative Speicherung der Registerwerte bleiben die zuletzt gespeicherten Werte erhalten und alle älteren werden gelöscht. Siehe CUL_HM saveConfig.
        • verifyConfig [filter] [<file>]
          vergleicht die aktuellen Daten mit dem configFile und zeigt unterschiede auf. Es ist hilfreich wenn man eine bekannt gute Konfiguration gespeichert hat und gegen diese vergleiche will. Ein purge vorher macht sinn. Siehe CUL_HM purgeConfig.

        • tempList [filter][save|restore|verify] [<file>]
          Diese Funktion ermöglicht die Verarbeitung von temporären Temperaturlisten für Thermostate. Die Listen können in Dateien abgelegt, mit den aktuellen Werten verglichen und an das Gerät gesendet werden.
        • save speichert die aktuellen tempList Werte des Systems in eine Datei.
          Zu beachten ist, dass die aktuell in FHEM vorhandenen Werte benutzt werden. Der Benutzer muss selbst sicher stellen, dass diese mit den Werten im Gerät überein stimmen.
          Der Befehl arbeitet nicht kummulativ. Alle evtl. vorher in der Datei vorhandenen Werte werden überschrieben.
        • restore in der Datei gespeicherte Termperaturliste wird direkt an das Gerät gesendet.
        • verify vergleicht die Temperaturliste in der Datei mit den aktuellen Werten in FHEM. Der Benutzer muss selbst sicher stellen, dass diese mit den Werten im Gerät überein stimmen.
        • status gibt einen Ueberblick aller genutzten template files. Ferner werden vorhandene templates in den files gelistst.
        • genPlot erzeugt einen Satz Daten um temp-templates graphisch darzustellen
          Aus den gegebenen template-file wird ein .log erweitertes file erzeugt welches log-formatierte daten beinhaltet. Zeitmarken sind auf Beginn 2000 terminiert.
          Ein .gplot file wird in der gplt directory erzeugt.
          Eine Logfile-entity _Log, falls nicht vorhanden, wird erzeugt.
          Eine SVG-entity _SVG, falls nicht vorhanden, wird erzeugt.

        • filename Name der Datei. Vorgabe ist tempList.cfg
        • Beispiel für einen Dateiinhalt:
            entities:HK1_Climate,HK2_Clima
            tempListFri>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 14.0
            tempListMon>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
            tempListSat>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
            tempListSun>08:00 14.0 15:00 18.0 21:30 19.0 24:00 14.0
            tempListThu>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
            tempListTue>07:00 14.0 13:00 16.0 16:00 18.0 21:00 19.0 24:00 15.0
            tempListWed>07:00 14.0 16:00 18.0 21:00 19.0 24:00 14.0
            entities:hk3_Climate
            tempListFri>06:00 17.0 12:00 21.0 23:00 20.0 24:00 19.5
            tempListMon>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
            tempListSat>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
            tempListSun>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
            tempListThu>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
            tempListTue>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
            tempListWed>06:00 17.0 12:00 21.0 23:00 20.0 24:00 17.0
          Datei Schlüsselwörter
        • entities mittels Komma getrennte Liste der Instanzen für die die nachfolgende Liste bestimmt ist. Es muss die tatsächlich für die Temperaturliste zuständige Instanz angegeben werden. Bei RTs ist das der Kanal 04, bei TCs der Kanal 02.
        • tempList... Zeiten und Temperaturen sind genau wie im Befehl "set tempList" anzugeben


        • cpRegs <src:peer> <dst:peer>
          ermöglicht das Kopieren von Registern, Einstellungen und Verhalten zwischen gleichen Kanälen, bei einem Peer auch zwischen unterschiedlichen Kanälen. Das Kopieren kann daher sowohl von Gerät zu Gerät, als auch innerhalb eines Gerätes stattfinden.
          src:peer ist die Quell-Instanz. Der Peer muss angegeben werden, wenn dessen Verhalten kopiert werden soll.
          dst:peer ist die Ziel-Instanz.
          Beispiel:
            set hm cpRegs blindR blindL # kopiert alle Register (list 1) des Kanals von blindR nach blindL einschliesslich z.B. der Rolladen Fahrzeiten. Register, die den Peer betreffen (list 3/4), werden nicht kopiert.
            set hm cpRegs blindR:Btn1 blindL:Btn2 # kopiert das Verhalten der Beziehung Btn1/blindR nach Btn2/blindL
            set hm cpRegs blindR:Btn1 blindR:Btn2 # kopiert das Verhalten der Beziehung Btn1/blindR nach Btn2/blindR, hier innerhalb des Aktors

          Einschränkungen:
            cpRegs verändert keine Peerings oder liest direkt aus den Geräten. Die Readings müssen daher aktuell sein.
            cpRegs kann nur auf identische Gerätemodelle angewendet werden
            cpRegs erwartet aktuelle Readings. Dies muss der Benutzer sicher stellen.
        • templateDef <name> <param> <desc> <reg1:val1> [<reg2:val2>] ...
          definiert eine Vorlage.
          param definiert die Namen der Parameters, die erforderlich sind, um die Vorlage auszuführen. Diese sind abhängig von der Vorlage und können onTime oder brightnesslevel sein. Bei einer Liste mehrerer Parameter müssen diese mittels Kommata separiert werden.
          param1:param2:param3
          Der Parameter del führt zur Löschung der Vorlage.
          desc eine Beschreibung für die Vorlage
          reg:val der Name des Registers und der dazugehörige Zielwert.
          Wenn das Register zwischen long und short unterscheidet, muss das führende sh oder lg weggelassen werden.
          Parameter müssen mit p angegeben werden, p0 für den ersten, p1 für den zweiten usw.
          Beispiel
            set hm templateDef SwOnCond level:cond "my description" CtValLo:p0 CtDlyOn:p1 CtOn:geLo
            set hm templateDef SwOnCond del # lösche template SwOnCond
            set hm templateDef SwOnCond fromMaster <masterChannel> <peer:[long|short]># masterKanal mit peer wird als Vorlage genommen
            set hm templateDef SwOnCond fromMaster myChannel peerChannel:long
        • templateSet <entity> <template> <peer:[long|short]> [<param1> ...]
          setzt mehrere Register entsprechend der angegebenen Vorlage. Die Parameter müssen entsprechend der Vorlage angegeben werden.
          templateSet akkumuliert alle Änderungen und schreibt das Ergebnis gesammelt.
          entity: ist die Quell-Instanz. Der Peer muss angegeben werden, wenn dessen Verhalten kopiert werden soll.
          template: eine der vorhandenen Vorlagen
          peer: [long|short]:falls erforderlich muss der Peer angegeben werden. Wird kein Peer benötigt, '0' verwenden. Bei einem Peer muss für den Tastendruck long oder short angegeben werden.
          param: Nummer und Bedeutung des Parameters hängt von der Vorlage ab.
          Ein Beispiel könnte sein (theoretisch, ohne die Vorlage anzugeben)
            set hm templateSet Licht1 staircase FB1:short 20
            set hm templateSet Licht1 staircase FB1:long 100
          Einschränkungen:
            Der Benutzer muss aktuelle Register/Konfigurationen sicher stellen.
            templateSet konfiguriert ggf. nur einzelne Register und keinen vollständigen Satz. Dies hängt vom Design der Vorlage ab.

        • templateDel <entity> <template> <peer:[long|short]>
          entfernt ein Template das mit templateSet eingetragen wurde
        • templateExe <template>
          führt das templateSet erneut aus. Die Register werden nochmals geschrieben, falls sie nicht zum template passen.

      Attribute
      • sumStatus
        erzeugt eine Liste von Warnungen. Die zu untersuchenden Readings werden mittels Komma separiert angegeben. Die Readings werden, so vorhanden, von allen Instanzen ausgewertet, gezählt und getrennt nach Readings mit gleichem Inhalt ausgegeben.
        Beispiel:
          attr hm sumStatus battery,sabotageError
        könnte nachfolgende Ausgaben erzeugen
        W_sum_batterie ok:5 low:3
        W_sum_sabotageError on:1

        Anmerkung: Zähler mit Werten von '0' werden nicht angezeigt. HMinfo findet alle vorhanden Werte selbstständig.
        Das Setzen des Attributes ermöglicht einen schnellen Überblick über systemkritische Werte.
      • sumERROR Ähnlich sumStatus, jedoch mit dem Fokus auf signifikante Fehler. Hier können Reading Werte angegeben werden, die dazu führen, dass diese nicht angezeigt werden. Damit kann beispielsweise verhindert werden, dass der zu erwartende Normalwert oder ein anderer nicht kritischer Wert angezeigt wird.
        Beispiel:
          attr hm sumERROR battery:ok,sabotageError:off,overheat:off,Activity:alive:unknown
        erzeugt folgende Ausgabe:
          ERR_batterie low:3
          ERR_sabotageError on:1
          ERR_overheat on:3
          ERR_Activity dead:5
      • autoUpdate führt den Befehl periodisch aus.
        Beispiel:
          attr hm autoUpdate 00:10
        führt den Befehl alle 10 Minuten aus
      • autoArchive Sobald neue Daten verfügbar sind, wird das configFile aktualisiert. Für die Aktualisierung ist autoUpdate zwingend erforderlich.
        siehe auch archConfig
      • hmAutoReadScan definiert die Zeit in Sekunden bis zum nächsten autoRead durch CUL_HM. Trotz dieses Zeitwertes stellt FHEM sicher, dass zu einem Zeitpunkt immer nur ein Gerät gelesen wird, auch wenn der Minimalwert von 1 Sekunde eingestellt ist. Mit dem Timer kann der Zeitabstand ausgeweitet werden - bis zu 300 Sekunden zwischen zwei Ausführungen.
        Das Herabsetzen erhöht die Funkbelastung, Heraufsetzen erhöht die Wartzezeit.
      • hmIoMaxDly maximale Zeit in Sekunden für die CUL_HM Meldungen puffert, wenn das Gerät nicht sendebereit ist. Ist das Gerät nicht wieder rechtzeitig sendebereit, werden die gepufferten Meldungen verworfen und IOErr ausgelöst.
        Hinweis: Durch die Pufferung kann es vorkommen, dass Aktivität lange nach dem Absetzen des Befehls stattfindet.
        Standard ist 60 Sekunden, maximaler Wert ist 3600 Sekunden.
      • configDir Verzeichnis für das Speichern und Lesen der Konfigurationsdateien, sofern in einem Befehl nur ein Dateiname ohne Pfad angegen wurde.
        Verwendung beispielsweise bei tempList oder saveConfig
      • configFilename Standard Dateiname zur Verwendung von saveConfig, purgeConfig, loadConfig
      • configTempFile<,configTempFile2><,configTempFile2> Liste der Templfiles (weekplan) welche in HM berücksichtigt werden
        Die Files werden kommasepariert eingegeben. Das erste File ist der Default. Dessen Name muss beim Template nicht eingegeben werden.
      • hmManualOper auf 1 gesetzt, verhindert dieses Attribut jede automatische Aktion oder Aktualisierung seitens CUL_HM.
      • hmDefaults setzt default Atribute fuer HM devices. Mehrere Attribute sind moeglich, Komma separiert.
        Beispiel:
        attr hm hmDefaults hmProtocolEvents:0_off,rssiLog:0
      • autoLoadArchive das Register Archive sowie Templates werden nach reboot automatischgeladen. Siehe loadConfig fuer details

      Variablen
      • I_autoReadPend: Info: Liste der Instanzen, für die das Lesen von Konfiguration und Status ansteht, üblicherweise ausgelöst durch autoReadReg.
      • ERR___rssiCrit: Fehler: Liste der Geräte mit kritischem RSSI Wert
      • W_unConfRegs: Warnung: Liste von Instanzen mit unbestätigten Änderungen von Registern. Die Ausführung von getConfig ist für diese Instanzen erforderlich.
      • I_rssiMinLevel: Info: Anzahl der niedrigen RSSI Werte je Gerät, in Blöcken angeordnet.
      • ERR__protocol: Fehler: Anzahl nicht behebbarer Protokollfehler je Gerät. Protokollfehler sind NACK, IOerr, ResendFail, CmdDel, CmdPend.
        Gezählt wird die Anzahl der Geräte mit Fehlern, nicht die Anzahl der Fehler!
      • ERR__protoNames: Fehler: Liste der Namen der Geräte mit nicht behebbaren Protokollfehlern
      • I_HM_IOdevices: Info: Liste der IO Geräte, die von CUL_HM Instanzen verwendet werden
      • I_actTotal: Info: Status des Actiondetectors, Zähler für Geräte mit bestimmten Status
      • ERRactNames: Fehler: Namen von Geräten, die der Actiondetector als ausgefallen meldet
      • C_sumDefined: Count: In CUL_HM definierte Instanzen. Instanzen können als Gerät UND als Kanal gezählt werden, falls die Funktion des Kanals durch das Gerät selbst abgedeckt ist. Ähnlich virtual
      • ERR_<reading>: Fehler: Anzahl mittels Attribut sumERROR definierter Readings, die nicht den Normalwert beinhalten.
      • ERR_names: Fehler: Namen von Instanzen, die in einem ERR_<reading> enthalten sind.
      • W_sum_<reading> Warnung: Anzahl der mit Attribut sumStatus definierten Readings.
      • Beispiele:
          ERR___rssiCrit LightKittchen,WindowDoor,Remote12
          ERR__protocol NACK:2 ResendFail:5 CmdDel:2 CmdPend:1
          ERR__protoNames LightKittchen,WindowDoor,Remote12,Ligth1,Light5
          ERR_battery: low:2;
          ERR_names: remote1,buttonClara,
          I_rssiMinLevel 99>:3 80<:0 60<:7 59<:4
          W_sum_battery: ok:5;low:2;
          W_sum_overheat: off:7;
          C_sumDefined: entities:23 device:11 channel:16 virtual:5;

    HMtemplate

    HOMBOT

      HOMBOT - LG Homebot Staubsaugerroboter
      Dieses Modul gibt Euch die Möglichkeit Euren Hombot nach erfolgreichen Hack in FHEM ein zu binden. Voraussetzung ist das Ihr den Hombot Hack gemacht und einen WLAN Stick eingebaut habt. Als Schnittstelle zwischen FHEM und Bot wird der Luigi HTTP Server verwendet. Was genau könnt Ihr nun mit dem Modul machen:
      • Readings über den Status des Hombots werden angelegt
      • Auswahl des Reinigungsmodus ist möglich
      • Starten der Reinigung
      • Beenden der Reinigung
      • zurück zur Homebase schicken
      • Namen vergeben
      • Wochenprogramm einstellen
      • Repeat und Turbo aktivieren

      !!! Voraussetzungen schaffen !!!
      Ihr benötigt zum verwenden des Modules die Programme ssh und sshpass. Desweiteren muß im Homeverzeichnis des fhem Users das Verzeichniss .ssh existieren und darin die Datei known_hosts. Diese sollte eine Passphrass des Bots beinhalten. Am besten Ihr macht als normaler User eine ssh Session zum Bot und kopiert danach die known_hosts Eures normalen Users in das .ssh Verzeichnis des fhem Users. Rechte anpassen nicht vergessen.
      Das Device für den Hombot legt Ihr wie folgt in FHEM an.

      Define

        define <name> HOMBOT <IP-ADRESSE>

        Beispiel:

          define Roberta HOMBOT 192.168.0.23

        Diese Anweisung erstellt ein neues HOMBOT-Device im Raum HOMBOT.Der Parameter <IP-ADRESSE> legt die IP Adresse des LG Hombot fest.
        Das Standard Abfrageinterval ist 180 Sekunden und kann über das Attribut intervall geändert werden. Das Interval ist in Abhängigkeit des Arbeitsstatus dynamisch. Im Status WORKING beträgt es z.B. 30 Sekunden.


      Nach anlegen der Geräteinstanz sollten bereits die ersten Readings erscheinen.


      Readings
      • at_* - Reading für das Wochenprogramm. Startzeit für den jeweiligen Tag
      • batteryPercent - Status der Batterie in %
      • cleanMode - aktuell eingestellter Reinigungsmodus
      • cpu_* - Informationen über die Prozessorauslastung
      • currentBumping - Anzahl der Zusammenstöße mit Hindernissen
      • firmware - aktuell installierte Firmwareversion
      • hombotState - Status des Hombots
      • lastClean - Datum und Uhrzeit der letzten Reinigung
      • lastSetCommandError - letzte Fehlermeldung vom set Befehl
      • lastSetCommandState - letzter Status vom set Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
      • lastStatusRequestError - letzte Fehlermeldung vom statusRequest Befehl
      • lastStatusRequestState - letzter Status vom statusRequest Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
      • luigiSrvVersion - Version des Luigi HTTP Servers auf dem Hombot
      • nickname - Name des Hombot
      • num* - Bisher begonnene und beendete Reinigungen im entsprechenden Modus
      • repeat - Reinigung wird wiederholt Ja/Nein
      • state - Modulstatus
      • turbo - Turbo aktiv Ja/Nein


      Set
      • cleanMode - setzen des Reinigungsmodus (ZZ-ZickZack / SB-Cell by Cell / SPOT-Spiralreinigung
      • cleanStart - Reinigung starten
      • homing - Beendet die Reinigung und lässt die Bot zurück zur Bases kommen
      • nickname - setzt des Bot-Namens. Wird im Reading erst nach einem neustart des Luigiservers oder des Bots sichtbar
      • pause - lässt den Reinigungsproßess pausieren
      • repeat - Reinigung wiederholen? (true/false)
      • schedule - setzen des Wochenprogrammes Bsp. set Roberta schedule Mo=13:30 Di= Mi=14:00,ZZ Do=15:20 Fr= Sa=11:20 So= Man kann also auch den Modus mitgeben!
      • statusRequest - Fordert einen neuen Statusreport beim Device an
      • turbo - aktivieren des Turbomodus (true/false)


    HP1000

      Define
        define <WeatherStation> HP1000 [<ID> <PASSWORD>]

        Stellt einen Webhook für die WLAN-basierte HP1000 oder WH2600 Wetterstation von Fine Offset Electronics bereit (z.B. auch bekannt als Ambient Weather WS-1001-WIFI).
        Es muss noch eine dedizierte FHEMWEB Instanz angelegt werden, wo das Attribut webname auf "weatherstation" gesetzt wurde.
        Kein anderer Name funktioniert, da dieser hard im HP1000/WH2600 Gerät hinterlegt ist!
        Sofern notwendig, erstellt dieses Modul eine passende FHEMWEB Instanz namens WEBweatherstation während der initialen Definition.

        Da die URI ebenfalls fest kodiert ist, kann mit einer einzelnen FHEM Installation maximal eine HP1000/WH2600 Station gleichzeitig verwendet werden.

        Beispiel:
        # ungeschützte Instanz bei der ID und PASSWORD ignoriert werden
        define WeatherStation HP1000

        # geschützte Instanz: Die Wetterstation muss so konfiguriert sein, dass sie
        # diese ID und PASSWORD sendet, damit Daten akzeptiert werden
        define WeatherStation HP1000 MyHouse SecretPassword

        WICHTIG: Im HP1000/WH2600 Gerät selbst muss sichergestellt sein, dass ein DNS Name statt einer IP Adresse verwendet wird, da einige Revisionen damit nicht umgehen können.

      Attributes
      • readingFnAttributes

      • wu_id
      • Weather Underground (Wunderground) Stations ID
      • wu_password
      • Weather Underground (Wunderground) Passwort
      • wu_push
      • Pushen der Daten zu Weather Underground aktivieren oder deaktivieren (Standard ist 0=aus)
      • wu_realtime
      • Sendet die Daten an den WU Echtzeitserver statt an den Standard Server (Standard ist 1=an)

    HTTPMOD

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

    HTTPSRV

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

    HUEBridge

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

    HUEDevice

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

    HXB

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

    HXBDevice

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

    Heating Control


      Define
        define <name> Heating_Control <device> [<language>] <wochentage;] <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|desiredTemperature) <temp>

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

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

        Folgende Parameter sind im Define definiert:

          device
          Name des zu schaltenden Device.

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

          wochentage
          Spezifiziert die Tage für alle Timer eines Heating_Control. Der Parameter ist optional. Bitte für Details zur Definition siehe wochentage im part profile.

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

          Wochentage: optionale Angabe, falls nicht gesetzt wird der Schaltpunkt jeden Tag ausgeführt. Für die Tage an denen dieser Schaltpunkt aktiv sein soll, ist jeder Tag mit seiner Tagesnummer (Mo=1, ..., So=0) oder Name des Tages (Mo, Di, ..., So) einzusetzen.

          • 0,so Sonntag
          • 1,mo Montag
          • 2,di Dienstag
          • 3,mi Mittwoch
          • 4 ...
          • 7,$we Wochenende ($we)
          • 8,!$we Wochentag (!$we)

          Es ist möglich $we or !$we in der Tagesliste zu definieren. So ist es auf einfache Art möglich die Schaltzeitpunkte für das Wochenende oder Wochetage zu definieren. $we und!$we werden als 7 bzw. 8 spezifiziert, wenn die numerische Variante der Tagesliste gewählt wird.

          Uhrzeit:Angabe der Uhrzeit zu der geschaltet werden soll, Format: HH:MM:[SS](HH im 24 Stunden Format) oder eine Perlfunction wie {sunrise_abs()}. In {} kannst du die Variable $date(epoch) nutzen, um die Schaltzeiten der Woche zu berechnen. Beispiel: {sunrise_abs_dat($date)}

          Parameter:Angabe der zu setzenden Temperatur als Zahl mit Format 99.9 oder als symbolische Konstante eco or comfort - was immer das Heizkörperthermostat versteht. Symbolischen Werten kann ein zusätzlicher Parameter angehängt werden: dayTemp:16 night-temp:15. Unten folgen Beispiele

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

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

        Beispiele:

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

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

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

          define HCW Heating_Control WZ_Heizung en Su-Fr|{sunrise_abs()}|21 Mo-Fr|{sunset_abs()}|16
          Das Gerät wird bei Sonnenaufgang und Sonnenuntergang geschaltet. Sprache: Englisch.

          define HCW Heating_Control WZ_Heizung en Mo-Fr|{myFunction}|night-temp:18 Mo-Fr|{myFunction()}|dayTemp:16
          Das Gerät wird bei myFunction() geschaltet. Es wird das Kommando "night-temp 18" bzw. "dayTemp 16" gesendet.

          Wenn du beispielsweise nach einer Temperaturabsenkungsphase erreichen willst, dass alle Heating_Controls ihren aktuellen Wert einstellen sollen, kannst du die Funktion Heating_Control_SetTemp("HC-device") or Heating_Control_SetAllTemps() aufrufen.

          Dieser Aufruf kann per notify automatisch an ein dummy gekoppelt werden:
          define HeizStatus2 notify Heizung:.* {Heating_Control_SetAllTemps()}

          Einige Definitionen ohne weitere Erklärung:

           
                  define hc    Heating_Control  HeizungKueche de        7|23:35|25        34|23:30|22 23:30|16 23:15|22     8|23:45|16 
                  define hc    Heating_Control  HeizungKueche de        fr,$we|23:35|25   34|23:30|22 23:30|16 23:15|22    12|23:45|16  
                  define hc    Heating_Control  HeizungKueche de        20:35|25          34|14:30|22 21:30|16 21:15|22    12|23:00|16 
                  
                  define hw    Heating_Control  HeizungKueche de        mo-so, $we|{sunrise_abs_dat($date)}|18      mo-so, $we|{sunset_abs_dat($date)}|22  
                  define ht    Heating_Control  HeizungKueche de        mo-so,!$we|{sunrise_abs_dat($date)}|18      mo-so,!$we|{sunset_abs_dat($date)}|22 
                  
                  define hh    Heating_Control  HeizungKueche de        {sunrise_abs_dat($date)}|19           {sunset_abs_dat($date)}|21  
                  define hx    Heating_Control  HeizungKueche de        22:35|25  23:00|16    
                  
          Die Tagesliste kann global für das ganze Heating_Control angegeben werden:

                  define HeizungWohnen_an_wt    Heating_Control HeizungWohnen de  !$we     09:00|19  (heizungAnAus("Ein"))  
                  define HeizungWohnen_an_we    Heating_Control HeizungWohnen de   $we     09:00|19  (heizungAnAus("Ein"))  
                  define HeizungWohnen_an_we    Heating_Control HeizungWohnen de   78      09:00|19  (heizungAnAus("Ein"))  
                  define HeizungWohnen_an_we    Heating_Control HeizungWohnen de   57      09:00|19  (heizungAnAus("Ein"))  
                  define HeizungWohnen_an_we    Heating_Control HeizungWohnen de  fr,$we   09:00|19  (heizungAnAus("Ein"))  
                  
          es ist möglich den Parameter als Perlcode zu spezifizieren:

                  ...   7|23:35|{getParameter(13,"this")}   7|23:36|{getParameter(14,"that")}
                  
          ein detailiertes Beispiel ist in Heating_Control(EN) beschrieben

      Set set <name> <value>

      where value is one of:
          enable                # enables  the Heating_Control
          disable               # disables the Heating_Control
          
      Examples:
        set hc disable
        set hc enable
    Get
      N/A

    Attributes
    • delayedExecutionCond
      definiert eine Veroegerungsfunktion. Wenn die Funktion wahr liefert, wird die Schaltung des Geraets solage verzoegert, bis die Funktion wieder falsch liefert. Das Verhalten entspricht einem Fensterkontakt.

      Beispiel:
          attr wd delayedExecutionCond isDelayed("$HEATING_CONTROL","$WEEKDAYTIMER","$TIME","$NAME","$EVENT")  
          
      Die Parameter $HEATING_CONTROL(timer Name) $TIME $NAME(device Name) $EVENT werden zur Laufzeit durch die echten Werte ersetzt.

      Beispielfunktion:
          sub isDelayed($$$$$) {
             my($hc, $wdt, $tim, $nam, $event ) = @_;
             
             my $theSunIsStillshining = ...
          
             return ($tim eq "16:30" && $theSunIsStillshining) ;    
          }
          
    • switchInThePast
      Definiert, dass ein abhängiges Gerät in der Start- oder Definitionsphase mit einem Wert aus der Vergangheit geschaltet wird auch wenn das Gerät nicht als Heizung erkannt wurde. Heizungen werden immer mit einem Wert aus der Vergangenheit geschaltet.
    • disable
    • event-on-update-reading
    • event-on-change-reading
    • stateFormat
    • windowSensor
      Definiert eine Liste mit Fensterkontakten. Wenn das Reading window state eines Fensterkontakts open ist, wird der aktuelle Schaltvorgang verzögert.

    Hideki

      Das Hideki module dekodiert empfangene Nachrichten von Wettersensoren, welche das Hideki Protokoll verwenden.

      Unterstuetzte Hersteller
      • Hama
      • Bresser
      • TFA Dostman
      • Arduinos with remote Sensor lib from Randy Simons
      • Cresta
      • Hideki
      • Alle anderen, welche das Hideki Protokoll verwenden
      Hinweis, Aktuell sind nur temp/feuchte Sensoren implementiert. Bitte sendet uns Daten zu anderen Sensoren. Define
      • define <name> Hideki <code>

      • <code> besteht aus dem Sensortyp und der Kanalnummer (1..5) oder wenn das Attribut longid im IO Device gesetzt ist aus einer Zufallsadresse, die durch den Sensor beim einlegen der Batterie generiert wird (Die Adresse aendert sich bei jedem Batteriewechsel).
      • Wenn autocreate aktiv ist, dann wird der Sensor automatisch in FHEM angelegt. Das ist der empfohlene Weg, neue Sensoren hinzuzufügen.

      Erzeugte Readings
      • state (T:x H:y B:z)
      • temperature (°C)
      • humidity (0-100)
      • battery (ok or low)
      • channel (Der Sensor Kanal)
      Set
        N/A

      Get
        N/A

      Attribute
      • do_not_notify
      • eventMap
      • ignore
      • showtime
      • readingFnAttributes

    HourCounter

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

    Hyperion

      Mit Hyperion ist es möglich auf einem Hyperion Server die Farbe oder den Effekt einzustellen.
      Es ist auch möglich eine komplette Farbkalibrierung vorzunehmen (Änderungen sind temporär und werden nicht in die Konfigurationsdatei geschrieben).
      Der Hyperion Server muss dem JSON Server aktiviert haben.
      Es ist auch möglich Hyperion mit verschiedenen Konfigurationsdateien zu starten (z.B. mit anderem Eingang/Grabber)

      Define

        define <name> Hyperion <IP oder HOSTNAME> <PORT> [<INTERVAL>]

      <INTERVAL> ist optional für automatisches Abfragen.

      Nach dem Definieren des Gerätes wird einmalig und automatisch "get <name> statusRequest" aufgerufen um den aktuellen Status und die verfügbaren Effekte vom Hyperion Server zu holen.

      Beispiel für Hyperion auf dem lokalen System:

        define Ambilight Hyperion localhost 19444 10

      Beispiel für Hyperion auf einem entfernten System:

        define Ambilight Hyperion 192.168.1.4 19444 10

      set <benötigt> [optional]

      • addEffect <eigener_name>
        fügt den aktuellen Effekt mit dem übergebenen Namen den eigenen Effekten hinzu
        kann nachträglich im Attribut hyperionCustomEffects geändert werden
        Gerät muss dazu im Effekt Modus in einen nicht-eigenen Effekt sein und der übergebene Name muss ein einmaliger Effektname sein
      • adjustBlue <0,0,255>
        Justiert jede Farbe von Blau separat (Komma separiert) (R,G,B)
        Werte von 0 bis 255 in Schritten von 1
      • adjustGreen <0,255,0>
        Justiere jede Farbe von Grün separat (Komma separiert) (R,G,B)
        Werte von 0 bis 255 in Schritten von 1
      • adjustRed <255,0,0>
        Justiert jede Farbe von Rot separat (Komma separiert) (R,G,B)
        Werte von 0 bis 255 in Schritten von 1
      • blacklevel <0.00,0.00,0.00>
        Justiert den Schwarzwert von jeder Farbe separat (Komma separiert) (R,G,B)
        Werte von 0.00 bis 1.00 in Schritten von 0.01
      • clear <1000>
        einen bestimmten Prioritätskanal löschen
      • clearall
        alle Prioritätskanäle löschen / Umschaltung auf Ambilight
      • colorTemperature <255,255,255>
        Justiert die Temperatur von jeder Farbe separat (Komma separiert) (R,G,B)
        Werte von 0 bis 255 in Schritten von 1
      • configFile <Dateiname>
        Neustart des Hyperion Servers mit der angegebenen Konfigurationsdatei (Dateien werden automatisch aufgelistet aus Verzeichnis welches im Attribut hyperionConfigDir angegeben ist)
        Bitte die doppelte Endung weglassen (.config.json)
        Nur verfügbar nach erfolgreichem "get <name> configFiles"
      • correction <255,255,255>
        Justiert die Korrektur von jeder Farbe separat (Komma separiert) (R,G,B)
        Werte von 0 bis 255 in Schritten von 1
      • dim <Prozent> [Dauer] [Priorität]
        Dimmt das RGB Licht auf angegebenen Prozentwert, mit optionaler Dauer in Sekunden und optionaler Priorität
      • dimDown [delta]
        Abdunkeln des RGB Lichts um angegebenen Prozentwert oder um Prozentwert der im Attribut hyperionDimStep eingestellt ist (Voreinstellung: 10)
      • dimUp [delta]
        Aufhellen des RGB Lichts um angegebenen Prozentwert oder um Prozentwert der im Attribut hyperionDimStep eingestellt ist (Voreinstellung: 10)
      • effect <effect> [Dauer] [Priorität] [effectargs]
        Stellt gewählten Effekt ein (ersetzte Leerzeichen mit Unterstrichen) mit optionaler Dauer in Sekunden und optionaler Priorität
        effectargs können ebenfalls übermittelt werden - muss ein JSON String ohne Leerzeichen sein
      • gamma <1.90,1.90,1.90>
        Justiert Gamma von jeder Farbe separat (Komma separiert) (R,G,B)
        Werte von 0.00 bis 5.00 in Schritten von 0.01
      • luminanceGain <1.00>
        Justiert Helligkeit
        Werte von 0.00 bis 5.00 in Schritten von 0.01
      • luminanceMinimum <0.00>
        Justiert Hintergrundbeleuchtung
        Werte von 0.00 bis 5.00 in Schritten von 0.01
      • mode <clearall|effect|off|rgb>
        Setzt das Licht im gewählten Modus mit dem zuletzt für diesen Modus eingestellten Wert
      • off
        Schaltet aus mit Farbe schwarz
      • on
        Schaltet mit letztem Modus und letztem Wert ein
      • rgb <RRGGBB> [Dauer] [Priorität]
        Setzt Farbe im RGB Hex Format mit optionaler Dauer in Sekunden und optionaler Priorität
      • saturationGain <1.10>
        Justiert Sättigung
        Werte von 0.00 bis 5.00 in Schritten von 0.01
      • saturationLGain <1.00>
        Justiert minimale Sättigung
        Werte von 0.00 bis 5.00 in Schritten von 0.01
      • threshold <0.16,0.16,0.16>
        Justiert den Schwellenwert von jeder Farbe separat (Komma separiert) (R,G,B)
        Werte von 0.00 bis 1.00 in Schritten von 0.01
      • toggle
        Schaltet zwischen an und aus hin und her
      • toggleMode
        Schaltet alle Modi durch
      • valueGain <1.70>
        Justiert Helligkeit vom Ambilight
        Werte von 0.00 bis 5.00 in Schritten von 0.01
      • whitelevel <0.70,0.80,0.90>
        Justiert den Weißwert von jeder Farbe separat (Komma separiert) (R,G,B)
        Werte von 0.00 bis 1.00 in Schritten von 0.01

      Get

      • configFiles
        Holt die verfügbaren Konfigurationsdateien aus dem Verzeichnis vom Attribut hyperionConfigDir
        Es müssen mindestens zwei Konfigurationsdateien im Verzeichnis vorhanden sein. Die Dateien dürfen keine Leerzeichen enthalten und müssen mit .config.json enden!
      • devStateIcon
        Zeigt den Wert des aktuellen devStateIcon
      • statusRequest
        Holt den aktuellen Status vom Hyperion Server,
        holt auch die Internals vom Hyperion Server inklusive verfügbarer Effekte

      Attribute

      • disable
        Abfragen beenden und Verbindung trennen
        Voreinstellung: 0
      • hyperionBin
        Pfad zum Hyperion Daemon
        OpenELEC Benutzer müssen eventuell hyperiond.sh als Daemon einstellen
        Voreinstellung: /usr/bin/hyperiond
      • hyperionConfigDir
        Pfad zu den Hyperion Konfigurationsdateien
        Voreinstellung: /etc/hyperion/
      • hyperionCustomEffects
        Leerzeichen separierte Liste von JSON Strings (ohne Leerzeichen - bitte Leerzeichen in Effektnamen durch Unterstriche ersetzen)
        muss name (als Anzeigename), oname (Name des basierenden Effekts) und args (die eigentlichen unterschiedlichen Effekt Argumente) beinhalten (auch genau in dieser Reihenfolge, sonst kommt beim Übernehmen des Attributs ein Fehler und das Attribut wird nicht gespeichert)
        Beispiel: {"name":"Knight_Rider_speed_2","oname":"Knight_rider","args":{"color":[255,0,255],"speed":2}} {"name":"Knight_Rider_speed_4","oname":"Knight_rider","args":{"color":[0,0,255],"speed":4}}
      • hyperionDefaultDuration
        Voreinstellung für Dauer
        Voreinstellung: 0 = unendlich
      • hyperionDefaultPriority
        Voreinstellung für Priorität
        Voreinstellung: 0 = höchste Priorität
      • hyperionDimStep
        Dimmstufen für dimDown/dimUp
        Voreinstellung: 10 (Prozent)
      • hyperionGainStep
        valueGain Dimmstufen für valueGainDown/valueGainUp
        Voreinstellung: 0.1
      • hyperionNoSudo
        Deaktiviert sudo für nicht root SSH Benutzer
        Voreinstellung: 0
      • hyperionSshUser
        Benutzername mit dem SSH Befehle ausgeführt werden sollen
        Voreinstellung: pi
      • hyperionToggleModes
        Modi und Reihenfolge von toggleMode als kommaseparierte Liste (min. 2 Werte, max. 4 Werte, jeder Mode nur 1x)
        Voreinstellung: clearall,rgb,effect,off
      • hyperionVersionCheck
        Deaktiviert Hyperion Versionüberprüfung um (eventuell) ältere Hyperion Versionen zu unterstützen
        DAS GESCHIEHT AUF EIGENE VERANTWORTUNG! FHEM KÖNNTE UNERWARTET ABSTÜRTZEN!
        Voreinstellung: 1
      • queryAfterSet
        Wenn gesetzt auf 0 wird der Status des Hyperion Server nach einem set Befehl nicht abgerufen, stattdessen wird der Status zum nächsten eingestellten Interval abgerufen.
        Das wird nur verwendet wenn das priodische Abfragen aktiviert ist, ohne dieses Abfragen wird der Status automatisch nach dem set Befehl abgerufen.
        Voreinstellung: 1

      Readings

      • adjustBlue
        jede Farbe von Blau separat (Komma separiert) (R,G,B)
      • adjustGreen
        jede Farbe von Grün separat (Komma separiert) (R,G,B)
      • adjustRed
        jede Farbe von Rot separat (Komma separiert) (R,G,B)
      • blacklevel
        Schwarzwert von jeder Farbe separat (Komma separiert) (R,G,B)
      • colorTemperature
        Temperatur von jeder Farbe separat (Komma separiert) (R,G,B)
      • configFile
        aktive/zuletzt geladene Konfigurationsdatei, doppelte Endung (.config.json) wird weggelassen
      • correction
        Korrektur von jeder Farbe separat (Komma separiert) (R,G,B)
      • dim
        aktive/letzte Dimmstufe (RGB Licht)
      • duration
        aktive/letzte/verbleibende primäre Dauer in Sekunden oder infinite für unendlich
      • effect
        aktiver/letzter Effekt
      • effectArgs
        aktive/letzte Effekt Argumente als JSON
      • gamma
        Gamma von jeder Farbe separat (Komma separiert) (R,G,B)
      • id
        ID vom Hyperion Server
      • lastError
        letzter aufgetretener Fehler während der Kommunikation mit dem Hyperion Server
      • luminanceGain
        aktive Helligkeit
      • luminanceMinimum
        aktive Hintergrundbeleuchtung
      • mode
        aktiver Modus
      • mode_before_off
        letzter Modus vor aus
      • priority
        aktive/letzte Priorität
      • rgb
        aktive/letzte RGB Farbe
      • saturationGain
        aktive Sättigung
      • saturationLGain
        aktive minimale Sättigung
      • serverResponse
        letzte Hyperion Server Antwort (success/ERROR)
      • state
        aktiver Status
      • threshold
        Schwellenwert von jeder Farbe separat (Komma separiert) (R,G,B)
      • valueGain
        aktive Helligkeit vom Ambilight
      • whitelevel
        Weißwert von jeder Farbe separat (Komma separiert) (R,G,B)

    I2C_BH1750

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

    I2C_BME280

    (en | de)
      Ermöglicht die Verwendung eines digitalen (Luft)druck/feuchtesensors BME280 über den I2C Bus des Raspberry Pi.

      I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.
      Define
        define BME280 <BME280_name> [<I2C Addresse>]

        Fehlt <I2C Address> wird 0x76 verwendet

        Beispiel:
        			define BME280 I2C_BME280 0x77
        			attr BME280 poll_interval 5
        		
      Set
        set BME280 readValues

        set <name> readValues
        Aktuelle Temperatur, Feuchte und Luftdruck Werte vom Sensor lesen.

      Attribute
      • oversampling_t,oversampling_h,oversampling_p
        Steuert das jeweils das Oversampling der Temperatur-, Feuchte-, oder Druckmessung im Sensor.
        Standard: 1, gültige Werte: 0, 1, 2, 3, 4, 5
        0 deaktiviert die jeweilige Messung
        1 to 5 entspricht einem Oversampling von 2^zahl/2

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

      • roundTemperatureDecimal, roundHumidityDecimal, roundPressureDecimal
        Rundet jeweils den Temperatur-, Feuchte-, oder Druckwert mit den angegebenen Nachkommastellen.
        Standard: 1, gültige Werte: 0, 1, 2

      • altitude
        Wenn dieser Wert definiert ist, wird diese Angabe zusä für die Berechnung des Luftdrucks bezogen auf Meereshöhe (Normalnull) NN herangezogen.
        Bemerkung: Dies ist ein globales Attribut.

        attr global altitude 220
      • IODev
      • do_not_notify
      • showtime

    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. Für 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ätzlich für die Berechnung des Luftdrucks bezogen auf Meereshöhe (Normalnull) NN herangezogen.
        Bemerkung: Dies ist ein globales Attribut.

        attr global altitude 220

      Hinweise
      • I2C-Bustiming
        Zur Abfrage des Sensors wird von einer I2C-Schnittstelle mit blockierendem IO-Zugriff (z.B. RPII2C) ausgegangen. Bei I2C-Schnittstellen, die nicht-blockierend arbeiten (z.B. FRM mit Ethernet), kann es zu Verarbeitungsfehlern kommen, insbesondere wenn das Attribut oversampling_settings auf einen Wert größer 1 eingestellt wird. Dies lässt sich je nach I2C-Schnittstelle kompensieren. Bei Firmata empfiehlt es sich, das Attribut i2c-config im Modul FRM auf einen Wert von ca. 30000 Mikrosekunden einzustellen.


    I2C_DS1307

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

    I2C_EEPROM

      Ermöglicht die Verwendung I2C EEPROM. I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_EEPROM <I2C Address>
        Der Wert <I2C Address> ist ohne das Richtungsbit
      Set
        set <name> <byte address> <value>

        <byte address> ist die Registeradresse (0..IC abhängig) und <value> der Registerinhalt (0..255)
        Beide Zahlen können sowohl eine Dezimal- als auch eine Hexadezimalzahl sein.

        Beispiel:
          set eeprom1 0x02 0xAA
          set eeprom1 2 170

      Get
        get <name>

        Aktualisierung aller Werte

        get <name> <byte address> [Bit<bitnumber(0..7)>]

        Gibt den Inhalt des in <byte address> angegebenen Registers zurück, bzw. ein einzelnes Bit davon.
        Achtung mit diesem Befehl werden nur die Werte aus den Readings angezeigt und nicht der Registerinhalt selbst!

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: -, gültige Werte: Dezimalzahl

      • EEPROM_size
        Speichergröße des EEPROM
        Standard: 128, gültige Werte: 128 (128bit), 2k (2048bit)

      • IODev
      • ignore
      • do_not_notify
      • showtime

    I2C_HDC1008

      Ermöglicht die Verwendung eines I2C_HDC1008 I2C Feuchtesensors von Texas Instruments. I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_HDC1008 [<I2C Address>]
        Der Wert <I2C Address> ist ein zweistelliger Hex-Wert
      Set
        set <name> Update
        Aktuelle Temperatur und Feuchte Werte vom Sensor lesen.

        set <name> Reset
        Setzt den Sensor zurück set <name> Heater {on|off}
        Schaltet das Heizelement des Sensors an oder aus
      Attribute
      • interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: 5, gültige Werte: 1,2,5,10,20,30

      • Resolution_Temperature
        Genauigkeit mit der die Temperatur gemessen werden soll.
        Standard: 14Bit, gültige Werte: 11Bit, 14Bit

      • Resolution_Humidity
        Genauigkeit mit der die Feuchtigkeit gemessen werden soll.
        Standard: 14Bit, gültige Werte: 8Bit, 11Bit, 14Bit

      • roundHumidityDecimal
        Anzahl Dezimalstellen für den Feuchtewert
        Standard: 1, gültige Werte: 0 1 2

      • roundTemperatureDecimal
        Anzahl Dezimalstellen für den Temperaturwert
        Standard: 1, gültige Werte: 0,1,2

      • IODev

    =end html =cut

    I2C_K30

    (en | de)
      Ermöglicht die Verwendung eines K30 CO2 Sensors von SenseAir. Der Sensor muss über I2C angeschlossen sein (siehe z.B. Application Note 142 "K-30/K-33 I2C on Raspberry Pi" von co2meters.com). Auf meinem Raspberry Pi 2 musste ich die I2C-Frequenz auf 90 kHz reduzieren, sonst sind die meisten I2C-Zugriffe fehlgeschlagen ("options i2c_bcm2708 baudrate=90000", z.B. in /etc/modprobe.d/i2c-options.conf eintragen). Nach wie vor gehen ca. 5 % der Zugriffe schief, aber das scheint normal zu sein - zumindest warnt das Datenblatt, dass I2C-Zugriffe fehlschlagen können, wenn der Microcontroller auf dem Sensor gerade mit einer CO2-Messung beschäftigt ist. I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_K30 [<I2C Address>]
        Der Wert <I2C Address> ist die konfigurierte I2C-Adresse des Sensors (Standard: 104 bzw. 0x68)
      Set
        set <name> readValues
        Aktuellen CO2 Wert vom Sensor lesen.

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: 5, gültige Werte: 1,2,5,10,20,30

      • IODev
      • do_not_notify
      • showtime

    I2C_LCD

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

    I2C_MCP23008

    (en | de)
      Ermöglicht die Verwendung eines MCP23008 I2C 8 Bit Portexenders. Auf einem Raspberry Pi kann der Interrupt Pin des MCP23008 mit einem GPIO verbunden werden und über die Interrupt Funktionen von RPI_GPIO lässt sich dann ein get für den MCP23008 bei Pegeländerung auslösen.
      I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_MCP23008 <I2C Address>
        Der Wert <I2C Address> ist ohne das Richtungsbit
      Set
        set <name> <port[,port[...]]> <value>

        <port> kann PortA0 bis PortA7 annehmen und <value> folgende Werte:
          off
          on

        Beispiel:
          set mod1 PortA4 on
          set mod1 PortA4,PortA6 off
          set mod1 PortA4,A6 on

      Get
        get <name>

        Aktualisierung aller Werte

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: -, gültige Werte: Dezimalzahl

      • OutputPorts
        Durch Komma getrennte Ports die als Ausgänge genutzt werden sollen.
        Nur Ports in dieser Liste können gesetzt werden.
        Standard: -, gültige Werte: A0-A7

      • OnStartup
        Durch Komma getrennte Output Ports und ihr gewünschter Status nach dem Start.
        Ohne dieses Attribut werden alle Ausgänge nach dem Start auf den letzten Status gesetzt.
        Standard: -, gültige Werte: <port>=on|off|last wobei <port> = A0-A7

      • Pullup
        Durch Komma getrennte Input Ports, bei denen der interne 100k pullup aktiviert werden soll.
        Standard: -, gültige Werte: A0-A7

      • Interrupt
        Durch Komma getrennte Input Ports, die einen Interrupt auf IntA/B auslösen.
        Standard: -, gültige Werte: A0-A7

      • invert_input
        Durch Komma getrennte Input Ports, die reverse Logik nutzen.
        Standard: -, gültige Werte: A0-A7

      • InterruptOut
        Einstellungen für den INT Pin
        gültige Werte:
        • active-low (INT ist active low)
        • active-high (INT ist active high)
        • open-drain (INT ist open drain)

      • IODev
      • ignore
      • do_not_notify
      • showtime

    I2C_MCP23017

    (en | de)
      Ermöglicht die Verwendung eines MCP23017 I2C 16 Bit Portexenders. Auf einem Raspberry Pi kann der Interrupt Pin des MCP23017 mit einem GPIO verbunden werden und über die Interrupt Funktionen von RPI_GPIO lässt sich dann ein get für den MCP23017 bei Pegeländerung auslösen.
      I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_MCP23017 <I2C Address>
        Der Wert <I2C Address> ist ohne das Richtungsbit
      Set
        set <name> <port[,port[...]]> <value>

        <port> kann PortA0 bis PortA7 / PortB0 bis PortB7 annehmen und <value> folgende Werte:
          off
          on

        Beispiel:
          set mod1 PortA4 on
          set mod1 PortA4,PortB6 off
          set mod1 PortA4,B6 on

      Get
        get <name>

        Aktualisierung aller Werte

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: -, gültige Werte: Dezimalzahl

      • OutputPorts
        Durch Komma getrennte Ports die als Ausgänge genutzt werden sollen.
        Nur Ports in dieser Liste können gesetzt werden.
        Standard: -, gültige Werte: A0-A7, B0-B7

      • OnStartup
        Durch Komma getrennte Output Ports und ihr gewünschter Status nach dem Start.
        Ohne dieses Attribut werden alle Ausgänge nach dem Start auf den letzten Status gesetzt.
        Standard: -, gültige Werte: <port>=on|off|last wobei <port> = A0-A7, B0-B7

      • Pullup
        Durch Komma getrennte Input Ports, bei denen der interne 100k pullup aktiviert werden soll.
        Standard: -, gültige Werte: A0-A7, B0-B7

      • Interrupt
        Durch Komma getrennte Input Ports, die einen Interrupt auf IntA/B auslösen.
        Standard: -, gültige Werte: A0-A7, B0-B7

      • invert_input
        Durch Komma getrennte Input Ports, die reverse Logik nutzen.
        Standard: -, gültige Werte: A0-A7, B0-B7

      • InterruptOut
        Einstellungen für die INTA/INTB Pins
        gültige Werte:
        • separate_active-low (INTA/INTB sind für PortA/PortB getrennt und mit active low Logik)
        • separate_active-high (INTA/INTB sind für PortA/PortB getrennt und mit active high Logik)
        • separate_open-drain (INTA/INTB sind für PortA/PortB getrennt und arbeiten als open drain)
        • connected_active-low (INTA/INTB sind intern verbunden und mit active low Logik)
        • connected_active-high (INTA/INTB sind intern verbunden und mit active high Logik)
        • connected_open-drain (INTA/INTB sind intern verbunden und arbeiten als open drain)

      • IODev
      • ignore
      • do_not_notify
      • showtime

    I2C_MCP342x

    (en | de)
      Ermöglicht die Verwendung eines MCP3422/3/4 I2C A/D Wandler. I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_MCP342x [[<I2C Address>] <n channels>]
        Der Wert <I2C Address> ist die I2C Adresse ohne Richtungsbit und <n channels> die Anzahl der A/D Kanäle.
      Get
        get <name> [[[<channel>] <resolution> ] <gain>]
        Aktuelle Werte vom entstrechenden <channel> lesen. <resolution> und <gain> überschreiben die entsprechenden Attribute für diesen Lesevorgang

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: 5, gültige Werte: 1,2,5,10,20,30

      • Folgende Attribute existieren separat für alle Kanäle.

      • ch1resolution
        Auflösung des Kanals
        Je größer die Auflösung desto länger die Lesezeit.
        Standard: 12, gültige Werte: 12,14,16,18

      • ch1gain
        Verstärkungsfaktor
        Wichtig: Der Verstärkungsfaktor verringert den Messbereich entsprechend und kann zu einem Überlauf führen. In diesem Fall wird "overflow" an das reading angehängt.
        Standard: 1, gültige Werte: 1,2,4,8

      • ch1factor
        Korrekturfaktor (Wird zum Kanalwert multipliziert.)
        Standard: 1, gültige Werte: Zahl

      • ch1roundDecimal
        Anzahl Dezimalstellen für den Messwert
        Standard: 3, gültige Werte: 0,1,2,3

      • IODev
      • do_not_notify
      • showtime

    I2C_MMA845X

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

    I2C_PCA9532

    (en | de)
      Ermöglicht die Verwendung eines PCA9532 I2C 16 Kanal PWM IC. Das PCA9532 hat 2 unabhängige PWM Stufen. Jeder Kanal kanne einer der Stufen zugeordnet werden oder direkt auf off/on gesetzt werden. I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_PCA9532 <I2C Address>
        Der Wert <I2C Address> ist ein zweistelliger Hex-Wert
      Set
        set <name> <port> <value>

        • wenn als <port> Port0 bis Port15 verwendet wird, dann ist <value> einer dieser Werte:
            off
            on
            PWM0 (Port wird auf PWM0 Frequenz- und Pulsweiteneinstellung gesetzt)
            PWM1 (Port wird auf PWM1 Frequenz- und Pulsweiteneinstellung gesetzt)
        • wenn als <port> PWM0 oder PWM1 verwendet wird, ist <value> ein Wert zwischen 0 und 255 ensprechend der Pulsweite der PWM Stufe.

        Beispiele:
          set mod1 Port4 PWM1
          set mod1 PWM1 128

      Get
        get <name>

        Aktualisierung aller Werte

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: -, gültige Werte: Dezimalzahl

      • OutputPorts
        Durch Komma getrennte Portnummern die als Outputs genutzt werden.
        Nur Ports in dieser Liste können geschrieben werden.
        Standard: no, gültige Werte: 0 1 2 .. 15

      • OnStartup
        Durch Komma getrennte Output Ports/PWM Register und ihr gewünschter Status nach dem Start.
        Ohne dieses Attribut werden alle Ausgänge nach dem Start auf den letzten Status gesetzt.
        Standard: -, gültige Werte: <port>=on|off|PWM0|PWM1|last oder PWM0|PWM1=0..255|last wobei <port> = 0 - 15

      • T0/T1
        Änderung der Frequenzwerte von PWM0/PWM1 nach der Formel: Fx = 152/(Tx + 1). Der entsprechende Frequenzwert wird unter Internals angezeigt.
        Standard: 0 (152Hz), gültige Werte: 0-255

      • IODev
      • ignore
      • do_not_notify
      • showtime

    I2C_PCA9685

    (en | de)
      Ermöglicht die Verwendung eines PCA9685 I2C 16 Kanal PWM IC. I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_PCA9685 <I2C Address> [<I2C Buffer Size>]
        Der Wert <I2C Address> ist ein zweistelliger Hex-Wert im Format 0xnn oder eine Dezimalzahl
        <I2C Buffer Size> gibt die maximale Anzahl von Datenbytes pro I2C Datenpaket an. Nicht angegeben, wird der Wert 30 verwendet ( entspricht 32 Bytes incl. Adresse und Registernummer). RPII2C kann mit beliebig großen Paketlängen umgehen, daher ist diese Option dort inaktiv.
      Set
        set <name> <port> <dimvalue> [<delay>]

      • Als <port> kann Port00 bis Port15 verwendet werden
        <dimvalue> kann folgende Werte annehmen:
          off
          on
          0..4095
        <delay> gibt den Wert innerhalb der Zählschleife an, an dem der Ausgang eingeschaltet wird. Damit lassen sich die 16 Ausgänge zu unterschiedlichen Zeiten einschalten um Stromspitzen zu minimieren. Dieser Wert hat keinerlei Einfluss auf die Pulsbreite. Stardartwert ist 0, mögliche Werte sind 0..4095
      • Um mehrer Ports mit einem Befehl zu ändern können mehrere Befehle per Komma getrennt eingegeben werden. Dabei kann jeder Port auf einen separaten, oder alle Ports auf den selben Wert gesettz werden. Fär letzteres darf nur der letzte Befehl dimvalue (und delay) enthalten. Aufeinanerfolgene Ports werden mit einem Befehl geschrieben. So können beispielsweise multicolor LED's ohne flackern geschaltet werden.
        Anstelle von Port kann auch einfach ein P verwendet werden.

      • Examples:
          set mod1 Port04 543
          set mod1 Port4 434 765
          set mod1 Port1, Port2, Port14 434 765
          set mod1 Port1 on, P14 434 765

      Get
        get <name>

        Aktualisierung aller Werte

      Attribute
      • SUBADR1,SUBADR2,SUBADR3,ALLCALLADR
        Alternative slave Adressen, zum kontrollieren mehrerer PCA9685 mit einem define Zusätzlich zu diesen Registern müssen die Passenden Bits in modereg1 gesetzt werden.
        Standard: SUBADR1=113,SUBADR2=114,SUBADR3=116,ALLCALLADR=112, gültige Werte: I2C Adresse

      • OnStartup
        Kommagetrennte Liste der Ports mit den gewünschten Startwerten.
        Nicht gelistete Ports werden auf en letzte state wiederhergestellt.
        Standard: last, gültige Werte: <port>=on|off|0..4095|last wobei <port> = 0 - 15

      • prescale
        PWM Frequenz setzen. Formel: Fx = 25MHz/(4096 * (prescale + 1)). Die eingestellte Frequenz wird in den Internals angezeigt. Wenn das Attribut extclock angegeben ist, wird dieses zur Frequenzberechnung verwendet. Andernfalls 25MHz.
        Standard: 30 (200Hz für 25MHz clock), gültige Werte: 0-255

      • modereg1
        Durch Komma getrennte Liste von:
        • EXTCLK
          Anstelle des internen 25MHz Oszillators wird ein extern Angeschlossener verwendet. Die Frequenz des externen Oszillators kann über das Attribut extclock angegeben werden.
        • SUBADR1
          Wenn gesetzt, antwortet der PCA9685 auf I2C-bus Subadresse 1.
        • SUBADR2
          Wenn gesetzt, antwortet der PCA9685 auf I2C-bus Subadresse 2.
        • SUBADR3
          Wenn gesetzt, antwortet der PCA9685 auf I2C-bus Subadresse 3.
        • ALLCALLADR
          Wenn gesetzt, antwortet der PCA9685 auf I2C-bus ALLCALLADR Adresse.
      • modereg2
        Durch Komma getrennte Liste von:
        • INVRT
          Wenn gesetzt, werden die Ausgänge invertiert.
        • OCH
          Wenn gesetzt, werden die Ports nach jedem ACK gesetzt (also nach jedem gesendeten Byte).
          Andernfalls werden sie nach einem STOP Kommando gesetzt (Bus Schreibaktion fertig, also nach einem Datenpaket)
        • OUTDRV
          Wenn gesetzt, werden die Ausgänge als totem pole konfiguriert.
          Andernfalls sind sie open-drain.
        • Verhalten bei OE = 1 (wenn OE = 0 verhalten sich die Ausgänge wie in OUTDRV eingestellt):
        • OUTNE0
          Wenn gesetzt:
          LEDn = 1 wenn OUTDRV = 1
          LEDn = hochohmig wenn OUTDRV = 0
          Wenn nicht gesetzt: LEDn = 0.
        • OUTNE1
          LEDn = hochohmig.
          Wenn OUTNE1 gesetzt wird OUTNE0 ignoriert.

      • IODev
      • ignore
      • do_not_notify
      • showtime

    I2C_PCF8574

    (en | de)
      Ermöglicht die Verwendung eines PCF8574 I2C 8 Bit Portexenders. Auf einem Raspberry Pi kann der Interrupt Pin des PCF8574 mit einem GPIO verbunden werden und ¨ber die Interrupt Funktionen von RPI_GPIO l&aml;sst sich dann ein get für den PCF8574 bei Pegel&aml;nderung ausl&oml;sen.
      I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_PCF8574 <I2C Address>
        Der Wert <I2C Address> ist ohne das Richtungsbit
      Set
        set <name> <port[,port[...]]> <value>

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

        Beispiel:
          set mod1 Port4 on
          set mod1 Port4,Port6 off
          set mod1 Port4,6 on

      Get
        get <name>

        Aktualisierung aller Werte

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: -, gültige Werte: Dezimalzahl

      • InputPorts
        Durch Leerzeichen getrennte Portnummern die als Inputs genutzt werden.
        Ports in dieser Liste können nicht geschrieben werden.
        Standard: no, gültige Werte: 0 1 2 .. 7

      • OnStartup
        Durch Komma getrennte Output Ports und ihr gewünschter Status nach dem Start.
        Ohne dieses Attribut werden alle Ausgänge nach dem Start auf den letzten Status gesetzt.
        Standard: -, gültige Werte: <port>=on|off|last wobei <port> = 0 - 7

      • IODev
      • ignore
      • do_not_notify
      • showtime

    I2C_SHT21

    (en | de)
      Ermöglicht die Verwendung eines SHT21 I2C Feuchtesensors von Sensirion. I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_SHT21 [<I2C Address>]
        Der Wert <I2C Address> ist ein zweistelliger Hex-Wert
      Set
        set <name> readValues
        Aktuelle Temperatur und Feuchte Werte vom Sensor lesen.

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: 5, gültige Werte: 1,2,5,10,20,30

      • roundHumidityDecimal, roundTemperatureDecimal
        Anzahl Dezimalstellen für den Feuchte-, oder Temperaturwert
        Standard: 1, gültige Werte: 0 1 2

      • IODev
      • do_not_notify
      • showtime

    I2C_SHT3x

    (en | de)
      Ermöglicht die Verwendung eines SHT30/SHT31 I2C Feuchtesensors von Sensirion. I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_SHT3x [<I2C Address>]

        Der Wert <I2C Address> ist ein zweistelliger Hex-Wert:
        ADDR (Pin 2) verbunden mit VSS (Versorgungsspannung): 0x44 (Standardwert, wenn <I2C Address> nicht angegeben)
        ADDR (pin 2) verbunden mit VDD (Masse): 0x45
        Für kompatible Sensoren können auch andere Werte als 0x44 oder 0x45 angegeben werden.

      Set
        set <name> readValues
        Aktuelle Temperatur und Feuchte Werte vom Sensor lesen.

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: 5, gültige Werte: 1,2,5,10,20,30

      • roundHumidityDecimal, roundTemperatureDecimal
        Anzahl Dezimalstellen für den Feuchte- oder Temperaturwert
        Standard: 1, gültige Werte: 0 1 2

      • IODev
      • do_not_notify
      • showtime

    I2C_TSL2561

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

    IF

      IF (<Bedingung>) (<FHEM-Kommandos1>) ELSE (<FHEM-Kommandos2>)

      Es werden <FHEM-Kommandos1> ausgeführt, wenn <Bedingung> erfüllt ist, sonst werden <FHEM-Kommanodos2> ausgeführt.

      Beim IF-Befehl (IF in Großbuchstaben) handelt es sich um einen FHEM-Befehl. Der Befehl kann überall dort genutzt werden, wo FHEM-Befehle vorkommen dürfen. Im Gegensatz zu Perl-if (if in Kleinbuchstaben) bleibt man auf der FHEM-Ebene und muss nicht auf die Perl-Ebene, um FHEM-Befehle mit Hilfe der fhem-Funktion auszuführen.

      IF ist kein eigenständig arbeitendes Modul, sondern ein FHEM-Befehl, der nur in Kombination mit anderen Modulen, wie z. B. notify oder at, sinnvoll eingesetzt werden kann. Es gibt inzwischen ein neueres DOIF-Modul, welches auf der Syntax vom IF-Befehl aufbaut. Es arbeitet im Gegensatz zu IF als Modul selbstständig ereignis- und zeitgesteuert ohne notify bzw. at. Damit lassen sich viele Problemlösungen eleganter, jeweils mit einem einzigen Modul, realisieren.

      In der Bedingung des IF-Befehls wird die vollständige Syntax des Perl-if unterstützt. Stati und Readings von Devices werden in eckigen Klammern angegeben.


      Beispiele:

      IF in Kombination mit at-Modul, Readingangabe [<Device>:<Reading>] in der Bedingung:

      define check at +00:10 IF ([outdoor:humidity] > 70) (set switch1 off) ELSE (set switch1 on)

      IF Statusabfrage des Devices "outdoor" in der Bedingung:

      define check at +00:10 IF ([outdoor] eq "open") (set switch1 on)

      entspricht mit Angabe des Internals mit &:

      define check at +00:10 IF ([outdoor:&STATE] eq "open") (set switch1 on)

      Wenn der Reading "state" abgefragt werden soll, dann wird der Readingname ohne & angegeben:

      define check at +00:10 IF ([outdoor:state] eq "open") (set switch1 on)

      Geschachtelte Angabe von mehreren IF-Befehlen kann in mehreren Zeilen mit Einrückungen zwecks übersichtlicher Darstellung über FHEM-Weboberfläche in der DEF-Eingabe eingegeben werden.
      Die erste Zeile "define test notify lamp " muss mit einem Leerzeichen enden, bevor die Zeile mit Enter umgebrochen wird - das ist eine Eigenschaft von notify und nicht von IF:

      define test notify lamp
      IF ([lamp] eq "on") (
        IF ([outdoor:humidity] < 70)
          (set lamp off)
        ELSE
          (set lamp on)
      ) ELSE
        (set switch on)

      Mehrzeilige Eingaben in der cfg-Datei müssen dagegen jeweils am Zeilenende mit \ verknüpft werden (das ist eine Eigenschaft von FHEM und nicht von IF):

      define test notify lamp \
      IF ([lamp] eq "on") (\
        IF ([outdoor:humidity] < 70)\
          (set lamp off)\
        ELSE\
          (set lamp on)\
      ) ELSE\
        (set switch on)

      Filtern nach Zahlen im Reading "temperature":

      define settemp at 22:00 IF ([tempsens:temperature:d] >= 10) (set heating on)

      Filtern nach "on" und "off" im Status des Devices "move":

      define activity notify move IF ([move:&STATE:[(on|off)]] eq "on" and $we) (set lamp off)

      Beispiel für die Nutzung des Status eines Devices im Ausführungsteil. Hier: "lamp1" wird mit dem Status von "lamp2" geschaltet:

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

      Falls bei einem FHEM-Befehl ein Perl-Ausdruck mit Readings zuvor ausgewertet werden soll, so muss er in geschweifte und runde Klammern gesetzt werden.
      Beispiel: Wenn um 18:00 Uhr die Außentemperatur höher ist als 10 Grad, dann wird die Solltemperatur um 1 Grad erhöht.

      define temp at 18:00 IF ([outdoor:temperature] > 10) (set thermostat desired-temp {([thermostat:desired-temp:d]+1)})

      Mehrerer Befehle werden durch ein Komma statt durch ein Semikolon getrennt, dadurch entfällt das Doppeln, Vervierfachen usw. des Semikolons:

      define check at +00:10 IF ([outdoor:humidity] > 10) (set switch1 off,set switch2 on) ELSE (set switch1 on,set switch2 off)

      Falls ein Komma im FHEM-Ausdruck vorkommt, muss dieser zusätzlich geklammert werden, damit das Komma nicht als Trennzeichen erkannt wird:

      define check at +00:10 IF ([outdoor:humidity] > 10) ((set switch1,switch2 off))

      IF in Kombination mit einem define at mit mehreren set-Befehlen (Eingabe muss wegen der Semikolons im DEF-Editor erfolgen, einfaches Semikolon ist nicht erlaubt - es würde vom FHEM-Parser "geschluckt" werden und beim IF nicht mehr ankommen):

      define check at *10:00 IF ([indoor] eq "on") (define a_test at +00:10 set lampe1 on;;set lampe2 off;;set temp desired 20)

      Man kann die Problematik des Doppelns von Semikolons wie folgt umgehen:

      define check at *10:00 IF ([indoor] eq "on") (define a_test at +00:10 IF (1) (set lampe1 on,set lampe2 off,set temp desired 20))

      Das Komma als Trennzeichen zwischen den FHEM-Befehlen lässt sich mit ;; kombinieren, z. B.:

      define check at *10:00 IF ([indoor] eq "on") (set lamp1 on,define a_test at +00:10 set lampe2 on;;set lampe3 off;;set temp desired 20)

      sleep kann mit Komma verwendet werden, dabei wirkt das sleep nicht blockierend:

      define check at *10:00 IF ([indoor] eq "on") (sleep 2,set lampe1 on,sleep 3,set lampe2 on)

      Zeitabhängig schalten: In der Zeit zwischen 20:00 und 22:00 Uhr soll das Licht ausgehen, wenn es an war und ich den Raum verlasse:

      define n_lamp_off notify sensor IF ($hms gt "20:00" and $hms lt "22:00" and [sensor] eq "absent") (set lamp:FILTER=STATE!=off off)

      Kombination von Perl und FHEM-Befehlen ($NAME sowie $EVENT können ebenso benutzt werden):

      define mail notify door:open IF ([alarm] eq "on")({system("wmail $NAME:$EVENT")},set alarm_signal on)

      Der IF-Befehl dient in erster Linie zur Vereinfachung der Schreibweise in Kombination mit anderen FHEM-Modulen wie at, notify oder DOIF. Intern wird der IF-Befehl zur Ausführung in einen Perl if-Befehl umgesetzt. Das soll anhand von Beispielen verdeutlicht werden:

      IF ([switch] eq "off") (set lamp on)

      entspricht:

      {if (Value('switch') eq "off"){fhem('set lamp on')}}


      IF ([living_room:temperature] > 12) (set lamp on, set lamp2 off)

      entspricht:

      {if (ReadingVal('living_room','temperature','') > 12) {fhem('set lamp on');;fhem('set lamp2 off')}}


      IF ([bathroom:humidity] > 70) (set led red) ELSE (set led green)

      entspricht:

      {if (ReadingsVal('bathroom','humidity','') > 70) {fhem('set led red')} else {fhem('set led green')}}


    IPCAM

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

    IPWE

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

    IT - InterTechno

      Das InterTechno 433MHZ Protokoll wird von einer Vielzahl von Geräten benutzt. Diese gehören entweder zur Kategorie Sender/Sensoren oder zur Kategorie Empfänger/Aktoren. Es ist das Senden sowie das Empfangen von InterTechno Befehlen möglich. Geräten können z.B. Schalter, Dimmer usw. sein. Von diesem Modul wird sowohl das Protolkoll 1 sowie das Protokoll 3 unterstützt. Neu empfangene Pakete werden per Autocreate in Fhem unter der Kategorie IT angelegt. Hinweis: IT Protokoll 1 devices werden nur beim on Befehl angelegt.

      Define
        define <name> IT <housecode> <on-code> <off-code> [<dimup-code>] [<dimdown-code>]
        oder
        define <name> IT <ITRotarySwitches|FLS100RotarySwitches>
        oder
        define <name> IT <Adresse 26 Bit> <Group bit> <Unit Code>
        oder
        define <name> IT HE800 <Transmitter ID> <Receiver ID>

        Der Wert von housecode ist abhängig vom verwendeten Gerät und besteht aus zehn Ziffern InterTechno-Code Protokoll 1. Da dieser ein tri-State-Protokoll ist, können die Ziffern jeweils 0/1/F annehmen.
        Bit 11/12 werden für Schalten oder Dimmen verwendet. Da die Hersteller verschiedene Codes verwenden, können hier die (2-stelligen) Codes für an, aus, heller und dunkler (on/off/dimup/dimdown) als tri-State-Ziffern (0/1/F) festgelegt werden.
        Der Wert des ITRotary-Schalters setzt sich aus dem Wert des Buchstaben-Schalters A-P und dem numerischen Schalter 1-16 des InterTechno-Gerätes zusammen, z.B. A1 oder G12.
        Der Wert des FLS100Rotary-Schalters setzt sich aus dem Wert des Schalters I,II,II,IV und dem numerischen Schalter 1-4 des InterTechno-Gerätes zusammen, z.B. I2 oder IV4.
        Die Werte der ITRotary-Schalter und FLS100Rotary-Schalter werden intern in housecode-Werte umgewandelt.
        Für Intertechno Protokoll 3 besteht der hauscode aus 26 Ziffern. Zusätzlich werden noch 4 Ziffern als Unit Code sowie eine Ziffer als Group code benötigt.
        Neues IT Element in FHEM anlegen: define IT myITSwitch IT
        • <housecode> 10 Ziffern lange tri-State-Zahl (0/1/F) abhängig vom benutzten Gerät.
        • <on-code> 2 Ziffern lange tri-State-Zahl, die den Einschaltbefehl enthält; die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
        • <off-code> 2 Ziffern lange tri-State-Zahl, die den Ausschaltbefehl enthält; die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
        • Der optionale <dimup-code> ist eine 2 Ziffern lange tri-State-Zahl, die den Befehl zum Heraufregeln enthält; die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
        • Der optionale <dimdown-code> ist eine 2 Ziffern lange tri-State-Zahl, die den Befehl zum Herunterregeln enthält; die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.

        HE800
        • <Transmitter ID> Eindeutige Transmitter-ID (1..65535)
        • <Receiver ID> Receiver-ID [0]1..15, 0=Broadcast 1-15 (HE844A button# 1-4 & MASTER=0, HE850 UNIT# 1-15, HE853 = 1)

        Beispiele:
          define lamp IT 01FF010101 11 00 01 10
          define roll1 IT 111111111F 11 00 01 10
          define otherlamp IT 000000000F 11 10 00 00
          define otherroll1 IT FFFFFFF00F 11 10
          define IT_1527xe0fec IT 1527xe0fec 1001 0000
          define itswitch1 IT A1
          define lamp IT J10
          define flsswitch1 IT IV1
          define lamp IT II2
          define HE800_TID1_SW1 IT HE800 1 1

        Für Intertechno Protokoll 3 ist der <housecode> eine 26-stellige Zahl. Zusätzlich wird noch ein 1 stelliger Gruppen-Code, sowie ein 4-stelliger unit code verwendet.
        • <address> ist eine 26-stellige Nummer (0/1)
        • <group> ist eine 1-stellige Nummer (0/1)
        • <unit> ist eine 4-stellige Nummer (0/1)

        Beispiele:
          define myITSwitch IT 00111100110101010110011111 0 0000

      Set
        set <name> <value> [<time>]

        wobei value eines der folgenden Schlüsselwörter ist:
            dimdown
            dimup
            off
            on
            on-till           # siehe Anmerkungen
            
      • Die set extensions werden unterstützt.
      • Beispiele:
          set lamp on
          set lamp1,lamp2,lamp3 on
          set lamp1-lamp3 on
          set lamp off

        Anmerkungen:
        • on-till erfordert eine Zeitangabe im "at"-Format (HH:MM:SS, HH:MM oder { <perl code> }, wobei dieser Perl-Code eine Zeitangabe zurückgibt). Ist die aktuelle Zeit größer als die Zeitangabe, wird der Befehl verworfen, andernfalls wird ein Einschaltbefehl gesendet und für die Zeitangabe ein Ausschaltbefehl mittels "at"-Befehl angelegt.

      Get
        N/A (nicht vorhanden)

      Attributes
      • IODev
        Spezifiziert das physische Gerät, das die Ausstrahlung der Befehle für das "logische" Gerät ausführt. Ein Beispiel für ein physisches Gerät ist ein CUL.
        Anmerkung: Beim Start weist fhem einem InterTechno-Gerät kein IO-Gerät zu. Das Attribut IODev ist daher IMMER zu setzen.

      • eventMap
        Ersetzt Namen von Ereignissen und set Parametern. Die Liste besteht dabei aus mit Doppelpunkt verbundenen Wertepaaren, die durch Leerzeichen getrennt sind. Der erste Teil des Wertepaares ist der "alte" Wert, der zweite der neue/gewünschte. Ist das erste Zeichen der Werteliste ein Komma (,) oder ein Schrägsstrich (/), wird das Leerzeichen als Listenzeichen durch dieses ersetzt. Dies erlaubt die Benutzung von Leerzeichen innerhalb der Werte. Beispiele:
          attr store eventMap on:open off:closed
          attr store eventMap /on-for-timer 10:open/off:closed/
          set store open

      • do_not_notify

      • dummy
        Mit der Eigenschaft dummy lassen sich Geräte definieren, die keine physikalischen Befehle senden sollen. Verknüpfte notifys werden trotzdem ausgeführt. Damit kann z.B. auf Sendebefehle reagiert werden, die über die Weboberfläche ausgelöst wurden, ohne dass der Befehl physikalisch gesendet wurde.

      • loglevel

      • showtime

      • readingFnAttributes

      • model
        Hiermit kann das Modell des IT-Geräts näher beschrieben werden. Diese Eigenschaft wird (im Moment) nicht von fhem ausgewertet. Mithilfe dieser Information können externe Programme oder Web-Interfaces Geräteklassen unterscheiden, um geeignete Kommandos zu senden (z.B. "on" oder "off" an Schalter, aber "dim..%" an Dimmer usw.). Die Schreibweise der Modellbezeichnung sollten der dem Gerät mitgelieferten Dokumentation in Kleinbuchstaben ohne Leerzeichen entsprechen. Andere Zeichen als a-z 0-9 und - (Bindestrich) sollten vermieden werden. Dies ist die Liste der "offiziellen" Modelltypen:
        Sender/Sensor: itremote
        Dimmer: itdimmer
        Empfänger/Actor: itswitch
        EV1527: ev1527

      • ignore
        Durch das Setzen dieser Eigenschaft wird das Gerät nicht durch fhem beachtet, z.B. weil es einem Nachbarn gehört. Aktivitäten dieses Gerätes erzeugen weder Log-Einträge noch reagieren notifys darauf, erzeugte Kommandos werden ignoriert (wie bei Verwendung des Attributes dummy werden keine Signale gesendet). Das Gerät ist weder in der Ausgabe des list-Befehls enthalten (außer es wird explizit aufgerufen), noch wird es bei Befehlen berücksichtigt, die mit Platzhaltern in Namensangaben arbeiten (siehe devspec). Sie werden weiterhin mit der speziellen devspec (Gerätebeschreibung) "ignored=1" gefunden.


      Erzeugte Ereignisse (Events):
        Ein IT-Gerät kann folgende Ereignisse generieren:
      • on
      • off
      • dimdown
      • dimup
      • Welche Ereignisse erzeugt werden ist geräteabhängig und kann evtl. am Gerät eingestellt werden.

    InfoPanel

      Sorry, keine deutsche Dokumentation vorhanden.

      Die englische Doku gibt es hier: InfoPanel

    Itach_IR

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

    Itach_IRDevice

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

    Itach_Relay

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

    JSONMETER

      Dieses Modul liest Daten von Messgeräten (z.B. Stromzähler, Gaszähler oder Wärmezähler, so genannte Smartmeter), welche OBIS kompatible Daten im JSON-Format auf einem Webserver oder auf dem FHEM-Dateisystem zur Verfügung stellen.
      Für detailierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.
       
      Define
        define <name> JSONMETER <Gerätetyp> [<IP-Adresse>] [Abfrageinterval]
        Beispiel: define Stromzaehler JSONMETER ITF 192.168.178.20 300
         
      • [Abfrageinterval]
        Optional. Standardmässig 300 Sekunden. Der kleinste mögliche Wert ist 30.
        Bei 0 kann die Geräteabfrage nur manuell gestartet werden.

      • <Gerätetyp>
        Definiert den Pfad und den Port, um die JSON-Datei einzulesen.
        Mit dem Attribute 'pathString' können Login Information an den URL-Pfad von vordefinierten Geräte angehangen werden.
        • ITF - FROETEC Simplex ME Eintarifzähler (N-ENERGY) (ITF Fröschl)
        • EFR - EFR Smart Grid Hub für Stromzähler (EON, N-ENERGY, EnBW)
                Die Login-Information wird über das Attribute 'pathstring' angegeben.
                ?LogName=Benutzer&LogPSWD=Passwort
        • LS110 - YouLess LS110 Netzwerkfähiger Sensor für elektromechanische Stromzähler
        • url - benutzt die URL, welche durch das Attribut 'pathString' und 'port' definiert wird.
        • file - benutzt die Datei, welche durch das Attribut 'pathString' definiert wird (im FHEM Dateisystem)

      Set
      • activeTariff < 0 - 9 >
        Erlaubt die gezielte, separate Erfassung der statistischen Verbrauchswerte (doStatistics = 1) für verschiedene Tarife (Doppelstromzähler), wenn der Stromzähler dies selbst nicht unterscheiden kann (z.B. LS110) oder wenn geprüft werden soll, ob ein zeitabhängiger Tarif preiswerter wäre. Dieser Wert muss entsprechend des vorhandenen oder geplanten Tarifes zum jeweiligen Zeitpunkt z.B. durch den FHEM-Befehl "at" gesetzt werden.
        0 = tariflos

      • INTERVAL <Abfrageinterval>
        Abfrageinterval in Sekunden

      • resetStatistics <statWerte>
        Löscht die ausgewählten statisischen Werte: all, statElectricityConsumed..., statElectricityConsumedTariff..., statElectricityPower...

      • restartJsonAnalysis
        Neustart der Analyse der json-Datei zum Auffinden bekannter Gerätewerte (kompatibel zum OBIS Standard). Diese Analysie wird normaler Weise nur einmalig durchgeführt, nachdem Gerätewerte gefunden wurden.

      • statusRequest
        Aktualisieren der Gerätewerte

      Get
      • jsonFile
        Liest die JSON-Datei ein und zeigt sie an.

      • jsonAnalysis
        Extrahiert die JSON-Daten und zeigt das Resultat der JSON-Analyse.

      Attributes
      • alwaysAnalyse < 0 | 1 >
        Führt bei jeder Abfrage der Gerätewerte eine Analyse der JSON-Datenstruktur durch.
        Dies ist sinnvoll, wenn sich die JSON-Struktur ändert. Normalerweise wird die analysierte Struktur zwischengespeichert, um die CPU-Last gering zu halten.

      • doStatistics < 0 | 1 >
        Bildet tägliche, monatliche und jährliche Statistiken bestimmter Gerätewerte (Mittel/Min/Max oder kumulierte Werte). Für grafische Auswertungen können die Werte der Form 'statReadingNameLast' genutzt werden.

      • pathString <Zeichenkette>
        • Gerätetyp 'file': definiert den lokalen Dateinamen und -pfad
        • Gerätetyp 'url': Definiert den URL-Pfad
        • Andere: Kann benutzt werden um Login-Information zum URL Pfad von vordefinerten Geräten hinzuzufügen

      • port <Nummer>
        Beim Gerätetyp 'url' kann hier der URL-Port festgelegt werden. (standardmässig 80)

      • timeOut <Sekunden>
        Gibt an, nach wieviel Sekunden das Einlesen der Rohdaten abgebrochen werden soll. (standardmässig 10)
        Die Laufzeit des Einlesevorganges wird bei "get jsonFile" angezeigt.

      • readingFnAttributes

    Jabber

      Dieses Modul verbindet sich mit dem Jabber Netzwerk, sendet und empfängt Nachrichten von und zu einem Jabber Server.

      Jabber ist eine andere Beschreibung für "XMPP", ein Kommunikationsprotokoll für Nachrichtenorientierte "middleware", basierend auf XML.
      Fester bestandteil des Protokolls ist die Verschlüsselung zwischen Client und Server.
      Für den Benutzer ist es ähnlich anderer Chat-Plattformen wie zum Beispiel dem facebook Chat, ICQ oder Google Hangouts - jedoch frei Verfügbar, open Source und normalerweise Verschlüsselt (was Serverabhängig ist).

      Für dieses Modul brauchst du einen Account auf einem Jabber Server. Kostenlose accounts und Server findet man unter jabber.org
      Diskussionen zu diesem Modul findet man im FHEM Forum hier.

      Dieses Modul benötigt die folgenden Perl Module (inkl. SSL Möglichkeit)
      • Net::Jabber
      • Net::XMPP
      • Authen::SASL
      • XML::Stream
      • Net::SSLeay

      Seit Version 1.5 kann dieses Modul in Multi-User-Channel (sogenannte MUC) beitreten und Off-the-Record (OTR) Ende-zu-Ende Verschlüsselung benutzen.
      Wenn du OTR benutzen möchtest musst du dir Crypt::OTR von CPAN selbst installieren.
      OTR ist nochmal ein zusätzlicher Sicherheitsrelevater Punkt, da die Kommunikation wirklich von Endgerät zu FHEM verschlüsselt wird und man sich nicht auf die Jabber Server Transportverschlüsselung verlassen muss.


      Define
        define <name> Jabber <server> <port> <username> <password> <TLS> <SSL>

        Du benötigst natürlich echte Accountdaten.

        Beispiel:
          define JabberClient1 Jabber jabber.org 5222 myusername mypassword 1 0


      Set
      • set <name> msg <username> <msg>
        Sendet eine Nachricht "msg" an den Jabberuser "username"
        Beispiel:
          set JabberClient1 msg myname@jabber.org It is working!

      • set <name> msgmuc <channel> <msg>
        Sendet eine Nachricht "msg" an dieJabber-MUC-Gruppe "channel".
        Dabei wird ein eventuell mitgegebener Nickname von "channel" entfernt, so kann man direkt das Reading LastMessageJID benutzen.

        Beispiel:
          set JabberClient1 msgmuc roomname@jabber.org Woot!

      • set <name> msgotr <username> <msg>
        Sendet eine OTR verschlüsselte Nachricht an den "username", wenn keine aktive OTR Sitzung aufgebaut ist, wird versucht eine aufzubauen.
        Wenn der Empfänger OTR nicht versteht, wird die Nachricht verworfen, d.h. sie wird auf keinen Fall im Klartext übertragen.
        Beispiel:
          set JabberClient1 msgotr myname@jabber.org Wir sehen uns heute um 18:00 Uhr :*

      • set <name> subscribe <username>
        Frägt eine Authorisierung beim "username" an (normalerweise wird das nicht benötigt)
        Beispiel:
          set JabberClient1 subscribe myname@jabber.org

      Get
        N/A

      Attribute
      • OnlineStatus available|unavailable
        Setzt den Online-status, ob der Client anderen gegenüber Online ist (available) oder Offline erscheint (unavailable)
        Es ist möglich dass einige Server eingehende Nachrichten trotzdem FHEM zustellen obwohl er "unavailable" ist

        Standard: available

      • ResourceName <name>
        In der Jabber-Welt kann ein Client mit einem Usernamen öfter mit einem Server verbunden sein (z.b. Handy, Computer, FHEM).
        Der "resource name" ergibt die finale Jabber-ID und macht die verschiedenen Verbindungen einzigartig (z.B. bios@jabber.org/FHEM).
        Hier kannst du den "resource name" setzen.

        Standard: FHEM

      • PollTimer <seconds>
        Dies ist der Intervall in der überprüft wird ob neue Nachrichten zur Verarbeitung beim Jabber Server anstehen.
        Ebenfalls wird hiermit die Verbindung zum Server überprüft (Timeouts, DSL Disconnects etc.).
        Setze es nicht über 10 Sekunden, die Verbindung kann sonst die ganze Zeit getrennt werden, Sie wird zwar wieder aufgebaut, aber nach 10 Sekunden brechen die meisten Server die Verbindung automatisch ab.

        Standard: 2

      • RecvWhitelist <Regex>
        Nur wenn die Jabber-ID einer privaten empfangenen Nachricht auf diese Regex zutrifft, akzeptiert FHEM die Nachricht und gibt sie an Notifys weiter. Alles andere wird verworfen.

        Standard: .*
        Beispiele:
          myname@jabber.org
          (myname1@jabber.org|myname2@xmpp.de)

      • MucJoin channel1@server.com/mynick[:passwort]
        Tritt dem MUC mit dem spezifizierten Nickname und dem optionalem Passwort bei.

        Standard: nicht definiert
        Beispiele:
          Einen Raum betreten: channel1@server.com/mynick
          Mehrere Räume betreten: channel1@server.com/mynick,channel2@server.com/myothernick
          Einen Raum mit Passwort betreten: channel1@server.com/mynick:password

      • MucRecvWhitelist <Regex>
        Selbe funktion wie RecvWhitelist, aber für Gruppenräume: Nur wenn die Regex zutrifft, wird die Nachricht verarbeitet. Alles andere wird ignoriert.

        Standard: nicht definiert (keine Nachricht wird akzeptiert)
        Beispiele:
          Alle Nachrichten aller betretenen Räume erlauben: .*
          Alle Nachrichten bestimmter betretenen Räume erlauben: mychannel@jabber.org
          Nur bestimmte User in bestimmten betretenen Räumen erlauben: mychannel@jabber.org/NickOfFriend

      • OTREnable 1|0
        Schaltet die Verschlüsselungsfunktionen von Crypt::OTR für sichere Ende-zu-Ende Kummunikation in FHEM an oder aus.
        Es muss zwangsläufig dafür Crypt::OTR installiert sein.
        Ein Privater Schlüssel wird bei Erstbenutzung generiert, das kann mehr als 2 Stunden dauern!
        Dafür ist das eine einmalige Sache und FHEM wird dadurch nicht blockiert. Im Device sieht man im OTR_STATE wenn der Private Schlüssel fertig ist.
        Erst danach ist OTR aktiv.

        Default: nicht definiert (OTR deaktiviert)

      • OTRSharedSecret aSecretKeyiOnlyKnow@@*
        Optionales geheimes Passwort, dass man vom Endgerät an FHEM schicken kann um zu beweisen, dass es sich tatsächlich um FHEM handelt und nicht um einen Hacker der sich (z.b. bei dem Internetprovider) zwischengeschaltet hat. Normalerweise bekommt das Endgerät eine Warnung wenn sich an einer bereits verifizierten Verbindung etwas geändert hat.
        Diese Warnung sollte man dann sehr ernst nehmen.
        Default: nicht definiert, setze hier dein geheimes Passwort.


      Generierte Readings/Events:
      • Privat Nachrichten
        • Message - Komplette Nachricht inkl. JID und Text
        • LastMessage - Nur der Textteil der Nachricht
        • LastSenderJID - Nur die Sender-JID der Nachricht

      • Verschlüsselte Private Nachrichten (wenn OTREnable=1)
        • OTRMessage - Komplette entschlüsselte Nachricht inkl. JID und Text
        • OTRLastMessage - Nur der Textteil der Nachricht
        • OTRLastSenderJID - Nur die Sender-JID der Nachricht

      • MUC Raum Nachrichten (wenn MUCJoin gesetzt ist)
        • MucMessage - Komplette Nachricht (Raumname/Nickname und Text)
        • MucLastMessage - Nur der Textteil der Nachricht
        • MucLastSenderJID - Nur die Sender-JID der Nachricht

      Notizen des Entwicklers:
      • Mit folgendem Notify-Beispiel kannst du auf eingehende Nachrichten reagieren, dieses Beispiel schickt das Reading "Temperatur" des Sensors "BU_Temperatur" bei jeder ankommenden Nachricht an den Sender zurück:
        define Jabber_Notify notify JabberClient1:Message.* {
          my $lastsender=ReadingsVal("JabberClient1","LastSenderJID","0");
          my $lastmsg=ReadingsVal("JabberClient1","LastMessage","0");
          my $temperature=ReadingsVal("BU_Temperatur","temperature","0");
          fhem("set JabberClient1 msg ". $lastsender . " Temp: ".$temperature);
        }
                
      • Auf MUC Nachrichten lässt sich folgend reagieren, Augenmerk darauf legen dass der Nickname aus $lastsender in der msgmuc Funktion entfernt wird, damit die Nachricht an den Raum geht
        define Jabber_Notify notify JabberClient1:MucMessage.* {
          my $lastsender=ReadingsVal("JabberClient1","LastSenderJID","0");
          my $lastmsg=ReadingsVal("JabberClient1","LastMessage","0");
          my $temperature=ReadingsVal("BU_Temperatur","temperature","0");
          fhem("set JabberClient1 msgmuc ". $lastsender . " Temp: ".$temperature);
        }
                
      • Auf OTR Nachrichten wird reagiert, wie auf normale private Nachrichten auch, jedoch wird mit der msgotr Funktion geantwortet:
        define Jabber_Notify notify JabberClient1:OTRMessage.* {
          my $lastsender=ReadingsVal("JabberClient1","LastSenderJID","0");
          my $lastmsg=ReadingsVal("JabberClient1","LastMessage","0");
          my $temperature=ReadingsVal("BU_Temperatur","temperature","0");
          fhem("set JabberClient1 msgotr ". $lastsender . " Temp: ".$temperature);
        }
                

    JawboneUp

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

    JeeLink

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

    JsonList

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

    JsonList2

      jsonlist [<devspec>] [<value1> <value2> ...]

      Dieses Befehl sollte in der FHEMWEB oder telnet Eingabezeile ausgeführt werden, kann aber auch direkt über HTTP abgerufen werden über
        http://fhemhost:8083/fhem?cmd=jsonlist2&XHR=1
      Es liefert die JSON Darstellung der internen Variablen, Readings und Attribute zurück.
      Wenn valueX angegeben ist, dann wird nur der entsprechende Internal (DEF, TYPE, usw), Reading (actuator, measured-temp) oder Attribut zurückgeliefert für alle Geräte die in devspec angegeben sind.

      Achtung: die alte Version dieses Befehls (jsonlist, ohne 2 am Ende) is überholt, und wird in der Zukunft entfernt.

    KM271

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

    KM273

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

    KNX

      KNX ist ein Standard zur Haus- und Gebäudeautomatisierung. Der Standard begründet sich hauptsächlich auf twisted pair, findet aber auch zunehmende Verbreitung auf andere Medien (Funk, Ethernet, ...)

      Für Anfänger sei folgende Lektüre empfohlen: KNX-Basics

      Das Modul TUL stellt die Verbindung zum Bus her, Das KNX-Modul stellt die Verbindung zu den einzelnen KNX-/EIB-Geräten her. Das Modul stellt Befehle (on, off, on-until, on-for-timer) zum ein- und Ausschalten von Geräten zur Verfügung. Für numerische DPT nutzt bitte value (set <devname> value <177.45>). Für string-DPT nutzt bitte string (set <devname> string <Hello World>). Für andere, undefinierte DPT könnt Ihr raw hex Werte ans Netzwerk senden (set <devname> raw <hexval>).
      Komplexe Konfigurationen können aufgebaut werden, indem mehrere Modulinstanzen in einem Gerät definiert werden. Dafür werden mehrere Kombinationen aus GAD und DPT in einem Gerät definiert werden.

      Der KNX-Standard stellt eine Reihe vordefinierter Datentypen zur Verfügung. Dies sichert die Herstellerübergreifende Kompatibilität. Basierend auf diesen DPT wird der Status eines Gerätes interpretiert und in FHEM angezeigt. Für jedes empfangene Telegramm wird ein reading mit state, getG<group> und der Absenderadresse angelegt. Für jedes ser-command wird ein Reading mit state und setG<group> angelegt.

      Define

        define <name> KNX <group>:<DPT>:<[;readingName]> [<group>:<DPT> ..] [IODev]

        Ein KNX-device benötigt einen konkreten DPT. Bitte schaut die verfügbaren DPT unter Available DPT nach. Wird kein korrekter DPT angegeben, kann das system die Nachrichten nicht korrekt de- / codieren. Weiterhin kann bei der Gerätedefinition eine IO-Schnittstelle angegeben werden. Dies kann später ebenfalls per Attribut erfolgen.

        Jedes Device muss an eine TUL gebunden sein. Die <group> Parameter werden entweder als Gruppenadresse (0-15/0-15/0-255) oder als Hex-notation angegeben (0-f0-f0-ff). Alle definierten Gruppen können für die Buskommunikation verwendet werden. Ohne weitere Attribute, werden alle eingehenden Nachrichten in state übersetzt. Per default wird über die erste Gruppe gesendet.
        Wenn Ihr einen readingNamen angebt, wird dieser als Basis für die Readings benutzt (z.B. hugo-set, hugo-get for name hugo).
        Wollt Ihr über eine andere Gruppe senden. müsst Ihr diese indizieren (set <devname> value <17.0> <g2>).

        Das Modul autocreate generiert eine Instanz für jede unbekannte Gruppenadresse. Das Gerät selbst wird jedoch NICHT korrekt funktionieren, so lange noch kein korrekter DPT angelegt ist. Der Name ist immer KNX_nnmmooo wobei nn die Linie ist, mm der Bereich und ooo die Geräteadresse.

        Example:

              define lamp1 KNX 0/10/12:dpt1
              define lamp1 KNX 0/10/12:dpt1:meinName 0/0/5:dpt1.001
              define lamp1 KNX 0A0C:dpt1.003 myTul
              
        Ein Hinweis bezüglich dem binären Datentyp dpt1: alle Untertypen müssen über das Schlüsselwort value gesetzt werden. Empfangene Telegramme werden entsprechend ihrer Definition automatisch umbenannt. Die zur Verfügung stehenden on/off Schaltflächen ohne den Schlüssel value sind ein absoluter Sonderfall und gelten nur für den dpt1 selbst (nicht die Untertypen).

        Example:

              define rollo KNX 0/10/12:dpt1.008
        	  set rollo value up
        	  set rollo value down
              

      Set

        set <name> <on, off> [g<groupnr>] set <name> <on-for-timer, on-until> <time> [g<groupnr>] set <name> <value> [g<groupnr>] set <name> <string> [g<groupnr>] set <name> <raw> [g<groupnr>]

        Example:

              set lamp1 on
              set lamp1 off
              set lamp1 on-for-timer 10
              set lamp1 on-until 13:15:00
              set foobar raw 234578
              set thermo value 23.44
        	  set message value Hallo Welt
            

        Wenn eine Gruppe angegeben wurde (g<groupnr>) wird das Telegramm an de indizierte Gruppe gesendet (start bei 1, wie in der Definition angegeben).

              define lamp1 KNX 0/10/01:dpt1 0/10/02:dpt1
              set lamp1 on g2 (will send "on" to 0/10/02)
        	

        Ein Dimmer mit Slider:

              define dim1 KNX 0/0/5:dpt5.001
              attr dim1 slider 0,1,100
              attr dim1 webCmd value
        	

        Aktuelle Uhrzeit / Datum können wie folgt auf den Bus gelegt werden:

              define timedev KNX 0/0/7:dpt10
              attr timedev webCmd now
              
              define datedev KNX 0/0/8:dpt11
              attr datedev webCmd now
              
              # send every midnight the new date
              define dateset at *00:00:00 set datedev now
              
              # send every hour the current time
              define timeset at +*01:00:00 set timedev now
        	

      Get

        Bei jeder Ausführung wird eine Leseanfrage an die entsprechende Gruppe geschickt. Die Gruppe muss in der Lage sein, auf diese Anfrage zu antworten (dies ist nicht immer der Fall).
        Die Antwort der Gruppe wird nicht im FHEMWEB angezeigt. Das empfangene Telegramm wird (wie jedes andere) ausgewertet.

      Attributes


        Common attributes:
        DbLogInclude
        DbLogExclude
        IODev
        alias
        comment
        devStateIcon
        devStateStyle
        do_not_notify
        readingFnAttributes
        event-aggregator
        event-min-interval
        event-on-change-reading
        event-on-update-reading
        eventMap
        group
        icon
        room
        showtime
        sortby
        stateFormat
        userReadings
        userattr
        verbose
        webCmd
        widgetOverride

      format

        Der Inhalt dieses Attributes wird bei jedem empfangenen Wert angehangen, bevor der Wert in state kopeiert wird.

        Example:

              define myTemperature KNX 0/1/1:dpt5
              attr myTemperature format °C;
              

      stateRegex

        Es kann eine Reihe an Search/Replace Patterns übergeben werden (getrennt durch einen Slash). Intern wird der neue Wert von state immer im Format getG<group>:<state-value>. abgebildet. Die Ersetzungen werden bei bei jedem neuen Telegramm vorgenommen. Ihr könnt die Funktion für Konvertierungen nutzen, Einheiten hinzufügen, Spaß mit Icons haben, ... Diese Funktion wirkt nur auf den Inhalt von State - sonst wird nichts beeinflusst. Die Funktion wird direkt nach dem Ersetzen der Readings-Namen und dem ergänzen der Formate ausgeführt.

        Example:

              define myLamp KNX 0/1/1:dpt1 0/1/2:dpt1 0/1/2:dpt1
        	  attr myLamp stateRegex /getG1:/steuern:/ /getG2:/status:/ /getG3:/sperre:/ /setG[13]:/steuern:/ /setG[3]://
        	  attr myLamp devStateIcon status.on:general_an status.off:general_aus sperre.on:lock steuern.*:hourglass
              

      stateCmd

        Hier könnt Ihr ein perl-Kommando angeben, welches state beeinflusst. Die Funktion wird unmittelbar vor dem Update des Readings aufgerufen - also nach dem Umbennenen der Readings, format und regex. Es ist ein gültiges Perl-Kommando anzugeben (vgl. stateFormat). Im Gegensatz zu StateFormat wirkt sich dieses Attribut inhaltlich auf das Reading aus, und nicht "nur" auf die Anzeige im FHEMWEB.

        Beispiel:

              define myLamp KNX 0/1/1:dpt1 0/1/2:dpt1 0/1/2:dpt1
              attr myLamp stateCmd {$state = sprintf("%s", ReadingsVal($name,"getG2","undef"))}
              

      answerReading

        Wenn aktiviert, antwortet FHEM auf Leseanfragen. Der Inhalt von state wird auf den Bus gelegt.

        Leseanfragen werden beantwortet, wenn der Wert auf 1 gesetzt ist.

      listenonly

        Wenn auf 1 gesetzt, kann das Gerät keine Nachrichten senden. Sowohl Leseanfragen als auch get sind verboten.

      readonly

        Wenn auf 1 gesetzt, kann das Gerät keine Nachrichten senden. Leseanfragen sind verboten. Get ist erlaubt.

      slider

        slider <min>,<step>,<max>
        Mit diesem Attribut könnt Ihr jedem Gerät einen Slider verpassen.

        Example:

              define myDimmer KNX 0/1/1:dpt5
              attr myDimmer slider 0,1,100
        	  attr myDimmer webCmd value
              

      DPT - datapoint-types

        Die folgenden DPT sind implementiert und müssen in der Gruppendefinition angegeben werden.

        dpt1 on, off
        dpt1.001 on, off
        dpt1.002 true, false
        dpt1.003 enable, disable
        dpt1.008 up, down
        dpt1.009 open, closed
        dpt1.019 closed, open
        dpt3 -100..+100
        dpt5 0..255
        dpt5.001 0..100 %
        dpt5.003 0..360 °
        dpt5.004 0..255 %
        dpt6 -127..+127
        dpt6.001 0..100 %
        dpt7 0..65535
        dpt7.001 0..65535
        dpt7.005 0..65535 s
        dpt7.006 0..65535 m
        dpt7.012 0..65535 mA
        dpt7.013 0..65535 lux
        dpt8 -32768..32768
        dpt8.005 -32768..32768 s
        dpt8.010 -32768..32768 %
        dpt8.011 -32768..32768 °
        dpt9 -670760.0..+670760.0
        dpt9.001 -670760.0..+670760.0 °
        dpt9.004 -670760.0..+670760.0 lux
        dpt9.005 -670760.0..+670760.0 m/s
        dpt9.006 -670760.0..+670760.0 Pa
        dpt9.007 -670760.0..+670760.0 %
        dpt9.008 -670760.0..+670760.0 ppm
        dpt9.009 -670760.0..+670760.0 m³/h
        dpt9.010 -670760.0..+670760.0 s
        dpt9.021 -670760.0..+670760.0 mA
        dpt9.024 -670760.0..+670760.0 kW
        dpt9.025 -670760.0..+670760.0 l/h
        dpt9.026 -670760.0..+670760.0 l/h
        dpt9.028 -670760.0..+670760.0 km/h
        dpt10 01:00:00
        dpt11 01.01.2000
        dpt12 0..+Inf
        dpt13 -Inf..+Inf
        dpt13.010 -Inf..+Inf Wh
        dpt13.013 -Inf..+Inf kWh
        dpt14 -Inf.0..+Inf.0
        dpt14.019 -Inf.0..+Inf.0 A
        dpt14.027 -Inf.0..+Inf.0 V
        dpt14.056 -Inf.0..+Inf.0 W
        dpt14.068 -Inf.0..+Inf.0 °C;
        dpt14.076 -Inf.0..+Inf.0 m³
        dpt16 String;
        dpt16.000 ASCII-String;
        dpt16.001 ISO-8859-1-String (Latin1);
        dpt232 RGB-Wert RRGGBB

    KODI

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

    KOPP_FC

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

    KOSTALPIKO

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

    KS300

      Fhem kann KS300 bzw. KS555 Funktelegramme mit einem FHZ, einem WS300 oder einem CUL empfangen. Daher muss eines von diesen zuerst definiert sein.
      Dieses Modul behandelt Nachrichten die mittels CUL oder FHZ empfangen werden.

      Define
        define <name> KS300 <housecode> [ml/raincounter [wind-factor]]

        <housecode> ist ein vierstelliger HEX-Wert, der aus historischen Gründen angegeben werden muss, es wird ignoriert. Der ml/raincounter hat einen Default-Wert von 255ml, und muss angegeben sein wenn man den Wind-Faktor setzen will. Dieser hat einen Default-Wert von 1.0.
        Beispiele:
          define ks1 KS300 1234

      Set
        N/A

      Get
        N/A

      Attributes
      • ignore
      • IODev
      • eventMap

      • do_not_notify
      • showtime
      • model (ks300)
      • rainadjustment
        Wenn dieses Attribut gesetzt ist, Regenmesser resets werden automatisch berücksichtigt. Resets treten beim Wechsel der Batterie und nach Beobachtung einiger Benutzer auch nach zufälligen Schaltzyklen auf. Die Voreinstellung ist 0 (aus).

    KeyValueProtocol

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

    LGTV

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

    LGTV_IP12

      Dieses Modul steuert SmartTV's des Herstellers LG welche zwischen 2012 und 2014 produziert wurden über die Netzwerkschnittstelle. Es bietet die Möglichkeit den aktuellen TV Kanal zu steuern, sowie Apps zu starten, Fernbedienungsbefehle zu senden, sowie den aktuellen Status abzufragen.

      Es werden alle TV Modelle unterstützt, welche mit der LG TV Remote Smartphone App steuerbar sind.

      Definition
        define <name> LGTV_IP12 <IP-Addresse> [<Status_Interval>]

        define <name> LGTV_IP12 <IP-Addresse> [<Off_Interval>] [<On_Interval>]


        Bei der Definition eines LGTV_IP12-Moduls wird eine interne Routine in Gang gesetzt, welche regelmäßig (einstellbar durch den optionalen Parameter <Status_Interval>; falls nicht gesetzt ist der Standardwert 30 Sekunden) den Status des TV abfragt und entsprechende Notify-/FileLog-Definitionen triggert.

        Sofern 2 Interval-Argumente übergeben werden, wird der erste Parameter <Off_Interval> genutzt sofern der TV ausgeschaltet ist. Der zweiter Parameter <On_Interval> wird verwendet, sofern der TV eingeschaltet ist.

        Beispiel:

          define TV LGTV_IP12 192.168.0.10

          # Mit modifiziertem Status Interval (60 Sekunden)
          define TV LGTV_IP12 192.168.0.10 60

          # Mit gesetztem "Off"-Interval (60 Sekunden) und "On"-Interval (10 Sekunden)
          define TV LGTV_IP12 192.168.0.10 60 10


      Set-Kommandos
        set <Name> <Kommando> [<Parameter>]

        Aktuell werden folgende Kommandos unterstützt.

        • channel <Nummer>  -   wählt den aktuellen TV-Kanal aus
        • channelUp   -   schaltet auf den nächsten Kanal um
        • channelDown   -   schaltet auf den vorherigen Kanal um
        • removePairing   -   löscht das Pairing zwischen FHEM und dem TV
        • showPairCode   -   zeigt den Pair-Code auf dem TV-Bildschirm an. Dieser Code muss im Attribut pairingcode gesetzt werden, damit FHEM mit dem TV kommunizieren kann.
        • startApp <Name>  -   startet eine installierte App
        • stopApp <Name>  -   stoppt eine laufende App
        • statusRequest   -   fragt den aktuellen Status ab
        • remoteControl up,down,...   -   sendet Fernbedienungsbefehle


      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.

      • disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM...
      • Optionales Attribut zur Deaktivierung der zyklischen Status-Updates innerhalb von bestimmten Zeitintervallen. Das Argument ist eine Leerzeichen-getrennte Liste von Minuszeichen-getrennten HH:MM Paaren (Stunde : Minute). Falls die aktuelle Uhrzeit zwischen diese Werte fällt, dann werden zyklische Status-Updates, wie bei disable, ausgesetzt. Statt HH:MM kann man auch HH oder HH:MM:SS angeben.

        Um einen Intervall um Mitternacht zu spezifizieren, muss man zwei einzelne Intervalle angeben, z.Bsp.:
        23:00-24:00 00:00-01:00
        Standardwert ist nicht gesetzt (dauerhaft aktiv)

      • request-timeout
      • Optionales Attribut. Maximale Dauer einer Anfrage in Sekunden zum TV.

        Mögliche Werte: 1-5 Sekunden. Standartwert ist 4 Sekunden

      • pairingcode
      • Dieses Attribut speichert den Pairing Code um sich gegenüber dem TV als vertrauenswürdigen Controller zu authentifizieren. Der Pairing-Code kann via Set-Kommando showPairCode angezeigt werden.


      Generierte Readings/Events:
      • 3D - Status des 3D-Wiedergabemodus ("true" => 3D Wiedergabemodus aktiv, "false" => 3D Wiedergabemodus nicht aktiv)
      • channel - Die Nummer des aktuellen TV-Kanals
      • channelName - Der Name des aktuellen TV-Kanals
      • currentProgram - Der Name der laufenden Sendung
      • input - Die aktuelle Eingangsquelle (z.B. Antenna, Sattelite, HDMI1, ...)
      • inputLabel - Die benutzerdefinierte Bezeichnung der aktuellen Eingangsquelle
      • mute on,off - Der aktuelle Stumm-Status ("on" => Stumm, "off" => Laut)
      • power on,off - Der aktuelle Power-Status ("on" => eingeschaltet, "off" => ausgeschaltet)
      • volume - Der aktuelle Lautstärkepegel.

    LIGHTIFY

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

    LINDY_HDMI_SWITCH

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

    LIRC

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

    LUXTRONIK2

      Die Luxtronik 2.0 ist eine Heizungssteuerung der Firma Alpha Innotec, welche in Wärmepumpen von Alpha Innotec, Siemens Novelan (WPR NET), Roth (ThermoAura®, ThermoTerra), Elco und Wolf Heiztechnik (BWL/BWS) verbaut ist. Sie besitzt einen Ethernet Anschluss, so dass sie direkt in lokale Netzwerke (LAN) integriert werden kann.
      Das Modul wurde bisher mit folgender Steuerungs-Firmware getestet: V1.51, V1.54C, V1.60, V1.64, V1.69, V1.70, V1.73, V1.77.
      Mehr Infos im entsprechenden Artikel der FHEM-Wiki.
       
      Define
        define <name> LUXTRONIK2 <IP-Adresse[:Port]> [Abfrageinterval]
        Wenn das Abfrage-Interval nicht angegeben ist, wird es auf 300 (Sekunden) gesetzt. Der kleinste mögliche Wert ist 30.
        Die Angabe des Portes kann gewöhnlich entfallen.
        Beispiel: define Heizung LUXTRONIK2 192.168.0.12 600

      Set
        Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpen mit ungetester Firmware nicht unabsichtlich beschädigt werden.
         
      • activeTariff < 0 - 9 >
        Erlaubt die gezielte, separate Erfassung der statistischen Verbrauchswerte (doStatistics = 1) für verschiedene Tarife (Doppelstromzähler)
        Dieser Wert muss entsprechend des vorhandenen oder geplanten Tarifes zum jeweiligen Zeitpunkt z.B. durch den FHEM-Befehl "at" gesetzt werden.
        0 = tariflos

      • hotWaterCircPumpDeaerate <on | off>
        Schaltet die externe Warmwasser-Zirkulationspumpe an oder aus. Durch die Zirkulation wird das Abkühlen des Warmwassers in den Hausleitungen verhindert. Der Wärmeverbrauch steigt jedoch drastisch.
        Achtung! Es wird die Entlüftungsfunktion der Steuerung genutzt. Dadurch taktet die Pumpe jeweils 5 Minuten ein und 5 Minuten aus.

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

      • opModeHotWater <Betriebsmodus>
        Betriebsmodus des Heißwasserboilers ( Auto | Party | Off )

      • resetStatistics <statWerte>
        Löscht die ausgewählten statisischen Werte: all, statBoilerGradientCoolDownMin, statAmbientTemp..., statElectricity..., statHours..., statHeatQ...

      • returnTemperatureHyst <Temperatur>
        Sollwert-Hysterese der Heizungsregelung. 0.5 K bis 3 K. In 0.1er Schritten einstellbar.

      • returnTemperatureSetBack <Temperatur>
        Absenkung oder Anhebung der Rücklauftemperatur von -5°C bis + 5°C

      • INTERVAL <Sekunden>
        Abfrageinterval in Sekunden

      • statusRequest
        Aktualisieren der Gerätewerte

      • synchClockHeatPump
        Abgleich der Uhr der Steuerung mit der FHEM Zeit. Diese Änderung geht verloren, sobald die Steuerung ausgeschaltet wird!!

      Get
        Es wurde noch kein "get" implementiert ...

      Attribute
      • allowSetParameter < 0 | 1 >
        Die internen Parameter der Wärmepumpensteuerung können nur geändert werden, wenn dieses Attribut auf 1 gesetzt ist.

      • autoSynchClock <Zeitunterschied>
        Die Uhr der Wärmepumpe wird automatisch korrigiert, wenn ein gewisser Zeitunterschied (10 s - 600 s) gegenüber der FHEM Zeit erreicht ist. Zuvor wird die Kompatibilität der Firmware überprüft.
        (Ein Gerätewert 'delayDeviceTimeCalc' <= 2 s ist auf die internen Berechnungsintervale der Wärmepumpensteuerung zurückzuführen.)

      • compressor2ElectricalPowerWatt
        Betriebsleistung des zweiten Kompressors zur Berechung der Arbeitszahl (erzeugte Wärme pro elektrische Energieeinheit) und Abschätzung des elektrischen Verbrauches (Auswertungen noch nicht implementiert)

      • doStatistics < 0 | 1 >
        Berechnet statistische Werte: statBoilerGradientHeatUp, statBoilerGradientCoolDown, statBoilerGradientCoolDownMin (Wärmeverlust des Boilers)
        Bildet tägliche, monatliche und jährliche Statistiken bestimmter Gerätewerte.
        Für grafische Auswertungen können die Werte der Form 'statReadingNameLast' genutzt werden.

      • heatPumpElectricalPowerWatt <E-Leistung in Watt>
        Elektrische Leistungsaufnahme der Wärmepumpe in Watt bei einer Vorlauftemperatur von 35 °C zur Berechung der Arbeitszahl (erzeugte Wärme pro elektrische Energieeinheit) und Abschätzung des elektrischen Verbrauches

      • heatPumpElectricalPowerFactor
        Änderung der elektrischen Leistungsaufnahme pro 1 K Vorlauftemperaturdifferenz zu 35 °C
        (z.B. 2% pro 1 K = 0,02)

      • heatRodElectricalPowerWatt <E-Leistung in Watt>
        Elektrische Leistungsaufnahme der Heizstäbe in Watt zur Abschätzung des elektrischen Verbrauches

      • ignoreFirmwareCheck < 0 | 1 >
        Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpen mit ungetester Firmware nicht unabsichtlich beschädigt werden. Wenn dieses Attribute auf 1 gesetzt ist, dann wird der Firmware-Test ignoriert und neue Firmware kann getestet werden. Dieses Attribut wird jedoch ignoriert, wenn die Steuerungs-Firmware bereits als nicht kompatibel berichtet wurde.

      • statusHTML
        wenn gesetzt, dann wird ein HTML-formatierter Wert "floorplanHTML" erzeugt, welcher vom Modul FLOORPLAN genutzt werden kann.
        Momentan wird nur geprüft, ob der Wert dieses Attributes ungleich NULL ist, der entsprechende Gerätewerte besteht aus dem aktuellen Wärmepumpenstatus und der Heizwassertemperatur.

      • readingFnAttributes

    LaCrosse

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

    LaCrosseGateway

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

    Level

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

    LightScene

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

    M232

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

    M232Counter

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

    M232Voltage

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

    MAX

      Verarbeitet MAX! Geräte, die von der eQ-3 MAX! Gruppe hergestellt werden.
      Falls Heizkörperthermostate eine Temperatur von Null Grad zeigen, wurde von ihnen noch nie Daten an den MAX Cube gesendet. In diesem Fall kann das Senden von Daten an den Cube durch Einstellen einer Temeratur direkt am Gerät (nicht über fhem) erzwungen werden.

      Define
        define <name> MAX <type> <addr>

        Erstellt ein MAX Gerät des Typs <type> und der RF Adresse <addr>. Als <type> kann entweder HeatingThermostat (Heizkörperthermostat), HeatingThermostatPlus (Heizkörperthermostat Plus), WallMountedThermostat (Wandthermostat), ShutterContact (Fensterkontakt) oder PushButton (Eco-Taster) gewählt werden. Die Adresse <addr> ist eine 6-stellige hexadezimale Zahl. Da autocreate diese vergibt, sollte diese nie händisch gewählt werden müssen.
        Es ist empfehlenswert, das Atribut event-on-change-reading zu setzen, z.B. attr MAX_123456 event-on-change-reading .* da ansonsten der "Polling" Mechanismus alle 10 s ein Ereignis erzeugt.
        Beispiel:
          define switch1 MAX PushButton ffc545

      Set
      • desiredTemperature <value> [until <date>]
        Nur für Heizkörperthermostate. <value> kann einer aus folgenden Werten sein
        • Grad Celsius zwischen 3,5 und 30,5 Grad in 0,5 Kelvin Schritten
        • "on" oder "off" versetzt den Thermostat in volle bzw. keine Heizleistung
        • "eco" oder "comfort" mit der eco/comfort Temperatur, die direkt am Gerät eingestellt wurde (änhlich wie die rechte Taste am Gerät selbst)
        • "auto <temperature>". Damit wird das am Thermostat eingestellte Wochenprogramm abgearbeitet. Wenn optional die Temperatur <temperature> angegeben wird, wird diese bis zum nästen Schaltzeitpunkt des Wochenprogramms als desiredTemperature gesetzt.
        • "boost" aktiviert den Boost Modus, wobei für boostDuration Minuten das Ventil boostValveposition Prozent geöffnet wird.
        Alle Werte außer "auto" können zusäzlich den Wert "until" erhalten, wobei <date> in folgendem Format sein muß: "dd.mm.yyyy HH:MM" (Minuten nur "30" bzw. "00"!), um kurzzeitige eine andere Temperatur bis zu diesem Datum/dieser Zeit einzustellen. Bitte sicherstellen, dass der Cube bzw. das Gerät die korrekte Systemzeit hat.
      • groupid <id>
        Nur für Heizkörperthermostate. Schreibt die angegebene Gruppen ID in den Speicher des Gerätes. Um alle Geräte in einem Raum zu synchronisieren, können diese derselben Gruppen ID zugeordnet werden, diese muß größer Null sein.
      • ecoTemperature <value>
        Nur für Heizkörperthermostate. Schreibt die angegebene eco Temperatur in den Speicher des Gerätes. Diese kann durch Drücken der rechten Taste am Gerät aktiviert werden.
      • comfortTemperature <value>
        Nur für Heizkörperthermostate. Schreibt die angegebene comfort Temperatur in den Speicher des Gerätes. Diese kann durch Drücken der rechten Taste am Gerät aktiviert werden.
      • measurementOffset <value>
        Nur für Heizkörperthermostate. Schreibt die angegebene offset Temperatur in den Speicher des Gerätes. Wenn der interne Temperatursensor nicht korrekt kalibriert ist, kann dieses einen systematischen Fehler erzeugen. Mit dem Wert measurementOffset, kann dieser Fehler kompensiert werden. Die ausgelese Temperatur ist gleich der gemessenen Temperatur + measurementOffset. Normalerweise ist die intern gemessene Temperatur höher als die Raumtemperatur, da der Sensor näher am Heizkörper ist und man verwendet einen kleinen negativen Offset, der zwischen -3,5 und 3,5 Kelvin sein muß.
      • minimumTemperature <value>
        Nur für Heizkörperthermostate. Schreibt die angegemene minimum Temperatur in der Speicher des Gerätes. Diese begrenzt die Temperatur, die am Gerät manuell eingestellt werden kann.
      • maximumTemperature <value>
        Nur für Heizkörperthermostate. Schreibt die angegemene maximum Temperatur in der Speicher des Gerätes. Diese begrenzt die Temperatur, die am Gerät manuell eingestellt werden kann.
      • windowOpenTemperature <value>
        Nur für Heizkörperthermostate. Schreibt die angegemene window open Temperatur in den Speicher des Gerätes. Das ist die Tempereratur, die an der Heizung kurzfristig eingestellt wird, wenn ein geöffnetes Fenster erkannt wird. Der Wert 4,5 Grad bzw. "off" schaltet die Reaktion auf ein offenes Fenster aus.
      • windowOpenDuration <value>
        Nur für Heizkörperthermostate. Schreibt die angegebene window open Dauer in den Speicher des Gerätes. Dies ist die Dauer, während der die Heizung kurzfristig die window open Temperatur einstellt, wenn ein offenes Fenster durch einen schnellen Temperatursturz erkannt wird. (Wird nicht verwendet, wenn das offene Fenster von ShutterControl erkannt wird.) Parameter muss zwischen Null und 60 Minuten sein als Vielfaches von 5.
      • decalcification <value>
        Nur für Heizkörperthermostate. Schreibt die angegebene Zeit für decalcification in den Speicher des Gerätes. Parameter muss im Format "Sat 12:00" sein, wobei die Minuten "00" sein müssen. Zu dieser angegebenen Zeit wird das Heizkörperthermostat das Ventil kurz ganz öffnen, um vor Schwergängigkeit durch Kalk zu schützen.
      • boostDuration <value>
        Nur für Heizkörperthermostate. Schreibt die angegebene Boost Dauer in den Speicher des Gerätes. Der gewählte Parameter muss einer aus 5, 10, 15, 20, 25, 30 oder 60 sein und gibt die Dauer der Boost-Funktion in Minuten an.
      • boostValveposition <value>
        Nur für Heizkörperthermostate. Schreibt die angegebene Boost Ventilstellung in den Speicher des Gerätes. Dies ist die Ventilstellung (in Prozent) die bei der Boost-Fumktion eingestellt wird.
      • maxValveSetting <value>
        Nur für Heizkörperthermostate. Schreibt die angegebene maximale Ventilposition in den Speicher des Gerätes. Der Heizkörperthermostat wird das Ventil nicht weiter öffnen als diesen Wert (Angabe in Prozent).
      • valveOffset <value>
        Nur für Heizkörperthermostate. Schreibt den angegebenen offset Wert der Ventilstellung in den Speicher des Gerätes Der Heizkörperthermostat wird diesen Wert während der Regelung zu den berechneten Ventilstellungen hinzuaddieren.
      • factoryReset
        Setzt das Gerät auf die Werkseinstellungen zurück. Das Gerät muss anschließend neu angelernt werden.
        ACHTUNG: Wenn dies in Kombination mit einem Fensterkontakt und dem MAXLAN Modul verwendet wird, muss der Fensterkontakt einmal manuell ausgelöst werden, damit das Zurücksetzen auf Werkseinstellungen beendet werden kann.
      • associate <value>
        Verbindet ein Gerät mit einem anderen. <value> kann entweder der Name eines MAX Gerätes oder seine 6-stellige hexadezimale Adresse sein.
        Wenn ein Fensterkontakt mit einem {Heizkörper-/Wand-}Thermostat verbunden wird, sendet der Fensterkontakt automatisch die windowOpenTemperature Temperatur wenn der Kontakt geöffnet ist. Das Thermostat muss ebenfalls mit dem Fensterkontakt verbunden werden, um diese Botschaften zu verarbeiten. Achtung: Nach dem Senden der Botschaft zum Verbinden an den Fensterkontakt muss der Knopf am Fensterkontakt gedrückt werden um den Fensterkonakt einzuschalten und den Befehl zu verarbeiten. Details über das erfolgreiche Verbinden finden sich in der fhem Logdatei! Das Verbinden eines Heizkörperthermostates und eines Wandthermostates synchronisiert deren desiredTemperature und verwendet die am Wandthermostat gemessene Temperatur für die Regelung.
      • deassociate <value>
        Löst die Verbindung, die mit associate gemacht wurde, wieder auf.
      • weekProfile [<day> <temp1>,<until1>,<temp2>,<until2>] [<day> <temp1>,<until1>,<temp2>,<until2>] ...
        Erlaubt das Setzen eines Wochenprofils. Nur für Heizk&oum;rperthermostate bzw. Wandthermostate.
        Beispiel:
        set MAX_12345 weekProfile Fri 24.5,6:00,12,15:00,5 Sat 7,4:30,19,12:55,6
        stellt das folgende Profil ein
        Freitag: 24.5 °C von 0:00 - 6:00, 12 °C von 6:00 - 15:00, 5 °C von 15:00 - 0:00
        Samstag: 7 °C von 0:00 - 4:30, 19 °C von 4:30 - 12:55, 6 °C von 12:55 - 0:00

        und behält die Profile für die anderen Wochentage bei.

      Get
        N/A

      Attributes
      • eventMap
      • IODev
      • loglevel
      • do_not_notify
      • ignore
      • readingFnAttributes
      • keepAuto
        Standardwert: 0. Wenn der Wert auf 1 gesetzt wird, bleibt das Gerät im Wochenprogramm auch wenn eine desiredTemperature gesendet wird.

      Erzeugte Ereignisse:
      • desiredTemperature
        Nur für Heizkörperthermostate und Wandthermostate
      • valveposition
        Nur für Heizkörperthermostate
      • battery
      • temperature
        Die gemessene Temperatur (= gemessene Temperatur + measurementOffset), nur für Heizkörperthermostate und Wandthermostate

    MAXLAN

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

    MEDIAPORTAL

    Verbindet sich über das Wifiremote-Plugin mit einer laufenden Mediaportal-Instanz.

    Beispiel

    define wohnzimmer_Mediaportal MEDIAPORTAL 192.168.0.47:8017

    Define

    define <name> MEDIAPORTAL host[:port]

    Definiert ein Mediaportal Interface für die Kommunikation mit einem Wifiremote-Plugin einer Mediaportal Installation.

    host[:port]
    Der Hostname und der Port eines laufenden Mediaportal-Wifiremote-Plugins. Wenn der Port nicht angegeben wurde, wird 8017 als Standard verwendet.

    Set

    • Grundsätzliches
      • connect
        Erzwingt eine sofortige Verbindung zu Mediaportal. Normalerweise würde die normale Verbindungswiederholung von Fhem (30s) abgewartet werden.
      • powermode <mode>
        Eins aus (logoff, suspend, hibernate, reboot, shutdown, exit). Setzt den powermode, z.B. shutdown, zum Herunterfahren des Computers des Mediaportal-Systems.
      • reconnect
        Erzwingt eine sofortige Trennung und Neuverbindung zu Mediaportal.
    • Control-Befehle
      • command <command>
        Eins aus (stop, record, pause, play, rewind, forward, replay, skip, back, info, menu, up, down, left, right, ok, volup, voldown, volmute, chup, chdown, dvdmenu, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, clear, enter, teletext, red, blue, yellow, green, home, basichome, nowplaying, tvguide, tvrecs, dvd, playlists, first, last, fullscreen, subtitles, audiotrack, screenshot). Sendet das entsprechende Kommando an den Player.
      • key <keyvalue>
        Sendet die entsprechende Taste an den Player.
      • sleep
        Startet den Hibernate-Modus. Dieser Befehl ist ein Shortcut für "powermode hibernate"
      • wakeup
        Weckt den Mediaportal-Rechner auf (WakeUp-On-LAN).
    • Abspielbefehle
      • playchannel <channelID>
        Spielt den Kanal mit der entsprechenden ID ab.
      • playfile <fileType> <filePath>
        Spielt die entsprechende Datei mit dem angegebenen Typ ab. FileType kann (audio, video) sein.
      • playlist <command> <param>
        Sendet das entsprechende Playlist-Kommando mit dem gegebenen Parameter. Das Kommando kann (play, loadlist, loadlist_shuffle, loadfrompath, loadfrompath_shuffle) sein.
      • Volume <volumelevel>
        Setzt die angegebene Lautstärke.

    Get

    • Grundsätzliches
      • status
        Sendet eine Aufforderung für das Senden einer status-Nachricht. Liefert dann asynchron die Informationen "Title" und "PlayStatus".
      • nowplaying
        Sendet eine Aufforderung für das Senden einer nowplaying-Nachricht. Liefert dann asynchron die Informationen "Duration", "Position" und "File"".

    Attribute

    • Grundsätzliches
      • disable <value>
        Eins aus (0, 1). Mit diesem Attribut kann das Modul deaktiviert werden.
      • generateNowPlayingUpdateEvents <value>
        Eins aus (0, 1). Mit diesem Attribut kann die Erzeugung eines NowPlayingUpdate-Events an- oder abgeschaltet werden. Wenn auf "1" gesetzt, generiert Fhem ein Event pro Sekunde mit den angepassten Zeitangaben. Standard ist "0".
      • HeartbeatInterval <intervall>
        In Sekunden. Legt das Intervall für die Prüfung der Verbindung zu Mediaportal fest. Mit "0" kann die Prüfung deaktiviert werden. Wenn kein Wert angeggeben wird, wird "15" verwendet.
      • macaddress <address>
        Gibt die Mac-Adresse des Mediaportal-Rechners an. Das wird für die WakeUp-Funktionalität benötigt. z.B. "90:E6:BA:C2:96:15"
    • Authentifizierung
      • authmethod <value>
        Eins aus (none, userpassword, passcode, both). Hiermit wird der Authentifizierungsmodus festgelegt.
      • password <value>
        Hiermit wird das Passwort für die Authentifzierung festgelegt.
      • username <value>
        Hiermit wird der Benutzername für die Authentifizerung festgelegt.

    MPD

      FHEM Modul zur Steuerung des MPD (oder Mopidy) ähnlich dem MPC (MPC = Music Player Command, das Kommando Zeilen Interface für den Music Player Daemon ) (englisch)
      Um den MPD auf einem Raspberry Pi zu installieren finden sich im Internet zahlreiche gute Dokumentaionen z.B. hier
      Thread im FHEM Forum : Modul für MPD
      Das Modul benötigt zwingend JSON, installation z.B. mit sudo apt-get install libjson-perl
      Define
        define <name> MPD <IP MPD Server | default localhost> <Port MPD Server | default 6600>
        Beispiel :
              define myMPD MPD 192.168.0.99 7000
              
          wenn FHEM und der MPD auf dem gleichen PC laufen :
              define myMPD MPD
              

      Set
        set <name> <was>
         
        z.Z. unterstützte Kommandos
         
        play => spielt den aktuellen Titel der MPD internen Playliste
        clear => löscht die MPD interne Playliste
        stop => stoppt die Wiedergabe
        pause => Pause an/aus
        previous => spielt den vorherigen Titel in der Playliste
        next => spielt den nächsten Titel in der Playliste
        random => zufällige Wiedergabe an/aus
        repeat => Wiederholung an/aus
        toggle => wechselt von play nach stop bzw. stop/pause nach play
        volume (%) => ändert die Lautstärke von 0 - 100%
        volumeUp => Lautstärke schrittweise erhöhen , Schrittweite = ( attr volumeStep size )
        volumeDown => Lautstärke schrittweise erniedrigen , Schrittweite = ( attr volumeStep size )
        playlist (name|SongNr|Position) => lade Playliste aus der MPD Datenbank und starte die Wiedergabe
        Werden SongNr und/oder Position nicht mit übergeben, startet die Wiedergabe mit dem ersten Titel (Song=0) am Anfang (Position=0)
        playfile (file) => erzeugt eine MPD interne Playliste mit file als Inhalt und spielt dieses ab
        updateDb => wie MPC update, Update der MPD Datenbank
        reset => reset des FHEM MPD Moduls
        mpdCMD (cmd) => sende cmd direkt zum MPD Server ( siehe auch MPD Comm Ref )
        IdleNow => sendet das Kommando idle zum MPD und wartet auf Ereignisse
        clear_readings => löscht sehr viele Readings
        mute => on,off,toggle
        seekcur (zeit) => Format: [[hh:]mm:]ss. nicht vor MPD Version 0.20
        forward => Springt im laufenden Track um einen optional per seekStep oder seekStepSmall definierten Wert nach vorne bzw. defaultmäßig um 7%.
        rewind => Springt so wie bei forward beschrieben entsprechend zurück.
        channel => Wechsele zur Playliste mit der angegebenen Nummer
        channelUp => wechselt zur nächsten Playliste
        channelDown => wechselt zur vorherigen Playliste
        save_bookmark => speichert den aktuellen Zustand (Tracknummer und Position innerhalb des Tracks für die gerade geladene Playliste
        . dies sunktioniert nur, wenn die Playliste mit dem Modul geladen wurde und wenn das Attribut bookmarkDir gesetzt ist.
        load_bookmark => stellt den zuletzt gespeicherten Zustand (set bookmark) der geladenen Playliste wieder her und springt zum gespeicherten Track und Position
        wird zusätzlich mit übergeben wird zuvor die entsprechend Playliste geladen

      Get
        get <name> <was>
         
        z.Z. unterstützte Kommandos
        music => zeigt alle Dateien der MPD Datenbank
        playlists => zeigt alle Playlisten der MPD Datenbank
        playlistsinfo => zeigt Informationen der aktuellen Playliste
        webrc => HTML Ausgabe einer einfachen Web Fernbedienung Bsp :.
              define <name> weblink htmlCode {fhem("get <name> webrc", 1)}
              attr <name> room MPD
            
        statusRequest => hole aktuellen MPD Status
        currentsong => zeigt Informationen zum aktuellen Titel der MPD internen Playliste
        outputs => zeigt Informationen der definierten MPD Ausgabe Kanäle ( aus /etc/mpd.conf )
        bookmarks => zeigt eine Liste aller bisher gespeicherten Bookmarks

      Attribute
      • password => Password falls in der mpd.conf definiert
      • loadMusic 1|0 => lade die MPD Titel beim FHEM Start : mpd.conf - music_directory
      • loadPlaylists 1|0 => lade die MPD Playlisten beim FHEM Start : mpd.conf - playlist_directory
      • volumeStep x => Schrittweite für Volume +/-
      • titleSplit 1|0 => zerlegt die aktuelle Titelangabe am ersten Vorkommen von - (BlankMinusBlank) in die zwei Felder Artist und Titel,
        wenn im abgespielten Titel die Interpreten Information nicht verfügbar ist (sehr oft bei Radio-Streams default 1)
        Liegen keine Titelangaben vor wird die Ausgabe durch den Namen der Radiostation ersetzt
      • timeout (default 1) => Timeoutwert in Sekunden für die Verbindung fhem-mpd
      • waits (default 60) => Überwachungszeit in Sekunden für den Idle Prozess. In Verbindung mit refresh_song der Aktualisierungs Intervall für die aktuellen Songparamter,
        (z.B. um den Fortschrittsbalken bei TabletUI aktuell zu halten)
      • stateMusic 1|0 => zeige Musikliste als DropDown im Webfrontend
      • statePlaylists 1|0 => zeige Playlisten als DropDown im Webfrontend
      • player mpd|mopidy|forked-daapd (default mpd) => welcher Player wird gesteuert
        ACHTUNG : Mopidy unterstützt nicht alle Kommandos des echten MPD ! (siehe Mopidy Dokumentation)
      • Cover Art Funktionen von last.fm :
      • image_size -1|0|1|2|3 (default -1 = keine Interpretenbilder und Infos von last.fm verwenden)
        last.fm stellt verschiedene Bildgroessen zur Verfügung :
        0 = 32x32 , 1 = 64x64 , 2 = 174x174 , 3 = 300x300
      • artist_content 0|1 => stellt Interpreteninformation im Reading artist_content zur Verfügung
      • artist_summary 0|1 => stellt weitere Interpreteninformation im Reading artist_summary zur Verfügung
        Beispiel Anzeige mittels readingsGroup :
              define rg_artist readingsGroup <MPD name>:artist,artist_image_html,artist_summary
              attr rg_artist room MPD
            
      • cache (default lfm => /fhem/www/lfm) Zwischenspeicher für die JSON und PNG Dateien
        Wichtig : Der User unter dem der fhem Prozess ausgeführt wird (default fhem) muss Lese und Schreibrechte in diesem Verzeichniss haben !
        Das Verzeichnis sollte auch unterhalb von www liegen, damit der fhem Webserver direkten Zugriff auf die Bilder hat.
      • unknown_artist_image => Ersatzimage wenn kein anderes Image zur Verfügung steht (default : /fhem/icons/1px-spacer)
      • bookmarkDir => ein vom FHEM User les- und beschreibbares Verzeichnis. Wennn dieses definiert wird, ist das Speichern und Wiederherstellen von Playlistzuständen mit Hilfe von set/get bookmark möglich
      • autoBookmark => wenn dies auf 1 gesetzt wird, dann werden automatisch Playlistenzustände geladen und gespeichert, immer wenn die Playliste mit diesem Modul gewechselt wird
      • seekStep => wenn definiert, wird dadurch die Sprungweite von forward und rewind gesetzt. Der Wert gilt als Prozentwert. default: 7
      • seekStepSmall => Wenn diesem Attribut kann für den Anfang eines Tracks innerhalb der ersten per seekStepSmall definierten Prozent eine kleinere Sprungweite definiert werden,
        um so z.B. die Intromusik von Hörspielen oder Hörbüchern überspringen zu können. default: 1
      • seekStepSmallThreshold => unterhalb dieses Wertes wird seekStepSmall benutzt, oberhalb seekStep default: 0 (ohne Funktion)
      • no_playlistcollection (default 0) => wenn auf 1 gesetzt wird das Reading playlistcollection nicht erzeugt

      Readings
        - alle MPD internen Werte
        - vom Modul direkt erzeugte Readings :
        playlistinfo : (TabletUI Medialist)
        playlistcollection : (TabletUI)
        playlistname : (TabletUI)
        artist_image : (bei Nutzung von Last.fm)
        artist_image_html : (bei Nutzung von Last.fm)
        album_image : (bei Nutzung von Last.fm)
        album_image_html : (bei Nutzung von Last.fm)
        artist_content : (bei Nutzung von Last.fm)
        artist_summary : (bei Nutzung von Last.fm)
        playlistinfo : (z.B. für die TabletUI Medialist)
        playlistcollection : (TabletUI) Liste der Playlisten
        playlistname : (TabletUI) Name der aktuellen Playliste aus playlistcollection
        playlist_num : Playlisten Nr. (0 .. n) der aktuellen Playliste aus playlistcollection playlist_json : (notwendig fü das Medialist Modul)
        Cover : Cover Bild zum aktuellen Song aus playlist_json
        currentTrackProvider : Radio / Bibliothek - Unterscheidung Radio Stream oder lokale Datei
        rawTitle : Title Information ohne Veränderungen durch das Modul

    MQTT

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

    MQTT_BRIDGE

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

    MQTT_DEVICE

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

    msg

      msg [<type>] [<@device>|<e-mail address>] [<priority>] [|<title>|] <message>

      Bisher keine Dokumentation hier, sorry.
      FHEM Forum

    MSGFile

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

    MSGMail

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

    MYSENSORS

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

    MYSENSORS_DEVICE

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

    MaxScanner

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

    MilightBridge

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

    MilightDevice

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

    Modbus

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

    ModbusAttr

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

    ModbusSET

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

    ModbusTrovis5576

      ModbusTrovis5576 verwendet das Modul Modbus für die Kommunikation mit der Samson Trovis 5576 Heizungssteuerung. Hier wurden die wichtigsten (der über 2000 verfügbaren) Werte aus den Holding-Registern und Coils-Statuswerten definiert und werden im angegebenen Intervall abgefragt und aktualisiert.

      Vorraussetzungen
        Dieses Modul benötigt das Basismodul Modbus für die Kommunikation, welches wiederum das Perl-Modul Device::SerialPort oder Win32::SerialPort benötigt.

      Physikalische Verbindung zur Heizungssteuerung
        Im Handbuch auf Seite 124 steht die Pinbelegung der RS232-Schnittstelle. Diese befindet sich nicht vorne am Reglermodul, sondern, von vorne gesehen, an der linken Seite des Reglers. Diese Schnittstelle ist mit einem Schutzdeckel verschlossen, den man einfach abziehen kann.
        Man benötigt nur die üblichen Pins für TD und RD, sowie Ground.

      Besonderheiten der Readings und des Reglers
        Man kann mit diesem Modul z.B. die Betriebsart der jeweiligen Regelkreise umschalten. Da der Drehschalter am Regler selbst natürlich immer noch auf der alten Stellung steht, wird diese "Umgehung" durch die Anzeige "GLT" (steht für "Gebäudeleittechnik", also für die zentrale Steuerungsübernahme) im Display deutlich gemacht. Gleichzeitig dazu wird das entsprechende Ebenen-Bit ("_EBN") auf "GLT" gesetzt.
        Um jetzt wieder auf die hardwaremäßig gesetzte Einstellung zurückzuschalten, muss das entsprechende Ebenen-Bit auf "Autark" gesetzt werden. Das dazugehörende Reading wird im Anschluß auf den nun im Regler gültigen Wert gesetzt.

        Wenn man eine Betriebsart auf "Standby" umschaltet, kann es sein, dass die Heizungsanlage diese auf "Mond" (zurück-)umstellt. Das wird dann mit dem Bit für Frostschutzbetrieb angezeigt, und erfolgt, wenn die gemessene Aussentemperatur unter 3°C liegt.

        Hinweis:
        Es ist sehr empfehlenswert das Attribut event-on-change-reading auf .* zu setzen. Sonst werden sehr viele unnötige Events erzeugt.

      Define
        define <name> ModbusTrovis5576 <ID> <Interval>

        Das Modul verbindet sich zur Samson Trovis 5576 Heizungssteuerung mit der angegebenen Modbus Id <ID> über ein bereits fertig definiertes Modbus-Device und fragt die gewünschten Werte im Abstand von <Interval> Sekunden ab.

        Beispiel:
        define heizung ModbusTrovis5576 255 60

      Set-Kommandos
        Die folgenden Werte können gesetzt werden:
        • Regelkreis 1 (Normalerweise Wandheizkörper):
          • RK1_Betriebsart: Die Betriebsart des Regelkreis 1. Kann Standby, Mond oder Sonne sein, und entspricht der Einstellung am Regler selbst (siehe auch Reading RK1_Schalter).
          • RK1_Betriebsart_EBN: Das Ebenen-Bit zur Betriebsart. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
          • RK1_Stellsignal: Der Öffnungsgrad in Prozent des Stellglieds zur Wärmeübertragung.
          • RK1_Stellsignal_EBN: Das Ebenen-Bit zum Stellsignal. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
          • RK1_Umwaelzpumpe: Der Zustand der Umwälzpumpe, Kann An oder Aus sein.
          • RK1_Umwaelzpumpe_EBN: Das Ebenen-Bit zur Umwälzpumpe. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
        • Regelkreis 2 (Normalerweise Fußbodenheizung):
          • RK2_Betriebsart: Die Betriebsart des Regelkreis 2. Kann Standby, Mond oder Sonne sein, und entspricht der Einstellung am Regler selbst (siehe auch Reading RK2_Schalter).
          • RK2_Betriebsart_EBN: Das Ebenen-Bit zur Betriebsart. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
          • RK2_Stellsignal: Der Öffnungsgrad in Prozent des Stellglieds zur Wärmeübertragung.
          • RK2_Stellsignal_EBN: Das Ebenen-Bit zum Stellsignal. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
          • RK2_Umwaelzpumpe: Der Zustand der Umwälzpumpe, Kann An oder Aus sein.
          • RK2_Umwaelzpumpe_EBN: Das Ebenen-Bit zur Umwälzpumpe. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
        • Trinkwasserspeicher:
          • Wasser_Betriebsart: Die Betriebsart des Trinkwasserkreises. Kann Standby, Mond oder Sonne sein, und entspricht der Einstellung am Regler selbst (siehe auch Reading Wasser_Schalter).
          • Wasser_Betriebsart_EBN: Das Ebenen-Bit zur Betriebsart. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
          • Wasser_Speicherladepumpe: Der Zustand der Speicherladepumpe. Kann An oder Aus sein.
          • Wasser_Speicherladepumpe_EBN: Das Ebenen-Bit zur Speicherladepumpe. Kann GLT oder Autark sein, und gibt an, ob die Pumpe Autark läuft, oder übersteuert wurde.
          • Wasser_ThermischeDesinfektion: Gibt an, ob gerade eine thermische Desinfektion läuft (=An) oder nicht (=Aus).
          • Wasser_Temp_Soll: Die Solltemperatur des Trinkwasserspeichers.
          • Wasser_Temp_Minimum: Die Minimaltemperatur des Trinkwasserspeichers.
          • Wasser_Temp_Desinfektion: Die Solltemperatur der thermischen Desinfektion.

        Hier der Vollständigkeit halber die Bedeutung der restlichen Readings (die nur gelesen werden können):
        • Grundsätzliches:
          • Modellnummer: Gibt die gemeldete Modellnummer an. Sollte "5576" sein.
          • Aussen_Temp: Gibt die gemessene Aussentemperatur in °C an.
        • Regelkreis 1 (Normalerweise Wandheizkörper):
          • RK1_Schalter: Gibt die Schalterstellung am Regler an. Kann PA, Auto, Standby, Hand, Sonne oder Mond sein.
          • RK1_Frostschutzbetrieb: Gibt an, ob der Heizungsregelkreis 1 im Frostschutzbetrieb läuft.
          • RK1_Vorlauf_Temp: Gibt die Heizungsvorlauftemperatur in °C an.
          • RK1_Ruecklauf_Temp: Gibt die Heizungsrücklauftemperatur in °C an.
        • Regelkreis 2 (Normalerweise Fußbodenheizung):
          • RK2_Schalter: Gibt die Schalterstellung am Regler an. Kann PA, Auto, Standby, Hand, Sonne oder Mond sein.
          • RK2_Frostschutzbetrieb: Gibt an, ob der Heizungsregelkreis 2 im Frostschutzbetrieb läuft.
          • RK2_Vorlauf_Temp: Gibt die Heizungsvorlauftemperatur in °C an.
          • RK2_Ruecklauf_Temp: Gibt die Heizungsrücklauftemperatur in °C an.
        • Trinkwasserspeicher:
          • Wasser_Schalter: Gibt die Schalterstellung am Regler an. Kann PA, Auto, Standby, Hand, Sonne oder Mond sein.
          • Wasser_Frostschutzbetrieb: Gibt an, ob der Trinkwasserregelkreis im Frostschutzbetrieb läuft.
          • Wasser_Temp: Gibt die Trinkwasserspeichertemperatur in °C an.

      Get-Kommandos
        Alle Readings sind auch als get-Kommando verfügbar. Intern führt ein get einen Request an die Heizungssteuerung aus, und aktualisiert den entsprechenden Readings-Wert (und gibt ihn als Ergebnis des Aufrufs zurück). Damit kann man eine zusätzliche Aktualisierung des Wertes erzwingen.

      Attribute
        Nur zentral definierte Attribute werden untstützt. Im speziellen:
        • readingFnAttributes

    N4HBUS

    Dieses Modul verbindet fhem über IP mit dem net4home Bus. Zusätzlich müssen Objekte über den Typ N4MODULE definiert werden, um Daten an den net4home-Bus zu senden oder zu lesen.

    Weitere technische Informationen gibt es auf der Homepage unter net4home.de

    Define
      define <name> N4HBUS <device>

      <device> ist eine Kombination aus IP Adresse des net4home Busconnectors und dem Port (default:3478).

      Beispiel:
        define net4home N4HBUS 192.168.1.69:3478

      Das Device kann sich auch mit dem Busconnector auf dem selben System verbinden. Der Default-Port für die Kommunikation ist 3478. Sollte es nötig sein den Port zu verändern, so muss dies ebenfalls in der Konfiguration des Services durchgeführt werden.

    Readings
    • state - aktueller Status der Verbindung zum net4home Busconnector

    Attributes
    • MI - die eindeutige MI in der net4home Umgebung (default:65281)
    • OBJADR - die eindeutige OBJADR in der net4home Umgebung (default:32700)

    N4HMODULE

    fhem-Modul zur Kommunikation mit dem net4home Bus über IP


      Define
        define <name> N4HMODULE <device> <type> <objectaddress>

        Erstellt ein net4home Modul-Device welches mit dem N4HBUS Device kommuniziert. Beispiel:
          define MyN4HMODULEice N4HMODULE 24 26004
        Derzeit werden folgende Typen unterstützt:
        Messwerte
        • 24 - Messwert,Temperatur
        • 25 - Messwert,Helligkeit
        • 26 - Messwert,Feuchte
        • 240 - Messwert,Wind
        • 242 - Messwert,Luftdruck
        • 245 - Messwert,Regenmenge

      Readings
      • Die Readings werden Abhängig vom Modultyp angegeben.

      Attributes
      • Interval
        Das Interval bestimmt bei Messwerten die Zeit zwischen dem Senden der Daten auf den Bus. Ist kein Attribut definiert, so wird der Standardwert genutzt.

    NUKIBridge

      NUKIBridge - Steuert das Nuki Smartlock über die Nuki Bridge
      Das Nuki Bridge Modul verbindet FHEM mit der Nuki Bridge und liest dann alle auf der Bridge verfügbaren Smartlocks ein. Desweiteren werden automatisch die erkannten Smartlocks als eigenständige Devices an gelegt.

      Define

        define <name> NUKIBridge <HOST> <API-TOKEN>

        Beispiel:

          define NBridge1 NUKIBridge 192.168.0.23 F34HK6

        Diese Anweisung erstellt ein NUKIBridge Device mit Namen NBridge1 und der IP 192.168.0.23 sowie dem Token F34HK6.
        Nach dem anlegen des Bridge Devices werden alle zur verfügung stehende Smartlock automatisch in FHEM an gelegt.


      Readings
      • 0_nukiId - ID des ersten gefundenen Nuki Smartlocks
      • 0_name - Name des ersten gefunden Nuki Smartlocks
      • smartlockCount - Anzahl aller gefundenen Smartlock
      • bridgeAPI - API Version der Bridge
      • bridgeType - Hardware oder Software/App Bridge
      • currentTime - aktuelle Zeit auf der Bridge zum zeitpunkt des Info holens
      • firmwareVersion - aktuell auf der Bridge verwendete Firmwareversion
      • hardwareId - ID der Hardware Bridge
      • lastError - gibt die letzte HTTP Errormeldung wieder
      • serverConnected - true/false gibt an ob die Hardwarebridge Verbindung zur Nuki-Cloude hat.
      • serverId - gibt die ID des Cloudeservers wieder
      • uptime - Uptime der Bridge in Sekunden
      • wifiFirmwareVersion- Firmwareversion des Wifi Modules der Bridge

      • Die vorangestellte Zahl ist forlaufend und gibt beginnend bei 0 die Eigenschaften Eines Smartlocks wieder.


      Set
      • autocreate - Veranlasst ein erneutes Einlesen aller Smartlocks von der Bridge und falls noch nicht in FHEM vorhanden das autimatische anlegen.
      • callbackRemove - Löschen einer Callback Instanz auf der Bridge. Die Instanz ID kann mittels get callbackList ermittelt werden
      • clearLog - löscht das Logfile auf der Bridge
      • fwUpdate - schaut nach einer neueren Firmware und installiert diese sofern vorhanden
      • info - holt aktuellen Informationen über die Bridge
      • reboot - veranlässt ein reboot der Bridge



      Get
      • callbackList - Gibt die Liste der eingetragenen Callback URL's wieder. Die Bridge nimmt maximal 3 auf.
      • logFile - Zeigt das Logfile der Bridge an



      Attribute
      • disable - deaktiviert die Nuki Bridge

    NUKIDevice

      NUKIDevice - Steuert das Nuki Smartlock
      Das Nuki Modul verbindet FHEM über die Nuki Bridge mit einem Nuki Smartlock. Es ist dann möglich das Schloss zu ver- und entriegeln.
      In der Regel werden die Nuki Devices automatisch durch das Bridgemodul angelegt.

      Define

        define <name> NUKIDevice <Nuki-Id> <IODev-Device>

        Beispiel:

          define Haustür NUKIDevice 1 NBridge1

        Diese Anweisung erstellt ein NUKIDevice mit Namen Haustür, der NukiId 1 sowie dem IODev Device NBridge1.
        Nach dem anlegen des Devices wird automatisch der aktuelle Zustand des Smartlocks aus der Bridge gelesen.


      Readings
      • state - Status des Smartlock bzw. Fehlermeldung von Fehler vorhanden.
      • lockState - aktueller Schließstatus uncalibrated, locked, unlocked, unlocked (lock ‘n’ go), unlatched, locking, unlocking, unlatching, motor blocked, undefined.
      • name - Name des Smart Locks
      • paired - pairing Status des Smart Locks
      • rssi - rssi Wert des Smart Locks
      • succes - true, false Gibt des Status des letzten Schließbefehles wieder. Geklappt oder nicht geklappt.
      • batteryCritical - Ist die Batterie in einem kritischen Zustand? true, false
      • battery - Status der Batterie, ok/low


      Set
      • statusRequest - ruft den aktuellen Status des Smartlocks von der Bridge ab.
      • lock - verschließen
      • unlock - aufschließen
      • unlatch - entriegeln/Falle öffnen.
      • unpair - entfernt das pairing mit dem Smart Lock
      • locknGo - verschließen wenn gegangen
      • locknGoWithUnlatch - verschließen nach dem die Falle geöffnet wurde.



      Attribute
      • disable - deaktiviert das Nuki Device
      • webhookFWinstance - zu verwendene Webinstanz für den Callbackaufruf
      • webhookHttpHostname - IP oder FQDN vom FHEM Server für den Callbackaufruf

    NUT

      Die Network UPS Tools (www.networkupstools.org) bieten Unterstützung für Unterbrechungsfreie Stromversorgungen (USV) und ähnliches. Dieses Modul ermöglicht den Zugriff auf einen NUT-Server, womit man Daten auslesen kann (z.B. den Status, Restlaufzeit, Eingangsspannung, manchmal auch Temperatur u.ä.) und zukünftig die USV auch steuern kann (Test aktivieren, USV herunterfahren u.ä.).
      Welche Readings zur Verfügung stehen, bestimmt das Attribut asReadings. Welche Werte eine USV zur Verfügung stellt, kann man mit list dieUSV unter Helper: ablesen. Nur ups.status wird immer ausgelesen und ergibt den Status des Geräts.


      Define
        define <name> NUT <ups> [<host>[:<port>]]

        <ups> ist der im NUT-Server definierte Name der USV.
        [<host>[:<port>]] ist Host und Port des NUT-Servers. Default ist localhost:3493.

        Beispiel:
        define dieUSV NUT myups einserver

      Set
        N/A

      Get
        N/A

      Attributes
      • disable

      • readingFnAttributes

      • pollState
        Polling-Intervall in Sekunden für den Status der USV. Default: 10

      • pollVal
        Polling-Intervall für die anderen Werte. Dieser Wert wird auf ein Vielfaches von pollState gerundet. Default: 60

      • asReadings
        Mit Kommata getrennte Liste der USV-Werte, die als Readings verwendet werden sollen (ups.status wird auf jeden Fall gelesen).
        Beispiel:
        attr dieUSV asReadings battery.charge,battery.runtime,input.voltage,ups.load,ups.power,ups.realpower

    NetIO230B

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

    Netzer

      The Netzer realisiert ein Ethernetinterface auf PIC-Basis. Es agiert als Gateway zwischen TCP/IP und verschiedenen seriellen Busses wie I2C, SPI oder UART. Es können bis zu 13 GPIO Pins angesprochen (gelesen oder geschrieben) werden. This Modul ermöglicht den Zugriff auf diese GPIO Pin's auf einem Netzer mit IO_base in Version 1.5. Es gibt zwei als ADC nutzbare Pin's channel, 2 als PMW Ausgänge, drei als Zähler sowie drei die einen Interrupt auslösen können. Die GPIO Pin's sind standardmäßig als Eingänge konfiguriert. Bevor ein Pin anderweitig genutzt werden kann, muss er über die eingebaute Website entsprechend eingestellt werden. Ist einer der Eingänge als Inerrupteingang eingestellt, werden bei jedem Interrupereignis die Weter sämtlicher Ports aktualisiert.

      Define
        define <name> Netzer <host:port>

      Set
        set <name> <port[_counter]> <value>
        Dabei ist <value> ein dem Port entsprechender Buchstabe zwischen a und m. Besitzt der Port das Attribut cnt so kann ein weiterer Wert <port_counter> gesetzt werden.
        Ausschließlich Port's die über Attribut Port_[a-m] auf PWM oder out gesetzt sind können benutzt werden.
        Bei Port Attribut:
        • PWM <value> kann ein Wert zwischen 0 und 1023 sein
        • out <value> kann ein Wert zwischen 0 und 1 sein
        • cnt <port_counter> <value> kann ein Wert zwischen 0 und 32767 sein

      Get
        get <name> [<port[_counter]>]
        Ohne <port> werde alle Werte aktualisiert.
        Wenn <port> ein Buchstabe zwischen a und m
        ist, wird der Portwert aktualisiert und bei Port Attribut cnt kann ein weiterer Zählerwert <port_counter> gelesen werden.

      Attributes
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: 5, gültige Werte: Dezimalzahl

      • Port_<port>
          Konfiguration des jeweiligen GPIO.
          <port> ist ein Buchstabe zwischen a und m.
        • in: Port ist Eingang. Kann auch weggelassen werden, da Standard. Set ist für diesen Port nicht verfügbar.
          Nutzbar für alle Port's
        • out: Port ist Ausgang. Set kann <value> zwischen 0 und 1 haben.
          Nutzbar für alle Port's
        • cnt: Port ist Eingang. Set ist für diesen Port nicht verfügbar.
          Ein weiteres Reading: Port_<port>_counter ist verfügbar. Dieses kann auch mit get gelesen und mit set verändert werden.
          Port_<port>_counter <value> = 0-32767 oder overflow wenn es ausserhalb dieses Bereichs liegt.
          Nutzbar für Port's a,b,c
        • ADC: Port ist Analogeingang. get <value> ist 0-1023 entsprechend der Spannung am Port. Set ist für diesen Port nicht verfügbar.
          Nutzbar für Port's e,f
        • PWM: Port ist PWM-Ausgang. set und get <value> ist 0-1023 entsprechend des Dutycycle am Port.
          Nutzbar für Port's d,j


    NetzerI2C

      Ermöglicht den Zugriff auf die I2C Schnittstelle des Netzer.
      über logische Module. Register von I2C IC's können auch direkt gelesen und geschrieben werden.

      Vorbereitung:
      Bevor dieses Modul verwendet werden kann muss der Serielle Server des Netzers und auf I2C gestellt werden.

      Define
        define <name> NetzerI2C <Device-Address:Port>
        <Device-Address:Port> ist die Adresse/IP-Adresse und Serial Server TCP-Port des Netzer

      Set
      • Schreibe ein Byte (oder auch mehrere nacheinander) direkt auf ein I2C device (manche I2C Module sind so einfach, das es nicht einmal mehrere Register gibt):
        set <name> writeByte <I2C Address> <value>

      • Schreibe ein Byte (oder auch mehrere nacheinander) direkt auf ein Register des adressierten I2C device:
        set <name> writeByteReg <I2C Address> <Register Address> <value>

      • Schreibe n-bytes auf einen Registerbereich, beginnend mit dem angegebenen Register:
        set <name> writeBlock <I2C Address> <Register Address> <value>

      • Beispiele:
          Schreibe 0xAA zu Modul mit I2C Addresse 0x60
          set test1 writeByte 60 AA
          Schreibe 0xAA zu Register 0x01 des Moduls mit der I2C Adresse 0x6E
          set test1 writeByteReg 6E 01 AA
          Schreibe 0xAA zu Register 0x01 des Moduls mit der I2C Adresse 0x6E, schreibe danach 0x55 zu Register 0x01
          set test1 writeByteReg 6E 01 AA 55
          Schreibe 0xA4 zu Register 0x03, 0x00 zu Register 0x04 und 0xDA zu Register 0x05 des Moduls mit der I2C Adresse 0x60 als Block
          set test1 writeBlock 60 03 A4 00 DA

      Get
        get <name> read <I2C Address> [<Register Address> [<number of registers>]]
        Auslesen der Registerinhalte des I2C Moduls

        Examples:
          Lese Byte vom Modul mit der I2C Adresse 0x60
          get test1 writeByte 60
          Lese den Inhalt des Registers 0x01 vom Modul mit der I2C Adresse 0x6E.
          get test1 read 6E 01 AA 55
          Lese den Inhalt des Registerbereichs 0x03 bis 0x06 vom Modul mit der I2C Adresse 0x60.
          get test1 read 60 03 4


      Attribute
      • ignore
      • do_not_notify
      • showtime

    Nextion

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

    OBIS

    Modul für Smartmeter, die ihre Daten im OBIS-Standard senden. Hierbei ist es egal, ob die Daten als reiner Text oder aber SML-kodiert kommen.
    Define define <name> OBIS device|none [MeterType]

    <device> gibt den seriellen Port an.

    Optional:MeterType kann sein:
    • VSM102 -> Voltcraft VSM102
    • E110 -> Landis&&;Gyr E110
    • E350USB -> Landis&&;Gyr E350 USB-Version
    • Standard -> Daten kommen als plainText
    • SML -> Smart Message Language

    Beispiel:
    define myPowerMeter OBIS /dev/ttyPlugwise@@9600,7,E,1 VSM102

    Attribute
    • offset_feed
      offset_energy

      Wenn das Smartmeter hinter einem Zähler des EVU's sitzt, kann hiermit der Zähler des Smartmeters an den des EVU's angepasst werden.

    • channels
      Hiermit können die einzelnen Kanal-Readings mittels RegExes umbenannt werden. Beispiel: attr myOBIS channels {"1.0.96.5.5.255"=>"Status","1.0.0.0.0.255"=>"Info","16.7"=>"Verbrauch"}>

    • directions
      Manche SmartMeter senden im Statusbyte die Stromrichtung. In diesem Fall gibt es ein extra Reading "dir_total_consumption" welches standardmäßig "in" and "out" beinhaltet Hiermit kann dieser Text geändert werden: attr myOBIS directions {">" => "pwr consuming", "<"=>"pwr feeding"}
    • interval
      Abrufinterval der Daten. (Bringt nur im Polling-Mode was)
    • algignTime
      Richtet den Zeitpunkt von nach einer bestimmten Uhrzeit aus.
    • pollingMode
      Hiermit wird von Direktbenachrichtigung auf Polling umgestellt. Bei Smartmetern, welche von selbst im Sekundentakt senden, kann das zu einer spürbaren Senkung der Prozessorleistung führen. unitReadings
      Hängt bei den Readings auch die Einheiten an, zB w, wH, A usw. valueBracket
      Legt fest, ob der Wert aus dem ersten oder zweiten Klammernpaar genommen wird. Standard ist "second"

    ONKYO_AVR

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

    ONKYO_AVR_ZONE

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

    OPENWEATHER

      Das Modul extrahiert Wetterdaten über die "openweather"-Schnittstelle (API) von www.wetter.com.
      Zuvor ist eine Registrierung auf der Webseite notwendig.
      Das Modul nutzt die Perlmodule HTTP::Request, LWP::UserAgent, HTML::Parse und Digest::MD5.
      Für detailierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.

      Define

        define <name> OPENWEATHER <Projekt> <Ortscode> <apiSchlüssel> [Sprache]
        Beispiel:
        define wetter OPENWEATHER projectx DE0001020 3c551bc20819c19ee88d

        Um die unteren Parameter zu erhalten, ist die Registrierung eines neuen Projektes auf www.wetter.com notwendig.

      • <Projekt>
        Name des benutzerspezifischen 'openweather'-Projektes (erzeugt über ein Konto auf wetter.com).

      • <Ortscode>
        Code des Ortes, für den die Wettervorhersage benötigt wird. Er kann direkt aus der Adresszeile der jeweiligen Vorhersageseite genommen werden. Zum Beispiel DE0009042 aus:
        http://www.wetter.com/wetter_aktuell/aktuelles_wetter/deutschland/rostock/DE0009042.html

      • <apiSchlüssel>
        Geheimer Schlüssel, den man erhält, nachdem man ein neues 'Openweather'-Projekt auf der Website registriert hat.

      • [Sprache]
        Optional. Standardsprache für die Wettersituation ist Deutsch. Mit en kann man zu Englisch und mit es zu Spanisch wechseln.

      • Über die Funktion OPENWEATHER_Html wird ein HTML-Code für ein vertikal arrangierte Wettervorhersage erzeugt.
        Beispiel:
        define MyForecast weblink htmlCode { OPENWEATHER_Html("MyWeather") }

      Set

      • set <name> update
        Startet sofort ein neues Auslesen der Wetterdaten.

      Get

      • get <name> apiResponse
        Zeigt die Rückgabewerte der Website an.

      Attribute

      • disable <0 | 1>
        Automatische Aktuallisierung ist angehalten, wenn der Wert auf 1 gesetzt wird.

      • INTERVAL <Abfrageinterval>
        Abfrageinterval in Sekunden (Standard und kleinster Wert ist 3600 = 1 Stunde). 0 stoppt die automatische Aktualisierung

      • readingFnAttributes

      Vorhersagewerte
        Wichtig! Die Vorhersagewerte (in Klammern) müssen zuerst in den Vorhersageeinstellungen des Projektes auf wetter.com ausgewählt werden.
         
      • fc0|1|2_... - Vorhersagewerte für heute|morgen|übermorgen
      • fc0_...06|11|17|23 - Vorhersagewerte für heute um 06|11|17|23 Uhr
      • fc0_chOfRain - heutige Niederschlagswahrscheinlichkeit in % (pc)
      • fc0_tempMin|Max - Mindest|Maximaltemperatur heute in °C (tn, tx)
      • fc0_tempMin06 - Mindesttemperatur heute um 06:00 Uhr in °C
      • fc0_valHours06 - Gültigkeitszeitraum der Prognose von heute ab 6:00 Uhr in Stunden (p)
      • fc0_weather - Wetterzustand heute (w_txt)
      • fc0_weatherCode - Code des Wetterzustand heute (w)
      • fc0_wday - Abkürzung des Wochentags von heute (d)
      • fc0_wind - Windgeschwindigkeit heute in km/h (ws)
      • fc0_windDir - Windrichtung heute in ° (Grad) (wd)
      • fc0_windDirTxt - Windrichtung heute in Textform (wd_txt)
      • etc.

    OREGON

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

    OWAD

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

    OWCOUNT

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

    OWDevice


      Definition
        define <name> OWDevice <address> [<interval>]

        Definiert ein 1-Wire- Gerät. 1-Wire- Geräte werden anhand ihrer Adresse <address> definiert. Diese wird durch den zuvor eingerichteten OWServer bereitgestellt.

        Wird zusätzlich <interval> angegeben, ruft OWServer alle <interval> Sekunden einen Datensatz des Gerätes ab.

        Jedes OWDevice ist ein eigenständiges Gerät. Seine Eigenschaften werden erstmals zum Zeitpunkt der Definition abgefragt. Die durch "get" oder "set" erzeugten, sowie durch den zyklischen Abruf gelieferten readings, können mit dem Kommando list <name> angezeigt werden.

        Folgende 1-Wire- und iButton- Komponenten werden aktuell unterstützt:
        • DS2401 - Im Chip integrierte Seriennummer
        • DS1990A - iButton mit fester Seriennummer
        • DS2405 - Adressierbarer Schalter
        • DS18S20 - Hochpräzisions-Digital-Thermosensor
        • DS1920 - iButton-Thermosensor
        • DS2406, DS2407 - Dualer adressierbarer Schalter mit 1 kbit Speicher
        • DS2436 - Batterie-ID/Monitor- Schaltkreis
        • DS2423 - Dual-Zählerbaustein mit Speicherfunktion
        • DS2450 - Vierfach-A/D Umsetzer
        • DS1822 - Econo-Thermosensor
        • DS2433 - 4kbit 1-Wire RAM
        • DS2415 - Zeitgeber- Schaltkreis
        • DS1904 - iButton-Echtzeituhr
        • DS2438 - Smart-Batterie-Monitor
        • DS2417 - Zeitgeber-Schaltkreis mit Interrupt
        • DS18B20 - Thermosensor mit programmierbarer Auflösung
        • DS2408 - 8-kanaliger adressierbarer Schalter
        • DS2413 - 2-kanaliger adressierbarer Schalter
        • DS1825 - Thermosensor mit programmierbarer Auflösung und ID
        • EDS0066 - Vielfachsensor für Temperatur und Luftdruck
        • LCD - LCD-Ansteuerung von Louis Swart

        Das Hinzufügen weiterer Geräte ist im Modulcode (subroutine OWDevice_GetDetails) sehr einfach möglich.

        Achtung: Dieses Modul ist weder verwandt noch verwendbar mit den 1-Wire Modulen, deren Namen nur aus Großbuchstaben bestehen!

        Bitte beachten: Um einer Verwechselung entgegenzuwirken, stößt das reading "state" der Geräte keine Events an.

        Beispiele zur Einrichtung:
          define myOWServer OWServer localhost:4304

          get myOWServer devices
          10.487653020800 DS18S20

          define myT1 10.487653020800

          list myT1 10.487653020800
          Internals:
          ...
          Readings:
          2012-12-22 20:30:07 temperature 23.1875
          Fhem:
          ...
          getters:
          address
          family
          id
          power
          type
          temperature
          templow
          temphigh
          polls:
          temperature
          setters:
          alias
          templow
          temphigh
          ...

      Set-Befehle
      • set <name> interval <value>
        value überschreibt das Abrufintervall der Datensätze. Der Wert ist in Sekunden anzugeben.

      • set <name> <reading> <value>
        Setzt das <reading> auf <value> für das 1-Wire-Gerät <name>. Die verwendbaren Werte werden durch die jeweiligen 1-wire-Geräte bestimmt.

        Beispiel:
          set myT1 templow 5

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

        Beispiel:
          get myT1 temperature

      Attribute
      • IODev: Bestimmt die OWServer-Instanz, welche für das Senden und Abrufen der Daten eines OWDevice-Gerätes genutzt werden soll. Hinweis: Während des Starts ordnet FHEM die neuen OWDevice-Geräte der jeweils zuletzt definierten OWServer-Instanz zu. Deshalb verfährt man idealerweise so, dass man zuerst eine OWServer-Instanz und anschließend die zugehörigen OWDevice-Geräte definiert. Danach definiert man die nächste OWServer-Instanz, gefolgt von den zugehörigen OWDevice-Geräten, usw.
      • trimvalues: Entfernt voran- und nachgestellte Leerzeichen aus den readings. Standartwert ist 1 (ein).
      • cstrings: Interpretiert die readings als C-String, d.h. hört mit dem ersten 0-Byte zu lesen auf. Standardwert ist 0 (off).
      • polls: Eine per Komma getrennte Liste der abzurufenden readings. Mit diesem Attribut unterdrückt man alle standartmäßig abgerufenen readings und ersetzt sie durch die eigene Zusammenstellung.
      • interfaces: Ersetzt die durch dieses Gerät erzeugten Interfaces.
      • model: Angabe des Gerätetyps, z.B.: DS18S20.
      • resolution: Angabe der Auflösung für die Temperaturmessung in bits, zur Verfügung stehen: 9, 10, 11 oder 12. Hinweis: Geringere Auflösungen bewirken schnellere Reaktionen des Busses. Dies kann z.B. bei umfangreichen 1-Wire- Installationen hilfreich sein, um eventuelle Stillstände von FHEM zu vermindern.
      • 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 ow*-Pakete in der Version 2.9 von Debian Jessie haben Probleme. Bitte entpacke für Debian Jessie entweder owfs_2.8p17-1_all.zip und installiere owserver, Abhängigkeiten und was Du sonst noch brauchst mit dpkg -i <package>.deb, oder benutze die neueste Version von OWNet.pm von Sourceforge.

        Eine typische funktionierende Konfigurationsdatei /etc/owfs.conf sieht so aus:

        # server uses device /dev/onewire
        server: device = /dev/onewire
        # clients other than server use server
        ! server: server = localhost:4304
        # port
        server: port = 4304
        # owhttpd
        http: port = 2121
        # owftpd
        ftp: port = 2120

        Die vorhandenen 1-Wire- Busteilnehmer werden als OWDevice -Geräte definiert. Wenn autocreate aktiviert ist, werden beim Start von FHEM alle Geräte automatisch erkannt und eingerichtet.

        Achtung: Dieses Modul ist weder verwandt noch verwendbar mit den 1-Wire Modulen, deren Namen nur aus Großbuchstaben bestehen!

        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

    OWVAR

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

    OWX

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

    OWX_ASYNC

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

    PCA301

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

    PHILIPS_AUDIO

      Define

        define <name> PHILIPS_AUDIO <device model> <ip-address> [<status_interval>]

        define <name> PHILIPS_AUDIO <device model> [<off_status_interval>] [<on_status_interval>]


        Mit Hilfe dieses Moduls lassen sich Philips Audio Netzwerk Player wie z.B. MCi, Streamium oder Fidelio via Ethernet steuern.
        Theoretisch sollten alle Geräte, die über einer implementierten HTTP Server am Port 8889 haben (http://[ip Nummer des Gerätes]:8889/index), bedient werden können.


        (Getestet mit: AW9000, NP3500, NP3700 und NP3900)

        Die aktuelle Implementierung ermöglicht u.a. den folgenden Funktionsumfang:

        • Power on/off
        • Internet Radio Preset Auswahl
        • Input Auswahl
        • Volume +/-
        • Mute on/off
        • ...

        Eine PHILIPS_AUDIO Definition initiiert einen internen Task, der von FHEM zyklisch abgearbeitet wird.
        Das Intervall (in Sekunden) kann für die Zustände <on_status_interval> und <off_status_interval> optional gesetzt werden.
        <off_status_interval> steht für das Intervall, wenn das Gerät ausgeschaltet/abwesend ist.
        <on_status_interval> steht für das Intervall, wenn das Gerät eingeschaltet/verfügbar ist.
        Wenn keine Parameter angegeben wurden, wird ein Default-Wert von 30 Sekunden für beide gesetzt.
        Wenn nur <off_status_interval> gesetzt wird, gilt dieser Wert für beide Zustände (eingeschaltet/ausgeschaltet).
        Der Task liest zyklisch grundlegende Parameter vom Player und triggert notify/filelog Befehle.
        Aufgrund der recht schwachen Rechenleistung der Player wurde das minimale Intervall auf 3 Sekunden beschränkt.

        Beispiel:


          Definition in der fhem.cfg Konfigurationsdatei:

          define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15
          attr PHAUDIO_player webCmd input:volume:mute:inetRadioPreset

          # 60 Sekunden Intervall
          define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15 60
          attr PHAUDIO_player webCmd input:volume:mute:inetRadioPreset

          # 60 Sekunden Intervall für "off" und 10 Sekunden für "on"
          define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15 60 10
          attr PHAUDIO_player webCmd input:volume:mute:inetRadioPreset


      Set
        set <name> <command> [<parameter>]

        Aktuell sind folgende Befehle implementiert:
        Bemerkung: Bitte bei den Befehlen und Parametern die Groß- und Kleinschreibung beachten.


        • aux  -   Schaltet auf den AUX Eingang um (MP3 Link oder ähnlich.).
        • getInetRadioFavorites   -   Liest die Favoriten. (Kann einige Sekunden dauern...).
        • getInetRadioPresets   -   Liest die Presets. (Kann einige Sekunden dauern...).
        • inetRadioFavorite [1..24]   -   Wählt den Internetradio-Lieblingssender (Das Umschalten kann einige Sekunden dauern...).
        • inetRadioPreset [1..24]   -   Wählt die Internetradio Voreinstellung (Das Umschalten kann einige Sekunden dauern...).
        • inetRadioFavoriteByName [name]   -   Wählt einen Internetradio Favoriten mit Hilfe seines Names. (getInetRadioFavorites muss zuvor ausgeführt werden, damit der Befehl verfügbar wird. (Kann einige Sekunden dauern...).
        • inetRadioPresetByName [name]   -   Wählt eine Internetradio Voreinstellung mit Hilfe ihres Names. (getInetRadioPresets muss zuvor ausgeführt werden, damit der Befehl verfügbar wird. (Kann einige Sekunden dauern...).
        • mute  -   Stummschaltung des Players.
        • unmute  -   Deaktivierung der Stummschaltung.
        • next   -   Wählt den nächten Titel, Voreinstellung etc.
        • play_pause   -   Schaltet um zwischen PLAY um PAUSE.
        • previous   -   Wählt den vorherigen Titel, Voreinstellung etc.
        • repeat [single|all|off]   -   Bestimmt den Wiederholungsmodus.
        • shuffle [on|off]   -   Bestimmt den Zufallswiedergabemodus.
        • standbyButton   -   Schaltet um zwischen Standby und Power on.
        • statusRequest   -   Readings Update.
        • stop   -   Stoppt den Player.
        • volume   -   Setzt die relative Lautstärke 0...100%.
        • volumeStraight   -   Setzt die absolute Lautstärke 0...64.


        Ein typisches Beispiel ist das Einschalten des Gerätes und das Umschalten auf den Lieblingsradiosender:

        Beispieldefinition in der fhem.cfg Konfigurationsdatei:


          define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15 30 5
          attr PHAUDIO_player webCmd input:volume:mute:inetRadioPreset


        Folgender Code kann anschließend in die Datei 99_MyUtils.pm eingebunden werden:

          sub startMyFavouriteRadioStation()
          {
            fhem "set PHAUDIO_player inetRadioPreset 1";
            sleep 1;
            fhem "set PHAUDIO_player volume 30";
          }


        Bemerkung: Aufgrund der relativ langsamen Befehlsverarbeitung im Player im Vergleich zur asynchronen Ethernet-Kommunikation, kann es vorkommen, dass veraltete Statusinformationen zurückgesendet werden.
        Aus diesem Grund wird empfohlen, während der Automatisierung zwischen den 'set' und 'get' Befehlen ein Delay einzubauen.


        Die Funktion kann jetzt in der FHEM Befehlszeile eingegeben oder in die Notify-Definitionen eingebunden werden.

          {startMyFavouriteRadioStation()}

      Get get <name> <reading>

      Aktuell liefert der Befehl 'get' ausschließlich Reading-Werte (s. Abschnitt "Readings").

      Attribute

        • do_not_notify
        • readingFnAttributes

        • request-timeout

        • Optionales Attribut, um das HTTP response timeout zu beeinflußen.
          Mögliche Werte: 1...5 Sekunden. Default Wert ist 4 Sekunden.

        • max-device-presets

        • Optionales Attribut zur Bestimmung der max. Anzahl von verfügbaren Preset-Speicherplätzen des Players. Default-Wert 24.

        • max-device-favorites

        • Optionales Attribut zur Bestimmung der max. Anzahl von verfügbaren Favorite-Speicherplätzen des Players. Default-Wert 24.

        • disable

        • Optionales Attribut zum Deaktivieren des internen zyklischen Timers zum Aktualisieren des NP-Status. Manuelles Update ist nach wie vor möglich.
          Mögliche Werte: 0 → Zyklisches Update aktiv., 1 → Zyklisches Update inaktiv.


      Readings

        • albumArt - Link zum aktuellen Album art oder Radiostation.
        • elapseTime - Aktuelle Zeit des abgespielten Audiostückes.
        • inetRadioFavorite[Wert] - Name des/der gespeicherten Favoriten.
        • inetRadioPreset[Wert] - Name des/der gespeicherten Presets.
        • mute - Abfrage des Stummschaltungstatus (on|off).
        • playing - Abfrage des aktuelle Playierstatus (yes|no).
        • power - Abfrage des aktuellen Gerätezustands (on|absent).
        • presence - Abfrage der Geräteanwesenheit (present|absent).
        • state - Abfrage des aktuellen 'state'-Status (on|absent).
        • subtitle - Untertiltel des abgespielten Audiostückes.
        • title - Titel des abgespielten Audiostückes.
        • totalInetRadioFavorites - Anzahl der gespeicherten Favoriten.
        • totalInetRadioPresets - Anzahl der gespeicherten Presets.
        • totalTime Gesamtspieldauer des Audiostückes.
        • volume - Aktuelle relative Lautstärke (0..100).
        • volumeStraight - Aktuelle absolute Lautstärke (0..64).

      Bemerkung des Entwicklers

        Trivial: Um das Gerät fernbedienen zu können, muss es an das Ethernet-Netzwerk angeschlossen und erreichbar sein.
        Es gibt keine Möglichkeit, den Zustand Power-on/Standby des Gerätes abzufragen. Diese Limitierung liegt auf Seiten des Gerätes.

    PHTV

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

    PID20

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

    PIFACE

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

    PIONEERAVR

      Dieses Modul erlaubt es einen Pioneer AV Receiver via Fhem zu steuern (nur die MAIN-Zone, etwaige andere Zonen können mit dem Modul PIONEERAVRZONE gesteuert werden) wenn eine Datenverbindung via Ethernet oder RS232 hergestellt werden kann. Es erlaubt Fhem
      • Den Receiver ein/auszuschalten
      • die Lautstärke zu ändern
      • die Eingangsquelle auszuwählen
      • und weitere Parameter zu kontrollieren


      Dieses Modul basiert auf der Pioneer documentation und ist mit einem Pioneer AV Receiver VSX-923 von Pioneer getestet.

      Achtung: Dieses Modul benötigt die Perl-Module Device::SerialPort oder Win32::SerialPort wenn die Datenverbindung via USB bzw. rs232 Port erfolgt.

      Dieses Modul versucht
      • die Datenverbindung zwischen Fhem und Pioneer AV Receiver offen zu halten. Wenn die Verbindung abbricht, versucht das Modul einmal die Verbindung wieder herzustellen
      • Daten vom/zum Pioneer AV Receiver dem Modul PIONEERAVRZONE (für die Kontrolle weiterer Zonen des Pioneer AV Receiver) zur Verfügung zu stellen.
      Solange die Datenverbindung zwischen Fhem und dem Pioneer AV Receiver offen ist, kann kein anderes Gerät (z.B. ein Smartphone) auf dem gleichen Port eine Verbindung zum Pioneer AV Receiver herstellen. Einige Pioneer AV Receiver bieten mehr als einen Port für die Datenverbindung an. Pioneer empfiehlt Port 23 sowie 49152-65535, "Invalid number:00000,08102".

      Define
        define <name> PIONEERAVR telnet <IPAddress:Port>

        or

        define <name> PIONEERAVR serial <SerialDevice>[<@BaudRate>]

        Definiert ein Fhem device für einen Pioneer AV Receiver (Kommunikationsschnittstelle und Steuerung der Main - Zone). Die Schlüsselwörter telnet bzw. serial sind fix. Der Standard Port für die Ethernet Verbindung bei Pioneer AV Receiver ist 23 (laut der oben angeführten Pioneer Dokumentation) - oder 8102 (laut Fhem-Forumsberichten).
        Note: PIONEERAVRZONE-Devices zur Steuerung der Zone2, Zone3 und/oder HD-Zone werden per autocreate beim Eintreffen der ersten Nachricht für eine der Zonen erzeugt.

        Beispiele:
          define VSX923 PIONEERAVR telnet 192.168.0.91:23
          define VSX923 PIONEERAVR serial /dev/ttyS0
          define VSX923 PIONEERAVR serial /dev/ttyUSB0@9600

      Set
        set <name> <was> [<value>]

        "was" ist eines von
      • bass <-6 ... 6> - Bass von -6dB bis + 6dB (funktioniert nur wenn tone = on und der ListeningMode es erlaubt)
      • channel <1 ... 9> - Setzt den Tuner Preset ("gespeicherten Sender"). Nur verfügbar, wenn Input = 2 (Tuner), wie in http://www.fhemwiki.de/wiki/DevelopmentGuidelinesAV beschrieben
      • channelDown - Setzt den nächst niedrigeren Tuner Preset ("gespeicherten Sender"). Wenn vorher channel = 2, so wird nachher channel = 1. Nur verfügbar, wenn Input = 2 (Tuner).
      • channelStraight -
      • Setzt den Tuner Preset ("gespeicherten Sender") mit Werten, wie sie im Display des Pioneer AV Receiver angezeigt werden (z.B. A1). Nur verfügbar, wenn Input = 2 (Tuner).
      • channelUp - Setzt den nächst höheren Tuner Preset ("gespeicherten Sender"). Nur verfügbar, wenn Input = 2 (Tuner).
      • down - "Pfeiltaste nach unten". Für die gleichen Eingangsquellen wie "play"
      • enter - "Eingabe" - Entspricht der "Enter-Taste" der Fernbedienung. Für die gleichen Eingangsquellen wie "play"
      • eq - Schalten den Equalizer ein oder aus.
      • fwd - Schnellvorlauf. Für die gleichen Eingangsquellen wie "play"
      • hdmiOut <1+2|1|2|off> - Schaltet die HDMI-Ausgänge 1 und/oder 2 des Pioneer AV Receivers ein bzw. aus.
      • input - Schaltet die Eingangsquelle (z.B. CD, HDMI 1,...) auf die Ausgänge der Main-Zone. Die Liste der verfügbaren (also der nicht deaktivierten) Eingangsquellen wird beim Start von Fhem und auch mit get statusRequest eingelesen. Wurden die Eingänge am Pioneer AV Receiver umbenannt, wird der neue Name des Eingangs angezeigt.
      • inputDown - vorherige Eingangsquelle der Main Zone auswählen
      • inputUp - nächste Eingangsquelle der Main Zone auswählen
      • left - "Pfeiltaste nach links". Für die gleichen Eingangsquellen wie "play"
      • listeningMode - Setzt einen ListeningMode, z.B. autoSourround, direct, action,...
      • mcaccMemory <1...6> - Setzt einen der bis zu 6 gespeicherten MCACC Einstellungen der Main Zone
      • menu - "Menu-Taste" der Fernbedienung. Für die gleichen Eingangsquellen wie "play"
      • mute - Stummschalten der Main Zone des Pioneer AV Receivers. "mute = on" bedeutet: stumm
      • networkStandby - Schaltet Network standby ein oder aus. Um einen Pioneer AV Receiver mit diesem Modul aus dem Standby einzuschalten, muss Network Standby = on sein. Mit set <name> networkStandby on sollte sich das machen lassen.
      • next - für die gleichen Eingangsquellen wie "play"
      • off - Ausschalten der Main Zone in den Standby Modus.
      • on - Einschalten der Main Zone aus dem Standby Modus. Das funktioniert nur, wenn am Pioneer AV Receiver "Network Standby" "on" eingestellt ist. Siehe dazu auch "networkStandby" weiter unten.
      • pause - Unterbricht die Wiedergabe für die gleichen Eingangsquellen wie "play"
      • play - Startet die Wiedergabe für folgende Eingangsquellen:
        • usbDac
        • ipodUsb
        • xmRadio
        • homeMediaGallery
        • sirius
        • adapterPort
        • internetRadio
        • pandora
        • mediaServer
        • favorites
        • mhl
      • prev - Wechselt zum vorherigen Titel. Für die gleichen Eingangsquellen wie "play".
      • raw - Sendet den Befehl unverändert an den Pioneer AV Receiver. Eine Liste der verfügbaren Pioneer Kommandos ist in dem Link zur Pioneer Dokumentation oben enthalten
      • remoteControl - wobei eines von folgenden sein kann:
        • cursorDown
        • cursorRight
        • cursorLeft
        • cursorEnter
        • cursorReturn
        • homeMenu
        • statusDisplay
        • audioParameter
        • hdmiOutputParameter
        • videoParameter
        • homeMenu
        • Simuliert die Tasten der Fernbedienung. Achtung: mit cursorXX können die Eingänge nicht beeinflusst werden -> set up ... kann zur Steuerung der Inputs verwendet werden.
      • reopen - Versucht die Datenverbindung zwischen Fhem und dem Pioneer AV Receiver wieder herzustellen
      • repeat - Wiederholung für folgende Eingangsquellen: AdapterPort, Ipod, Favorites, InternetRadio, MediaServer. Wechselt zyklisch zwischen
        • keine Wiederholung
        • Wiederholung des aktuellen Titels
        • Wiederholung aller Titel
      • return - "Zurück"... Entspricht der "Return-Taste" der Fernbedienung. Für die gleichen Eingangsquellen wie "play"
      • rev - "Rückwärtssuchlauf". Für die gleichen Eingangsquellen wie "play"
      • right - "Pfeiltaste nach rechts". Für die gleichen Eingangsquellen wie "play"
      • selectLine01 - selectLine08 - für die gleichen Eingangsquellen wie "play".Wird am Bildschirm ein Pioneer-Menu angezeigt, kann hiermit die gewünschte Zeile direkt angewählt werden
      • shuffle - Zufällige Wiedergabe für die gleichen Eingangsquellen wie "repeat". Wechselt zyklisch zwischen Zufallswiedergabe "ein" und "aus".
      • signalSelect - Setzt den zu verwendenden Eingang (bei Eingängen mit mehreren Anschlüssen)
      • speakers - Schaltet die Lautsprecherausgänge ein/aus.
      • standingWave - Schaltet Standing Wave der Main Zone aus/ein
      • statusRequest - Fragt Informationen vom Pioneer AV Receiver ab und aktualisiert die readings entsprechend
      • stop - Stoppt die Wiedergabe für die gleichen Eingangsquellen wie "play"
      • toggle - Ein/Ausschalten der Main Zone in/von Standby
      • tone - Schaltet die Klangsteuerung ein bzw. auf bypass
      • treble <-6 ... 6> - Höhen (treble) von -6dB bis + 6dB (funktioniert nur wenn tone = on und der ListeningMode es erlaubt)
      • up - "Pfeiltaste nach oben". Für die gleichen Eingangsquellen wie "play"
      • volume <0 ... 100> - Lautstärke der Main Zone in % der Maximallautstärke
      • volumeDown - Lautstärke der Main Zone um 0.5dB verringern
      • volumeUp - Lautstärke der Main Zone um 0.5dB erhöhen
      • volumeStraight<-80.5 ... 12> - Direktes Einstellen der Lautstärke der Main Zone mit einem Wert, wie er am Display des Pioneer AV Receiver angezeigt wird
      • set extensions (ausser <blink> ) werden unterstützt


      • Beispiel:
          set VSX923 on

        set <name> reopen

        Schließt und öffnet erneut die Datenverbindung von Fhem zum Pioneer AV Receiver. Kann nützlich sein, wenn die Datenverbindung nicht automatisch wieder hergestellt werden kann.

      Get
        get <name> raw <Befehl>

        liefert bei diesem Modul keine Werte zurück, sondern fragt den Pioneer AVR nach dem aktuellen Status (z.B. der Lautstärke). Sobald der Pioneer AVR antwortet (die Zeit, bis der Pioneer AVR antwortet, ist nicht vorhersehbar), aktualisiert das Modul die Readings bzw. Internals des PioneerAVR devices. Falls unten keine Beschreibung für das "get-Kommando" angeführt ist, siehe gleichnamiges "Set-Kommando"
      • loadInputNames - liest die Namen der Eingangsquellen vom Pioneer AV Receiver und überprüft, ob sie aktiviert sind
      • audioInfo - Holt die aktuellen Audio Parameter vom Pioneer AV receiver (z.B. audioInputSignal, audioInputFormatXX, audioOutputFrequency)
      • display - Aktualisiert das reading 'display' und 'displayPrevious' mit der aktuellen Anzeige des Displays Pioneer AV Receiver
      • bass - aktualisiert das reading 'bass'
      • channel -
      • currentListIpod - aktualisiert die readings currentAlbum, currentArtist, etc.
      • currentListNetwork -
      • input -
      • listeningMode -
      • listeningModePlaying -
      • macAddress -
      • avrModel - Versucht vom Pioneer AV Receiver die Modellbezeichnung (z.B. VSX923) einzulesen und im gleichnamigen INTERNAL abzuspeichern
      • mute -
      • networkPorts - Versucht vom Pioneer AV Receiver die offenen Ethernet Ports einzulesen und als INTERNAL networkPort1 ... networkPort4 abzuspeichern
      • networkSettings - Versucht vom Pioneer AV Receiver die Netzwerkparameter (IP, Gateway, Netmask, Proxy, DHCP, DNS1, DNS2) einzulesen und in INTERNALS abzuspeichern
      • networkStandby - Versucht vom Pioneer AV Receiver den Parameter networkStandby (kann on oder off sein) einzulesen und als INTERNAL abzuspeichern
      • power - Versucht vom Pioneer AV Receiver in Erfahrung zu bringen, ob die Main Zone eingeschaltet oder in Standby ist.
      • signalSelect -
      • softwareVersion - Fragt den Pioneer AV Receiver nach der aktuell im Receiver verwendeten Software Version und speichert diese als INTERNAL
      • speakers -
      • speakerSystem - Fragt die aktuell verwendete Lautsprecheranwendung vom Pioneer AV Receiver ab. Mögliche Werte sind z.B. "ZONE 2", "Normal(SB/FH)", "5.1ch C+Surr Bi-Amp",...
      • tone -
      • tunerFrequency - Fragt die aktuell eingestellte Frequenz des Tuners ab
      • tunerChannelNames - Sollten für die Tuner Presets Namen im Pioneer AV Receiver gespeichert sein, werden sie hiermit abgefragt
      • treble -
      • volume -


      Attribute

      • checkConnection <enable|disable> - Ein-/Ausschalten der regelmäßigen Überprüfung, ob die Datenverbindung zum Pioneer AV Receiver funktioniert. Ist das Attribut nicht gesetzt, oder "enable" so wird regelmäßig die Verbindung überprüft. Mit "disable" lässt sich die regelmäßige Überprüfung abschalten.
      • logTraffic <loglevel> - Ermöglicht das Protokollieren ("Loggen") der Datenkommunikation vom/zum Pioneer AV Receiver. Steuerzeichen werden angezeigt z.B. ein doppelter Rückwärts-Schrägstrich wird als einfacher Rückwärts-Schrägstrich angezeigt, \n wird für das Steuerzeichen "line feed" angezeigt, etc.
      • verbose - Beeinflusst die Menge an Informationen, die dieses Modul protokolliert. 0: möglichst wenig in die Fhem Logdatei schreiben, 5: möglichst viel in die Fhem Logdatei schreiben
      • volumeLimit <0 ... 100> - beschränkt die maximale Lautstärke (in %). Selbst wenn manuell am Pioneer AV Receiver eine höher Lautstärke eingestellt wird, regelt Fhem die Lautstärke auf volumeLimit zurück.
      • volumeLimitStraight < -80 ... 12> - beschränkt die maximale Lautstärke (Werte wie am Display des Pioneer AV Receiver angezeigt). Selbst wenn manuell am Pioneer AV Receiver eine höher Lautstärke eingestellt wird, regelt Fhem die Lautstärke auf volumeLimit zurück.


      Generated Readings/Events:

      • audioAutoPhaseControlMS - aktuell konfigurierte Auto Phase Control in ms
      • audioAutoPhaseControlRevPhase - aktuell konfigurierte Auto Phase Control reverse Phase -> 1 bedeutet: reverse phase
      • audioInputFormat - Zeigt ob im Audio Eingangssignal der Kanal XXX vorhanden ist (1 bedeutet: ist vorhanden)
      • audioInputFrequency - Frequenz des Eingangssignals
      • audioInputSignal - Art des Inputsignals (z.B. ANALOG, PCM, DTS,...)
      • audioOutputFormat - Zeigt ob im Audio Ausgangssignal der Kanal XXX vorhanden ist (1 bedeutet: ist vorhanden)
      • audioOutputFrequency - Frequenz des Ausgangssignals
      • bass - aktuell konfigurierte Bass-Einstellung
      • channel - Tuner Preset (1...9)
      • channelStraight - Tuner Preset wie am Display des Pioneer AV Receiver angezeigt, z.B. A2
      • display - Text, der aktuell im Display des Pioneer AV Receivers angezeigt wird
      • displayPrevious - Zuletzt im Display angezeigter Text
      • eq - Status des Equalizers des Pioneer AV Receivers (on|off)
      • hdmiOut - welche HDMI-Ausgänge sind aktiviert?
      • input - welcher Eingang ist ausgewählt
      • inputsList - Mit ":" getrennte Liste der aktivierten/verfügbaren Eingänge
      • listeningMode - Welcher Hörmodus (Listening Mode) ist eingestellt
      • listeningModePlaying - Welcher Hörmodus (Listening Mode) wird aktuell verwendet
      • mcaccMemory - MCACC Voreinstellung
      • mute - Stummschaltung
      • power - Main Zone eingeschaltet oder in Standby?
      • pqlsWorking - aktuelle PQLS Einstellung
      • presence - Kann der Pioneer AV Receiver via Ethernet erreicht werden?
      • screenHirarchy - Hierarchie des aktuell angezeigten On Screen Displays (OSD)
      • screenLine01...08 - Inhalt der Zeile 01...08 des OSD
      • screenLineHasFocus - Welche Zeile des OSD hat den Fokus?
      • screenLineNumberFirst - Lange Listen werden im OSD zu einzelnen Seiten mit je 8 Zeilen angezeigt. Die oberste Zeile im OSD repräsentiert welche Zeile in der gesamten Liste?
      • screenLineNumberLast - Lange Listen werden im OSD zu einzelnen Seiten mit je 8 Zeilen angezeigt. Die unterste Zeile im OSD repräsentiert welche Zeile in der gesamten Liste?
      • screenLineNumberTotal - Wie viele Zeilen hat die im OSD anzuzeigende Liste insgesamt?
      • screenLineNumbers - Wie viele Zeilen hat das OSD
      • screenLineType01...08 - Welchen Typs ist die Zeile 01...08? Z.B. "directory", "Now playing", "current Artist",...
      • screenName - Name des OSD
      • screenReturnKey - Steht die "Return-Taste" in diesem OSD zur Verfügung?
      • screenTopMenuKey - Steht die "Menu-Taste" in diesem OSD zur Verfügung?
      • screenType - Typ des OSD, z.B. "message", "List", "playing(play)",...
      • speakerSystem - Zeigt, wie die hinteren Surround-Lautsprecheranschlüsse und die B-Lautsprecheranschlüsse verwendet werden
      • speakers - Welche Lautsprecheranschlüsse sind aktiviert?
      • standingWave - Einstellung der Steuerung stark resonanter tiefer Frequenzen im Hörraum
      • state - Wird beim Verbindungsaufbau von Fhem mit dem Pioneer AV Receiver gesetzt. Mögliche Werte sind disconnected, innitialized, off, on, opened
      • tone - Ist die Klangsteuerung eingeschalten?
      • treble - Einstellung des Höhenreglers
      • tunerFrequency - Tunerfrequenz
      • volume - Eingestellte Lautstärke (0%-100%)
      • volumeStraight - Eingestellte Lautstärke, so wie sie auch am Display des Pioneer AV Receivers angezeigt wird


    PIONEERAVRZONE


      Define
        define <name> PIONEERAVRZONE <zone>

        Definiert ein PioneerAVR device für eine Zone Zone (zone2, zone3 or hdZone).

        Im Allgemeinen verwendet das logische device PIONEERAVRZONE das zuletzt definierte PIONEERAVR device für die Kommunikation mit dem Pioneer AV Receiver. Mit dem Atribut IODev kann das PIONEERAVRZONE device jedes PIONEERAVR device zur Kommunikation verwenden, z.B. attr myPioneerAvrZone2 IODev myPioneerAvr.

        Examples:

          define myPioneerAvrZone2 PIONEERAVRZONE zone2
          attr myPioneerAvrZone2 IODev myPIONEERAVR

      Set
        set <name> <was> [<value>]

        wobei <was> eines der folgenden Befehle sein kann:
      • reopen
      • off
        Zone in den Standby-Modus schalten
      • on
        Zone aus dem Standby-Modus Einschalten
      • toggle
        Zone Ein/Ausschalten
      • volume <0 ... 100>
        Zonenlautstärke in % der maximalen Lautstärke
      • volumeUp
        Zonenlautstärke um 0.5dB erhöhen
      • volumeDown
        Zonenlautstärke um 0.5dB verringern
      • volumeStraight<-80.5 ... 12>
        Einstellen der Zonenlautstärke mit einem Wert, wie er am Display des Pioneer AV Receiver angezeigt wird
      • mute
      • input
        Die Liste der verfügbaren (also der nicht deaktivierten) Eingangsquellen wird beim Start von Fhem und auch mit get statusRequest eingelesen
      • inputUp
        nächste Eingangsquelle für die Zone auswählen
      • inputDown
        vorherige Eingangsquelle für die Zone auswählen
      • set extensions (ausser <name>) werden unterstützt


      • Beispiel:
          set VSX923Zone2 on


      Get
      • get <name> input

        reading für die Eingangsquelle aktualisieren


      Attributes

      • IOdev Name des device welches die Kommunikation mit dem Pioneer AV Receiver zur Verfügung stellt
      • verbose


    POKEYS

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

    PRESENCE

      Das PRESENCE Module bietet mehrere Möglichkteiten um die Anwesenheit von Handys/Smartphones oder anderen mobilen Geräten (z.B. Tablets) zu erkennen.

      Dieses Modul bietet dazu mehrere Modis an um Anwesenheit zu erkennen. Diese sind:

      • lan-ping - Eine Erkennung auf Basis von Ping-Tests im lokalen LAN/WLAN
      • fritzbox - Eine Erkennung aufgrund der internen Abfrage des Status auf der FritzBox (nur möglich, wenn FHEM auf einer FritzBox läuft)
      • local-bluetooth - Eine Erkennung auf Basis von Bluetooth-Abfragen durch den FHEM Server. Das Gerät muss dabei in Empfangsreichweite sein, aber nicht sichtbar sein
      • function - Eine Erkennung mithilfe einer selbst geschriebenen Perl-Funktion, welche den Anwesenheitsstatus ermittelt.
      • shellscript - Eine Erkennung mithilfe eines selbst geschriebenen Skriptes oder Programm (egal in welcher Sprache).
      • event - Eine Erkennung basierend auf Events einer anderen Definition in FHEM.
      • lan-bluetooth - Eine Erkennung durch Bluetooth-Abfragen via Netzwerk (LAN/WLAN) in ein oder mehreren Räumen

      Jeder Modus kann optional mit spezifischen Prüf-Intervallen ausgeführt werden.

      • check-interval - Das normale Prüfinterval in Sekunden für eine Anwesenheitsprüfung. Standardwert: 30 Sekunden
      • present-check-interval - Das Prüfinterval in Sekunden, wenn ein Gerät anwesend (present) ist. Falls nicht angegeben, wird der Wert aus check-interval verwendet


      Define

        Modus: lan-ping

        define <name> PRESENCE lan-ping <IP-Addresse oder Hostname> [ <Interval> [ <Anwesend-Interval> ] ]

        Prüft ob ein Gerät über Netzwerk (üblicherweise WLAN) auf Ping-Anfragen reagiert und setzt entsprechend den Anwesenheitsstatus.

        Beispiel

        define iPhone PRESENCE lan-ping 192.168.179.21

        Modus: fritzbox

        define <name> PRESENCE fritzbox <Gerätename/MAC-Adresse> [ <Interval> [ <Anwesend-Interval> ] ]

        Prüft ob ein Gerät welches per WLAN mit der FritzBox verbunden ist, erreichbar durch Abfrage des Status mit dem Befehl ctlmgr_ctl. Der Gerätename (Parameter: <Gerätename>) muss dem Namen entsprechen, welcher im Menüpunkt "Heimnetz" auf der FritzBox-Oberfläche angezeigt wird oder kann durch die MAC-Adresse im Format XX:XX:XX:XX:XX:XX ersetzt werden.

        Dieser Modus ist nur verwendbar, wenn FHEM auf einer FritzBox läuft! Die Erkennung einer Abwesenheit kann ca. 10-15 Minuten dauern!

        Beispiel

        define iPhone PRESENCE fritzbox iPhone-6
        define iPhone PRESENCE fritzbox 00:06:08:05:0D:00

        Modus: local-bluetooth

        define <name> PRESENCE local-bluetooth <Bluetooth-Adresse> [ <Interval> [ <Anwesend-Interval> ] ]

        Prüft ob ein Bluetooth-Gerät abgefragt werden kann und meldet dies als Anwesenheit. Für diesen Modus wird der Shell-Befehl "hcitool" benötigt (wird durch das Paket bluez bereitgestellt), sowie ein funktionierender Bluetooth-Empfänger (intern oder als USB-Stick)

        Beispiel

        define iPhone PRESENCE local-bluetooth 0a:4f:36:d8:f9:8

        Modus: function

        define <name> PRESENCE function {...} [ <Interval> [ <Anwesend-Interval> ] ]

        Prüft den Anwesenheitsstatus mithilfe einer selbst geschriebenen Perl-Funktion (z.B. SNMP Abfrage).

        Diese Funktion muss 0 (Abwesend) oder 1 (Anwesend) zurückgeben. Ein entsprechendes Beispiel findet man im FHEM-Wiki.

        Beispiel

        define iPhone PRESENCE function {snmpCheck("10.0.1.1","0x44d77429f35c")

        Mode: shellscript

        define <name> PRESENCE shellscript "<Skript-Pfad> [<arg1>] [<argN>]..." [ <Interval> [ <Anwesend-Interval> ] ]

        Prüft den Anwesenheitsstatus mithilfe eines selbst geschrieben Skripts oder Programmes (egal in welcher Programmier-/Skriptsprache)

        Der Aufruf dieses Skriptes muss eine 0 (Abwesend) oder 1 (Anwesend) auf der Kommandozeile (STDOUT) ausgeben. Alle anderen Werte/Ausgaben werden als Fehler behandelt.

        Beispiel

        define iPhone PRESENCE shellscript "/opt/check_device.sh iPhone"

        Mode: event

        define <name> PRESENCE event <Abwesend-Regexp> <Anwesend-Regexp>

        Lauscht auf Events von anderen Definitionen innerhalb von FHEM um die Anwesenheit darzustellen. Die regulären Ausdrücke für An- und Abwesenheit entsprechen dabei der Syntax von notify.

        Sobald innerhalb von FHEM ein Event gefeuert wird, welches auf die Abwesend-Regexp bzw. Anwesend-Regexp passt, wird der Status entsprechend in PRESENCE gesetzt.

        Beispiel

        define Anwesenheit PRESENCE event Tuerschalter:off Tuerschalter:on

        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 Netzwerkdienst, welcher eine Bluetooth-Anwesenheitserkennung von ein oder mehreren Geräten über Netzwerk bereitstellt. Dieser lauscht standardmäßig auf TCP Port 5111 nach eingehenden Verbindungen von dem PRESENCE Modul oder einem collectord.
          Usage:
            presenced -d [-p <port>] [-P <filename>]
            presenced [-h | --help]
          
          
          Options:
            -p, --port
               TCP Port which should be used (Default: 5111)
            -P, --pid-file
               PID file for storing the local process id (Default: /var/run/presenced.pid)
            -d, --daemon
               detach from terminal and run as background daemon
            -v, --verbose
               Print detailed log output
            -h, --help
               Print detailed help screen
          
          Zur Bluetooth-Abfrage wird der Shell-Befehl "hcitool" verwendet (Paket: bluez) um sogenannte "Paging-Request" an die gewünschte Bluetooth Adresse (z.B. 01:B4:5E:AD:F6:D3) durchzuführen. Das Gerät muss dabei nicht sichtbar sein, allerdings ständig aktiviert sein um Bluetooth-Anfragen zu beantworten.

          Wenn ein Gerät anwesend ist, wird dies an FHEM übermittelt zusammen mit dem Gerätenamen als Reading.

          Der presenced ist zum Download verfügbar als:

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


        lepresenced

          lepresenced ist ein Perl Netzwerkdienst, der analog zu presenced eine Bluetooth-Anwesenheitserkennung von ein oder mehreren Geräten über Netzwerk bereitstellt. Im Gegensatz zu presenced unterstützt lepresenced Bluetooth 4.0 (Low Energy) Geräte wie z. B. Gigaset G-Tags, FitBit Charges. lepresenced lauscht standardmäßig auf TCP Port 5333 und wartet auf eingehende Verbindungen des PRESENCE-Moduls bzw. von collectord.
          Usage:
              lepresenced --bluetoothdevice <bluetooth device> --listenaddress <listen address> --listenport <listen port> --loglevel <log level> --daemon
              lepresenced -b <bluetooth device> -a <listen address> -p <listen port> -l <log level> -d
              
          valid log levels:
              LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG. Default: LOG_INFO
              
          Examples:
          	lepresenced --bluetoothdevice hci0 --listenaddress 127.0.0.1 --listenport 5333 --daemon
          	lepresenced --loglevel LOG_DEBUG --daemon
          
          Zur Bluetooth-Abfrage wird der Befehl hcitool lescan (Paket: bluez) verwendet, der fortwährend auf die Beacons der Bluetooth-LE-Geräte lauscht.

          Wenn ein Gerät anwesend ist, wird dies an FHEM übermittelt zusammen mit dem Gerätenamen als Reading.

          Der le presenced ist zum Download verfügbar als:

          • Perl Skript: lepresenced
          • .deb Paket (architekturunabhängig) unter contrib/PRESENCE/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.7.deb

      Set
      • statusRequest - Startet einen sofortigen Check.
      • power - Startet den powerCmd-Befehl welche durch den Parameter powerCmd angegeben ist (Nur wenn das Attribut "powerCmd" definiert ist)

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

      • absenceThreshold
      • (Nicht im Modus "event" anwendbar)
        Die Anzahl an Checks, welche in "absent" resultieren müssen, bevor der Status der PRESENCE-Definition auf "absent" wechselt. Mit dieser Funktion kann man die Abwesenheit eines Gerätes verifizieren bevor der Status final auf "absent" geändert wird. Wenn dieses Attribut auf einen Wert >1 gesetzt ist, werden die Readings "state" und "presence" auf den Wert "maybe absent" gesetzt, bis der Status final auf "absent" wechselt.

        Standardwert ist 1 (keine Abwesenheitsverifizierung)

      • presenceThreshold
      • (Nicht im Modus "event" anwendbar)
        Die Anzahl an Checks, welche in "present" resultieren müssen, bevor der Status der PRESENCE-Definition auf "present" wechselt. Mit dieser Funktion kann man die Anwesenheit eines Gerätes verifizieren bevor der Status final auf "present" geändert wird. Wenn dieses Attribut auf einen Wert >1 gesetzt ist, werden die Readings "state" und "presence" auf den Wert "maybe present" gesetzt, bis der Status final auf "present" wechselt.

        Standardwert ist 1 (keine Anwesenheitsverifizierung)

      • absenceTimeout
      • (Nur im Modus "event" anwendbar)
        Die Dauer, die nach einem "absent"-Event gewartet werden soll, bis der Status der PRESENCE-Definition tatsächlich auf "absent" geändert werden soll. Die Dauer kann dabei im Format HH:MM:SS angegeben werden, wobei Stunden und Minuten optional sind. Wenn dieses Attribut auf einen gültigen Wert gesetzt ist, werden die Readings "state" und "presence" bei einem "absent"-Event zunächst auf den Wert "maybe absent" gesetzt. Sobald das parametrisierte Zeitfenster um ist, wird der Status final auf "absent" gesetzt.

        Standardwert ist 0 Sekunden (keine Statusverzögerung)

      • presenceTimeout
      • (Nur im Modus "event" anwendbar)
        Die Dauer, die nach einem "present"-Event gewartet werden soll, bis der Status der PRESENCE-Definition tatsächlich auf "present" geändert werden soll. Die Dauer kann dabei im Format HH:MM:SS angegeben werden, wobei Stunden und Minuten optional sind. Wenn dieses Attribut auf einen gültigen Wert gesetzt ist, werden die Readings "state" und "presence" bei einem "present"-Event zunächst auf den Wert "maybe present" gesetzt. Sobald das parametrisierte Zeitfenster um ist, wird der Status final auf "present" gesetzt.

        Standardwert ist 0 Sekunden (keine Statusverzögerung)

      • ping_count
      • (Nur im Modus "ping" anwendbar)
        Verändert die Anzahl der Ping-Pakete die gesendet werden sollen um die Anwesenheit zu erkennen. Je nach Netzwerkstabilität können erste Pakete verloren gehen oder blockiert werden.

        Standardwert ist 4 (Versuche)

      • bluetooth_hci_device
      • (Nur im Modus "local-bluetooth" anwendbar)
        Sofern man mehrere Bluetooth-Empfänger verfügbar hat, kann man mit diesem Attribut ein bestimmten Empfänger auswählen, welcher zur Erkennung verwendet werden soll (bspw. hci0, hci1, ...). Es muss dabei ein vorhandener HCI-Gerätename angegeben werden wie z.B. hci0.

      • fritzbox_speed
      • (Nur im Modus "fritzbox")
        Zusätzlich zum Status des Geräts wird die aktuelle Verbindungsgeschwindigkeit ausgegeben
        Das macht nur bei WLAN Geräten Sinn, die direkt mit der FritzBox verbunden sind. Bei abwesenden Geräten wird als Geschwindigkeit 0 ausgegeben.

        Mögliche Werte: 0 => Geschwindigkeit nicht prüfen, 1 => Geschwindigkeit prüfen
        Standardwert ist 0 (Keine Geschwindigkeitsprüfung)

      • powerCmd

      • Ein FHEM-Befehl, welcher das Gerät schalten kann.

        Wenn der power-Befehl ausgeführt wird (set-Befehl: power) werden folgende Platzhalter durch ihre entsprechenden Werte ersetzt:

        • $NAME - Name der PRESENCE-Definition
        • $ADDRESS - Die überwachte Addresse der PRESENCE Definition, wie sie im define-Befehl angegeben wurde.
        • $ARGUMENT - Das Argument, was dem Set-Befehl "power" übergeben wurde. (z.B. "on" oder "off")

        Beispielhafte FHEM-Befehle:

        • set PowerSwitch_1 on
        • set PowerSwitch_1 $ARGUMENT
        • "/opt/power_on.sh $ADDRESS"
        • {powerOn("$ADDRESS", "username", "password")}

      Generierte Events:

        Generelle Events:

        • state: (absent|maybe absent|present|disabled|error|timeout) - Der Anwesenheitsstatus eine Gerätes (absent = abwesend; present = anwesend) oder "disabled" wenn das disable-Attribut aktiviert ist
        • presence: (absent|maybe absent|present) - Der Anwesenheitsstatus eine Gerätes (absent = abwesend; present = anwesend). Der Wert "maybe absent" (vielleicht abwesend) tritt nur auf, sofern das Attribut absenceThreshold aktiviert ist.
        • powerCmd: (executed|failed) - Ausführung des power-Befehls war erfolgreich.


        Bluetooth-spezifische Events:

        • device_name: $name - Der Name des Bluetooth-Gerätes, wenn es anwesend (Status: present) ist


        presenced-/collectord-spezifische Events:

        • command_accepted: $command_accepted (yes|no) - Wurde das letzte Kommando an den presenced/collectord akzeptiert (yes = ja, no = nein)?
        • room: $room - Wenn das Modul mit einem collectord verbunden ist, zeigt dieses Event den Raum an, in welchem dieses Gerät erkannt wurde (Raumname entsprechend der Konfigurationsdatei des collectord)

    PROPLANTA

      Das Modul extrahiert Wetterdaten von der Website www.proplanta.de.
      Es stellt eine Vorhersage für 12 Tage zur Verfügung - während der ersten 7 Tage im 3-Stunden-Intervall.
      Dieses Modul erzeugt eine hohe CPU-Last. Es wird deshalb empfohlen, die auszulesenden Vorhersagetage zu reduzieren.
      Es nutzt die Perl-Module HTTP::Request, LWP::UserAgent und HTML::Parse.
      Für detailierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.

      Define

        define <Name> PROPLANTA [Stadt] [Ländercode]
        Beispiel:
        define wetter PROPLANTA Bern ch
        define wetter PROPLANTA Wittingen+(Niedersachsen)
         
      • [Stadt]
        Optional. Die Stadt muss auf www.proplanta.de auswählbar sein.
        Wichtig!! Auf die großen Anfangsbuchstaben achten. Leerzeichen im Stadtnamen werden durch ein + (Plus) ersetzt.

      • [Ländercode]
        Optional. Mögliche Werte: de (Standard), at, ch, fr, it

      • Über die Funktion PROPLANTA_Html wird ein HTML-Code für eine 3-Tages-Vorhersage erzeugt.
        Beispiel:
        define Vorschau weblink htmlCode {PROPLANTA_Html("Wetter")}


      Set

      • set <name> update
        Startet sofort ein neues Auslesen der Wetterdaten.

      Attribute

      • forecastDays <4-14>
        Anzahl Tage, für die die Vorhersage ausgelesen werden soll. Standard ist 14 Tage (inkl. heute).

      • INTERVAL <Abfrageinterval>
        Abfrageinterval in Sekunden (Standard 3600 = 1 Stunde)

      • URL <Internetadresse>
        Internetadresse, von der die Daten ausgelesen werden (überschreibt die Werte im 'define'-Term)

      • readingFnAttributes


      Vorhersagewerte

      • fc0|1|2|3...|13_... - Vorhersagewerte für heute|morgen|übermorgen|in 3|...|13 Tagen
      • fc0_...00|03|06|09|12|15|18|21 - Vorhersagewerte für heute um 00|03|06|09|12|15|18|21 Uhr
      • fc0_chOfRainDay|Night - heutiges Niederschlagsrisiko tagsüber|nachts in %
      • fc1_chOfRain15 - morgiges Niederschlagsrisiko um 15:00 Uhr in %
      • fc2_cloud15 - Wolkenbedeckungsgrad übermorgen um 15:00 Uhr in %
      • fc0_dew - Taubildung heute (0=keine, 1=leicht, 2=mäßig, 3=stark)
      • fc0_evapor - Verdunstung heute (0=keine, 1=gering, 2=mäßig, 3=stark)
      • fc0_frost - Bodenfrost heute (0=nein, 1=ja)
      • fc1_moonRise|Set - Mondauf|untergang morgen
      • fc0_rad - Globalstrahlung heute
      • fc0_rain15 - Niederschlagsmenge heute um 15:00 Uhr in mm
      • fc0_sun - relative Sonnenscheindauer heute in % (zwischen Sonnenauf- und -untergang)
      • fc0_tempMin|Max - Minimal|Maximaltemperatur heute in °C
      • fc0_temp15 - Temperatur heute um 15:00 Uhr in °C
      • fc0_uv - UV-Index heute
      • fc0_weatherMorning|Day|Evening|Night - Wetterzustand heute morgen|tagsüber|abends|nachts
      • fc0_weatherDayIcon - Icon Wetterzustand heute tagsüber
      • etc.

      Aktuelle Werte

      • cloudBaseMin|Max - Höhe der minimalen|maximalen Wolkenuntergrenze in m
      • dewPoint - Taupunkt in °C
      • humidity - relative Feuchtigkeit in %
      • obs_time - Uhrzeit der Wetterbeobachtung
      • pressure - Luftdruck in hPa
      • temperature - Temperature in °C
      • visibility - Sichtweite in km
      • weather - Wetterzustand
      • weatherIcon - Icon Wetterzustand
      • wind - Windgeschwindigkeit in km/h
      • windDir - Windrichtung in °


    PWM

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

    PWMR

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

    PW_Circles

      Das PW_Circles Modul setzt auf das Plugwise-System auf. Es muss zuerst ein Plugwise-Stick angelegt werden. Siehe Plugwise.

      Define
        define <name> PW_Circle <ShortAddress>

        <ShortAddress>
          gibt die Kurzadresse (die letzten 4 Bytes) des Circles an.


      Set
        on / off
          Schaltet den Circle ein oder aus

        on-for-timer / off-for-timer sec
          Schaltet den Circle für n Sekunden an oder aus

        syncTime
          Synchronisiert die interne Uhr des Circles mit der lokalen Systemzeit

        removeNode
          Entfernt den Circle aus dem Plugwise-Netzwerk

        ping
          Sendet ein Ping an den Circle und setzt das Reading "ping" im Format "q_in - q_out - pingZeit"

        status
          Liest den aktuellen Status des Circles aus



      Attribute
        interval
          Setzt das Abruf-Intervall speziell für diesen einen Circle


      Beispiel
        define Circle_2907CC9 PW_Circle 2907CC9


    =end html =cut

    PW_Scan

      Das PW_Scan Modul setzt auf das Plugwise-System auf. Es muss zuerst ein Plugwise-Stick angelegt werden. Siehe Plugwise.

      Define
        define <name> PW_Scan <ShortAddress>

        <ShortAddress>
          gibt die Kurzadresse (die letzten 4 Bytes) des Gerätes an.


    =end html =cut

    PW_Sense

      Das PW_Sense Modul setzt auf das Plugwise-System auf. Es muss zuerst ein Plugwise-Stick angelegt werden. Siehe Plugwise.

      Define
        define <name> PW_Sense <ShortAddress>

        <ShortAddress>
          gibt die Kurzadresse (die letzten 4 Bytes) des Gerätes an.


    =end html =cut

    PW_Switch

      Das PW_Switch Module basiert auf dem Plugwise-System. Es muss zuerst ein Plugwise-Stick angelegt werden. Siehe PW_Switch.

      Define
        define <name> PW_Switch <ShortAddress>

        <ShortAddress>
          gibt die Kurzadresse (die letzten 4 Bytes) des Circles an.

        Beispiel:
        define PW_Switch_2907CC9 PW_Switch 2907CC9

      Set
        syncTime
          Synchronisiert die interne Uhr des Circles mit der lokalen Systemzeit

        removeNode
          Entfernt den Circle aus dem Plugwise-Netzwerk

        ping
          Sendet ein Ping an den Circle und setzt das Reading "ping" im Format "q_in - q_out - pingZeit"


    =end html =cut

    PachLog

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

    Plugwise

      Modul für das Plugwise-System.
      Achtung: Dieses Modul benötigt folgende Perl-Module:
      • Device::SerialPort oder Win32::SerialPort
      • digest:CRC


      Define
        define <name> Plugwise <device>

      <device> Gibt den COM-Port des Plugwise-Stick an. Unter Linux ist dies im Normalfall /dev/ttyUSBx, wobei x eine fortlaufende Nummer ist. (zB /dev/ttyUSB0) Wobei es unter Linux sinnvoller ist, den Port mittels UDEV-Regeln oder mittels /dev/by-id/ anzugeben. Der Plugwise-Stick läuft fix auf 115200 Baud

      Beispiel:
      define myPlugwise Plugwise /dev/ttyPlugwise

    Set
      Scan_Circles
        Startet eine Suche nach neuen Geräten und legt diese per Autocreate an.


      syncTime
        Syncronisiert die internen RTCs der Geräte mit der aktuellen Systemzeit.


      reOpen
        Öffnet den COM-Port neu (zB bei zu vielen Fehlern, nach deren Behebung)




    Attribute
      circlecount
        Maximale Anzahl der Geräte, nach denengesucht wird.

      interval
        Standard-Abfrageintervall der Circles


      autosync
        Sendet alle >n< Sekunden ein "syncTime" an alle Geräte


      WattFormat
        String, mit welchem die Power-Readings formatiert werden Standard: %0.f


      showCom
        Schreibt die gesamte Kommunikation (gefiltern nach >regEx<) in das Reading "communication" (Am besten mit FileLog oder dem Eventmonitor anzusehen)



    =end html =cut

    PostMe

    PushNotifier

      PushNotifier ist ein Dienst, um Benachrichtigungen von einer vielzahl von Quellen auf Deinem Smartphone oder Tablet zu empfangen.
      Du brauchst einen Account um dieses Modul zu verwenden.
      F��r weitere Informationen besuche FhemWiki PushNotifier.

      Diskutiere das Modul hier.


      Define
        define <name> PushNotifier <apiToken> <appName> <user> <password> <deviceID>

        Du musst einen Account erstellen, um das apiToken zu bekommen.
        Und du musst eine Anwendung erstellen, um einen appToken zu bekommen.

        Beispiel:
          define PushNotifier1 PushNotifier 01234 appname user password 012

      Set
        set <PushNotifier_device> message

        Beispiele:
          set PushNotifier1 message Dies ist ein Text.
        Zeilenumbruch:
          set PushNotifier1 message Dies ist ein Text._Neue Zeile.

      Get
        N/A


      Generated events:
        N/A

    Pushalot

      Pusalot ist ein Dienst, um Benachrichtigungen von einer vielzahl von Quellen auf ein Windows Phone Device zu empfangen.
      Du brauchst einen Account um dieses Modul zu verwenden.
      Für weitere Informationen über den Dienst besuche pushalot.com.

      Diskutiere das Modul hier.


      Define
        define <name> Pushalot <token> [<source>]

        <token> Der Token der den pushalot-Account identifiziert. Um diesen zu bekommen, muss ein Account erstellt werden.
        <source> Definiert den Absender, der in der Nachricht angezeigt werden soll.

        Beispiel:
          define Pushalot PushNotification 123234 FHEM

      Set
        set <Pushalot_device> "<message>" ["<title>"] ["<image>"] ["<link>"] ["<link_title>"] ["<important>"] ["<silent>"]

        <message> Der Nachrichten-Text.
        <title> Der Titel der Nachricht.
        <image> Optionale Bild-URL die in der Nachricht angezeigt werden soll.
        <link> Ein optionaler Link der an die Nachricht angehängt werden soll.
        <link_title> Optionaler Link Titel. Wenn kein Titel angegeben wird, ist dieser die URL.
        <important> True|False: True wenn die Nachricht als 'wichtig' markiert werden soll, sonst False (Default)
        <silent> True|False: True wenn die Nachricht 'still' ausgeliefert werden soll (kein Benachrichtigungssound wird abgespielt), ansonsten False (Default)
        <time_to_live> Zeit in Minuten nach der die Nachricht automatisch entfernt wird. Achtung: Der Pushalot Service prüft zu löschende Nachrichten alle 5 Minuten

        Beispiele:
          set PushNotification message "Das ist meine Nachricht."
          set PushNotification message "Das ist meine Nachricht." "Mit Titel"
          set PushNotification message "Das ist meine Nachricht." "Mit Titel" "http://www.xyz.com/image.png"
          set PushNotification message "Das ist meine Nachricht." "Mit Titel" "http://www.xyz.com/image.png" "http://www.xyz.com"
          set PushNotification message "Das ist meine Nachricht." "Mit Titel" "http://www.xyz.com/image.png" "http://www.xyz.com" "Link Titel"
          set PushNotification message "Das ist meine Nachricht." "Mit Titel" "http://www.xyz.com/image.png" "http://www.xyz.com" "Link Titel" True
          set PushNotification message "Das ist meine Nachricht." "Mit Titel" "http://www.xyz.com/image.png" "http://www.xyz.com" "Link Title" True False
          set PushNotification message "Das ist meine Nachricht." "Mit Titel" "http://www.xyz.com/image.png" "http://www.xyz.com" "Link Title" True False 5

        Notes:

      Get
        N/A

      Attribute
        N/A


      Generierte events:
        N/A

    Pushbullet

      Pushbullet ist ein Dienst, um Benachrichtigungen an unterschiedliche Endgeräte zu senden. Pushbullet bietet Apps für iPhone, Android, Windows (Beta) und Mac OS X sowie Plugins für Chrome, Firefox und Safari an.
      Für weitere Informationen über den Dienst besuche pushbullet.com.

      Diskutiere das Modul hier.


      Define
        define <name> Pushbullet <accessToken>

        Notiz:
        JSON muss auf dem FHEM Host installiert sein.

        Registriere dich auf pushbullet.com um deine accessToken zu bekommen.

      Set
      • clear
        Löscht alle Device Readings
      • contactAdd name | email
        Fügt einen neuen Kontakt hinzu. Leerzeichen im Namen sind erlaubt.
      • deviceDelete deviceName
        Löscht das Device.
      • deviceRename deviceName | neuerDeviceName
        Benennt das Device um.
      • link [| Titel | Device]
        Sendet einen Link mit optionalen Titel und Device. Wenn kein Device angegeben ist, geht der Push an alle deine Devices.
      • list Item1[, Item2, Item3, ... | Titel | Device]
        Sendet eine Liste mit einem oder mehreren Items, optionalen Titel und Device. Wenn kein Device angegeben ist, geht der Push an alle deine Devices.
      • message [| Titel | Device]
        Sendet eine Nachricht mit optionalen Titel und Device. Wenn kein Device angegeben ist, geht der Push an alle deine Devices.

      • Beispiele:
          set Pushbullet message Das ist eine Nachricht
          Sendet eine Push Benachrichtigung mit der Nachricht "Das ist eine Nachricht" ohne vorbestimmten Titel an alle deine Devices.

          set Pushbullet message Das ist eine Nachricht | Ein Titel
          Sendet eine Push Benachrichtigung mit der Nachricht "Das ist eine Nachricht" mit dem Titel "Ein Titel" an alle deine Devices.

          set Pushbullet message This is a message | Ein Titel | iPhone
          Sendet eine Push Benachrichtigung mit der Nachricht "Das ist eine Nachricht" mit dem Titel "Ein Titel" an deinen Device iPhone.

          set Pushbullet message This is a message | Ein Titel | Max Mustermann
          Sendet eine Push Benachrichtigung mit der Nachricht "Das ist eine Nachricht" mit dem Titel "Ein Titel" an deinen Kontakt Max Mustermann.


        Notiz:
        Leerstellen vor und nach dem Trenner | werden nicht benötigt.

      Get
      • devices
        Liest alle Geräte und Kontakte ein und setzt die entsprechenden Readings.

      Attributes
      • defaultDevice
        Standart Device für Pushnachrichten.
      • defaultTitle
        Standart Titel für Pushnachrichten. Wenn nicht gesetzt ist der Standart Titel FHEM

    Pushover

      Pushover ist ein Dienst, um Benachrichtigungen von einer vielzahl von Quellen auf Deinem Smartphone oder Tablet zu empfangen.
      Du brauchst einen Account um dieses Modul zu verwenden.
      Für weitere Informationen über den Dienst besuche pushover.net.

      Die Installation des Perl Moduls IO::Socket::SSL ist Voraussetzung zur Nutzung dieses Moduls (z.B. via 'cpan -i IO::Socket::SSL').
      Es wird empfohlen Perl-JSON zu installieren, um erweiterte Funktion wie Supplementary URLs nutzen zu können.

      Diskutiere das Modul hier.


      Define
        define <name> Pushover <token> <user> [<infix>]

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

        Das Attribut infix ist optional, um einen FHEMWEB uri Namen für die Pushover API Callback Funktion zu definieren.
        Die Callback URL Callback URL kann dann mit dem Attribut callbackUrl gesetzt werden (siehe unten).
        Hinweis: Eine infix uri can innerhalb einer FHEM Instanz nur einmal verwendet werden!

        Beispiel:
          define Pushover1 Pushover 01234 56789
          define Pushover1 Pushover 01234 56789 pushCallback1

      Set
        msg
          set <Pushover_device> msg <text> [<option1>=<value> <option2>="<value with space in it>" ...]

          Die folgenden Optionen können genutzt werden, um den Nachrichteninhalt und die Zustellung zu beeinflussen::

          message    - Typ: Text - Dein Nachrichtentext. Die Nutzung dieser Option hat Vorrang; Text außerhalb wird verworfen.
          device     - Typ: Text - Dein selbst vergebener Gerätename, um die Nachricht direkt an dieses Gerät zu senden anstatt an alle Geräte gleichzeitig (mehrere Geräte können mit Komma getrennt angegeben werden). Hier kann auch explizit ein User oder Group Key angegeben werden. Um gezielt ein Gerät einer/s speziellen User/Group anzusprechen, zuerst den User/Group Key angeben, gefolgt vom Gerätenamen und einem Doppelpunkt als Trennzeichen.
          title      - Typ: Text - Dein Nachrichten Titel, andernfalls wird der App Name wie in der Pushover API festgelegt verwendet.
          action     - Typ: Text - Entweder ein auszuführendes FHEM Kommando, wenn der Empfänger den Link anklickt oder eine supplementary URL, die mit der Nachricht zusammen angezeigt werden soll.
          url_title  - Typ: Text - Ein Titel für das FHEM Kommando oder die supplementary URL, andernfalls wird die URL direkt angezeigt.
          priority   - Type: Integer - Sende mit -2, um keine/n Benachrichtigung/Alarm zu generieren. Sende mit -1, um immer eine lautlose Benachrichtigung zu senden. Sende mit 1, um die Nachricht mit hoher Priorität anzuzeigen und die Ruhezeiten des Empfängers zu umgehen. Oder sende mit 2, um zusätzlich eine Bestätigung des Empfängers anzufordern.
          retry      - Type: Integer - Verpflichtend bei einer Nachrichten Priorität >= 2.
          expire     - Type: Integer - Verpflichtend bei einer Nachrichten Priorität >= 2.
          timestamp  - Type: Integer - Ein Unix Zeitstempfel mit Datum und Uhrzeit deiner Nachricht, die dem Empfänger statt der Uhrzeit des Einganges auf den Pushover Servern angezeigt wird. Hat Vorrang bei gesetztem Attribut timestamp=1.
          sound      - Typ: Text - Der Name eines vom Empfängergerät unterstützten Klangs, um den vom Empfänger ausgewählten Klang zu überschreiben.

          Beispiele:
            set Pushover1 msg Meine erste Pushover Nachricht.
            set Pushover1 msg Meine zweite Pushover Nachricht.\nDiesmal mit zwei Zeilen.
            set Pushover1 msg "Eine andere Pushover Nachricht in doppelten Anfährungszeichen."
            set Pushover1 msg 'Eine andere Pushover Nachricht in einfachen Anfährungszeichen.'
            set Pushover1 msg message="Pushover Nachricht, die die explizite Nachrichten Option für den Textinhalt verwendet." Dieser Teil des Textes wird ignoriert.
            set Pushover1 msg Dies ist eine Nachricht mit einem Titel. title="Dies ist ein Betreff"
            set Pushover1 msg title="Dies ist auch ein Betreff!" Dies ist eine weitere Nachricht mit einem Titel, der am Anfang des Kommandos gesetzt ist.
            set Pushover1 msg title=Notfall priority=2 retry=30 expire=3600 Sicherheits-Alarm im Wohnzimmer.
            set Pushover1 msg title=Link Schau dir mal diese Website an: url_title="Öffnen" action="http://fhem.de/" expire=3600
            set Pushover1 msg title=Hinweis expire=3600 Dies ist eine Erinnerung, um etwas zu tun. Der Link verliert in 1h seine Gültigkeit. url_title="Hier klicken, um den Befehl auszuführen" action="set device something"
            set Pushover1 msg title=Notfall priority=2 retry=30 expire=3600 Sicherheits-Alarm im Wohnzimmer. sound=siren url_title="Hier klicken, um den Befehl auszuführen" action="set device something"



        msg (veraltetes Format)
          set <Pushover_device> msg [title] <msg> [<device> <priority> <sound> [<retry> <expire> [<url_title> <action>]]]

          Beispiele:
            set Pushover1 msg 'Dies ist ein Text.'
            set Pushover1 msg 'Titel' 'Dies ist ein Text.'
            set Pushover1 msg 'Titel' 'Dies ist ein Text.' '' 0 ''
            set Pushover1 msg 'Notfall' 'Sicherheitsproblem im Wohnzimmer.' '' 2 'siren' 30 3600
            set Pushover1 msg 'Erinnerung' 'Dies ist eine Erinnerung an etwas' '' 0 '' 0 3600 'Hier klicken, um Aktion auszuführen' 'set device irgendwas'
            set Pushover1 msg 'Notfall' 'Sicherheitsproblem im Wohnzimmer.' '' 2 'siren' 30 3600 'Hier klicken, um Aktion auszuführen' 'set device something'

          Anmerkungen:
          • Bei der Verwendung der ersten beiden Beispiele müssen die entsprechenden Attribute als Ersatz für die fehlenden Parameter belegt sein (s. Attribute)
          • Wenn device leer ist, wird die Nachricht an alle Geräte geschickt.
          • Wenn device ein User oder Group Key ist, wird die Nachricht stattdessen hierhin verschickt. Möchte man trotzdem ein dediziertes Device angeben, trennt man den Namen mit einem Doppelpunkt ab.
          • Wenn sound leer ist, dann wird die Standardeinstellung in der App verwendet.
          • Wenn die Priorität höher oder gleich 2 ist müssen retry und expire definiert sein.


        glance
          set <Pushover_device> glance [<text>] [<option1>=<value> <option2>="<value with space in it>" ...]

          Aktualisiert die Pushover glances auf einer Apple Watch.
          Die folgenden Optionen können genutzt werden, um den Nachrichteninhalt und die Zustellung zu beeinflussen::

          title    - type: text(100 characters) - Eine Beschreibung der Daten, die angezeigt werden, beispielsweise "Verkaufte Dinge".
          text     - type: text(100 characters) - Textzeile, die in den meisten Ansichten verwendet wird. Die Nutzung dieser Option hat Vorrang; Text außerhalb wird verworfen.
          subtext  - type: text(100 characters) - Eine zweite Zeile mit Text.
          count    - type: integer(may be negative) - Wird auf kleineren Ansichten dargestellt; nützlich für einfache Zählerstände.
          percent  - type: integer(0-100) - Wird bei einigen Ansichten als Fortschrittsbalken/-kreis angezeigt.
          device   - Typ: Text - Dein selbst vergebener Gerätename, um die Nachricht direkt an dieses Gerät zu senden anstatt an alle Geräte gleichzeitig (mehrere Geräte können mit Komma getrennt angegeben werden). Hier kann auch explizit ein User oder Group Key angegeben werden. Um gezielt ein Gerät einer/s speziellen User/Group anzusprechen, zuerst den User/Group Key angeben, gefolgt vom Gerätenamen und einem Doppelpunkt als Trennzeichen.


      Get
        N/A

      Attributes
      • do_not_notify
      • disabledForIntervals
      • readingFnAttributes
      • callbackUrl
        Setzt die Callback URL, um Nachrichten mit Emergency Priorität zu bestätigen.
      • timestamp
        Sende den Unix-Zeitstempel mit jeder Nachricht.
      • title
        Wird beim Senden als Titel verwendet, sofern dieser nicht als Aufrufargument angegeben wurde.
      • device
        Wird beim Senden als Gerätename verwendet, sofern dieser nicht als Aufrufargument angegeben wurde. Kann auch generell entfallen, bzw. leer sein, dann wird an alle Geräte gesendet.
      • priority
        Wird beim Senden als Priorität verwendet, sofern diese nicht als Aufrufargument angegeben wurde. Zulässige Werte sind -1 = leise / 0 = normale Priorität / 1 = hohe Priorität
      • sound
        Wird beim Senden als Titel verwendet, sofern dieser nicht als Aufrufargument angegeben wurde. Kann auch generell entfallen, dann wird der eingestellte Ton der App verwendet.

      Generated events:
        N/A

    Pushsafer

      Pushsafer ist ein Dienst, um Benachrichtigungen von einer Vielzahl unterschiedlicher Quellen auf einem iOS-, Android-, Windows 10 Phone oder Desktop-Gerät zu empfangen.
      Es wird ein personalisierter Account benötigt um dieses Modul zu verwenden.
      Weitere Information zum Pushsafer-Dienst gibt es unter pushsafer.com.

      Dieses Modul dient lediglich zum Versand von Nachrichten über Pushsafer.


      Define
        define <Name> Pushsafer <Schlüssel>

        Der Parameter <Schlüssel> muss eine alphanumerische Zeichenkette sein. Hierbei kann es sich um einen regulären privaten Schlüssel (20 Zeichen lang) handeln oder um einen Email-Alias-Schlüssel (15 Zeichen lang), welcher in einem Account entsprechend eingerichtet sein muss.

        Beispiel:
          define PushsaferAccount Pushsafer A1b2c3D4E5F6g7h8i9J0

      Set
        set <Name> message <Nachricht> [<Option1>=<Wert> <Option2>=<Wert> ...]

        Aktuell wird nur das "message"-Kommando unterstützt um Nachrichten zu versenden.

        Der einfachste Anwendungsfall ist das Versenden einer einfachen Textnachricht wie im folgenden Beispiel:

        set PushsaferAccount message "Meine erste Pushsafer Nachricht."

        Um eine mehrzeilige Nachricht zu schicken, kann man den Platzhalter "\n" für einen Zeilenumbruch verwenden:

        set PushsaferAccount message "Meine zweite Pushsafer Nachricht.\nDiesmal mit zwei Zeilen."

        Optionale Zusatzparameter

        Es ist möglich die zu versendende Nachricht durch zusätzliche Optionen an die eigenen Wünsche anzupassen. Diese Optionen können hinter dem Nachrichtentext beliebig kombiniert werden um die Nachricht zu individualisieren. Die möglichen Optionen sind:

        title     - Kurzform: t  - Typ: Text - Eine Überschrift, die über der Nachricht hervorgehoben angezeigt werden soll.
        device    - Kurzform: d  - Typ: Text - Die Geräte-ID als Ganzzahl an welche die Nachricht gezielt geschickt werden soll. Um eine Gruppen-ID direkt zu addressieren muss der ID das Präfix "gs" vorangestellt werden (Bsp. "gs23" für die Gruppen-ID 23). Standardmäßig wird eine Nachricht immer an alle Geräte geschickt, die mit dem Account verknüpft sind.
        sound     - Kurzform: s  - Typ: Ganzzahl - Die Nummer eines Tons, welcher beim Empfang der Nachricht auf dem Zielgerät ertönen soll (siehe pushsafer.com für eine Liste möglicher Werte).
        icon      - Kurzform: i  - Typ: Ganzzahl - Die Nummer eines Icons, welches zusammen mit der Nachricht auf dem Zielgerät angezeigt werden soll (siehe Pushsafer.com für eine Liste möglicher Werte).
        vibration - Kurzform: v  - Typ: Ganzzahl - Die Anzahl, wie oft das Zielgerät vibrieren soll beim Empfang der Nachricht (maximal 3 mal; nur für iOS-/Android-Geräte nutzbar). Falls nicht benutzt, wird die geräteinterne Einstellung verwendet.
        url       - Kurzform: u  - Typ: Text - Eine URL, welche der Nachricht angehangen werden soll. Dies kann eine normale http:// bzw. https:// URL sein, es sind jedoch auch weitere spezielle Schemas möglich. Eine Liste aller möglichen URL-Schemas gibt es unter pushsafer.com .
        urlText   - Kurzform: ut - Typ: Text - Der Text, welcher zum Anzeigen der URL benutzt werden soll anstatt der Zieladresse.
        key       - Kurzform: k  - Typ: Text - Übersteuert den zu nutzenden Schlüssel zur Identifikation aus dem define-Kommando. Es kann hierbei auch ein Email-Alias-Schlüssel benutzt werden.
        ttl       - Kurzform: l  - Typ: Ganzzahl - Die Lebensdauer der Nachricht in Minuten. Sobald die Lebensdauer erreicht ist, wird die Nachricht selbstständig auf allen Geräten gelöscht. Der mögliche Wertebereich liegt zwischen 1 - 43200 Minuten (entspricht 30 Tagen).
        picture   - Kurzform: p  - Typ: Text - Anhängen eines Bildes zur Nachricht. Dies kann ein Dateipfad zu einer Bilddatei sein (z.B. picture=/home/user/Bild.jpg) oder der Name einer IPCAM-Instanz (im Format: picture=IPCAM:<Name>) um die letzte Aufnahme zu senden (Bsp. picture=IPCAM:IpKamera_Einganstuer). Es werden die Dateiformate JPG, PNG und GIF unterstüzt.
        picture2  - Kurzform: p2 - Typ: Text - Gleiche Syntax wie die Option "picture".
        picture3  - Kurzform: p3 - Typ: Text - Gleiche Syntax wie die Option "picture".

        Beispiele:

          set PushsaferAccount message "Dies ist eine Nachricht mit Überschrift." title="Sehr Wichtig!!"
          set PushsaferAccount message "Komm runter\nwir warten" title="Mittag ist fertig" device=100
          set PushsaferAccount message "Server ist nicht erreichbar" sound=25 icon=5 vibration=3
          set PushsaferAccount message "Hier sind die Urlaubsfotos" url="http://www.foo.de/fotos" urlText="Sommerurlaub"

          It is also possible to use the short-term versions of options:

          set PushsaferAccount message "Dies ist eine Nachricht mit Überschrift." t="Sehr Wichtig!!"
          set PushsaferAccount message "Komm runter\nwir warten" t="Mittag ist fertig" d=100
          set PushsaferAccount message "Server ist nicht erreichbar" s=25 i5 v=3
          set PushsaferAccount message "Hier sind die Urlaubsfotos" u="http://www.foo.de/fotos" ut="Sommerurlaub"


      Get
        N/A

      Attribute
      • do_not_notify
      • disabled
      • disabledForIntervals
      • readingFnAttributes


      Generierte Readings/Events:
      • lastSuccess - Die letzte erfolgreiche Statusmeldung vom Pushsafer Server
      • lastError - Die letzte Fehlermeldung vom Pushsafer Server
      • availableMessages-<Geräte-ID>-<Geräte-Name> - Die verbleibende Anzahl an Nachrichten die zu diesem Gerät noch gesendet werden können

    QRCode

      Mit hilfe dieses Moduls, kann auf einfache Weise eine URL generiert werden, mit der vom Dienstleister TEC-IT ein QRCode abgerufen werden kann.
      Ein Device dieses Moduls kann außerdem den QRCode auch selbst direkt in FHEMWEB darstellen und auch anderen Devices (bspw. weblink) als HTML zur Verfügung stellen.

      HINWEIS: Es ist ohne schriftliche Genehmigung des Dienstaanbieters nur erlaubt, maximal 30 QRCode-Abrufe / Minute durchzuführen.

      Siehe dazu auch die Nutzungsbedingungen von TEC-IT: http://qrcode.tec-it.com/de#TOS

      Define
        define <name> QRCode


      Set
        set <name> update
        Führt eine aktualisierung der QRCode-Url durch.

      Attributes

        QRCode-URL-relevante Attribute

        Die folgenden Attribute sind für die Erzeugung der Abruf-URL relevant und haben somit
        direkten Einfluß auf die Erzeugung des QRCode-Images.

        Für diese Attribute wird bei Änderung, standardmäßig ein automatisches Udate der QRCode-URL
        durchgeführt. Dies kann durch setzen des Attirbutes qrNoAutoUpdate (s.w.u.) deaktiviert werden.

      • qrData
        Dieses Attribut legt die Daten fest, die im QRCode kodiert werden sollen.
        Ist dieses Attribut nicht gesetzt, wird beim update eine entsprechende Fehlermeldung erzeugt.

      • qrSize
        Dieses Attribut legt die Größe fest, in der das QRCode-Image erstellt werden soll.
        Mögliche Ausprägungen sind small, medium (default), large.

      • qrResolutionDPI
        Dieses Attribut legt die Auflösung fest, in der das QRCode-Image erstellt werden soll.
        Mögliche Werte liegen zwischen 96 und 600 (Default ist 300dpi)

      • qrColor
        Dieses Attribut legt die Vordergrundfarbe fest, in der das QRCode-Image erstellt werden soll.
        Der Wert ist ein RGB-Farbwert in Hexadezimaler schreibweise (Bspw. FF0000 für rot) Default ist 000000 (schwarz)

      • qrBackColor
        Dieses Attribut legt die Hintergrundfarbe fest, in der das QRCode-Image erstellt werden soll.
        Der Wert ist ein RGB-Farbwert in Hexadezimaler schreibweise (Bspw. 0000FF für blau) Default ist FFFFFF (weiß).

      • qrTransparent
        Dieses Attribut legt fest, ob der Hintergrund transparent sein soll.
        Mögliche Werte sind True für transparenten Hintergrund und False für nicht-transparenten Hintergrund (default)

      • qrQuietZone
        Über diesen Wert kann eine Ruhe-Zone, also ein Rand um den eigentlichen QRCode festgelegt werden.
        Dies ermöglicht ggf. ein erleichtertes Erfassen des QRCodes beim Scannen.
        Mögliche Werte sind positive numerische Werte. Default ist 0, wenn das Attribut nicht gesetzt ist.

      • qrQuietUnit
        Über diesen Wert kann die Maßeinheit für das Festlegen einer Ruhe-Zone eingestellt werden.
        Mögliche Ausptägungen sind mm (default), in (=inch), mil (=mils), mod (=Module) oder px (=Pixel).

      • qrCodepage
        Über diesen Wert kann die Zeichentabelle für die QRCode-Erzeugung festgelegt werden.
        Mögliche Werte sind UTF8 (default), Cyrillic oder Ansi

      • qrErrorCorrection
        Über diesen Wert kann Fehlerkorrektur für die QRCode-Erzeugung festgelegt werden.
        Mögliche Werte sind L (default), M,Q oder H

      • darstellungsrelevante Attribute

        Die folgenden Attribute haben nur Einfluß auf das Verhalten und die Darstellung in FHEMWEB
        in der Deatailansicht des QRCode-Devices, bzw. beim Abruf der HTML-Daten mittels QRCode_getHtml (s.u.)

        Im Fehlerfall wird weder der QRCode, noch qrDisplayText dargestellt, sondern eine entsprechend
        Fehlermeldung stattdessen eingeblendet.

      • qrDisplayWidth
        Breite des Images bei der Darstellung in FHEMWEB in der Detailübersicht
        Default ist 200

      • qrDisplayHeight
        Höhe des Images bei der Darstellung in FHEMWEB in der Detailübersicht
        Default ist 200

      • qrDisplayData
        Wenn dieses Attribut gesetzt ist, wird unterhalb des QRCodes der Datenteil als einfacher
        Text dargestellt.

      • qrDisplaNoImage
        Wenn dieses Attribut gesetzt ist, der QRCode nicht in der Detailansicht dargestellt.

      • qrDisplaText
        Hier kann ein beliebiger Text eingetragen werden, der unterhalb des QRCodes eingeblendet werden soll.

      • qrDisplaNoText
        Ist dieses Attribut gesetzt, so wird der, im Attribut qrDisplayText eingetragene Text nicht eingeblendet, auch ohne das Attribut qrDisplayText zu löschen.

      • qrNoAutoUpdate
        Ist dieses Attribut gesetzt, so wird bei Änderung eines für die QRCode-Erzeugung relevanten
        Attributs kein automatisches Update der QRCode-URL durchgeführt.

      • readingFnAttributes


      Erzeugte Readings


      • data
        Dieses Reading enthält die vom QRCode zu kodierenden Daten.
        Das ist im Normalfall der Inhalt aus dem Attribut qrData.
        Im Fehlerfall steht hier stattdessen der entsprechende Fehlertext.

      • qrcode_url
        Dies ist die durch set update erzeugte URL, die für den Abruf des QRCode-Image
        verwendet wird.

      • state
        Status des QRCode-Device.
        Das ist entweder defined, oder der Zeitpunkt des letzten set update, bzw. auto-update



      Enthaltene Funktionen

      Es gibt im Modul eine Funktion, die auch für andere Anwendungsfälle einsetzbar ist, wie bspw. in einem weblink


      • QRCode_getHtml($;$$)

        Die Funktion gibt den HTML-Code zurück, wie er auch für die Darstellung im QRCode-Device in der
        Detail-Ansicht verwendet wird.

        Parameter:

        • QRCodeDevice
          Hier ist der Name des QRCode-Devices anzugeben, dessen HTML-Code abgerufen werden soll.
        • noImage (Optional)
          Entspricht dem Attribut qrDisplayNoImage
          Wenn dieser Parameter angezeigt wird, wird also keine Referenz auf QRCode-Image im HTML-Code
          erzeugt.
        • noText (Optional)
          Entspricht dem Attribut qrDisplayNoText
          Wenn dieser Parameter angezeigt wird, wird also Benutzerdefinierter Text unterhalb des QRCode
          im HTML-Code erzeugt.


        Beispiel:

        QRCode_getHtml('MyQRCode',1,0)

        Damit wird der HTML-Code für das (QRCode-)Device MyQRCode abgerufen, das nur das Image enthält,
        aber nicht den Benutzerdefinierten text.

    RESIDENTS

      Define
        define <rgr_ResidentsName> RESIDENTS

        Stellt ein spezielles virtuelles Device bereit, um eine Gruppe von Personen zu repräsentieren, die zusammen wohnen.
        Es kombiniert dabei logisch die individuellen Status von ROOMMATE und GUEST Devices und erlaubt den Status für alle Mitglieder zeitgleich zu ändern. Basierend auf dem aktuellen Status und anderen Readings können andere Aktionen innerhalb von FHEM angestoßen werden.

        Beispiele:
          # Einzeln
          define rgr_Residents RESIDENTS


      Set
        set <rgr_ResidentsName> <command> [<parameter>]

        Momentan sind die folgenden Kommandos definiert.
        • addGuest   -   erstellt ein neues GUEST Device und fügt es der aktuellen RESIDENTS Gruppe hinzu. Einfach den Platzhalternamen eingeben und das wars.
        • addRoommate   -   erstellt ein neues ROOMMATE Device und fügt es der aktuellen RESIDENTS Gruppe hinzu. Einfach den Vornamen eingeben und das wars.
        • removeGuest   -   zeigt alle Mitglieder vom Typ GUEST an und ermöglicht ein einfaches löschen des dazugehörigen Dummy Devices.
        • removeRoommate   -   zeigt alle Mitglieder vom Typ ROOMMATE an und ermöglicht ein einfaches löschen des dazugehörigen Dummy Devices.
        • state   home,gotosleep,asleep,awoken,absent,gone   wechselt den Status für alle Gruppenmitglieder gleichzeitig; siehe Attribut rgr_states, um die angezeigte Liste in FHEMWEB abzuändern
        • create   wakeuptimer   fügt diverse Vorkonfigurationen auf Basis von RESIDENTS Toolkit hinzu. Siehe separate Sektion.
          Hinweis: Sofern der Zugriff auf administrative set-Kommandos (-> addGuest, addRoommate, removeGuest, create) eingeschränkt werden soll, kann in einer FHEMWEB Instanz das Attribut allowedCommands ähnlich wie 'set,set-user' erweitert werden. Die Zeichenfolge 'set-user' stellt dabei sicher, dass beim Zugriff auf FHEM über diese FHEMWEB Instanz nur nicht-administrative set-Kommandos ausgeführt werden können.


        Mögliche Status und ihre Bedeutung

          Dieses Modul unterscheidet 7 verschiedene Status:

          • home - Bewohner sind zu Hause und mindestens einer schläft nicht
          • gotosleep - alle anwesenden Bewohner sind auf dem Weg ins Bett (wenn sie nicht schon schlafen)
          • asleep - alle anwesenden Bewohner schlafen
          • awoken - mindestens einer der anwesenden Bewohner ist gerade aufgewacht
          • absent - keiner der Bewohner ist momentan zu Hause; mindestens einer ist aber in Kürze zurück
          • gone - alle Bewohner sind für längere Zeit verreist
          • none - kein Mitglied aktiv


          Hinweis: Der Status 'none' kann nicht explizit gesetzt werden. Das setzen von 'gone' wird bei Mitgliedern vom Typ GUEST als 'none' behandelt.


      Attribute
        • rgr_showAllStates - die Status 'asleep' und 'awoken' sind normalerweise nicht immer sichtbar, um einen einfachen Zubettgeh-Prozess über das devStateIcon Attribut zu ermöglichen; Standard ist 0
        • rgr_states - Liste aller in FHEMWEB angezeigter Status; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Status führen zu Fehlern
        • rgr_wakeupDevice - Referenz zu versklavten DUMMY Geräten, welche als Wecker benutzt werden (Teil von RESIDENTS Toolkit's wakeuptimer)



      Generierte Readings/Events:
        • lastActivity - der letzte Status Wechsel eines Gruppenmitglieds
        • lastActivityBy - der Name des Gruppenmitglieds, dessen Status zuletzt geändert wurde
        • lastArrival - Zeitstempel der letzten Ankunft zu Hause
        • lastAwake - Zeitstempel des Endes des letzten Schlafzyklus
        • lastDeparture - Zeitstempel des letzten Verlassens des Zuhauses
        • lastDurAbsence - Dauer der letzten Abwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
        • lastDurAbsence_cr - Dauer der letzten Abwesenheit in Computer lesbarem Format (Minuten)
        • lastDurPresence - Dauer der letzten Anwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
        • lastDurPresence_cr - Dauer der letzten Anwesenheit in Computer lesbarem Format (Minuten)
        • lastDurSleep - Dauer des letzten Schlafzyklus in normal lesbarem Format (Stunden:Minuten:Sekunden)
        • lastDurSleep_cr - Dauer des letzten Schlafzyklus in Computer lesbarem Format (Minuten)
        • lastSleep - Zeitstempel des Beginns des letzten Schlafzyklus
        • lastState - der vorherige Status
        • lastWakeup - Zeit der letzten Wake-up Timer Ausführing
        • lastWakeupDev - Device Name des zuletzt verwendeten Wake-up Timers
        • nextWakeup - Zeit der nächsten Wake-up Timer Ausführung
        • nextWakeupDev - Device Name des als nächstes ausgefährten Wake-up Timer
        • presence - gibt den zu Hause Status in Abhängigkeit des Readings 'state' wieder (kann 'present' oder 'absent' sein)
        • residentsAbsent - Anzahl der Bewohner mit Status 'absent'
        • residentsAbsentDevs - Gerätename der Bewohner mit Status 'absent'
        • residentsAbsentNames - Gerätealias der Bewohner mit Status 'absent'
        • residentsAsleep - Anzahl der Bewohner mit Status 'asleep'
        • residentsAsleepDevs - Gerätename der Bewohner mit Status 'asleep'
        • residentsAsleepNames - Gerätealias der Bewohner mit Status 'asleep'
        • residentsAwoken - Anzahl der Bewohner mit Status 'awoken'
        • residentsAwokenDevs - Gerätename der Bewohner mit Status 'awoken'
        • residentsAwokenNames - Gerätealias der Bewohner mit Status 'awoken'
        • residentsGone - Anzahl der Bewohner mit Status 'gone'
        • residentsGoneDevs - Gerätename der Bewohner mit Status 'gone'
        • residentsGoneNames - Gerätealias der Bewohner mit Status 'gone'
        • residentsGotosleep - Anzahl der Bewohner mit Status 'gotosleep'
        • residentsGotosleepDevs - Gerätename der Bewohner mit Status 'gotosleep'
        • residentsGotosleepNames - Gerätealias der Bewohner mit Status 'gotosleep'
        • residentsHome - Anzahl der Bewohner mit Status 'home'
        • residentsHomeDevs - Gerätename der Bewohner mit Status 'home'
        • residentsHomeNames - Gerätealias der Bewohner mit Status 'home'
        • residentsTotal - Summe aller aktiven Bewohner unabhängig von ihrem aktuellen Status
        • residentsTotalAbsent - Summe aller aktiven Bewohner, die unterwegs sind
        • residentsTotalAbsentDevs - Gerätename aller aktiven Bewohner, die unterwegs sind
        • residentsTotalAbsentNames - Gerätealias aller aktiven Bewohner, die unterwegs sind
        • residentsTotalGuests - Anzahl der aktiven Gäste, welche momentan du den Bewohnern dazugezählt werden
        • residentsTotalGuestsAbsent - Anzahl der aktiven Gäste, die momentan unterwegs sind
        • residentsTotalGuestsAbsentDevs - Gerätename der aktiven Gäste, die momentan unterwegs sind
        • residentsTotalGuestsAbsentNames - Gerätealias der aktiven Gäste, die momentan unterwegs sind
        • residentsTotalGuestsPresent - Anzahl der aktiven Gäste, die momentan zu Hause sind
        • residentsTotalGuestsPresentDevs - Gerätename der aktiven Gäste, die momentan zu Hause sind
        • residentsTotalGuestsPresentNames - Gerätealias der aktiven Gäste, die momentan zu Hause sind
        • residentsTotalRoommates - Anzahl der Bewohner, die als permanente Bewohner behandelt werden
        • residentsTotalRoommatesAbsent - Anzahl der Besitzer, die momentan unterwegs sind
        • residentsTotalRoommatesAbsentDevs - Gerätename der Besitzer, die momentan unterwegs sind
        • residentsTotalRoommatesAbsentNames - Gerätealias der Besitzer, die momentan unterwegs sind
        • residentsTotalRoommatesPresent - Anzahl der Besitzer, die momentan zu Hause sind
        • residentsTotalRoommatesPresentDevs - Gerätename der Besitzer, die momentan zu Hause sind
        • residentsTotalRoommatesPresentNames - Gerätealias der Besitzer, die momentan zu Hause sind
        • residentsTotalPresent - Summe aller aktiven Bewohner, die momentan zu Hause sind
        • residentsTotalPresentDevs - Gerätename aller aktiven Bewohner, die momentan zu Hause sind
        • residentsTotalPresentNames - Gerätealias aller aktiven Bewohner, die momentan zu Hause sind
        • residentsTotalWakeup - Summe aller Bewohner, bei denen aktuell ein Weckprogramm ausgeführt wird
        • residentsTotalWakeupDevs - Gerätename aller Bewohner, bei denen aktuell ein Weckprogramm ausgeführt wird
        • residentsTotalWakeupNames - Gerätealias aller Bewohner, bei denen aktuell ein Weckprogramm ausgeführt wird
        • residentsTotalWayhome - Summe aller aktiven Bewohner, die momentan auf dem Weg zurück nach Hause sind
        • residentsTotalWayhomeDevs - Gerätename aller aktiven Bewohner, die momentan auf dem Weg zurück nach Hause sind
        • residentsTotalWayhomeNames - Gerätealias aller aktiven Bewohner, die momentan auf dem Weg zurück nach Hause sind
        • residentsTotalWayhomeDelayed - Summe aller Bewohner, die momentan mit Verspätung auf dem Weg zurück nach Hause sind
        • residentsTotalWayhomeDelayedDevs - Gerätename aller Bewohner, die momentan verspätet auf dem Weg zurück nach Hause sind
        • residentsTotalWayhomeDelayedNames - Gerätealias aller Bewohner, die momentan verspätet auf dem Weg zurück nach Hause sind
        • state - gibt den aktuellen Status wieder
        • wakeup - hat den Wert '1' während ein Weckprogramm dieser Bewohner-Gruppe ausgeführt wird


      RESIDENTS Toolkit
          Mit dem set-Kommando create können zur Vereinfachung vorkonfigurierte Konfigurationen zu RESIDENTS, ROOMMATE oder GUEST Geräten hinzugefügt werden.
          Die folgenden Kommandos sind momentan verfügbar:

        • wakeuptimer   -   fügt ein Dummy Gerät mit erweiterten Funktionen als Wecker hinzu, um darauf Weck-Automationen aufzubauen.
            Ein notify Gerät wird als Makro erstellt, um die eigentliche Automation auszuführen. Das Makro wird durch ein normales at-Gerät ausgelöst und kann ebenfalls angepasst werden. Die Hauptfunktion wird dabei trotzdem von einer speziellen RESIDENTS Toolkit funktion gehandhabt.
            Die Zeit aktiver Wecker kann mittels + oder - relativ erhöht bzw. verringert werden. Die Angabe als +HH:MM ist auch möglich.

            Die Weckfunktion kann wie folgt über Attribute beinflusst werden:
          • wakeupAtdevice - Backlink zum at Gerät (notwendig)
          • wakeupDays - Makro nur an bestimmten Tagen auslösen. Mon=1,Di=2,Mi=3,Do=4,Fr=5,Sa=6,So=0 (optional)
          • wakeupDefaultTime - Stellt die Weckzeit nach dem auslösen zurück auf diesen Standardwert (optional)
          • wakeupEnforced - Forciertes wecken (optional; 0=nein, 1=ja, 2=wenn Weckzeit ungleich wakeupDefaultTime)
          • wakeupHolidays - Makro u.U. an Feiertagen oder Nicht-Feiertagen ausführen (optional; andHoliday=an Feiertagen ggf. zusammen mit wakeupDays, orHoliday=an Feiertagen unabhängig von wakeupDays, andNoHoliday=an Nicht-Feiertagen ggf. zusammen mit wakeupDays, orNoHoliday=an Nicht-Feiertagen unabhängig von wakeupDays)
          • wakeupMacro - Name des notify Makro Gerätes (notwendig)
          • wakeupOffset - Wert in Minuten, die das Makro früher ausgelöst werden soll, z.B. bei komplexen Weckprogrammen über einen Zeitraum von 30 Minuten (Standard ist 0)
          • wakeupResetSwitcher - das DUMMY Device, welches zum schnellen ein/aus schalten der Resetfunktion verwendet wird (optional, Device wird automatisch angelegt)
          • wakeupResetdays - sofern wakeupDefaultTime gesetzt ist, kann der Reset hier auf betimmte Tage begrenzt werden. Mon=1,Di=2,Mi=3,Do=4,Fr=5,Sa=6,So=0 (optional)
          • wakeupUserdevice - Backlink zum RESIDENTS, ROOMMATE oder GUEST Gerät, um dessen Status zu prüfen (notwendig)
          • wakeupWaitPeriod - Schwelle der Wartezeit in Minuten bis das Weckprogramm erneut ausgeführt werden kann, z.B. wenn manuell eine frühere Weckzeit gesetzt wurde als normal während wakeupDefaultTime verwendet wird. Greift nicht, wenn die Weckzeit während dieser Zeit geändert wurde; Standard ist 360 Minuten / 6h (optional)

    RFXCOM

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

    RFXMETER

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

    RFXX10REC

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

    ROOMMATE

      Define
        define <rr_FirstName> ROOMMATE [<Device Name(n) der Bewohnergruppe(n)>]

        Stellt ein spezielles virtuelles Device bereit, welches einen Mitbewohner repräsentiert.
        Basierend auf dem aktuellen Status und anderen Readings können andere Aktionen innerhalb von FHEM angestoßen werden.

        Wird vom übergeordneten Modul RESIDENTS verwendet, kann aber auch einzeln benutzt werden.

        Bei Mitgliedschaft mehrerer Bewohnergruppen werden diese durch Komma getrennt angegeben (siehe Beispiel unten).

        Beispiele:
          # Einzeln
          define rr_Manfred ROOMMATE

          # Typisches Gruppenmitglied
          define rr_Manfred ROOMMATE rgr_Residents # um Mitglied der Gruppe rgr_Residents zu sein

          # Mitglied in mehreren Gruppen
          define rr_Manfred ROOMMATE rgr_Residents,rgr_Parents # um Mitglied der Gruppen rgr_Residents und rgr_Parents zu sein

          # Komplexe Familien Struktur
          define rr_Manfred ROOMMATE rgr_Residents,rgr_Parents # Elternteil
          define rr_Lisa ROOMMATE rgr_Residents,rgr_Parents # Elternteil
          define rr_Rick ROOMMATE rgr_Residents,rgr_Children # Kind1
          define rr_Alex ROOMMATE rgr_Residents,rgr_Children # Kind2

        Bitte beachten, dass das RESIDENTS Gruppen Device zunächst angelegt werden muss, bevor ein ROOMMATE Objekt dort Mitglied werden kann.



      Set
        set <rr_FirstName> <command> [<parameter>]

        Momentan sind die folgenden Kommandos definiert.
        • location   -   setzt das Reading 'location'; siehe auch Attribut rr_locations, um die in FHEMWEB angezeigte Liste anzupassen
        • mood   -   setzt das Reading 'mood'; siehe auch Attribut rr_moods, um die in FHEMWEB angezeigte Liste anzupassen
        • state   home,gotosleep,asleep,awoken,absent,gone   wechselt den Status; siehe auch Attribut rr_states, um die in FHEMWEB angezeigte Liste anzupassen
        • create
        • locationMap   fügt ein vorkonfiguriertes weblink Device hinzu, welches eine Google Map anzeigt, sofern die Readings locationLat+locationLong vorhanden sind.
        • wakeuptimer   fügt diverse Vorkonfigurationen auf Basis von RESIDENTS Toolkit hinzu. Siehe separate Sektion in der RESIDENTS Modul Kommandoreferenz.
          Hinweis: Sofern der Zugriff auf administrative set-Kommandos (-> create) eingeschränkt werden soll, kann in einer FHEMWEB Instanz das Attribut allowedCommands ähnlich wie 'set,set-user' erweitert werden. Die Zeichenfolge 'set-user' stellt dabei sicher, dass beim Zugriff auf FHEM über diese FHEMWEB Instanz nur nicht-administrative set-Kommandos ausgeführt werden können.


        Mögliche Status und ihre Bedeutung

          Dieses Modul unterscheidet 6 verschiedene Status:

          • home - Mitbewohner ist zu Hause und wach
          • gotosleep - Mitbewohner ist auf dem Weg ins Bett
          • asleep - Mitbewohner schläft
          • awoken - Mitbewohner ist gerade aufgewacht
          • absent - Mitbewohner ist momentan nicht zu Hause, wird aber bald zurück sein
          • gone - Mitbewohner ist für längere Zeit verreist


        Zusammenhang zwischen Anwesenheit/Presence und Aufenthaltsort/Location

          Unter bestimmten Umständen führt der Wechsel des Status auch zu einer Änderung des Readings 'location'.

          Wannimmer die Anwesenheit (bzw. das Reading 'presence') von 'absent' auf 'present' wechselt, wird 'location' auf 'home' gesetzt. Sofern das Attribut rr_locationHome gesetzt ist, wird die erste Lokation daraus anstelle von 'home' verwendet.

          Wannimmer die Anwesenheit (bzw. das Reading 'presence') von 'present' auf 'absent' wechselt, wird 'location' auf 'underway' gesetzt. Sofern das Attribut rr_locationUnderway gesetzt ist, wird die erste Lokation daraus anstelle von 'underway' verwendet.


        Auto-Status 'gone'

          Immer wenn ein Mitbewohner auf 'absent' gesetzt wird, wird ein Zähler gestartet, der nach einer bestimmten Zeit den Status automatisch auf 'gone' setzt.
          Der Standard ist nach 36 Stunden.

          Dieses Verhalten kann über das Attribut rr_autoGoneAfter angepasst werden.


        Anwesenheit mit anderen ROOMMATE oder GUEST Devices synchronisieren

          Wenn Sie immer zusammen mit anderen Mitbewohnern oder Gästen das Haus verlassen oder erreichen, können Sie ihren Status ganz einfach auf andere Mitbewohner übertragen.
          Durch das Setzen des Attributs rr_PassPresenceTo folgen die dort aufgeführten Mitbewohner ihren eigenen Statusänderungen nach 'home', 'absent' oder 'gone'.

          Bitte beachten, dass Mitbewohner mit dem aktuellen Status 'gone' oder 'none' (im Falle von Gästen) nicht beachtet werden.


        Zusammenhang zwischen Aufenthaltsort/Location und Anwesenheit/Presence

          Unter bestimmten Umständen hat der Wechsel des Readings 'location' auch einen Einfluss auf den tatsächlichen Status.

          Immer wenn eine Lokation mit dem Namen 'home' gesetzt wird, wird auch der Status auf 'home' gesetzt, sofern die Anwesenheit bis dahin noch auf 'absent' stand. Sofern das Attribut rr_locationHome gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'home' aus.

          Immer wenn eine Lokation mit dem Namen 'underway' gesetzt wird, wird auch der Status auf 'absent' gesetzt, sofern die Anwesenheit bis dahin noch auf 'present' stand. Sofern das Attribut rr_locationUnderway gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'underway' aus. Diese Lokationen werden auch nicht in das Reading 'lastLocation' übertragen.

          Immer wenn eine Lokation mit dem Namen 'wayhome' gesetzt wird, wird das Reading 'wayhome' auf '1' gesetzt, sofern die Anwesenheit zu diesem Zeitpunkt 'absent' ist. Sofern das Attribut rr_locationWayhome gesetzt wurde, so führt das VERLASSEN einer dort aufgeführten Lokation ebenfalls dazu, dass das Reading 'wayhome' auf '1' gesetzt wird. Es gibt also 2 Möglichkeiten den Nach-Hause-Weg-Indikator zu beeinflussen (implizit und explizit).
          Die Ankunft zu Hause setzt den Wert von 'wayhome' zurück auf '0'.

          Wenn Sie auch das GEOFANCY Modul verwenden, können Sie das Reading 'location' ganz einfach über GEOFANCY Ereignisse aktualisieren lassen. Definieren Sie dazu einen NOTIFY-Trigger wie diesen:

          define n_rr_Manfred.location notify geofancy:currLoc_Manfred.* set rr_Manfred:FILTER=location!=$EVTPART1 location $EVTPART1

          Durch das Anlegen von Geofencing-Zonen mit den Namen 'home' und 'wayhome' in der iOS App werden zukünftig automatisch alle Statusänderungen wie oben beschrieben durchgeführt.


      Attribute
        • rr_autoGoneAfter - Anzahl der Stunden, nach denen sich der Status automatisch auf 'gone' ändert, wenn der aktuellen Status 'absent' ist; Standard ist 36 Stunden
        • rr_geofenceUUIDs - Mit Komma getrennte Liste von Geräte UUIDs, die ihren Standort über GEOFANCY aktualisieren. Vermeidet zusätzliche notify/DOIF/watchdog Geräte und kann als Ersatz für das GEOFANCY attribute devAlias dienen. (hier ehr als eine UUID/Device zu hinterlegen ist eher keine gute Idee da die Lokation dann womöglich anfängt zu springen)
        • rr_locationHome - hiermit übereinstimmende Lokationen werden als zu Hause gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'home'
        • rr_locationUnderway - hiermit übereinstimmende Lokationen werden als unterwegs gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'underway'
        • rr_locationWayhome - das Verlassen einer Lokation, die hier aufgeführt ist, lässt das Reading 'wayhome' auf '1' setzen; mehrere Einträge durch Leerzeichen trennen; Standard ist "wayhome"
        • rr_locations - Liste der in FHEMWEB anzuzeigenden Lokationsauswahlliste in FHEMWEB; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
        • rr_moodDefault - die Stimmung, die nach Ankunft zu Hause oder nach dem Statuswechsel von 'awoken' auf 'home' gesetzt werden soll
        • rr_moodSleepy - die Stimmung, die nach Statuswechsel zu 'gotosleep' oder 'awoken' gesetzt werden soll
        • rr_moods - Liste von Stimmungen, wie sie in FHEMWEB angezeigt werden sollen; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
        • rr_noDuration - deaktiviert die Berechnung der Zeitspannen (siehe Readings durTimer*)
        • rr_passPresenceTo - synchronisiere die Anwesenheit mit anderen ROOMMATE oder GUEST Devices; mehrere Devices durch Leerzeichen trennen
        • rr_presenceDevices - übernehmen des presence Status von einem anderen FHEM Device. Bei mehreren Devices diese mit Komma trennen, um ein Update des ROOMMATE Devices auszulösen, sobald ALLE Devices entweder absent oder present sind.
        • rr_realname - wo immer ROOMMATE den richtigen Namen verwenden möchte nutzt es den Wert des Attributs alias oder group; Standard ist group
        • rr_showAllStates - die Status 'asleep' und 'awoken' sind normalerweise nicht immer sichtbar, um einen einfachen Zubettgeh-Prozess über das devStateIcon Attribut zu ermöglichen; Standard ist 0
        • rr_states - Liste aller in FHEMWEB angezeigter Status; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Status führen zu Fehlern
        • rr_wakeupDevice - Referenz zu versklavten DUMMY Geräten, welche als Wecker benutzt werden (Teil von RESIDENTS Toolkit's wakeuptimer)



      Generierte Readings/Events:
        • durTimerAbsence - Timer, der die Dauer der Abwesenheit in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
        • durTimerAbsence_cr - Timer, der die Dauer der Abwesenheit in Computer lesbarem Format anzeigt (Minuten)
        • durTimerPresence - Timer, der die Dauer der Anwesenheit in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
        • durTimerPresence_cr - Timer, der die Dauer der Anwesenheit in Computer lesbarem Format anzeigt (Minuten)
        • durTimerSleep - Timer, der die Schlafdauer in normal lesbarem Format anzeigt (Stunden:Minuten:Sekunden)
        • durTimerSleep_cr - Timer, der die Schlafdauer in Computer lesbarem Format anzeigt (Minuten)
        • lastArrival - Zeitstempel der letzten Ankunft zu Hause
        • lastAwake - Zeitstempel des Endes des letzten Schlafzyklus
        • lastDeparture - Zeitstempel des letzten Verlassens des Zuhauses
        • lastDurAbsence - Dauer der letzten Abwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
        • lastDurAbsence_cr - Dauer der letzten Abwesenheit in Computer lesbarem Format (Minuten)
        • lastDurPresence - Dauer der letzten Anwesenheit in normal lesbarem Format (Stunden:Minuten:Sekunden)
        • lastDurPresence_cr - Dauer der letzten Anwesenheit in Computer lesbarem Format (Minuten)
        • lastDurSleep - Dauer des letzten Schlafzyklus in normal lesbarem Format (Stunden:Minuten:Sekunden)
        • lastDurSleep_cr - Dauer des letzten Schlafzyklus in Computer lesbarem Format (Minuten)
        • lastLocation - der vorherige Aufenthaltsort
        • lastMood - die vorherige Stimmung
        • lastSleep - Zeitstempel des Beginns des letzten Schlafzyklus
        • lastState - der vorherige Status
        • lastWakeup - Zeit der letzten Wake-up Timer Ausführing
        • lastWakeupDev - Device Name des zuletzt verwendeten Wake-up Timers
        • location - der aktuelle Aufenthaltsort
        • mood - die aktuelle Stimmung
        • nextWakeup - Zeit der nächsten Wake-up Timer Ausführung
        • nextWakeupDev - Device Name des als nächstes ausgefährten Wake-up Timer
        • presence - gibt den zu Hause Status in Abhängigkeit des Readings 'state' wieder (kann 'present' oder 'absent' sein)
        • state - gibt den aktuellen Status wieder
        • wakeup - hat den Wert '1' während ein Weckprogramm dieses Bewohners ausgeführt wird
        • wayhome - abhängig vom aktullen Aufenthaltsort, kann der Wert '1' werden, wenn die Person auf dem weg zurück nach Hause ist

    RPII2C

    (en | de)
      Ermöglicht den Zugriff auf die I2C Schnittstellen des Raspberry Pi, BBB, Cubie über logische Module. Register von I2C IC's können auch direkt gelesen und geschrieben werden.

      Dieses Modul funktioniert grunsätzlich auf allen Linux Systemen, die /dev/i2c-x bereitstellen.

      Vorbereitung:
      • I2C Kernelmodule laden (chose one of the following options):
        • I2C Kernelmodule laden:
          modules Datei öffnen
            sudo nano /etc/modules

          folgendes einfügen
            i2c-dev
            i2c-bcm2708
        • Seit Kernel 3.18.x auf dem Raspberry Pi und evtl. auch auf anderen Systemen ist der "Device tree support" implementiert und standardmäßig aktiviert. Um I2C Unterstützung zu aktivieren muß
            device_tree_param=i2c0=on,i2c1=on
          zur /boot/config.txt hinzu gefügt werden. Wenn nur einer der Busse genutzt wird, kann der andere einfach aus der Zeile entfernt werden.
        • Bei Raspbian Images seit 2015 kann der I2C Bus einfach über sudo raspi-config aktiviert werden. Die Parameter werden automatisch in die /boot/config.txt eingetragen.
        • Neustart

      • Eine der folgenden drei Möglichkeiten wählen um dem FHEM User Zugriff auf /dev/i2c-* zu geben:
        • sudo apt-get install i2c-tools
          sudo adduser fhem i2c


        • Folgende Zeilen entweder in die Datei /etc/init.d/fhem vor perl fhem.pl in start, oder in die Datei /etc/rc.local eingefügen:
          sudo chown fhem /dev/i2c-*
          sudo chgrp dialout /dev/i2c-*
          sudo chmod +t /dev/i2c-*
          sudo chmod 660 /dev/i2c-*

        • Für das Raspberry Pi kann alternativ das gpio Utility der WiringPi Bibliothek benutzt werden um FHEM Schreibrechte auf die I2C Schnittstelle zu bekommen.
          WiringPi Installation ist hier beschrieben: RPI_GPIO
          Das gpio Utility wird, wenn vorhanden, automatisch verwendet
          Wichtig: um den I2C-0 am P5 Stecker des Raspberry nutzen zu können muss das Attribut swap_i2c0 verwendet werden.

      • Optional: Hardwarezugriff via IOCTL wird standardmäßig genutzt (EMPFOHLEN), wenn Device::SMBus nicht installiert ist
        Soll der Hardwarezugriff über das Perl Modul Device::SMBus erfolgen sind diese Schritte notwendig:
          sudo apt-get install libmoose-perl
          sudo cpan Device::SMBus

      • Nur für Raspbian Nutzer
        Um I2C-0 am P5 Stecker auf Raspberry Pi modell B mit neueren Raspbian Versionen zu nutzen, welche auch das Raspberry Pi model B+ unterstützen, muss folgende Zeile in die /boot/cmdline.txt eingefügt werden:
          bcm2708.vc_i2c_override=1


      Define
        define <name> RPII2C <I2C Bus Number>
        Die <I2C Bus Number> ist die Nummer des I2C Bus an den die I2C IC's angeschlossen werden

      Set
      • Schreibe ein Byte (oder auch mehrere nacheinander) direkt auf ein I2C device (manche I2C Module sind so einfach, das es nicht einmal mehrere Register gibt):
        set <name> writeByte <I2C Address> <value>

      • Schreibe n-bytes auf einen Registerbereich (als Folge von Einzelbefehlen), beginnend mit dem angegebenen Register:
        set <name> writeByteReg <I2C Address> <Register Address> <value> [<value> [..]]

      • Schreibe n-bytes auf ein I2C device (als Blockoperation):
        set <name> writeBlock <I2C Address> <value> [<value> [..]]

      • Schreibe n-bytes auf einen Registerbereich (als Blockoperation), beginnend mit dem angegebenen Register:
        set <name> writeBlockReg <I2C Address> <Register Address> <value> [<value> [..]]


      • Beispiele:
          Schreibe 0xAA zu Modul mit I2C Addresse 0x60
          set test1 writeByte 60 AA
          Schreibe 0xAA zu Register 0x01 des Moduls mit der I2C Adresse 0x6E
          set test1 writeByteReg 6E 01 AA
          Schreibe 0xAA zu Register 0x01 des Moduls mit der I2C Adresse 0x6E, schreibe danach 0x55 in das Register 0x02 als einzelne Befehle
          set test1 writeByteReg 6E 01 AA 55
          Schreibe 0xA4 zu Register 0x03, 0x00 zu Register 0x04 und 0xDA zu Register 0x05 des Moduls mit der I2C Adresse 0x60 zusammen als ein Blockbefehl
          set test1 writeBlockReg 60 03 A4 00 DA

      Get
      • Auslesen der Registerinhalte des I2C Moduls:
        get <name> read <I2C Address> [<Register Address> [<number of registers>]]

      • Blockweises Auslesen des I2C Moduls (ohne separate Register):
        get <name> readblock <I2C Address> [<number of registers>]

      • Blockweises Auslesen der Registerinhalte des I2C Moduls:
        get <name> readblockreg <I2C Address> <Register Address> [<number of registers>]


      • Beispiele:
          Lese Byte vom Modul mit der I2C Adresse 0x60
          get test1 read 60
          Lese den Inhalt des Registers 0x01 vom Modul mit der I2C Adresse 0x6E.
          get test1 read 6E 01 AA 55
          Lese den Inhalt des Registerbereichs 0x03 bis 0x06 vom Modul mit der I2C Adresse 0x60.
          get test1 read 60 03 4


      Attribute
      • swap_i2c0
        Umschalten von I2C-0 des Raspberry Pi Rev. B von J5 auf P5
        Dieses Attribut ist nur für das Raspberry Pi vorgesehen und benötigt das gpio utility wie unter dem Punkt Vorbereitung beschrieben.
        Standard: keiner, gültige Werte: on, off

      • useHWLib
        Ändern der Methode des Hardwarezugriffs.
        Dieses Attribut existiert nur, wenn beide Zugriffsmethoden verfügbar sind
        Standard: IOCTL, gültige Werte: IOCTL, SMBus

      • ignore
      • do_not_notify
      • showtime

    RPI_GPIO

    (en | de)
      Das Raspberry Pi ermöglicht direkten Zugriff zu einigen GPIO's über den Pfostenstecker P1 (und P5 bei V2). Die Steckerbelegung ist in den Tabellen unter Define zu finden. Dieses Modul ermöglicht es, die herausgeführten GPIO's direkt als Ein- und Ausgang zu benutzen. Die Eingänge können zyklisch abgefragt werden oder auch sofort bei Pegelwechsel gesetzt werden.
      Neben dem Raspberry Pi können auch die GPIO's von BBB, Cubie, Banana Pi und jedem Linuxsystem, das diese im Userspace zugägig macht, genutzt werden.
      Wichtig: Niemals Spannung an einen GPIO anlegen, der als Ausgang eingestellt ist! Die interne Logik der GPIO's arbeitet mit 3,3V. Ein überschreiten der 3,3V zerstört den GPIO und vielleicht auch den ganzen Prozessor!

      Vorbereitung:
      Auf GPIO Pins wird im Modul über sysfs zugegriffen. Die Dateien befinden sich unter /system/class/gpio und sind in der aktuellen Raspbian Distribution (ab Jan 2014) in der Gruppe gpio. Es funktioniert auch mit der Jessie Version. Allerdings NICHT wenn ein Kernelupgrade durchgeführt wird
      Nach dem ausführen folgender Befehle sind die GPIO's von PRI_GPIO aus nutzbar:
        sudo adduser fhem gpio
        sudo reboot

      Wenn das Attribut pud_resistor verwendet werden soll und für ältere Raspbian Distributionen, muss zusätzlich das gpio Tool der WiringPi Bibliothek installiert werden, um den internen Pullup/down Widerstand zu aktivieren, bzw. GPIO's zu exportieren und die korrekten Nutzerrechte zu setzen (für den zweiten Fall funktioniert das active_low Attribut nicht).
      Installation WiringPi:
        sudo apt-get update
        sudo apt-get upgrade
        sudo apt-get install git-core
        git clone git://git.drogon.net/wiringPi
        cd wiringPi ./build

      Für Linux Systeme bei denen der Zugriff auf /system/class/gpio nur mit root Rechten erfolgen kann, müssen die GPIO's vor FHEM start exportiert und von den Rechten her angepasst werden.
      Dazu in die /etc/rc.local folgendes einfügen (Beispiel für GPIO22 und 23):
        echo 22 > /sys/class/gpio/export
        echo 23 > /sys/class/gpio/export
        chown -R fhem:root /sys/devices/virtual/gpio/* (oder chown -R fhem:gpio /sys/devices/platform/gpio-sunxi/gpio/* für Banana Pi)
        chown -R fhem:root /sys/class/gpio/*

      Define
        define <name> RPI_GPIO <GPIO number>[ <GPIO-Basedir>[ <WiringPi-gpio-utility>]]

        Alle verfügbaren GPIO number sind z.B. hier zu finden

        Beispiele:
              define Pin12 RPI_GPIO 18
              attr Pin12 poll_interval 5
        	  define Pin12 RPI_GPIO 18 /sys/class/gpio /usr/somewhere/bin/gpio
            
      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

      • active_low
        Invertieren des logischen Wertes
        Standard: off, gültige Werte: on, off

      • interrupt
        kann nur gewählt werden, wenn der GPIO als Eingang konfiguriert ist
        Aktiviert Flankenerkennung für den GPIO
        bei jedem interrupt Ereignis werden die readings Pinlevel und state aktualisiert
        Standard: none, gültige Werte: none, falling, rising, both

        Bei "both" wird ein reading Longpress angelegt, welches auf on gesetzt wird solange der Pin länger als 1s gedrückt wird
        Bei "falling" und "rising" wird ein reading Toggle angelegt, das bei jedem Interruptereignis toggelt und das Reading Counter, das bei jedem Ereignis um 1 hochzählt

      • poll_interval
        Fragt den Zustand des GPIO regelmäßig ensprechend des eingestellten Wertes in Minuten ab
        Standard: -, gültige Werte: Dezimalzahl

      • toggletostate
        Funktioniert nur bei auf falling oder rising gesetztem Attribut interrupt
        Wenn auf "yes" gestellt wird bei jedem Triggerereignis das state reading invertiert
        Standard: no, gültige Werte: yes, no

      • pud_resistor
        Interner Pullup/down Widerstand
        Funktioniert aussließlich mit installiertem gpio Tool der WiringPi Bibliothek.
        Standard: -, gültige Werte: off, up, down

      • debounce_in_ms
        Wartezeit in ms bis nach ausgelöstem Interrupt der entsprechende Pin abgefragt wird. Kann zum entprellen von mechanischen Schaltern verwendet werden
        Standard: 0, gültige Werte: Dezimalzahl

      • unexportpin
        Führe unexport über /sys/class/gpio/unexport aus wenn die Pin-Definition gelöscht wird (z.B. durch rereadcfg, delete,...)
        Standard: yes, , gültige Werte: yes, no

      • restoreOnStartup
        Wiederherstellen der Portzustände nach Neustart
        Standard: last, gültige Werte: last, on, off, no

      • longpressinterval
        Funktioniert nur bei auf both gesetztem Attribut interrupt
        Zeit in Sekunden, die ein GPIO auf high verweilen muss, bevor das Reading longpress auf on gesetzt wird
        Standard: 1, gültige Werte: 0.1 - 10

      • 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

    Robonect

      Robonect ist ein Nachrüstmodul für automower, die auf der Husky-G3-Steuerung basieren. Es wurde von Fabian H. entwickelt und kann unter www.robonect.de bezogen werden. Dieses Modul gibt Euch Zugriff auf die nötigsten Kommandos. Dieses Modul benötigt libjson-perl. Bitte NICHT VERGESSEN zu installieren!

      Define

        define <name> Robonect <ip-adress> [<user> <password>]

        Mit gesetztem Winterschlaf wird die Kommunikation zum Mäher unterbunden.

        Die Zugangsinformationen können im Klartext bei der Definition angegeben werden. Wahlweise auch per Attribut. Standardmäßig wird der Status vom RObonect alle 90s aktualisiert.

        Beispiel:

              define myMower Robonect 192.168.13.5 test tmySecret
              

      Set

        Versetzt den Mäher in den timerbasierten Automatikmodus: set <name> auto Schickt den Mäher nach hause. Ein erneutes Starten per Timer wird verhindert (persistent): set <name> home Schickt den Mäher nach Hause. Beim nächsten Timerstart fährt der Mäher wieder regulär: set <name> feierabend Startet den Mäher (wird nur nach einem manuellen Stop benötigt): set <name> start Stoppt den Mäher: set <name> stop

      Get

        Holt den aktuellen Status des Mähers. Wird normalerweise nicht benötigt, da automatisch gepolled wird.

      Attributes


        Common attributes:
        DbLogInclude
        DbLogExclude
        IODev
        alias
        comment
        devStateIcon
        devStateStyle
        do_not_notify
        readingFnAttributes
        event-aggregator
        event-min-interval
        event-on-change-reading
        event-on-update-reading
        eventMap
        group
        icon
        room
        showtime
        sortby
        stateFormat
        userReadings
        userattr
        verbose
        webCmd
        widgetOverride

      credentials

        Hier kann ein Link auf ein credentials-file angegeben werden. Die Zugansinformationen werden dann aus der Datei geholt. Dieser Mechanismus überschreibt basicAuth.

      basicAuth

        Hier werden die Zugangsinformationen entweder im Klartext oder base-64-codiert übergeben. Base64-encoder gibts bei google.

        Example:

              define myMower 192.168.5.1
        	  attr myMower basicAuth me:mySecret
              
              define myMower 192.168.5.1
        	  attr myMower basicAuth bWU6bXlTZWNyZXQ=
              

      pollInterval

        Hier kann das polling-interval in Sekunden angegeben werden. Default sind 90s.

      timeout

        Für das holen der Daten per Wlan kann hier ein Timeout angegeben werden. Default sind 4s.

    S7

      This module connects a SIEMENS PLC (Note: also SIEMENS Logo is supported). The TCP communication module is based on settimino (http://settimino.sourceforge.net) You can found a german wiki here: httl://www.fhemwiki.de/wiki/S7

      For the communication the following modules have been implemented:
      • S7 … sets up the communication channel to the PLC
      • S7_ARead … Is used for reading integer Values from the PLC
      • S7_AWrite … Is used for write integer Values to the PLC
      • S7_DRead … Is used for read bits
      • S7_DWrite … Is used for writing bits.


      Reading work flow:

      The S7 module reads periodically the configured DB areas from the PLC and stores the data in an internal buffer. Then all reading client modules are informed. Each client module extracts his data and the corresponding readings are set. Writing work flow:

      At the S7 module you need to configure the PLC writing target. Also the S7 module holds a writing buffer. Which contains a master copy of the data needs to send.
      (Note: after configuration of the writing area a copy from the PLC is read and used as initial fill-up of the writing buffer)
      Note: The S7 module will send always the whole data block to the PLC. When data on the clients modules is set then the client module updates the internal writing buffer on the S7 module and triggers the writing to the PLC.

      Define
        define <name> S7 <PLC_address> <rack> <slot> [<Interval>]

        define logo S7 10.0.0.241 2 0
        • PLC_address … IP address of the S7 PLC (For S5 see below)
        • rack … rack of the PLC
        • slot … slot of the PLC
        • Interval … Intervall how often the modul should check if a reading is required

        Note: For Siemens logo you should use a alternative (more simply configuration method):
        define logo S7 LOGO7 10.0.0.241

    Note: For Siemens S5 you must use a alternative (more simply configuration method):
    define logo S7 S5 /dev/tty1 in this case the PLC_address is the serial port number

    Attr
    The following attributes are supported:
    • MaxMessageLength

    • MaxMessageLength ... restricts the packet length if lower than the negioated PDULength. This could be used to increate the processing speed. 2 small packages may be smaler than one large package

      S7_ARead

        This module is a logical module of the physical module S7.
        This module provides analog data (signed / unsigned integer Values).
        Note: you have to configure a PLC reading at the physical module (S7) first.


        Define
        define <name> S7_ARead {inputs|outputs|flags|db} <DB> <start> {u8|s8|u16|s16|u32|s32}

        • inputs|outputs|flags|db … defines where to read.
        • DB … Number of the DB
        • start … start byte of the reading
        • {u8|s8|u16|s16|u32|s32} … defines the datatype:
          • u8 …. unsigned 8 Bit integer
          • s8 …. signed 8 Bit integer
          • u16 …. unsigned 16 Bit integer
          • s16 …. signed 16 Bit integer
          • u32 …. unsigned 32 Bit integer
          • s32 …. signed 32 Bit integer
          • float …. 4 byte float
          Note: the required memory area (start – start + datatypelength) need to be with in the configured PLC reading of the physical module.
        Attr The following parameters are used to scale every reading
        • multiplicator
        • offset
        newValue = <multiplicator> * Value + <offset>

      S7_AWrite

          This module is a logical module of the physical module S7.
          This module provides sending analog data (unsigned integer Values) to the PLC.
          Note: you have to configure a PLC writing at the physical modul (S7) first.



      Define
      define <name> S7_AWrite {inputs|outputs|flags|db} <DB> <start> {u8|s8|u16|s16|u32|s32|float}

            • db … defines where to read. Note currently only writing in to DB are supported.
            • DB … Number of the DB
            • start … start byte of the reading
            • {u8|s8|u16|s16|u32|s32} … defines the datatype:
              • u8 …. unsigned 8 Bit integer
              • s8 …. signed 8 Bit integer
              • u16 …. unsigned 16 Bit integer
              • s16 …. signed 16 Bit integer
              • u32 …. unsigned 32 Bit integer
              • s32 …. signed 32 Bit integer
              • float …. 4 byte float
            Note: the required memory area (start – start + datatypelength) need to be with in the configured PLC writing of the physical module.

      Set

      set <name> S7_AWrite <value>

          • value … an numeric value
      =end html_DE =cut

      S7_Client

          abstract interface layer S7 / S5

      S7_DRead

        This module is a logical module of the physical module S7.
        This module provides digital data (ON/OFF).
        Note: you have to configure a PLC reading at the physical modul (S7) first.


        Define
          define <name> S7_DRead {inputs|outputs|flags|db} <DB> <address>
          • inputs|outputs|flags|db … defines where to read.
          • DB … Number of the DB
          • address … address you want to read. bit number to read. Example: 10.3
          Note: the required memory area need to be with in the configured PLC reading of the physical module.

      S7_DWrite

          This module is a logical module of the physical module S7.
          This module is used to set/unset a Bit in ad DB of the PLC.
          Note: you have to configure a PLC writing at the physical modul (S7) first.




      Definedefine <name> S7_DWrite {db} <DB> <position>

            • db … defines where to read. Note currently only writing in to DB are supported.
            • DB … Number of the DB
            • address … address you want to write. bit number to read. Example: 10.6
            Note: the required memory area need to be with in the configured PLC reading of the physical module.


      Setset <name> S7_AWrite {ON|OFF|TRIGGER};

          Note: TRIGGER sets the bit for 1s to ON than it will set to OFF.

      Attr
      The following parameters are used to scale every reading

      • trigger_length ... sets the on-time of a trigger

      S7_S5Client

          low level interface to S5

      S7_S7Client

          low level interface to S7

      SCIVT

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

      SD_WS

        Das SD_WS Modul verarbeitet von einem IO Gerät (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur-Sensoren.

        Unterstützte Modelle:
        • Bresser 7009994
        • Opus XT300
        • BresserTemeo

        Neu empfangene Sensoren werden in FHEM per autocreate angelegt.

        Define
          Die empfangenen Sensoren werden automatisch angelegt.
          Die ID der angelgten Sensoren ist entweder der Kanal des Sensors, oder wenn das Attribut longid gesetzt ist, dann wird die ID aus dem Kanal und einer Reihe von Bits erzeugt, welche der Sensor beim Einschalten zufällig vergibt.

        Generierte Readings:
        • State (T: H:)
        • temperature (°C)
        • humidity: (Luftfeuchte (1-100)
        • battery: (low oder ok)
        • channel: (Der Sensor Kanal)

        Attribute
        • do_not_notify
        • ignore
        • showtime
        • readingFnAttributes
        Set
          N/A

        Set
          N/A

      SD_WS07

        Das SD_WS07 Module verarbeitet von einem IO Geraet (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur-Sensoren.

        Unterstützte Modelle:
        • Eurochon EAS800z
        • Technoline WS6750/TX70DTH
        • TFA 30320902
        • FreeTec Aussenmodul fuer Wetterstation NC-7344

        Neu empfangene Sensoren werden in FHEM per autocreate angelegt.

        Define
          Die empfangenen Sensoren werden automatisch angelegt.
          Die ID der angelgten Sensoren ist entweder der Kanal des Sensors, oder wenn das Attribut longid gesetzt ist, dann wird die ID aus dem Kanal und einer Reihe von Bits erzeugt, welche der Sensor beim Einschalten zufaellig vergibt.

        Generierte Readings:
        • State (T: H:)
        • temperature (°C)
        • humidity: (Luftfeuchte (1-100)
        • battery: (low oder ok)
        • channel: (Der Sensor Kanal)

        Attribute
        • do_not_notify
        • ignore
        • model ()
        • showtime
        • readingFnAttributes
        Set
          N/A

        Set
          N/A

      SD_WS09

        Das SD_WS09 Module verarbeitet von einem IO Gerät (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur-Sensoren.

        Perl-Modul Digest::CRC erforderlich.

        cpan install Digest::CRC oder auch
        sudo apt-get install libdigest-crc-perl


        Unterstütze Modelle:
        • WS-0101 --> Model: WH1080
        • TFA 30.3189 / WH1080 --> Model: WH1080
        • 1073 (WS1080) --> Model: WH1080
        • CTW600 --> Model: CTW600 (nicht getestet)

        Neu empfangene Sensoren werden in FHEM per autocreate angelegt.

        Define
          Die empfangenen Sensoren werden automatisch angelegt.
          Die ID der angelegten Sensoren wird nach jedem Batteriewechsel geändert, welche der Sensor beim Einschalten zufällig vergibt.
          CRC Checksumme wird zur Zeit noch nicht überprüft, deshalb werden Sensoren bei denen die Luftfeuchte < 0 oder > 100 ist, nicht angelegt.

        Generierte Readings:
        • State (T: H: Ws: Wg: Wd: R: ) temperature, humidity, windSpeed, windGuest, windDirection, Rain
        • Temperature (°C)
        • Humidity: (The humidity (1-100 if available)
        • Battery: (low or ok)
        • ID: (The ID-Number (number if)
        • windSpeed (m/s) and windDirection (N-O-S-W)
        • Rain (mm)

        Attribute
        • do_not_notify
        • ignore
        • showtime
        • readingFnAttributes
        • Model
          WH1080, CTW600

        • windKorrektur
          Korrigiert die Nord-Ausrichtung des Windrichtungsmessers, wenn dieser nicht richtig nach Norden ausgerichtet ist. -3,-2,-1,0,1,2,3

        Set
          N/A

        Set
          N/A

      SD_WS_Maverick

        Das SD_WS_Maverick Module verarbeitet von einem IO Geraet (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur-Sensoren.

        Unterstützte Modelle:
        • Maverick

        Neu empfangene Sensoren werden in FHEM per autocreate angelegt.

        Define
          Die empfangenen Sensoren werden automatisch angelegt.
          Die ID der angelegten Sensoren ist entweder der Kanal des Sensors, oder wenn das Attribut longid gesetzt ist, dann wird die ID aus dem Kanal und einer Reihe von Bits erzeugt, welche der Sensor beim Einschalten zufällig vergibt.

        Generierte Readings:
        • State (T: H:)
        • temperature (°C)
        • humidity: (Luftfeuchte (1-100)
        • battery: (low oder ok)
        • channel: (Der Sensor Kanal)

        Attribute
        • do_not_notify
        • ignore
        • model ()
        • showtime
        • readingFnAttributes
        Set
          N/A

        Set
          N/A

      SHC

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

      SHCdev

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

      SIGNALduino

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

      SIGNALduino_un

        Das SIGNALduino_un module ist ein Hilfsmodul um unbekannte Nachrichten debuggen und analysieren zu koennen. Das Modul legt keinerlei Geräte oder ähnliches an.

        Define define <name> SIGNALduino_un <code>

        Es ist moeglich ein Geraet manuell zu definieren, aber damit passiert ueberhaupt nichts. Autocreate wird auch keinerlei Geraete aus diesem Modul anlegen.
        Die einzgeste Funktion dieses Modules ist, ab Verbose 4 Logmeldungen über die Empfangene Nachricht ins Log zu schreiben. Dabei kann man sich leider nicht darauf verlassen, dass die Nachricht korrekt dekodiert wurde.
        Dieses Modul wird alle Nachrichten verarbeiten, welche von anderen Modulen nicht verarbeitet wurden. Set
          N/A

        Get
          N/A

        Attributes
        • Verbose

      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

      SMAEM


      Define
        define <name> SMAEM

        Definiert ein SMA Energy Meter (SMAEM), einen bidirektionalen Stromzähler, der häufig in Photovolatikanlagen der Firma SMA zum Einsatz kommt.

        Sie brauchen mindest ein SMAEM in Ihrem lokalen Netzwerk oder hinter einemmulticast fähigen Netz von Routern, um die Daten des SMAEM über die Multicastgruppe 239.12.255.254 auf udp/9522 zu empfangen. Die Multicastpakete werden vom SMAEM einmal pro Sekunde ausgesendet (firmware 1.02.04.R, März 2016).

        Das update interval kann über das Attribut "interval" gesetzt werden. Wenn es nicht gesetzt wird, werden updates per default alle 60 Sekunden durchgeführt. Da das SMAEM seine Daten sekündlich aktualisiert, kann das update interval auf bis zu einer Sekunde reduziert werden. Das wird nicht empfohlen, da FHEM sonst unter große Last gesetzt wird.

        Der Parameter "disableSernoInReading" ändert die Art und Weise, wie die Readings des SMAEN bezeichnet werden: ist der Parameter false oder nicht gesetzt, werden die Readings mit "SMAEM<serialnumber_>....." bezeichnet. Wird der Parameter auf true gesetzt, wird das Prefix "SMAEM<serialnumber_>....." weg gelassen. Sie können diesen Parameter auf true setzen, wenn Sie nicht mehr als ein SMAEM-Gerät in Ihrem Netzwerk haben und kürzere Namen für die Readings wünschen. Falls Sie unsicher sind, setzen Sie diesen Parameter nicht.

        Sie benötigen das Perl-Module IO::Socket::Multicast für dieses FHEM Modul. Unter Debian (basierten) System, kann dies mittels apt-get install libio-socket-multicast-perl installiert werden.


      Attribute
      • disableSernoInReading : unterdrückt das Prefix "SMAEM<serialnumber_>....."
      • feedinPrice : die individuelle Höhe der Vergütung pro Kilowattstunde
      • interval : Auswertungsinterval in Sekunden
      • disable : 1 = das Modul ist disabled
      • diffAccept : diffAccept legt fest, bis zu welchem Schwellenwert eine berechnete positive Werte-Differenz zwischen zwei unmittelbar aufeinander folgenden Zählerwerten (Readings mit *_Diff) akzeptiert werden soll (Standard ist 10).
        Damit werden eventuell fehlerhafte Differenzen mit einem unverhältnismäßig hohen Differenzwert von der Berechnung ausgeschlossen und der Messzyklus verworfen.
      • powerCost : die individuelle Höhe der Stromkosten pro Kilowattstunde
      • timeout : Einstellung des timeout für die Wechselrichterabfrage (default 60s)

      SMAInverter

      Modul zur Einbindung eines SMA Wechselrichters über Speedwire (Ethernet).
      Getestet mit Sunny Tripower 6000TL-20 und Sunny Island 4.4 mit Speedwire/Webconnect Piggyback.

      Fragen und Diskussionen rund um dieses Modul finden sie im FHEM-Forum unter:
      76_SMAInverter.pm - Abfrage von SMA Wechselrichter.

      Voraussetzungen

      Dieses Modul benötigt:
      • Perl Modul: IO::Socket::INET (apt-get install libio-socket-multicast-perl)
      • Perl Modul: Datetime (apt-get install libdatetime-perl)
      • Perl Modul: Time::HiRes
      • FHEM Modul: 99_SUNRISE_EL.pm
      • FHEM Modul: Blocking.pm


      Define
        define <name> SMAInverter <pin> <hostname/ip>

      • pin: Benutzer-Passwort des SMA STP Wechselrichters. Default ist 0000. Kann über die Windows-Software "Sunny Explorer" geändert werden
      • hostname/ip: Hostname oder IP-Adresse des Wechselrichters (bzw. dessen Speedwire Moduls mit Ethernetanschluss)
      • Der Port des Wechselrichters ist 9522. Dieser Port muss in der Firewall freigeschaltet sein !
      Arbeitsweise
        Das Modul schickt Befehle an den Wechselrichter und überprüft, ob diese unterstützt werden.
        Bei einer positiven Antwort werden die Daten gesammelt und je nach Detail-Level in den Readings dargestellt.
        Sind mehr als ein Wechselrichter installiert, sind die Attribute "target-susyid" und "target-serial" entsprechend zu setzen um die korrekte Funktion zu gewährleisten.

        Die normale Betriebszeit des Wechselrichters wird in der Zeit vom Sonnenaufgang bis Sonnenuntergang angenommen. In dieser Periode werden die Wechselrichterdaten abgefragt. Die Ermittlung von Sonnenaufgang / Sonnenuntergang wird über die Funktionen des FHEM-Moduls 99_SUNRISE_EL.pm vorgenommen. Zu diesem Zweck sollten die globalen Attribute longitude und latitude gesetzt sein um den Standort der Anlage genau zu ermitteln. (siehe Commandref SUNRISE_EL)

        Mit dem Attribut "suppressSleep" kann der Schlafmodus unterdrückt werden. Das Attribut "offset" dient dazu den effektiven Zeitpunkt des Sonnenaufgangs / Sonnenuntergangs um den Betrag "offset" vorzuziehen (Sonnenaufgang) bzw. zu verzögern (Sonnenuntergang) und somit die Abfrageperiode des Wechselrichters zu verlängern.

        Im Betriebsmodus "automatic" wird der Wechselrichter entsprechend des eingestellten Attributs "interval" abgefragt. Der Betriebsmodus kann in "manual" umgestellt werden um eine manuelle Abfrage zu realisieren (z.B. Synchronisierung mit einem SMA Energymeter über ein Notify).

        Während der Betriebszeit des Wechselrichters wird die durchschnittliche Energieerzeugung der letzten 5, 10, 15 Minuten berechnet und in den Readings "avg_power_lastminutes_05", "avg_power_lastminutes_10" und "avg_power_lastminutes_15" ausgegeben. Hinweis: Um eine korrekte Berechnung zu ermöglichen, sollte auch im Betriebsmodus "manual" das tatsächliche Abfrageinterval im Attribute "interval" hinterlegt werden !

        Die Abfrage des Wechselrichters wird non-blocking ausgeführt. Der Timeoutwert für diesen Hintergrundprozess kann mit dem Attribut "timeout" eingestellt werden.
      Get
        get <name> data

        Die Datenabfrage des Wechselrichters wird ausgeführt. Diese Möglichkeit ist speziell für den Betriebsmodus "manual" vorgesehen (siehe Attribut "mode").
      Attribute
      • interval : Abfrageinterval in Sekunden
      • detail-level : "0" - Nur Leistung und Energie / "1" - zusätzlich Strom und Spannung / "2" - Alle Werte
      • disable : 1 = das Modul ist disabled
      • mode : automatic = die Wechselrichterwerte werden im eingestellten Interval abgefragt, manual = Abfrage nur mit "get <name> data"
      • offset : Zeit in Sekunden um die der Sonnenaufgang vorgezogen bzw. Sonnenuntergang verzögert wird (0 ... 7200). Dadurch wird die effektive Aktivzeit des Moduls erweitert.
      • suppressSleep : der Schlafmodus (nach Sonnenuntergang, vor Sonnenaufgang) wird ausgeschaltet und der WR abgefragt.
      • showproctime : zeigt die für den Hintergrundprozess und die Abfrage des Wechselrichter verbrauchte Zeit.
      • SBFSpotComp : 1 = die Readings werden kompatibel zu SBFSpot-Ausgaben erzeugt
      • target-susyid : Im Falle eines Multigate kann die Ziel-SUSyID definiert werden. Ist mehr als ein Wechselrichter installiert, muß die Wechselreichter-SUSyID gesetzt werden um den Wechselrichter der Device-Definition eindeutig zuzuweisen. Default ist 0xFFFF (=keine Einschränkung)
      • target-serial : Im Falle eines Multigate kann die Ziel-Seriennummer definiert werden. Ist mehr als ein Wechselrichter installiert, muß die Wechselreichter-Seriennummer gesetzt werden um den Wechselrichter der Device-Definition eindeutig zuzuweisen. Default ist 0xFFFFFFFF (=keine Einschränkung)
      • timeout : Einstellung des timeout für die Wechselrichterabfrage (default 60s)
      Readings
      • BAT_CYCLES / bat_cycles : Akku Ladezyklen
      • BAT_IDC / bat_idc : Akku Strom
      • BAT_TEMP / bat_temp : Akku Temperatur
      • BAT_UDC / bat_udc : Akku Spannung
      • ChargeStatus / chargestatus : Akku Ladestand
      • CLASS / device_class : Wechselrichter Klasse
      • PACMAX1 / pac_max_phase_1 : Nominelle Leistung in Ok Mode
      • PACMAX1_2 / pac_max_phase_1_2 : Maximale Leistung (für einige Wechselrichtertypen)
      • PACMAX2 / pac_max_phase_2 : Nominelle Leistung in Warning Mode
      • PACMAX3 / pac_max_phase_3 : Nominelle Leistung in Fault Mode
      • Serialnumber / serial_number : Wechselrichter Seriennummer
      • SPOT_ETODAY / etoday : Energie heute
      • SPOT_ETOTAL / etotal : Energie Insgesamt
      • SPOT_FEEDTM / feed-in_time : Einspeise-Stunden
      • SPOT_FREQ / grid_freq. : Netz Frequenz
      • SPOT_IAC1 / phase_1_iac : Netz Strom phase L1
      • SPOT_IAC2 / phase_2_iac : Netz Strom phase L2
      • SPOT_IAC3 / phase_3_iac : Netz Strom phase L3
      • SPOT_IDC1 / string_1_idc : DC Strom Eingang 1
      • SPOT_IDC2 / string_2_idc : DC Strom Eingang 2
      • SPOT_OPERTM / operation_time : Betriebsstunden
      • SPOT_PAC1 / phase_1_pac : Leistung L1
      • SPOT_PAC2 / phase_2_pac : Leistung L2
      • SPOT_PAC3 / phase_3_pac : Leistung L3
      • SPOT_PACTOT / total_pac : Gesamtleistung
      • SPOT_PDC1 / string_1_pdc : DC Leistung Eingang 1
      • SPOT_PDC2 / string_2_pdc : DC Leistung Eingang 2
      • SPOT_UAC1 / phase_1_uac : Netz Spannung phase L1
      • SPOT_UAC2 / phase_2_uac : Netz Spannung phase L2
      • SPOT_UAC3 / phase_3_uac : Netz Spannung phase L3
      • SPOT_UDC1 / string_1_udc : DC Spannung Eingang 1
      • SPOT_UDC2 / string_2_udc : DC Spannung Eingang 2
      • SUSyID / susyid : Wechselrichter SUSyID
      • INV_TEMP / device_temperature : Wechselrichter Temperatur
      • INV_TYPE / device_type : Wechselrichter Typ
      • POWER_IN / power_in : Akku Ladeleistung
      • POWER_OUT / power_out : Akku Entladeleistung
      • INV_GRIDRELAY / gridrelay_status : Netz Relais Status
      • INV_STATUS / device_status : Wechselrichter Status
      • opertime_start : Beginn Aktivzeit des Wechselrichters entsprechend des ermittelten Sonnenaufgangs mit Berücksichtigung des Attributs "offset" (wenn gesetzt)
      • opertime_stop : Ende Aktivzeit des Wechselrichters entsprechend des ermittelten Sonnenuntergangs mit Berücksichtigung des Attributs "offset" (wenn gesetzt)
      • modulstate : zeigt den aktuellen Modulstatus "normal" oder "sleep" falls der Wechselrichter nicht abgefragt wird.
      • avg_power_lastminutes_05 : durchschnittlich erzeugte Leistung der letzten 5 Minuten.
      • avg_power_lastminutes_10 : durchschnittlich erzeugte Leistung der letzten 10 Minuten.
      • avg_power_lastminutes_15 : durchschnittlich erzeugte Leistung der letzten 15 Minuten.
      • inverter_processing_time : verbrauchte Zeit um den Wechelrichter abzufragen.
      • background_processing_time : gesamte durch den Hintergrundprozess (BlockingCall) verbrauchte Zeit.


      SMARTMON

        Dieses Modul ist ein FHEM-Frontend zu dem Linux-Tool smartctl. Es liefert diverse Informationen zu dem S.M.A.R.T. System einer Festplatte.

        Define

        define <name> SMARTMON <device> [<Interval>]

        Diese Anweisung erstellt eine neue SMARTMON-Instanz. Die Parameter geben ein zu überwachenden Gerät und den Aktualisierungsinterval in Minuten an.

        Beispiel: define sm SMARTMON /dev/sda 60

        Readings:

        • overall_health_test
          Gibt den allgemeinen Zustand der Platte an. Kann PASSED oder FAILED sein.

        • warnings
          Gibt die Anzahl der vermerkten Warnungen an.

        • Weiterhin können die verfügbaren SMART-Parameter als Readings angezeigt werden (RAW und/oder (teilweise) interpretiert).

        Get:

        • version
          Zeigt die verwendete Modul-Version an.

        • update
          Veranlasst die Aktualisierung der gelesenen Parameter.

        • list
          Zeigt verschiedenen Informationen an:
          • devices:
            Liste der im System verfügbaren Geräten.

          • info:
            Information zu dem aktuellen Gerät.

          • data:
            Liste der SMART-Parameter zu dem aktuellen Gerät.

          • health:
            Information zu dem allgemeinen Gesundheitsstatus für das verwendete Gerät.

          Für letzten 3 Befehle kann auch noch ein anderes Gerät als zusätzliche Parameter mitgegeben werden.


        Attributes:

        • show_raw
          Gültige Werte: 0: keine RAW-Readings anzeigen (default), 1: alle anzeigen, die nicht in interpretierten Readings enthalten sind, 2: alle anzeigen.

        • include
          Kommaseparierte Liste der IDs gewünschten SMART-Parameter. Wenn nichts angegeben, werden alle verfügbaren angezeigt.

        • disable
          Gültige Werte: 0: Modul aktiv (default), 1: Modul deaktiviert (keine Aktualisierungen).

        • parameters
          Zusatzparameter für den AUfruf von smartctl.


        Für weitere Informationen wird die cmartctrl-Dokumentation empfohlen.

      SMASTP

      Modul zur Einbindung eines Sunny Tripower Wechselrichters der Firma SMA über Speedwire (Ethernet).
      Getestet mit Sunny Tripower 6000TL-20, 10000-TL20 sowie 10000TL-10 mit Speedwire/Webconnect Piggyback

      Define

        define <name> SMASTP <pin> <hostname/ip> [port]

      • pin: Benutzer-Passwort des SMA STP Wechselrichters. Default ist 0000. Kann über die Windows-Software "Sunny Explorer" geändert werden
      • hostname/ip: Hostname oder IP-Adresse des Wechselrichters (bzw. dessen Speedwire Moduls mit Ethernetanschluss)
      • port: Optional der Ports des Wechselrichters. Per default 9522.

      Modus

        Das Modul erkennt automatisch eine Inaktivität des Wechselrichters, wenn dieser aufgrund Dunkelheit seinen Betrieb einstellt.
        Diese Betriebspause wird als "Nightmode" bezeichnet. Im Nightmode wird der Wechelrichter nicht mehr über das Netzwerk abgefragt.
        Per default geht das Modul davon aus, dass vor 5:00 und nach 21:00 der Nightmode aktiv ist.
        Diese Grenzen lassen sich mit den Parametern "starttime" (Start des Wechelrichterbetriebs, also Ende des Nightmode)
        und "endtime" (Ende des Wechselrichterbetriebs, also Beginn des Nightmode) umdefinieren.
        Darüber hinaus gibt es den "Inactivitymode": hier wird der Wechselrichter abgefragt, aber es werden keine Readings mehr aktualisiert.
      Parameter
      • interval: Abfrageinterval in Sekunden
      • suppress-night-mode: Der Nightmode wird deaktiviert
      • suppress-inactivity-mode: Der Inactivitymode wird deaktiviert
      • starttime: Startzeit des Betriebsmodus (Default 5:00 Uhr)
      • endtime: Endezeit des Betriebsmodus (Default 21:00 Uhr)
      • force-sleepmode: Der Nightmode wird bei entdeckter Inaktivität auch dann aktiviert, wenn endtime noch nicht erreicht ist
      • enable-modulstate: Schaltet das reading "modulstate" (normal / inactive / sleeping) ein
      • alarm1-value, alarm2-value, alarm3-value: Setzt einen Alarm in Watt auf das Reading SpotP.
        Die Readings Alarm1..Alarm3 werden entsprechend gesetzt: -1 für SpotP < alarmX-value und 1 für Spot >= alarmX-value.
      Readings
      • SpotP: SpotPower - Leistung in W zum Zeitpunkt der Abfrage
      • AvP01: Average Power 1 Minute - Durchschnittliche Leistung in W der letzten Minute
      • AvP05: Average Power 5 Minuten - Durchschnittliche Leistung in W der letzten 5 Minuten
      • AvP15: Average Power 15 Minuten - Durchschnittliche Leistung in W der letzten 15 Minuten
      • SpotPDC1: Spot Gleichspannung String 1
      • SpotPDC2: Spot Gleichspannung String 2
      • TotalTodayP: Erzeuge Leistung (in Wh) des heutigen Tages
      • AlltimeTotalP: Erzeugte Leistung (in Wh) seit Inbetriebsnahme des Gerätes
      • Alarm1..3: Alarm Trigger 1-3. Können über die Parameter "alarmN-value" gesetzt werden

      SML

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

      SOMFY

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

      SONOS

      FHEM-Modul für die Anbindung des Sonos-Systems via UPnP

      Für weitere Hinweise und Beschreibungen bitte auch im Wiki unter http://www.fhemwiki.de/wiki/SONOS nachschauen.

      Für die Verwendung sind Perlmodule notwendig, die unter Umständen noch nachinstalliert werden müssen:

      • LWP::Simple
      • LWP::UserAgent
      • SOAP::Lite
      • HTTP::Request
      Installation z.B. als Debian-Pakete (mittels "sudo apt-get install <packagename>"):
      • LWP::Simple-Packagename (inkl. LWP::UserAgent und HTTP::Request): libwww-perl
      • SOAP::Lite-Packagename: libsoap-lite-perl

      Installation z.B. als Windows ActivePerl (mittels Perl-Packagemanager)
      • Package LWP (incl. LWP::UserAgent and HTTP::Request)
      • Package SOAP::Lite
      • SOAP::Lite-Special für Versionen nach 5.18:
        • Eine andere Paketquelle von den Vorschlägen oder manuell hinzufügen: Bribes de Perl (http://www.bribes.org/perl/ppm)
        • Package: SOAP::Lite
      Windows ActivePerl 5.20 kann momentan nicht verwendet werden, da es das Paket SOAP::Lite dort momentan nicht gibt.

      Achtung!
      Das Modul wird nicht auf jeder Plattform lauffähig sein, da Threads und die angegebenen Perl-Module verwendet werden.

      Mehr Informationen im (deutschen) Wiki-Artikel: http://www.fhemwiki.de/wiki/SONOS

      Das System besteht aus zwei Komponenten:
      1. Einem UPnP-Client, der als eigener Prozess im Hintergrund ständig läuft, und die Kommunikation mit den Sonos-Geräten übernimmt.
      2. Dem eigentlichen FHEM-Modul, welches mit dem UPnP-Client zusammenarbeitet, um die Funktionalität in FHEM zu ermöglichen.

      Der Client wird im Notfall automatisch von Modul selbst gestartet.
      Man kann den Server unabhängig von FHEM selbst starten (um ihn dauerhaft und unabhängig von FHEM laufen zu lassen):
      perl 00_SONOS.pm 4711: Startet einen unabhängigen Server, der auf Port 4711 auf eingehende FHEM-Verbindungen lauscht. Dieser Prozess kann dauerhaft laufen, FHEM kann sich verbinden und auch wieder trennen.

      Beispiel

      Einfachste Definition:
      define Sonos SONOS

      Definition mit Kontrolle über den verwendeten Port und das Intervall der IsAlive-Prüfung:
      define Sonos SONOS localhost:4711 45

      Definition

      define <name> SONOS [upnplistener [interval [waittime [delaytime]]]]

      Definiert das Sonos interface für die Kommunikation mit dem Sonos-System.

      [upnplistener]
      Name und Port eines externen UPnP-Client. Wenn nicht angegebenen wird localhost:4711 festgelegt. Der Port muss eine freie Portnummer ihres Systems sein.
      Wenn sie keinen externen Client gestartet haben, startet das Skript einen eigenen.
      Wenn sie einen eigenen Dienst gestartet haben, dann geben sie hier die entsprechenden Informationen an.

      [interval]
      Das Interval wird für die Überprüfung eines Zoneplayers benötigt. In diesem Interval wird nachgeschaut, ob der Player noch erreichbar ist, da sich ein Player nicht mehr abmeldet, wenn er abgeschaltet wird :-)
      Wenn nicht angegeben, wird ein Wert von 10 Sekunden angenommen.

      [waittime]
      Hiermit wird die Wartezeit eingestellt, die nach dem Starten des SubProzesses darauf gewartet wird.

      [delaytime]
      Hiermit kann eine Verzögerung eingestellt werden, die vor dem Starten des Netzwerks gewartet wird.

      Set

      • Grundsätzliches
        • RescanNetwork
          Startet die Erkennung der im Netzwerk vorhandenen Player erneut.
      • Steuerbefehle
        • Mute <state>
          Setzt den Mute-Zustand bei allen Playern.
        • PauseAll
          Pausiert die Wiedergabe in allen Zonen.
        • Pause
          Synonym für PauseAll.
        • StopAll
          Stoppt die Wiedergabe in allen Zonen.
        • Stop
          Synonym für StopAll.
      • Bookmark-Befehle
        • DisableBookmark <Groupname>
          Deaktiviert die angegebene Gruppe.
        • EnableBookmark <Groupname>
          Aktiviert die angegebene Gruppe.
        • LoadBookmarks [Groupname]
          Lädt die angegebene Gruppe (oder alle Gruppen, wenn nicht angegeben) aus den entsprechenden Dateien.
        • SaveBookmarks [Groupname]
          Speichert die angegebene Gruppe (oder alle Gruppen, wenn nicht angegeben) in die entsprechenden Dateien.
      • Gruppenbefehle
        • Groups <GroupDefinition>
          Setzt die aktuelle Gruppierungskonfiguration der Sonos-Systemlandschaft. Das Format ist jenes, welches auch von dem Get-Befehl 'Groups' geliefert wird.
          Hier kann als GroupDefinition das Wort Reset verwendet werden, um alle Player aus ihren Gruppen zu entfernen.

      Get

      • Gruppenbefehle
        • Groups
          Liefert die aktuelle Gruppierungskonfiguration der Sonos Systemlandschaft zurück. Das Format ist eine Kommagetrennte Liste von Listen mit Devicenamen, also z.B. [Sonos_Kueche], [Sonos_Wohnzimmer, Sonos_Schlafzimmer]. In diesem Beispiel sind also zwei Gruppen definiert, von denen die erste aus einem Player und die zweite aus Zwei Playern besteht.
          Dabei ist die Reihenfolge innerhalb der Unterlisten wichtig, da der erste Eintrag der sogenannte Gruppenkoordinator ist (in diesem Fall also Sonos_Wohnzimmer), von dem die aktuelle Abspielliste un der aktuelle Titel auf die anderen Gruppenmitglieder übernommen wird.

      Attribute

      '''Hinweis'''
      Die Attribute werden erst bei einem Neustart von Fhem verwendet, da diese dem SubProzess initial zur Verfügung gestellt werden müssen.
      • Grundsätzliches
        • disable <value>
          Eines von (0,1). Hiermit kann das Modul abgeschaltet werden. Wirkt sofort. Bei 1 wird der SubProzess beendet, und somit keine weitere Verarbeitung durchgeführt. Bei 0 wird der Prozess wieder gestartet.
          Damit kann das Modul temporär abgeschaltet werden, um bei der Neueinrichtung von Sonos-Komponenten keine halben Zustände mitzubekommen.
        • ignoredIPs <IP-Adresse>[,IP-Adresse]
          Mit diesem Attribut können IP-Adressen angegeben werden, die vom UPnP-System ignoriert werden sollen. Z.B.: "192.168.0.11,192.168.0.37"
        • pingType <string>
          Eines von (none,tcp,udp,icmp,syn). Gibt an, welche Methode für die Ping-Überprüfung verwendet werden soll. Wenn 'none' angegeben wird, dann wird keine Überprüfung gestartet.
        • usedonlyIPs <IP-Adresse>[,IP-Adresse]
          Mit diesem Attribut können IP-Adressen angegeben werden, die ausschließlich vom UPnP-System berücksichtigt werden sollen. Z.B.: "192.168.0.11,192.168.0.37"
      • Bookmark-Einstellungen
        • bookmarkSaveDir <path>
          Das Verzeichnis, in dem die Dateien für die gespeicherten Bookmarks abgelegt werden sollen. Wenn nicht festgelegt, dann wird "." verwendet.
        • bookmarkTitleDefinition <Groupname>:<PlayerdeviceRegEx>:<TrackURIRegEx>:<MinTitleLength>:<RemainingLength>:<MaxAge>:<ReadOnly> [...]
          Die Definition für die Verwendung von Bookmarks für Titel.
        • bookmarkPlaylistDefinition <Groupname>:<PlayerdeviceRegEx>:<MinListLength>:<MaxListLength>:<MaxAge> [...]
          Die Definition für die Verwendung von Bookmarks für aktuelle Abspiellisten/Playlisten.
      • Proxy-Einstellungen
        • generateProxyAlbumArtURLs <int>
          Aus (0, 1). Wenn aktiviert, werden alle Cober-Links als Proxy-Aufrufe an Fhem generiert. Dieser Proxy-Server wird vom Sonos-Modul bereitgestellt. In der Grundeinstellung erfolgt kein Caching der Cover, sondern nur eine Durchreichung der Cover von den Sonosplayern (Damit ist der Zugriff durch einen externen Proxyserver auf Fhem möglich).
        • proxyCacheDir <Path>
          Hiermit wird das Verzeichnis festgelegt, in dem die Cober zwischengespeichert werden. Wenn nicht festegelegt, so wird "/tmp" verwendet.
        • proxyCacheTime <int>
          Mit einer Angabe ungleich 0 wird der Caching-Mechanismus des Sonos-Modul-Proxy-Servers aktiviert. Dabei werden Cover, die im Cache älter sind als diese Zeitangabe in Sekunden, neu vom Sonosplayer geladen, alle anderen direkt ausgeliefert, ohne den Player zu fragen.
      • Sprachoptionen
        • targetSpeakDir <string>
          Gibt an, welches Verzeichnis für die Ablage des MP3-Files der Textausgabe verwendet werden soll
        • targetSpeakMP3FileConverter <string>
          Hiermit kann ein MP3-Konverter angegeben werden, da am Ende der Verkettung der Speak-Ansage das resultierende MP3-File nochmal sauber durchkodiert. Damit können Restzeitanzeigeprobleme behoben werden. Dadurch vegrößert sich allerdings u.U. die Ansageverzögerung.
        • targetSpeakMP3FileDir <string>
          Das Verzeichnis, welches als Standard für MP3-Fileangaben in Speak-Texten verwendet werden soll. Wird dieses Attribut definiert, können die Angaben bei Speak ohne Verzeichnis erfolgen.
        • targetSpeakURL <string>
          Gibt an, unter welcher Adresse der ZonePlayer das unter targetSpeakDir angegebene Verzeichnis erreichen kann.
        • targetSpeakFileTimestamp <int>
          One of (0, 1). Gibt an, ob die erzeugte MP3-Sprachausgabedatei einen Zeitstempel erhalten soll (1) oder nicht (0).
        • targetSpeakFileHashCache <int>
          One of (0, 1). Gibt an, ob die erzeugte Sprachausgabedatei einen Hashwert erhalten soll (1) oder nicht (0). Wenn dieser Wert gesetzt wird, dann wird eine bereits bestehende Datei wiederverwendet, und nicht neu erzeugt.
        • Speak1 <Fileextension>:<Commandline>
          Hiermit kann ein Systemaufruf definiert werden, der zu Erzeugung einer Sprachausgabe verwendet werden kann. Sobald dieses Attribut definiert wurde, ist ein entsprechender Setter am Sonosplayer verfügbar.
          Es dürfen folgende Platzhalter verwendet werden:
          '''%language%''': Wird durch die eingegebene Sprache ersetzt
          '''%filename%''': Wird durch den kompletten Dateinamen (inkl. Dateiendung) ersetzt.
          '''%text%''': Wird durch den zu übersetzenden Text ersetzt.
          '''%textescaped%''': Wird durch den URL-Enkodierten zu übersetzenden Text ersetzt.
        • Speak2 <Fileextension>:<Commandline>
          Siehe Speak1
        • Speak3 <Fileextension>:<Commandline>
          Siehe Speak1
        • Speak4 <Fileextension>:<Commandline>
          Siehe Speak1
        • SpeakCover <Absolute-Imagepath>
          Hiermit kann ein JPG- oder PNG-Bild als Cover für die Sprachdurchsagen definiert werden.
        • Speak1Cover <Absolute-Imagepath>
          Analog zu SpeakCover für Speak1.
        • Speak2Cover <Absolute-Imagepath>
          Analog zu SpeakCover für Speak2.
        • Speak3Cover <Absolute-Imagepath>
          Analog zu SpeakCover für Speak3.
        • Speak3Cover <Absolute-Imagepath>
          Analog zu SpeakCover für Speak3.
        • Speak4Cover <Absolute-Imagepath>
          Analog zu SpeakCover für Speak4.
        • SpeakGoogleURL <GoogleURL>
          Die zu verwendende Google-URL. Wenn dieser Parameter nicht angegeben wird, dann wird ein Standard verwendet. Hier müssen Platzhalter für die Ersetzung durch das Modul eingetragen werden: %1$s -> Sprache, %2$s -> Text
          Die Standard-URL lautet momentan: http://translate.google.com/translate_tts?tl=%1$s&client=tw-ob&q=%2$s

      SONOSPLAYER

      FHEM Modul für die Steuerung eines Sonos Zoneplayer

      Für weitere Hinweise und Beschreibungen bitte auch im Wiki unter http://www.fhemwiki.de/wiki/SONOS nachschauen.

      Im Normalfall braucht man dieses Device nicht selber zu definieren, da es automatisch vom Discovery-Process des Sonos-Device erzeugt wird.

      Example

      define Sonos_Wohnzimmer SONOSPLAYER RINCON_000EFEFEFEF401400_MR

      Definition

      define <name> SONOSPLAYER <udn>

      <udn>
      MAC-Addressbasierter eindeutiger Bezeichner des Zoneplayer

      Set

      • Grundsätzliche Einstellungen
        • Alarm (Create|Update|Delete|Enable|Disable) <ID[,ID]|All> <Datahash>
          Diese Anweisung wird für die Bearbeitung der Alarme verwendet:
          • Create: Erzeugt einen neuen Alarm-Eintrag mit den übergebenen Hash-Daten.
          • Update: Aktualisiert die Alarme mit den übergebenen IDs und den angegebenen Hash-Daten.
          • Delete: Löscht die Alarm-Einträge mit den übergebenen IDs.
          • Enable: Aktiviert die Alarm-Einträge mit den übergebenen IDs.
          • Disable: Deaktiviert die Alarm-Einträge mit den übergebenen IDs.
          Bei Angabe des Wortes 'All' als ID, werden alle Alarme dieses Players bearbeitet.
          Die Hash-Daten:
          Das Format ist ein Perl-Hash und wird mittels der eval-Funktion interpretiert.
          e.g.: { Repeat => 1 }

          Die folgenden Schlüssel sind zulässig/notwendig:
          • StartTime
          • Duration
          • Recurrence_Once
          • Recurrence_Monday
          • Recurrence_Tuesday
          • Recurrence_Wednesday
          • Recurrence_Thursday
          • Recurrence_Friday
          • Recurrence_Saturday
          • Recurrence_Sunday
          • Enabled
          • ProgramURI
          • ProgramMetaData
          • Shuffle
          • Repeat
          • Volume
          • IncludeLinkedZones

          z.B.:
          • set Sonos_Wohnzimmer Alarm Create 0 { Enabled => 1, Volume => 35, StartTime => '00:00:00', Duration => '00:15:00', Repeat => 0, Shuffle => 0, ProgramURI => 'x-rincon-buzzer:0', ProgramMetaData => '', Recurrence_Once => 0, Recurrence_Monday => 1, Recurrence_Tuesday => 1, Recurrence_Wednesday => 1, Recurrence_Thursday => 1, Recurrence_Friday => 1, Recurrence_Saturday => 0, Recurrence_Sunday => 0, IncludeLinkedZones => 0 }
          • set Sonos_Wohnzimmer Alarm Update 17 { Shuffle => 1 }
          • set Sonos_Wohnzimmer Alarm Delete 17 {}
        • AudioDelay <Level>
          Setzt den AudioDelay der Playbar auf den angegebenen Wert. Der Wert kann zwischen 0 und 5 liegen.
        • AudioDelayLeftRear <Level>
          Setzt den AudioDelayLeftRear des Players auf den angegebenen Wert. Der Wert kann zwischen 0 und 2 liegen. Wobei die Werte folgende Bedeutung haben: 0: >3m, 1: >0.6m und <3m, 2: <0.6m
        • AudioDelayRightRear <Level>
          Setzt den AudioDelayRightRear des Players auf den angegebenen Wert. Der Wert kann zwischen 0 und 2 liegen. Wobei die Werte folgende Bedeutung haben: 0: >3m, 1: >0.6m und <3m, 2: <0.6m
        • DailyIndexRefreshTime <Timestring>
          Setzt die aktuell gültige DailyIndexRefreshTime für alle Zoneplayer.
        • DialogLevel <State>
          Legt den Zustand der Sprachverbesserung der Playbar fest.
        • ExportSonosBibliothek <filename>
          Exportiert eine Datei mit der textuellen Darstellung eines Struktur- und Titelhashs, das die komplette Navigationsstruktur aus der Sonos-Bibliothek abbildet. Achtung: Benötigt eine große Menge CPU-Zeit und Arbeitsspeicher für die Ausführung!
        • Name <Zonename>
          Legt den Namen der Zone fest.
        • NightMode <State>
          Legt den Zustand des Nachtsounds der Playbar fest.
        • OutputFixed <State>
          Setzt den angegebenen OutputFixed-Zustand. Liefert den aktuell gültigen OutputFixed-Zustand.
        • Reboot
          Führt für den Zoneplayer einen Neustart durch.
        • ResetAttributesToDefault <DeleteAllOtherAttributes>
          Setzt die Attribute eines Players auf die Voreinstellung zurück, wie sie beim Anlegen des Players gesetzt waren. Wenn der Parameter "DeleteAllOtherAttributes" mit "1" oder "on" angegeben wurde, werden vor dem Setzen alle Attribute gelöscht.
        • RoomIcon <Iconname>
          Legt das Icon für die Zone fest
        • SnoozeAlarm <Timestring|Seconds>
          Unterbricht eine laufende Alarmwiedergabe für den übergebenen Zeitraum.
        • SubEnable <State>
          Legt den Zustand des Sub-Zustands fest.
        • SubGain <Level>
          Setzt den SubGain auf den angegebenen Wert. Der Wert kann zwischen -15 und 15 liegen.
        • SubPolarity <Level>
          Setzt den SubPolarity auf den angegebenen Wert. Der Wert kann zwischen 0 und 2 liegen.
        • SurroundEnable <State>
          Setzt den SurroundEnable-Zustand.
        • SurroundLevel <Level>
          Setzt den Surroundlevel auf den angegebenen Wert. Der Wert kann zwischen -15 und 15 liegen.
        • TruePlay <State>
          Setzt den TruePlay-Zustand.
        • Wifi <State>
          Setzt den WiFi-Zustand des Players. Kann 'off', 'persist-off' oder 'on' sein.
      • Abspiel-Steuerbefehle
        • CurrentTrackPosition <TimePosition>
          Setzt die Abspielposition innerhalb des Liedes auf den angegebenen Zeitwert (z.B. 0:01:15).
        • Pause
          Pausiert die Wiedergabe
        • Previous
          Springt an den Anfang des vorherigen Titels.
        • Play
          Startet die Wiedergabe
        • PlayURI <songURI> [Volume]
          Spielt die angegebene MP3-Datei ab. Dabei kann eine Lautstärke optional mit angegeben werden.
        • PlayURITemp <songURI> [Volume]
          Spielt die angegebene MP3-Datei mit der optionalen Lautstärke als temporäre Wiedergabe ab. Nach dem Abspielen wird der vorhergehende Zustand wiederhergestellt, und läuft an der unterbrochenen Stelle weiter. Wenn die Länge der Datei nicht ermittelt werden kann (z.B. bei Streams), läuft die Wiedergabe genauso wie bei PlayURI ab, es wird also nichts am Ende (wenn es eines geben sollte) wiederhergestellt.
        • Next
          Springt an den Anfang des nächsten Titels
        • Speak <Volume> <Language> <Text>
          Verwendet die Google Text-To-Speech-Engine um den angegebenen Text in eine MP3-Datei umzuwandeln und anschließend mittels PlayURITemp als Durchsage abzuspielen. Mögliche Sprachen können auf der Google-Seite nachgesehen werden. Möglich sind z.B. "de", "en", "fr", "es"...
        • StartFavourite <FavouriteName> [NoStart]
          Startet den angegebenen Favoriten. Der Name bezeichnet einen Eintrag in der Sonos-Favoritenliste. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen. Wenn das Wort 'NoStart' als zweiter Parameter angegeben wurde, dann wird der Favorit geladen und fertig vorbereitet, aber nicht explizit gestartet.
          Zusätzlich kann ein regulärer Ausdruck für den Namen verwendet werden. Der erste Treffer wird verwendet. Das Format ist z.B. /meine.hits/.
        • StartPlaylist <Playlistname> [EmptyQueueBeforeImport]
          Lädt die benannte Playlist und startet sofort die Wiedergabe. Zu den Parametern und Bemerkungen bitte unter "LoadPlaylist" nachsehen.
        • StartRadio <Radiostationname>
          Lädt den benannten Radiosender, genauer gesagt, den benannten Radiofavoriten und startet sofort die Wiedergabe. Dabei wird die bestehende Abspielliste beibehalten, aber deaktiviert. Der Parameter kann/muss URL-Encoded sein, um auch Leer- und Sonderzeichen angeben zu können.
        • StartSearchlist <Kategoriename> <KategorieElement> [[TitelfilterRegEx]/[AlbumfilterRegEx]/[ArtistfilterRegEx] [maxElem]]
          Lädt die Searchlist und startet sofort die Wiedergabe. Für nähere Informationen bitte unter "LoadSearchlist" nachschlagen.
        • Stop
          Stoppt die Wiedergabe
        • Track <TrackNumber|Random>
          Aktiviert den angebenen Titel der aktuellen Abspielliste. Wenn als Tracknummer der Wert Random angegeben wird, dann wird eine zufällige Trackposition ausgewählt.
      • Einstellungen zum Abspielen
        • Balance <BalanceValue>
          Setzt die Balance auf den angegebenen Wert. Der Wert kann zwischen -100 (voll links) bis 100 (voll rechts) sein. Gibt die wirklich eingestellte Balance als Ergebnis zurück.
        • Bass <BassValue>
          Setzt den Basslevel auf den angegebenen Wert. Der Wert kann zwischen -10 bis 10 sein. Gibt den wirklich eingestellten Basslevel als Ergebnis zurück.
        • CrossfadeMode <State>
          Legt den Zustand des Crossfade-Mode fest. Liefert den aktuell gültigen Crossfade-Mode.
        • LEDState <State>
          Legt den Zustand der LED fest. Liefert den aktuell gültigen Zustand.
        • Loudness <State>
          Setzt den angegebenen Loudness-Zustand. Liefert den aktuell gültigen Loudness-Zustand.
        • Mute <State>
          Setzt den angegebenen Mute-Zustand. Liefert den aktuell gültigen Mute-Zustand.
        • MuteT
          Schaltet den Zustand des Mute-Zustands um. Liefert den aktuell gültigen Mute-Zustand.
        • Repeat <State>
          Legt den Zustand des Repeat-Zustands fest. Liefert den aktuell gültigen Repeat-Zustand.
        • RepeatOne <State>
          Legt den Zustand des RepeatOne-Zustands fest. Liefert den aktuell gültigen RepeatOne-Zustand.
        • RepeatOneT
          Schaltet den Zustand des RepeatOne-Zustands um. Liefert den aktuell gültigen RepeatOne-Zustand.
        • RepeatT
          Schaltet den Zustand des Repeat-Zustands um. Liefert den aktuell gültigen Repeat-Zustand.
        • Shuffle <State>
          Legt den Zustand des Shuffle-Zustands fest. Liefert den aktuell gültigen Shuffle-Zustand.
        • ShuffleT
          Schaltet den Zustand des Shuffle-Zustands um. Liefert den aktuell gültigen Shuffle-Zustand.
        • SleepTimer <Timestring|Seconds>
          Legt den aktuellen SleepTimer fest. Der Wert muss ein kompletter Zeitstempel sein (HH:MM:SS). Zum Deaktivieren darf der Zeitstempel nur Nullen enthalten oder das Wort 'off'.
        • Treble <TrebleValue>
          Setzt den Treblelevel auf den angegebenen Wert. Der Wert kann zwischen -10 bis 10 sein. Gibt den wirklich eingestellten Treblelevel als Ergebnis zurück.
        • Volume <VolumeLevel> [RampType]
          Setzt die aktuelle Lautstärke auf den angegebenen Wert. Der Wert kann ein relativer Wert mittels + oder - Zeichen sein. Liefert den aktuell gültigen Lautstärkewert zurück.
          Optional kann ein RampType übergeben werden, der einen Wert zwischen 1 und 3 annehmen kann, und verschiedene von Sonos festgelegte Muster beschreibt.
        • VolumeD
          Verringert die aktuelle Lautstärke um volumeStep-Einheiten.
        • VolumeRestore
          Stellt die mittels VolumeSave gespeicherte Lautstärke wieder her.
        • VolumeSave <VolumeLevel>
          Setzt die aktuelle Lautstärke auf den angegebenen Wert. Der Wert kann ein relativer Wert mittels + oder - Zeichen sein. Liefert den aktuell gültigen Lautstärkewert zurück. Zusätzlich wird der alte Lautstärkewert gespeichert und kann mittels VolumeRestore wiederhergestellt werden.
        • VolumeU
          Erhöht die aktuelle Lautstärke um volumeStep-Einheiten.
      • Steuerung der aktuellen Abspielliste
        • AddURIToQueue <songURI>
          Fügt die angegebene MP3-Datei an der aktuellen Stelle in die Abspielliste ein.
        • CurrentPlaylist
          Setzt den Abspielmodus auf die aktuelle Abspielliste, startet aber keine Wiedergabe (z.B. nach dem Hören eines Radiostreams, wo die aktuelle Abspielliste noch existiert, aber gerade "nicht verwendet" wird)
        • DeleteFromQueue
          Löscht die angegebenen Elemente aus der aktuellen Abspielliste. Die Angabe erfolgt über die Indizies der Titel. Es können die bei Perl-Array-üblichen Formate verwendet werden: "1..12,17,20..22". Die Indizies beziehen sich auf die aktuell angezeigte Reihenfolge (diese unterscheidet sich zwischen der normalen Abspielweise und dem Shufflemodus).
        • DeletePlaylist
          Löscht die bezeichnete Playliste. Zum möglichen Format des Playlistenamen unter LoadPlaylist nachsehen.
        • EmptyPlaylist
          Leert die aktuelle Abspielliste
        • LoadFavourite <FavouriteName>
          Lädt den angegebenen Favoriten. Der Name bezeichnet einen Eintrag in der Sonos-Favoritenliste. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen.
          Zusätzlich kann ein regulärer Ausdruck für den Namen verwendet werden. Der erste Treffer wird verwendet. Das Format ist z.B. /meine.hits/.
        • LoadPlaylist <Playlistname|Fhem-Devicename> [EmptyQueueBeforeImport]
          Lädt die angegebene Playlist in die aktuelle Abspielliste. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen. Der Playlistname kann ein Fhem-Sonosplayer-Devicename sein, dann wird dessen aktuelle Abpielliste kopiert. Der Playlistname kann aber auch ein Dateiname sein. Dann muss dieser mit 'file:' beginnen (z.B. 'file:c:/Test.m3u).
          Wenn der Parameter EmptyQueueBeforeImport mit ''1'' angegeben wirde, wird die aktuelle Abspielliste vor dem Import geleert. Standardmäßig wird hier ''1'' angenommen.
          Zusätzlich kann ein regulärer Ausdruck für den Namen verwendet werden. Der erste Treffer wird verwendet. Das Format ist z.B. /hits.2014/.
        • LoadRadio <Radiostationname>
          Startet den angegebenen Radiostream. Der Name bezeichnet einen Sender in der Radiofavoritenliste. Die aktuelle Abspielliste wird nicht verändert. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen.
          Zusätzlich kann ein regulärer Ausdruck für den Namen verwendet werden. Der erste Treffer wird verwendet. Das Format ist z.B. /radio/.
        • LoadSearchlist <Kategoriename> <KategorieElement> [[TitelfilterRegEx]/[AlbumfilterRegEx]/[ArtistfilterRegEx] [[*]maxElem[+|-]]]
          Lädt Titel nach diversen Kriterien in die aktuelle Abspielliste. Nähere Beschreibung bitte im Wiki nachlesen.
        • SavePlaylist <Playlistname>
          Speichert die aktuelle Abspielliste unter dem angegebenen Namen. Eine bestehende Playlist mit diesem Namen wird überschrieben. Der Parameter sollte/kann URL-Encoded werden um auch Spezialzeichen zu ermöglichen. Der Playlistname kann auch ein Dateiname sein. Dann muss dieser mit 'file:' beginnen (z.B. 'file:c:/Test.m3u).
      • Gruppenbefehle
        • AddMember <devicename>
          Fügt dem Device das übergebene Device als Gruppenmitglied hinzu. Die Wiedergabe des aktuellen Devices bleibt erhalten, und wird auf das angegebene Device mit übertragen.
        • CreateStereoPair <rightPlayerDevicename>
          Fügt dem Device das übergebene Device als rechtes Stereopaar-Element hinzu. Die Wiedergabe des aktuellen Devices bleibt erhalten (als linker Lautsprecher), und wird auf das angegebene Device mit übertragen (als rechter Lautsprecher).
        • GroupMute <State>
          Setzt den Mute-Zustand für die komplette Gruppe in einem Schritt. Der Wert kann on oder off sein.
        • GroupVolume <VolumeLevel>
          Setzt die Gruppenlautstärke in der Art des Original-Controllers. Das bedeutet, dass das Lautstärkeverhältnis der Player zueinander beim Anpassen erhalten bleibt.
        • GroupVolumeD
          Verringert die aktuelle Gruppenlautstärke um volumeStep-Einheiten.
        • GroupVolumeU
          Erhöht die aktuelle Gruppenlautstärke um volumeStep-Einheiten.
        • MakeStandaloneGroup
          Macht diesen Player zu seiner eigenen Gruppe.
        • RemoveMember <devicename>
          Entfernt dem Device das übergebene Device, sodass die beiden keine Gruppe mehr bilden. Die Wiedergabe des aktuellen Devices läuft normal weiter. Das abgetrennte Device stoppt seine Wiedergabe, und hat keine aktuelle Abspielliste mehr (seit Sonos Version 4.2 hat der Player wieder die Playliste von vorher aktiv).
        • SeparateStereoPair
          Trennt das Stereopaar wieder auf.
        • SnapshotGroupVolume
          Legt das Lautstärkeverhältnis der aktuellen Player der Gruppe für folgende '''GroupVolume'''-Aufrufe fest. Dieses festgelegte Verhältnis wird bis zum nächsten Aufruf von '''SnapshotGroupVolume''' beibehalten.

      Get

      • Grundsätzliches
        • Alarm <ID>
          Ausnahmefall. Diese Get-Anweisung liefert direkt ein Hash zurück, in welchem die Informationen des Alarms mit der gegebenen ID enthalten sind. Es ist die Kurzform für eval(ReadingsVal(<Devicename>, 'Alarmlist', ()))->{<ID>};, damit sich nicht jeder ausdenken muss, wie er jetzt am einfachsten an die Alarm-Informationen rankommen kann.
        • EthernetPortStatus <PortNumber>
          Liefert den Ethernet-Portstatus des gegebenen Ports. Kann 'Active' oder 'Inactive' liefern.
        • PossibleRoomIcons
          Liefert eine Liste aller möglichen RoomIcon-Bezeichnungen zurück.
        • SupportLinks
          Ausnahmefall. Diese Get-Anweisung liefert eine Liste mit passenden Links zu den Supportseiten des Player.
      • Listen
        • Favourites
          Liefert eine Liste mit den Namen aller gespeicherten Sonos-Favoriten. Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "Liste 1","Eintrag 2","Test"
        • FavouritesWithCovers
          Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller gespeicherten Sonos-Favoriten. Z.B.: {'FV:2/22' => {'Cover' => 'urlzumcover', 'Title' => '1. Favorit'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.
        • Playlists
          Liefert eine Liste mit den Namen aller gespeicherten Playlists. Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "Liste 1","Liste 2","Test"
        • PlaylistsWithCovers
          Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller gespeicherten Sonos-Playlisten. Z.B.: {'SQ:14' => {'Cover' => 'urlzumcover', 'Title' => '1. Playlist'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.
        • Radios
          Liefert eine Liste mit den Namen aller gespeicherten Radiostationen (Favoriten). Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "Sender 1","Sender 2","Test"
        • RadiosWithCovers
          Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller gespeicherten Sonos-Radiofavoriten. Z.B.: {'R:0/0/2' => {'Cover' => 'urlzumcover', 'Title' => '1. Radiosender'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.
        • SearchlistCategories
          Liefert eine Liste mit den Namen alle möglichen Kategorien für den Aufruf von "LoadSearchlist". Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen.
      • Informationen zum aktuellen Titel
        • CurrentTrackPosition
          Liefert die aktuelle Position innerhalb des Titels.

      Attribute

      '''Hinweis'''
      Die Attribute werden erst bei einem Neustart von Fhem verwendet, da diese dem SubProzess initial zur Verfügung gestellt werden müssen.
      • Grundsätzliches
        • disable <int>
          One of (0,1). Deaktiviert die Event-Verarbeitung für diesen Zoneplayer.
        • generateSomethingChangedEvent <int>
          One of (0,1). 1 wenn ein 'SomethingChanged'-Event erzeugt werden soll. Dieses Event wird immer dann erzeugt, wenn sich irgendein Wert ändert. Dies ist nützlich, wenn man immer informiert werden möchte, egal, was sich geändert hat.
        • generateVolumeEvent <int>
          One of (0,1). Aktiviert die Generierung eines Events bei Lautstärkeänderungen, wenn minVolume oder maxVolume definiert sind.
        • generateVolumeSlider <int>
          One of (0,1). Aktiviert einen Slider für die Lautstärkekontrolle in der Detailansicht.
        • getAlarms <int>
          One of (0..1). Richtet eine Callback-Methode für Alarme ein. Damit wird auch die DailyIndexRefreshTime automatisch aktualisiert.
        • volumeStep <int>
          One of (0..100). Definiert die Schrittweite für die Aufrufe von VolumeU und VolumeD.
      • Informationen generieren
        • generateInfoSummarize1 <string>
          Erzeugt das Reading 'InfoSummarize1' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
        • generateInfoSummarize2 <string>
          Erzeugt das Reading 'InfoSummarize2' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
        • generateInfoSummarize3 <string>
          Erzeugt das Reading 'InfoSummarize3' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
        • generateInfoSummarize4 <string>
          Erzeugt das Reading 'InfoSummarize4' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
        • stateVariable <string>
          One of (TransportState,NumberOfTracks,Track,TrackURI,TrackDuration,Title,Artist,Album,OriginalTrackNumber,AlbumArtist,
          Sender,SenderCurrent,SenderInfo,StreamAudio,NormalAudio,AlbumArtURI,nextTrackDuration,nextTrackURI,nextAlbumArtURI,
          nextTitle,nextArtist,nextAlbum,nextAlbumArtist,nextOriginalTrackNumber,Volume,Mute,Shuffle,Repeat,RepeatOne,CrossfadeMode,Balance,
          HeadphoneConnected,SleepTimer,Presence,RoomName,SaveRoomName,PlayerType,Location,SoftwareRevision,SerialNum,InfoSummarize1,I
          nfoSummarize2,InfoSummarize3,InfoSummarize4). Gibt an, welche Variable in das Reading state kopiert werden soll.
      • Steueroptionen
        • maxVolume <int>
          One of (0..100). Definiert die maximale Lautstärke dieses Zoneplayer.
        • minVolume <int>
          One of (0..100). Definiert die minimale Lautstärke dieses Zoneplayer.
        • maxVolumeHeadphone <int>
          One of (0..100). Definiert die maximale Lautstärke dieses Zoneplayer im Kopfhörerbetrieb.
        • minVolumeHeadphone <int>
          One of (0..100). Definiert die minimale Lautstärke dieses Zoneplayer im Kopfhörerbetrieb.
        • buttonEvents <Time:Pattern>[ <Time:Pattern> ...]
          Definiert, dass bei einer bestimten Tastenfolge am Player ein Event erzeugt werden soll. Die Definition der Events erfolgt als Tupel: Der erste Teil vor dem Doppelpunkt ist die Zeit in Sekunden, die berücksichtigt werden soll, der zweite Teil hinter dem Doppelpunkt definiert die Abfolge der Buttons, die für dieses Event notwendig sind.
          Folgende Button-Kürzel sind zulässig:
          • M: Der Mute-Button
          • H: Die Headphone-Buchse
          • U: Up-Button (Lautstärke Hoch)
          • D: Down-Button (Lautstärke Runter)

          Das Event, das geworfen wird, heißt ButtonEvent, der Wert ist die definierte Tastenfolge
          Z.B.: 2:MM
          Hier wird definiert, dass ein Event erzeugt werden soll, wenn innerhalb von 2 Sekunden zweimal die Mute-Taste gedrückt wurde. Das damit erzeugte Event hat dann den Namen ButtonEvent, und den Wert MM.

      Beispiele / Hinweise

      • Format von InfoSummarize:
        infoSummarizeX := <NormalAudio>:summarizeElem:</NormalAudio> <StreamAudio>:summarizeElem:</StreamAudio>|:summarizeElem:
        :summarizeElem: := <:variable:[ prefix=":text:"][ suffix=":text:"][ instead=":text:"][ ifempty=":text:"]/[ emptyVal=":text:"]>
        :variable: := TransportState|NumberOfTracks|Track|TrackURI|TrackDuration|Title|Artist|Album|OriginalTrackNumber|AlbumArtist|
        Sender|SenderCurrent|SenderInfo|StreamAudio|NormalAudio|AlbumArtURI|nextTrackDuration|nextTrackURI|nextAlbumArtURI|
        nextTitle|nextArtist|nextAlbum|nextAlbumArtist|nextOriginalTrackNumber|Volume|Mute|Shuffle|Repeat|RepeatOne|CrossfadeMode|Balance|
        HeadphoneConnected|SleepTimer|Presence|RoomName|SaveRoomName|PlayerType|Location|SoftwareRevision|SerialNum|InfoSummarize1|
        InfoSummarize2|InfoSummarize3|InfoSummarize4

        :text: := [Jeder beliebige Text ohne doppelte Anführungszeichen]

      SSCam

        Mit diesem Modul können Operationen von in der Synology Surveillance Station (SVS) definierten Kameras ausgeführt werden.
        Zur Zeit werden folgende Funktionen unterstützt:

          • Start einer Aufnahme
          • Stop einer Aufnahme (per Befehl bzw. automatisch nach Ablauf der Aufnahmedauer)
          • Aufnehmen eines Schnappschusses und Ablage in der Synology Surveillance Station
          • Deaktivieren einer Kamera in Synology Surveillance Station
          • Aktivieren einer Kamera in Synology Surveillance Station
          • Steuerung der Belichtungsmodi Tag, Nacht bzw. Automatisch
          • Umschaltung der Ereigniserkennung durch Kamera, durch SVS oder deaktiviert
          • steuern der Erkennungsparameterwerte Empfindlichkeit, Schwellwert, Objektgröße und Prozentsatz für Auslösung
          • Abfrage von Kameraeigenschaften (auch mit Polling) sowie den Eigenschaften des installierten SVS-Paketes
          • Bewegen an eine vordefinierte Preset-Position (bei PTZ-Kameras)
          • Start einer vordefinierten Überwachungstour (bei PTZ-Kameras)
          • Positionieren von PTZ-Kameras zu absoluten X/Y-Koordinaten
          • kontinuierliche Bewegung von PTZ-Kameras
          • auslösen externer Ereignisse 1-10 (Aktionsregel SVS)
          • starten und beenden von Kamera-Livestreams
          • Abruf und Ausgabe der Kamera Streamkeys sowie Stream-Urls (Nutzung von Kamera-Livestreams ohne Session Id)
          • abspielen der letzten Aufnahme

        Die Aufnahmen stehen in der Synology Surveillance Station (SVS) zur Verfügung und unterliegen, wie jede andere Aufnahme, den in der Synology Surveillance Station eingestellten Regeln.
        So werden zum Beispiel die Aufnahmen entsprechend ihrer Archivierungsfrist gespeichert und dann gelöscht.

        Wenn sie über dieses Modul diskutieren oder zur Verbesserung des Moduls beitragen möchten, ist im FHEM-Forum ein Sammelplatz unter:
        49_SSCam: Fragen, Hinweise, Neuigkeiten und mehr rund um dieses Modul.

        Weitere Infomationen zum Modul sind im FHEM-Wiki zu finden:
        SSCAM - Steuerung von Kameras in Synology Surveillance Station.

        Vorbereitung

        Dieses Modul nutzt das CPAN Module JSON. Bitte darauf achten dieses Paket zu installieren. (Debian: libjson-perl).
        Das Modul verwendet für HTTP-Calls die nichtblockierenden Funktionen von HttpUtils bzw. HttpUtils_NonblockingGet.
        Im DSM bzw. der Synology Surveillance Station muß ein Nutzer angelegt sein. Die Zugangsdaten werden später über ein Set-Kommando dem angelegten Gerät zugewiesen.
        Nähere Informationen dazu unter Credentials

        Überblick über die Perl-Module welche von SSCam genutzt werden:

        JSON
        Data::Dumper
        MIME::Base64
        Time::HiRes
        HttpUtils (FHEM-Modul)

        Definition

          define <name> SSCAM <Kameraname in SVS> <ServerAddr> [Port]

          Definiert eine neue Kamera für SSCam. Zunächst muß diese Kamera in der Synology Surveillance Station 7.0 oder höher eingebunden sein und entsprechend funktionieren.

          Das Modul SSCam basiert auf Funktionen der Synology Surveillance Station API.
          Weitere Informationen unter: Web API Guide.

          Momentan wird nur das HTTP-Protokoll unterstützt um die Web-Services der Synology DS aufzurufen.

          Die Parameter beschreiben im Einzelnen:

          name: der Name des neuen Gerätes in FHEM
          Kameraname: Kameraname wie er in der Synology Surveillance Station angegeben ist. Leerzeichen im Namen sind nicht erlaubt !
          ServerAddr: die IP-Addresse des Synology Surveillance Station Host. Hinweis: Es sollte kein Servername verwendet werden weil DNS-Aufrufe in FHEM blockierend sind.
          Port: optional - der Port der Synology Surveillance Station. Wenn nicht angegeben wird der Default-Port 5000 (nur HTTP) gesetzt


          Beispiel:
                define CamCP SSCAM Carport 192.168.2.20 [5000]      
               
          Wird eine neue Kamera definiert, wird diesem Device zunächst eine Standardaufnahmedauer von 15 zugewiesen.
          Über das Attribut "rectime" kann die Aufnahmedauer für jede Kamera individuell angepasst werden. Der Wert "0" für "rectime" führt zu einer Endlosaufnahme, die durch "set <name> off" wieder gestoppt werden muß.
          Ein Logeintrag mit einem entsprechenden Hinweis auf diesen Umstand wird geschrieben.

          Wird das Attribut "rectime" gelöscht, greift wieder der Default-Wert (15s) für die Aufnahmedauer.

          Mit dem Befehl "set <name> on [rectime]" wird die Aufnahmedauer temporär festgelegt und überschreibt einmalig sowohl den Defaultwert als auch den Wert des gesetzten Attributs "rectime".
          Auch in diesem Fall führt "set <name> on 0" zu einer Daueraufnahme.

          Eine eventuell in der SVS eingestellte Dauer der Voraufzeichnung wird weiterhin berücksichtigt.


          Credentials

          Nach dem Definieren des Gerätes müssen zuerst die Zugangsparameter gespeichert werden. Das geschieht mit dem Befehl:
           
               set <name> credentials <Username> <Passwort>
              
          Der Anwender kann in Abhängigkeit der beabsichtigten einzusetzenden Funktionen einen Nutzer im DSM bzw. in der Surveillance Station einrichten.
          Ist der DSM-Nutzer der Gruppe Administratoren zugeordnet, hat er auf alle Funktionen Zugriff. Ohne diese Gruppenzugehörigkeit können nur Funktionen mit niedrigeren
          Rechtebedarf ausgeführt werden. Die benötigten Mindestrechte der Funktionen sind in der Tabelle weiter unten aufgeführt.
          Alternativ zum DSM-Nutzer kann ein in der SVS angelegter Nutzer verwendet werden. Auch in diesem Fall hat ein Nutzer vom Typ Manager das Recht alle Funktionen
          auszuführen, wobei der Zugriff auf bestimmte Kameras/ im Privilegienprofil beschränkt werden kann (siehe Hilfefunktion in SVS).
          Als Best Practice wird vorgeschlagen jeweils einen User im DSM und einen in der SVS anzulegen:

          • DSM-User als Mitglied der Admin-Gruppe: uneingeschränkter Test aller Modulfunktionen -> session:DSM
          • SVS-User als Manager oder Betrachter: angepasstes Privilegienprofil -> session: SurveillanceStation

          Über das Attribut "session" kann ausgewählt werden, ob die Session mit dem DSM oder der SVS augebaut werden soll.
          Erfolgt der Session-Aufbau mit dem DSM, stehen neben der SVS Web-API auch darüber hinaus gehende API-Zugriffe zur Verfügung die unter Umständen zur Verarbeitung benötigt werden.

          Nach der Gerätedefinition ist die Grundeinstellung "Login in das DSM", d.h. es können Credentials mit Admin-Berechtigungen genutzt werden um zunächst alle
          Funktionen der Kameras testen zu können. Danach können die Credentials z.B. in Abhängigkeit der benötigten Funktionen auf eine SVS-Session mit entsprechend beschränkten Privilegienprofil umgestellt werden.

          Die nachfolgende Aufstellung zeigt die Mindestanforderungen der jeweiligen Modulfunktionen an die Nutzerrechte.

          • set ... on
          • session: ServeillanceStation - Betrachter mit erweiterten Privileg "manuelle Aufnahme"
          • set ... off
          • session: ServeillanceStation - Betrachter mit erweiterten Privileg "manuelle Aufnahme"
          • set ... snap
          • session: ServeillanceStation - Betrachter
          • set ... disable
          • session: ServeillanceStation - Manager
          • set ... enable
          • session: ServeillanceStation - Manager
          • set ... expmode
          • session: ServeillanceStation - Manager
          • set ... motdetsc
          • session: ServeillanceStation - Manager
          • set ... goPreset
          • session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
          • set ... runPatrol
          • session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
          • set ... goAbsPTZ
          • session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
          • set ... move
          • session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
          • set ... runView
          • session: ServeillanceStation - Betrachter mit Privileg Liveansicht für Kamera
          • set ... stopView
          • -
          • set ... credentials
          • -
          • set ... extevent
          • session: DSM - Nutzer Mitglied von Admin-Gruppe
          • get ... caminfoall
          • session: ServeillanceStation - Betrachter
          • get ... eventlist
          • session: ServeillanceStation - Betrachter
          • get ... svsinfo
          • session: ServeillanceStation - Betrachter
          • get ... snapfileinfo
          • session: ServeillanceStation - Betrachter
          • get ... stmUrlPath
          • session: ServeillanceStation - Betrachter


          HTTP-Timeout setzen

          Alle Funktionen dieses Moduls verwenden HTTP-Aufrufe gegenüber der SVS Web API.
          Der Standardwert für den HTTP-Timeout beträgt 4 Sekunden. Durch Setzen des Attributes "httptimeout" > 0 kann dieser Wert bei Bedarf entsprechend den technischen Gegebenheiten angepasst werden.



        Set
          Es gibt zur Zeit folgende Optionen für "set <name> ...":

          "on [rectime]": startet eine Aufnahme. Die Aufnahme wird automatisch nach Ablauf der Zeit [rectime] gestoppt.
          Mit rectime = 0 wird eine Daueraufnahme gestartet die durch "set <name> off" wieder gestoppt werden muß.
          "off" : stoppt eine laufende Aufnahme manuell oder durch die Nutzung anderer Events (z.B. über at, notify)
          "snap": löst einen Schnappschuß der entsprechenden Kamera aus und speichert ihn in der Synology Surveillance Station
          "disable": deaktiviert eine Kamera in der Synology Surveillance Station
          "enable": aktiviert eine Kamera in der Synology Surveillance Station
          "credentials <username> <password>": speichert die Zugangsinformationen
          "expmode [ day | night | auto ]": aktiviert den Belichtungsmodus Tag, Nacht oder Automatisch
          "extevent [ 1-10 ]": löst das externe Ereignis 1-10 aus (Aktionsregel in SVS)
          "motdetsc [ camera | SVS | disable ]": schaltet die Bewegungserkennung in den gewünschten Modus (durch Kamera, SVS, oder deaktiviert)
          "goPreset <Presetname>": bewegt eine PTZ-Kamera zu einer vordefinierten Preset-Position
          "runPatrol <Patrolname>": startet eine vordefinierte Überwachungstour einer PTZ-Kamera
          "goAbsPTZ [ X Y | up | down | left | right ]": positioniert eine PTZ-camera zu einer absoluten X/Y-Koordinate oder maximalen up/down/left/right-position
          "move [ up | down | left | right | dir_X ]": startet kontinuerliche Bewegung einer PTZ-Kamera in Richtung up/down/left/right bzw. dir_X
          "runView [image | link | link_open | lastrec | lastrec_open | <room> ]": startet einen Livestream als eingbettetes Image oder als Link
          "stopView": stoppt einen Kamera-Livestream


          "set <name> [on] [off]"

          Der Befehl "set <name> on" startet eine Aufnahme. Die Standardaufnahmedauer beträgt 15 Sekunden. Sie kann mit dem Attribut "rectime" individuell festgelegt werden. Die im Attribut (bzw. im Standard) hinterlegte Aufnahmedauer kann einmalig mit "set <name> on [rectime]" überschrieben werden. Die Aufnahme stoppt automatisch nach Ablauf der Zeit "rectime".
          Ein Sonderfall ist der Start einer Daueraufnahme mit "set <name> on 0" bzw. dem Attributwert "rectime = 0". In diesem Fall wird eine Daueraufnahme gestartet die explizit wieder mit dem Befehl "set <name> off" gestoppt werden muß.
          Das Aufnahmeverhalten kann weiterhin mit dem Attribut "recextend" wie folgt beeinflusst werden.

          Attribut "recextend = 0" bzw. nicht gesetzt (Standard):

          • wird eine Aufnahme mit z.B. rectime=22 gestartet, wird kein weiterer Startbefehl für eine Aufnahme akzeptiert bis diese gestartete Aufnahme nach 22 Sekunden beendet ist. Ein Hinweis wird bei verbose=3 im Logfile protokolliert.

          Attribut "recextend = 1" gesetzt:

          • eine zuvor gestartete Aufnahme wird bei einem erneuten "set on" -Befehl um die Aufnahmezeit "rectime" verlängert. Das bedeutet, dass der Timer für den automatischen Stop auf den Wert "rectime" neu gesetzt wird. Dieser Vorgang wiederholt sich mit jedem Start-Befehl. Dadurch verlängert sich eine laufende Aufnahme bis kein Start-Inpuls mehr registriert wird.
          • eine zuvor gestartete Endlos-Aufnahme wird mit einem erneuten "set on"-Befehl nach der Aufnahmezeit "rectime" gestoppt (Timerneustart). Ist dies nicht gewünscht, ist darauf zu achten dass bei der Verwendung einer Endlos-Aufnahme das Attribut "recextend" nicht verwendet wird.

          Beispiele für einfachen Start/Stop einer Aufnahme:

          set <name> on [rectime] startet die Aufnahme der Kamera <name>, automatischer Stop der Aufnahme nach Ablauf der Zeit [rectime] (default 15s oder wie im Attribut "rectime" angegeben)
          set <name> off stoppt die Aufnahme der Kamera <name>


          "set <name> snap"

          Ein Schnappschuß kann ausgelöst werden mit:
           
               set <name> snap 
            
          Nachfolgend einige Beispiele für die Auslösung von Schnappschüssen.

          Soll eine Reihe von Schnappschüssen ausgelöst werden wenn eine Aufnahme startet, kann das z.B. durch folgendes notify geschehen.
          Sobald der Start der Kamera CamHE1 ausgelöst wird (Attribut event-on-change-reading -> "Record" setzen), werden abhängig davon 3 Snapshots im Abstand von 2 Sekunden getriggert.
               define he1_snap_3 notify CamHE1:Record.*Start define h3 at +*{3}00:00:02 set CamHE1 snap
            
          Triggern von 2 Schnappschüssen der Kamera "CamHE1" im Abstand von 6 Sekunden nachdem der Bewegungsmelder "MelderHE1" einen Event gesendet hat,
          kann z.B. mit folgendem notify geschehen:
               define he1_snap_2 notify MelderHE1:on.* define h2 at +*{2}00:00:06 set CamHE1 snap 
            
          Es wird die ID und der Filename des letzten Snapshots als Wert der Variable "LastSnapId" bzw. "LastSnapFilename" in den Readings der Kamera ausgegeben.

          "set <name> [enable] [disable]"

          Um eine Liste von Kameras oder alle Kameras (mit Regex) zum Beispiel um 21:46 zu deaktivieren / zu aktivieren zwei Beispiele mit at:
               define a13 at 21:46 set CamCP1,CamFL,CamHE1,CamTER disable (enable)
               define a14 at 21:46 set Cam.* disable (enable)
            
          Etwas komfortabler gelingt das Schalten aller Kameras über einen Dummy. Zunächst wird der Dummy angelegt:
               define allcams dummy
               attr allcams eventMap on:enable off:disable
               attr allcams room Cams
               attr allcams webCmd enable:disable
            
          Durch Verknüpfung mit zwei angelegten notify, jeweils ein notify für "enable" und "disable", kann man durch Schalten des Dummys auf "enable" bzw. "disable" alle Kameras auf einmal aktivieren bzw. deaktivieren.
               define all_cams_disable notify allcams:.*off set CamCP1,CamFL,CamHE1,CamTER disable
               attr all_cams_disable room Cams
          
               define all_cams_enable notify allcams:on set CamCP1,CamFL,CamHE1,CamTER enable
               attr all_cams_enable room Cams
            


          "set <name> expmode [day] [night] [auto]"

          Mit diesem Befehl kann der Belichtungsmodus der Kameras gesetzt werden. Dadurch wird z.B. das Verhalten der Kamera-LED's entsprechend gesteuert. Die erfolgreiche Umschaltung wird durch das Reading CamExposureMode ("get ... caminfoall") reportet.

          Hinweis:
          Die erfolgreiche Ausführung dieser Funktion ist davon abhängig ob die SVS diese Funktionalität der Kamera unterstützt. Ist in SVS -> IP-Kamera -> Optimierung -> Belichtungsmodus das Feld für den Tag/Nachtmodus grau hinterlegt, ist nicht von einer lauffähigen Unterstützung dieser Funktion auszugehen.


          "set <name> motdetsc [camera] [SVS] [disable]"

          Der Befehl "motdetsc" (steht für motion detection source) schaltet die Bewegungserkennung in den gewünschten Modus. Wird die Bewegungserkennung durch die Kamera / SVS ohne weitere Optionen eingestellt, werden die momentan gültigen Bewegungserkennungsparameter der Kamera / SVS beibehalten. Die erfolgreiche Ausführung der Operation lässt sich u.a. anhand des Status von SVS -> IP-Kamera -> Ereigniserkennung -> Bewegung nachvollziehen.

          Für die Bewegungserkennung durch SVS bzw. durch Kamera können weitere Optionen angegeben werden. Die verfügbaren Optionen bezüglich der Bewegungserkennung durch SVS sind "Empfindlichkeit" und "Schwellwert".

            set motdetsc SVS [Empfindlichkeit] [Schwellwert] # Befehlsmuster
            set motdetsc SVS 91 30 # setzt die Empfindlichkeit auf 91 und den Schwellwert auf 30
            set motdetsc SVS 0 40 # behält gesetzten Wert für Empfindlichkeit bei, setzt Schwellwert auf 40
            set motdetsc SVS 15 # setzt die Empfindlichkeit auf 15, Schwellwert bleibt unverändert


          Wird die Bewegungserkennung durch die Kamera genutzt, stehen die Optionen "Empfindlichkeit", "Objektgröße" und "Prozentsatz für Auslösung" zur Verfügung.

            set motdetsc camera [Empfindlichkeit] [Schwellwert] [Prozentsatz] # Befehlsmuster
            set motdetsc camera 89 0 20 # setzt die Empfindlichkeit auf 89, Prozentsatz auf 20
            set motdetsc camera 0 40 10 # behält gesetzten Wert für Empfindlichkeit bei, setzt Schwellwert auf 40, Prozentsatz auf 10
            set motdetsc camera 30 # setzt die Empfindlichkeit auf 30, andere Werte bleiben unverändert


          Es ist immer die Reihenfolge der Optionswerte zu beachten. Nicht gewünschte Optionen sind mit "0" zu besetzen sofern danach Optionen folgen deren Werte verändert werden sollen (siehe Beispiele oben). Der Zahlenwert der Optionen beträgt 1 - 99 (außer Sonderfall "0").

          Die jeweils verfügbaren Optionen unterliegen der Funktion der Kamera und der Unterstützung durch die SVS. Es können jeweils nur die Optionen genutzt werden die in SVS -> Kamera bearbeiten -> Ereigniserkennung zur Verfügung stehen. Weitere Infos sind der Online-Hilfe zur SVS zu entnehmen.

          Über den Befehl "get ... caminfoall" wird auch das Reading "CamMotDetSc" aktualisiert welches die gegenwärtige Einstellung der Bewegungserkennung dokumentiert. Es werden nur die Parameter und Parameterwerte angezeigt, welche die SVS aktiv unterstützt. Die Kamera selbst kann weiterführende Einstellmöglichkeiten besitzen.

          Beipiel:
            CamMotDetSc    SVS, sensitivity: 76, threshold: 55
            


          "set <name> goPreset <Preset>"

          Mit diesem Kommando können PTZ-Kameras in eine vordefininierte Position bewegt werden.
          Die Preset-Positionen müssen dazu zunächst in der Synology Surveillance Station angelegt worden sein. Das geschieht in der PTZ-Steuerung im IP-Kamera Setup. Die Presets werden über das Kommando "get <name> caminfoall" eingelesen (geschieht bei restart von FHEM automatisch). Der Einlesevorgang kann durch ein Kamerapolling regelmäßig wiederholt werden. Ein langes Pollingintervall ist in diesem Fall empfehlenswert, da sich die Presetpositionen nur im Fall der Neuanlage bzw. Änderung verändern werden.

          Hier ein Beispiel einer PTZ-Steuerung in Abhängigkeit eines IR-Melder Events:
              define CamFL.Preset.Wandschrank notify MelderTER:on.* set CamFL goPreset Wandschrank, ;; define CamFL.Preset.record at +00:00:10 set CamFL on 5 ;;;; define s3 at +*{3}00:00:05 set CamFL snap ;; define CamFL.Preset.back at +00:00:30 set CamFL goPreset Home
            
          Funktionsweise:
          Der IR-Melder "MelderTER" registriert eine Bewegung. Daraufhin wird die Kamera CamFL in die Preset-Position "Wandschrank" gebracht. Eine Aufnahme mit Dauer von 5 Sekunden startet 10 Sekunden später. Da die Voraufnahmezeit der Kamera 10s beträgt (vgl. Reading "CamPreRecTime"), startet die effektive Aufnahme wenn der Kameraschwenk beginnt.
          Mit dem Start der Aufnahme werden drei Schnappschüsse im Abstand von 5 Sekunden angefertigt.
          Nach einer Zeit von 30 Sekunden fährt die Kamera wieder zurück in die "Home"-Position.

          Ein Auszug aus dem Log verdeutlicht den Ablauf:
            
             2016.02.04 15:02:14 2: CamFL - Camera Flur_Vorderhaus has moved to position "Wandschrank"
             2016.02.04 15:02:24 2: CamFL - Camera Flur_Vorderhaus Recording with Recordtime 5s started
             2016.02.04 15:02:29 2: CamFL - Snapshot of Camera Flur_Vorderhaus has been done successfully
             2016.02.04 15:02:30 2: CamFL - Camera Flur_Vorderhaus Recording stopped
             2016.02.04 15:02:34 2: CamFL - Snapshot of Camera Flur_Vorderhaus has been done successfully
             2016.02.04 15:02:39 2: CamFL - Snapshot of Camera Flur_Vorderhaus has been done successfully
             2016.02.04 15:02:44 2: CamFL - Camera Flur_Vorderhaus has moved to position "Home"
            

          "set <name> runPatrol <Patrolname>"

          Dieses Kommando startet die vordefinierterte Überwachungstour einer PTZ-Kamera.
          Die Überwachungstouren müssen dazu zunächst in der Synology Surveillance Station angelegt worden sein. Das geschieht in der PTZ-Steuerung im IP-Kamera Setup -> PTZ-Steuerung -> Überwachung. Die Überwachungstouren (Patrols) werden über das Kommando "get <name> caminfoall" eingelesen, welches beim Restart von FHEM automatisch abgearbeitet wird. Der Einlesevorgang kann durch ein Kamerapolling regelmäßig wiederholt werden. Ein langes Pollingintervall ist in diesem Fall empfehlenswert, da sich die Überwachungstouren nur im Fall der Neuanlage bzw. Änderung verändern werden. Nähere Informationen zur Anlage von Überwachungstouren sind in der Hilfe zur Surveillance Station enthalten.

          "set <name> goAbsPTZ [ X Y | up | down | left | right ]"

          Mit diesem Kommando wird eine PTZ-Kamera in Richtung einer wählbaren absoluten X/Y-Koordinate bewegt, oder zur maximalen Absolutposition in Richtung up/down/left/right. Die Option ist nur für Kameras verfügbar die das Reading "CapPTZAbs=true" (die Fähigkeit für PTZAbs-Aktionen) besitzen. Die Eigenschaften der Kamera kann mit "get <name> caminfoall" abgefragt werden.

          Beispiel für Ansteuerung absoluter X/Y-Koordinaten:
              set <name> goAbsPTZ 120 450
            
          Dieses Beispiel bewegt die Kameralinse in die Position X=120 und Y=450.
          Der Wertebereich ist dabei:
              X = 0 - 640      (0 - 319 bewegt nach links, 321 - 640 bewegt nach rechts, 320 bewegt die Linse nicht)
              Y = 0 - 480      (0 - 239 bewegt nach unten, 241 - 480 bewegt nach oben, 240 bewegt die Linse nicht) 
            
          Die Linse kann damit in kleinsten bis sehr großen Schritten in die gewünschte Richtung bewegt werden. Dieser Vorgang muß ggf. mehrfach wiederholt werden um die Kameralinse in die gewünschte Position zu bringen.

          Soll die Bewegung mit der maximalen Schrittweite erfolgen, kann zur Vereinfachung der Befehl:
             set <name> goAbsPTZ up [down ] [left] [right]
            
          verwendet werden. Die Optik wird in diesem Fall mit der größt möglichen Schrittweite zur Absolutposition in der angegebenen Richtung bewegt. Auch in diesem Fall muß der Vorgang ggf. mehrfach wiederholt werden um die Kameralinse in die gewünschte Position zu bringen.


          set <name> move [ up | down | left | right | dir_X ] [Sekunden]

          Mit diesem Kommando wird eine kontinuierliche Bewegung der PTZ-Kamera gestartet. Neben den vier Grundrichtungen up/down/left/right stehen auch Zwischenwinkelmaße "dir_X" zur Verfügung. Die Feinheit dieser Graduierung ist von der Kamera abhängig und kann dem Reading "CapPTZDirections" entnommen werden.

          Das Bogenmaß von 360 Grad teilt sich durch den Wert von "CapPTZDirections" und beschreibt die Bewegungsrichtungen beginnend mit "0=rechts" entgegen dem Uhrzeigersinn. D.h. bei einer Kamera mit "CapPTZDirections = 8" bedeutet dir_0 = rechts, dir_2 = oben, dir_4 = links, dir_6 = unten bzw. dir_1, dir_3, dir_5 und dir_7 die entsprechenden Zwischenrichtungen. Die möglichen Bewegungsrichtungen bei Kameras mit "CapPTZDirections = 32" sind dementsprechend kleinteiliger.

          Im Gegensatz zum "set <name> goAbsPTZ"-Befehl startet der Befehl "set <name> move" eine kontinuierliche Bewegung bis ein Stop-Kommando empfangen wird. Das Stop-Kommando wird nach Ablauf der optional anzugebenden Zeit [Sekunden] ausgelöst. Wird diese Laufzeit nicht angegeben, wird implizit Sekunde = 1 gesetzt.

          Beispiele:
           
              set <name> move up 0.5      : bewegt PTZ 0,5 Sek. (zzgl. Prozesszeit) nach oben
              set <name> move dir_1 1.5   : bewegt PTZ 1,5 Sek. (zzgl. Prozesszeit) nach rechts-oben 
              set <name> move dir_20 0.7  : bewegt PTZ 1,5 Sek. (zzgl. Prozesszeit) nach links-unten ("CapPTZDirections = 32)"
            

          set <name> runView [ image | lastrec | lastrec_open | link | link_open <room> ]

          Mit "image, link, link_open" wird ein Livestream (mjpeg-Stream) der Kamera, entweder als eingebettetes Image oder als generierter Link, gestartet. Der Zugriff auf die letzte Aufnahme einer Kamera kann über die Zusätze "lastrec" bzw. "lastrec_open" erfolgen. Das Verhalten des Livestreams im FHEMWEB kann durch Angaben im Attribut "htmlattr" beeinflusst werden.

          Beispiel:
              attr <name> htmlattr target=_blank width="500" height="375"
              attr <name> htmlattr target=_blank width=500,height=375
              attr <name> htmlattr width=700,height=525,top=200,left=300
            
          Mit diesen Attributwerten öffnet der Link (mit Klick) als weiteres Fenster/Browsertab. Wird der Stream als Image gestartet, ändert sich die Größe entsprechend der Angaben von Width und Hight.
          Das Kommando "set <name> runView link_open" startet den Livestreamlink sofort in einem neuen Browserfenster (longpoll=1 muß für WEB gesetzt sein). Dabei wird für jede aktive FHEM-Session eine Fensteröffnung initiiert. Soll dieses Verhalten geändert werden, kann "set <name> runView link_open <room>" verwendet werden um das Öffnen des Browserwindows in einem beliebigen, in einer FHEM-Session angezeigten Raum <room>, zu initiieren.
          Das gesetzte Attribut "livestreamprefix" überschreibt im Reading "LiveStreamUrl" die Angaben für Protokoll, Servername und Port. Damit kann z.B. die LiveStreamUrl für den Versand und externen Zugriff auf die SVS modifiziert werden.

          Beispiel:
              attr <name> livestreamprefix https://<Servername>:<Port>
            
          Der Livestream wird über das Kommando "set <name> stopView" wieder beendet.

          set <name> extevent [ 1-10 ]

          Dieses Kommando triggert ein externes Ereignis (1-10) in der SVS. Die Aktionen, die dieses Ereignis auslöst, sind zuvor in dem Aktionsregeleditor der SVS einzustellen. Es stehen die Ereignisse 1-10 zur Verfügung. In der Banchrichtigungs-App der SVS können auch Email, SMS oder Mobil (DS-Cam) Nachrichten ausgegeben werden wenn ein externes Ereignis ausgelöst wurde. Nähere Informationen dazu sind in der Hilfe zum Aktionsregeleditor zu finden. Der verwendete User benötigt Admin-Rechte in einer DSM-Session.



        Get
          Mit SSCam können die Eigenschaften der Surveillance Station und der Kameras abgefragt werden. ZUr Zeit stehen dazu folgende Befehle zur Verfügung:
                get <name> caminfoall
                get <name> eventlist
                get <name> stmUrlPath
                get <name> svsinfo
                get <name> snapfileinfo
            
          Mit dem Befehl "get <name> caminfoall" werden abhängig von der Art der Kamera (z.B. Fix- oder PTZ-Kamera) die verfügbaren Eigenschaften ermittelt und als Readings zur Verfügung gestellt.
          So wird zum Beispiel das Reading "Availability" auf "disconnected" gesetzt falls die Kamera von der Surveillance Station getrennt wird und kann für weitere Verarbeitungen genutzt werden.
          Durch "get <name> eventlist" wird das Reading "CamEventNum" und "CamLastRec" aktualisiert, welches die Gesamtanzahl der registrierten Kameraevents und den Pfad / Namen der letzten Aufnahme enthält. Dieser Befehl wird implizit mit "get ... caminfoall" ausgeführt.
          Mit dem Attribut "videofolderMap" kann der Inhalt des Readings "VideoFolder" überschrieben werden. Dies kann von Vortel sein wenn das Surveillance-Verzeichnis der SVS an dem lokalen PC unter anderem Pfadnamen gemountet ist und darüber der Zugriff auf die Aufnahmen erfolgen soll (z.B. Verwendung Email-Versand).

          Ein DOIF-Beispiel für den Email-Versand von Snapshot und Aufnahmelink per Non-blocking sendmail:
               define CamHE1.snap.email DOIF ([CamHE1:"LastSnapFilename"]) 
               ({DebianMailnbl ('Recipient@Domain','Bewegungsalarm CamHE1','Eine Bewegung wurde an der Haustür registriert. Aufnahmelink: \  
               \[CamHE1:VideoFolder]\[CamHE1:CamLastRec]','/media/sf_surveillance/@Snapshot/[CamHE1:LastSnapFilename]')})
            
          Mit "get <name> snapfileinfo" wird der Filename des letzten Schnapschusses ermittelt. Der Befehl wird implizit mit "get <name> snap" ausgeführt.
          Der Befehl "get <name> svsinfo" ist eigentlich nicht von der Kamera abhängig, sondern ermittelt vielmehr allgemeine Informationen zur installierten SVS-Version und andere Eigenschaften.
          Die Funktionen "caminfoall" und "svsinfo" werden einmalig automatisch beim Start von FHEM ausgeführt um steuerungsrelevante Informationen zu sammeln.
          Es ist darauf zu achten dass die Credentials gespeichert wurden !

          get <name> stmUrlPath

          Mit diesem Kommando wird der aktuelle Streamkey der Kamera abgerufen und das Reading mit dem Key-Wert gefüllt. Dieser Streamkey kann verwendet werden um eigene Aufrufe eines Livestreams aufzubauen (siehe Beispiel). Wenn das Attribut "showStmInfoFull" gesetzt ist, werden zusaätzliche Stream-Informationen wie "StmKeyUnicst", "StmKeymjpegHttp" ausgegeben. Diese Readings enthalten die gültigen Stream-Pfade zu einem Livestream und können z.B. versendet und von einer entsprechenden Anwendung ohne session Id geöffnet werden. Wenn das Attribut "livestreamprefix" (Format: "http(s)://<hostname><port>) gesetzt ist, wird der Servername und Port überschrieben soweit es sinnvoll ist. Wird Polling der Kameraeigenschaften genutzt, wird die stmUrlPath-Funktion automatisch mit ausgeführt.

          Beispiel für den Aufbau eines Http-Calls zu einem Livestream mit StmKey:
              http(s)://<hostname><port>/webapi/entry.cgi?api=SYNO.SurveillanceStation.VideoStreaming&version=1&method=Stream&format=mjpeg&cameraId=5&StmKey="31fd87279976d89bb98409728cced890"
            
          cameraId (INTERNAL), StmKey müssen durch gültige Werte ersetzt werden.

          Hinweis:
          Falls der Stream-Aufruf versendet und von extern genutzt wird sowie hostname / port durch gültige Werte ersetzt und die Routerports entsprechend geöffnet werden, ist darauf zu achten dass diese sensiblen Daten nicht durch unauthorisierte Personen für den Zugriff genutzt werden können !


          Polling der Kameraeigenschaften:

          Die Abfrage der Kameraeigenschaften erfolgt automatisch, wenn das Attribut "pollcaminfoall" (siehe Attribute) mit einem Wert > 10 gesetzt wird.
          Per Default ist das Attribut "pollcaminfoall" nicht gesetzt und das automatische Polling nicht aktiv.
          Der Wert dieses Attributes legt das Intervall der Abfrage in Sekunden fest. Ist das Attribut nicht gesetzt oder < 10 wird kein automatisches Polling
          gestartet bzw. gestoppt wenn vorher der Wert > 10 gesetzt war.

          Das Attribut "pollcaminfoall" wird durch einen Watchdog-Timer überwacht. Änderungen des Attributwertes werden alle 90 Sekunden ausgewertet und entsprechend umgesetzt.
          Eine Änderung des Pollingstatus / Pollingintervalls wird im FHEM-Logfile protokolliert. Diese Protokollierung kann durch Setzen des Attributes "pollnologging=1" abgeschaltet werden.
          Dadurch kann ein unnötiges Anwachsen des Logs vermieden werden. Ab verbose=4 wird allerdings trotz gesetzten "pollnologging"-Attribut ein Log des Pollings
          zu Analysezwecken aktiviert.

          Wird FHEM neu gestartet, wird bei aktivierten Polling der ersten Datenabruf innerhalb 60s nach dem Start ausgeführt.

          Der Status des automatischen Pollings wird durch das Reading "PollState" signalisiert:

          • PollState = Active - automatisches Polling wird mit Intervall entsprechend "pollcaminfoall" ausgeführt
          • PollState = Inactive - automatisches Polling wird nicht ausgeführt

          Die Bedeutung der Readingwerte ist unter Readings beschrieben.

          Hinweise:

          Wird Polling eingesetzt, sollte das Intervall nur so kurz wie benötigt eingestellt werden da die ermittelten Werte überwiegend statisch sind.
          Das eingestellte Intervall sollte nicht kleiner sein als die Summe aller HTTP-Verarbeitungszeiten. Pro Pollingaufruf und Kamera werden ca. 10 - 20 Http-Calls gegen die Surveillance Station abgesetzt.

          Bei einem eingestellten HTTP-Timeout (siehe Attribut) "httptimeout") von 4 Sekunden kann die theoretische Verarbeitungszeit nicht höher als 80 Sekunden betragen.
          In dem Beispiel sollte man das Pollingintervall mit einem Sicherheitszuschlag auf nicht weniger 160 Sekunden setzen.
          Ein praktikabler Richtwert könnte zwischen 600 - 1800 (s) liegen.
          Sind mehrere Kameras in SSCam definiert, sollte "pollcaminfoall" nicht bei allen Kameras auf exakt den gleichen Wert gesetzt werden um Verarbeitungsengpässe
          und dadurch versursachte potentielle Fehlerquellen bei der Abfrage der Synology Surveillance Station zu vermeiden.
          Ein geringfügiger Unterschied zwischen den Pollingintervallen der definierten Kameras von z.B. 1s kann bereits als ausreichend angesehen werden.

        Internals
          Die Bedeutung der verwendeten Internals stellt die nachfolgende Liste dar:

          • CAMID - die ID der Kamera in der SVS, der Wert wird automatisch anhand des SVS-Kameranamens ermittelt.
          • CAMNAME - der Name der Kamera in der SVS
          • CREDENTIALS - der Wert ist "Set" wenn die Credentials gesetzt wurden
          • NAME - der Kameraname in FHEM
          • OPMODE - die zuletzt ausgeführte Operation des Moduls
          • SERVERADDR - IP-Adresse des SVS Hostes
          • SERVERPORT - der SVS-Port


        Readings

          Über den Pollingmechanismus bzw. durch Abfrage mit "Get" werden Readings bereitgestellt, deren Bedeutung in der nachfolgenden Tabelle dargestellt sind.
          Die übermittelten Readings können in Abhängigkeit des Kameratyps variieren.

          • Availability
          • - Verfügbarkeit der Kamera (disabled, enabled, disconnected, other)
          • CamEventNum
          • - liefert die Gesamtanzahl der in SVS registrierten Events der Kamera
          • CamExposureControl
          • - zeigt den aktuell eingestellten Typ der Belichtungssteuerung
          • CamExposureMode
          • - aktueller Belichtungsmodus (Day, Night, Auto, Schedule, Unknown)
          • CamForceEnableMulticast
          • - sagt aus ob die Kamera verpflichet ist Multicast einzuschalten.
          • CamIP
          • - IP-Adresse der Kamera
          • CamLastRec
          • - Pfad / Name der letzten Aufnahme
          • CamLastRecTime
          • - Datum / Startzeit - Stopzeit der letzten Aufnahme
          • CamLiveMode
          • - Quelle für Live-Ansicht (DS, Camera)
          • CamModel
          • - Kameramodell
          • CamMotDetSc
          • - Status der Bewegungserkennung (disabled, durch Kamera, durch SVS) und deren Parameter
          • CamPort
          • - IP-Port der Kamera
          • CamPreRecTime
          • - Dauer der der Voraufzeichnung in Sekunden (Einstellung in SVS)
          • CamRecShare
          • - gemeinsamer Ordner auf der DS für Aufnahmen
          • CamRecVolume
          • - Volume auf der DS für Aufnahmen
          • CamVendor
          • - Kamerahersteller Bezeichnung
          • CamVideoFlip
          • - Ist das Video gedreht
          • CamVideoMirror
          • - Ist das Video gespiegelt
          • CapAudioOut
          • - Fähigkeit der Kamera zur Audioausgabe über Surveillance Station (false/true)
          • CapChangeSpeed
          • - Fähigkeit der Kamera verschiedene Bewegungsgeschwindigkeiten auszuführen
          • CapPTZAbs
          • - Fähigkeit der Kamera für absolute PTZ-Aktionen
          • CapPTZAutoFocus
          • - Fähigkeit der Kamera für Autofokus Aktionen
          • CapPTZDirections
          • - die verfügbaren PTZ-Richtungen der Kamera
          • CapPTZFocus
          • - Art der Kameraunterstützung für Fokussierung
          • CapPTZHome
          • - Unterstützung der Kamera für Home-Position
          • CapPTZIris
          • - Unterstützung der Kamera für Iris-Aktion
          • CapPTZPan
          • - Unterstützung der Kamera für Pan-Aktion
          • CapPTZTilt
          • - Unterstützung der Kamera für Tilt-Aktion
          • CapPTZZoom
          • - Unterstützung der Kamera für Zoom-Aktion
          • DeviceType
          • - Kameratyp (Camera, Video_Server, PTZ, Fisheye)
          • Error
          • - Meldungstext des letzten Fehlers
          • Errorcode
          • - Fehlercode des letzten Fehlers
          • LastSnapFilename
          • - der Filename des letzten Schnapschusses
          • LastSnapId
          • - die ID des letzten Schnapschusses
          • LastUpdateTime
          • - Datum / Zeit der letzten Aktualisierung durch "caminfoall"
          • LiveStreamUrl
          • - die LiveStream-Url wenn der Stream gestartet ist. (Attribut "showStmInfoFull" muss gesetzt sein)
          • Patrols
          • - in Surveillance Station voreingestellte Überwachungstouren (bei PTZ-Kameras)
          • PollState
          • - zeigt den Status des automatischen Pollings an
          • Presets
          • - in Surveillance Station voreingestellte Positionen (bei PTZ-Kameras)
          • Record
          • - Aufnahme läuft = Start, keine Aufnahme = Stop
          • StmKey
          • - aktueller StreamKey. Kann zum öffnen eines Livestreams ohne Session Id genutzt werden.
          • StmKeyUnicst
          • - Uni-cast Stream Pfad der Kamera. (Attribut "showStmInfoFull" muss gesetzt sein)
          • StmKeymjpegHttp
          • - Mjpeg Stream Pfad (über http) der Kamera. (Attribut "showStmInfoFull" muss gesetzt sein)
          • SVScustomPortHttp
          • - benutzerdefinierter Port der Surveillance Station (HTTP) im DSM-Anwendungsportal (get mit "svsinfo")
          • SVScustomPortHttps
          • - benutzerdefinierter Port der Surveillance Station (HTTPS) im DSM-Anwendungsportal (get mit "svsinfo")
          • SVSlicenseNumber
          • - die Anzahl der installierten Kameralizenzen (get mit "svsinfo")
          • SVSuserPriv
          • - die effektiven Rechte des verwendeten Users nach dem Login (get mit "svsinfo")
          • SVSversion
          • - die Paketversion der installierten Surveillance Station (get mit "svsinfo")
          • UsedSpaceMB
          • - durch Aufnahmen der Kamera belegter Plattenplatz auf dem Volume
          • VideoFolder
          • - Pfad zu den aufgenommenen Videos


        Attribute

          • debugactivetoken - wenn gesetzt wird der Status des Active-Tokens gelogged - nur für Debugging, nicht im normalen Betrieb benutzen !
          • disable - deaktiviert das Gerätemodul bzw. die Gerätedefinition
          • httptimeout - Timeout-Wert für HTTP-Aufrufe zur Synology Surveillance Station, Default: 4 Sekunden (wenn httptimeout = "0" oder nicht gesetzt)
          • htmlattr - ergänzende Angaben zur Livestream-Url um das Verhalten wie Bildgröße zu beeinflussen
          • livestreamprefix - überschreibt die Angaben zu Protokoll, Servernamen und Port zur Weiterverwendung der Livestreamadresse als z.B. externer Link. Anzugeben in der Form "http(s)://<servername>:<port>"
          • noQuotesForSID - dieses Attribut kann in bestimmten Fällen die Fehlermeldung "402 - permission denied" vermeiden und ein login ermöglichen.
          • pollcaminfoall - Intervall der automatischen Eigenschaftsabfrage (Polling) einer Kamera (kleiner 10: kein Polling, größer 10: Polling mit Intervall)
          • pollnologging - "0" bzw. nicht gesetzt = Logging Gerätepolling aktiv (default), "1" = Logging Gerätepolling inaktiv
          • rectime - festgelegte Aufnahmezeit wenn eine Aufnahme gestartet wird. Mit rectime = 0 wird eine Endlosaufnahme gestartet. Ist "rectime" nicht gesetzt, wird der Defaultwert von 15s verwendet.
          • recextend - "rectime" einer gestarteten Aufnahme wird neu gesetzt. Dadurch verlängert sich die Aufnahemzeit einer laufenden Aufnahme
          • session - Auswahl der Login-Session. Nicht gesetzt oder "DSM" -> session wird mit DSM aufgebaut (Standard). "SurveillanceStation" -> Session-Aufbau erfolgt mit SVS
          • simu_SVSversion - simuliert eine andere SVS-Version. (es ist nur eine niedrigere als die installierte SVS Version möglich !)
          • showStmInfoFull - zusaätzliche Streaminformationen wie LiveStreamUrl, StmKeyUnicst, StmKeymjpegHttp werden ausgegeben
          • showPassInLog - wenn gesetzt wird das verwendete Passwort im Logfile (verbose 4) angezeigt. (default = 0)
          • videofolderMap - ersetzt den Inhalt des Readings "VideoFolder", Verwendung z.B. bei gemounteten Verzeichnissen
          • verbose

            • Es werden verschiedene Verbose-Level unterstützt. Dies sind im Einzelnen:
              0 - Start/Stop-Ereignisse werden geloggt
              1 - Fehlermeldungen werden geloggt
              2 - Meldungen über wichtige Ereignisse oder Alarme
              3 - gesendete Kommandos werden geloggt
              4 - gesendete und empfangene Daten werden geloggt
              5 - alle Ausgaben zur Fehleranalyse werden geloggt. ACHTUNG: möglicherweise werden sehr viele Daten in das Logfile geschrieben!


            weitere Attribute:

          • readingFnAttributes


      STACKABLE_CC

        Mit Hilfe dieses Moduls kann man die "Stackable CC" Geräte von busware.de in FHEM integrieren. Diese Geräte ermöglichen eine Menge von CULs an einem RPi anzuschliessen. Das erste Gerät wird als CUL definiert, alle nachfolgenden als STACKABLE_CC.

        Define
          define <name> STACKABLE_CC <Base-Device-Name>

          <Base-Device-Name> ist der Name des Gerätes, der als Basis für das aktuelle Gerät dient.
          Beispiel:
            define SCC0 CUL /dev/ttyAMA0@38400
            attr SCC0 rfmode SlowRF
            define SCC1 STACKABLE_CC SCC0
            attr SCC1 rfmode HomeMatic
            define SCC2 STACKABLE_CC SCC1
            attr SCC2 rfmode Max
          Wichtig:
          • Das rfmode Attribut muss explizit spezifiziert werden. Das gilt nur für die STACKABLE_CC Definitionen, und nicht für die erste, die als CUL definiert wurde.
          • Falls SlowRF spezifiziert wurde, dann muss das FHTID explizit gesetzt werden, mit folgendem Kommando: "set SCCX raw T01HHHH". Auch das ist nur für die STACKABLE_CC nötig.
          • Falls ein Gerät umbenannt wird, was als Basis für ein STACKABLE_CC dient, dann muss es auch in der Definition des abhängigen Gerätes umbenannt werden, und FHEM muss neugestartet werden.
        Set
          Die gleichen wie für das CUL.

        Get
          Die gleichen wie für das CUL.

        Attributes
        • IODev

        • ignore

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

      STOCKQUOTES

      (en | de)
        Wertpapierdaten von verschiedenen Quellen holen
        Vorbereitung
        Perl Modul Finance::Quote muss installiert werden:
        cpan install Finance::Quote oder sudo apt-get install libfinance-quote-perl

        Define
          define <name> STOCKQUOTES

        Set
          <Symbol> hängt von den jeweiligen Quellen ab. Kann auch eine WKN sein. Hier muss ggf. experimentiert werden.

        • set <name> buy <Symbol> <Menge> <Gesamtpreis>
          Wertpapier in Depot einbuchen. Wenn dieses Wertpapier bereits vorhanden ist, werden die Neuen einfach dazuaddiert.

        • set <name> sell <Symbol> <Menge> <Gesamtpreis>
          Wertpapier (auch Teilmenge) wieder ausbuchen.

        • set <name> add <Symbol>
          Wertpapier nur beobachten

        • set <name> remove <Symbol>
          Entferne Wertpapier das nur beobachtet wird.

        • set <name> clearReadings
          Alle Readings löschen.

        • set <name> update
          Alle Readings aktualisieren.

        Get
        • get <name> sources
          Verfügbare Datenquellen auflisten. Diese werden für die Attribute defaultSource und sources benötigt

        • get <name> currency <Symbol>
          Wertpapierwährung ermitteln

        Attribute
        • currency
          Währung, in der die Wertpapiere angezeigt werden.
          Default: EUR, gültige Werte: Währungskürzel

        • defaultSource
          Standardquelle für die Wertpapierdaten.
          Default: europe, gültige Werte: alles was get <name> sources ausgibt.

        • queryTimeout
          Timeout beim holen der Daten in Sekunden.
          Standard: 120, gültige Werte: Zahl

        • pollInterval
          Aktualisierungsintervall in Sekunden.
          Standard: 300, gültige Werte: Zahl

        • sources
          Für jedes Wertpapier kann eine eigene Datenquelle definiert werden.
          Die Datenquellen können über get <name> sources angefragt werden.
          Format: <Symbol>:<Source>[,<Symbol>:<Source>...]
          Beispiel: A0M16S:vwd,532669:unionfunds,849104:unionfunds
          Alle nicht aufgeführten Werpapiere werden über die defaultSource abgefragt.

        • stocks
          Wird über buy/sell/add/remove angelegt/modifiziert
          Enthält die Werpapiere im Format <Symbol>:<Anzahl>:<Einstandswert>[,<Symbol>:<Anzahl>:<Einstandswert>...]


      STV

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

      SUNRISE_EL

        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(-svg) oder SVG wird das vorgegebene Intervall verwendet und ein Scrolling der Zeitachse ist nicht möglich. Dies wird z.B. verwendet, um sich die Daten des vergangenen Jahres ohne Scrollen anzusehen.

          Version 2
          Wenn der Wert entweder Tag, <N>Tage, Woche, Monat oder Jahr lautet, kann der Zoom-Level für dieses SVG unabhängig vom User-spezifischen Zoom eingestellt werden. Diese Einstellung ist nützlich für mehrere Plots auf einer Seite: Eine Grafik ist mit dem Standard-Zoom am aussagekräftigsten, die anderen mit einem Zoom über eine Woche. Der optionale ganzzahlige Parameter [offset] setzt ein anderes Zeitintervall (z.B. letztes Jahr: fixedrange year -1, vorgestern: fixedrange day -2).

        • fixedoffset <nTage>
          Verschiebt den Plot-Offset um einen festen Wert (in Tagen).

        • startDate
          Setzt das Startdatum für den Plot. Wird für Demo-Installationen verwendet.

        • plotsize

        • plotmode

        • endPlotNow

        • endPlotToday

        • plotWeekStartDay

        • label
          Eine Liste, bei der die einzelnen Werte mit einem zweifachen Doppelpunkt voneinander getrennt werden. Diese Liste wird verwendet um die <L#> Zeichenfolgen in der .gplot-Datei zu ersetzen. Dabei steht das # für eine laufende Ziffer beginnend mit 1 (<L1>, <L2>, usw.). Jeder Wert wird als Perl-Ausdruck bewertet, deshalb hat man Zugriff z.B. auf die hinterlegten Funktionen.

          Egal, ob es sich bei der Plotart um gnuplot-scroll(-svg) oder SVG handelt, es können ebenfalls die Werte der individuellen Kurve für min, max, mindate, maxdate, avg, cnt, sum, currval (letzter Wert) und currdate (letztes Datum) durch Zugriff der entsprechenden Werte über das data Hash verwendet werden. Siehe untenstehendes Beispiel:
          • Beschriftunng der rechten und linken y-Achse:
            • Fhem config:
              attr wl_1 label "Temperature"::"Humidity"
            • Eintrag in der .gplot-Datei:
              set ylabel <L1>
              set y2label <L2>
          • Überschrift aus Maximum und dem letzten Wert der ersten Kurve(FileLog)
            • Fhem config:
              attr wl_1 label "Max $data{max1}, Current $data{currval1}"
            • Eintrag in der .gplot-Datei:
              set title <L1>
          Die Werte minAll und maxAll (die das Minimum/Maximum aller Werte repräsentieren) sind ebenfals im data hash vorhanden.
        • title
          Eine besondere Form der Überschrift (siehe oben), bei der die Zeichenfolge <TL> in der .gplot-Datei ersetzt wird. Standardmäßig wird als <TL> der Dateiname des Logfiles eingesetzt.

        • captionLeft
          Anzeigen der Legende auf der linken Seite

        • plotfunction
          Eine Liste, deren Werte durch Leerzeichen voneinander getrennt sind. Diese Liste wird verwendet um die <SPEC#> Zeichenfolgen in der .gplot-Datei zu ersetzen. Dabei steht das # für eine laufende Ziffer beginnend mit 1 (<SPEC1>, <SPEC2>, usw.) in der #FileLog oder #DBLog Anweisung. Mit diesem Attrbute ist es möglich eine .gplot-Datei für mehrere Geräte mit einem einzigen logdevice zu verwenden.

            Beispiel:
          • #FileLog <SPEC1>
            mit:
            attr <SVGdevice> plotfunction "4:IR\x3a:0:"
            anstelle von:
            #FileLog 4:IR\x3a:0:
          • #DbLog <SPEC1>
            mit:
            attr <SVGdevice> plotfunction "Garage_Raumtemp:temperature::"
            anstelle von:
            #DbLog Garage_Raumtemp:temperature::

        Plot-Editor
        Dieser Editor ist in der Detailansicht der SVG-Instanz zu sehen. Die meisten Features sind hier einleuchtend und bekannt, es gibt aber auch einige Ausnahmen:
        • wenn für ein Diagramm die Überschrift unterdrückt werden soll, muss im Eingabefeld notitle eingetragen werden.
        • wenn ein fester Wert (nicht aus einer Wertespalte) definiert werden soll, für den Fall, das eine Zeichenfoge gefunden wurde (z.B. 1 für eine FS20 Schalter, der AN ist und 0 für den AUS-Zustand), muss zuerst das Tics-Feld gefüllt, und die .gplot-Datei gespeichert werden, bevor der Wert über die Dropdownliste erreichbar ist.
            Beispiel:
            Eingabe im Tics-Feld: ("On" 1, "Off" 0)
            .gplot-Datei speichern
            "1" als Regexp switch.on und "0" für den Regexp switch.off vom Spalten-Dropdown auswählen (auf die Gänsefüßchen achten!).
            .gplot-Datei erneut speichern
        • Falls Range der Form {...} entspricht, dann wird sie als Perl - Expression ausgewertet. Das Ergebnis muss in der Form [min:max] sein.
        Die sichtbarkeit des Plot-Editors kann mit dem FHEMWEB Attribut ploteditor konfiguriert werden.

      SWAP

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

      SWAP_0000002200000003

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

      SWAP_0000002200000008

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

      SYSMON

      (en | de)
        Dieses Modul liefert diverse Informationen und Statistiken zu dem System, auf dem FHEM-Server ausgeführt wird. Weiterhin können auch Remote-Systeme abgefragt werden (Telnet). Es werden nur Linux-basierte Systeme unterstützt. Manche Informationen sind hardwarespezifisch und sind daher nicht auf jeder Plattform verfügbar. Bis jetzt wurde dieses Modul auf folgenden Systemen getestet: Raspberry Pi (Debian Wheezy), BeagleBone Black, FritzBox 7390, WR703N unter OpenWrt, CubieTruck und einige andere.

        Für Informationen zu einer FritzBox beachten Sie bitte auch Module: FRITZBOX und FB_CALLMONITOR. Das Modul nutzt das Perlmodule 'Net::Telnet' für den Fernzugriff. Dieses muss ggf. nachinstalliert werden.

        Define

        define <name> SYSMON [MODE[:[USER@]HOST][:PORT]] [<M1>[ <M2>[ <M3>[ <M4>]]]]

        Diese Anweisung erstellt eine neue SYSMON-Instanz. Die Parameter M1 bis M4 legen die Aktualisierungsintervalle für verschiedenen Readings (Statistiken) fest. Die Parameter sind als Multiplikatoren für die Zeit, die durch INTERVAL_BASE definiert ist, zu verstehen. Da diese Zeit fest auf 60 Sekunden gesetzt ist, können die Mx-Parameters als Zeitintervalle in Minuten angesehen werden.
        Wird einer (oder mehrere) Multiplikatoren auf Null gesetzt werden, wird das entsprechende Readings deaktiviert.

        Die Parameter sind für die Aktualisierung der Readings nach folgender Schema zuständig:
        • M1: (Default-Wert: 1)
          cpu_freq, cpu_temp, cpu_temp_avg, loadavg, stat_cpu, stat_cpu_diff, stat_cpu_percent, stat_cpu_text, power readings

        • M2: (Default-Wert: M1)
          ram, swap
        • M3: (Default-Wert: M1)
          eth0, eth0_diff, wlan0, wlan0_diff

        • M4: (Default-Wert: 10*M1)
          Filesystem-Informationen

        • folgende Parameter werden immer anhand des Basisintervalls (unabhängig von den Mx-Parameters) aktualisiert:
          fhemuptime, fhemuptime_text, idletime, idletime_text, uptime, uptime_text, starttime, starttime_text

        Für Abfrage eines entfernten Systems muss mindestens deren Adresse (HOST) angegeben werden, bei Bedarf ergänzt durch den Port und/oder den Benutzernamen. Das eventuell benötigte Passwort muss einmalig mit dem Befehl 'set password <pass>' definiert werden. Als MODE sind derzeit 'telnet' und 'local' erlaubt. 'local' erfordert keine weiteren Angaben und kann auch ganz weggelassen werden.

        Readings:

        • cpu_core_count
          Anzahl der CPU Kerne
        • cpu_model_name
          CPU Modellname
        • cpu_bogomips
          CPU Speed: BogoMIPS
        • cpu_freq (auf den DualCore-Systemen wie Cubietruck auch cpu1_freq)
          CPU-Frequenz

        • cpu_temp
          CPU-Temperatur

        • cpu_temp_avg
          Durchschnitt der CPU-Temperatur, gebildet über die letzten 4 Werte.

        • fhemuptime
          Zeit (in Sekunden) seit dem Start des FHEM-Servers.

        • fhemuptime_text
          Zeit seit dem Start des FHEM-Servers: Menschenlesbare Ausgabe (texttuelle Darstellung).

        • fhemstarttime
          Startzeit (in Sekunden seit 1.1.1970 1:00:00) des FHEM-Servers.

        • fhemstarttime_text
          Startzeit des FHEM-Servers: Menschenlesbare Ausgabe (texttuelle Darstellung).

        • idletime
          Zeit (in Sekunden und in Prozent), die das System (nicht der FHEM-Server!) seit dem Start in dem Idle-Modus verbracht hat. Also die Zeit der Inaktivität.

        • idletime_text
          Zeit der Inaktivität des Systems seit dem Systemstart in menschenlesbarer Form.

        • loadavg
          Ausgabe der Werte für die Systemauslastung (load average): 1 Minute-, 5 Minuten- und 15 Minuten-Werte.

        • ram
          Ausgabe der Speicherauslastung.

        • swap
          Benutzung und Auslastung der SWAP-Datei (bzw. Partition).

        • uptime
          Zeit (in Sekenden) seit dem Systemstart.

        • uptime_text
          Zeit seit dem Systemstart in menschenlesbarer Form.

        • starttime
          Systemstart (Sekunden seit Thu Jan 1 01:00:00 1970).

        • starttime_text
          Systemstart in menschenlesbarer Form.

        • Netzwerkinformationen
          Informationen zu den über die angegebene Netzwerkschnittstellen übertragene Datenmengen und der Differenz zu der vorherigen Messung.
          Beispiele:
          Menge der übertragenen Daten über die Schnittstelle eth0.
          eth0: RX: 940.58 MB, TX: 736.19 MB, Total: 1676.77 MB
          Änderung der übertragenen Datenmenge in Bezug auf den vorherigen Aufruf (für eth0).
          eth0_diff: RX: 0.66 MB, TX: 0.06 MB, Total: 0.72 MB
          IP and IP v6 Adressen eth0_ip 192.168.0.15
          eth0_ip6 fe85::49:4ff:fe85:f885/64

        • Network Speed (wenn verfügbar)
          Geschwindigkeit der aktuellen Netzwerkverbindung.
          Beispiel:
          eth0_speed 100

        • Dateisysteminformationen
          Informationen zu der Größe und der Belegung der gewünschten Dateisystemen.
          Seit Version 1.1.0 können Dateisysteme auch benannt werden (s.u.).
          In diesem Fall werden für die diese Readings die angegebenen Namen verwendet.
          Dies soll die Übersicht verbessern und die Erstellung von Plots erleichten.
          Beispiel:
          fs_root: Total: 7340 MB, Used: 3573 MB, 52 %, Available: 3425 MB at /

        • CPU Auslastung
          Informationen zu der Auslastung der CPU(s).
          Beispiel:
          stat_cpu: 10145283 0 2187286 90586051 542691 69393 400342
          stat_cpu_diff: 2151 0 1239 2522 10 3 761
          stat_cpu_percent: 4.82 0.00 1.81 93.11 0.05 0.00 0.20
          stat_cpu_text: user: 32.17 %, nice: 0.00 %, sys: 18.53 %, idle: 37.72 %, io: 0.15 %, irq: 0.04 %, sirq: 11.38 %

        • Benutzerdefinierte Einträge
          Diese Readings sind Ausgaben der Kommanden, die an das Betriebssystem übergeben werden. Die entsprechende Angaben werden durch Attributen user-defined und user-fn definiert.

        • FritzBox-spezifische Readings
        • wlan_state
          WLAN-Status: on/off

        • wlan_guest_state
          Gast-WLAN-Status: on/off

        • internet_ip
          aktuelle IP-Adresse

        • internet_state
          Status der Internetverbindung: connected/disconnected

        • night_time_ctrl
          Status der Klingelsperre on/off

        • num_new_messages
          Anzahl der neuen Anrufbeantworter-Meldungen

        • fw_version_info
          Angaben zu der installierten Firmware-Version: <VersionNr> <Erstelldatum> <Zeit>

        • DSL Informationen (FritzBox)
        • dsl_rate
          Down/Up Verbindungsgeschwindigkeit

        • dsl_synctime
          Sync-Zeit mit Vermittlungsstelle

        • dsl_crc_15
          Nicht behebbare Übertragungsfehler in den letzten 15 Minuten

        • dsl_fec_15
          Behebbare Übertragungsfehler in den letzten 15 Minuten

        • Readings zur Stromversorgung
        • power_ac_stat
          Statusinformation für die AC-Buchse: online (0|1), present (0|1), voltage, current
          Beispiel:
          power_ac_stat: 1 1 4.807 264

        • power_ac_text
          Statusinformation für die AC-Buchse in menschenlesbarer Form
          Beispiel:
          power_ac_text ac: present / online, Voltage: 4.807 V, Current: 264 mA

        • power_usb_stat
          Statusinformation für die USB-Buchse

        • power_usb_text
          Statusinformation für die USB-Buchse in menschenlesbarer Form

        • power_battery_stat
          Statusinformation für die Batterie (wenn vorhanden): online (0|1), present (0|1), voltage, current, actual capacity
          Beispiel:
          power_battery_stat: 1 1 4.807 264 100

        • power_battery_text
          Statusinformation für die Batterie (wenn vorhanden) in menschenlesbarer Form

        • power_battery_info
          Menschenlesbare Zusatzinformationen für die Batterie (wenn vorhanden): Technologie, Kapazität, Status, Zustand, Gesamtkapazität
          Beispiel:
          power_battery_info: battery info: Li-Ion , capacity: 100 %, status: Full , health: Good , total capacity: 2100 mAh
          Die Kapazität soll in script.bin (z.B. ct-hdmi.bin) eingestellt werden (Parameter pmu_battery_cap). Mit bin2fex konvertieren (bin2fex -> script.fex -> edit -> fex2bin -> script.bin)

        • cpuX_freq_stat
          Frequenz-Statistik für die CPU X: Minimum, Maximum und Durchschnittswert
          Beispiel:
          cpu0_freq_stat: 100 1000 900

        • cpuX_idle_stat
          Leerlaufzeit-Statistik für die CPU X: Minimum, Maximum und Durchschnittswert
          Beispiel:
          cpu0_freq_stat: 23.76 94.74 90.75

        • cpu[X]_temp_stat
          Temperatur-Statistik für CPU: Minimum, Maximum und Durchschnittswert
          Beispiel:
          cpu_temp_stat: 41.00 42.50 42.00

        • ram_used_stat
          Statistik der RAM-Nutzung: Minimum, Maximum und Durchschnittswert
          Example:
          ram_used_stat: 267.55 1267.75 855.00

        • swap_used_stat
          Statistik der SWAP-Nutzung: Minimum, Maximum und Durchschnittswert
          Example:
          swap_used_stat: 0 1024.00 250.00



        Get:

        • interval
          Listet die bei der Definition angegebene Polling-Intervalle auf.

        • interval_multipliers
          Listet die definierten Multipliers.

        • list
          Gibt alle Readings aus.

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

        • version
          Zeigt die Version des SYSMON-Moduls.


        • list_lan_devices
          Listet bekannte Geräte im LAN (nur FritzBox).

        Set:

        • interval_multipliers
          Definiert Multipliers (wie bei der Definition des Gerätes).

        • clean
          Löscht benutzerdefinierbare Readings. Nach einem Update (oder nach der automatischen Aktualisierung) werden neue Readings generiert.

        • clear <reading name>
          Löscht den Reading-Eintrag mit dem gegebenen Namen. Nach einem Update (oder nach der automatischen Aktualisierung) wird dieser Eintrag ggf. neu erstellt (falls noch definiert). Dieses Mechanismus erlaubt das gezielte Löschen nicht mehr benötigter benutzerdefinierten Einträge.

        • password <Passwort>
          Definiert das Passwort für den Remote-Zugriff (i.d.R. nur einmalig notwendig).


        Attributes:

        • filesystems <reading name>[:<mountpoint>[:<comment>]],...
          Gibt die zu überwachende Dateisysteme an. Es wird eine kommaseparierte Liste erwartet.
          Reading-Name wird bei der Anzeige und Logging verwendet, Mount-Point ist die Grundlage der Auswertung, Kommentar ist relevant für die HTML-Anzeige (s. SYSMON_ShowValuesHTML)
          Beispiel: /boot,/,/media/usb1
          oder: fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
          Im Sinne der besseren Übersicht sollten zumindest Name und MountPoint angegeben werden.

        • network-interfaces <name>[:<interface>[:<comment>]],...
          Kommaseparierte Liste der Netzwerk-Interfaces, die überwacht werden sollen. Jeder Eintrag besteht aus dem Reading-Namen, dem Namen des Netwerk-Adapters und einem Kommentar für die HTML-Anzeige (s. SYSMON_ShowValuesHTML). Wird kein Doppelpunkt verwendet, wird der Wert gleichzeitig als Reading-Name und Interface-Name verwendet.
          Beispiel ethernet:eth0:Ethernet,wlan:wlan0:WiFi

        • user-defined <readingsName>:<Interval_Minutes>:<Comment>:<Cmd>,...
          Diese kommaseparierte Liste definiert Einträge mit jeweils folgenden Daten: Reading-Name, Aktualisierungsintervall in Minuten, Kommentar und Betriebssystem-Commando.
          Die BS-Befehle werden entsprechend des angegebenen Intervalls ausgeführt und als Readings mit den angegebenen Namen vermerkt. Kommentare werden für die HTML-Ausgaben (s. SYSMON_ShowValuesHTML) benötigt.
          Alle Parameter sind nicht optional!
          Es ist wichtig, dass die angegebenen Befehle schnell ausgeführt werden, denn in dieser Zeit wird der gesamte FHEM-Server blockiert!
          Werden Ergebnisse der lang laufenden Operationen benötigt, sollten diese z.B als CRON-Job eingerichtet werden und in FHEM nur die davor gespeicherten Ausgaben visualisiert.

          Beispiel: Anzeige der vorliegenden Paket-Aktualisierungen für das Betriebssystem:
          In einem cron-Job wird folgendes täglich ausgeführt:
          sudo apt-get update 2>/dev/null >/dev/null apt-get upgrade --dry-run| perl -ne '/(\d*)\s[upgraded|aktualisiert]\D*(\d*)\D*install|^ \S+.*/ and print "$1 aktualisierte, $2 neue Pakete"' 2>/dev/null > /opt/fhem/data/updatestatus.txt
          Das Attribute uder-defined wird auf
          sys_updates:1440:System Aktualisierungen:cat /opt/fhem/data/updatestatus.txt
          gesetzt. Danach wird die Anzahl der verfügbaren Aktualisierungen täglich als Reading 'sys_updates' protokolliert.

        • user-fn <fn_name>:<Interval_Minutes>:<reading_name1>:<reading_name2>...[:<reading_nameX>],...
          Liste der benutzerdefinierten Perlfunktionen.
          Als <fn_name> können entweder Name einer Perlfunktion oder ein Perlausdruck verwendet werden. Die Perlfunktion bekommt den Device-Hash als Übergabeparameter und muss ein Array mit Werte liefern. Diese Werte werden entsprechend den Parameter <reading_nameX> in Readings übernommen.
          Ein Perlausdruck muss in geschweifte Klammer eingeschlossen werden und kann folgende Paramter verwenden: $HASH (Device-Hash) und $NAME (Device-Name). Rückgabe wird analog einer Perlfunktion erwartet.
          Wichtig! Die Trennung zwischen mehreren Benutzerfunktionen muss mit einem Komma UND einem Leerzeichen erfolgen! Innerhalb der Funktiondefinition dürfen Kommas nicht durch Leerzeichen gefolgt werden.

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

        • telnet-prompt-regx, telnet-login-prompt-regx
          RegExp zur Erkennung von Login- und Kommandozeile-Prompt. (Nur für Zugriffe über Telnet relevant.)

        • exclude
          Erlaubt das Abfragen bestimmten Informationen zu unterbinden.
          Mögliche Werte: user-defined (s. user-defined und user-fn), cpucount, uptime, fhemuptime, loadavg, cputemp, cpufreq, cpuinfo, diskstat, cpustat, ramswap, filesystem, network, fbwlan, fbnightctrl, fbnewmessages, fbdecttemp, fbversion, fbdsl, powerinfo


        Plots:

          Für dieses Modul sind bereits einige gplot-Dateien vordefiniert:
            FileLog-Versionen:
            SM_RAM.gplot
            SM_CPUTemp.gplot
            SM_FS_root.gplot
            SM_FS_usb1.gplot
            SM_Load.gplot
            SM_Network_eth0.gplot
            SM_Network_eth0t.gplot
            SM_Network_wlan0.gplot
            SM_CPUStat.gplot
            SM_CPUStatSum.gplot
            SM_CPUStatTotal.gplot
            SM_power_ac.gplot
            SM_power_usb.gplot
            SM_power_battery.gplot
            DbLog-Versionen:
            SM_DB_all.gplot
            SM_DB_CPUFreq.gplot
            SM_DB_CPUTemp.gplot
            SM_DB_Load.gplot
            SM_DB_Network_eth0.gplot
            SM_DB_RAM.gplot

        HTML-Ausgabe-Methode (für ein Weblink): SYSMON_ShowValuesHTML(<SYSMON-Instanz>[,<Liste>])

          Das Modul definiert eine Funktion, die ausgewählte Readings in HTML-Format ausgibt.
          Als Parameter wird der Name des definierten SYSMON-Geräts erwartet.
          Es kann auch ReadingsGroup, CloneDummy oder andere Module genutzt werden, dann werden einfach deren Readings verwendet.
          Der zweite Parameter ist optional und gibt eine Liste der anzuzeigende Readings im Format <ReadingName>[:<Comment>[:<Postfix>[:<FormatString>]]] an.
          Dabei gibt ReadingName den anzuzeigenden Reading an, der Wert aus Comment wird als der Anzeigename verwendet und Postfix wird nach dem eihentlichen Wert angezeigt (so können z.B. Einheiten wie MHz angezeigt werden). Mit Hilfe von FormatString kann die Ausgabe beeinflusst werden (s. sprintf in PerlDoku).
          Falls kein Comment angegeben ist, wird eine intern vordefinierte Beschreibung angegeben. Bei benutzerdefinierbaren Readings wird ggf. Comment aus der Definition verwendet.
          Wird keine Liste angegeben, wird eine vordefinierte Auswahl verwendet (alle Werte).

          define sysv1 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
          define sysv2 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'cpu_freq:CPU Frequenz: MHz'))}

        HTML-Ausgabe-Methode (für ein Weblink): SYSMON_ShowValuesHTMLTitled(<SYSMON-Instance>[,<Title>,<Liste>])

          Wie SYSMON_ShowValuesHTML, aber mit einer Überschrift darüber. Wird keine Überschrift angegeben, wird alias des Moduls genutzt (falls definiert).

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

          Analog SYSMON_ShowValuesHTML, jedoch formatiert als reines Text.

        HTML-Ausgabe-Methode (für ein Weblink): SYSMON_ShowValuesTextTitled(<SYSMON-Instance>[,<Title>,<Liste>])

          Wie SYSMON_ShowValuesText, aber mit einer Überschrift darüber.

        Readings-Werte mit Perl lesen: SYSMON_getValues(<name>[, <Liste der gewünschten Schlüssel>])

          Liefert ein Hash-Ref mit den gewünschten Werten. Wenn keine Liste (array) übergeben wird, werden alle Werte geliefert.
          {(SYSMON_getValues("sysmon"))->{'cpu_temp'}}
          {(SYSMON_getValues("sysmon",("cpu_freq","cpu_temp")))->{"cpu_temp"}}
          {join(" ", values (SYSMON_getValues("sysmon")))}
          {join(" ", values (SYSMON_getValues("sysmon",("cpu_freq","cpu_temp"))))}

        Beispiele:

          # Modul-Definition
          define sysmon SYSMON 1 1 1 10
          #attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,^~ /.*usb.*,~ /$
          attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,fs_.*,stat_cpu_percent
          attr sysmon filesystems fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
          attr sysmon network-interfaces eth0:eth0:Ethernet,wlan0:wlan0:WiFi
          attr sysmon group RPi
          attr sysmon room 9.03_Tech

          # Log
          define FileLog_sysmon FileLog ./log/sysmon-%Y-%m.log sysmon
          attr FileLog_sysmon group RPi
          attr FileLog_sysmon logtype SM_CPUTemp:Plot,text
          attr FileLog_sysmon room 9.03_Tech

          # Visualisierung: CPU-Temperatur
          define wl_sysmon_temp SVG FileLog_sysmon:SM_CPUTemp:CURRENT
          attr wl_sysmon_temp group RPi
          attr wl_sysmon_temp label "CPU Temperatur: Min $data{min2}, Max $data{max2}, Last $data{currval2}"
          attr wl_sysmon_temp room 9.03_Tech

          # Visualisierung: Netzwerk-Datenübertragung für eth0
          define wl_sysmon_eth0 SVG FileLog_sysmon:SM_Network_eth0:CURRENT
          attr wl_sysmon_eth0 group RPi
          attr wl_sysmon_eth0 label "Netzwerk-Traffic eth0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
          attr wl_sysmon_eth0 room 9.03_Tech

          # Visualisierung: Netzwerk-Datenübertragung für wlan0
          define wl_sysmon_wlan0 SVG FileLog_sysmon:SM_Network_wlan0:CURRENT
          attr wl_sysmon_wlan0 group RPi
          attr wl_sysmon_wlan0 label "Netzwerk-Traffic wlan0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
          attr wl_sysmon_wlan0 room 9.03_Tech

          # Visualisierung: CPU-Auslastung (load average)
          define wl_sysmon_load SVG FileLog_sysmon:SM_Load:CURRENT
          attr wl_sysmon_load group RPi
          attr wl_sysmon_load label "Load Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
          attr wl_sysmon_load room 9.03_Tech

          # Visualisierung: RAM-Nutzung
          define wl_sysmon_ram SVG FileLog_sysmon:SM_RAM:CURRENT
          attr wl_sysmon_ram group RPi
          attr wl_sysmon_ram label "RAM-Nutzung Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
          attr wl_sysmon_ram room 9.03_Tech

          # Visualisierung: Dateisystem: Root-Partition
          define wl_sysmon_fs_root SVG FileLog_sysmon:SM_FS_root:CURRENT
          attr wl_sysmon_fs_root group RPi
          attr wl_sysmon_fs_root label "Root Partition Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
          attr wl_sysmon_fs_root room 9.03_Tech

          # Visualisierung: Dateisystem: USB-Stick
          define wl_sysmon_fs_usb1 SVG FileLog_sysmon:SM_FS_usb1:CURRENT
          attr wl_sysmon_fs_usb1 group RPi
          attr wl_sysmon_fs_usb1 label "USB1 Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
          attr wl_sysmon_fs_usb1 room 9.03_Tech

          # Anzeige der Readings zum Einbinden in ein 'Raum'.
          define SysValues weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
          attr SysValues group RPi
          attr SysValues room 9.03_Tech

          # Anzeige CPU Auslasung
          define wl_sysmon_cpustat SVG FileLog_sysmon:SM_CPUStat:CURRENT
          attr wl_sysmon_cpustat label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
          attr wl_sysmon_cpustat group RPi
          attr wl_sysmon_cpustat room 9.99_Test
          attr wl_sysmon_cpustat plotsize 840,420
          define wl_sysmon_cpustat_s SVG FileLog_sysmon:SM_CPUStatSum:CURRENT
          attr wl_sysmon_cpustat_s label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
          attr wl_sysmon_cpustat_s group RPi
          attr wl_sysmon_cpustat_s room 9.99_Test
          attr wl_sysmon_cpustat_s plotsize 840,420
          define wl_sysmon_cpustatT SVG FileLog_sysmon:SM_CPUStatTotal:CURRENT
          attr wl_sysmon_cpustatT label "CPU-Auslastung"
          attr wl_sysmon_cpustatT group RPi
          attr wl_sysmon_cpustatT plotsize 840,420
          attr wl_sysmon_cpustatT room 9.99_Test

          # Anzeige Stromversorgung AC
          define wl_sysmon_power_ac SVG FileLog_sysmon:SM_power_ac:CURRENT
          attr wl_sysmon_power_ac label "Stromversorgung (ac) Spannung: $data{min1} - $data{max1} V, Strom: $data{min2} - $data{max2} mA"
          attr wl_sysmon_power_ac room Technik
          attr wl_sysmon_power_ac group system
          # Anzeige Stromversorgung Battery
          define wl_sysmon_power_bat SVG FileLog_sysmon:SM_power_battery:CURRENT
          attr wl_sysmon_power_bat label "Stromversorgung (bat) Spannung: $data{min1} - $data{max1} V, Strom: $data{min2} - $data{max2} mA"
          attr wl_sysmon_power_bat room Technik
          attr wl_sysmon_power_bat group system

      SYSSTAT

        Das Modul stellt Systemstatistiken für den Rechner, auf dem FHEM läuft bzw. für ein entferntes Linux System, das per vorkonfiguriertem ssh Zugang ohne Passwort erreichbar ist, zur Vefügung.

        Notes:
        • Dieses Modul benötigt Sys::Statistics::Linux für Linux.
          Es kann mit 'cpan install Sys::Statistics::Linux'
          bzw. auf Debian mit 'apt-get install libsys-statistics-linux-perl' installiert werden.
        • Um einen Zielrechner mit snmp zu überwachen, muss Net::SNMP installiert sein.
        • Um die Lastwerte zu plotten, kann der folgende Code verwendet werden:
            define sysstatlog FileLog /usr/local/FHEM/var/log/sysstat-%Y-%m.log sysstat
            attr sysstatlog nrarchive 1
            define svg_sysstat SVG sysstatlog:sysstat:CURRENT
            attr wl_sysstat label "Load Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
            attr wl_sysstat room System
            
        • Um das Wurzel-Dateisystem (Mountpunkt '/') bei Plots der Plattennutzung zu erhalten, sollte dieser Code '#FileLog 4:/\x3a:0:' bzw. '#FileLog 4:\s..\s:0:' und nicht dieser Code '#FileLog 4:/:0:' verwendet werden, da der letztere alle Mountpunkte darstellt.
        • .
        Define
          define <name> SYSSTAT [<interval> [<interval_fs>] [<host>]]

          definiert ein SYSSTAT Device.

          Die (Prozessor)last wird alle <interval> Sekunden aktualisiert. Standard bzw. Minimum ist 60.

          Die Plattennutzung wird alle <interval_fs> Sekunden aktualisiert. Standardwert ist <interval>*60 und Minimum ist 60. <interval_fs> wird nur angenähert und funktioniert am Besten, wenn <interval_fs> ein ganzzahliges Vielfaches von <interval> ist.

          Wenn <host> angegeben wird, muss der Zugang per ssh ohne Passwort möglich sein.

          Beispiele:
            define sysstat SYSSTAT
            define sysstat SYSSTAT 300
            define sysstat SYSSTAT 60 600

        Readings
        • load
          die durchschnittliche (Prozessor)last der letzten 1 Minute (für Windows Rechner mit snmp angenähertem Wert)
        • state
          die durchschnittliche (Prozessor)last der letzten 1, 5 und 15 Minuten (für Windows Rechner die Nutzung pro CPU via snmp ermittelt)
        • user, system, idle, iowait
          den Prozentsatz der entsprechenden Systemlast (nur für Linux Systeme)
        • <mountpoint>
          Anzahl der freien Bytes für <mountpoint>

        Get
          get <name> <value>

          Werte für value sind

        • filesystems
          zeigt die Dateisysteme an, die überwacht werden können.

        Attributes
        • disable
          lässt die Timer weiterlaufen, aber stoppt die Speicherung der Daten.
        • filesystems
          Liste mit Komma getrennten Dateisystemen (nicht Mountpunkten) die überwacht werden sollen.
          Beispiele:
            attr sysstat filesystems /dev/md0,/dev/md2
            attr sysstat filesystems /dev/.*
            attr sysstat filesystems 1,3,5
        • mibs
          Leerzeichen getrennte Liste aus <mib>:<reding> Paaren die abgefragt werden sollen.
        • showpercent
          Wenn gesetzt, wird die Nutzung in Prozent angegeben. Wenn nicht gesetzt, wird der verfübare Platz in Bytes angezeigt.
        • snmp
          1 -> snmp wird verwendet, um Last, Einschaltzeit und Dateisysteme (inkl. physikalischem und virtuellem Speicher) zu überwachen
        • stat
          1 -> überwacht Prozentsatz der user, system, idle und iowait Last (nur auf Linux Systemen verfügbar)
        • raspberrytemperature
          Wenn gesetzt und > 0 wird der Temperatursensor auf dem Raspberry Pi ausgelesen.
          Wenn Wert 2 ist, wird ein geometrischer Durchschnitt der letzten 4 Werte dargestellt.
        • synologytemperature
          Wenn gesetzt und > 0 wird die Temperatur einer Synology Diskstation ausgelesen (erfordert snmp).
          Wenn Wert 2 ist, wird ein geometrischer Durchschnitt der letzten 4 Werte dargestellt.
        • raspberrycpufreq
          Wenn gesetzt und > 0 wird die Raspberry Pi CPU Frequenz ausgelesen.
        • uptime
          Wenn gesetzt und > 0 wird die Betriebszeit (uptime) des Systems ausgelesen.
          Wenn Wert 2 ist, wird die Betriebszeit (uptime) in Sekunden angezeigt.
        • useregex
          Wenn Wert gesetzt, werden die Einträge der Dateisysteme als regex behandelt.
        • ssh_user
          Der Username für den ssh Zugang auf dem entfernten Rechner.
        • snmpVersion
        • snmpCommunity
        • readingFnAttributes

      Snapcast

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

      TCM

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

      TEK603

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

      THINKINGCLEANER

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

      THRESHOLD

        Vielfältige Steuerungen, bei denen durch die Auswertung von Sensordaten eine Steuerung erfolgen soll, können mit Hilfe dieses Moduls realisiert werden. Nach der Definition eines THRESHOLD-Moduls und der Vorgabe eines Sollwertes beginnt bereits das definierte Modul mit der Steuerung. Im einfachsten Fall liest das Modul einen Sensor aus, der Werte als Dezimalzahlen liefert und schaltet beim Überschreiten einer definierten Schwellen-Obergrenze (Sollwert) bzw. beim Unterschreiten einer Schwellen-Untergrenze einen Aktor oder führt beliebige FHEM/Perl-Befehle aus. Typisches Anwendungsgebiet ist z. B. die Nachbildung eines Thermostats oder Hygrostats - auch Zweipunktregler genannt.

        Mit Hilfe des Moduls, bzw. vieler solcher Module, lassen sich einfache oder auch komplexe Steuerungen für Heizung, Kühlung, Lüftung, Entfeuchtung, Beschattung oder z. B. einfache Benachrichtung beim Über- oder Unterschreiten eines bestimmten Wertes realisieren. Dabei müssen keine If-Abfragen in Perl oder Notify-Definitionen vorgenommen werden. Das führt, nicht nur bei FHEM-Anfängern, zu schnell erstellten und übersichtlichen Steuerungen, ohne zwingend in die Perl-Materie einsteigen zu müssen.

        Nach der Definition eines Moduls vom Typ THRESHOLD z. B. mit:

        define <name> THRESHOLD <sensor> <actor>

        erfolgt die eigentliche Steuerung über die Vorgabe eines Sollwertes. Das geschieht über:

        set <name> desired <value>

        Das Modul beginnt mit der Steuerung erst dann, wenn ein Sollwert gesetzt wird!

        Die Vorgabe des Sollwertes kann bereits bei der Definition des Moduls angegeben werden. Alternativ kann der Sollwert von einem weiteren Sensor kommen. Damit kann eine Steuerung durch den Vergleich zweier Sensoren stattfinden. Typisches Anwendungsbeispiel ist z. B. die Steuerung von Umwälz- oder Zirkulationspumpen.

        Die Vorgabe der Solltemperatur kann auch von beliebigen Wandthermostaten (z. B. HM, MAX, FHT) genutzt werden.

        Das Schaltverhalten des THRESHOLD-Moduls kann zusätzlich durch einen weiteren Sensor oder eine Sensorgruppe, definiert über structure (z. B. Fensterkontakte), über eine AND- bzw. OR-Verknüpfung beeinflusst werden. Bei komplexeren Bedingungen mit mehreren and- bzw. or-Verknüpfung sollte man das neuere DOIF-Modul verwenden.

        Es ist ebenfalls die Kombination mehrerer THRESHOLD-Module miteinander möglich.


        Beispiele für Heizungssteuerung:

        Einfaches Heizungsthermostat:

        Es soll bis 20 Grad geheizt werden. Beim Unterschreiten der Untergrenze von 19=20-1 Grad (Sollwert-Hysterese) wird die Heizung wieder eingeschaltet.

        define TH_room THRESHOLD temp_room heating
        set TH_room desired 20

        Zeitgesteuertes Heizen mit Hilfe des DOIF-Moduls:

        define TH_room THRESHOLD temp_room heating
        define di_room DOIF ([05:30-23:00|8] or [07:00-23:00|7]) (set TH_room desired 20) DOELSE (set TH_room desired 18)

        Steuerung einer Heizung durch ein Wandthermostat mit Übernahme der Soll- und Ist-Temperatur vom Wandthermostat:

        define TH_Heizung THRESHOLD WT_ch1:measured-temp:1:WT_ch2:desired-temp Heizung

        Mit set TH_Heizung desired 17 wird die Vorgabe vom Wandthermostat übersteuert bis set TH_Heizung external aufgerufen wird.

        Heizung in Kombination mit einem Fensterkontakt mit Zuständen: open, closed:

        define TH_room THRESHOLD temp_room OR win_sens heating

        Heizung in Kombination mit mehreren Fensterkontakten:

        define W_ALL structure W_type W1 W2 W3 ....
        attr W_ALL clientstate_behavior relative
        attr W_ALL clientstate_priority open closed

        define thermostat THRESHOLD S1 OR W_ALL heating

        Kombination mehrerer THRESHOLD-Module miteinander:

        Es soll bis 21 Grad geheizt werden, aber nur, wenn die Außentemperatur unter 15 Grad ist:

        define TH_outdoor THRESHOLD outdoor:temperature:0:15
        define TH_room THRESHOLD indoor OR TH_outdoor:state:off heating
        set TH_room desired 21

        Steuerung einer Heizung nach einer Heizkennlinie:

        Berechnung der Solltemperatur für die Vorlauftemperatur für Fußbodenheizung mit Hilfe der 0,8-Heizkennlinie anhand der Außentemperatur :

        define TH_heating THRESHOLD flow:temperature:2:outdoor:temperature heating
        attr TH_heating target_func -0.578*_tv+33.56

        Nachtabsenkung lässt sich zeitgesteuert durch das Setzen von "offset" realisieren.
        Von 22:00 bis 5:00 Uhr soll die Vorlauftemperatur um 10 Grad herabgesetzt werden:

        define di_heating DOIF ([22:00-05:00]) (set TH_heating offset -10) DOELSE (set TH_heating offset 0)


        Beispiele für Belüftungssteuerung:

        Einfache Belüftung anhand der Luftfeuchtigkeit:

        Es soll gelüftet werden, wenn die Feuchtigkeit im Zimmer über 70 % ist; bei 60 % geht der Lüfter wieder aus.

        define TH_hum THRESHOLD sens:humidity:10:70 ventilator|set @ on|set @ off|1

        Belüftung anhand des Taupunktes, abhängig von der Luftfeuchtigkeit innen:

        Es soll gelüftet werden, wenn die Luftfeuchtigkeit im Zimmer über 70 % ist und der Taupunkt innen höher ist als außen.

        define TH_hum THRESHOLD sens:humidity:10:70||||on:off|_sc
        define dewpoint dewpoint indoor
        define dewpoint dewpoint outdoor
        define TH_room THRESHOLD indoor:dewpoint:0:outdoor:dewpoint AND TH_hum:state:on ventilator|set @ on|set @ off|2

        Belüftung in Kombination mit einem Lichtschalter mit Nachlaufsteuerung: siehe DOIF-Modul.

        Beispiele für die Steuerung der Warmwasserzirkulation:

        Zeitgesteuerte Warmwasserzirkulation:

        In der Hauptzeit soll die Wassertemperatur im Rücklauf mindestens 38 Grad betragen.

        define TH_circ TRHESHOLD return_w:temperature:0 circ_pump
        define di_circ DOIF ([05:30-23:00|8] or [07:00-23:00|7]) (set TH_circ desired 38) DOELSE (set TH_circ desired 15)

        Alternative Steuerung mit Sollwert-Vorgabe durch einen weiteren Sensor des Warmwasserspeichers:

        Die Rücklauftemperatur soll 5 Grad (offset) unter der Warmwasserspeichertemperatur liegen und bis zu 4 Grad (Hysterese) schwanken dürfen.

        define TH_circ THRESHOLD return_w:temperature:4:water_storage:temperature:-5 circ_pump


        Beispiele für Beschattungssteuerung:

        Beispiel für einfache Beschattung im Sommer:

        Zwischen 12:00 und 20:00 Uhr (potenzielle Sonnengefahr auf der Südseite) wird der Rolladen auf 30 % heruntergefahren,
        wenn die Raumtemperatur über 23 Grad ist und die Sonne scheint. Im Winter, wenn die Zimmertemperatur niedriger ist (< 23),
        will man von der Sonnenenergie profitieren und den Rollladen oben lassen.

        define TH_shutter_room THRESHOLD T_room AND sun:state:on shutter_room|set @ 30||2
        define di_shutter DOIF ([12:00-20:00]) (set TH_shutter desired 23) DOELSE (set TH_shutter desired 30)

        Weitere Beispiele für Beschattung mit Verzögerung und automatischem Hochfahren des Rollladens: siehe DOIF-Modul.


        Beispiele für die Ausführung beliebiger FHEM/Perl-Befehlsketten:

        define thermostat THRESHOLD sensor |set Switch1 on;;set Switch2 on|set Switch1 off;;set Switch2 off|1
        define thermostat THRESHOLD sensor alarm|{Log 2,"Wert überschritten"}|set @ off|
        define thermostat THRESHOLD sensor ||{Log 2,"Wert unterschritten"}|


        Einige weitere Bespiele für Entfeuchtung, Klimatisierung, Bewässerung:

        define hygrostat THRESHOLD hym_sens:humidity dehydrator|set @ on|set @ off|1
        define hygrostat THRESHOLD hym_sens:humidity AND Sensor2:state:closed dehydrator|set @ on|set @ off|1
        define thermostat THRESHOLD temp_sens:temperature:1 aircon|set @ on|set @ off|1
        define thermostat THRESHOLD temp_sens AND Sensor2:state:closed aircon|set @ on|set @ off|1
        define hygrostat THRESHOLD hym_sens:humidity:20 watering|set @ off|set @ on|2


        Beispiele für angepasste Statusanzeige des THRESHOLD-Moduls:

        define thermostat THRESHOLD sensor aircon|set @ on|set @ off|2|on:off

        Beispiel für reine Zustandanzeige (z. B. für Zustandsauswertung in anderen Modulen) ohne Ausführung von Code:

        define thermostat THRESHOLD sensor:temperature:0:30

        entspricht wegen Defaultwerte:

        define thermostat THRESHOLD sensor:temperature:0:30||||off:on|_sc

        Es soll der Modus (mode), Status (state_cmd), Sollvorgabewert (desired_value) und Wert des ersten Sensors (sensor_value) angezeigt werden:

        define TH_living_room THRESHOLD T_living_room heating|set @ off|set @ on|2|off:on|_m _sc _dv _s1v

        oder

        define TH_living_room THRESHOLD T_living_room heating
        attr TH_living_room state_cmd1_gt off
        attr TH_living_room state_cmd2_lt on
        attr TH_living_room state_format _m _sc _dv _s1v

      Define

        define <name> THRESHOLD <sensor>:<reading>:<hysteresis>:<target_value>:<offset> AND|OR <sensor2>:<reading2>:<state> <actor>|<cmd1_gt>|<cmd2_lt>|<cmd_default_index>|<state_cmd1_gt>:<state_cmd2_lt>|<state_format>


      • sensor
        ein in FHEM definierter Sensor

      • reading (optional)
        Reading des Sensors, der einen Wert als Dezimalzahl beinhaltet
        Defaultwert: temperature

      • hysteresis (optional)
        Hysterese, daraus errechnet sich die Untergrenze = Sollwert - hysteresis
        Defaultwert: 1 bei Temperaturen, 10 bei Feuchtigkeit

      • target_value (optional)
        bei Zahl: Initial-Sollwert, wenn kein Wert vorgegeben wird, muss er mit "set desired value" gesetzt werden.
        sonst: <sensorname>:<reading>, hier kann ein weiterer Sensor angegeben werden, der den Sollwert dynamisch vorgibt.
        Defaultwert: kein

      • offset (optional)
        Offset zum Sollwert
        Damit errechnet sich: die Sollwertobergrenze = Sollwert + offset und die Sollwertuntergrenze = Sollwert - Hysterese + offset
        Defaultwert: 0


      • AND|OR (optional)
        Verknüpfung mit einem optionalen zweiten Sensor

      • sensor2 (optional, nur in Verbindung mit AND oder OR)
        ein definierter Sensor, dessen Status abgefragt wird

      • reading2 (optional)
        Reading, der den Status des Sensors beinhaltet
        Defaultwert: state

      • state (optional)
        Status des Sensors, der zu einer Aktion führt
        Defaultwert: open

      • actor (optional)
        ein in FHEM definierter Aktor

      • cmd1_gt (optional)
        FHEM/Perl Befehl, der beim Überschreiten des Sollwertes ausgeführt wird bzw. wenn status des sensor2 übereinstimmt. @ ist ein Platzhalter für den angegebenen Aktor.
        Defaultwert: set actor off, wenn Aktor angegeben ist

      • cmd2_lt (optional)
        FHEM/Perl Befehl, der beim Unterschreiten der Untergrenze (Sollwert-Hysterese) ausgeführt wird bzw. wenn status des sensor2 nicht übereinstimmt. @ ist ein Platzhalter für den angegebenen Aktor.
        Defaultwert: set actor on, wenn Aktor angegeben ist

      • cmd_default_index (optional)
        FHEM/Perl Befehl, der nach dem Setzen des Sollwertes ausgeführt wird, bis Sollwert oder die Untergrenze erreicht wird.
        0 - kein Befehl
        1 - cmd1_gt
        2 - cmd2_lt
        Defaultwert: 2, wenn Aktor angegeben ist, sonst 0

      • state_cmd1_gt (optional, wird gleichzeitig als Attribut definiert)
        Status, der angezeigt wird, wenn FHEM/Perl-Befehl cmd1_gt ausgeführt wurde.
        Defaultwert: kein

      • state_cmd2_lt (optional, wird gleichzeitig als Attribut definiert)
        Status, der angezeigt wird, wenn FHEM/Perl-Befehl cmd2_lt ausgeführt wurde.
        Defaultwert: kein

      • state_format (optional, wird gleichzeitig als Attribut definiert und kann dort verändert werden)
        Format der Statusanzeige: beliebiger Text mit Platzhaltern
        Mögliche Platzhalter:
        _m: mode
        _dv: desired_value
        _s1v: sensor_value
        _s2s: sensor2_state
        _sc: state_cmd
        Defaultwert: _m _dv _sc, _sc, wenn state_cmd1_gt und state_cmd2_lt ohne Aktor gesetzt wird.


      Set
      • set <name> desired <value>
        Setzt den Sollwert. Wenn kein Sollwert gesetzt ist, ist das Modul nicht aktiv. Sollwert-Vorgabe durch einen Sensor wird hiermit übersteuert, solange bis "set external" gesetzt wird.

      • set <name> deactivated <command>
        Modul wird deaktiviert.
        <command> ist optional. Es kann "cmd1_gt" oder "cmd2_lt" übergeben werden, um vor dem Deaktivieren des Moduls einen definierten Zustand zu erreichen.

      • set <name> active
        Modul wird aktiviert, falls unter target_value ein Sensor für die Sollwert-Vorgabe definiert wurde, wird der aktuelle Sollwert solange eingefroren bis "set external" gesetzt wird.

      • set <name> externel
        Modul wird aktiviert, Sollwert-Vorgabe kommt vom Sensor, falls ein Sensor unter target_value definierte wurde.

      • set <name> hysteresis <value>
        Setzt Hysterese-Wert.

      • set <name> offset <value>
        Setzt Offset-Wert.
        Defaultwert: 0

      • set <name> cmd1_gt
        Führt das unter cmd1_gt definierte Kommando aus.

      • set <name> cmd2_lt
        Führt das unter cmd2_lt definierte Kommando aus.

      Get
        N/A

      Attributes
      • disable
      • loglevel
      • state_cmd1_gt
      • state_cmd2_lt
      • state_format
      • number_format
      • Das angegebene Format wird im Status für die Formatierung von desired_value (_dv) und sensor_value (_s1v) über die sprintf-Funktion benutzt.
        Voreingestellt ist "%.1f" für eine Nachkommastelle. Für weiter Formatierungen - siehe Formatierung in der sprintf-Funktion in der Perldokumentation.
        Wenn das Attribut gelöscht wird, werden Zahlen im Status nicht formatiert.
      • target_func
      • Hier kann ein Perlausdruck angegeben werden, um aus dem Vorgabewert eines externen Sensors (target_value) einen Sollwert zu berechnen.
        Der Sensorwert wird mit "_tv" im Ausdruck angegeben. Siehe dazu Beispiele oben zur Steuerung der Heizung nach einer Heizkennlinie.
      • setOnDeactivated
      • Kommando, welches durch das Deaktivieren per "set ... deactivated" automatisch ausgeführt werden soll. Mögliche Angaben: cmd1_gt, cmd2_lt
      • desiredActivate
      • Wenn das Attribut auf 1 gesetzt ist, wird ein deaktiviertes Modul durch "set ... desired " automatisch aktiviert. "set ... active" ist dann nicht erforderlich.

      THZ

        THZ Modul: Kommuniziert mittels einem seriellen Interface RS232/USB (z.B. /dev/ttyxx), oder mittels ser2net (z.B. 10.0.x.x:5555) mit einer Tecalor / Stiebel Eltron Wärmepumpe.
        Getestet mit einer Tecalor THZ303/Sol (Serielle Geschwindigkeit 57600/115200@USB) und einer THZ403 (Serielle Geschwindigkeit 115200) mit identischer Firmware 4.39.
        Getestet mit einer Stiebel LWZ404 (Serielle Geschwindigkeit 115200@USB) mit Firmware 5.39.
        Getestet auf FritzBox, nas-qnap, Raspberry Pi and MacOS.
        Dieses Modul funktioniert nicht mit äterer Firmware; Gleichwohl, das "parsing" könnte leicht angepasst werden da die Register gut beschrieben wurden. https://answers.launchpad.net/heatpumpmonitor/+question/100347
        Implementiert: Lesen der Statusinformation sowie Lesen und Schreiben einzelner Einstellungen. Genauere Beschreinung des Modules --> 00_THZ wiki http://www.fhemwiki.de/wiki/Tecalor_THZ_W%C3%A4rmepumpe

        Define
          define <name> THZ <device>

          device kann einige Parameter beinhalten (z.B. @baudrate, @direction, TCP/IP, none) wie das CUL, z.B. 57600 baud oder 115200.
          Beispiel:
          Direkte Verbindung
            define Mytecalor THZ /dev/ttyUSB0@115200
          oder vir Netzwerk (via ser2net)
            define Myremotetecalor THZ 192.168.0.244:2323

            define Mythz THZ /dev/ttyUSB0@115200
            define FileLog_Mythz FileLog ./log/Mythz-%Y.log Mythz
            attr Mythz event-min-interval s.*:4800
            attr Mythz event-on-change-reading .*
            attr Mythz interval_sDHW 400
            attr Mythz interval_sElectrDHWDay 2400
            attr Mythz interval_sElectrDHWTotal 43200
            attr Mythz interval_sGlobal 400
            attr Mythz interval_sHC1 400
            attr Mythz interval_sHeatDHWDay 2400
            attr Mythz interval_sHeatDHWTotal 43200
            attr Mythz interval_sHeatRecoveredDay 2400
            attr Mythz interval_sHeatRecoveredTotal 43200
            attr Mythz interval_sHistory 86400
            attr Mythz interval_sLast10errors 86400
            attr Mythz room pompa
            attr FileLog_Mythz room pompa

          Wenn die Attribute interval_XXXXXXX nicht definiert sind (oder 0), ist das interne Polling deaktiviert.

      TPLinkHS110


        Define define <name> TPLinkHS110 <ip/hostname>

        Definiert eine TP-Link HS100 oder HS110 schaltbare WLAN-Steckdose.
        Der Unterschied zwischen der HS100 und HS110 besteht darin, dass die HS110 eine Echtzeit-Messung von
        Strom, Spannung sowie Leistung durchführt.
        Dieses Modul erkennt automatisch, welchen Typ Sie verwenden und passt die Readings entsprechend an.

        Das Modul implementiert nicht alle Funktionen der HS100/110.
        Derzeit werden alle für den sinnvollen Betrieb an FHEM benötigten Parameter ausgelesen.
        Geschrieben werden jedoch nur die Schaltzustände "An", "Aus" sowie der Nachtmodus An/Aus (Nachtmodus = LEDs der Steckdose ausschalten).
        Für eine weitergehende Programmierung der Steckdosen wird daher die TP Link App "Kasa" empfohlen, wobei deren
        Funktionen wie Timer etc. letztlich redundant zu Kernfunktionen von FHEM sind.

        Attribute

        • interval: Das Intervall in Sekunden, nach dem FHEM die Messwerte aktualisiert. Default: 300s
        • Eine Aktualisierung der Messwerte findet auch bei jedem Schaltvorgang statt.

        • timeout: Der Timeout in Sekunden, der bei der Kommunikation mit der Steckdose verwendet wird. Default: 1s
        • Achtung: der Timeout von 1s ist knapp gewählt. Ggf. kann es zu Fehlermeldungen kommen, wenn die Steckdose nicht schnell genug antwortet.
          Bitte beachten Sie aber auch, dass längere Timeouts FHEM für den Zeitraum des Requests blockieren!

        • disable: Die Ausführung des Moduls wird gestoppt. Default: no.
        • Achtung: wenn Ihre Steckdose nicht in Betrieb oder über das WLAN erreichbar ist, sollten Sie dieses FHEM-Modul per Attribut "disable" abschalten, da sonst beim zyklischen Abruf der Messdaten der Steckdose Timeouts auftreten, die FHEM unnötig verlangsamen.

        Requirements

          Das Modul benötigt die folgenden Perl-Module:

        • Perl Module: IO::Socket::INET
        • Perl Module: IO::Socket::Timeout

      TRAFFIC

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

      TRX

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

      TRX_ELSE

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

      TRX_LIGHT

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

      TRX_SECURITY

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

      TRX_WEATHER

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

      TUL

        Das Modul TUL stellt die Verbindung von FHEM zum EIB / KNX dar. KNX Instanzen stellen die Vrbindung zu den KNX-Gruppen dar und benÖtigen ein TUL-Device als IO-Schnittstelle.
        Das Modul TUL kommuniziert mit dem KNX entweder Über den eibd, den knxd oder den TUL TUL usb stick hergestellt von busware.de Anmerkung: das Modul benÖtigt die Device::SerialPort oder Win32::SerialPort wenn der Stick Über USB angeschlossen wird, und das OS unrealistische Parameter fÜr das Device einstellt.
        Define
          define <name> TUL <device> <physical address>

          TUL usb stick / TPUART serial devices:
            <device> enthält die serielle Schnittstelle der TUL. Der name der Schnittstelle hängt von Eurer Distribution ab. Unter linux wird fÜr gewÖhnlich /dev/ttyACM0 verwandt. Wenn Eure Distribution das modul cdc_acm nicht enthält, kÖnnt Ihr das Laden des handles der TUL mit dem folgenden Befehl erzwingen:
              modprobe usbserial vendor=0x03eb product=0x204b
            Dann ist die Schnittstelle meist /dev/ttyUSB0.

            Ihr kÖnnt dem Gerät eine Baudrate vorgeben. Dazu dem Gerätenamen das Zeichen @ hinzufÜgen, z.B.: /dev/ttyACM0@19200

            Anmerkung: FÜr den TUL-USB-Stick wird die Baudrate 19200 benÖtigt. Dies entspricht der Defaulteinstellung.

            Beispiel:
            define tul TUL tul:/dev/ttyACM0 1.1.249
          EIBD:
            <device> entspricht dem host:port des eibd-servers. z.B. eibd:192.168.0.244:2323. Wenn der Standardport genutzt wird, muss dieser nicht angegeben werden.

            Beispiel:
            define tul TUL eibd:localhost 1.1.249 define tul TUL knxd:192.168.178.2 1.1.248

          Wenn das Gerät none konfiguriert wird, wird kein device geÖffnet. So kÖnnt Ihr ohne angeschlossene Hardware experimentieren.
          Die physikalische Adresse wird als Absender fÜr KNX-Telegramme genutzt.

        Attribute
        • do_not_notify

        • dummy

        • showtime

        • verbose

        • useEIB

          • Das Gerät kann das Modul 10_EIB bedienen, wenn das Flag auf 1 gesetzt ist. Dies ist nur fÜr RÜckwärtskompatibiliät genutzt. Andernfalls wird nur das Modul 10_KNX bedient.

      TechemHKV

        Das modul empfängt Daten eines Techem Heizkostenverteilers.

        Empfangen werden
        • Wert des aktuellen Abrechnungszeitraumes
        • Wert des vorhergehenden Abrechnungszeitraumes einschließlich des Ablesedatums
        • Beide Temperatur Sensoren (sofern der Heizkostenverteiler sie sendet)

        Zum Empfang wird ein CUL im WMBUS_T mode benötigt. Dabei ist es ausreichend ihn vorrübergehend in diesen Modus zu schalten. Das Modul überwacht den rfmode aller verfügbaren CUL

        Define
        define <name> TechemHKV <4|8 digit ID> [<speaking name>]
        • ID: 4 Ziffern wie auf dem Heizkostenverteiler angezeigt oder 8 Ziffern aus der Abrechnung
        • speaking name: (optional) Bezeichnung

        Readings
        • current_period: Wert des aktuellen Abrechnungszeitraumes
          Der kumulierte (einheitenlose) Verbrauch seid dem Start des aktuellen Abrechnungszeitraumes. Das reading wird einmal am Tag aktualisiert. Die Zeit kennzeichnet den Stand der Daten. (und nicht den Empfangszeitpunkt der Daten)
        • previous_period: Summe des letzten Abrechnungszeitraum
          Die (einheitenlose) Summe der Verbauchs im gesamten letzten Abrechnungszeitraum. Das reading wird jeweils zu Beginn eines neuen Abrechnungszeitraumes aktualisiert. Die Zeit kennzeichnet das Ablesedatum also das Ende des vorherigen Abrechnugszeitraumes. (und nicht den Empfangszeitpunkt der Daten)
        • temp1: Umgebungstemperatur
        • temp2: Oberflächentemperatur des Heizkörpers

        Internals
        • friendly: die beim define übergebene, zusätzliche Bezeichnung
        • longID: 8 Ziffern ID des Heizkostenverteilers

      TechemWZ

        Das modul empfängt Daten von Techem Volumenzählern. Unterstützte Zählertypen sind

        • Messkapsel-Wasserzähler radio 3 (Kalt-, Warmwasser)
        • Messkapsel-Wärmemengenzähler compact V

        Empfangen werden:
        • Wert des aktuellen Abrechnungszeitraumes
        • Wert des vorhergehenden Abrechnungszeitraumes einschließlich des Ablesedatums
        • Gesamter aufgelaufener Verbrauchswert

        Zum Empfang wird ein CUL im WMBUS_T mode benötigt. Dabei ist es ausreichend ihn vorrübergehend in diesen Modus zu schalten. Das Modul überwacht den rfmode aller verfügbaren CUL

        Vorbereitung

        Leider übertragen die Techem Volumenzähler nicht die aufgedruckte Zählernummer. Übertragen wird nur die ID des eingebauten Funkmoduls.

        Das Modul stellt daher einen "list-mode" zur Verfügung. Damit kann eine Liste aller empfangenen Techem Volumenzähler anzeigt werden. Der "list-mode" wird aktiviert indem ein TechemWZ device mit der ID "00000000" definiert wird. Lassen Sie dieses device einige Zeit laufen damit es Informationen über die verfügbaren Zähler sammeln kann. Rufen Sie dann "get <name> list" auf um eine Liste der empfangenen Techem Volumenzähler, ihrer ID sowie der dazugehörigen Zählerstände zu sehen. Denken Sie daran das dies die Werte des letzten Tageswechsels sind. Notieren Sie sich anhand dieser Angaben die ID der gesuchten Zähler und definieren sie damit die entsprechenden TechemWZ device. Das list-mode device mit der ID "00000000" kann danach gefahrlos gelöscht werden.

        Define
        define <name> TechemWZ <8 digit ID> [<speaking name>]

        • ID: 8 stellige ID des Funkmoduls(siehe "list-mode")
        • speaking name: (optional) Bezeichnung

        Readings
        • current_period: Wert des aktuellen Abrechnungszeitraumes
          Der kumulierte Verbrauch seid dem Start des aktuellen Abrechnungszeitraumes. Das reading wird einmal am Tag aktualisiert. Die Zeit kennzeichnet den Stand der Daten. (und nicht den Empfangszeitpunkt der Daten)
        • previous_period: Wert des letzten Ablesezeitpunktes
          Zählerstand zum letzten Abrechnungszeitpunkt. Das reading wird zum Ablesezeitpunkt aktualisiert. Die Zeit kennzeichnet das Ablesedatum (und nicht den Empfangszeitpunkt der Daten)
        • meter: gesamter Verbrauch.
          Der Zählerstand so wie er an der (mechanischen) Anzeige des Zählers abgelesen werden kann

        Get
        • list: gibt eine Liste der empfangenen Techem Volumenzähler, ihrer ID sowie der dazugehörigen Zählerstände aus.
          nur im "list-mode" (ID "00000000") verfügbar

        Internals
        • friendly: die beim define übergebene, zusätzliche Bezeichnung

      TelegramBot

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

      TellStick

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

      Text2Speech


        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

            Wenn ein PRESENCE Gerät die Host IP-Adresse abfragt, wird die blockierende interne Prüfung auf Erreichbarkeit umgangen und das PRESENCE Gerät genutzt.
      Set
      • tts:
        Setzen eines Textes zur Sprachausgabe. Um mp3-Dateien direkt auszugeben, müssen diese mit führenden und schließenden Doppelpunkten angegebenen sein. Die MP3-Dateien müssen unterhalb des Verzeichnisses TTS_FileTemplateDir gespeichert sein.
        Der Text selbst darf deshalb selbst keine Doppelpunte beinhalten. Siehe Beispiele.
      • volume:
        Setzen der Ausgabe Lautstärke.
        Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!

      Get
        N/A

      Attribute
      • TTS_Delemiter
        Optional: Wird ein Delemiter angegeben, so wird der Sprachbaustein an dieser Stelle geteilt. Als Delemiter ist nur ein einzelnes Zeichen zulässig. Hintergrund ist die Tatsache, das die Google Sprachengine nur 100Zeichen zulässt.
        Im Standard wird nach jedem Satzende geteilt. Ist ein einzelner Satz länger als 100 Zeichen, so wird zusätzlich nach Kommata, Semikolon und dem Verbindungswort und geteilt.
        Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich und nur Nutzung der Google Sprachengine relevant!
      • TTS_Ressource
        Optional: Auswahl der Sprachengine
        Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!
        • Google
          Nutzung der Google Sprachengine. Ein Internetzugriff ist notwendig! Aufgrund der Qualität ist der Einsatz diese Engine zu empfehlen und der Standard.
        • VoiceRSS
          Nutzung der VoiceRSS Sprachengine. Die Nutzung ist frei bis zu 350 Anfragen pro Tag. Wenn mehr benötigt werden ist ein Bezahlmodell wählbar. Ein Internetzugriff ist notwendig! Aufgrund der Qualität ist der Einsatz diese Engine ebenfalls zu empfehlen. Wenn diese Engine benutzt wird, ist ein APIKey notwendig (siehe TTXS_APIKey)
        • ESpeak
          Nutzung der ESpeak Offline Sprachengine. Die Qualitä ist schlechter als die Google Engine. ESpeak und lame sind vor der Nutzung zu installieren.
          apt-get install espeak lame
        • SVOX-pico
          Nutzung der SVOX-Pico TTS-Engine (aus dem AOSP).
          Die Sprachengine sowie lame müssen installiert sein:
          sudo apt-get install libttspico-utils lame

          Für ARM/Raspbian sind die libttspico-utils leider nicht verfügbar,
          deswegen müsste man diese selbst kompilieren oder das vorkompilierte Paket aus dieser Anleitung verwenden, in aller Kürze:
          sudo apt-get install libpopt-dev lame
          cd /tmp
          wget http://www.dr-bischoff.de/raspi/pico2wave.deb
          sudo dpkg --install pico2wave.deb
      • TTS_APIKey
        Wenn VoiceRSS genutzt wird, ist ein APIKey notwendig. Um diesen zu erhalten ist eine vorherige Registrierung notwendig. Anschließend erhält man den APIKey
        http://www.voicerss.org/registration.aspx
      • TTS_User
        Bisher ohne Benutzung. Falls eine Sprachengine zusätzlich zum APIKey einen Usernamen im Request verlangt.
      • TTS_CacheFileDir
        Optional: Die per Google geladenen Sprachbausteine werden in diesem Verzeichnis zur Wiedeverwendung abgelegt. Es findet zurZEit keine automatisierte Löschung statt.
        Default: cache/
        Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!
      • TTS_UseMP3Wrap
        Optional: Für eine flüssige Sprachausgabe ist es zu empfehlen, die einzelnen vorher per Google geladenen Sprachbausteine zu einem einzelnen Sprachbaustein zusammenfassen zu lassen bevor dieses per Mplayer ausgegeben werden. Dazu muss Mp3Wrap installiert werden.
        apt-get install mp3wrap
        Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!
      • TTS_MplayerCall
        Optional: Angabe der Systemaufrufes zu Mplayer. Das folgende Beispiel ist der Standardaufruf.
        Beispiel: sudo /usr/bin/mplayer
      • TTS_SentenceAppendix
        Optional: Angabe einer mp3-Datei die mit jeder Sprachausgabe am Ende ausgegeben wird.
        Voraussetzung ist die Nutzung von MP3Wrap. Die Sprachbausteine müssen bereits als mp3 im CacheFileDir vorliegen. Beispiel: silence.mp3
      • TTS_FileMapping
        Angabe von möglichen MP3-Dateien mit deren Templatedefinition. Getrennt duch Leerzeichen. Die Templatedefinitionen können in den per tts übergebenen Sprachbausteinen verwendet werden und müssen mit einem beginnenden und endenden Doppelpunkt angegeben werden. Die Dateien müssen im Verzeichnis TTS_FileTemplateDir gespeichert sein.
        attr myTTS TTS_FileMapping ring:ringtone.mp3 beep:MyBeep.mp3
        set MyTTS tts Achtung: hier kommt mein Klingelton :ring: War der laut?
      • TTS_FileTemplateDir
        Verzeichnis, in dem die per TTS_FileMapping und TTS_SentenceAppendix definierten MP3-Dateien gespeichert sind.
        Optional, Default: cache/templates
      • TTS_VolumeAdjust
        Anhebung der Grundlautstärke zur Anpassung an die angeschlossenen Lautsprecher.
        Default: 110
        attr myTTS TTS_VolumeAdjust 400
      • TTS_noStatisticsLog
        1, verhindert das Loggen von Statistikdaten in DbLog Geräten, default ist 0
        Bitte zur Beachtung: Das Logging ist wichtig um alte, lang nicht genutzte Cachedateien automatisiert zu loeschen. Wenn dieses hier dektiviert wird muss sich der User selbst darum kuemmern.
      • readingFnAttributes

      • disable
        If this attribute is activated, the soundoutput will be disabled.
        Possible values: 0 => not disabled , 1 => disabled
        Default Value is 0 (not disabled)

      • verbose
        4: Alle Zwischenschritte der Verarbeitung werden ausgegeben
        5: Zusätzlich werden auch die Meldungen von Mplayer und Mp3Wrap ausgegeben

      Beispiele
        define MyTTS Text2Speech hw=0.0
        set MyTTS tts Die Alarmanlage ist bereit.
        set MyTTS tts :beep.mp3:
        set MyTTS tts :mytemplates/alarm.mp3:Die Alarmanlage ist bereit.:ring.mp3:

      TrashCal

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

      Twilight


        Define
          define <name> Twilight <latitude> <longitude> [<indoor_horizon> [<Weather_Position>]]

          Erstellt ein virtuelles Device für die Dämmerungsberechnung (Zwielicht)

          latitude, longitude (geografische Länge & Breite)
          Die Parameter latitude und longitude sind Dezimalzahlen welche die Position auf der Erde bestimmen, für welche der Dämmerungs-Status berechnet werden soll.

          indoor_horizon
          Der Parameter indoor_horizon bestimmt einen virtuellen Horizont, der für die Berechnung der Dämmerung innerhalb von Rämen genutzt werden kann. Minimalwert ist -6 (ergibt gleichen Wert wie Zivile Dämmerung). Bei 0 fallen indoor- und realer Dämmerungswert zusammen. Werte grösser 0 ergeben frühere Werte für den Abend bzw. spätere für den Morgen.

          Weather_Position
          Der Parameter Weather_Position ist die Yahoo! Wetter-ID welche für den Bezug der Wetterinformationen gebraucht wird. Gehe auf http://weather.yahoo.com/ und gebe einen Ort (ggf. PLZ) ein. In der URL der daraufhin geladenen Seite ist an letzter Stelle die ID. Beispiel: München, Deutschland -> 676757

          Ein Twilight-Device berechnet periodisch die Dämmerungszeiten und -phasen während des Tages. Es berechnet ein virtuelles "Licht"-Element das einen Indikator für die momentane Tageslichtmenge ist. Neben der Position auf der Erde wird es vom sog. "indoor horizon" (Beispielsweise hohe Gebäde oder Berge) und dem Wetter beeinflusst. Schlechtes Wetter führt zu einer Reduzierung des Tageslichts für den ganzen Tag. Das berechnete Licht liegt zwischen 0 und 6 wobei die Werte folgendes bedeuten:

          light
          0 - Totale Nacht, die Sonne ist mind. -18 Grad hinter dem Horizont
          1 - Astronomische Dämmerung, die Sonne ist zw. -12 und -18 Grad hinter dem Horizont
          2 - Nautische Dämmerung, die Sonne ist zw. -6 and -12 Grad hinter dem Horizont
          3 - Zivile/Bürgerliche Dämmerung, die Sonne ist zw. 0 and -6 hinter dem Horizont
          4 - "indoor twilight", die Sonne ist zwischen dem Wert indoor_horizon und 0 Grad hinter dem Horizont (wird nicht verwendet wenn indoor_horizon=0)
          5 - Wetterbedingte Dämmerung, die Sonne ist zwischen indoor_horizon und einem virtuellen Wetter-Horizonz (der Wetter-Horizont ist Wetterabhängig (optional)
          6 - Maximales Tageslicht

          Azimut, Elevation, Twilight (Seitenwinkel, Höhenwinkel, Dämmerung)
          Das Modul berechnet zusätzlich Azimuth und Elevation der Sonne. Diese Werte können zur Rolladensteuerung verwendet werden.

          Das Reading Twilight wird als neuer "(twi)light" Wert hinzugefügt. Er wird aus der Elevation der Sonne mit folgender Formel abgeleitet: (Elevation+12)/18 * 100). Das erlaubt eine detailliertere Kontrolle der Lampen während Sonnenauf - und untergang. Dieser Wert ist zwischen 0% und 100% wenn die Elevation zwischen -12° und 6°

          Wissenswert dazu ist, dass die Sonne, abhägnig vom Breitengrad, bestimmte Elevationen nicht erreicht. Im Juni und Juli liegt die Sonne in Mitteleuropa nie unter -18°. In nördlicheren Gebieten (Norwegen, ...) kommt die Sonne beispielsweise nicht über 0°.

          All diese Aspekte müssen berücksichtigt werden bei Schaltungen die auf Twilight basieren.

          Beispiel:
                define myTwilight Twilight 49.962529  10.324845 3 676757
              

        Set
          N/A

        Get
          get <name> <reading>

          lightder aktuelle virtuelle Tageslicht-Wert
          nextEventName des nächsten Events
          nextEventTimedie Zeit wann das nächste Event wahrscheinlich passieren wird (während Lichtphase 5 und 6 wird dieser Wert aktualisiert wenn sich das Wetter ändert)
          sr_astroZeit des astronomitschen Sonnenaufgangs
          sr_nautZeit des nautischen Sonnenaufgangs
          sr_civilZeit des zivilen/bürgerlichen Sonnenaufgangs
          srZeit des Sonnenaufgangs
          sr_indoorZeit des "indoor" Sonnenaufgangs
          sr_weather"Wert" des Wetters beim Sonnenaufgang
          ss_weather"Wert" des Wetters beim Sonnenuntergang
          ss_indoorZeit des "indoor" Sonnenuntergangs
          ssZeit des Sonnenuntergangs
          ss_civilZeit des zivilen/bürgerlichen Sonnenuntergangs
          ss_nauticZeit des nautischen Sonnenuntergangs
          ss_astroZeit des astro. Sonnenuntergangs
          azimuthaktueller Azimuth der Sonne. 0° ist Norden 180° ist Süden
          compasspointEin Wortwert des Kompass-Werts
          elevationthe elevaltion of the sun
          twilightProzentualer Wert eines neuen "(twi)light" Wertes: (elevation+12)/18 * 100)
          twilight_weatherProzentualer Wert eines neuen "(twi)light" Wertes: (elevation-WEATHER_HORIZON+12)/18 * 100). Wenn ein Wetterwert vorhanden ist, ist es immer etwas dunkler als bei klarem Wetter.
          conditionYahoo! Wetter code
          condition_txtYahoo! Wetter code als Text
          horizonWert des aktuellen Horizont 0°, -6°, -12°, -18°

        Attributes
        • readingFnAttributes
        • useExtWeather <device>:<reading>
        • Nutzt Daten von einem anderen Device um twilight_weather zu berechnen.
          Das Reading sollte sich im Intervall zwischen 0 und 100 bewegen, z.B. das Reading c_clouds in einemopenweathermap device, bei dem 0 heiteren und 100 bedeckten Himmel bedeuten. Wird diese Attribut genutzt , werden Wettereffekte wie Starkregen oder Gewitter fuer die Berechnung von twilight_weather nicht mehr herangezogen.

        Functions
        • twilight($twilight, $reading, $min, $max)
        • - implementiert eine Routine um die Dämmerungszeiten wie Sonnenaufgang mit min und max Werten zu berechnen.

          $twilightName der twiligh Instanz
          $readingName des zu verwendenden Readings. Beispiel: ss_astro, ss_weather ...
          $minParameter min time - optional
          $maxParameter max time - optional

        Anwendungsbeispiel:
            define BlindDown at *{twilight("myTwilight","sr_indoor","7:30","9:00")} set xxxx position 100
            # xxxx ist ein definiertes Rollo
        

      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

      UWZ

        Das Modul extrahiert Unwetterwarnungen von www.unwetterzentrale.de.
        Hierfür wird die selbe Schnittstelle verwendet die auch die Android App Alerts Pro nutzt. Es werden maximal 10 Standortbezogene Unwetterwarnungen zur Verfügung gestellt. Weiterhin verfügt das Modul über HTML-Templates welche als weblink verwendet werden können.
        Es nutzt die Perl-Module HTTP::Request, LWP::UserAgent, JSON, Encode::Guess, Text::Iconv und HTML::Parse.

        Define

          define <Name> UWZ [Ländercode] [Postleitzahl] [INTERVAL]


          Beispiel:
          define Unwetterzentrale UWZ DE 86405 3600
           
        • [Ländercode]
          Mögliche Werte: DE, AT, CH, SEARCH, ...
          (für ander Länder als Deutschland bitte den SEARCH Parameter nutzen um die AreaID zu ermitteln.)

        • [Postleitzahl/AreaID]
          Die Postleitzahl/AreaID des Ortes für den Unwetterinformationen abgefragt werden sollen.

        • [INTERVAL]
          Definiert das Interval zur aktualisierung der Unwetterwarnungen. Das Interval wird in Sekunden angegeben, somit aktualisiert das Modul bei einem Interval von 3600 jede Stunde 1 mal.


        Get

        • get <name> Bodenfrost
          Gibt aus ob aktuell eine Bodenfrostwarnung besteht (active|inactive).

        • get <name> Extremfrost
          Gibt aus ob aktuell eine Extremfrostwarnung besteht (active|inactive).

        • get <name> Gewitter
          Gibt aus ob aktuell eine Gewitter Warnung besteht (active|inactive).

        • get <name> Glaette
          Gibt aus ob aktuell eine Glaettewarnung besteht (active|inactive).

        • get <name> Glatteisregen
          Gibt aus ob aktuell eine Glatteisregen Warnung besteht (active|inactive).

        • get <name> Hagel
          Gibt aus ob aktuell eine Hagel Warnung besteht (active|inactive).

        • get <name> Hitze
          Gibt aus ob aktuell eine Hitze Warnung besteht (active|inactive).

        • get <name> Regen
          Gibt aus ob aktuell eine Regen Warnung besteht (active|inactive).

        • get <name> Schneefall
          Gibt aus ob aktuell eine Schneefall Warnung besteht (active|inactive).

        • get <name> Sturm
          Gibt aus ob aktuell eine Sturm Warnung besteht (active|inactive).

        • get <name> Waldbrand
          Gibt aus ob aktuell eine Waldbrand Warnung besteht (active|inactive).


        Get (Search-Mode)

        • get <name> SearchAreaID <gesuchte_stadt>
          Gibt die AreaID zum eingegebenen Ort aus.


        Set

        • set <name> update
          Startet sofort ein neues Auslesen der Unwetterinformationen.


        Attribute

        • download
          Download Unwetterkarten während des updates (0|1).
        • savepath
          Pfad zum speichern der Karten (default: /tmp/).
        • maps
          Leerzeichen separierte Liste der zu speichernden Karten. Für mögliche Karten siehe UWZAsHtmlKarteLand.
        • humanreadable
          Anzeige weiterer Readings Warn_?_Start_Date, Warn_?_Start_Time, Warn_?_End_Date, Warn_?_End_Time. Diese Readings enthalten aus dem Timestamp kalkulierte Datums/Zeit Angaben. Weiterhin werden folgende Readings aktivier: Warn_?_Type_Str und Warn_?_uwzLevel_Str welche den Unwettertyp als auch das Unwetter-Warn-Level als Text ausgeben. (0|1)
        • lang
          Umschalten der angeforderten Sprache für kurz und lange warn text. (de|en|it|fr|es|..).
        • sort_readings_by
          Sortierreihenfolge der Warnmeldungen. (start|severity).
        • htmlsequence
          Anzeigereihenfolge der html warnungen. (ascending|descending).
        • htmltitle
          Titel / Ueberschrift der HTML Ausgabe
        • htmltitleclass
          css-Class des Titels der HTML Ausgabe
        • localiconbase
          BaseURL angeben um Warn Icons lokal zu hosten. (Dateityp ist png).


        Readings

        • Warn_0|1|2|3...|9_... - aktive Warnmeldungen
        • WarnCount - Anzahl der aktiven Warnmeldungen
        • WarnUWZLevel - Gesamt Warn Level
        • WarnUWZLevel_Color - Gesamt Warn Level Farbe
        • WarnUWZLevel_Str - Gesamt Warn Level Text
        • Warn_0_AltitudeMin - minimum Höhe für Warnung
        • Warn_0_AltitudeMax - maximum Höhe für Warnung
        • Warn_0_EventID - EventID der Warnung
        • Warn_0_Creation - Warnungs Erzeugung
        • Warn_0_Creation_Date - Warnungs Erzeugungs Datum
        • Warn_0_Creation_Time - Warnungs Erzeugungs Zeit
        • Warn_0_Start - Begin der Warnung
        • Warn_0_Start_Date - Startdatum der Warnung
        • Warn_0_Start_Time - Startzeit der Warnung
        • Warn_0_End - Warn Ende
        • Warn_0_End_Date - Enddatum der Warnung
        • Warn_0_End_Time - Endzeit der Warnung
        • Warn_0_Severity - Schwere des Unwetters (0 kein Unwetter, 12 massives Unwetter)
        • Warn_0_Hail - Hagelwarnung (1|0)
        • Warn_0_Type - Art des Unwetters
        • Warn_0_Type_Str - Art des Unwetters (text)
          • 1 - unbekannt
          • 2 - Sturm/Orkan
          • 3 - Schneefall
          • 4 - Regen
          • 5 - Extremfrost
          • 6 - Waldbrandgefahr
          • 7 - Gewitter
          • 8 - Glätte
          • 9 - Hitze
          • 10 - Glatteisregen
          • 11 - Bodenfrost
        • Warn_0_uwzLevel - Unwetterwarnstufe (0-5)
        • Warn_0_uwzLevel_Str - Unwetterwarnstufe (text)
        • Warn_0_levelName - Level Warn Name
        • Warn_0_ShortText - Kurzbeschreibung der Warnung
        • Warn_0_LongText - Ausführliche Unwetterbeschreibung
        • Warn_0_IconURL - Kumulierte URL um Warnungs-Icon von www.unwetterzentrale.de anzuzeigen

        Weblinks

          Über die Funktionen UWZAsHtml, UWZAsHtmlLite, UWZAsHtmlFP, UWZAsHtmlKarteLand, UWZAsHtmlMovie wird HTML-Code zur Warnanzeige und Wetterfilme über weblinks erzeugt.


          Beispiele:
        • define UnwetterDetailiert weblink htmlCode {UWZAsHtml("Unwetterzentrale")}

        • define UnwetterLite weblink htmlCode {UWZAsHtmlLite("Unwetterzentrale")}

        • define UnwetterFloorplan weblink htmlCode {UWZAsHtmlFP("Unwetterzentrale")}

        • define UnwetterKarteLand weblink htmlCode {UWZAsHtmlKarteLand("Unwetterzentrale","Bayern")}
          • Der zweite Parameter kann einer der folgenden sein:
            • europa

            • deutschland
            • deutschland-small
            • niedersachsen
            • bremen
            • bayern
            • schleswig-holstein
            • hamburg
            • mecklenburg-vorpommern
            • sachsen
            • sachsen-anhalt
            • nordrhein-westfalen
            • thueringen
            • rheinland-pfalz
            • saarland
            • baden-wuerttemberg
            • hessen
            • brandenburg
            • berlin

            • oesterreich
            • burgenland
            • kaernten
            • niederoesterreich
            • oberoesterreich
            • salzburg
            • steiermark
            • tirol
            • vorarlberg
            • wien

            • schweiz
            • aargau
            • appenzell_ausserrhoden
            • appenzell_innerrhoden
            • basel_landschaft
            • basel_stadt
            • bern
            • fribourg
            • geneve
            • glarus
            • graubuenden
            • jura
            • luzern
            • neuchatel
            • nidwalden
            • obwalden
            • schaffhausen
            • schwyz
            • solothurn
            • stgallen
            • ticino
            • thurgau
            • uri
            • waadt
            • wallis
            • zug
            • zuerich

            • liechtenstein

            • belgique

            • denmark

            • finnland

            • france

            • letzebuerg

            • nederland

            • norwegen

            • portugal

            • sverige

            • espana

            • unitedkingdom
            • eastofengland
            • eastmidlands
            • london
            • northeastengland
            • northernireland
            • northwestengland
            • scotland
            • southeastengland
            • southwestengland
            • wales
            • westmidlands
            • yorkshireandthehumber

            • isobaren1
            • isobaren2
            • isobaren3
        • define UnwetterKarteMovie weblink htmlCode {UWZAsHtmlMovie("Unwetterzentrale","niederschlag-wolken-de")}
          • Der zweite Parameter kann einer der folgenden sein:
            • niederschlag-wolken
            • stroemung
            • temperatur

            • niederschlag-wolken-de
            • stroemung-de

            • niederschlag-wolken-ch
            • stroemung-ch

            • niederschlag-wolken-at
            • stroemung-at

            • clouds-precipitation-uk
            • currents-uk




      UbiquitiMP

        FHEM Modul für die Ubiquiti mFi mPower Schaltsteckdosen
        Mehr Informationen zu den verschiedenen mPower Modellen im Wiki unter http://www.fhemwiki.de/wiki/Ubiquit_mFi/mPower
        FHEM Forum : http://forum.fhem.de/index.php/topic,35722.0.html
        Define
          define <name> UbiquitiMP <IP or FQDN>
          Beispiel :
          define Ubi UbiquitiMP 192.168.0.100
          define Ubi UbiquitiMP myhost.dyndns.org
          Perl Net::Telnet und das Perl JSON Modul werden benötigt. Bei einem Raspberry Pi können diese leicht mit den folgenden beiden Befehlen installiert werden:
          apt-get install libjson-perl
          apt-get install libnet-telnet-perl

        Set
        • Outx on / off (force) -> schaltet den Port x an oder aus
        • Outx toggle -> schaltet den Port aus wenn er an ist und umgekehrt
        • Outx lock / unlock -> Ist lock bei einem Port gesetzt kann er nicht mehr an oder aus geschaltet werden
        • Outx reset -> setzt den internen Verbrauchszähler für diesen Port zurück
        • Outx enable / disable -> interne Verbrauchsmessung für diesen Port ein / aus schalten

        • Bei der mPower mini entfällt die Angabe von Outx !
          Zusätzlich unterstützt die mini die set Extensions direkt
        Get
        • status -> Gibt den aktuellen Status aller Ports zurück
        • info -> liefert einige interne Parameter des Gerätes
        • reboot -> Startet das Gerät neu

        Attributes
        • ignoreList -> Liste der Ports die bei Abfragen ignoriert werden sollen, Bsp. attr Ubi ignoreList 456
          ignoriert alle Werte der Ports 4,5 und 6

        • groupPorts -> Durch Kommatas getrennte Liste um Ports in Gruppen zusammen zu fassen.
          Die Gruppen können danach wie win einzelner Port behandelt werden.
          Bsp. attr Ubi groupPorts TV=12 Media=4,5,6 (GruppenName=Port Nummer des Ports in der Gruppe)
          set Ubi TV on oder set Ubi Media toggle

        • ledconnect -> Farbe der LED beim Zugriff mit fhem

        • subDevices -> Legt für jeden Port ein eigenes Subdevice an
          (Default 1 für die 3 and 6 Port mPower, Default 0 für die mPower 1 Port mini) benötigt zusätzlich das Modul 98_UbiquitiOut.pm

        • interval -> Abfrage Interval in Sekunden, kann ausgeschaltet werden mit dem Wert 0 (Default ist 300)

        • timeout -> Wartezeit in Sekunden bevor eine Abfrage mit einer Fehlermeldung abgebrochen wird (Default ist 5 Sekunden)
          Werte unter zwei Sekunden werden vom Modul nicht angenommen !

        • user -> Login Username (Default ubnt)

        • password -> Login Passwort (Default ubnt)

      UbiquitiOut

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

      Unifi

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

      Utils

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

      VBUSDEV

        Bei dem VBus handelt es sich um eine bidirektionale halbduplex Zweidrahtschnittstelle.

        Notwendig ist dazu ein RESOL-Adapter (USB oder LAN), zu dem hier Informationen zu finden sind:
        http://www.resol.de/

        Weitere Informationen hierzu findet man unter http://hobbyelektronik.org/w/index.php/VBus-Decoder/ und auch auf github https://github.com/pejonp/vbus



        Define
          define <name> VBUSDEV <id> [<interval>]

          Definition eines RESOL VBus Geraetes. Wenn das Geraet schon in der Liste hinterlegt ist, wird es automatisch angelegt.
          Beispiel:
            define VBUSDEV_7321 VBUSDEV 7321

        Readings
        • The readings are dependant of the model of the VBUS device.



      VBUSIF

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

      VCONTROL

        Das VCONTROL ist das fhem-Modul eine VIESSMANN Heizung via Optolink-Schnittstelle auszulesen und zu steuern.

        Notwendig ist dazu ein Optolink-Adapter (USB oder LAN), zu dem hier Informationen zu finden sind:
        http://openv.wikispaces.com/

        Zusätzlich müssen für die verschiedenen Heizungstypen (z.B. V200KW1, VScotHO1, VPlusHO1 ....) Speicher-Adressen bekannt sein,
        unter denen die Messwerte abgefragt oder aber auch Stati gesetzt werden können.
        Informationen hierzu findet man im Forum http://openv.wikispaces.com/ und auf der wiki Seite http://openv.wikispaces.com/


        Define
          define <name> VCONTROL <serial-device/LAN-Device:port> <configfile> [<intervall>]

        • <serial-device/LAN-Device:port>
          USB Port (z.B. com4, /dev/ttyUSB3) oder aber TCPIP:portnummer
        • <intervall>
          Anzahl Sekunden wie oft die Heizung ausgelesen werden soll (default 180)
        • <configfile>
          Pfad wo die Konfigurationsdatei für das Modul zu finden ist, die die Adressen beinhaltet

        • Beispiel:

          serielle Schnittstelle über com4, alle 3 Minuten wird gepollt, configfile heisst 99_VCONTROL.cfg und liegt im fhem root Verzeichnis

          Windows:
          define Heizung VCONTROL com4 99_VCONTROL.cfg 180

          Linux:
          define Heizung VCONTROL /dev/ttyUSB3 99_VCONTROL.cfg 180


        Set
          Diese müssen über das configfile konfiguriert werden.


        Get
          get <name> CONFIG

          Mit diesem Befehl wird das Modul spezifische configfile nachgeladen.

          Diese anderen Befehler müssen über das configfile konfiguriert werden.


        configfile
          Im configfile hat man nun die folgenden Konfigurations Möglichkeiten.

          Beispieldateien f¨r die Geräte-Typen V200KW1, VScotHO1, VPlusHO1 sind auf der wiki Seite http://www.fhemwiki.de/wiki/Vitotronic_200_%28Viessmann_Heizungssteuerung%29 zu finden.

        • Zeilen die mit "#" beginnen sind Kommentar!
        • Polling Commandos (POLL) zum Lesen von Werten können konfiguriert werden.
        • Set Commandos (SET) zum setzen von Werten können konfiguriert werden.

        • Polling Commandos haben den folgenden Aufbau:

          POLL, ADDRESSE, PARSEMETHODE, DIVISOR, READING-NAME, KUMULATION

          • POLL
            muss fest auf POLL stehen

          • ADDRESSE
            Adresse, an der der auszulesende Wert im Speicher zu finden ist.
            Sie besteht aus 3 Teilen:
            • beginnt immer mit 01F7 (Kommando zum Lesen)
            • danach folgt die eigentliche Addresse
            • danach muss die Anzahl der zu lesenden Bytes noch an die Adresse angehängt werden.

          • PARSEMETHODE
            Methode wie die gelesenen Bytes interpretiert werden müssen.
            Bisher mögliche Parsemethoden:
            • 1ByteU :
              Empfangener Wert in 1 Byte ohne Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)
            • 1ByteU2 :
              Empfangener Wert in 1 Byte ohne Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)
            • 1ByteS :
              Empfangener Wert in 1 Byte mit Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)
            • 2ByteS :
              Empfangener Wert in 2 Byte mit Vorzeichen
            • 2ByteU :
              Empfangener Wert in 2 Byte ohne Vorzeichen
            • 2BytePercent :
              Empfangener Wert in 2 Byte als Prozent Wert
            • 2ByteH :
              Empfangener Wert in 2 Byte als Hex Wert
            • 4Byte :
              Empfangener Wert in 4 Byte
            • mode :
              Empfangener Wert ist der Betriebsstatus
            • timer :
              Empfangener Wert ist ein 8 Byte Timer Werte
            • date :
              Empfangener Wert ist ein 8 Byte Zeitstempel
            • POLL Commandos die die Parsemethode timer enthalten werden nicht ständig gelesen, sondern müssen mit einem GET Commando geholt werden.
              GET <devicename> TIMER

          • DIVISOR
            Wenn der interpretierte Wert noch um einen Faktor zu hoch ist, kann hier ein Divisor angegeben werden.
            Zusätzlich hat man hier bei Werten, die nur 0 oder 1 liefern die möglich state einzutragen.
            Dies führt dazu, dass das Reading mit off (0) und on (1) belegt wird, statt mit dem Wert.

          • READING-NAME
            Der gelesene und interpretierte Wert wird unter diesem Reading abgelegt.

          • KUMULATION
            Bei den Polling Commandos mit dem Wert day bei der Spalte KUMULATION werden Tageswerte Kumuliert.
            Es werden dann jeweils nach 00:00 Uhr die Werte des letzten Tages ebenfalls als Readings im Device eingetragen,
            so dass man die Werte pro Tag auch plotten oder auswerten kann.
            Beim Readingnamen wird dann jeweils: DayStart,Today und LastDay angehangen!

          • Beispiel:

            POLL, 01F7080402, 2ByteS, 10 , Temp-WarmWasser-Ist , -
            POLL, 01F7088A02, 2ByteU, 1 , BrennerStarts , day


          Set Commandos haben den folgenden Aufbau:

          SET,SETCMD, ADRESSE, CONVMETHODE, NEXT_CMD or DAY for timer

          • SET
            muss fest auf SET stehen

          • SETCMD
            Die SETCMD sind die Commandos die man in FHEM zum setzen angeben muss
            set <devicename> <setcmd>
            z.B. SET <devicename> WW zum setzen auf den Status nur Warm Wasser Aufbereitung

          • ADDRESSE
            Adresse, an der der zu setzende Wert im Speicher zu schreiben ist.
            Sie besteht aus 4 Teilen:
            • beginnt immer mit 01F4 (Kommando zum Lesen)
            • danach folgt die eigentliche Addresse
            • danach folgt die Anzahl der zu schreibenden Daten-Bytes
            • danach müssen die Daten-Bytes selber noch an die Adresse angehängt werden.

            Es gibt zwei Varianten bei den Adressen:
          • Variante 1: Wert steht bereits fest, z.B. Spar Modus einschalten ist fix 01
          • Variante 2: Wert muss übergeben werden, z.B. Warm Wasser Temperatur

          • CONVMETHODE
            Methode wie der zu schreibende Wert bei Variante 2 in Bytes konvertiert werden muss.
            Bei Variante 1 kann man - eintragen.
            Bisher mögliche Convmethoden:
            • 1ByteU :
              Zu sendender Wert in 1 Byte ohne Vorzeichen
              bei Variante 2 muss eine Zahl übergeben werden
            • 1ByteS :
              Zu sendender Wert in 1 Byte mit Vorzeichen
              bei Variante 2 muss eine Zahl übergeben werden
            • 2ByteS :
              Zu sendender Wert in 2 Byte mit Vorzeichen
              bei Variante 2 muss eine Zahl übergeben werden
            • 2ByteU :
              Zu sendender Wert in 2 Byte ohne Vorzeichen
              bei Variante 2 muss eine Zahl übergeben werden
            • timer :
              Zu sendender Wert ist ein 8 Byte Timer Werte
              bei Variante 2 muss folgender String uebergeben werden:
              8 Uhrzeiten mit Komma getrennt. (AN1,AUS1,AN2,AUS2,AN3,AUS3,AN4,AUS4)
              Keine Uhrzeit muss als -- angegeben werden.
              Minuten der Uhrzeiten dürfen nur 00,10,20,30,40 oder 50 sein
              Beispiel: 06:10,12:00,16:00,23:00,--,--,--,--
            • date :
              Zu sendender Wert ist ein 8 Byte Zeitstempel
              bei Variante 2 muss folgender String uebergeben werden:
              es muss das Format DD.MM.YYYY_HH:MM:SS eingehalten werden
              Beispiel: 21.03.2014_21:35:00

          • NEXT_CMD or DAY
            Diese Spalte erfüllt drei Funktionen:
            • Gibt man in dieser Spalte ein anderes konfiguriertes SETCMD an, so wird dies anschließend ausgeführt.
              Beispiel: nach dem Spar Modus (S-ON) gesetzt wurde, muss der Party Modus (P-OFF) ausgeschaltet werden
            • Ist als CONVMETHODE 1ByteU oder 1ByteS oder 2ByteS oder 2ByteU angegeben, so kann hier ein Faktor angegeben,
              der beim SET auf den angegeben multipliziert wird
              Beispiel: SET, TEMPNHK1 , 01F4200002 , 2ByteU , 10 Bei SET DEVICE TEMPNHK1 21 wird 210 an die Heizung gesendet.
            • Ist als CONVMETHODE timer angegeben, so muss man in dieser Spalte den Wochentag angeben, für den der Timer gilt.
              Mögliche Werte: MO DI MI DO FR SA SO

            Beispiele:

            SET, WW , 01F423010100, state , -
            SET, S-ON , 01F423020101, state_spar , P-OFF
            SET, WWTEMP , 01F4630001 , 1ByteU , -
            SET, TIMER_2_MO, 01F4200008 , timer , MO

        Readings
          Die eingelesenen Werte werden wie oben beschrieben in selbst konfigurierten Readings abgelegt.

      VIERA

        Define
          define <name> VIERA <host> [<interval>]

          Dieses Modul steuert einen Panasonic Fernseher über das Netzwerk. Es ist möglich den Fernseher auszuschalten, die Lautstärke zu ändern oder zu muten bzw. unmuten. Dieses Modul kann zusätzlich die Fernbedienung simulieren. Somit können also die Schaltaktionen einer Fernbedienung simuliert werden. Getestet wurde das Modul mit einem Panasonic Plasma TV tx-p50vt30e

          Beim definieren des Gerätes in FHEM wird ein interner Timer gestartet, welcher zyklisch alle 30 Sekunden den Status der Lautstärke und des Mute-Zustand ausliest. Das Intervall des Timer kann über den Parameter <interval> geändert werden. Wird kein Interval angegeben, liest das Modul alle 30 Sekunden die Werte aus und triggert ein notify.

          Anmerkung:
            Aktivieren von Fernbedienung der Lautstärke per DLNA: Menü -> Setup -> Netzwerk-Setup -> Netzwerkverbindungsein. -> DLNA-Fernbed. Lautst. -> Ein

          Beispiel:
            define myTV1 VIERA 192.168.178.20

            define myTV1 VIERA 192.168.178.20 60 #Mit einem Interval von 60 Sekunden

        Set
          set <name> <command> [<value>]

          Zur Zeit sind die folgenden Befehle implementiert:
            off
            mute [on|off]
            volume [0-100]
            volumeUp
            volumeDown
            channel [1-9999]
            channelUp
            channelDown
            statusRequest
            remoteControl <command>
            input [hdmi1|hdmi2|hdmi3|hdmi4|sdCard|tv]

          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

        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
          blocking [0|1]

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

      VantagePro2

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

      Verkehrsinfo

        Verkehrsinfo kann die aktuellen Verkehrsinformationen von verschiedenen Quellen auslesen.

        • Verkehrsinfo.de
        • Um die gewünschten Verkehrsinformation zu erhalten wird die Webseite https://www.verkehrsinfo.de/httpsmobil besucht. Hier können Sie dann entweder Straßen oder Bundesländer auswählen. Anschließend wird die URL als Parameter übergeben.

        • Hessenschau.de
        • Hier ist keine Konfiguration notwendig, man verwendet die URL http://hessenschau.de/verkehr/index.html als Parameter.

        • RadioSAW.de
        • Hier ist keine Konfiguration notwendig, man verwendet als Parameter radiosaw.


        Voraussetzung:

          Für dieses Modul werden folgende Perlmodule benötigt:
        • HTML::TreeBuilder::XPath
          sudo apt-get install libxml-treebuilder-perl libhtml-treebuilder-xpath-perl
        • JSON
          sudo apt-get install libjson-perl


        Define
          define <name> Verkehrsinfo <url> <interval>

          Beispiel: define A8 Verkehrsinfo https://www.verkehrsinfo.de/httpsmobil/index.php?c=staulist&street=A8&lat=&lon= 3600

          Options:
          • url
            URL der auszulesenden Verkehrsinformationen
          • interval
            Alle wieviel Sekunden die Daten aktualisiert werden

        Set
          set <name> <option>

          Options:
          • update
            Update wird sofort ausgeführt

        Get
          get <name> <option>

          Options:
          • info
            Ausgeben der aktuellen Verkehrsinformationen

        Attributes
          attr <name> <option> <value>

          Options:
          • filter_exclude
            Dies ist ein Ausschlussfilter. Verkehrsmeldung die eines der Wörter enthalten, werden nicht angezeigt.
            Der Filter unterstütz Regulärer Ausdrücke. Achtung: Regex Steuerzeichen, z.B. Klammern müssen mit einem Backslash "\" maskiert werden.
            Mehrer Suchbegriffe können mit einer Pipe "|" getrennt werden.

          • filter_include
            Dies ist ein Einschlussfilter. Es werden nur Verkehrsmeldung angezeigt die eines der Wörter enthalten.
            Der Filter unterstütz Regulärer Ausdrücke. Achtung: Regex Steuerzeichen, z.B. Klammern müssen mit einem Backslash "\" maskiert werden.
            Mehrer Suchbegriffe können mit einer Pipe "|" getrennt werden.

          • Hinweis: Beide Filter können gleichzeitig benutzt werden, aber es kann auch wahlweise nur einer verwendet werden.
            Die Filter sind mit einem Logischen UND verknüpft. Das heist z.B.: wenn etwas ausgeschlossen wurde, kann es nicht mit dem Einschlussfilter wiedergeholt werden.

          • orderby
            Anhand von Zeichefolgen wird eine Sortierung der Meldungen nach Relevanz vorgenommen.
            Die Sortierung unterstützt Regulärer Ausdrücke.
            Mehrer Suchbegriffe können mit einer Pipe "|" getrennt werden.

          • msg_format [ road | head | both ] (Nur Verkehrsinfo.de und RadioSAW.de)
            Über diesen Parameter kann die Meldung formatiert werden nach Strasse, Richtung oder beides

          • readingFnAttributes


        Readings

        • e_0|1|2|3...|9_... - aktive Meldungen
        • count - Anzahl der aktiven Meldungen
        • e_0_road - Straße
        • e_0_head - Fahrtrichtung
        • e_0_msg - Meldung

        Funktion
          Verkehrsinfo_GetData(<devicename>)

          Die Funktion kann überall in FHEM aufgerufen werden und liefert als Rückgabewert das gleiche Ergebnis wie der get <name> info Aufruf. Der Rückgabewert als Text, kann dann für weiteres verwendet werden.

          Beispiel: my $result = Verkehrsinfo_GetData('A8')

      VolumeLink

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

      WEBCOUNT

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

      WEBIO

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

      WEBIO_12DIGITAL

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

      WMBUS - Wireless M-Bus

        Dieses Modul unterstützt Zähler mit Wireless M-Bus, z. B. für Wasser, Gas oder Elektrizität. Wireless M-Bus ist ein standardisiertes Protokoll das von unterschiedlichen Herstellern unterstützt wird. Es verwendet das 868 MHz Band für Radioübertragungen. Daher wird ein Gerät benötigt das die Wireless M-Bus Nachrichten empfangen kann, z. B. ein CUL mit culfw >= 1.59 oder ein AMBER Wireless AMB8465-M.
        WMBus verwendet zwei unterschiedliche Radioprotokolle, T-Mode und S-Mode. Der Empfänger muss daher so konfiguriert werden, dass er das selbe Protokoll verwendet wie der Sender. Im Falle eines CUL kann das erreicht werden, in dem das Attribut rfmode auf WMBus_T bzw. WMBus_S gesetzt wird.
        WMBus Geräte senden Daten periodisch abhängig von ihrer Konfiguration. Es können u. U. Tage zwischen einzelnen Nachrichten vergehen oder sie können im Minutentakt gesendet werden.
        WMBus Nachrichten können optional verschlüsselt werden. Bei verschlüsselten Nachrichten muss der passende Schlüssel mit dem Attribut AESkey angegeben werden. Andernfalls wird die Entschlüsselung fehlschlagen und es können keine relevanten Daten ausgelesen werden.

        Voraussetzungen
        Dieses Modul benötigt die perl Module Crypt::CBC, Digest::CRC and Crypt::OpenSSL::AES (AES wird nur benötigt wenn verschlüsselte Nachrichten verarbeitet werden sollen).
        Bei einem Debian basierten System können diese so installiert werden
        sudo apt-get install libcrypt-cbc-perl libdigest-crc-perl libssl-dev
        sudo cpan -i Crypt::OpenSSL::AES


        Define
          define <name> WMBUS [<manufacturer id> <identification number> <version> <type> [<:MessageEncoding>]]|<bHexCode>

          Normalerweise wird ein WMBus Device nicht manuell angelegt. Dies geschieht automatisch bem Empfang der ersten Nachrichten eines Gerätes über den fhem autocreate Mechanismus.
          Für eine manuelle Definition gibt es zwei Wege.
          • Durch Verwendung einer WMBus Rohnachricht wie sie vom IODev empfangen wurde. So eine Nachricht beginnt mit einem kleinen 'b' und enthält mindestens 24 hexadezimale Zeichen. Das WMBUS Modul extrahiert daraus alle benötigten Informationen.
          • Durch explizite Angabe der Informationen die ein WMBus Gerät eindeutig identfizieren.
            Der Hersteller Code, besteht aus drei Buchstaben als Abkürzung des Herstellernamens. Eine Liste der Abkürzungen findet sich unter dlms.com
            Die Idenitfikationsnummer ist die Seriennummer des Zählers.
            Version ist ein Versionscode des Zählers.
            Typ ist die Art des Zählers, z. B. Wasser oder Elektrizität, kodiert als Zahl.
            MessageEncoding ist entweder CUL oder AMB, je nachdem welche Art von IODev verwendet wird


        Set
          N/A

        Get
          N/A

        Attributes
        • IODev
          Setzt den IO oder physisches Gerät welches für den Empfang der Signale für dieses 'logische' Gerät verwendet werden soll. Ein Beispiel für ein solches Gerät ist ein CUL.

        • AESKey
          Ein 16 Bytes langer AES-Schlüssel in hexadezimaler Schreibweise. Wird verwendet um Nachrichten von Zählern zu entschlüsseln bei denen die Verschlüsselung aktiviert ist.

        • ignore

        • rawmsg_as_reading
          Wenn auf 1 gesetzt so werden empfangene Nachrichten im Reading rawmsg gespeichert. Das kann verwendet werden um Rohnachrichten zu loggen und beim Debugging zu helfen.

        Readings
          Zähler können sehr viele unterschiedliche Informationen senden, abhängig von ihrem Typ. Ein Elektrizitätszähler wird andere Daten senden als ein Wasserzähler. Die Information hängt auch vom Hersteller des Zählers ab. Für weitere Informationen siehe die WMBus Spezifikation unter oms-group.org.

          Die Readings werden als Block dargestellt, beginnend mit Block 1. Ein Zähler kann mehrere Blöcke senden. Jeder Block enthält zumindest einen Typ, einen Wert und eine Einheit. Für einen Elektrizitätszähler könnte das z. B. so aussehen
            1_type VIF_ENERGY_WATT
            1_unit Wh
            1_value 2948787

          Es gibt auch eine Anzahl von festen Readings.
          • is_encrypted ist 1 wenn die empfangene Nachricht verschlüsselt ist.
          • decryption_ok ist 1 wenn die Nachricht entweder erfolgreich entschlüsselt wurde oder gar nicht verschlüsselt war.
          • state enthält den Status des Zählers und kann Fehlermeldungen wie 'battery low' enthalten. Normalerweise ist der Wert 'no error'.
          • battery enthält ok oder low.
          Für einige bekannte Gerätetypen werden zusätzliche Readings wie der Energieverbrauch in kWh erzeugt.

      WOL

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

      WS2000

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

      WS300

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

      WS3600

        Definiert eine Wetterstation, die über ein externes Programm ausgelesen wird. Dieses Programm wird zyklisch durch FHEM aufgerufen. Es muss die Daten im gleichen Format wie fetch3600 (Details siehe unten) auf der Standardausgabe liefern.

        Define
          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

        Es wird das Perl-Modul JSON benötigt. Mit apt-get install libjson-perl kann es unter Debian und Derivaten installiert werden.

        Define
          define <name> Weather <location> [<interval> [<language>]]

          Bezechnet ein virtuelles Gerät für Wettervorhersagen.

          Eine solche virtuelle Wetterstation sammelt periodisch aktuelle und zukünftige Wetterdaten aus der Yahoo-Wetter-API.

          Der Parameter location entspricht der sechsstelligen WOEID (WHERE-ON-EARTH-ID). Die WOEID für den eigenen Standort kann auf http://weather.yahoo.com gefunden werden.

          Der optionale Parameter interval gibt die Dauer in Sekunden zwischen den einzelnen Aktualisierungen der Wetterdaten an. Der Standardwert ist 3600 (1 Stunde). Wird kein Wert angegeben, gilt der Standardwert.

          Der optionale Parameter für die möglichen Sprachen darf einen der folgende Werte annehmen: de, en, pl, fr oder nl. Er bezeichnet die natürliche Sprache, in der die Wetterinformationen dargestellt werden. Der Standardwert ist en. Wird für die Sprache kein Wert angegeben, gilt der Standardwert. Wird allerdings der Parameter für die Sprache gesetzt, muss ebenfalls ein Wert für das Abfrageintervall gesetzt werden.

          Beispiele:
                define MyWeather Weather 673513
                define Forecast Weather 673513 1800
               
          Das Modul unterstützt zusätzlich vier verschiedene Funktionen WeatherAsHtml, WeatherAsHtmlV, WeatherAsHtmlH und WeatherAsHtmlD. Die ersten beiden Funktionen sind identisch: sie erzeugen den HTML-Code für eine vertikale Darstellung des Wetterberichtes. Die dritte Funktion liefert den HTML-Code für eine horizontale Darstellung des Wetterberichtes. Die letztgenannte Funktion wählt automatisch eine Ausrichtung, die abhängig davon ist, ob ein Smallcreen Style ausgewählt ist (vertikale Darstellung) oder nicht (horizontale Darstellung). Alle vier Funnktionen akzeptieren einen zusätzlichen optionalen Paramter um die Anzahl der darzustellenden Icons anzugeben.

          Beispiel:
                define MyWeatherWeblink weblink htmlCode { WeatherAsHtmlH("MyWeather") }
              

        Set
          set <name> update

          Erzwingt eine Abfrage der Wetterdaten. Die darauffolgende Abfrage wird gemäß dem eingestellten Intervall interval Sekunden später durchgeführt.


        Get
          get <name> <reading>

          Gültige ausgelesene Daten (readings) und ihre Bedeutung (das ? kann einen der Werte 1, 2, 3 , 4 oder 5 annehmen und steht für heute, morgen, übermorgen etc.):

          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)

          Die folgenden Daten helfen zu identifizieren, ob ein Workaround angeschlagen hat, der die Verwendung von veralteten Daten auf dem entfernten Server verhindert:
          pubDateVeröffentlichungszeitpunkt der Wettervorhersage in den aktuellen Daten (readings)
          pubDateRemoteVeröffentlichungszeitpunkt der Wettervorhersage auf dem entfernten Server
          validitystale, wenn der Veröffentlichungszeitpunkt auf dem entfernten Server vor dem Zeitpunkt der aktuellen Daten (readings) liegt

        Attribute
        • disable: stellt die Abfrage der Wetterdaten ab - der Timer läft gemäß Plan doch es werden keine Daten vom API angefordert.
        • readingFnAttributes

      WeekdayTimer

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

      WifiLight

        Das Modul steuert eine große Anzahl unterschiedlicher "no name" LED Typen und stellt Ihnen einheitliches Interface zur Verfügung.

        Folgende Typen werden unterstützt:

        Leuchtmitteltyp / bridge Type Notiz Signatur im define
        Milight RGB erste Generation E27, stripe controller *(1,2,a,C) RGB bridge-V2|3
        Milight RGBW1 erste Generation RGBW stripe controller *(1,2,a) RGBW1 bridge-V2|3
        Milight White E14, E27, GU10, stripe controller, Downlight *(1,2,b,W,nK) White bridge-V2|3
        Milight RGBW2 zweite Generation E14, E27, GU10, stripe controller, Downlight *(2,b,CW,S20) RGBW2 bridge-V3
        LW12 erste Generation (SSID LEDNet...) RGB stripe controller   RGB LW12
        LW12HX (SSID HX...) RGB stripe controller   RGB LW12HX
        LW12FC (SSID FC...) RGB stripe controller   RGB LW12FC
        LD316 im RGB mode E27   RGB LD316
        LD316 im RGBW mode E27 *(S20) RGBW LD316
        LD316A im RGBW mode E27 *(S20) RGBW LD316A
        LD382 im RGB mode RGB stripe controller   RGB LD382
        LD382 im RGBW mode RGBW stripe controller   RGBW LD382
        LD382A (FW 1.0.6) im RGB mode RGB stripe controller   RGB LD382
        LD382A (FW 1.0.6) im RGBW mode RGBW stripe controller   RGBW LD382
        SENGLED E27 mit WLAN repeater   White Sengled
        SUNRICHER mit RGBW Controller *(!!!) RGBW Sunricher

        (1) milght brigbe V2, V3, V4
        (2) milight bridge V3, V4
        (a) eine Gruppe pro bridge
        (b) vier unabhängige Gruppen pro bridge
        (nK) kein Temperatursupport, Kelvin
        (C) rein Color
        (W) rein White
        (CW) rein Color oder White
        (S20) Saturation <20: umschalten white Channel
        (!!!) EXPERIMENTAL

        Farbangaben

        Farben können im RGB oder im HSV Farbraum angegeben werden.

        Farbangaben im Farbraum "HSV" sind vollständig und in der Regel intuitiver als RGB.

        H (HUE: 0..360) gibt die Grundfarbe in einem Farbkreis an.

        • Rot liegt bei 0°
        • Grün bei 120°
        • Blau bei 240°

        S (Saturation/Sättigung: 0..100) steht für die Sättigung der Farbe. Eine Sättigung von 100 bedeutet die Farbe ist "rein" oder komplett gesättigt. Blau zum Beispiel mit 100% Sättigung entspricht RGB #0000FF.

        V (Value: 0..100) gibt die Helligkeit an. Ein V von 50 heißt: "halbe Helligkeit".

        HUE SAT 0° (Rot) 60° (Gelb) 120° (Grün) 180° (Cyan) 240° (Blau) 300° (Magenta)

        Farbangaben: HSV gegenüber RGB

        Im Normalfall kann eine Farbe im HSV Farbraum genauso wie im RGB Farbraum dargestellt werden.

        Farben im HSV Farbraum wirken meist verständlicher. Um ein Grün im HSV Farbraum etwas mehr in Richtung CYAN zu bewegen wird einfach der HUE Wert (Winkel) etwas erhöht. Im RGB Farbraum ist die gleiche Aufgabe weniger intuitiv durch eine Erhöhung von BLAU zu erreichen.

        Unterschiede werden jedoch bei Transitions deutlich. Um BLAU langsam auf zu dimmen lauten die HSV Transitions 240,100,0 -> 240,100,100. Um von ROT (Helligkeit 0) langsam auf BLAU zu dimmen wird im HSV Farbraum 0,100,0 -> 240,100,100 verwendet. Im RGB Farbraum (#000000 -> #0000FF) kann nicht zwischen den beiden Varianten unterschieden werden. Hier würde (richtiger weise, vermutlich jedoch anders als beabsichtigt) in beiden Fällen ein Weiß (Helligkeit 0) als Startwert erscheinen.

        Define

        • define <name> WifiLight <Leuchtmitteltyp> <bridgetyp>:<IP|FQDN>

          Beispiele

            definiert einen milight RGBW2 Leuchtmittel (Bulb oder LED stripe controller) an einer milight bridge Version 3 oder 4. Die LED wird den maximal 4 verfügbaren Gruppen pro bridge in der Reihenfolge der Definition zugeordnet:
            define wz.licht.decke WifiLight RGBW2 bridge-V3:192.168.178.142

            definiert einen LD382A Controller mit RGBW Stripe:
            define wz.licht.decke WifiLight RGBW LD382A:192.168.178.142

            definiert einen LD382A Controller mit RGB Stripe:
            define wz.licht.decke WifiLight RGB LD382A:192.168.178.142

          WifiLight verfügt über eine "Farbkalibrierung". Sinnvollerweise sollte nach einem Leuchtmitteltausch oder einem define eine Kalibrierung vorgenommen werden.

        Set

        • set <name> on [ramp]

          Schaltet das device ein. Dabei wird entweder 100% Weiß oder die im Attribut "defaultColor" definierte Farbe gewählt.

          Erweiterte Parameter:

          • ramp

        • set <name> off [ramp]

          Schaltet das device aus.

          Erweiterte Parameter:

          • ramp

        • set <name> dimup

          Erhöht die Helligkeit um einen festen Betrag. Dabei wird der im Attribut "dimStep" definierte Wert oder der Default "7" angewendet.
          Dieser Befehl eignet sich besonders um die Helligkeit über einen Wandschalter oder eine Fernbedienung zu erhöhen.

          Erweiterte Parameter:

          • keine

        • set <name> dimdown

          Verringert die Helligkeit um einen festen Betrag. Dabei wird der im Attribut "dimStep" definierte Wert oder der Default "7" angewendet.
          Dieser Befehl eignet sich besonders um die Helligkeit über einen Wandschalter oder eine Fernbedienung zu verringern

          Erweiterte Parameter:

          • keine

        • set <name> dim level [ramp] [q]

          Setzt die Helligkeit auf den angegebenen level (0..100).
          Dieser Befehl behält außerdem die eingestellte Farbe auch bei "dim 0" (ausgeschaltet) und nachfolgendem "dim xx" (eingeschaltet) bei. Daher stellt er eine alternative Form zu "off" / "on" dar. Letzteres würde immer die "defaultColor" wählen.

          Erweiterte Parameter:

          • ramp

          Flags:

          • q

        • set <name> HSV H,S,V [ramp] [s|l|q] [event]

          Setzt die Farbe im HSV Farbraum. Wenn die ramp (als Zeit in Sekunden) angegeben ist, berechnet das modul einen weichen Farbübergang von der aktuellen Farbe zur neu gesetzten.

            Beispiel, setzt ein gesättigtes Blau mit halber Helligkeit:
            set wz.licht.decke HSV 240,100,50

          Erweiterte Parameter:

          • ramp

          Flags:

          • s l q event

        • set <name> RGB RRGGBB [ramp] [l|s|q] [event]

          Setzt die Farbe im RGB Farbraum.

          Erweiterte Parameter:

          • ramp

          Flags:

          • s l q event

        Bedeutung der Flags

        Bestimmte Befehle (set) können mit speziellen Flags versehen werden.

        • ramp:
            Zeit in Sekunden für einen weichen Farb- oder Helligkeitsübergang. Der weiche Übergang startet bei der aktuell sichtbaren Farbe und wird zur angegeben berechnet.
        • s:
            (short, default). Ein weicher Übergang zu einer anderen Farbe wird im "Farbkreis" auf dem kürzesten Weg durchgeführt.
            Eine Transition von ROT nach GRÜN führt auf dem kürzesten Weg über GELB.
        • l:
            (long). Ein weicher Übergang zu einer anderen Farbe wird im "Farbkreis" auf dem "langen" Weg durchgeführt.
            Eine Transition von ROT nach GRÜN führt dann über MAGENTA, BLAU, und CYAN.
        • q:
            (queue). Kommandos mit diesem Flag werden in einer internen Warteschlange zwischengespeichert und erst ausgeführt nachdem die aktuell laufenden weichen Übergänge abgearbeitet wurden. Kommandos ohne das Flag werden sofort abgearbeitet. Dabei werden alle laufenden Übergänge sofort abgebrochen und die Warteschlange wird gelöscht.
        • event:
            Beliebige Bezeichnung ([A-Za-z_0-9])

            WifiLight erzeugt bei Verwendung dieses Flags im Verlauf weicher Übergange zu einer anderen Farbe Nachrichten (events) in der Form:

            WifiLight <NAME> programm: <EVENT> <XX>.

            <EVENT> entspricht dem Namen so wie im Flag angegeben.
            <XX> ist der prozentuale Fortschritt des Übergangs.

            Je nach Gesamtdauer des Übergangs werden die Werte von 0 bis 100 nicht komplett durchlaufen wobei jedoch für 0% und 100% immer ein event garantiert ist. Auf diese events kann dann innerhalb von notify oder DOIF reagiert werden um zum Beispiel:

            • die Lautstärke eines Radios anzupassen wenn eine LED morgens langsam hochgedimmt wird
            • ein Farbübergang kann in einem notify neu gestartet werden wenn er komplett ist (loop)
            • andere Leuchtmittel können mit erstellten Farbübergängen synchronisiert werden

        Farbkalibrierung

        WifiLight unterstützt zwei unterschiedliche Formen der Farbkalibrierungen:

          Korrektur gesättigter Farben

          Hintergrund:

          GELB, zum Beispiel, ist definiert als Mischung aus ROTEM und GRÜNEM Licht zu gleichen Teilen. Je nach verwendeter LED und Ansteuerung ist der GRÜNE Kanal nun möglicherweise viel leuchtstärker. Wenn jetzt also die ROTE und GRÜNE LED jeweils voll angesteuert werden überwiegt GRÜN in dieser Mischung und das gewünschte GELB bekäme einen deutlichen Grünstich. In diesem Beispiel würde jetzt für HSV 60,100,100 kein Gelb (entsprechend 60° im "Farbkreis") erzeugt. Stattdessen würde GRÜN mit GELBSTICH erzeugt das vielleicht einem geschätzten Farbwinkel von 80° entspricht. Die erforderliche Korrektur für GELB würde also minus 20° betragen (60° SOLL - 80° IST = -20° Korrektur). GELB müsste als um -20° korrigiert werden. Mögliche Werte pro Korrektur-Punkt sind +/- 29°.

          Vorgehen:

          Die Korrektur der Vollfarben wird über das Attribut "colorCast" gesteuert. Dabei werden 6 (Komma getrennte) Werte im Bereich -29 bis 29 angegeben. Diese Werte stehen entsprechen der Winkelkorrektur für ROT (0°), GELB (60°), GRÜN (120°), CYAN (180°), BLAU (240°) und MAGENTA (300°). Zuerst sollte die Abweichung für 60°/180°/300° (die Mischfarben) so wie in obigem Beispiel ermittelt und im Attribut hinterlegt werden. Im Anschluss sollten die Primärfarben (0°/120°/240°) so korrigiert werden das die weichen Übergänge zwischen benachbarten reinen Farben möglichst linear erscheinen. Dieser Vorgang muss eventuell iterativ mehrfach wiederholt werden bis das Ergebniss stimmig ist.

          Weißabgleich

          Hintergrund:

          Einige Leuchtmittel erzeugen weißes Licht durch Mischung der RGB Kanäle (zum Beispiel LW12). Je nach Leuchtstärke der RGB Kanäle der verwendeten LED Streifen unterscheidet sich das Ergebnis und eine oder zwei Farben dominieren. Zusätzlich gibt es verschiedene Formen weißen Lichtes. Kaltes Licht hat einen höheren Blauanteil. Dagegen wird in Mitteleuropa für Leuchtmittel meist warm-weiß verwendet welches einen hohen ROT- und geringen BLAU Anteil hat.

          WifiLight bietet die Möglichkeit bei RGB gemischtem Weiß die Zusammensetzung anzupassen. Die Anpassung erfolgt über das Attribut "whitePoint". Dieses erwartet für jeden der drei RGB Kanäle einen Wert zwischen 0 und 1 (ein Komma wird als Punkt angegeben). Die drei Werte werden mit einem normalen Komma getrennt.

          Vorgehen:

          Eine Angabe von "1,1,1" setzt alle die drei Kanäle auf jeweils 100%. Angenommen der BLAU Anteil des weißen Lichtes soll nun verringert werden. Ein Wert von "1,1,0.5" setzt den dritten Kanal (BLAU) bei Weiß auf 0.5 entsprechend 50%. Vor einem Weißabgleich sollte die Korrektur der Vollfarben abgeschlossen sein.

        Attribute

        • attr <name> colorCast <R,Y,G,C,B,M>

          Farbkalibrierung der voll gesättigten Farben. R(ed), Y(ellow), G(reen), C(yan), B(lue), M(agenta) im Bereich +/- 29

        • attr <name> defaultColor <H,S,V>

          HSV Angabe der Lichtfarbe die bei "on" gewählt wird. Default ist Weiß.

        • attr <name> defaultRamp <0 bis X>

          Zeit in Sekunden. Wenn dieses Attribut gesetzt ist wird implizit immer ein weicher Übergang erzeugt wenn keine Ramp im set angegeben ist.

        • attr <name> dimStep <0 bis 100>

          Wert um den die Helligkeit bei dimUp und dimDown verändert wird. Default 7.

        • attr <name> gamma <X.X>

          Das menschliche Auge nimmt Helligkeitsänderungen sehr unterschiedlich wahr (logarithmisch). Bei geringer Ausgangshelligkeit wird schon eine kleine Helligkeitsänderung als sehr stark empfunden und auf der anderen Seite sind bei großer Helligkeit starke Änderungen notwendig. Daher ist eine logarithmische Korrektur des Helligkeitsanstiegs der Leuchtmittel erforderlich damit der Anstieg als gleichmäßig empfunden wird. Einige controller führen diese Korrektur intern durch. In anderen Fällen ist es notwendig diese Korrektur im Modul zu hinterlegen. Ein gamma Wert von 1.0 (default) führt zu einer linearen Ausgabe der Werte. Werte kleiner als 1.0 führen zu einer logarithmischem Korrektur.

        • attr <name> whitePoint <R,G,B>

          Farbkalibrierung für RGB gemischtes weißes Licht.

        • attr <name> readingFnAttributes

        Farbiges Icon für FhemWeb

          Um ein farbiges Icon für FhemWeb zu aktivieren muss das folgende Attribut gesetzt sein:

        • attr <name> devStateIcon {Color_devStateIcon(ReadingsVal($name,"RGB","000000"))}

        Colorpicker für FhemWeb

          Um den Color-Picker für FhemWeb zu aktivieren müssen folgende Attribute gesetzt werden:

        • attr <name> webCmd RGB
        • attr <name> widgetOverride RGB:colorpicker,RGB

      Wunderground

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

      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

      XiaomiFlowerSens

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

      XmlList

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

      YAMAHA_AVR

        Definition
          define <name> YAMAHA_AVR <IP-Addresse> [<Zone>] [<Status_Interval>]

          define <name> YAMAHA_AVR <IP-Addresse> [<Zone>] [<Off_Interval>] [<On_Interval>]


          Dieses Modul steuert AV-Receiver des Herstellers Yamaha über die Netzwerkschnittstelle. Es bietet die Möglichkeit den Receiver an-/auszuschalten, den Eingangskanal zu wählen, die Lautstärke zu ändern, den Receiver "Stumm" zu schalten, sowie den aktuellen Status abzufragen.

          Bei der Definition eines YAMAHA_AVR-Moduls wird eine interne Routine in Gang gesetzt, welche regelmäßig (einstellbar durch den optionalen Parameter <Status_Interval>; falls nicht gesetzt ist der Standardwert 30 Sekunden) den Status des Receivers abfragt und entsprechende Notify-/FileLog-Geräte triggert.

          Sofern 2 Interval-Argumente übergeben werden, wird der erste Parameter <Off_Interval> genutzt sofern der Receiver ausgeschaltet oder nicht erreichbar ist. Der zweiter Parameter <On_Interval> wird verwendet, sofern der Receiver eingeschaltet ist.

          Beispiel:

            define AV_Receiver YAMAHA_AVR 192.168.0.10

            # Mit modifiziertem Status Interval (60 Sekunden)
            define AV_Receiver YAMAHA_AVR 192.168.0.10 mainzone 60

            # Mit gesetztem "Off"-Interval (60 Sekunden) und "On"-Interval (10 Sekunden)
            define AV_Receiver YAMAHA_AVR 192.168.0.10 mainzone 60 10


        Zonenauswahl
          Wenn der zu steuernde Receiver mehrere Zonen besitzt (z.B. RX-V671, RX-V673,... sowie die AVANTAGE Modellreihe) kann die zu steuernde Zone explizit angegeben werden. Die Modellreihen RX-V3xx und RX-V4xx als Beispiel haben nur eine Zone (Main Zone). Je nach Receiver-Modell stehen folgende Zonen zur Verfügung, welche mit dem optionalen Parameter <Zone> angegeben werden können.

          • mainzone - Das ist die Hauptzone (Standard)
          • zone2 - Die zweite Zone (Zone 2)
          • zone3 - Die dritte Zone (Zone 3)
          • zone4 - Die vierte Zone (Zone 4)

          Je nach Receiver-Modell stehen in den verschiedenen Zonen nicht immer alle Eingänge zur Verfügung. Dieses Modul bietet nur die tatsächlich verfügbaren Eingänge an.

          Beispiel:

            define AV_Receiver YAMAHA_AVR 192.168.0.10       # Wenn keine Zone angegeben ist, wird
            attr AV_Receiver YAMAHA_AVR room Wohnzimmer      # standardmäßig "mainzone" verwendet

            # Definition der zweiten Zone
            define AV_Receiver_Zone2 YAMAHA_AVR 192.168.0.10 zone2
            attr AV_Receiver_Zone2 room Schlafzimmer


          Für jede Zone muss eine eigene YAMAHA_AVR Definition erzeugt werden, welche dann unterschiedlichen Räumen zugeordnet werden kann. Jede Zone kann unabhängig von allen anderen Zonen (inkl. der Main Zone) gesteuert werden.

        Set-Kommandos
          set <Name> <Kommando> [<Parameter>]

          Aktuell werden folgende Kommandos unterstützt. Die verfügbaren Eingänge und Szenen können je nach Receiver-Modell variieren. Die folgenden Eingänge stehen beispielhaft an einem RX-V473 Receiver zur Verfügung. Aktuell stehen folgende Kommandos zur Verfügung.

          • on   -   Schaltet den Receiver ein
          • off   -   Schaltet den Receiver aus
          • dsp hallinmunich,hallinvienna,...   -   Aktiviert das entsprechende DSP Preset
          • enhancer on,off   -   Aktiviert den Sound Enhancer für einen verbesserten Raumklang
          • 3dCinemaDsp auto,off   -   Aktiviert den CINEMA DSP 3D Modus
          • adaptiveDrc auto,off   -   Aktiviert Adaptive DRC
          • partyMode on|off   -  Aktiviert den Party Modus. In der Main Zone wird hierbei der Party Modus geräteweit aktiviert oder deaktiviert. In den anderen Zonen kann man damit die entsprechende Zone dem Party Modus zuschalten oder entziehen.
          • navigateListMenu [Element 1]/[Element 2]/.../[Element N]   -   Wählt ein spezifisches Element aus einer Menüstruktur aus. Nur verwendbar bei Menü-basierenden Eingängen (z.B. Net Radio, USB, Server, etc.). Siehe nachfolgendes Kapitel "Automatische Menü Navigation" für weitere Details und Beispiele.
          • tunerFrequency [Frequenz] [AM|FM]   -   setzt die Radio-Frequenz. Das erste Argument ist die Frequenz, der zweite dient optional zu Angabe des Bandes (AM oder FM, standardmäßig FM). Abhängig davon, welches Band man benutzt, wird die Frequenz in kHz (AM-Band) oder MHz (FM-Band) angegeben. Wenn im zweiten Argument kein Band angegeben ist, wird standardmäßig das FM-Band benutzt. Dieser Befehl kann auch benutzt werden, wenn der aktuelle Eingang nicht "tuner" ist. Die neue Frequenz wird dennoch gesetzt und bei der nächsten Benutzung abgespielt.
          • preset 1...40   -   wählt ein gespeichertes Preset für den aktuellen Eingang aus.
          • presetUp   -   wählt das nächste Preset für den aktuellen Eingang aus.
          • presetDown   -   wählt das vorherige Preset für den aktuellen Eingang aus.
          • direct on,off   -   Umgeht alle internen soundverbessernden Maßnahmen (Equalizer, Enhancer, Adaptive DRC,...) und gibt das Signal unverfälscht wieder
          • input hdmi1,hdmiX,...   -   Wählt den Eingangskanal (es werden nur die tatsächlich verfügbaren Eingänge angeboten)
          • scene scene1,sceneX   -   Wählt eine vorgefertigte Szene aus
          • volume 0...100 [direct]   -   Setzt die Lautstärke in Prozent (0 bis 100%). Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
          • volumeStraight -87...15 [direct]   -   Setzt die Lautstärke in Dezibel (-80.5 bis 15.5 dB) so wie sie am Receiver auch verwendet wird. Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
          • volumeUp [0...100] [direct]   -   Erhöht die Lautstärke um 5% oder entsprechend dem Attribut volumeSteps (optional kann der Wert auch als Argument angehangen werden, dieser hat dann Vorang). Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
          • volumeDown [0...100] [direct]   -   Veringert die Lautstärke um 5% oder entsprechend dem Attribut volumeSteps (optional kann der Wert auch als Argument angehangen werden, dieser hat dann Vorang). Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
          • mute on,off,toggle   -   Schaltet den Receiver stumm
          • bass [-6...6] Schrittweite 0.5 (main zone), [-10...10] Schrittweite 2 (andere Zonen), [-10...10] Schrittweite 1 (andere Zonen, DSP Modelle)   -   Stellt die Tiefen in decibel ein
          • treble [-6...6] Schrittweite 0.5 (main zone), [-10...10] Schrittweite 2 (andere Zonen), [-10...10] Schrittweite 1 (andere Zonen, DSP Modelle)   -   Stellt die Höhen in decibel ein
          • straight on,off   -   Umgeht die interne Codec-Umwandlung und gibt den Original-Codec wieder.
          • sleep off,30min,60min,...,last   -   Aktiviert den internen Sleep-Timer zum automatischen Abschalten
          • shuffle on,off   -   Aktiviert die Zufallswiedergabe des aktuellen Eingangs (ist nur eingangsabhängig verfügbar)
          • repeat one,all,off   -   Wiederholt den aktuellen (one) oder alle (all) Titel des aktuellen Eingangs (ist nur eingangsabhängig verfügbar)
          • pause   -   Wiedergabe pausieren (ist nur eingangsabhängig verfügbar)
          • play   -   Wiedergabe starten (ist nur eingangsabhängig verfügbar)
          • stop   -   Wiedergabe stoppen (ist nur eingangsabhängig verfügbar)
          • skip reverse,forward   -   Aktuellen Titel überspringen (ist nur eingangsabhängig verfügbar)
          • statusRequest   -   Fragt den aktuell Status des Receivers ab
          • remoteControl up,down,...   -   Sendet Fernbedienungsbefehle wie im nächsten Abschnitt beschrieben


        Fernbedienung (je nach Modell nicht in allen Zonen verfügbar)

          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

        Automatische Menü Navigation (nur für Menü-basierte Eingänge wie z.B. Net Radio, Server, USB, ...)

          Für Menü-basierte Eingänge muss man einen bestimmten Eintrag aus einer komplexen Struktur auswählen um die Wiedergabe zu starten. Ein typischer Fall ist das Abspielen von Internet-Radios (Eingang: Net Radio) oder ähnlichen, netzwerkbasierten Diensten. Erst durch das Navigieren durch mehrere Menüs und Untermenüs selektiert man das gewünschte Element und die Wiedergabe beginnt.

          Um diese Navigation durch verschiedene Menüstrukturen zu automatisieren, gibt es das Set-Kommando "navigateListMenu". Als Parameter übergibt man den Pfad (ausgehend vom Beginn) zu dem gewünschtem Menüeintrag YAMAHA_AVR wird diese Liste von links nach rechts abarbeiten und sich so durch das Menü hangeln. Alle angegebenen Menüelemente sind dabei durch einen Schrägstrich (/) getrennt.

          Ein paar Beispiele: Aktueller Eingang ist "netradio":

            set <name> navigateListMenu Länder/Ozeanien/Australien/Alle Sender/1Radio.FM
            set <name> navigateListMenu Lesezeichen/Favoriten/1LIVE

          Wenn man den Receiver mit einem Befehl anschalten möchte und einen bestimmten Internet-Radio Sender auswählen will:

            set <name> on ; set <name> volume 20 direct ; set <name> input netradio ; set <name> navigateListMenu Lesezeichen/Favoriten/1LIVE

            # für tägliches einschalten eines Internet-Radios via at-Modul
            define 1Radio_am_Morgen at *08:00 set <name> on ; set <name> volume 20 direct ; set <name> input netradio ; set <name> navigateListMenu Länder/Ozeanien/Australien/Alle Sender/1Radio.FM

            define 1LIVE_am_Abend at *17:00 set <name> on ; set <name> volume 20 direct ; set <name> input netradio ; set <name> navigateListMenu Lesezeichen/Favoriten/1LIVE

          Aktueller Eingang ist "server" (Netzwerk-Freigaben via UPnP/DLNA):

            set <name> navigateListMenu NAS/Musik/Nach Interpret/Alicia Keys/Songs in A Minor/Fallin

          Die exakte Menüstruktur hängt von ihrer eigenen Receiver-Konfiguration, sowie den zur Verfügung stehenden Freigaben in ihrem Netzwerk ab. Jeder einzelne Menüeintrag muss nicht vollständig als Pfadelement angegeben werden. Jedes Pfadelement wird als Stichwort verwendet um den richtigen Menüeintrag aus der aktuellen Listenebene zu finden, z.B:

            Der tatsächliche Menüpfad (wie im Display des Receiveres erkennbar) sieht beispielhaft folgendermaßen aus: Lesezeichen => Favoriten => foo:BAR 70'er-90'er [[HITS]]

            Der letzte Menüeintrag hat in diesem Fall viele Sonderzeichen die einem in einer FHEM-Konfiguration durchaus Probleme bereiten könen. Man muss aber nicht die vollständige Bezeichnung in der Pfadangabe benutzen, sondern kann ein kürzeres Stichwort benutzen, was in der vollständigen Bezeichnung jedoch vorkommen muss. So kann man beispielsweise folgendes Set-Kommando benutzen um diesen Eintrag auszuwählen und die Wiedergabe damit zu starten:

            set <name> navigateListMenu Lesezeichen/Favoriten/foo:BAR

            Dieser Befehl funktioniert, obwohl man nicht die vollständige Bezeichnung angegeben hat (foo:BAR 70's-90's [[HITS]]).

          Auf selbe Weiße kann man somit lange Menüeinträge abkürzen, damit die Befehle nicht so lang werden. Solche gekürzten Pfadangaben müssen aber trotzdem soweit eindeutig sein, damit sie nur auf das gewünschte Element passen. Das erste Element aus einer Listenebene (von oben nach unten), was auf eine Pfadangabe passt, wird ausgewählt.

        Get-Kommandos
          get <Name> <Readingname>

          Aktuell stehen via GET lediglich die Werte der Readings zur Verfügung. Eine genaue Auflistung aller möglichen Readings folgen unter "Generierte Readings/Events".


        Attribute
        • do_not_notify
        • disabledForIntervals
        • readingFnAttributes

        • request-timeout
        • Optionales Attribut. Maximale Dauer einer Anfrage in Sekunden zum Receiver.

          Mögliche Werte: 1-5 Sekunden. Standardwert ist 4 Sekunden

        • disable
        • Optionales Attribut zur Deaktivierung des zyklischen Status-Updates. Ein manuelles Update via statusRequest-Befehl ist dennoch möglich.

          Mögliche Werte: 0 => zyklische Status-Updates, 1 => keine zyklischen Status-Updates.

        • volume-smooth-change
        • Optionales Attribut, welches einen weichen Lautstärkeübergang aktiviert..

          Mögliche Werte: 0 => deaktiviert , 1 => aktiviert

        • volume-smooth-steps
        • Optionales Attribut, welches angibt, wieviele Schritte zur weichen Lautstärkeanpassung durchgeführt werden sollen. Standardwert ist 5 Anpassungschritte

        • volumeSteps
        • Optionales Attribut, welches den Standardwert zur Lautstärkenerhöhung (volumeUp) und Lautstärkenveringerung (volumeDown) konfiguriert. Standardwert ist 5%

        Generierte Readings/Events:
        • 3dCinemaDsp - Der Status des CINEMA DSP 3D-Modus ("auto" => an, "off" => aus)
        • adaptiveDrc - Der Status des Adaptive DRC ("auto" => an, "off" => aus)
        • bass Der aktuelle Basspegel, zwischen -6 and 6 dB (main zone) and -10 and 10 dB (andere Zonen)
        • dsp - Das aktuell aktive DSP Preset
        • enhancer - Der Status des Enhancers ("on" => an, "off" => aus)
        • input - Der ausgewählte Eingang entsprechend dem FHEM-Kommando
        • inputName - Die Eingangsbezeichnung, so wie sie am Receiver eingestellt wurde und auf dem Display erscheint
        • mute - Der aktuelle Stumm-Status ("on" => Stumm, "off" => Laut)
        • newFirmware - Zeigt an, ob eine neue Firmware zum installieren bereit liegt ("available" => neue Firmware verfügbar, "unavailable" => keine neue Firmware verfügbar; Event wird nur generiert für RX-Vx71, RX-Vx73, RX-Ax10 oder RX-Ax20)
        • power - Der aktuelle Betriebsstatus ("on" => an, "off" => aus)
        • presence - Die aktuelle Empfangsbereitschaft ("present" => empfangsbereit, "absent" => nicht empfangsbereit, z.B. Stromausfall)
        • partyMode - Der Status des Party Modus ( "enabled" => aktiviert, "disabled" => deaktiviert). In der Main Zone stellt dies den geräteweiten Zustand des Party Modus dar. In den einzelnen Zonen zeigt es an, ob die jeweilige Zone für den Party Modus verwendet wird.
        • tunerFrequency - Die aktuelle Empfangsfrequenz für Radio-Empfang in kHz (AM-Band) oder MHz (FM-Band)
        • tunerFrequencyBand - Das aktuell genutzte Radio-Band ("AM" oder "FM")
        • volume - Der aktuelle Lautstärkepegel in Prozent (zwischen 0 und 100 %)
        • volumeStraight - Der aktuelle Lautstärkepegel in Dezibel (zwischen -80.0 und +15 dB)
        • direct - Zeigt an, ob soundverbessernde Features umgangen werden oder nicht ("on" => soundverbessernde Features werden umgangen, "off" => soundverbessernde Features werden benutzt)
        • straight - Zeigt an, ob die interne Codec Umwandlung umgangen wird oder nicht ("on" => Codec Umwandlung wird umgangen, "off" => Codec Umwandlung wird benutzt)
        • sleep - Zeigt den Status des internen Sleep-Timers an
        • state - Der aktuelle Schaltzustand (power-Reading) oder die Abwesenheit des Gerätes (mögliche Werte: "on", "off" oder "absent")
        • treble Der aktuelle Höhenpegel, zwischen -6 and 6 dB (main zone) and -10 and 10 dB (andere Zonen)


        • Eingangsabhängige Readings/Events:
        • currentChannel - Nummer des Eingangskanals (nur bei SIRIUS)
        • currentStation - Name des Radiosenders (nur bei TUNER, HD RADIO, NET RADIO oder PANDORA)
        • currentStationFrequency - Die Sendefrequenz des aktuellen Radiosender (nur bei Tuner oder HD Radio)
        • currentAlbum - Album es aktuell gespielten Titel
        • currentArtist - Interpret des aktuell gespielten Titel
        • currentTitle - Name des aktuell gespielten Titel
        • playStatus - Wiedergabestatus des Eingangs
        • shuffle - Status der Zufallswiedergabe des aktuellen Eingangs
        • repeat - Status der Titelwiederholung des aktuellen Eingangs

        Hinweise des Autors
          Dieses Modul ist nur nutzbar, wenn die Option "Network Standby" am Receiver aktiviert ist. Ansonsten ist die Steuerung nur im eingeschalteten Zustand möglich.

      YAMAHA_BD

        Definition
          define <name> YAMAHA_BD <IP-Addresse> [<Status_Interval>]

          define <name> YAMAHA_BD <IP-Addresse> [<Off_Interval>] [<On_Interval>]


          Dieses Modul steuert Blu-Ray Player des Herstellers Yamaha über die Netzwerkschnittstelle. Es bietet die Möglichkeit den Player an-/auszuschalten, die Schublade zu öffnen und schließen, die Wiedergabe beeinflussen, sämtliche Fernbedieungs-Befehle zu senden, sowie den aktuellen Status abzufragen.

          Bei der Definition eines YAMAHA_BD-Moduls wird eine interne Routine in Gang gesetzt, welche regelmäßig (einstellbar durch den optionalen Parameter <Status_Interval>; falls nicht gesetzt ist der Standardwert 30 Sekunden) den Status des Players abfragt und entsprechende Notify-/FileLog-Definitionen triggert.

          Sofern 2 Interval-Argumente übergeben werden, wird der erste Parameter <Off_Interval> genutzt sofern der Player ausgeschaltet oder nicht erreichbar ist. Der zweiter Parameter <On_Interval> wird verwendet, sofern der Player eingeschaltet ist.

          Beispiel:

            define BD_Player YAMAHA_BD 192.168.0.10

            # Mit modifiziertem Status Interval (60 Sekunden)
            define BD_Player YAMAHA_BD 192.168.0.10 60

            # Mit gesetztem "Off"-Interval (60 Sekunden) und "On"-Interval (10 Sekunden)
            define BD_Player YAMAHA_BD 192.168.0.10 60 10


        Set-Kommandos
          set <Name> <Kommando> [<Parameter>]

          Aktuell werden folgende Kommandos unterstützt.

          • on   -   schaltet den Player ein
          • off   -   schaltet den Player aus
          • tray open,close   -   öffnet oder schließt die Schublade
          • statusRequest   -   fragt den aktuellen Status ab
          • remoteControl up,down,...   -   sendet Fernbedienungsbefehle wie im folgenden Kapitel beschrieben.

          Wiedergabespezifische Kommandos
          • play   -   startet die Wiedergabe des aktuellen Mediums
          • pause   -   pausiert die Wiedergabe
          • stop   -   stoppt die Wiedergabe
          • skip forward,reverse   -   überspringt das aktuelle Kapitel oder den aktuellen Titel
          • fast forward,reverse   -   schneller Vor- oder Rücklauf
          • slow forward,reverse   -   langsamer Vor- oder Rücklauf
          • trickPlay normal,repeatChapter,repeatTitle,...   -   aktiviert Trick-Play Funktionen (Wiederholung, Zufallswiedergabe, ...)


        Fernbedienung

          Es stehen folgende Befehle zur Verfügung:

          Zahlen Tasten (0-9):

            remoteControl 0
            remoteControl 1
            remoteControl 2
            ...
            remoteControl 9


          Cursor Steuerung:

            remoteControl up
            remoteControl down
            remoteControl left
            remoteControl right
            remoteControl enter
            remoteControl return


          Menü Auswahl:

            remoteControl OSDonScreen
            remoteControl OSDstatus
            remoteControl popupMenu
            remoteControl topMenu
            remoteControl setup
            remoteControl home
            remoteControl clear


          Farbtasten:

            remoteControl red
            remoteControl green
            remoteControl yellow
            remoteControl blue


          Wiedergabetasten:

            remoteControl program
            remoteControl search
            remoteControl repeat
            remoteControl repeat-AB
            remoteControl subtitle
            remoteControl audio
            remoteControl angle
            remoteControl pictureInPicture
            remoteControl secondAudio
            remoteControl secondVideo


          Die Befehlsnamen entsprechen den Tasten auf der Fernbedienung.

        Get-Kommandos
          get <Name> <Readingname>

          Aktuell stehen via GET lediglich die Werte der Readings zur Verfügung. Eine genaue Auflistung aller möglichen Readings folgen unter "Generierte Readings/Events".


        Attribute
        • do_not_notify
        • readingFnAttributes

        • disable
        • Optionales Attribut zur Deaktivierung des zyklischen Status-Updates. Ein manuelles Update via statusRequest-Befehl ist dennoch möglich.

          Mögliche Werte: 0 => zyklische Status-Updates, 1 => keine zyklischen Status-Updates.

        • request-timeout
        • Optionales Attribut. Maximale Dauer einer Anfrage in Sekunden zum Player.

          Mögliche Werte: 1-5 Sekunden. Standartwert ist 4 Sekunden

        Generierte Readings/Events:
        • input - Die aktuelle Wiedergabequelle (z.B. "DISC", "USB", "Network", "YouTube", ...)
        • discType - Die Art der eingelegten Disc (z.B "No Disc" => keine Disc eingelegt, "CD", "DVD", "BD", ...)
        • contentType - Die Art des Inhaltes, der gerade abgespielt wird ("audio", "video", "photo" oder "no contents")
        • error - zeigt an, ob ein interner Fehler im Player vorliegt ("none" => kein Fehler, "fan error" => Lüfterdefekt, "usb overcurrent" => USB Spannungsschutz)
        • power - Der aktuelle Betriebsstatus ("on" => an, "off" => aus)
        • presence - Die aktuelle Empfangsbereitschaft ("present" => empfangsbereit, "absent" => nicht empfangsbereit, z.B. Stromausfall)
        • trayStatus - Der Status der Schublade("open" => geöffnet, "close" => geschlossen)
        • trickPlay - Der aktuell aktive Trick-Play Modus
        • state - Der aktuelle Schaltzustand (power-Reading) oder die Abwesenheit des Gerätes (mögliche Werte: "on", "off" oder "absent")


        • Quellenabhängige Readings/Events:
        • currentChapter - Das aktuelle Kapitel eines DVD- oder Blu-Ray-Films
        • currentTitle - Die Titel-Nummer des aktuellen DVD- oder Blu-Ray-Films
        • currentTrack - Die aktuelle Track-Nummer der wiedergebenden Audio-CD
        • currentMedia - Der Name der aktuell wiedergebenden Datei (Nur bei der Wiedergabe über USB)
        • playTimeCurrent - Der aktuelle Timecode an dem sich die Wiedergabe momentan befindet.
        • playTimeTotal - Die komplette Spieldauer des aktuellen Films (Nur bei der Wiedergabe von DVD/BD's)
        • playStatus - Wiedergabestatus des aktuellen Mediums
        • totalTracks - Gesamtanzahl aller Titel einer Audio-CD

        Hinweise des Autors
        • Einige ältere Player-Modelle (z.B. BD-S671) können im Auslieferungszustand nicht via Netzwerk gesteuert werden. Um eine Steuerung via FHEM zu ermöglichen ist ein Firmware-Update notwending!
        • Dieses Modul ist nur nutzbar, wenn die Option "Netzwerksteuerung" am Player aktiviert ist. Ansonsten ist die Steuerung nicht möglich.

      YAMAHA_NP

        Define

          define <name> YAMAHA_NP <ip-address> [<status_interval>]

          define <name> YAMAHA_NP <ip-address> [<off_status_interval>] [<on_status_interval>]


          Mit Hilfe dieses Moduls lassen sich Yamaha Network Player (z.B. MCR-N560, MCR-N560D, CRX-N560, CRX-N560D, CD-N500 or NP-S2000) via Ethernet steuern.
          Theoretisch sollten alle Geräte, die mit der Yamaha Network Player App kompatibel sind, bedient werden können.

          Die aktuelle Implementierung ermöglicht u.a. den folgenden Funktionsumfang:

          • Power on/off
          • Timer on/off
          • Input selection
          • Timer on/off
          • Volume +/-
          • Mute on/off
          • System Clock Update
          • Tuner: tune +/-, preset +/-, Senderinformation (FM/DAB)
          • Stand-by mode: eco/normal
          • Player (play, stop, next, prev, shuffle, repeat)
          • Menünavigation
          • ...

          Eine YAMAHA_NP Definition initiiert einen internen Task, der von FHEM zyklisch abgearbeitet wird.
          Das Intervall (in Sekunden) kann für die Zustände <on_status_interval> und <off_status_interval> optional gesetzt werden.
          <off_status_interval> steht für das Intervall, wenn das Gerät ausgeschaltet/abwesend ist.
          <on_status_interval> steht für das Intervall, wenn das Gerät eingeschaltet/verfügbar ist.
          Wenn keine Parametere angegeben wurden, wird ein Default-Wert von 30 Sekunden für beide gesetzt.
          Wenn nur <off_status_interval> gesetzt wird, gilt dieser Wert für beide Zustände (eingeschaltet/ausgeschaltet).
          Der Task liest zyklisch grundlegende Parameter vom Network Player wie z.B. (Power-Status , gewählter Eingang, Lautstärke etc.) und triggert notify/filelog Befehle.

          Beispiel:


            Definition in der fhem.cfg Konfigurationsdatei:

            define NP_Player YAMAHA_NP 192.168.0.15
            attr NP_player webCmd input:volume:mute:volumeDown:volumeUp

            # 60 Sekunden Intervall
            define NP_Player YAMAHA_NP 192.168.0.15 60
            attr NP_player webCmd input:volume:mute:volumeDown:volumeUp

            # 60 Sekunden Intervall für "off" und 10 Sekunden für "on"
            define NP_Player YAMAHA_NP 192.168.0.15 60 10
            attr NP_player webCmd input:volume:mute:volumeDown:volumeUp


        Set
          set <name> <command> [<parameter>]

          Aktuell sind folgende Befehle implementiert:
          Die verfügbaren Eingänge des Network Players werden vom diesem gelesen und dynamisch in FHEM angepasst.

          Bemerkung: Bitte bei den Befehlen und Parametern die Groß- und Kleinschreibung beachten.



            Verfügbare Befehle:

          • cdTray  -   Öffnen und Schließen des CD-Fachs.
          • clockUpdate  -   Aktualisierung der Systemzeit des Network Players. Die Zeitinformation wird von dem FHEM Server bezogen, auf dem das Modul ausgeführt wird.
          • dimmer [1..3]   -   Einstellung der Anzeigenhelligkeit.
          • input [<parameter>]   -   Auswahl des Eingangs des NP. Der aktive Eingang wird vom Gerät gelesen und in FHEM dynamisch dargestellt (z.B. cd, tuner, aux1, aux2, ...).
          • mute [on|off]   -   Aktiviert/Deaktiviert die Stummschaltung.
          • off   -   Network Player ausschalten.
          • on   -   Network Player einschalten.
          • player [<parameter>]   -   Setzt Player relevante Befehle.
            • play  -   play.
            • stop  -   stop.
            • pause  -   pause.
            • next  -   nächstes Audiostück.
            • prev  -   vorheriges Audiostück.
            • shuffleToggle  -   Umschaltung des Zufallswiedergabe.
            • repeatToggle  -   Umschaltung des Wiederholungsmodes.
          • playerListCursorDown  -  Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl bewegt den Cursor nach unten. Nächste Zeile wird im Gerät angezeit.
          • playerListCursorReturn  -  Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl kehrt zurück vom hierarchischen, untergeordneten Menü. Übergeordnetes Menü wird angezeigt.
          • playerListCursorUp  -  Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl bewegt den Cursor nach oben. Vorherige Zeile wird im Gerät angezeit.
          • playerListGetList  -  Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl liefert Informationen (Readings) relevant zur Menünavigation.
          • playerListJumpLine [value]  -  Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl spring zur angegebenen Zeile.
          • playerListSelectLine [value]  -  Befehl zur Navigation in Eingängen wie Net Radio oder Server. Befehl aktiviert die angegebenen Zeile. Falls die Zeile das Attribut 'Container' (Ordner) besitzt, wird dieser geöffnet. Falls 'Item' wird die Wiedergabe gestartet.
          • sleep [off|30min|60min|90min|120min]   -   Aktiviert/Deaktiviert den internen Sleep-Timer
          • standbyMode [eco|normal]   -   Umschaltung des Standby Modus.
          • statusRequest [<parameter>]   -   Abfrage des aktuellen Status des Network Players.
            • basicStatus  -   Abfrage der Elementarparameter (z.B. Lautstärke, Eingang, etc.)
            • playerStatus  -   Abfrage des Player-Status.
            • standbyMode  -   Abfrage des standby Modus.
            • systemConfig  -   Abfrage der Systemkonfiguration.
            • tunerStatus  -   Abfrage des Tuner-Status (z.B. FM Frequenz, Preset-Nummer, DAB Information etc.)
            • timerStatus  -   Abfrage des internen Wake-up timers.
            • networkInfo  -   Abfrage von Netzwerk-relevanten Informationen (z.B: IP-Adresse, Gateway-Adresse, MAC-address etc.)
          • timerHour [0...23]   -   Setzt die Stunde des internen Wake-up Timers
          • timerMinute [0...59]   -   Setzt die Minute des internen Wake-up Timers
          • timerRepeat [once|every]   -   Setzt den Wiederholungsmodus des internen Wake-up Timers
          • timerSet   -   konfiguriert den Timer nach den Vorgaben: timerHour, timerMinute, timerRepeat, timerVolume. (ALLE Paremeter müssen zuvor gesetzt werden. Dieser Befehl schaltet den Timer nicht ein → 'timer on'.)
          • timerVolume [<VOL_MIN>...<VOL_MAX>]   -   Setzt die Lautstärke des internen Wake-up Timers
          • timer [on|off]   -   Schaltet ein/aus den internen Wake-up Timer. (Bemerkung: Der Timer wird basierend auf den im Gerät gespeicherten Parametern aktiviert. Um diese zu ändern, bitte den 'timerSet' Befehl benutzen.)
          • tuner [<parameter>]   -   Tuner-relevante Befehle.
            • bandDAB  -   Setzt das Tuner-Band auf DAB (falls verfügbar).
            • bandFM  -   Setzt das Tuner-Band auf FM.
            • tuneUp  -   Tuner Frequenz +.
            • tuneDown  -   Tuner Frquenz -.
            • presetUp  -   Tuner Voreinstellung hoch.
            • presetDown  -   Tuner Voreinstellung runter.
          • tunerFMFrequency [87.50 ... 108.00]   -   Setzt die FM Frequenz. Der Wert muss zwischen 87.50 ... 108.00 liegen und muss den Digitalpunkt beinhalten ('.') mit zwei Nachkommastellen.
          • tunerPresetDAB [1...30]   -   Setzt die DAB Voreinstellung.
          • tunerPresetFM [1...30]   -   Setzt die FM Voreinstellung.
          • volume [0...100]   -   Setzt den Lautstärkepegel in %
          • volumeStraight [<VOL_MIN>...<VOL_MAX>]   -   Setzt die absolute Lautstärke wie vom Gerät benutzt und angezeigt. Die Parameter <VOL_MIN> and <VOL_MAX> werden automatisch ermittelt.
          • volumeUp [<VOL_MIN>...<VOL_MAX>]   -   Erhöht die Lautstärke um einen absoluten Schritt. Die Parameter <VOL_MIN> and <VOL_MAX> werden automatisch ermittelt.
          • volumeDown [<VOL_MIN>...<VOL_MAX>]   -   Reduziert die Lautstärke um einen absoluten Schritt. Die Parameter <VOL_MIN> and <VOL_MAX> werden automatisch ermittelt.


          Ein typisches Beispiel ist das Einschalten des Gerätes und das Umschalten auf den Lieblingsradiosender:

          Beispieldefinition in der fhem.cfg Konfigurationsdatei:


            define NP_player YAMAHA_NP 192.168.0.15 30 5
            attr NP_player webCmd input:volume:mute:volumeDown:volumeUp


          Folgender Code kann anschließend in die Datei 99_MyUtils.pm eingebunden werden:

            sub startMyFavouriteRadioStation()
            {
              fhem "set NP_player on";
              sleep 1;
              fhem "set NP_player input tuner";
              sleep 1;
              fhem "set NP_player tunerPresetDAB 1";
              sleep 1;
              fhem "set NP_player volume 30";
            }


          Bemerkung: Aufgrund der relativ langsamen Befehlsverarbeitung im Network Player im Vergleich zur asynchronen Ethernet-Kommunikation, kann es vorkommen, dass veraltete Statusinformationen zurückgesendet werden.
          Aus diesem Grund wird empfohlen, während der Automatisierung zwischen den 'set' und 'get' Befehlen ein Delay einzubauen. Speziell beim Hochfahren des Network Players sollte dies beachtet werden.


          Die Funktion kann jetzt in der FHEM Befehlszeile eingegeben oder in die Notify-Definitionen eingebunden werden.

            {startMyFavouriteRadioStation()}

        Get get <name> <reading>

        Aktuell liefert der Befehl 'get' ausschließlich Reading-Werte (s. Abschnitt "Readings").

        Attribute

          • do_not_notify
          • readingFnAttributes

          • request-timeout

          • Optionales Attribut, um das HTTP response timeout zu beeinflußen.
            Mögliche Werte: 1...5 Sekunden. Default Wert ist 4 Sekunden.

          • disable

          • Optionales Attribut zum Deaktivieren des internen zyklischen Timers zum Aktualisieren des NP-Status. Manuelles Update ist nach wie vor möglich.
            Mögliche Werte: 0 → Zyklisches Update aktiv., 1 → Zyklisches Update inaktiv.

          • auto-update-player-readings

          • Optionales Attribut zum automtischen aktualisieren der Player-Readings. Default-Wert ist 1.

          • auto-update-tuner-readings

          • Optionales Attribut zum automtischen aktualisieren der Tuner-Readings. Default-Wert ist 1.

          • smooth-volume-change

          • Optionales Attribut zur sanften Lautstärkeänderung (Erzeugt mehr Ethernetkommunikation während der Lautstärkeänderung). Default-Wert ist 1.



        Readings


            Elementar-Readings:

          • input - Aktivierter Eingang.
          • mute - Abfrage des Mute Status (on|off)
          • power - Abfrage des Power-Status (on|off)
          • presence - Abfrage der Geräteanwesenheit im Netzwerk (absent|present). Bemerkung: Falls abwesend ("absent"), lässt sich das Gerät nicht fernbedienen.
          • volume - Abfrage der aktuell eingestellten Lautstärke in % (0...100%)
          • volumeStraight - Abfrage der aktuellen absoluten Gerätelautstärke im Gerät (gerätespezifisch)
          • sleep - Abfrage des Sleep-Timer Status (30min|60min|90min|120min|off).
          • standbyMode - Abfrage des standby Modus (eco|normal).
          • state - Abfrage des aktuellen Power Zustands und Anwesenheit (on|off|absent).


          • Player Readings:

            Bemerkung: Die folgenden Readings werden mit dem Befehl "statusRequest playerStatus" aktualisiert.

          • playerPlaybackInfo - Abfrage des aktuellen Player Status (play|stop|pause).
          • playerDeviceType - Abfrage des Device Typs (ipod|msc).
          • playerIpodMode - Abfrage des *Pod/*Pad/*Phone Modus (normal|off)
          • playerRepeat - Abfrage des Wiederholungsmodus (one|all)
          • playerShuffle - Abfrage des Zufallswiedergabemodus (on|off)
          • playerPlayTime - Abfrage der aktuellen Spielzeit (HH:MM:SS).
          • playerTrackNumber - Abfrage der Audiotracknummer.
          • playerTotalTracks - Abfrage der Gesamtzahl der zu wiedergebenden Tracks.
          • playerArtist - Abfrage des Künstler (Artist) (falls verfügbar) der aktuellen Wiedergabe.
          • playerAlbum - Abfrage des Albumnamens (falls verfügbar) der aktuellen Wiedergabe.
          • playerSong - Abfrage des Tracknamens (falls verfügbar) der aktuellen Wiedergabe.
          • playerAlbumArtURL - Abfrage der Album URL (falls verfügbar) der aktuellen Wiedergabe.
          • playerAlbumArtID - Abfrage der AlbumArtID (falls verfügbar) der aktuellen Wiedergabe.
          • playerAlbumArtFormat - Abfrage des AlbumArt Formats (falls verfügbar) der aktuellen Wiedergabe.


          • Player List (Menu) Readings:

            Bemerkung: Die folgenden Readings werden mit dem Befehl "statusRequest playerStatus" aktualisiert.

          • playerListCurrentLine - Abfrage der aktuellen Listenzeile (wie im Gerät angezeigt).
          • playerListLine_1..._8 - Abfrage des Listeninhalts Zeile 1...8 (Das Gerät liefert 8 Zeilen Pakete).
          • playerListLine_Attribute_1..._8 - Abfrage der Listenzeilenattribute Zeile 1...8 (Container|Item|Unselectable).
          • playerListMaxLine - Abfrage der Anzahl von Listenzeilen in der aktuellen Liste/Menu.
          • playerListMenuName - Abfrage der bezeichnung der aktuellen Liste/Menus.
          • playerListStatus - Abfrage des aktuellen Status der Liste/Menus (Busy|Ready).


          • Tuner Readings:

            Bemerkung: Die folgenden Readings werden mit dem Befehl "statusRequest tunerStatus" aktualisiert.

          • tunerAudioModeDAB - Abfrage des aktuellen DAB Audio-Modus (Mono|Stereo)..
          • tunerBand - Abfrage des aktuellen Radio-Bandes (FM|DAB). DAB falls verfügbar.
          • tunerBitRate - Abfrage der aktuellen DAB Stream Bitrate (kbit/s).
          • tunerModeDAB - Abfrage des aktuellen DAB Modus (DAB|DAB+).
          • tunerFrequencyDAB - Abfrage der aktuellen DAB Frequenz. (xxx.xxx MHz)
          • tunerPresetFM - Abfrage der aktuellen FM Voreinstellung. Falls gespeichtert (1...30).
          • tunerFrequencyFM - Abfrage der aktuellen FM Frequenz. (xxx.xx MHz)
          • tunerProgramServiceFM - Abfrage des FM Sendernamen.
          • tunerRadioTextAFM - Abfrage des Radio Text A des FM Senders.
          • tunerRadioTextBFM - Abfrage des Radio Text B des FM Senders.
          • tunerPresetDAB - Abfrage der aktuellen DAB Voreinstellung. Falls gespeichtert (1...30).
          • tunerServiceLabelDAB - Abfrage des DAB Sendernamen.
          • tunerChannelLabelDAB - Abfrage des Channel Labels des gewählten DAB Senders.
          • tunerDLSDAB - Abfrage des 'Dynamic Label Segment' des gewählten DAB Senders.
          • tunerEnsembleLabelDAB - Abfrage des 'Ensemble Label' des gewählten DAB Senders.


          • Timer Readings:

            Bemerkung: Die folgenden Readings werden mit dem Befehl "statusRequest timerStatus" aktualisiert.

          • timer - Abfrage des Time Modus (Wecker) (on|off).
          • timerRepeat - Abfrage des Timer Wiederholungs Modus (once|every).
          • timerStartTime - Abfrage der Timer Startzeit (HH:MM).
          • timerVolumeLevel - Abfrage der Timer-Lautstärke.

        Bemerkung des Entwicklers

          Trivial: Um das Gerät fernbedienen zu können, muss es an das Ethernet-Netzwerk angeschlossen und erreichbar sein.
          Das Gerät muss sich im standbyMode "Normal" befinden, um es fergesteuert einzuschalten.
          Das Abschalten funktioniert auch standbyMode "Normal" Modus.

      ZWCUL

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

      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

      alexa

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

      allergy


        Dieses Modul prognostiziert Allergie Daten für Deutschland.
        Es erfordert dass das Perlmodul XML:: Simple installiert ist.

        Define
          define <name> allergy <Postleitzahl>
          Beispiel: define allergydata allergy 12345

        • Postleitzahl
          Deutsche Postleitzahl


        Get
        • data
          Manuelles Datenupdate


        Readings
        • city
          Name der Stadt, für die Prognosen gelesen werden.

        • fcn_total
          Täglicher Höchstwerte für alle Allergene, die nicht aufgrund der Ignoreliste (attr ignoreList) ignoriert werden

        • fcn_day_of_week
          Wochentag, kann durch weekdaysFormat lokalisiert werden.

        • fcn_allergen
          Tägliche Werte für alle Allergene, die nicht aufgrund der Ignoreliste (attr ignoreList) ignoriert werden.


        Attribute
        • ignoreList
          Kommagetrennte Liste von Allergen-Namen, die bei der Aktualisierung ignoriert werden sollen.

        • updateEmpty (Standard: 0|1)
          Aktualisierung von Allergenen.
          0 = nur Allergene mit Belastung.
          1 = auch Allergene die keine Belastung haben.

        • updateIgnored (1)
          Aktualisierung von Allergenen, die sonst durch die ignoreList entfernt werden.

        • levelsFormat (Standard: -,low,moderate,high,extreme)
          Lokalisierte Levels, durch Kommas getrennt.

        • weekdaysFormat (Standard: Sun,Mon,Tue,Wed,Thu,Fri,Sat)
          Lokalisierte Wochentage, durch Kommas getrennt.

      allowed


        Define
          define <name> allowed <deviceList>

          Authorisiert das Ausführen von Kommandos oder das Ändern von Geräten abhängig vom verwendeten Frontend.
          Falls man mehrere allowed Instanzen definiert hat, die für dasselbe Frontend verantwortlich sind, dann müssen alle Authorisierungen genehmigt sein, um das Befehl ausführen zu können. Auf der anderen Seite reicht es, wenn einer der Authentifizierungen positiv entschieden wird. Die Prüfungen werden in alphabetischer Reihenfolge der Instanznamen ausgeführt.

          Achtung: das Modul sollte wie hier beschrieben funktionieren, allerdings können wir keine Garantie geben, daß man sie nicht überlisten, und Schaden anrichten kann.

          Beispiele:
            define allowedWEB allowed
            attr allowedWEB validFor WEB,WEBphone,WEBtablet
            attr allowedWEB basicAuth { "$user:$password" eq "admin:secret" }
            attr allowedWEB allowedCommands set,get

            define allowedTelnet allowed
            attr allowedTelnet validFor telnetPort
            attr allowedTelnet password secret

        Set:
          N/A

        Get
          N/A

        Attribute
        • disable

        • allowedCommands
          Eine Komma getrennte Liste der erlaubten Befehle des passenden Frontends (siehe validFor). Bei einer leeren Liste (, dh. nur ein Komma) wird dieser Frontend "read-only". Falls es auf get,set gesetzt ist, dann sind in dieser Frontend keine Konfigurationsänderungen möglich, nur "normale" Bedienung der Schalter/etc.

        • allowedDevices
          Komma getrennte Liste von Gerätenamen, die mit dem passenden Frontend (siehe validFor) geändert werden können.

        • basicAuth, basicAuthMsg
          Betrifft nur FHEMWEB Instanzen (siehe validFor): 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 allwedWEB basicAuth { "$user:$password" eq "admin:secret" }

        • password
          Betrifft nur telnet Instanzen (siehe validFor): 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), wird 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 allowed_tPort password secret
            attr allowed_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
          Betrifft nur telnet Instanzen (siehe validFor): Entspricht dem Attribut password; ein Passwort wird aber ausschließlich für nicht-lokale Verbindungen verlangt.

        • validFor
          Komma separierte Liste von Frontend-Instanznamen. Aktuell werden nur Frontends unterstützt, die das FHEM TCP/IP Bibliothek verwenden, z.Bsp. telnet und FHEMWEB. Achtung, Änderung: falls nicht gesetzt, ist die allowed Instanz nicht aktiv.

      apptime

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

      at

        Startet einen beliebigen FHEM Befehl zu einem späteren Zeitpunkt.

        Define
          define <name> at [<timespec>|<datespec>] <command>

          <timespec> Format: [+][*{N}]<timedet>
            Das optionale + zeigt, dass die Angabe relativ ist (also zur jetzigen Zeit dazugezählt wird).
            Das optionale * zeigt, dass die Ausführung wiederholt erfolgen soll.
            Das optionale {N} nach dem * bedeutet, dass der Befehl genau N-mal wiederholt werden soll.
            <timespec> ist entweder HH:MM, HH:MM:SS oder {perlfunc()}. perlfunc muss ein String in timedet Format zurueckliefern. Achtung: {perlfunc()} darf keine Leerzeichen enthalten.
            <datespec> ist entweder ISO8601 (YYYY-MM-DDTHH:MM:SS) oder Anzahl der Sekunden seit 1970.

          Beispiele:
              # Absolute Beispiele:
              define a1 at 17:00:00 set lamp on                            # fhem Befehl
              define a2 at 17:00:00 { Log 1, "Teatime" }                   # Perl Befehl
              define a3 at 17:00:00 "/bin/echo "Teatime" > /dev/console"   # shell Befehl
              define a4 at *17:00:00 set lamp on                           # Jeden Tag
          
              # Realtive Beispiele:
              define a5 at +00:00:10 set lamp on                  # Einschalten in 10 Sekunden
              define a6 at +00:00:02 set lamp on-for-timer 1      # Einmal blinken in 2 Sekunden
              define a7 at +*{3}00:00:02 set lamp on-for-timer 1  # Blinke 3 mal
          
              # Blinke 3 mal wenn  piri einen Befehl sendet
              define n1 notify piri:on.* define a8 at +*{3}00:00:02 set lamp on-for-timer 1
          
              # Lampe von Sonnenuntergang bis 23:00 Uhr einschalten
              define a9 at +*{sunset_rel()} set lamp on
              define a10 at *23:00:00 set lamp off
          
              # Elegantere Version, ebenfalls von Sonnenuntergang bis 23:00 Uhr
              define a11 at +*{sunset_rel()} set lamp on-till 23:00
          
              # Nur am Wochenende ausführen
              define a12 at +*{sunset_rel()} { fhem("set lamp on-till 23:00") if($we) }
          
              # Schalte lamp1 und lamp2 ein von 7:00 bis 10 Minuten nach Sonnenaufgang
              define a13 at *07:00 set lamp1,lamp2 on-till {sunrise(+600)}
          
              # Schalte lamp jeden Tag 2 Minuten nach Sonnenaufgang aus
              define a14 at *{sunrise(+120)} set lamp on
          
              # Schalte lamp1 zum Sonnenuntergang ein, aber nicht vor 18:00 und nicht nach 21:00
              define a15 at *{sunset(0,"18:00","21:00")} set lamp1 on
          
              
          Hinweise:
          • wenn kein * angegeben wird, wird der Befehl nur einmal ausgeführt und der entsprechende at Eintrag danach gelöscht. In diesem Fall wird der Befehl im Statefile gespeichert (da er nicht statisch ist) und steht nicht im Config-File (siehe auch save).
          • wenn die aktuelle Zeit größer ist als die angegebene Zeit, dann wird der Befehl am folgenden Tag ausgeführt.
          • Für noch komplexere Datums- und Zeitabläufe muss man den Aufruf entweder per cron starten oder Datum/Zeit mit perl weiter filtern. Siehe hierzu das letzte Beispiel und das Perl special.

        Set
        • modifyTimeSpec <timespec>
          Ändert die Ausführungszeit. Achtung: die N-malige Wiederholungseinstellung wird ignoriert. Gedacht zur einfacheren Modifikation im FHEMWEB Raumübersicht, dazu muss man modifyTimeSpec in webCmd spezifizieren.
        • inactive
          Deaktiviert das entsprechende Gerät. Beachte den leichten semantischen Unterschied zum disable Attribut: "set inactive" wird bei einem shutdown automatisch in fhem.state gespeichert, es ist kein save notwendig.
          Der Einsatzzweck sind Skripte, um das at temporär zu deaktivieren.
          Das gleichzeitige Verwenden des disable Attributes wird nicht empfohlen.
        • active
          Aktiviert das entsprechende Gerät, siehe inactive.
        • execNow
          Führt das mit dem at spezifizierte Befehl aus. Beeinflußt nicht die Ausführungszeiten relativer Spezifikationen.

        Get
          N/A

        Attribute
        • alignTime
          Nur für relative Definitionen: Stellt den Zeitpunkt der Ausführung des Befehls so, dass er auch zur alignTime ausgeführt wird. Dieses Argument ist ein timespec. Siehe oben fü die Definition
          Beispiel:
            # Stelle sicher das es gongt wenn eine neue Stunde beginnt.
            define at2 at +*01:00 set Chime on-for-timer 1
            attr at2 alignTime 00:00

        • computeAfterInit
          Falls perlfunc() im timespec Readings or Statusinformationen benögt, dann wird sie eine falsche Zeit beim FHEM-Start zurueckliefern, da zu diesem Zeitpunkt die Readings noch nicht aktiv sind. Mit gesetztem computeAfterInit wird perlfunc nach Setzen aller Readings erneut ausgefuehrt. (Siehe Forum #56706)

        • disable
          Deaktiviert das entsprechende Gerät.
          Hinweis: Wenn angewendet auf ein at, dann wird der Befehl nicht ausgeführt, jedoch die nächste Ausführungszeit berechnet.

        • disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM...
          Das Argument ist eine Leerzeichengetrennte Liste von Minuszeichen- getrennten HH:MM oder D@HH:MM Paaren. Falls die aktuelle Uhrzeit zwischen diesen Werten fällt, dann wird die Ausführung, wie beim disable, ausgesetzt. Statt HH:MM kann man auch HH oder HH:MM:SS angeben. D ist der Tag der Woche, mit 0 als Sonntag and 3 als Mittwoch. Um einen Intervall um Mitternacht zu spezifizieren, muss man zwei einzelne angeben, z.Bsp.:
            23:00-24:00 00:00-01:00

        • skip_next
          Wird bei at Befehlen verwendet um die nächste Ausführung zu überspringen

        • perlSyntaxCheck

      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.
          Achtung: Dieses Attribut ist unerwünscht, bitte stattdessen das global autosave Attribut verwenden.

        • device_room
          "Schiebt" das neu erstellte Gerät in diesen Raum. Der Name kann die Wildcards %NAME und %TYPE enthalten, siehe oben stehendes Beispiel.

        • filelog
          Erstellt ein Filelog welches zu einem Gerät gehört. Der Dateiname darf die Wildcards %NAME und %TYPE enthalten, siehe oben stehendes Beispiel. Das Filelog wird in den gleichen Raum "geschoben" wie das zugehörige Gerät.

        • weblink
          Erzeugt ein SVG, welches mit dem Gerät/Filelog verknüpft ist.

        • weblink_room
          "Schiebt" das neu erstellte SVG in den bezeichneten Raum. Der Name kann die Wildcards %NAME und %TYPE enthalten, siehe oben stehendes Beispiel.

        • disable

        • ignoreTypes
          Dies ist ein Regexp, um bestimmte Geräte zu ignorieren, z.b. der Funk-Heizungsthermostat (FHT) des Nachbarn. In dem Ausdruck können mehr als ein Gerät über die normale Regexp-Syntax angegeben werden. Beispiel:
          attr autocreate ignoreTypes CUL_HOERMANN.*|FHT_1234|CUL_WS_7
          Das Wort "Types" ist etwas irreführend, da der Gerätename geprüft wird, und nicht der Typ.

        • autocreateThreshold
          Eine Liste of <type>:<count>:<interval> tripeln. Ein neues Device wird nur dann erzeugt wenn es mindestens count Events für den TYPE type in den letzten interval Sekunden gegeben hat.
          Beispiel:
          attr autocreateThreshold LaCrosse:2:30,EMT7110:2:60

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

          Dieser Befehl ist Bestandteilteil des autocreate-Modules.

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

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

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

          Dieser Befehl ist Bestandteilteil des autocreate-Modules.

      average

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

      backup

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

      cloneDummy

        Definiert einen Klon eines lokalen Devices oder von FHEM2FHEM im Logmodus uebergebenen Devices und uebernimmt dessen Readings. Sinnvoll um entfernte FHEM-Installationen lesend einzubinden, zum Testen oder Programmieren. Dabei werden die von FHEM2FHEM in Form von Events weitergereichten entfernten Device-Readings in eigene Readings übernommen. Identische Events, die innerhalb der durch das globale Attribut dupTimeout vorgegebenen Zeit auftreten, werden zusammengefasst, um überflüssige Events zu verhindern. Dieses Attribut ist mit bedacht zu ändern, da sich seine Auswirkungen auch auf andere Bereiche von FHEM erstreckt.
        Die Rangfolge für den STATE ist:
        • wenn keine Vorgabe gemacht wurde, dann die Meldung von cloneDummy (initialized, active)
        • wenn addStateEvent gesetzt ist, dann der "state" vom geklonten Device (dann kein "state" mehr vom cloneDummy)
        • wenn das optionale reading im define gesetzt ist, dann der Wert davon (überstimmt die beiden vorherigen Zeilen)
        • wenn stateFormat als attr gesetzt ist, toppt das alles

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

          Aktiviert den cloneDummy, der dann an das Device <Quelldevice> gebunden ist. Mit dem optionalen Parameter reading wird bestimmt, welches reading im STATE angezeigt wird, stateFormat ist auch weiterhin möglich.

            Beispiel:

            Der cloneDummy wird lesend an den Sensor OWX_26_09FF26010000 gebunden und zeigt im State temperature an.

              define Feuchte cloneDummy OWX_26_09FF26010000 temperature

        Set
          N/A

        Get
          N/A

        Attributes
        • addStateEvent
          0 ist Vorgabe im Modul, bei 1 wird der Originalstate des original Devices als STATE verwendet (geht z.Z. nicht in Verbindung mit FHEM2FHEM)

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

        • deleteBeforeUpdate
          Ist dieses Attribut auf 1 gesetzt, werden alle readings zuerst gelöscht, bevor neue Readings geschrieben werden.

        • readingFnAttributes

        Wichtig: Es müssen unterschiedliche Namen für <name> und <Quelldevice> verwendet werden!

      cmdalias

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

      configDB

        configDB ist die Funktionsbibliothek für die Konfiguration aus einer SQL Datenbank.
        Die ausführliche Dokumentation findet sich in der configdb Befehlsbeschreibung.

      configdb

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

      copy

        copy <orig name> <copy name> [<type dependent arguments>]

        Erzeugt eine Kopie des Device <orig name> mit dem namen <copy name>.
        Wenn <type dependent arguments> angegeben sind ersetzen die die DEF von <orig name> beim anlegen von <copy name>.

      count

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

      dash_dhcp

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

      deletefile

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

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

          • Durch setzen des Attributes absFeuchte wird in den Readings auch die absolute Feuchte mit ausgerechnet. Durch stateFormat kann man diese Info auch im Status anzeigen. Beispiel: ( = Der FHEM Name des Adapters der geändert werden muss)
            		 stateFormat:	
            		{sprintf("T: %.1f H: %.1f D: %.1f A: %.1f", ReadingsVal("","temperature",0), ReadingsVal("","H",0), ReadingsVal("","dewpoint",0), ReadingsVal("","absFeuchte",0))}
            		
        • max_timediff

          • Maximale erlaubter Zeitunterschied in Sekunden zwischen den Temperatur- und Luftfeuchtewerten eines Geräts. dewpoint verwendet Readings von Temperatur oder Luftfeuchte wenn sie nicht im Ereignis mitgeliefert werden. Das ist sowohl für den Betrieb mit event-on-change-reading nötig als auch bei Sensoren die Temperatur und Luftfeuchte in getrennten Ereignissen kommunizieren (z.B. Technoline Sensoren TX3TH).
            Der Standardwert ist 1 Sekunde.

            Beispiel:
                    # Maximal erlaubter Zeitunterschied soll 60 Sekunden sein
                    define dew_all dewpoint dewpoint .*
                    attr dew_all max_timediff 60
                    

      dummy

        Definiert eine Pseudovariable, der mit set jeder beliebige Wert zugewiesen werden kann. Sinnvoll zum Programmieren.

        Define
          define <name> dummy

          Beispiel:
            define myvar dummy
            set myvar 7

        Set
          set <name> <value>
          Weist einen Wert zu.

        Get
          N/A

        Attributes
        • disable
        • disabledForIntervals
        • readingList
          Leerzeichen getrennte Liste mit Readings, die mit "set" gesetzt werden können.
        • setList
          Liste mit Werten durch Leerzeichen getrennt. Diese Liste wird mit "set name ?" ausgegeben. Damit kann das FHEMWEB-Frontend Auswahl-Menüs oder Schalter erzeugen.
          Beispiel: attr dummyName setList on off
        • useSetExtensions
          Falls gesetzt, und setList enthält on und off, dann die set extensions Befehle sind auch aktiv. In diesem Fall werden nur die Befehle aus setList und die set exensions akzeptiert.
        • readingFnAttributes

      eventTypes

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

      fakeRoku

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

      fhemdebug

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

      fheminfo

        fheminfo [send]

        fheminfo zeigt Informationen über das System und FHEM Definitionen an.

        Der optionale Parameter send überträgt die Informationen an einen zentralen Server um die Entwicklung von FHEM zu unterstützen. Die übermittelten Daten werden grafisch aufbereitet und können auf http://fhem.de/stats/statistics.html abgerufen werden. Anhand der IP-Adresse wird der ungefähre Standort mit einer Genauigkeit von ca. 40-80 km ermittelt. Die IP-Adresse wird nicht gespeichert.

        Eigenschaften:
        • Eingesetztes Betriebssystem
        • Hardware Architektur
        • Installierte Perl Version
        • Installierte FHEM release
        • Definierte Module (nur offizielle FHEM Module werden ermittelt)
        • Definierte Modelle je Modul

        Beispiel:
              fhem> fheminfo
              Fhem info:
                Release  : 5.3
                OS       : linux
                Arch     : i686-linux-gnu-thread-multi-64int
                Perl     : v5.14.2
                uniqueID : 87c5cca38dc75a4f388ef87bdcbfbf6f
        
              Defined modules:
                ACU        : 1
                CUL        : 1
                CUL_FHTTK  : 12
                CUL_HM     : 66
                CUL_WS     : 3
                FHEM2FHEM  : 1
                FHEMWEB    : 3
                FHT        : 9
              [...]
                at         : 4
                autocreate : 1
                dummy      : 23
                notify     : 54
                structure  : 3
                telnet     : 2
                watchdog   : 9
                weblink    : 17
              
              Defined models per module:
                CUL        : CUN
                CUL_FHTTK  : FHT80TF
                CUL_HM     : HM-CC-TC,HM-CC-VD,HM-LC-DIM1T-CV,HM-LC-DIM1T-FM,HM-LC-SW1-PL,[...]
                CUL_WS     : S555TH
                FHT        : fht80b
                FS20       : fs20pira,fs20s16,fs20s4a,fs20sd,fs20st
                HMS        : hms100-mg,hms100-tf,hms100-wd
                KS300      : ks300
                OWSWITCH   : DS2413
            

        Attribute

        Die folgenden Attribute werden nur in Verbindung mit dem Parameter send genutzt. Sie werden über attr global gesetzt.

        • sendStatistics
          Dieses Attribut wird in Verbindung mit dem update Befehl verwendet.
          onUpdate: Überträgt die Daten bei jedem Update (empfohlene Einstellung).
          manually: Manuelle Überträgung der Daten über fheminfo send.
          never: Verhindert die Überträgung der Daten.

      harmony

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

      ?, help

        ? [<moduleName|deviceName>] []
        help [<moduleName|deviceName>] []

        • Liefert eine Liste aller Befehle mit einer Kurzbeschreibung zurück.
        • Falls moduleName oder deviceName spezifiziert ist, wird die modul-spezifische Hilfe aus commandref zurückgeliefert.
        • Die anzuzeigende Sprache wird in folgender Reihenfolge bestimmt:
          • gültiger Parameter <language> beim Aufruf übergeben
          • globales Attribut language
          • falls alles fehlt: englisch

      holiday

        Define
          define <name> holiday

          Definiert einen Satz mit Urlaubsinformationen. Das Modul versucht die Datei <name>.holiday im Pfad modpath/FHEM zu öffnen. Wenn Einträge im der Datei auf den aktuellen Tag passen wird der STATE der Holiday-Instanz die im list Befehl angezeigt wird auf die entsprechenden Werte gesetzt. Andernfalls ist der STATE auf den Text "none" gesetzt. Meistens wird dieser Wert mit einem Perl Script abgefragt: siehe Value() im perl Abschnitt oder im globalen Attribut holiday2we.
          Die Datei wird jede Nacht neu eingelesen um den Wert des aktuellen Tages zu erzeugen. Auch jeder "get" Befehl liest die Datei neu ein.

          Holiday file Definition:
          Die Datei darf Kommentare, beginnend mit #, und Leerzeilen enthalten. Die entscheidenden Zeilen beginnen mit einer Zahl (Typ) und enthalten durch Leerzeichen getrennte Wörter, je nach Typ. Die verschiedenen Typen sind:
          • 1
            Genaues Datum. Argument: <MM-TT> <Feiertag-Name>
            Beispiel: 1 12-24 Weihnachten
          • 2
            Oster-abhängiges Datum. Argument: <Tag-Offset> <Feiertag-Name>. Der Offset wird vom Oster-Sonntag an gezählt.
            Beispiel: 2 1 Oster-Montag
            Hinweis: Das Osterdatum kann vorher geprüft werden: fhem> { join("-", western_easter(2011)) }
          • 3
            Monats-abhängiges Datum. Argument: <X> <Wochentag> <Monat> <Feiertag-Name>.
            Beispiel:
              3 1 Mon 05 Erster Montag In Mai
              3 2 Mon 05 Zweiter Montag In Mai
              3 -1 Mon 05 Letzter Montag In Mai
              3 0 Mon 05 Jeder Montag In Mai
          • 4
            Intervall. Argument: <MM-TT> <MM-TT> <Feiertag-Name> .
            Achtung: Ein Intervall darf kein Jahresende enthalten. Beispiel:
              4 06-01 06-30 Sommerferien
              4 12-20 01-10 Winterferien # FUNKTIONIER NICHT, stattdessen folgendes verwenden:
              4 12-20 12-31 Winterferien
              4 01-01 01-10 Winterferien
          • 5
            Datum relativ, Wochentags ein fester Urlaubstag/Feiertag. Argument: <X> <Wochentag> <Monat> <Tag> <Feiertag-Name>
            Hinweis: Da +0 oder -0 als Offset nicht verboten sind, ist das Verhalten hier nicht definiert, kann sich also ohne Info ändern;
            Beispiel:
              5 -1 Wed 11 23 Buss und Bettag (erster Mittwoch vor dem 23. Nov)
              5 1 Mon 01 31 Erster Montag in Februar
          Siehe auch he.holiday im contrib Verzeichnis für offizielle Feiertage in den deutschen Bundesländern Hessen und by.holiday für Bayern.

        Set
          N/A

        Get
          get <name> <MM-DD>
          get <name> yesterday
          get <name> today
          get <name> tomorrow
          get <name> days


          Gibt den Name des Feiertages zum angebenenen Datum zurück oder den Text none.


        Attributes
        • readingFnAttributes

      KM200

        Das Buderus KM200, KM100 or KM50 (ab hier als KMxxx beschrieben) ist eine Schnittstelle zwischen der Buderus Zentralheizungssteuerung un dem Internet.
        Es wurde entwickelt um den Bewohnern den Zugang zu Ihrem Heizungssystem durch die Buderus App EasyControl zu erlauben..
        Darüber hinaus erlaubt es nach vorheriger Freigabe dem Heizungs- bzw. Wartungsbetrieb die Heizungsanlage von aussen zu warten und Werte zu verändern.
        Das km200 fhem-Modul erlaubt den Lese-/Schreibzugriff dieser Parameter durch fhem.

        Um das KMxxx Gerät mit fhem nutzen zu können, muß zunächst ein privates Passwort mit der Buderus Buderus App EasyControl - App gesetzt werden.

        Anmerkung:
        Unabhängig der Installationsanleitung des Buderus KMxxx Geräts, sollten die Ports 5222 und 5223 am Router geschlossen bleiben um keinen Zugriff von außen auf das Gerät zu erlauben.
        Der Router sollte entsprechend Konfiguriert bzw. so belassen werden.
        Wenn der Lese-/Schreibzugriff von aussen gewünscht ist, so sollte man ausschließlich über das fhem-System auf die Zentralheizung zugreifen.

        Sobald das Modul in der fhem.cfg definiert ist, wird das Modul versuchen alle bekannten Services abzuklopfen ob diese in der angeschlossenen Konstellation überhaupt vorhanden sind.
        Nach diesem Initial-Kontakt unterscheidet das Modul zwisachen einem Satz an Services die sich ständig (dynamisch) ändern (z.B.: Vorlauftemperatur) sowie sich nicht ständig (statisch) ändernden Werten (z.B.: Firmware Version).
        Diese beiden Sätze an Services können mir einem individuellen Abfrageintervall versehen werden. Siehe Attributes

        Define
          define <name> km200 <IPv4-address> <GatewayPassword> <PrivatePassword>
            <name> : Der Name des Gerätes. Empfehlung: "myKm200".
            <IPv4-address> : Eine gültige IPv4 Adresse des KM200. Eventuell im Router nachschauen welche DHCP - Addresse dem KM200/KM50 vergeben wurde.
            <GatewayPassword> : Das gateway Passwort, welches auf dem Typenschild des KM200/KM50 zu finden ist.
            <PrivatePassword> : Das private Passwort, welches durch den User mit Hilfe der EasyControl - App vergeben wurde.

        Set
          Die set Funktion ändert die Werte der Services welche das Flag "schreibbar" innerhalb der KMxxx Service Struktur besitzen.
          Die meisten dieser beschreibbaren Werte haben eine exklusive Liste von möglichen Werten innerhalb dessen sich der neue Wert bewegen muss.
          Andere Fließkomma Werte haben einen maximum und minumum Wert, in dessen sich der neue Wert bewegen muß.
          set <service> <value>
            <service> : Der Name des Service welcher gesetzt werden soll. Z.B.: "/heatingCircuits/hc1/operationMode"
            <value> : Ein gültiger Wert für diesen Service.

        Get
          Die get-Funktion ist in der Lage einen Wert eines Service innerhalb der KMxxx Service Struktur auszulesen.
          Die zusätzliche Liste von erlaubten Werten oder der Wertebereich zwischen Minimum und Maximum wird nicht zurück gegeben.
          get <service> <option>
            <service> : Der Name des Service welcher ausgelesen werden soll. Z.B.: "/heatingCircuits/hc1/operationMode"
              Es gibt nur den Wert, aber nicht die Werteliste oder den möglichen Wertebereich zurück.
            <option> : Das optionelle Argument für Ausgabe des get-Befehls Z.B.: "json"
              Folgende Optionen sind verfügbar:
              json - Gibt anstelle des Wertes, die gesamte Json Antwort des KMxxx als String zurück

        Attributes
          Die folgenden Modul-spezifischen Attribute können neben den bekannten globalen Attributen gesetzt werden wie z.B.: room.
          • IntervalDynVal :
          • Ein gültiges Abfrageintervall für die sich ständig verändernden - dynamischen Werte der KMxxx Services. Der Wert muss größer gleich >=20s sein um dem Modul genügend Zeit einzuräumen eine volle Abfrage auszuführen bevor die nächste Abfrage startet.
            Der Default-Wert ist 300s.
          • PollingTimeout :
          • Ein gültiger Zeitwert um dem KMxxx genügend Zeit zur Antwort einzelner Werte einzuräumen. Normalerweise braucht dieser Wert nicht verändert werden, muss jedoch im Falle eines langsamen Netzwerks erhöht werden
            Der Default-Wert ist 5s.
          • DoNotPoll :
          • Eine durch Leerzeichen (Blank) getrennte Liste von Services welche von der Abfrage aufgrund irrelevanter Werte oder fhem - Abstürzen ausgenommen werden sollen.
            Die Liste kann auch Hierarchien von services enthalten. Dies bedeutet, das alle Services unterhalb dieses Services ebenfalls gelöscht werden.
            Der Default Wert ist (empty) somit werden alle bekannten Services abgefragt.
          • ReadBackDelay :
          • Ein gültiger Zeitwert in Mllisekunden [ms] für die Pause zwischen schreiben und zurücklesen des Wertes durch den "set" - Befehl. Der Wert muss >=0ms sein.
            Der Default-Wert ist 100 = 100ms = 0,1s.
          • disable :
          • Deaktiviert das Device und löscht alle bestehenden Readings.
            Der Default-Wert ist 0 = aktiviert

      logProxy

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

      mailcheck

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

      msgConfig

        Stellt globale Einstellungen und Tools für das FHEM Kommando msg bereit.
        Ein Device mit dem Namen globalMsg wird automatisch bei der ersten Benutzung des msg Kommandos angelegt, sofern kein msgConfig Device gefunden wurde.
        Der Device Name kann anschließend beliebig umbenannt und umkonfiguriert werden.

        Define
          define <name> msgConfig


        Set
          • addLocation     
            Erstellt auf einfache Weise ein Dummy Device basierend auf dem übergebenen Lokationsnamen. Es wird for die lokations-basierte Verwendung mit dem msg-Kommando vorkonfiguriert. Das Dummy Device wird automatisch zum Attribut msgLocationDevs hinzugefügt. Anschließend ist eine weitere Konfiguration über die Attribute msgContact* oder msgRecipient* notwendig, die auf entsprechende Gateway Devices verweisen, die an dieser Lokation stehen.

      netatmo

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

      notice

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

      notify


        Define
          define <name> notify <Suchmuster> <Anweisung>

          Führt eine oder mehrere Anweisungen aus, wenn ein Event generiert wurde, was dem <Suchmuster> (Gerätename oder Gerätename:Event) entspricht. Die Anweisung ist einer der FHEM Befehlstypen. Zum Test dient das trigger-Kommando.

          Beispiele:
            define b3lampV1 notify btn3 set lamp $EVENT
            define b3lampV2 notify btn3 { fhem "set lamp $EVENT" }
            define b3lampV3 notify btn3 "/usr/local/bin/setlamp "$EVENT""
            define b3lampV3 notify btn3 set lamp1 $EVENT;;set lamp2 $EVENT
            define wzMessLg notify wz:measured.* "/usr/local/bin/logfht $NAME "$EVENT""
            define LogUndef notify global:UNDEFINED.* "send-me-mail.sh "$EVENT""

          Hinweise:
          • <Suchmuster> ist entweder der Name des auslösenden ("triggernden") Gerätes oder die Kombination aus Gerät und auslösendem Ereignis (Event) Gerätename:Event.
          • Das <Suchmuster> muss exakt (!) entweder dem Gerätenamen entsprechen oder der Zusammenfügung aus Gerätename:Event. Events lassen sich mit "inform" in Telnet oder durch Beobachtung des "Event-Monitors" in FHEMWEB ermitteln.
          • In der Anweisung von Notify kann das auslösende Ereignis (Event) genutzt werden:
            • Die Anweisung $EVENT wird das komplette Ereignis (Event) beinhalten, z.B. measured-temp: 21.7 (Celsius)
            • $EVTPART0,$EVTPART1,$EVTPART2,etc enthalten die durch Leerzeichen getrennten Teile des Events der Reihe nach (im Beispiel also $EVTPART0="measured-temp:", $EVTPART1="21.7", $EVTPART2="(Celsius)".
              Diese Daten sind verfügbar als lokale Variablen in Perl, als Umgebungs-Variablen für Shell-Scripts, und werden als Text ausgetauscht in FHEM-Kommandos.
            • $NAME und $TYPE enthalten den Namen bzw. Typ des Ereignis auslösenden Gerätes, z.B. myFht und FHT
          • Achtung: Folgende Vorgehensweise ist abgekündigt, funktioniert bis featurelevel 5.6 und wird in einem zukünftigen Release von FHEM nicht mehr unterstützt. Wenn keine der oben genannten Variablen ($NAME/$EVENT/usw.) in der Anweisung gefunden wird, werden Platzhalter ersetzt.
            • Das Zeichen % wird ersetzt mit dem empfangenen Ereignis (Event), z.B. mit on oder off oder measured-temp: 21.7 (Celsius).
            • Das Zeichen @ wird ersetzt durch den Gerätenamen.
            • Um % oder @ im Text selbst benutzen zu können, müssen sie verdoppelt werden (%% oder @@).
            • Anstelle von % und @, können die Parameter %EVENT (funktionsgleich mit %), %NAME (funktionsgleich mit @) und %TYPE (enthält den Typ des Gerätes, z.B. FHT) benutzt werden. Die von Leerzeichen unterbrochenen Teile eines Ereignisses (Event) sind verfügbar als %EVTPART0, %EVTPART1, usw. Ein einzeln stehendes % verliert seine oben beschriebene Bedeutung, falls auch nur einer dieser Parameter in der Definition auftaucht.
          • Folgende spezielle Ereignisse werden für das Gerät "global" erzeugt:
            • INITIALIZED sobald die Initialization vollständig ist.
            • REREADCFG nachdem die Konfiguration erneut eingelesen wurde.
            • SAVE bevor die Konfiguration gespeichert wird.
            • SHUTDOWN bevor FHEM heruntergefahren wird.
            • DEFINED <devname> nach dem Definieren eines Gerätes.
            • DELETED <devname> nach dem Löschen eines Gerätes.
            • RENAMED <old> <new> nach dem Umbenennen eines Gerätes.
            • UNDEFINED <defspec> beim Auftreten einer Nachricht für ein undefiniertes Gerät.
          • Notify kann dazu benutzt werden, um Makros für eine manuelle Ausführung zu speichern. Mit einem trigger Kommando können solche Makros dann ausgeführt werden. Z.B.
            fhem> define MyMacro notify MyMacro { Log 1, "Hello"}
            fhem> trigger MyMacro

        Set
        • addRegexpPart <device> <regexp>
          Fügt ein regexp Teil hinzu, der als device:regexp aufgebaut ist. Die Teile werden nach Regexp-Regeln mit | getrennt. Achtung: durch hinzufügen können manuell erzeugte Regexps ungültig werden.
        • removeRegexpPart <re>
          Entfernt ein regexp Teil. Die Inkonsistenz von addRegexpPart / removeRegexPart-Argumenten hat seinen Ursprung in der Wiederverwendung von Javascript-Funktionen.
        • inactive
          Deaktiviert das entsprechende Gerät. Beachte den leichten semantischen Unterschied zum disable Attribut: "set inactive" wird bei einem shutdown automatisch in fhem.state gespeichert, es ist kein save notwendig.
          Der Einsatzzweck sind Skripte, um das notify temporär zu deaktivieren.
          Das gleichzeitige Verwenden des disable Attributes wird nicht empfohlen.
        • active
          Aktiviert das entsprechende Gerät, siehe inactive.

        Get
          N/A

        Attribute
        • disable
        • disabledForIntervals
        • addStateEvent
          Das mit dem state Reading verknüpfte Event ist speziell, da das dazugehörige Prefix "state: " entfernt wird, d.h. $EVENT ist nicht "state: on", sondern nur "on". In manchen Fällen ist es aber erwünscht das unmodifizierte Event zu bekommen, d.h. wo "state: " nicht entfernt ist. Für diese Fälle sollte addStateEvent auf 1 gesetzt werden, die Voreinstellung ist 0 (deaktiviert).
          Achtung:
          • dieses Attribut muss beim Empfänger (notify, FileLog, etc) gesetzt werden.
          • dieses Attribut zeigt nur für solche Geräte-Events eine Wirkung, die readingFnAttributes unterstützen.
        • forwardReturnValue
          Rückgabe der Werte eines ausgeführten Kommandos an den Aufrufer. Die Voreinstellung ist 0 (ausgeschaltet), um weniger Meldungen im Log zu haben.
        • readLog
          Das notify wird für Meldungen, die im FHEM-Log erscheinen, ausgegeführt. Das "Event-Generierende-Gerät" wird auf dem notify selbst gesetzt. Z.Bsp. kann man mit folgendem notify auf die Startup Meldung reagieren:
            define n notify n:.*Server.started.* { Log 1, "Wirklich" }
            attr n readLog
        • perlSyntaxCheck
          nach setzen des global Attributes perlSyntaxCheck wird eine Syntax-Prüfung der Anweisung durchgeführt bei jeder Änderung (define oder modify), falls die Anweisung Perl ist, und FHEM bereits gestartet ist.

      panStamp

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

      pilight

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

      pilight_contact

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

      pilight_ctrl

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

      pilight_dimmer

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

      pilight_raw

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

      pilight_smoke

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

      pilight_switch

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

      pilight_temp

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

      ping

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

      plex

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

      powerMap

      (en | de)
        powerMap ermittelt die aktuelle Leistungsaufnahme eines Geräts und berechnet den Energieverbrauch bei Änderung oder in einem regelmäßigen Intervall.
        Diese neuen Werte können genutzt werden, um den Stromverbrauch für Geräte ohne Zähler (z.B. Kühlschrank, Beleuchtung oder FHEM-Server) zu erfassen und mit dem Modul ElectricityCalculator weiter zu verarbeiten.

        Define
          define <name> powerMap
          Es kann immer nur eine powerMap Instanz definiert sein.

        Set
        • assign <devspec>
          Weist einem oder mehreren Geräten vordefinierte powerMap Attribute zu, um diese anschließend anpassen zu können.

        Get
        • devices
          Listet alle Geräte auf, die das Attribut 'powerMap' gesetzt haben.

        Readings
          Gerätespezifische Readings:
          • pM_energy
            Ein Zähler für die bisher bezogene Energie in Wh.
            Hinweis: Für eine korrekte Berechnung darf das Attribut timestamp-on-change-reading nicht für das Reading pM_energy gesetzt sein!

          • pM_energy_begin
            Unix Timestamp, an dem die Aufzeichnung begonnen wurde und das Gerät erstmalig Energie verbraucht hat.

          • pM_consumption
            Die aktuelle Leistungsaufnahme des Gerätes in W.

        Attribute
        • disable 1
          Es werden keine Readings mehr durch das Modul erzeugt oder berechnet.

        • powerMap_eventChainWarnOnly <1>
          Sofern gesetzt, wird die Ereigniskette NICHT automatisch repariert, falls Readings zwar als für powerMap notwendig identifiziert wurden, ihre Events jedoch derzeit dadurch unterdrückt werden, weil sie nicht in einem der Attribute event-on-change-reading oder event-on-update-reading enthalten sind. Stattdessen ist ein manueller Eingriff erforderlich.

        • powerMap_interval <seconds>
          Intervall in Sekunden, in dem neue Werte für die Energie berechnet werden.
          Der Vorgabewert ist 900 Sekunden.

        • powerMap_noEnergy 1
          Für das Gerät wird kein Energieverbrauch berechnet.

        • powerMap_noPower 1
          Für das Gerät wird keine Leistungsaufnahme abgeleitet und daher auch kein Energieverbrauch berechnet.

        • powerMap_rname_E
          Definiert den Reading Namen, in dem der Zähler für die bisher bezogene Energie gespeichert wird.
          Der Vorgabewert ist 'pM_energy'.

        • powerMap_rname_P
          Definiert den Reading Namen, in dem die aktuelle Leistungsaufnahme des Gerätes gespeichert wird.
          Der Vorgabewert ist 'pM_consumption'.

        • powerMap
                  {
                    '<reading>' => {
                      '<value>' => <power>,
                      '<value>' => <power>,
                       ...
                    },
          
                    '<reading>' {
                      '<value>' => <power>,
                      '<value>' => <power>,
                       ...
                    },
          
                    ...
                  }
          (gerätespezifisch)
          Ein Hash mit den Event(=Reading) Namen und seinen möglichen Werten, um diesen die dazugehörige Leistungsaufnahme zuzuordnen.
          Bei dimmbaren Geräten wird für die Zwischenschritte der Wert durch eine lineare Interpolation ermittelt, so dass mindestens zwei Zahlenwerte ausreichen.

          Aus Textwerten, die eine Zahl enthalten, wird automatisch die Zahl extrahiert und für die Interpolation verwendet (Beispiel: dim50% wird automatisch als 50 interpretiert).
          Außerdem werden "off" und "on" automatisch als 0 respektive 100 interpretiert.
          Nicht interpretierbare Werte führen dazu, dass eine Leistungsaufnahme von 0 angenommen wird.
          Explizit in powerMap enthaltene Definitionen haben immer vorrang.

          Für den Fall, dass mehrere Verbrauchswerte addiert werden sollen, kann der Name von anderen Readings direkt hinter dem eigentliche Wert mit einem Komma abgetrennt angegeben werden. Der aktuelle Status dieses Readings wird dann bei der Berechnung des Gesamtverbrauchs ebenfalls ber&uumL;cksichtigt. Sollen alle in powerMap bekannten Readings berücksichtigt werden, kann auch einfach ein * angegeben werden.

          Beispiel für einen FS20 Stecker:
                      'state' => {
                        '0' => 0,
                        '100' => 60,
                      },
                      


          Beispiel für eine HUE white Glühlampe:
                      'pct' => {
                        '0' => 0.4,
                        '10' => 1.2,
                        '20' => 1.7,
                        '30' => 1.9,
                        '40' => 2.3,
                        '50' => 2.7,
                        '60' => 3.4,
                        '70' => 4.7,
                        '80' => 5.9,
                        '90' => 7.5,
                        '100' => 9.2,
                      },
                      'state' => {
                        'unreachable' => 0,
                        '*' => 'pct',
                      },
                      

      rain

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

      readingsChange

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

      readingsGroup

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

      readingsHistory

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

      readingsProxy

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

      remotecontrol

        Erzeugt eine graphische Fernbedienung. Buttons (=icons) können frei ausgewählt und angeordnet werden. Vordefinierte layouts sind verfügbar für z.B. Samsung-TV und iTunes. Jeder "Knopfdruck" kann an das entsprechende fhem-Gerät weitergegeben werden.
        Weitere Erklaerungen finden sich im Wiki-Eintrag.

        Define
          define <rc-name> remotecontrol

          Typische Schritte zur Einrichtung:
          define rc1 remotecontrol# erzeugt eine "leere" remotecontrol
          get rc1 layout# zeigt alle vorhandenen vordefinierten layouts an
          set rc1 layout samsung# laedt das layout für SamsungTV
          set rc1 makenotify myTV# erzeugt notify_rc1, das jeden Tastendruck an myTV weitergibt
          Hinweis:die Tastenbelegung kann jederzeit geaendert werden, ohne dass der weblink erneut erzeugt werden muss.
          attr rc1 row15 VOLUP,VOLDOWN

        Set
        • set <rc-name> layout [delete|<layoutname>]
          layout delete loescht alle rowXX-Attribute
          layout <layoutname> laedt das vordefinierte layout in die rowXX-Attribute
        • set <rc-name> makeweblink [<name>]
          erzeugt einen weblink zur Anzeige der remotecontrol in FHEMWEB oder FLOORPLAN. Default-Name ist weblink_<rc-name> .
        • set rc1 makenotify mySamsungTV
          erzeugt notify_rc1 das jeden Tastendruck an mySamsungTV zur Ausfuehrung weitergibt

        Attribute
        • loglevel
        • rc_iconpath
          Pfad für icons, default ist "icons" . Der Attribut-Wert wird für alle icon-Dateien verwendet ausser .svg .
        • rc_iconprefix
          Prefix für icon-Dateien, default ist "" . Der Attribut-Wert wird für alle icon-Dateien verwendet ausser .svg .
        • Note: Icon-Namen (Tasten-Bild-Datei-Namen) werden zusammengesetzt als fhem/<rc_iconpath>/<rc_iconprefix><command|image>
          Fuer .svg -icons ist die Zugriffsfolge gemaess dem FHEMWEB-Attribut iconPath, default ist openautomation:fhemSVG:default .
        • rc_devStateIcon
          Zeigt das button-layout auf dem remotecontrol-device selbst in der FHEMWEB-Raumansicht an. Default ist 1, durch setzen auf 0 erscheint in der FHEMWEB-Raumansciht nicht das layout, sondern nur der Status "Initialized".

        • rowXX
          attr <rc-name> rowXX <command>[:<image>]
          Komma-separarierte Liste von Tasten/Icons je Tastaturzeile. Eine Tastaturzeile kann beliebig viele Tasten enthalten.

        • <command> ist der event, der bei Tastendruck ausgelöst wird. Gross/Kleinschreibung beachten.
        • <image> ist der Dateiname des als Taste angezeigten icons
        • Verwenden Sie je Taste
        • <command> wobei als Taste/icon <command> angezeigt wird
          Beispiel:
          attr rc1 rc_iconprefix black_btn_ # gilt für alle Tasten/icons
          attr rc1 row00 VOLUP
          -> icon ist black_btn_VOLUP, ein Tastendruck erzeugt den event VOLUP

        • oder
        • <command>:<image> wobei als Taste/icon <rc_iconprefix><image> angezeigt wird.
          Beispiel:
          attr rc1 row00 LOUDER:VOLUP
          icon ist black_btn_VOLUP, ein Tastendruck erzeugt den event LOUDER
          Beispiele: attr rc1 row00 1,2,3,TV,HDMI
          attr rc2 row00 play:PLAY,pause:PAUSE,louder:VOLUP,quieter:VOLDOWN
        • Hinweis: verwenden Sie :blank für eine 'leere Taste', oder z.B. :blank,:blank,:blank für eine Abstands-Leerzeile.

      restore

        restore list [<filename|directory>]
        restore [<filename|directory>]
        restore -a [<filename|directory>]


        Restauriert die beim update gesicherten Dateien. Mit dem Argument list kann man die Liste der verf&ügbaeren Sicherungen anzeigen, und mit der Angabe der direkten Datei/Verzeichnis kann man das zurücksichern anstossen. Siehe auch das update Befehl, bzw. das restoreDirs Attribut. Nach restore ist meistens ein "shutdown restart" notwendig.
        Falls die -a Option spezifiziert wurde, dann werden auch die Konfigurationsdateien wiederhergestellt.

      rssFeed

        Mit diesem Hilfs-Device kann ein RSS-Feed per URL abgerufen werden. Das Ergebnis wird zum einen in entsprechende Readings (s.u.) eingetragen, zum Anderen können die Schlagzeilen (Headlines) noch per GET oder per bereitgestellter Funktion als Ticker-Daten abgerufen werden. Die Daten des RSS-Feeds werden dabei jeweils im angegebenen Interval aktualisiert.

        Define
          define <name> rssFeed <url> [interval]

            url = URL zum RSS-Feed
            interval = Aktualisierungsinterval in Sekunden
            minimum Wert sind 600 Sekunden (10 Minuten)
            maximum Wert sind 86400 Sekunden (24 Stunden)

          Beispiel:
            define rssGEA rssFeed http://www.gea.de/rss?cat=Region%20Reutlingen&main=true 3600

            Damit wird stündlich der RSS-Feed des Reutlinger Generalanzeigers abgerufen.

        Set
          set <name> update
          Abrufen der Daten vom rssFeed und aktualisieren der Readings

        Get
          get <name> ticker
          Abrufen der zuletzt gelesenen Schlagzeilen im gewünschten Format (s. Attribute)

        Attribute
        • disabled
          Mit diesem Attribut kann das Device deaktiviert (1) werden bzw. auch wieder aktiviert (0 oder Attribut nicht vorhandn). Wenn das device deaktiviert ist, sind keine Readings mehr vorhanden, außer state. Außerdem werden die Daten nicht mehr zyklisch aktualisiert und get ticker liefert nur noch die Information zurück, dass der Ticker nicht mehr aktiv ist (s. dazu auch Attribut rfDisabledText).
        • rfDisabledText
          Der hier eingetragenee Text wird beim Abruf der Schlagzeilen als einzige Zeile angezeigt, wenn der rssFeed disabled ist (s. Attribut disabled). Ist dieses Attribut nicht angegeben, so wird ein Standardtext angezeigt.
          Beispiel: attr <name> rfDisabledText Dieser Feed wurde deaktiviert
        • rfTickerChars
          Hiermit kann eine Zeichenfolge festgelegt werden, die bei den Schlagzeilen für den get-Abruf vor und nach jeder Schlagzeile, wie bei einem Nachrichten-Ticker angefügt wird. Beispiel: attr <name> rfTickerChars +++
          Ergebnis: +++ Dies ist eine Beispiel-Schlagzeile +++
          Diese Zeichenkette wird auch als Trenner für die Marquee-Ticker-Daten verwendet.
        • rfMaxLines
          Bestimmt, wieviele Schlagzeilen maximal aus dem Feed extrahiert werden sollen.
          Sind weniger Nachrichten-Elemente im Feed enthalten, als über rfMaxLines angegeben, so werden eben nur so viele Schlagzeilen extrahiert, wie vorhanden sind.
          Ist dieses Attribut nich angegeben, so wird dafür der Standard-Wert 10 angenommen.
          Beispiel: attr <name> rfMaxLines 15
        • rfDisplayTickerReadings
          Wenn dieses Attribut gesetzt ist werden 2 zusätzliche Readings erzeugt, die die Tickerdaten einmal für s.g. "Toast"-Ticker (der Inhalt ist der selbe, wie die Ausgabe von rssFeedGetTicker()) und einmal für s.g. "Marquee"-Ticker, also in einer einzigen Zeile.
        • rfEncode
          Hier kann eine Encoding-Methode (Bspw. utf8) angegeben werden. Die Texte die aus dem Feed extrahiert werden (title, descripton, ...) werden dann vor der Zuwesung an die Readings mittels encode (Perl core-Module Encode) enkodiert. Fehlt dieses Attribut, so findet keine umkodierung statt. Das kann u.U. notwendig sein, wenn in den zurückgelieferten Feed-Daten s.g. wide Characters enthalten sind. Dies kann evtl. dazu führen, das u.a. die Darstellung in FHEMWEB nicht mehr korrekt erfolgt. Dies betrifft auch das Ergebnis von rssFeedFunctions, bzw. get ticker.
          Dieses Attribut wird beim ersten define per default auf utf8 gesetzt.
        • rfReadings
          Über dieses Attribut kann angegeben werden, welche Daten aus dem RSS-Feed in Readings extrahiert werden sollen. Das Attribut ist als Komma getrennte Liste anzugeben.
          Zur Auswahl stehen dabei folgende möglichen Werte:
          • title = Titelzeile
            Dies erzeugt ein Reading für den Feed-Titel und für jedes Nachrichten-Element aus dem Feed.
          • description = Beschreibungstext Dies erzeugt ein Reading für die Feed-Beschreibung, bzw. für den Beschreibungstext jeden Nachrichten-Eelements.
          • encodedContent = content:encoded Abschnitt
            Sofern vorhanden ist in diesem Abschnitt quasi ein Langtext der Nachrihtenmeldung enthalten.
          • pubDate = Zeitpunkt der Veröffentlichung des Feeds, bzw. der einzelnen Nachrichten-Elemente
          • link = Link zum Feed, bzw. zum einzelnen Nachrichten-Element auf der Homepage des Feeds.
          • buildDate = Zeitpunkt der letzten aktualisierung der Feed-Daten vom Feed-Betreiber.
          • imageURl = URL zum ggf. vorhandenen Bild eines Nachrichten-Elements, bzw. zum Nachrichten-Feed.
          • imageTitle = Titel eines ggf. zum Feed oder Nachrichten-Element vorhandenen Bildes.
          Ist Dieses Attribut nicht vorhanden, so werden die Werte "title,description,pubDate" als Voreinstellung angenommen. Beim ersten Anlegen des Device wird das Attribut automatisch erste einmal mit genau dieser Voreinstellung belegt.
        • rfCustomTextPrepFn
          Hier kann eine Funktion angegeben werden, die bspw. in 99_myUtils.pm definiert wird. In dieser Funktion können Textinhalte vor dem Setzen der Readings, bzw. Tickerzeilen beliebig modifiziert werden. Der Funktion wird dabei zum Einen eine Kennung für den Text übergeben und zum Anderen der Text selbst. Zurückgegeben wird dann der modifizierte Text.
          Mögliche Kennungen sind dabei (s.a. rfReadings)
          • feedTitle
          • feedDescription
          • imageTitle
          • desctiption
          • encodedContent

          Beispiel für 99_myUtils.pm:
          		
          #Text-Modifikation für rssFeedDevices
          sub rssFeedPrep($$)
          {
          	my($texttype,$text) = @_;
          
          	#Länge von descriptions auf maximal 50 begrenzen
          	my $tLn=length $text;
          	$text=substr($text,0,47).'...' if ($tLn >50 && ($texttype=~/description/));	
          
          	#Filtern von texten, die fälschlicherweise auf HASH(xxxxxx) stehen
          	#von beliebigen Texten
          	return ' ' if ($text=~/HASH\(.*\)/);
          
          	#Setzen eines eigenen Titels für den Feed
          	return 'Mein eigener Feed-Titel' if ($texttype =~/feedTitle/);
          
          	#jetzt noch den modifizierten Text zurück geben
          	return $text;
          }	
          		
          zur Verwendung muss das Attribut noch entsprechend gesetzt werden:
          attr <rssFeedDevice> rfCustomTextPrepFn rssFeedPrep
        • rfAllReadingsEvents
          Wenn dieses Attribut auf 1 gesetzt wird, so werden für ALLE Readings, die während des Feed-Updates erzeugt werden auch entsprechende Events generiert (abh. von den event-on-... Attributen). Von Haus aus werden, v.a. für die Readings mit den Feed-Daten keine Events generiert.
        • readingFnAttributes

        Funktionen
        • rssFeedGetTicker
          Diese Funktion gibt die ermittelten und formatierten Schlagzeilen als Zeichenkette zurück. Die einzelnen Schlagzeilen sind dabei durch Zeilenvorschub getrenn. Dieses Ergebnis kann bspw. in einem InfoPanel für einen Ticker verwendet werden. Der Funktion muss dazu der Name eines rssFeed-Devices übergeben werden. Die Ausgabe ist praktisch die selbe wie das Ergebnis, das bei get ticker geliefert wird.
          Syntax: rssFeedGetTicker(<rssFeedDevice>)

        Readings
          Je nach Auswahl der Attribute werden verschiedene Readings bereitgestellt. Diese Readings sind teilweise mit einem Präfix versehen um sie bspw. dem Feed selbst oder einem Nachrichten-Element zuozuordnen.

        • Nxx_
          Diese Readings beziehen sich alle auf die einzelnen Nachrichten-Elemente, wobei xx den Index des jeweiligen Nachrichten-Elements angibt.
          Beispiel für die Readings eines Nachrichten-Elements:
            N00_title
            N00_descripton
            N00_pubDate
        • f_
          Diese Readings beziehen sich alle auf den Nachrichten-Feed selbst.
          Beispiel für die Readings des Nachrichten-Feeds
            f_title
            f_descripton
            f_buildDate
        • preparedLines
          Dieses Reading gibt an, wie viele Schlagzeilen tatsächlich beim letzten update aus dem Nachrichten-Feed extrahiert wurden.
        • tickerToast
          Dieses Reading entä die selben Daten, wie sie von der rssFeedGetTicker() Funktion zurückgeliefert werden (if attribute rfDisplayTickerReadings is set)
          Beispiel: +++ Headline 1 +++ \n +++ Headline 2 +++ \n +++ Headline 3 +++
        • tickerMarquee
          Dieses Reading enthält die Tickerdaten für "marquee"-artige Ticker, also auf einer Zeile (if attribute rfDisplayTickerReadings is set)
          Beispiel: Headline 1 +++ Hadline 2 +++ Headline 3 +++
        • gzippedFeed
          Manche Feeds werden in gezippter (gzip) Form ausgeliefert. Das wird vom Modul automatisch erkannt und die Daten im Bedarfsfall dekomprimiert. Wurde beim letzten update der Feed in gezippter Form ausgeliefert, so wird dieses Reading auf 1 gesetzt, andernfalls auf 0.
        • state
          Dieses Reading gibt, wenn das Device nicht disabled ist, den Zeitpunkt der letzten aktualisierung mittels update an, egal ob automatisch oder manuell ausgelöst. Ist das device disabled, steht genau das im Reading. Beim Anlegegen des Device mittels define findet das erste Aktualisieren der Daten verzögert statt. Während dieser Verzögerung steht der state auf "defined".

      sequence


        Define
          define <name> sequence <re1> <timeout1> <re2> [<timeout2> <re3> ...]

          Ein sequence kann verwendet werden, um ein neues Event zu generieren, wenn eine bestimmte Folge von anderen Events in einem festgelegten Zeitraum eingetroffen ist. Z.Bsp. um eine Lampe dann einzuschalten, falls Btn1:on, dann Btn2:off und zum Schluss Btn3:on innerhalb einer Sekunde gedrückt wurde, definiert man folgendes:
            define lampseq sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on
            define lampon notify lampseq:trigger set lamp on

        Set
          N/A

        Get
          N/A

        Attributes
        • disable
        • triggerPartial
          Falls gesetzt (auf 1), und nicht alle erwarteten Events eingetroffen sind, dann wird ein partial_X Event generiert, wobei X durch Anzahl der eingetroffenen Events ersetzt wird. Beispiel:
            fhem> define seq sequence d1:on 1 d1:on 1 d1:on
            fhem> attr seq triggerPartial
            fhem> set d1 on;; sleep 0.5;; set d1 on
          erzeugt das Event "seq partial_2". Dies kann verwendet werden, um z.Bsp. einer Taste unterschiedliche Aufgaben zuzuweisen, jenachdem wie oft sie gedrückt wurde.

        Attributes
        • disable
        • showtime
        • triggerPartial
          Falls gesetzt (auf 1), und nicht alle erwarteten Events eingetroffen sind, dann wird ein partial_X Event generiert, wobei X durch Anzahl der eingetroffenen Events ersetzt wird. Beispiel:
            fhem> define seq sequence d1:on 1 d1:on 1 d1:on
            fhem> attr seq triggerPartial
            fhem> set d1 on;; sleep 0.5;; set d1 on
          erzeugt das Event "seq partial_2". Dies kann verwendet werden, um z.Bsp. einer Taste unterschiedliche Aufgaben zuzuweisen, jenachdem wie oft sie gedrückt wurde.

        • reportEvents
          Falls gesetzt (auf 1), meldet trigger die empfangenen Events (Leerzeichen getrennt) nach dem "trigger" oder "partial_X" Schlüsselwort. Das kann verwendet werden, um generische sequence Instanzen zu definieren:
            define seq sequence remote:btn.* remote:btn.*
            attr seq reportEvents
            define n_b1b2 notify seq:trigger.remote:btn1.remote:btn2 set lamp1 on
            define n_b2b1 notify seq:trigger.remote:btn2.remote:btn1 set lamp1 off

      siri

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

      speedtest

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

      statistics

      (en | de)
        Dieses Modul wertet von den angegebenen Geräten (als regulärer Ausdruck) bestimmte Werte statistisch aus und fügt das Ergebnis den jeweiligen Geräten als neue Werte hinzu.
        Für detailierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.
         
        Es unterscheidet in vier Statistik-Typen denen bereits standardmässig Gerätewerte zugeordnet sind:
        • Min|Avg|Max Minimum, Durchschnitt und Maximum von Momentanwerten:
          über den Zeitraum Tag, Monat und Jahr:
          brightness, current, energy_current, humidity, luminosity, temperature, voltage
          über den Zeitraum Stunde, Tag, Monat und Jahr:
          wind, wind_speed, windSpeed

        • Tendency Tendenz über 1h, 2h, 3h und 6h: pressure

        • Delta Differenz zwischen Anfangs- und Endwerte innerhalb eines Zeitraums (Stunde, Tag, Monat, Jahr):
          count, energy, energy_total, power, total, rain, rain_rate, rain_total

        • Duration Dauer und Anzahl der Zustände (on, off, open, closed...) innerhalb eines Zeitraums (Tag, Monat, Jahr):
          lightsensor, lock, motion, Window, window, state (wenn kein anderer Gerätewert gültig)

        Über die Attribute deltaReadings, durationReadings, minAvgMaxReadings, tendencyReadings können weitere Gerätewerte hinzugefügt oder einem anderen Statistik-Typ zugeordnet werden.
         
        Define

          define <Name> statistics <GeräteNameRegExp> [Prefix]
          Beispiel: define Statistik statistics Wettersensor|Badsensor
           
        • <GeräteNameRegExp>
          Regulärer Ausdruck für den Gerätenamen. !!! Nicht die Gerätewerte !!!

        • [Prefix]
          Optional. Der Prefix wird vor den Namen der statistischen Gerätewerte gesetzt. Standardmässig stat


        Set

        • resetStatistics <All|Gerätename>
          Setzt die Statistiken der ausgewählten Geräte zurück.

        • doStatistics
          Berechnet die aktuellen Statistiken aller beobachteten Geräte.


        Get
          nicht implementiert

        Attributes

        • dayChangeTime <Zeit>
          Uhrzeit des Tageswechsels. Standardmässig 00:00. Bei Wetterdaten kann der Tageswechsel z.B. auf 6:50 gesetzt werden.

        • deltaReadings <Gerätewerte>
          Durch Kommas getrennte Liste von weiteren Gerätewerten, für welche die Differenz zwischen den Werten am Anfang und Ende einer Periode (Stunde/Tag/Monat/Jahr) bestimmt wird.

        • durationPeriodHour < 1 | 0 >
          Wenn auf 1 gesetzt, dann werden für "durationReadings" auch stündliche Statistiken gebildet.

        • durationReadings <Gerätewerte>
          Durch Kommas getrennte Liste von weiteren Gerätewerten, für welche die Dauer einzelner Gerätewerte innerhalb bestimmte Zeiträume (Stunde/Tag/Monat/Jahr) erfasst wird.

        • excludedReadings <GerätenameRegExp:GerätewertRegExp>
          Regulärer Ausdruck der Gerätewerte die nicht ausgewertet werden sollen. z.B. FritzDect:current|Sensor_.*:humidity

        • ignoreDefaultAssignments <0 | 1>
          Ignoriert die Standardzuordnung von Gerätewerten zu Statistiktypen..
          D.h., nur die Gerätewerte, die über Attribute den Statistiktypen zugeordnet sind, werden ausgewertet.

        • hideAllSummaryReadings <0 | 1>
          noch nicht implementiert - Es werden keine gesammelten Statistiken angezeigt, sondern nur die unter "singularReadings" definierten Einzelwerte

        • minAvgMaxReadings <Gerätewerte>
          Durch Kommas getrennte Liste von Gerätewerten, für die in bestimmten Zeiträumen (Tag, Monat, Jahr) Minimum, Mittelwert und Maximum erfasst werden.

        • periodChangePreset <Sekunden>
          Start der Berechnung der periodischen Daten, standardmässig 5 Sekunden vor der vollen Stunde,
          Erlaubt die korrekte zeitliche Zuordnung in Plots, kann je nach Systemauslastung verringert oder vergrößert werden.

        • singularReadings <GerätRegExp:GeräteWertRegExp:Statistiktyp:Zeitraum>
          • Statistiktyp: Min|Avg|Max|Delta|DurationState|Tendency
          • Zeitraum: Hour|Day|Month|Year|1h|2h|3h|6h
          Regulärer Ausdruck statistischer Werte, die zusätzlich auch als einzelne Werte gespeichert werden sollen. Erleichtert die Erzeugung von Plots und anderer Auswertungen (notify).
          Für "duration"-Gerätewerte muss der Name des jeweiligen Statuswertes als Statistiktyp eingesetzt werden.
          Beispiel:
          Wettersensor:rain:Delta:(Hour|Day)|FritzDect:power:Delta:Day
          Wettersensor:rain:Delta:(Hour|Day)|FritzDect:power:Delta:Day

        • specialDeltaPeriods <Gerät:Gerätewert:Zeitraum:Anzahl1:Anzahl2:...>
          Erzeugt für die angegebenen "delta"-Gerätewerte zusätzliche Einzelwerte über die angegebene Anzahl eines Zeitraums (Hour, Day, Month).
          Reguläre Ausdrücke können nicht genutzt werden. Es können auch mehrere Gerätewert und/oder Zeiträume hinzugefügt werden. Diese müssen durch Kommas (ohne Leerzeichen) getrennt werden.
          Beispiel:
          attr Statistik specialDeltaPeriods Wettersensor:rain:Hour:06:72:96
          Dies erzeugt 3 zusätzliche Werte für die Regenmenge in den letzten 6, 72, 96 Stunden.
          attr Statistik specialDeltaPeriods Wettersensor:rain:Hour:48,Wettersensor:rain:Day:30,EZaehler:energy:Month:6:12
          Dies erzeugt 4 zusätzliche Werte für die Regenmenge in den letzten 48 Stunden und den letzten 30 Tagen und den Energieverbrauch der letzten 6 und 12 Monate.

        • specialDeltaPeriodHours
          veraltet

        • tendencyReadings <Gerätewerte>
          Durch Kommas getrennte Liste von weiteren Gerätewerten, für die innerhalb bestimmter Zeiträume (1h, 2h, 3h, 6h) die Differenz zwischen Anfangs- und Endwert ermittelt wird.

        • readingFnAttributes

      structure


        Define
          define <name> structure <struct_type> <dev1> <dev2> ...

          Mit dem Device "Structure" werden Strukturen/Zusammenstellungen von anderen Devices erstellt um sie zu Gruppen zusammenzufassen. (Beispiel: im Haus alles ausschalten)
          Die Liste der Devices die einer Struktur zugeordnet sind kann duch das Kommando addstruct / delstruct im laufenden Betrieb verändert werden. Es können sowohl einzelne Devices als auch Gruppen von Devices (TYPE=FS20) zugefügt werden. Jedes zugefügt Device erhält zwei neue Attribute <struct_type>=<name> sowie <struct_type>_map wenn es zu einer Struktur zugefügt wurde. Diese Attribute werden wieder automatisch entfernt, sobald das Device von der Struktur entfernt wird.
          Eine Struktur kann ebenfalls zu einer anderen Struktur zugefügt werden. Somit können z b. kaskadierende Strukturen erstellt werden. (Z.b. KG,EG,OG, Haus) Beispiel:
          • define Kueche structure room lampe1 lampe2
          • addstruct Kueche TYPE=FS20
          • delstruct Kueche lampe1
          • define house structure building kitchen living
          • set house off


        Set
          Jedes set Kommando wird an alle Devices dieser Struktur weitergegeben.
          Aussnahme: das Attribut structexclude ist in einem Device definiert und dessen Attributwert matched als Regexp zum Namen der aktuellen Struktur.
          Wenn das set Kommando diese Form hat set <structure> [FILTER=<filter>] <type-specific> wird :FILTER=<filter> bei der Weitergebe der set an jeden Devicenamen wie folgt angehängt: set :FILTER=<filter> <type-specific>

        Get
          Get wird im Structur-Device nicht unterstützt.

        Attribute
        • async_delay
          Wenn dieses Attribut gesetzt ist, werden ungefilterte set Kommandos nicht sofort an die Clients weitergereicht. Stattdessen werden sie einer Warteschlange hinzugefügt, um später ausgeführt zu werden. Das set Kommando kehrt sofort zurück, die Clients werden danach timer-gesteuert einzeln abgearbeitet. Die Zeit zwischen den Timer-Aufrufen ist dabei durch den Wert von async_delay (in Sekunden) gegeben, ein Wert von 0 entspricht der schnellstmöglichen Abfolge. So können besonders lange Verzögerungen, die gerade bei großen structures vorkommen können, in unproblematischere Häppchen zerlegt werden.
        • disable
        • disabledForIntervals
        • clientstate_behavior
          Der Status einer Struktur hängt von den Status der zugefügten Devices ab. Dabei wird das propagieren der Status der Devices in zwei Gruppen klassifiziert und mittels diesem Attribut definiert:
          • absolute
            Die Struktur wird erst dann den Status der zugefügten Devices annehmen, wenn alle Devices einen identischen Status vorweisen. Bei unterschiedlichen Devictypen kann dies per Attribut <struct_type>_map pro Device beinflusst werden. Andernfalls hat die Struktur den Status "undefined".
          • relative
            S.u. clientstate_priority.
          • relativeKnown
            wie relative, reagiert aber nicht auf unbekannte, in clientstate_priority nicht beschriebene Ereignisse. Wird für HomeMatic Geräte benötigt.
          • last
            Die Struktur übernimmt den Status des zuletzt geänderten Gerätes.
        • clientstate_priority
          Wird die Struktur auf ein relatives Verhalten eingestellt, so wird die Priorität der Devicestatus über das Attribut clientstate_priority beinflusst. Die Prioritäten sind in absteigender Reihenfolge anzugeben. Dabei können Gruppen mit identischer Priorität angegeben werden, um zb. unterschiedliche Devicetypen zusammenfassen zu können. Jede Gruppe wird durch Leerzeichen oder /, jeder Eintrag pro Gruppe durch Pipe getrennt. Der Status der Struktur ist der erste Eintrag in der entsprechenden Gruppe.
          Beispiel:
          • attr 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

      tahoma

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

      telnet


        Define
          define <name> telnet <portNumber> [global|hostname]
          oder
          define <name> telnet <servername>:<portNummer>

          Erste Form, Server-mode:
          Überwacht den TCP/IP-Port <portNummer> auf ankommende Verbindungen. Wenn der zweite Parameter nicht angegeben wird, wird der Server nur auf Verbindungen von localhost achten. Falls der zweite Parameter global ist, dann wird telnet auf allen lokalen Netzwerk-Interfaces zuhören, ansonsten wird der Parameter als Hostname oder Adresse interpretiert, und nur diese lokale Adresse bedient.
          Für den Gebrauch von IPV6 muss die Portnummer als IPV6:<nummer> angegeben werden, in diesem Fall wird das Perl-Modul IO::Socket:INET6 angesprochen. Unter Linux kann es sein, dass dieses Modul mittels cpan -i IO::Socket::INET6 oder apt-get libio-socket-inet6-perl nachinstalliert werden muss; OSX und Fritzbox-7390 enthalten bereits dieses Modul.
          Beispiele:
            define tPort telnet 7072 global
            attr tPort SSL
            attr allowed_tPort allowed
            attr allowed_tPort validFor tPort
            attr allowed_tPort globalpassword mySecret
          Hinweis: Das alte (pre 5.3) "global attribute port" wird automatisch in eine telnet-Instanz mit dem Namen telnetPort umgewandelt. Im Rahmen dieser Umwandlung geht das globale Attribut allowfrom verloren.

          Zweite Form, Client-mode:
          Verbindet zu einem angegebenen Server-Port und führt die von dort aus empfangenen Anweisungen - genau wie im Server-mode - aus. Dies kann verwendet werden, um sich mit einer fhem-Instanz, die sich hinter einer Firewall befindet, zu verbinden, für den Fall, wenn das Installieren von Ausnahmen in der Firewall nicht erwünscht oder nicht möglich sind. Hinweis: Dieser Client-mode unterstützt zwar SSL, aber nicht IPV6.
          Beispiel:
            Starten von tcptee auf einem öffentlich erreichbaren Host ausserhalb der Firewall:
              perl contrib/tcptee.pl --bidi 3000
            Konfigurieren von fhem innerhalb der Firewall:
              define tClient telnet <tcptee_host>:3000
            Verbinden mit fhem (hinter der Firewall) von ausserhalb der Firewall:
              telnet <tcptee_host> 3000

        Set
          N/A

        Get
          N/A

        Attribute
        • prompt
          Gibt die Zeichenkette an, welche in der Telnet-Sitzung als Kommandoprompt ausgegeben wird. Die Voreinstellung ist fhem>

        • SSL
          SSL-Verschlüsselung für eine Verbindung aktivieren. Hier gibt es eine Beschreibung, wie das erforderliche SSL-Zertifikat generiert werden kann. Um eine Verbindung mit solch einem Port herzustellen, sind folgende Befehle möglich:
            socat openssl:fhemhost:fhemport,verify=0 readline
            ncat --ssl fhemhost fhemport
            openssl s_client -connect fhemhost:fhemport

        • allowfrom
          Regexp der erlaubten IP-Adressen oder Hostnamen. Wenn dieses Attribut gesetzt wurde, werden ausschließlich Verbindungen von diesen Adressen akzeptiert.

        • connectTimeout
          Gibt die maximale Wartezeit in Sekunden an, in der die Verbindung aufgebaut sein muss. Standardwert ist 2.

        • connectInterval
          Gibt die Dauer an, die entweder nach Schließen einer Verbindung oder für den Fall, dass die Verbindung nicht zustande kommt, gewartet werden muss, bis ein erneuter Verbindungsversuch gestartet werden soll. Standardwert ist 60.

        • encoding
          Bezeichnet die Zeichentabelle für die zum Client gesendeten Daten. Mögliche Werte sind utf8 und latin1. Standardwert ist utf8.

        • sslVersion
          Siehe das global Attribut sslVersion.

      update

        update [<fileName>|all|check|force] [http://.../controlfile]
        oder
        update [add source|delete source|list|reset]

        Erneuert die FHEM Installation. D.h. es wird (werden) zuerst die Kontroll-Datei(en) heruntergeladen, und mit der lokalen Version dieser Datei in moddir/FHEM verglichen. Danach werden alle in der Kontroll-Datei spezifizierten Dateien heruntergeladen, deren Größe oder Zeitstempel sich unterscheidet. Wenn dieser Ablauf abgeschlossen ist, wird das globale UPDATE Ereignis ausgelöst.
        Mit den Befehlen add/delete/list/reset kann man die Liste der Kontrolldateien pflegen.

        Zu beachten:
        • Das contrib Verzeichnis wird nicht heruntergeladen.
        • Die Dateien werden auf der Webseite einmal am Tag um 07:45 MET/MEST aus der Quell-Verwaltungssystem (SVN) bereitgestellt.
        • Das all Argument ist die Voreinstellung.
        • Das force Argument beachtet die lokale controls_fhem.txt Datei nicht.
        • Das check Argument zeigt die neueren Dateien an, und den letzten Abschnitt aus der CHANGED Datei
        • Falls man <fileName> spezifiziert, dann werden nur die Dateien heruntergeladen, die diesem Regexp entsprechen.
        Siehe also das restore Befehl.

        Beispiele:
        • update check
        • update
        • update force
        • update check http://fhem.de/fhemupdate/controls_fhem.txt

        Attribute (sind mit attr global zu setzen)
        • updateInBackground
          Wenn dieses Attribut gesetzt ist, wird das update Befehl in einem separaten Prozess ausgeführt, und alle Meldungen werden per Event übermittelt. In der telnet Sitzung wird inform, in FHEMWEB wird das Event Monitor aktiviert. Die Voreinstellung ist an, zum Deaktivieren bitte Attribut auf 0 setzen.

        • updateNoFileCheck
          Wenn dieses Attribut gesetzt ist, wird die Größe der bereits vorhandenen, lokalen Datei nicht mit der Sollgröße verglichen. Dieses Attribut wurde nach nicht genau spezifizierten Wnsch erfahrener FHEM Benutzer eingefuehrt, die Voreinstellung ist 0.

        • backup_before_update
          Wenn dieses Attribut gesetzt ist, erstellt FHEM eine Sicherheitskopie der FHEM Installation vor dem update mit dem backup Befehl. Die Voreinstellung is "nicht gesetzt", da update sich auf das restore Feature verlässt, s.u.
          Beispiel:
            attr global backup_before_update

        • exclude_from_update
          Enthält eine Liste durch Leerzeichen getrennter Dateinamen (regexp), welche nicht im update berücksichtigt werden.
          Falls der Wert commandref enthält, dann wird commandref_join.pl nach dem update nicht aufgerufen, d.h. die Gesamtdokumentation ist nicht mehr aktuell. Die Moduldokumentation bleibt weiterhin aktuell.
          Beispiel:
            attr global exclude_from_update 21_OWTEMP.pm temp4hum4.gplot

        • restoreDirs update sichert jede Datei vor dem Überschreiben mit der neuen Version aus dem Web. Für diesen Zweck wird zuerst ein restoreDir Verzeichnis in der global modpath Verzeichnis angelegt, und danach ein Unterverzeichnis mit dem aktuellen Datum. In diesem Verzeichnis werden vor dem Überschreiben die alten Versionen der Dateien gerettet. Die Voreinstellung ist 3, d.h. die letzten 3 Datums-Verzeichnisse werden aufgehoben, und die älteren entfernt. Falls man den Wert auf 0 setzt, dann ist dieses Feature deaktiviert.

      version

        version [<filter>|revision] [noheader]

        Gibt die Versionsinformation von fhem.pl und aller geladenen Module aus. Mit dem optionalen Parameter kann man die Ausgabe filtern. Der spezielle Filterwert "revision" zeigt nur die aktuellste Revisions-Nummer seit dem letzten Update an.

        Der optionale Parameter noheader unterdrückt die Ausgabe des Listenkopfs (Latest Revision, File, Rev, Last Change).

        Beispiel der Ausgabe von version:

          Latest Revision: 10814

          File             Rev   Last Change

          fhem.pl          10769 2016-02-08 12:11:51Z rudolfkoenig
          90_at.pm         10048 2015-11-29 14:51:40Z rudolfkoenig
          98_autocreate.pm 10165 2015-12-13 11:14:15Z rudolfkoenig
          00_CUL.pm        10146 2015-12-10 10:17:42Z rudolfkoenig
          10_CUL_HM.pm     10411 2016-01-08 15:18:17Z martinp876
          ...

        Beispiel der Ausgabe von version fhem:

          File             Rev   Last Change

          fhem.pl          10769 2016-02-08 12:11:51Z rudolfkoenig

        Beispiel der Ausgabe von version fhem.pl noheader:

          fhem.pl 10769 2016-02-08 12:11:51Z rudolfkoenig

      watchdog


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

          Startet einen beliebigen FHEM Befehl wenn nach dem Empfang des Ereignisses <regexp1> nicht innerhalb von <timespec> ein <regexp2> Ereignis empfangen wird.
          Der Syntax für <regexp1> und <regexp2> ist der gleiche wie regexp für notify.
          <timespec> ist HH:MM[:SS]
          <command> ist ein gewöhnlicher fhem Befehl wie z.B. in at oderr notify

          Beispiele:
            # Frage Daten vom FHT80 _einmalig_ ab, wenn wir keine Nachricht für
            # 15 Minuten erhalten haben.
            define w watchdog FHT80 00:15:00 SAME set FHT80 date

            # Frage Daten vom FHT80 jedes Mal ab, wenn keine Nachricht für
            # 15 Minuten emfpangen wurde, d.h. reaktiviere den Watchdog nachdem er getriggert wurde.
            # Kann gefährlich sein, da er so in einer Schleife getriggert werden kann.
            define w watchdog FHT80 00:15:00 SAME set FHT80 date;; trigger w .

            # Alarmiere einmalig wenn vom HMS100-FIT für eine Stunde keine Nachricht empfangen wurde.
            define w watchdog HMS100-FIT 01:00 SAME "alarm-fit.sh"

            # Sende eine Mail wenn das Fenster offen gelassen wurde
            define w watchdog contact1:open 00:15 contact1:closed "mail_me close window1"
            attr w regexp1WontReactivate

          Hinweise:
          • Wenn <regexp1> . (Punkt) ist, dann aktiviere den Watchdog zur definierten Zeit. Sonst wird er durch den Empfang des ersten passenden Events aktiviert.
          • <regexp1> Resetet den Timer eines laufenden Watchdogs. Um das zu verhindern wird das regexp1WontReactivate Attribut gesetzt.
          • Wenn <regexp2> SAME ist , dann ist es das gleiche wie das erste regexp, und wird reaktiviert wenn es empfangen wird.
          • trigger <watchdogname> . aktiviert den Trigger wenn dessen Status defined ist und setzt ihn in den Status defined wenn sein status triggered oder aktiviert (Next:...) ist.
            Der Watchdog musst immer mit diesem Befehl reaktiviert werden wenn er getriggert wurde.
          • Ein generischer Watchdog (ein Watchdog, verantwortlich für mehrere Devices) ist derzeit nicht möglich.
          • Bei modify sind alle Parameter optional, und werden nicht geaendert, falls nicht spezifiziert.

        Set
        • inactive
          Deaktiviert das entsprechende Gerät. Beachte den leichten semantischen Unterschied zum disable Attribut: "set inactive" wird bei einem shutdown automatisch in fhem.state gespeichert, es ist kein save notwendig.
          Der Einsatzzweck sind Skripte, um das notify temporär zu deaktivieren.
          Das gleichzeitige Verwenden des disable Attributes wird nicht empfohlen.
        • active
          Aktiviert das entsprechende Gerät, siehe inactive.

        Get
          N/A

        Attribute
        • addStateEvent
        • disable
        • disabledForIntervals
        • regexp1WontReactivate
          Wenn ein Watchdog aktiv ist, wird ein zweites Ereignis das auf regexp1 passt normalerweise den Timer zurücksetzen. Dieses Attribut wird das verhindern.
        • execOnActivate Falls gesetzt, wird der Wert des Attributes als FHEM Befehl ausgeführt, wenn ein regexp1 Ereignis den Watchdog aktiviert nachdem er ausgelöst wurde.
        • autoRestart Wenn dieses Attribut gesetzt ist, wird der Watchdog nach dem er getriggert wurde, automatisch wieder in den Zustand defined gesetzt (Wartet also wieder auf Aktivierung durch regexp1)

      weblink

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

      weekprofile

        Beschreibung im Wiki: http://www.fhemwiki.de/wiki/Weekprofile Mit dem Modul 'weekprofile' können mehrere Wochenprofile verwaltet und an unterschiedliche Geräte übertragen werden. Aktuell wird folgende Hardware unterstützt:
      • alle MAX Thermostate
      • andere weekprofile Module
      • Homatic (Kanal _Clima bzw. _Climate)
      • Im Standardfall wird das Modul mit einem Geräte = 'Master-Gerät' assoziiert, um das Wochenprofil vom Gerät grafisch bearbeiten zu können und andere Profile auf das Gerät zu übertragen. Wird kein 'Master-Gerät' angegeben, wird erstmalig ein Default-Profil angelegt.
        Ein weiterer Anwendungsfall ist die Verwendung von Rubriken\Kategorien 'Topics'. Hier sollte kein 'Master-Gerät' angegeben werden. Dieses Feature muss erst über das Attribut 'useTopics' aktiviert werden. Topics sind z.B. Winter, Sommer, Urlaub, Party, etc. Innerhalb einer Topic kann es mehrere Wochenprofile geben. Sinnvollerweise sollten es soviele wie Thermostate sein. Über ein Userattribut 'weekprofile' im Thermostat wird ein Wochenprofile ohne Topicname angegeben. Mittels 'restore_topic' wird dann das angebene Wochenprofil der Topic an das Thermostat übertragen. Somit kann man einfach zwischen den Topics wechseln und die Thermostate bekommen das passende Wochenprofil.

        Achtung: Das Übertragen von Wochenprofilen erfordet eine Menge an Credits. Dies wird vom Modul nicht berücksichtigt. So kann es sein, dass nach dem Setzen\Aktualisieren eines Profils das Profil im Modul nicht mit dem Profil im Gerät übereinstimmt solange das komplette Profil übertragen wurde.
        Beim Homatic HM-TC-IT-WM-W-EU wird nur das 1. Profil (R_P1_...) genommen!
        Für das Module wird libjson-perl benötigt

        Events:
        Aktuell werden folgende Events erzeugt:
      • PROFILE_TRANSFERED: wenn ein Profil oder Teile davon zu einem Gerät gesended wurden
      • PROFILES_SAVED: wenn Profile in die Konfigurationsdatei gespeichert wurden (auch wenn es keine Änderung gab!)
      • Define
          define <name> weekprofile [master device]

          Aktiviert das Modul. Bei der Angabe eines 'Master-Gerätes' wird das Profil 'master' entprechende dem Wochenrofil vom Gerät angelegt. Sonderbehandlung des 'master' Profils:
        • Kann nicht gelöscht werden
        • Bei Ändern\Setzen des Proils wird es automatisch an das 'Master-Geräte' gesendet
        • Es wird sind mit abgespeicht

        • Wird kein 'Master-Geräte' angegeben, wird ein 'default' Profil angelegt.
        Set
        • profile_data
          set <name> profile_data <profilname> <json data>
          Es wird das Profil 'profilname' geändert. Die Profildaten müssen im json-Format übergeben werden.
        • send_to_device
          set <name> send_to_device <profilname> [devices]
          Das Profil wird an ein oder mehrere Geräte übertragen. Wird kein Gerät angegeben, wird das 'Master-Gerät' verwendet. 'Devices' ist eine kommagetrennte Auflistung von Geräten
        • copy_profile
          set <name> copy_profile <quelle> <ziel>
          Kopiert das Profil 'quelle' auf 'ziel'. 'ziel' wird überschrieben oder neu angelegt.
        • remove_profile
          set <name> remove_profile <profilname>
          Das Profil 'profilname' wird gelöscht.
        • reference_profile
          set <name> reference_profile <quelle> <ziel>
          Referenziert das Profil 'ziel'auf 'quelle'. 'ziel' wird überschrieben oder neu angelegt.
        • restore_topic
          set <name> restore_topic <topic>
          Alle Wochenpläne in der Topic werden zu den entsprechenden Geräten übertragen. Dazu muss im Gerät ein Userattribut 'weekprofile' mit dem Namen des Wochenplans ohne Topic gesetzt sein.
        Get
        • profile_data
          get <name> profile_data <profilname>
          Liefert die Profildaten von 'profilname' im json-Format
        • profile_names
          set <name> profile_names [topic_name]
          Liefert alle Profilnamen getrennt durch ',' einer Topic 'topic_name' Ist 'topic_name' gleich '*' werden alle Profilnamen zurück gegeben.
        • profile_references [name]
          Liefert eine Liste von Referenzen der Form
          ref_topic:ref_profile>dest_topic:dest_profile Ist name 'topicname:profilename' wird '0' der Name der Referenz zurück gegeben.

        Readings

        • active_topic
          Aktive\zuletzt gesetzter Topicname.
        • profile_count
          Anzahl aller Profile mit Referenzen.
        Attribute
        • widgetWeekdays
          Liste von Wochentagen getrennt durch ',' welche im Widget angzeigt werden. Beginnend bei Montag. z.B. attr name widgetWeekdays Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag
        • widgetEditDaysInRow
          Anzahl in der in einer Reihe dargestellten Tage während der Bearbeitung. Default 2.
        • widgetEditOnNewPage
          Wenn gesetzt ('1'), dann wird die Bearbeitung auf einer separaten\neuen Webseite gestartet.
        • configFile
          Pfad und Dateiname wo die Profile gespeichert werden sollen. Default: ./log/weekprofile-.cfg
        • icon
          Änders des Icons zum Bearbeiten Default: edit_settings
        • useTopics
          Verwendung von Topic aktivieren.
        • tempON
          Temperature für 'on'. z.B. 30
        • tempOFF
          Temperature für 'off'. z.B. 4

      withings

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

      xxLG7000

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

      yowsup

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

      Perl specials

      Wenn Sie einige Aufgaben automatisieren wollen, dann sollten Sie die Befehle at oder notify nutzen. Für komplexere Aufgaben sollten Sie lieber ein SHELLl-Skiipt oder einen PERL "oneliner" als das at/notify argument anwenden. Dieser Abschnitt gibt Ihnen einige Tipps zur Anwendung der PERL-oneliner.

    • Um PERL-"oneliner" zu testen, geben Sie diese am "telnet" Prompt (oder in der FHEMWEB Text-Eingabezeile) eingeschlossen von geschweiften Klammern {} in einer Zeile ein. Die letzte Beispielzeile schreibt nur etwas in die Logdatei, während das Ergebnis der anderen Zeilen direkt auf der Webseite sichtbar ist.
        Beispiele:

        { "Hello" }
        { 1+3*4 }
        { `ls /etc` }
        { Log 1, "Hello" }


    • PERL Ausdrücke werden durch ein Semikolon (;) getrennt. In FHEM "oneliners" müssen sie durch ein weiteres Semikolon (;;) "escaped" (maskiert) werden
              Beispiel:
        { my $a = 1+1;; Log 1, "Hello $a" }

    • Um FHEM-Kommandos in den PERL-Ausdrücken zu verwenden, benutzen Sie bitte die Funktion fhem(), mit einem Textargument. Dieser Text wird als FHEM-Kommando interpretiert.

              Beispiel

        { fhem "set light on" }
        define n1 notify piri:on { fhem "set light on" }

         

      Bemerkung: Wenn diese Funktion einen wert zurück liefert, wird dieser in der allgemeinen Logdatei gespeichert.. Benutzen sie "1" als zweites Argument um dieses speichern zu verhindern. Sinnvoll ist dieses Argument bei der Abfrage von Werten mittels "get...".

    • Notify kann auch dazu verwendet werden, um Macros manuell auszuführen. Verwenden Sie den trigger-Befehl um das Makro zu starten:
        define MyMacro notify MyMacro { Log 1, "Hello"}
        trigger MyMacro
        define MacroWithArg notify MyMacro { Log 1, "Hello %"}
        trigger MyMacro MyArg

    • Um die Verwendung von Datum und Zeitangaben zu vereinfachen, wurden die Variablen $sec, $min, $hour, $mday, $month, $year, $wday, $yday, $isdst für die Verwendung in PERL-"oneliners" eingeführt (s. unter perldoc -f localtime). Ausnahmen: $month hat einen Wertebereich von 1 to 12 und $year ist korrigiert von 1900. Weiterhin enthät $hms die Zeit in dem HH:MM:SS Format.
      Die Variabe $we hat den Wert 1 wenn der abgefragte Tag auf ein Wochenende fällt (Z.B. $wday == 0 [Sonntag] oder $wday == 6 [Samstag]), und 0 für die anderen Wochentage. Wenn man das global holida2we Attribut setzt, dann ist $we ebenfalls 1 bei Urlaubstagen.
        define n2 notify piri:on { if($hour > 18 || $hour < 5) { fhem "set light on" } }
        define roll_en *07:45:00 { fhem "trigger SwitchAllRoll on" if(!$we) }
        define roll_en *08:30:00 { fhem "trigger SwitchAllRoll on" if($we) }

    • Die follgendenHilsfunktionen sind in der Datei 99_Util.pm definiert (wird wie jede mit 99 beginnende Datei automatisch geladen):
      • min(a,b), max(a,b)
      • time_str2num("YYYY-MM-DD HH:MM:SS") gibt einen numerischen Wert zurück, der die Berechnung von Zeitdifferenzen vereinfacht
      • abstime2rel("HH:MM:SS") wandelt absolute in relative Zeitangaben um
    • Um auf die Gerätestati/Attribute zuzugreifen benutzen Sie bitte die folgenden Funktionen:
      • Value(<devicename>)
        gibt den Status eines Gerätes zurück (entsprechend dem Ausdruck in Klammern, den Sie beim List-Befehl sehen).

      • OldValue(<devicename>)
      • OldTimestamp(<devicename>)
        gibt den vorherigen Wert/Zeitstempel des Gerätes zurück.

      • ReadingsVal(<devicename>,<reading>,<defaultvalue>)
        Gibt den Inhalt der "readings" zurück (den Inhalt der in dem "Readings"-Abschnitt von "list device" angezeigt wird)

      • ReadingsNum(<devicename>,<reading>,<defaultvalue>)
        Wie ReadingsVal, löscht aber alles, was kein Zahl ist, um den Wert bei Berechnungen verwenden zu können.

      • AttrVal(<devicename>,<attribute>,<defaultvalue>)
        Gibt die gesetzteb Attribute des Gerätes zurück

        { Value("wz") }
        { OldValue("wz") }
        { time_str2num(OldTimestamp("wz")) }
        { ReadingsVal("wz", "measured-temp", "20")+0 }
        { ReadingsTimestamp("wz", "measured-temp", 0)}
        { AttrVal("wz", "room", "none") }

      • InternalVal(<devicename>,<reading>,<defaultvalue>)
        Gibt den Inhalt der "internal" zurück (den Inhalt der in dem "Internals"-Abschnitt von "list device" angezeigt wird)

    • Wenn Sie das 99_SUNRISE_EL.pm Modul benutzen, haben Sie zugriff auf folgende Funktionen:
        sunset($offset, $min, $max)
        sunrise($offset, $min, $max)
        isday()
      Der Wert von "offset" wird in Sekunden angegeben und das Format für min/max ist "HH:MM" oderr "HH:MM:SS". isday gibt 1 zurück, wenn die Sonne sichtbar ist und ansonsten den Wert 0.


    • gnuplot file syntax

      Die .gplot Dateien werden ebenso von den FHEMWEB/SVG Modulen falls das plotmode-Attribut auf SVG gesetzt ist. In diesem Fall wird nur eine geringere Anzahl der .gnuplot Attribute benutzt, und einige Linien haben eine besondere Bedeutung: Die Unterschiede werden in diesem Kapitel erklärt. Lesen Sie bitte auch diesen FHEM Wiki Eintrag zur Erstellung von Logdateien.
      Im folgenden ist eine minimale .gplot Definition (gültig nur bei Plotmode SVG):
        set terminal size <SIZE>
        #FileLog 4:::
        plot title 'Temperature' with lines
      
      Die .gnuplot Datei besteht aus 3 Teilen:
      • set Befehle
        Folgende "sets" werden erkannt:
        • terminal, nur die Größenparameter.
          Dieser ist in der Regel auf <SIZE> gesetzt, welcher ersetzt wird durch das plotsize Attribut von FHEMWEB oder einer Weblink-Instanz.
        • title
          Normalerweise gesetzt auf <TL> welcher durch das Weblink title-Attribut, oder durch <Lx>, welches wiederum vom Weblink label Attribut ersetzt wird.
        • ylabel,y2label
          Linke und rechte vertikale Achsenbeschriftungen. Are also subject to label replacement.
        • yrange,y2range
          Legen den Wertebereich der linken und rechten y-Achse fest. Beispiele:
            set yrange [-0.1:1.1]
            set y2range [0:]
        • ytics,y2tics
          Beschriftung für die Werte der rechten/linken y-Achse. Beispiele:
            set ytics ("on" 0, "off" 1)
            set y2tics

      • #FileLog Einträge
        Jede Line des Plots muss eine dazugehörige #FileLog Zeile haben. Zur Syntax lesen Sie bitte den Abschnitt "column_spec paragraph" von der Filelog get Beschreibung. Beachten sie bitte, das bei SVG-Plots die erste Spalte der Datei unbedingt im FHEM-Zeitstempelformat (YYYY-MM-DD_HH:MM:SS) formatiert sein muss

      • Plot Einträge
        bestehen immer aus einem Plotbefehl und aus durch Kommata getrenne Argumentblöcke. Jeder Argumentblock repräsentiert eine darzustellende Linie und hat seine eigenen Paramter. Folgende Parameter werden are anerkannt:
        • axes x1y1 / x1y2
          weist das Programm an die aktuelle Zeile einer der beiden Achsen (links oder rechts) zuzuweisen. 
        • title
          Beschriftung der Linie. Wenn man auf diesen Titel klickt, dann ändert ein kleines Javascript-Programm den Titel auf die min/max und last-Werte des Plots, Weiterhin erlaubt das Programm diese Linie zu kopieren oder eine bereits kopierte Linie einzufügen (die existierende Skalierung des Plots wird dabei nicht verändert, nur die eingefügte Linie wird skaliert/angepasst. Andere Linien des Plots werden zeitweise nicht angezeigt.
        • with <linetype>
          spezifiziert die Art der Linie. Folgende Linienarten können verwendet werden: points, steps, fsteps, histeps and lines. Nicht bekannte Linienarten werden als Typ "lines" dargestellt. SVG Spezial: cubic und quadratic werden zu den SVG path Typen C und Q gewandelt.
        • ls <linestyle>
          Der Linienstil stellt die erste Linie als l0 dar,  die zweite Linie als l1 und so weiter. Definiert ist dies in der svg_style.css Datei. Darin sind zwei Sets definiert: l0-l8 and l0fill-l6fill. Das zweite Set muss aber explizit angegeben werden. Wenn der Name des Linienstils das Wort "fill" enthält, dann haben Plots des Linientyps "lines" ein zusätzliches Start- und Endsegment für eine korrekte Darstellung.
          Bitte lesen sie die SVG Spezifikationen, um Details über diese css-Datei zu erfahren. Notiz: Wenn Sie dieses Attribut einsetzen möchten, müssen Sie es für alle Linien (Attributblocks) im Plotbefehl spezifizieren.
        • lw <linewidth>
          Setzt die Linienbreite der Linie. Dieses Attribut ist veraltet. Das entprechende Feature der css-Datei/(Attribut ls) muss verwendet werden.