fhem.pl Referenz



Zum Anfang

Alles 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   deletereading   displayattr   fhemdebug   fheminfo   get   help   HMtemplate   IF   include   inform   JsonList2   KNX_scan   list   modify   MSG   notice   quit   reload   rename   rereadcfg   restore   save   search   set   setdefaultattr   setreading   setstate   setuuid   show   shutdown   sleep   template   trigger   update   uptime   usb   version   XmlList  

    Gerätemodule
      global
      AirUnit   alexa   ALL4027   allergy   AMADCommBridge   AMADDevice   AndroidDB   AndroidDBHost   AptToDate   Aqicn   ArduCounter   Arlo   Aurora   AutomowerConnect   AutoShuttersControl   BDKM   BEOK   BlinkCamera   BOSEST   BOTVAC   BRAVIA   Broadlink   BS   Calendar   CALVIEW   CanOverEthernet   CDCOpenData   CM11   CO20   COE_Node   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   DENON_AVR   DENON_AVR_ZONE   DFPlayerMini   DLNARenderer   DoorBird   Dooya   DUOFERN   DUOFERNSTICK   DWD_OpenData   EC3000   echodevice   ECMD   ECMDDevice   EGPM   EGPM2LAN   EleroDrive   EleroStick   EleroSwitch   ElsnerWS   EM   EMEM   EMGZ   EMT7110   EMWZ   ENECSYSGW   ENECSYSINV   ENIGMA2   EnOcean   EQ3BT   ESA2000   ESCVP21net   EseraAnalogInOut   EseraCount   EseraDigitalInOut   EseraDimmer   EseraIButton   EseraMulti   EseraOneWire   EseraShutter   EseraTemp   ESPEasy   ESPEInk   fakeRoku   FBAHA   FBAHAHTTP   FBDECT   FHT   FHT8V   FHZ   FLAMINGO   FRAMEBUFFER   FReplacer   FRITZBOX   FRM   FRM_AD   FRM_I2C   FRM_IN   FRM_OUT   FRM_PWM   FRM_RGB   FRM_ROTENC   FRM_SERVO   FRM_STEPPER   FS10   FS20   FTUISRV   FULLY   GAEBUS   GardenaSmartBridge   GardenaSmartDevice   gassistant   GFPROBT   GHoma   GOOGLECAST   harmony   HEATRONIC   HEOSGroup   HEOSMaster   HEOSPlayer   Hideki   HMCCU   HMCCUCHN   HMCCUDEV   HMCCURPCPROC   HMLAN   HMS   HMUARTLGW   holiday   HOMBOT   HP1000   HProtocolGateway   HProtocolTank   HTTPAPI   HTTPMOD   HTTPSRV   HUEBridge   HUEDevice   HusqvarnaAutomower   HVAC_DaikinAC   HXB   HXBDevice   HYDRAWISE   Hyperion   I2C_ADS1x1x   I2C_BH1750   I2C_BME280   I2C_BMP180   I2C_DS1307   I2C_EEPROM   I2C_EMC1001   I2C_HDC1008   I2C_K30   I2C_LCD   I2C_LM75A   I2C_MCP23008   I2C_MCP23017   I2C_MCP342x   I2C_MMA845X   I2C_PCA9532   I2C_PCA9685   I2C_PCF8574   I2C_SHT21   I2C_SHT3x   I2C_TSL2561   Iluminize   IOhomecontrol   IOhomecontrolDevice   IPCAM   IPWE   IT   Itach_IR   Itach_IRDevice   Jabber   JawboneUp   JeeLink   JSONMETER   JsonMod   KeyValueProtocol   Klafs   km200   KM273   KNX   KNXIO   KNXTUL   KODI   KOPP_FC   KOSTALPIKO   KS300   LaCrosse   LaCrosseGateway   LaMetric2   Level   LGTV_IP12   LGTV_WebOS   LIGHTIFY   LIRC   livetracking   LuftdatenInfo   LUXTRONIK2   M232   M232Counter   M232Voltage   mailcheck   MAX   MAX_Temperature   MAXLAN   MEDIAPORTAL   MieleAtHome   MilightBridge   MilightDevice   MOBILEALERTS   MOBILEALERTSGW   Modbus   ModbusAttr   ModbusElsnerWS   ModbusSET   ModbusTrovis5576   MPD   MQTT   MQTT2_CLIENT   MQTT2_DEVICE   MQTT2_SERVER   MQTT_DEVICE   MQTT_GENERIC_BRIDGE   MSGFile   MSGMail   MYSENSORS   MYSENSORS_DEVICE   N4HBUS   N4HMODULE   Nello   netatmo   NetIO230B   Netzer   NetzerI2C   Netzfrequenz   Neuron   NeuronPin   NEUTRINO   Nextion   Nmap   NotifyAndroidTV   npmjs   NUKIBridge   NUKIDevice   NUT   OBIS   OctoPrint   OilFox   ONKYO_AVR   ONKYO_AVR_ZONE   OPENWEATHER   OREGON   OW2S0SMSGUARD   OWAD   OWCOUNT   OWDevice   OWID   OWLCD   OWMULTI   OWServer   OWSWITCH   OWTHERM   OWVAR   OWX   OWX_ASYNC   OWX_CCC   OWX_FRM   OWX_SER   OWX_TCP   panStamp   PCA301   PHC   PHILIPS_AUDIO   PHTV   PIFACE   pilight   pilight_contact   pilight_ctrl   pilight_dimmer   pilight_raw   pilight_smoke   pilight_switch   pilight_temp   ping   PIONEERAVR   PIONEERAVRZONE   PiXtendV2   plex   Plugwise   POKEYS   PrecipitationSensor   PROPLANTA   Pushbullet   PushNotifier   Pushover   Pushsafer   PW_Circle   PW_Scan   PW_Sense   PW_Switch   PWM   PWMR   PylonLowVoltage   QRCode   Revolt   RFXCOM   RFXMETER   RFXX10REC   RHASSPY   Robonect   RPI_1Wire   RPI_GPIO   RPII2C   rssFeed   S7   S7_ARead   S7_AWrite   S7_Client   S7_DRead   S7_DWrite   S7_S5Client   S7_S7Client   SamsungAV   Schellenberg   SchellenbergHandle   SCIVT   SD_BELL   SD_GT   SD_RSL   SD_UT   SD_WS   SD_WS07   SD_WS09   SD_WS_Maverick   serviced   ShareMaster   Shares   SHC   SHCdev   Shelly   ShellyMonitor   Signalbot   SIGNALduino   SIGNALduino_un   siri   SIS_PMS   SISPM   SMAEM   SMAEVCharger   SMAInverter   SmartMeterP1   SMARTMON   SmartPi   SMASTP   SML   Snapcast   SolarEdgeAPI   SolarForecast   SOMFY   SONOS   SONOSPLAYER   speedtest   Spotify   SSCal   SSCam   SSCamSTRM   SSChatBot   SSFile   STACKABLE   STACKABLE_CC   STV   SVDRP   SWAP   SWAP_0000002200000003   SWAP_0000002200000008   SYSMON   SYSSTAT   systemd_watchdog   TA_CMI_JSON   tahoma   TBot_List   TCM   TechemHKV   TechemWZ   TEK603   TelegramBot   TellStick   TeslaPowerwall2AC   THINKINGCLEANER   THZ   Timer   todoist   TPLinkHS110   tradfri   TRAFFIC   TRX   TRX_ELSE   TRX_LIGHT   TRX_SECURITY   TRX_WEATHER   TUL   UbiquitiMP   UbiquitiOut   UBUS_CALL   UBUS_CLIENT   Unifi   UnifiClient   UnifiProtect   UnifiSwitch   UnifiVideo   UNIRoll   USBWX   USF1000   UWZ   Vallox   VBUSDEV   VBUSIF   VCLIENT   VCONTROL   Verkehrsinfo   VIERA   vitoconnect   VolumeLink   Weather   WifiLight   WINCONNECT   withings   WMBUS   WS2000   WS300   WS3600   WS980   Wunderground   WWO   X10   XiaomiBTLESens   XiaomiDevice   xs1Bridge   xs1Dev   YAMAHA_AVR   YAMAHA_BD   YAMAHA_MC   YAMAHA_NP   yowsup   ZM_Monitor   ZoneMinder   ZWave   ZWCUL   ZWDongle  

    Hilfs (Erweiterungs-) Module
      Alarm   alarmclock   allowed   archetype   Astro   at   autocreate   average   Babble   cloneDummy   configDB   CustomReadings   Dashboard   DbLog   DbRep   dewpoint   DOIF   DOIFtools   DSBMobile   dummy   ElectricityCalculator   eventTypes   expandJSON   FB_CALLLIST   FB_CALLMONITOR   feels_like   FHEM2FHEM   FHEMAPP   FhemTestUtils   FHEMWEB   FileLog   FLOORPLAN   freezemon   GasCalculator   GEOFANCY   GoogleAuth   GSI   GUEST   HCS   Heating_Control   HMinfo   HOMEMODE   HourCounter   InfluxDBLogger   InfoPanel   inotify   Installer   KM271   LightScene   Log2Syslog   logProxy   MaxScanner   MediaList   monitoring   msgConfig   msgDialog   notify   PachLog   PET   PID20   PostMe   powerMap   PRESENCE   PRESENCE2   rain   RandomTimer   readingsChange   readingsGroup   readingsHistory   readingsProxy   readingsWatcher   remotecontrol   RESIDENTS   ROLLO   ROOMMATE   RSS   sequence   SingleFileLog   SIP   SoftliqCloud   statistics   structure   SUNRISE_EL   SVG   Talk2Fhem   telnet   Text2Speech   THRESHOLD   TrashCal   Twilight   Utils   watchdog   Watches   WaterCalculator   weblink   WeekdayTimer   weekprofile   WOL   WUup   YAAHM  

    PERL Besonderheiten
    gnuplot file Syntax

Einleitung

[EN DE]

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

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

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

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

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

      perl fhem.pl fhem.cfg
     

    Nachstehend eine Minimal-Konfiguration Datei:

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

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

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

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

    Falls FHEM als root gestartet wurde, und ein OS-Benutzer fhem existiert, dann wechselt FHEM nach dem start zu diesem Benutzer (via setuid).

    Falls FHEM mit der -d Koommandozeilenoption gestartet wurde (perl fhem.pl -d fhem.cfg), dann wird verbose auf 5 gesetzt und die Logs werden auf STDOUT geschrieben.

    Die Umgebungsvariable FHEM_GLOBALATTR wird ausgewertet: sie enthält Leerzeichengetrennte Name=Wert Paare, wobei Name ein global Attribut ist. So gesetzte Werte überschreiben die Werte aus der Konfigurationsdatei.

FHEM Befehlstypen

[EN DE]

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

    Achtung: unterschiedlicher Befehlsarten (FHEM/Shell/perl) in einer Kommandozeile sind nicht unterstützt, auch wenn es in manchen Fällen funktioniert.

Geräte-Spezifikation (devspec)

[EN DE]
    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. Groß-/Kleinschreibung wird durch die Verwendung von ~ oder !~ ignoriert.
    • Falls die Spezifikation von :FILTER=NAME=WERT gefolgt wird, dann wird die zuvor gefundene Liste durch diesen neuen Ausdruck gefiltert.
    Beispiele:
      set lamp1 on
      set lamp1,lamp2,lamp3 on
      set lamp.* on
      set room=kitchen off
      set room=kitchen:FILTER=STATE=on off
      set room=kitchen:FILTER=STATE!=off off
      list disabled=
      list room~office
      list TYPE=FS20 STATE
      list i:TYPE=FS20 STATE
    Bemerkungen:
    • die Spezifikation kann keine Leerzeichen enthalten.
    • falls ein Gerätename exakt dem Spezifikation entspricht, dann werden keine reguläre Ausdrücke oder Filter ausgewertet.
    • zuerst wird die durch Komma getrennte Spezifikation abgearbeitet, dann folgen die regulären Ausdrücke und die Filter
    • die Befehlszeile kann die selbe Gerätebezeichnung mehrfach enthalten z.B.: "set lamp3,lamp3 on". Lamp3 wird hier zwei Mal eingeschalten.
    • um Strukturen mit komplexeren Anforderungen zu realisieren lesen Sie bitte den Abschnitt zu structure.

Attribute

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

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

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

Sie können den Befehl

attr global userattr <attributelist>

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

attr <devicespec> userattr <attributelist>,

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

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

Gerätespezifische Attribute

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

Globale Attribute für alle Geräte

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

  • comment
    Fügt einen beliebigen Kommentar hinzu.

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

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

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

  • overrideNotifydev
    falls gesetzt (das Argument ist ein devspec), dann verwendet die Optimierung der Benachrichtigungen diesen Wert, statt das vom Modul gesetzte Internal NOTIFYDEV. Man sollte es nur dann setzen, falls man es besser weiss, als der Modul Maintainer. Damit es setzbar ist, muss vorher das global oder Geräte spezifische userattr Attribut ergänzt werden.

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

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

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

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

readingFnAttribute

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

  • stateFormat
    Ändert den Gerätestatus, dies ist z.Bsp. in der Ausgabe des list Kommandos zu sehen, oder in der Raumübersicht von FHEMWEB. Falls nicht gesetzt, dann wird das state Reading übernommen. Sonst werden alle Wörter im Wert des Attributes durch das entsprechende Reading des Gerätes ersetzt (soweit vorhanden). Falls der Wert in {} eingeschlossen ist, dann wird es als Perl Ausdruck ausgewertet. Die Auswertung passiert bei jeder Änderung eines Readings.
    Die hier beschriebene "set magic" wird auch angewendet.
    Hinweis: Manche Module aktualisieren STATE ganz oder teilweise direkt. In diesen Fällen kann es zu abweichenden Anzeigen kommen.
  • 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. Statt Reading kann auch ein regulärer Ausdruck verwendet werden. 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 gelisteten Readings nicht aktualisiert (oder angelegt) 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. Falls event-on-change-reading auch spezifiziert ist, dann werden sie mit ODER kombiniert, d.h. wenn einer der beiden Bedingungen wahr ist.
  • oldreadings
    Dieses Attribut enthält eine durch Kommata getrennte Liste von Readings. regex sind erlaubt. Für jedes Reading aus der Liste speichert FHEM intern den vorherigen Wert wenn sich das Reading ändert. Zum Zugriff auf die Werte gibt es die OldReadings.* Routinen. Falls der vorherige Wert immer, d.h. auch wenn es sich nicht ändert, gespeichert werden soll, dann muss der letzte Werte der Komma getrennten Liste oldreadingsAlways sein.
  • 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.

  • disable
    Deaktiviert das entsprechende Gerät.
    Kann mit folgendem Befehl einfach umgeschaltet werden:
    attr <device> disable toggle

  • 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. Die Angabe des Wochentags für den "von" Wert impliziert _nicht_ den gleichen Tag für den "bis" Wert, z.Bsp. deaktiviert 1@00-24 die Asführung von Montag bis Ende der Woche, aber nicht Sonntag (da alle Zeitangaben am Montag vor 1@00 liegen). Um einen Intervall um Mitternacht zu spezifizieren, muss man zwei einzelne angeben, z.Bsp.:
      23:00-24:00 00:00-01:00
    Falls Teile des Wertes in {} eingeschlossen sind, dann werden sie als ein Perl Ausdruck ausgewertet:
      {sunset_abs()}-24 {sunrise_abs()}-08



attr

[EN DE]
    attr [-a|-r|-silent] <devspec> <attrname> [<value>]

    Dieser Befehl setzt ein Attribut für ein Gerät welches mit define definiert wurde. value ist optional, und ist 1 falls nicht spezifiziert. Sie können auch Ihre eigenen Attribute definieren, um sie in anderen Applikationen anzuwenden. Geben Sie "<attr <name> ?" ein, um eine Liste verfügbarer Attribute anzuzeigen. Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.
    Gerätespezifische Attribute sind in der Beschreibung zum jeweiligen Gerät aufgeführt. Nach der Durchführung das globale Ereignis "ATTR" wird generiert.
    Falls die Option -a spezifiziert ist, dann wird value zum aktuellen Wert hinzugefügt. Achtung: falls value nicht mit einem Komma (,) anfängt, dann wird es mit einem Leerzeichen angehängt.
    Mit der -r Option kann man Teile eines Attributes wieder entfernen.
    Mit der silent Option wird der Befehl nicht in die "save -?" Liste eingetragen.

    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
      attr -a TYPE=SVG room ,SvgRoom
      attr -r TYPE=SVG room ,SvgRoom

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

cancel

[EN DE]
    cancel [<id> [quiet]]

    Listet benannte sleeps oder entfernt ein benanntes sleep.

define

[EN DE]
    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.

    • -silent
      Der Befehl wird nicht in die "save -?" Liste eingetragen.

defmod

[EN DE]
    defmod [option] <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.
    Für die Optionen siehe die define Dokumentation.

delete

[EN DE]
    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

[EN DE]
    deleteattr [-silent] <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>.
    <attrname> ist ein Regexp, ergänzt mit ^ und $, damit eine Menge von Attributen mit einem Befehl gelöscht werden kann.
    Nach der Durchführung das globale Ereignis "DELETEATTR" wird generiert.
    Beispiele:
      deleteattr lamp follow-on-for-timer
      deleteattr lamp

deletereading

[EN DE]
    deletereading <devspec> <readingname> [<older-than-seconds>]

    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. Falls <older-than-seconds> spezifiziert ist, werden nur readings entfernt, die aelter als dieser Zahl (in Sekunden) sind.
    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

[EN DE]
    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

[EN DE]
    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

[EN DE]
    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

[EN DE]
    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

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

    Ermöglicht Event-Verfolgung über das telnet Interface. Es ist das telnet Equivalent des FHEMWEB Event-Monitors, es kann aber auch von weiteren Programmen zur Benachrichtigung verwendet werden. Optionen:
    • on
      aktiviert die Benachrichtigung.
    • onWithState
      zeigt auch das zusätzliche state Event
    • off
      deaktiviert die Benachrichtigung (sowohl Events wie auch Logs, s.u.)
    • raw
      zeigt (nur) die raw Events der physikalischen Module
    • timer
      stellt der Daten ein Zeitstempel vor
    • log
      zeigt die vom FHEM Log Interface protokollierten Daten
    • status
      zeigt den aktuellen Status

list

[EN DE]
    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, dann wird dieses Wert (Internal, Reading oder Attribut) ausgegeben, soweit es vorhanden ist. Die Werte können mit einem Präfix eingeschränkt werden: i: für Internals, r: für Readings und a: für Attribute.

    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

[EN DE]
    modify [-silent] <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.
    Nach modify wird das global MODIFIED Event erzeugt.
    Nach der Durchführung das globale Ereignis "MODIFIED" wird generiert.
    Mit der silent Option wird der Befehl nicht in die "save -?" Liste eingetragen.

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

quit

[EN DE]
    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

[EN DE]
    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

[EN DE]
    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

[EN DE]
    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

[EN DE]
    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.
    • Vor dem Überschreiben der Dateien wird die alte Version gesichert, siehe restoreDirs für Einzelheiten.

set

[EN DE]
    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 der set und setreading Befehl
    • [device:name] mit dem Wert des Readings, Internals oder Attributes für device, falls sowohl device, als auch Reading, Internal oder Attribut existiert, und nicht leer ist.
      • Man kann einen der Präfixe r:, i: oder a: verwenden, um die Suche einzuschränken, genau wie im devspec.
      • Das Suffix :d extrahiert die erste Zahl.
      • Das Suffix :i extrahiert die erste Zahl als Ganzzahl.
      • Das Suffix :r<n> extrahiert die erste Zahl, und rundet sie auf <n> Dezimalstellen. Falls <n> fehlt, dann wird auf eine Dezimalstelle gerundet.
      • Das Suffix :t liefert den Zeitstempel des Readings
      • Das Suffix :sec liefert Anzahl der Sekunden seit Änderung des Readings.
      Beispiel:
        set Lamp blink [blinkDummy:number] [r:blinkDummy:duration:d]
    • {(perlExpression)} mit dem Ergebnis der perlExpression. $DEV wird dabei mit dem Namen des vom set betroffenen Gerätes ersetzt.
    Diese Ersetzungen sind unter dem Namen "set magic" bekannt.

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


    attrTemplate
    mit diesem Befehl kann man eine Menge an vordefinierten Attributen setzen. Die Einträge befinden sich in Dateien im FHEM/lib/AttrTemplate Verzeichnis. Einträge können modul-spezifisch sein, und möglicherweise erfordern weitere Parameter.

setdefaultattr

[EN DE]
    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

[EN DE]
    setreading <devspec> [YYYY-MM-DD HH:MM:SS] <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.
    Falls keine Zeit spezifiziert wurde, wird die aktuelle Uhrzeit verwendet.
    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

[EN DE]
    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
    Achtung: setstate wird verwendet, um Readings im statefile zu speichern, in diesem Fall wird vor dem Wert ein Zeitstempel geschrieben. Als Seiteneffekt ist es nicht möglich, ein Status, was mit einem Zeitstempel der Form YYYY-MM-DD HH:MM:SS beginnt, korrekt zu speichern.

setuuid

[EN DE]
    setuuid <device> <uuid>

    Systembefehl, um den FUUID internen Wert zu setzen. Ist nicht vom Benutzer zu verwenden.

show

[EN DE]
    show <devspec>

    Zeigt einen temporären Raum mit Geräten aus <devspec>, verfügbar nur über FHEMWEB.
    Siehe den Abschnitt über Geräte-Spezifikation für Details der <devspec>.


    Example:
      show TYPE=CUL_HM

shutdown

[EN DE]

    shutdown [restart] [exitValue]

    Der Befehl fährt FHEM herunter (nach dem Sichern aller Gerätestatus). Er triggert den global:SHUTDOWN-Event. Mit dem optionalen Parameter restart startet FHEM danach neu. Der exitValue ist möglicherweise bei bestimmten Start-Skripten zur korrekten Funktion vonnöten bzw. wichtig.

    Beispiel:
      shutdown
      shutdown restart
      shutdown 1

sleep

[EN DE]
    sleep <sec|timespec|suchmuster> [<id>] [quiet]

    sleep gefolgt von weiteren Befehlen ist vergleichbar mit einem namenlosen at oder notify Kommando, es führt die nachfolgenden Befehle aus, nachdem es die spezifizierte Zeitspanne gewartet hat bzw. ein Event welches dem <suchmuster> entspricht aufgetreten ist. Die verzögerung kann
    • in Sekunden (Millisekunden genau, da man Nachkommastellen spezifizieren kann)
    • als timespec (HH:MM or HH:MM:SS oder {perlfunc})
    • oder als suchmuster (Gerätename oder Gerätename:Event)
    angegeben werden.
    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.

trigger

[EN DE]
    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

global

[EN DE]
    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

    Internals
    • init_errors
      Konfigurations Fehlermeldungen beim FHEM Start und Security Meldungen werden hier gesammelt.


    Attributes
    • altitude
      Höhe in Metern über dem Meeresspiegel, Voreinstellung ist 0.

    • archivedir
    • archivecmd
    • nrarchive
    • archivesort
      archivesort kann auf dem (voreingestellten) Wert alphanum oder timestamp gesetzt werden, und bestimmt die Methode für die Reihenfolgenberechnung der Dateien für nrarchive.

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

    • autosave
      Der Standardwert 1 aktiviert einige Module nach einer Konfigurationsänderung automatisch zu speichern z.B. wenn ein neues Gerät erstellt wurde. Treten beim FHEM Start Konfigurationsfehler auf wird diese Funktion automatisch deaktiviert (0).

    • backupcmd
      Sie können das Update durch Ihre eigenen Befehle/Skripts durchführen indem Sie dieses Attribut setzen. Wenn dieses Attribut gesetzt ist, dann startet es als ein SHELL-Befehl und erstellt eine durch Leerzeichen getrennte Liste von Dateien/Verzeichnissen als ein Argument zum Befehl, z.B.:
        "/etc/fhem.cfg /var/log/fhem/fhem.save /usr/share/fhem/contrib /usr/share/fhem/FHEM /usr/share/fhem/foo /usr/share/fhem/foobar /usr/share/fhem/www"
      Bemerkung: Ihr Befehl/Skript muss die Zeichenkette "backup done" zurückgeben oder eine entsprechende Zeichenkette um Fehlermeldungen auszugeben, damit die Zusammenarbeit mit 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, die Voreinstellung ist 32. Nach erreichen dieser Grenze werden weitere Aufrufe verzögert.

    • 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" ist, dann wird nach jedem update ein komplettes commandref.html generiert. Falls der Wert "modular" ist (voreingestellt seit FHEM 6.1), dann wird die Moduldokumentation erst nach Bedarf waehrend der Laufzeit per JavaScript geladen.

    • dnsHostsFile
      Falls dnsServer gesetzt ist, wird die angegebene Datei nach dem Hostnamen durchsucht. Um die vom System verwendete Datei zu benutzen, ist es unter Linux/Unix/OSX auf /etc/hosts und unter Windows auf C:\windows\system32\drivers\etc\hosts zu setzen. Achtung: es wird nur IPv4 unterstützt.

    • disableFeatures
      Komma separierte Liste von Werten. Z.Zt. werden Folgende erkannt:
      • attrTemplate: um das Laden der AttrTemplates zu vermeiden.
      • securityCheck: um bei fehlenden Benutzer/Passwort bei den aktivierten Netzwerk-Server keine Warnmeldung zu generieren.

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

    • encoding
      Wählt das perl-interne Format, mit dem Strings kodiert sind. Mögliche Werte sind: bytestream (Voreinstellung) und unicode.
      Achtung:
      • der Wert unicode ist experimentell, da nicht alle FHEM-Module mit dieser Variante geprüft wurden.
      • ändern des Wertes bewirkt ein save und ein shutdown restart.

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

    • holiday2we
      Wenn dieses Attribut gesetzt wurde, dann wird die $we Variable als "true" betrachtet, wenn heute entweder Samstag/Sonntag ist, oder der Wert der holiday Variable zu diesem Attribut nicht "none" ist.
      Falls es eine Komma getrennte Liste ist, dann ist es wahr, falls einer der referenzierten Instanzen nicht "none" ist.
      Beispiel:
        attr global holiday2we hessen
      Falls sich einer der Elemente dieser Liste weekEnd nennt, dann wird nicht auf Samstag/Sonntag geprüft. Falls einer der Elemente noWeekEnd ist, und nicht "none" zurückliefert, dann ist $we 0.

    • httpcompress
      das HttpUtils Modul wird von etlichen FHEM modulen verwendet und aktiviert Komprimierung in der Voreinstellung. Falls man httpcompress auf 0 setzt, wird die Komprimierung deaktiviert.

    • ignoreRegexp
      Texte, wo dieses Regexp matcht, werden nicht geloggt. ^ und $ wird zum Regexp hinzugefügt, wie bei notify und FileLog.

    • keyFileName
      FHEM Module speichern Passwörter und IDs in der Datei FHEM/FhemUtils/uniqueID. Um mehrere FHEM-Instanzen im gleichen Verzeichnis starten zu können, kann man dieses Attribut setzen, dessen Wert an FHEM/FhemUtils/ angehängt wird.

    • latitude
      Geographische Breite in Dezimalgrad, Voreinstellung ist 50.112, Frankfurt am Main.

    • longitude
      Geographische Länge in Dezimalgrad, Voreinstellung ist 8.686, Frankfurt am Main.

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

    • maxChangeLog
      FHEM speichert Strukturänderungen, diese Daten kann man mit "save ?" oder mittels Klick auf das rote Fragezeichen in FHEMWEB anzeigen. Per Voreinstellung ist diese Liste auf 10 Einträge begrenzt, mit diesem Attribut kann man diesen Wert ändern.
      Die Länge jeder gespeicherten Zeile ist auf 40 Zeichen begrenzt. Mit der (optionalen, Leerzeichen getrennten) zweiten Parameter kann man diesen Wert ändern.
      Beispiel: attr global myxChangeLog 20 200

    • maxShutdownDelay
      Einige Module benötigen Zeit zum Aufräumen beim shutdown, aber FHEM begrenzt diese Zeit auf 10 Sekunden. Mit diesem Attribut kann man sie anpassen.

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

    • motd
      Nachricht des Tages. Wird im Begrüßungsbildschirm von FHEM angezeigt, oder direkt beim Start einer "telnet" Sitzung, bevor der fhem> Prompt erscheint. Zusätzlich wird der Inhalt des Internals init_errors angezeigt. Die Anzeige der gesamten Meldung wird durch attr global motd none abgeschaltet.

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

    • nofork
      Wenn gesetzt, dann wird FHEM nicht im Hintergrund gestartet.
      Das ausgelieferte systemd Startskript erwartet ein Start im Hintergrund, in diesem Fall darf dieses Attribut nicht gesetzt sein.
      Dieses Attribut wird fuer Windows automatisch gesetzt.

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

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

    • proxy
      IP:PORT des proxy Servers, wird von HttpUtils benutzt.

    • proxyAuth
      Base64 kodiertes Benutzername:Passwort

    • proxyExclude
      Regexp, um bestimmte Hosts nicht via proxy zu kontaktieren.

    • restoreDirs
      update sichert jede Datei vor dem Überschreiben mit der neuen Version aus dem Web. Für diesen Zweck wird zuerst ein restoreDir/update Verzeichnis in der global modpath Verzeichnis angelegt, und danach ein Unterverzeichnis mit dem aktuellen Datum. In diesem Verzeichnis werden vor dem Überschreiben die alten Versionen der Dateien gerettet. Die Voreinstellung ist 3, d.h. die letzten 3 Datums-Verzeichnisse werden aufgehoben, und die älteren entfernt.
      Auch fhem.cfg und fhem.state wird auf diese Weise vor dem ausfüren von save gesichert, diesmal in das restoreDir/save Verzeichnis. Zum restaurieren der alten Dateien kann man das restore Befehl verwenden.
      Falls man den Wert auf 0 setzt, dann ist dieses Feature deaktiviert.

    • 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
    • useInet6
      Die HttpUtils Routinen verwenden IPv6 für die Kommunikation, falls der Server eine IPv6 Adresse hat. Achtung: das Perl-Modul IO::Socket::INET6 wird benötigt.

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

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

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

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

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

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



    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.
    • CANNOT_FORK
      falls in BlockingCall dieses Problem auftritt.

ALL4027

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

AMADCommBridge

[EN DE]
    AMAD - Automagic Android Device

    AMADCommBridge - Kommunikationsbrücke für alle AMAD Geräte
    Dieses Modul ist das Ausgangsmodul zur erfolgreichen Integration von Androidgeräten in FHEM. Es stellt ferner eine Verbindungsebene zwischen AMAD unterstützten Geräten und FHEM zur Verfügung. Alle Kommunikation zwischen AMAD Android und FHEM läuft über diese Schnittstelle.
    Daher erfolgt die Ersteinrichtung eines AMAD Devices auch genau über diese Modulinstanz.

    Damit erfolgreich ein Androidgerät in FHEM eingerichtet werden kann, muss im ersten Schritt ein AMADCommBridge Device angelegt werden.

    Define

      define <name> AMADCommBridge

      Beispiel:

        define AMADBridge AMADCommBridge

      Diese Anweisung erstellt ein neues AMADCommBridge Device Namens AMADBridge.

    Es kann wahlweise die APP Automagic oder Tasker auf dem Android Gerät verwendet werden.
    Für Autoremote:
    Im folgenden muß lediglich das Flowset auf dem Android Gerät installiert werden und der Flow 'First Run Assistent' ausgeführt werden. (einfach den Homebutton drücken)
    Der Assistent geleitet Dich dann durch die Einrichtung Deines AMAD Gerätes und sorgt dafür das am Ende des Installationsprozess das Androidgerät als AMAD Device in FHEM angelegt wird.

    Für Tasker:
    Bei Verwendung von Tasker muss das Tasker-Projekt auf das Android Gerät geladen und in Tasker über die Import Funktion importiert werden.
    Für die Ersteinrichtung auf dem Android Gerät gibt es eine Eingabemaske (Scene), in der die benötigten Parameter (Device Name, Device IP, Bridgeport usw.)
    eingegeben werden können, diese Felder werden (soweit möglich) automatisch befüllt, können aber auch manuell angepasst werden.
    Hierfür den Task "AMAD" ausführen.
    Für schnellen Zugriff kann für diesen Task auch ein Tasker-Shortcut auf dem Homescreen angelegt werden.
    Infos zu den einzelnen Einstellungen erhält man durch einen Touch auf das jeweiligen Textfeld.
    Sind alle Eingaben vollständig, kann das AMAD Device über die Schaltfläche "create Device" erstellt werden.
    Damit Steuerbefehle von FHEM zu Tasker funktionieren wird zusätzlich noch die APP "Autoremote" oder "Tasker Network Event Server (TNES)" benötigt.

    Readings

    • JSON_ERROR - JSON Fehlermeldung welche von Perl gemeldet wird
    • JSON_ERROR_STRING - der String welcher die JSON Fehlermeldung verursacht hat
    • receiveFhemCommand - ist das Attribut fhemControlMode auf trigger gestellt, wird das Reading gesetzt sobald ein FHEM Befehl übersendet wird. Hierauf kann dann ein Notify triggern.
      Wird anstelle von trigger setControl als Wert für fhemControlMode eingestellt, wird das Reading nicht gestzt sondern der set Befehl sofort ausgeführt.
    • receiveVoiceCommand - wird die Sprachsteuerung von AMAD aktiviert (set DEVICE activateVoiceInput) so wird der letzte erkannten Sprachbefehle in dieses Reading geschrieben.
    • receiveVoiceDevice - Name des Devices von wo aus der letzte erkannte Sprachbefehl gesendet wurde
    • state - Status der Bridge, open, closed


    Attribute

    • allowFrom - Regexp der erlaubten IP-Adressen oder Hostnamen. Wenn dieses Attribut gesetzt wurde, werden ausschließlich Verbindungen von diesen Adressen akzeptiert.
      Achtung: falls allowfrom nicht gesetzt ist, und keine gütige allowed Instanz definiert ist, und die Gegenstelle eine nicht lokale Adresse hat, dann wird die Verbindung abgewiesen. Folgende Adressen werden als local betrachtet:
      IPV4: 127/8, 10/8, 192.168/16, 172.16/10, 169.254/16
      IPV6: ::1, fe80/10
    • debugJSON - wenn auf 1 gesetzt, werden JSON Fehlermeldungen in Readings geschrieben. Siehe hierzu JSON_ERROR* unter Readings
    • fhemControlMode - steuert die zulässige Art der Kontrolle von FHEM Devices. Du kannst über die Bridge auf 2 Arten FHEM Devices steuern. Entweder per direktem FHEM Befehl aus einem Flow heraus, oder als Sprachbefehl mittels Sprachsteuerung (set DEVICE activateVoiceInput)
      • trigger - ist der Wert trigger gesetzt, werden alle an die Bridge gesendeten FHEM set Befehle in das Reading receiveFhemCommand geschrieben und können so mittels notify ausgeführt werden. Sprachsteuerung ist möglich, es werden Readings receiveVoice* gesetzt. Auf dem Androidgerät können bei Sprachsteuerung mehrere Sprachbefehle mittels "und" verknüpft/aneinander gereiht werden. Bsp: schalte die Lichtszene Abends an und schalte den Fernsehr an
      • setControl - alle set Befehle welche mittels eines Flows über die Bridge gesendet werden, werden automatisch ausgeführt. Das triggern eines Readings ist nicht nötig. Die Steuerung mittels Sprache verhält sich wie beim Wert trigger
      • thirdPartControl - verhält sich wie trigger, bei der Sprachsteuerung ist jedoch ein anreihen von Sprachbefehlen mittels "und" nicht möglich. Dient der Sprachsteuerung über Module anderer Modulautoren ((z.B. 39_TEERKO.pm)


    Wie man bei Problemen mit dem Assistenten ein Androidgerät auch von Hand anlegen kann, erfährst Du in der Commandref zum AMADDevice Modul.

AMADDevice

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

    Wie genau verwendet man nun AMADDevice?
    • stelle sicher das als aller erstes die AMADCommBridge in FHEM definiert wurde
    • Bei verwendung von Automagic
      • installiere die App "Automagic Premium" aus dem PlayStore.
      • installiere das Flowset 74_AMADDeviceautomagicFlowset$VERSION.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidgerät
      • aktiviere den Installationsassistanten Flow in Automagic. Wenn man nun Automagic in den Hintergrund schickt, z.B. Hometaste drücken, startet der Assistant und legt automatisch ein Device für das Androidgerät an.
    • Bei verwendung von Tasker
      • installiere die App "Tasker" aus dem PlayStore.
      • installiere das Tasker Projekt 74_AMADtaskerset_$VERSION.prj.xml aus dem Ordner $INSTALLFHEM/FHEM/lib/ auf dem Androidgerät
      • Starte den Task "AMAD", es erscheint eine Eingabemaske in der alle Einstellungen vorgenommen werden können, durch einen Klick auf "create Device" wird das Gerät in FHEM erstellt.


    Ein AMADDevice Gerät von Hand anlegen.

    Define

      define <name> AMADDevice <IP-ADRESSE> <AMAD_ID> <REMOTESERVER>

      Beispiel:

        define WandTabletWohnzimmer AMADDevice 192.168.0.23 123456 Automagic

      In diesem Fall wird ein AMADDevice von Hand angelegt. Die AMAD_ID, hier 123456, muß auch exakt so als globale Variable in Automagic/Tasker eingetragen sein.



    Readings
    • airplanemode - Status des Flugmodus
    • androidVersion - aktuell installierte Androidversion
    • automagicState - Statusmeldungen von der Automagic oder Tasker App (Voraussetzung Android >4.3). Ist Android größer 4.3 vorhanden und im Reading steht "wird nicht unterstützt", muß in den Androideinstellungen unter Ton und Benachrichtigungen -> Benachrichtigungszugriff ein Haken für Automagic/Tasker gesetzt werden
    • batteryHealth - Zustand der Battery (1=unbekannt, 2=gut, 3=Überhitzt, 4=tot, 5=Überspannung, 6=unbekannter Fehler, 7=kalt) (nur Automagic)
    • powerPercent - Status der Batterie in %
    • batterytemperature - Temperatur der Batterie (nur Automagic)
    • bluetooth - on/off, Bluetooth Status an oder aus
    • checkActiveTask - Zustand einer zuvor definierten APP. 0=nicht aktiv oder nicht aktiv im Vordergrund, 1=aktiv im Vordergrund, siehe Hinweis unten (nur Automagic)
    • connectedBTdevices - eine Liste der verbundenen Gerät (nur Automagic)
    • connectedBTdevicesMAC - eine Liste der MAC Adressen aller verbundender BT Geräte (nur Automagic)
    • currentMusicAlbum - aktuell abgespieltes Musikalbum des verwendeten Mediaplayers (nur Automagic)
    • currentMusicApp - aktuell verwendeter Mediaplayer (Amazon Music, Google Play Music, Google Play Video, Spotify, YouTube, TuneIn Player, Aldi Life Music) (nur Automagic)
    • currentMusicArtist - aktuell abgespielter Musikinterpret des verwendeten Mediaplayers (nur Automagic)
    • currentMusicIcon - Cover vom aktuell abgespielten Album Noch nicht fertig implementiert (nur Automagic)
    • currentMusicState - Status des aktuellen/zuletzt verwendeten Mediaplayers (nur Automagic)
    • currentMusicTrack - aktuell abgespielter Musiktitel des verwendeten Mediaplayers (nur Automagic)
    • daydream - on/off, Daydream gestartet oder nicht
    • deviceState - Status des Androidgerätes. unknown, online, offline.
    • doNotDisturb - aktueller Status des nicht stören Modus
    • dockingState - undocked/docked Status ob sich das Gerät in einer Dockinstation befindet.
    • flow_SetCommands - active/inactive, Status des SetCommands Flow
    • flow_informations - active/inactive, Status des Informations Flow
    • flowsetVersionAtDevice - aktuell installierte Flowsetversion auf dem Device
    • incomingCallerName - Anrufername des eingehenden Anrufes
    • incomingCallerNumber - Anrufernummer des eingehenden Anrufes
    • incomingWhatsAppMessage - letzte WhatsApp Nachricht
    • incomingTelegramMessage - letzte Telegram Nachricht
    • incomingSmsMessage - letzte SMS Nachricht
    • intentRadioName - zuletzt gesrreamter Intent Radio Name
    • intentRadioState - Status des IntentRadio Players
    • keyguardSet - 0/1 Displaysperre gesetzt 0=nein 1=ja, bedeutet nicht das sie gerade aktiv ist
    • lastSetCommandError - letzte Fehlermeldung vom set Befehl
    • lastSetCommandState - letzter Status vom set Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
    • lastStatusRequestError - letzte Fehlermeldung vom statusRequest Befehl
    • lastStatusRequestState - letzter Status vom statusRequest Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
    • nextAlarmDay - aktiver Alarmtag
    • nextAlarmState - aktueller Status des "Androidinternen" Weckers
    • nextAlarmTime - aktive Alarmzeit
    • nfc - Status des NFC on/off
    • nfcLastTagID - nfc_id des zu letzt gescannten Tag's / Damit die ID korrekt erkannt wird muss im Flow NFC Tag Support der Trigger NFC TagIDs bearbeitet werden und die TagId's Kommasepariert eingetragen werden. (nur Automagic)
    • 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
    • screenBrightnessMode - Adaptive Helligkeit on,off
    • 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 (nur Automagic)
    • volume - Media Lautstärkewert
    • volumeNotification - Benachrichtigungs Lautstärke
    • wiredHeadsetPlugged - 0/1 gibt an ob ein Headset eingesteckt ist oder nicht

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



    Set
    • activateVoiceInput - aktiviert die Spracheingabe
    • bluetooth - on/off, aktiviert/deaktiviert Bluetooth
    • clearNotificationBar - All,Automagic, löscht alle Meldungen oder nur die Automagic/Tasker Meldungen in der Statusleiste
    • closeCall - beendet einen laufenden Anruf
    • currentFlowsetUpdate - fürt ein Flowset/Tasker-Projekt update auf dem Device durch
    • doNotDisturb - schaltet den nicht stören Modus, always immer stören, never niemals stören, alarmClockOnly nur Wecker darf stören, onlyImportant nur wichtige Störungen
    • installFlowSource - installiert einen Flow auf dem Device, das XML File muss unter /tmp/ liegen und die Endung xml haben. Bsp: set TabletWohnzimmer installFlowSource WlanUebwerwachen.xml (nur Automagic)
    • mediaPlay - play Befehl zur Media App
    • mediaStop - stop Befehl zur Media App
    • mediaNext - nächster Titel Befehl zur Media App
    • mediaBack - vorheriger Titel zur Media App
    • nextAlarmTime - setzt die Alarmzeit. gilt aber nur innerhalb der nächsten 24Std.
    • openCall - ruft eine Nummer an und legt optional nach X Sekunden auf / set DEVICE openCall 01736458 10 / ruft die Nummer an und beendet den Anruf nach 10s
    • screenBrightness - setzt die Bildschirmhelligkeit, von 0-255.
    • screenBrightnessMode - schaltet die Adaptive Helligkeit on,off
    • screenMsg - versendet eine Bildschirmnachricht
    • sendintent - sendet einen Intentstring Bsp: set $AMADDeviceDEVICE sendIntent org.smblott.intentradio.PLAY url http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de/play.m3u name Klassikradio, der erste Befehl ist die Aktion und der zweite das Extra. Es können immer zwei Extras mitgegeben werden.
    • sendSMS - sendet eine SMS an eine bestimmte Telefonnummer. Bsp.: sendSMS Dies ist ein Test|555487263
    • startDaydream - startet den Daydream
    • statusRequest - Fordert einen neuen Statusreport beim Device an. Es können nicht von allen Readings per statusRequest die Daten geholt werden. Einige wenige geben nur bei Statusänderung ihren Status wieder.
    • timer - setzt einen Timer innerhalb der als Standard definierten ClockAPP auf dem Device. Es können nur Minuten angegeben werden.
    • ttsMsg - versendet eine Nachricht welche als Sprachnachricht ausgegeben wird (um die Sprache für diese eine Durchsage zu ändern setze vor Deinem eigentlichen Text &en; oder &de;)
    • userFlowState - aktiviert oder deaktiviert einen oder mehrere Flows/Tasker-Profile,set Nexus7Wohnzimmer Badezimmer vorheizen:inactive oder set Nexus7Wohnzimmer Badezimmer vorheizen,Nachtlicht Steven:inactive
    • userFlowRun - führt den angegebenen Flow/Task aus
    • vibrate - lässt das Androidgerät vibrieren
    • volume - setzt die Medialautstärke. Entweder die internen Lautsprecher oder sofern angeschlossen die Bluetoothlautsprecher und per Klinkenstecker angeschlossene Lautsprecher, + oder - vor dem Wert reduziert die aktuelle Lautstärke um den Wert. Der maximale Sliderwert kann über das Attribut setVolMax geregelt werden.
    • volumeUp - erhöht die Lautstärke um den angegeben Wert im entsprechenden Attribut. Ist kein Attribut angegeben wird per default 2 genommen.
    • volumeDown - reduziert die Lautstärke um den angegeben Wert im entsprechenden Attribut. Ist kein Attribut angegeben wird per default 2 genommen.
    • volumeNotification - setzt die Benachrichtigungslautstärke.

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


    Attribute
    • setNotifySndFilePath - setzt den korrekten Systempfad zur Notifydatei (default ist /storage/emulated/0/Notifications/
    • setTtsMsgSpeed - setzt die Sprachgeschwindigkeit bei der Sprachausgabe(Für Automagic: Werte zwischen 0.5 bis 4.0 in 0.5er Schritten, default:1.0)(Für Tasker: Werte zwischen 1 bis 10 in 1er Schritten, default:5)
    • setTtsMsgLang - setzt die Sprache bei der Sprachausgabe, de oder en (default ist de)
    • setTtsMsgVol - wenn gesetzt wird der Wert als neues Media Volume fü die Sprachansage verwendet und danach wieder der alte Wert eingestellt
    • setVolUpDownStep - setzt den Step für volumeUp und volumeDown
    • setVolMax - setzt die maximale Volume Gr&uoml;e für den Slider
    • setNotifyVolMax - setzt den maximalen Lautstärkewert für Benachrichtigungslautstärke für den Slider
    • setRingSoundVolMax - setzt den maximalen Lautstärkewert für Klingellautstärke für den Slider
    • setAPSSID - setzt die AccessPoint SSID('s) um ein WLAN sleep zu verhindern (nur Automagic), mehrere SSIDs können durch Komma getrennt angegeben werden.
    • setTakePictureResolution - welche Kameraauflösung soll verwendet werden? (800x600,1024x768,1280x720,1600x1200,1920x1080)
    • setTakePictureCamera - welche Kamera soll verwendet werden (Back,Front).

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

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


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



    Anwendungsbeispiele:

      Hier verweise ich auf den gut gepflegten Wikieintrag



AirUnit

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

Alarm

[EN DE]
    Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: Alarm

AndroidDB

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

AndroidDBHost

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

Apt Update Information

[EN DE]
    AptToDate - Stellt aktuelle Update Informationen von apt Debian Systemen bereit
    Das Modul synct alle Repositotys und stellt dann Informationen über zu aktualisierende Packete bereit.
    Es ist Voraussetzung das folgende Zeile via "visudo" eingefügt wird: "fhem ALL=NOPASSWD: /usr/bin/apt-get".

    Define

      define <name> AptToDate <HOST>

      Beispiel:

        define fhemServer AptToDate localhost

      Der Befehl erstellt eine AptToDate Instanz mit dem Namen fhemServer und dem Host localhost.
      Nachdem die Instanz erstellt wurde werden die benötigten Informationen geholt und als Readings angezeigt. Dies kann einen Moment dauern.


    Readings
    • state - update Status des Servers, liegen neue Updates an oder nicht
    • os-release_ - alle Informationen aus /etc/os-release
    • repoSync - status des letzten repository sync.
    • toUpgrade - status des letzten upgrade Befehles
    • updatesAvailable - Anzahl der verfügbaren Paketupdates


    Set
    • repoSync - holt aktuelle Informationen über den Updatestatus
    • toUpgrade - führt den upgrade prozess aus.



    Get
    • showUpgradeList - Paketiste aller zur Verfügung stehender Updates
    • showUpdatedList - Liste aller als letztes aktualisierter Pakete, von der alten Version zur neuen Version
    • showWarningList - Liste der letzten Warnings
    • showErrorList - Liste der letzten Fehler
    • getDistribution - fetch new distribution information



    Attributes
    • disable - Deaktiviert das Device
    • upgradeListReading - fügt die Upgrade Liste als ein zusäiches Reading im JSON Format ein.
    • distupgrade - wechselt den upgrade Prozess nach dist-upgrade
    • disabledForIntervals - Deaktiviert das Device für eine bestimmte Zeit (13:00-18:30 or 13:00-18:30 22:00-23:00)

Air Quality Index

[EN DE]

ArduCounter

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

Arlo

[EN DE]

    Arlo Sicherheitskameras werden über eine Basisstation an die Arlo Cloud angebunden. Diese kann über eine REST-API angesprochen werden und liefert Ereignisse (wie z.B. erkannte Bewegungen oder sonstige Statusänderungen) über Server-Sent Events (SSE) zurück.

    Define

      define Arlo_Cloud Arlo ACCOUNT <hans.mustermann@xyz.de> <meinArloPasswort> <meinEmailPasswort> <meinEmailBenutzername>

      hans.mustermann@xyz.de durch die E-Mail-Adresse ersetzen, mit der man bei Arlo registriert ist, meinArloPasswort durch das Passwort bei Arlo. Für die 2-Faktor-Authentifizierung wird zusätzlich das Passwort des E-Mail-Accounts benötigt. Der E-Mail-Server, von dem die Arlo-Mails abgerufen werden sollen, muss mit attr Arlo_Cloud mailServer imap.gmx.net angegeben werden, wobei imap.gmx.net durch den IMAP-Mailserver des Providers ersetzt werden muss, bei dem das E-Mail-Konto liegt. Es wird ausschließlich IMAP mit Verschlüsselung unterstützt. Der Parameter meinEmailBenutzername muss nur angegeben werden, falls der Benutzernamen, mit dem man sich am Mailserver anmeldet, von der E-Mail-Adresse abweicht.

      Nach der erfolgreichen Definition des Account kann auf dem neu erzeugten Device set Arlo_Cloud autocreate aufgerufen werden. Dies legt die Basistation(en) und Kameras an, die zu dem Arlo Account zugeordnet sind. Die neuen Devices befinden sich initial im Raum Arlo.

      Aufgrund der SSE-Schnittstelle ist es notwendig, dass dauerhaft im Hintergrund eine Verbindung zum Arlo-Server gehalten wird. Falls dies nicht gewünscht ist, da Arlo z.B. vorübergehend nicht genutzt wird, kann der Hintergrund-Job verhindert werden, indem das Attribut "disable" des Arlo_Cloud-Device auf 1 gesetzt wird.

    Set

    • autocreate (Subtype ACCOUNT)
      Liest alle dem Arlo-Account zugeordneten Geräte und legt dafür FHEM-Devices an, falls es diese nicht schon gibt.
    • reconnect (Subtype ACCOUNT)
      Neuaufbau der Verbindung zum Arlo-Server. Zunächst loggt sich FHEM neu bei Arlo ein, danach wird die SSE-Verbindung aufgebaut. Wird nur benötigt, falls unerwartete Verbindungsabbrüche auftreten.
    • readModes (Subtype ACCOUNT)
      Liest die Modes der Basisstationen (inkl. Custom Modes). Wird automatisch aufgerufen, daher normalerweise kein manueller Aufruf notwendig.
    • updateReadings (Subtype ACCOUNT)
      Aktuelle Daten aller Basisstationen und Kameras aus der Cloud abrufen. Dies passiert einmal stündlich automatisch, falls dies nicht durch Setzen des Attributes disabled=1 am Cloud-Device unterbunden wird. Den Abruf-Intervall kann man durch Setzen des Attributs updateInterval anpassen (Angabe von Sekunden, also z.B. 600 für Abruf alle 10 Minuten oder 7200 für Abruf alle 2 Stunden).
    • arm (Subtypes BASESTATION, BRIDGE, ARLOQ und BABYCAM)
      Aktivieren der Bewegungserkennung.
    • disarm (Subtype BASESTATION, BRIDGE, ARLOQ und BABYCAM)
      Deaktivieren der Bewegungserkennung.
    • mode (Subtype BASESTATION und BRIDGE)
      Setzen eines benutzerdefinierten Modus (Parameter: Name des Modus).
    • siren (Subtype BASESTATION)
      Schaltet die Siren der Basisstation an oder aus (Achtung: laut!!).
    • subscribe (Subtype BASESTATION, ARLOQ und BABYCAM)
      Basisstation für die SSE-Schnittstelle registrieren. Muss normalerweise nie manuell aufgerufen werden, da dies beim Login automatisch passiert.
    • unsubscribe (Subtype BASESTATION, ARLOQ und BABYCAM)
      Registrierung einer Basisstation für die SSE-Schnittstelle rückgängig machen.
    • brightness (Subtype CAMERA, ARLOQ und BABYCAM)
      Helligkeit der Kamera anpassen (mögliche Werte: -2 bis +2).
    • on (Subtype CAMERA und LIGHT)
      Kamera/Licht einschalten.
    • off (Subtype CAMERA und LIGHT)
      Kamera/Licht ausschalten.
    • snapshot (Subtype CAMERA, ARLOQ und BABYCAM)
      Ein Standbild aufnehmen. Dieses kann danach über die URL aus dem Reading snapshotUrl aufgerufen werden. Damit der Befehl funktioniert, muss die Kamera den Status on haben.
    • startRecording (Subtype CAMERA, ARLOQ und BABYCAM)
      Aufnahme starten. Damit der Befehl funktioniert, muss die Kamera den Status on haben.
    • stopRecording (Subtype CAMERA, ARLOQ und BABYCAM)
      Aufnahme stoppen. Die Aufnahme kann danach über lastVideoUrl abgerufen werden, das Standbild dazu unter lastVideoImageUrl und lastVideoThumbnailUrl (klein).
    • nightlight (Subtype BABYCAM)
      Nachtlicht ein-/ausschalten (on/off).
    • nightlight-brightness (Subtype BABYCAM)
      Helligkeit des Nachtlichts anpassen.
    • nightlight-color (Subtype BABYCAM)
      Farbe des Nachtlichts anpassen.

    Attribute

      Allgemeine Attribute:
      DbLogInclude
      DbLogExclude
      alias
      comment
      devStateIcon
      devStateStyle
      event-aggregator
      event-min-interval
      event-on-change-reading
      event-on-update-reading
      eventMap
      group
      icon
      room
      sortby
      stateFormat
      userReadings
      userattr
      verbose
      webCmd
      widgetOverride

    downloadDir

      Falls dieses Attribut am Cloud-Device (Subtype ACCOUNT) gesetzt ist, werden Dateien, die in der Arlo Cloud erzeugt werden (Videos / Bilder) in das hier angegebene Verzeichnis heruntergeladen. Damit man auf die Dateien über http zugreifen kann, muss ein Verzeichnis unterhalb /opt/fhem/www angegeben werden (oder dieses selbst). Wichtig: der fhem-User muss in in diesem Verzeichnis Schreibrechte haben.

    downloadLink

      Falls über das Attribut downloadDir die Dateien ins lokale Verzeichnis heruntergeladen werden, kann über dieses Attribut am Cloud-Device angegeben werden, dass die in den Kameras gesetzten Links auf die lokale Kopie zeigen sollen. Die Angabe des Links muss in der Form http://hostname:8083/fhem/unterverzeichnis-unter-www angegeben werden.

    disable

      Subtype ACCOUNT: Deaktiviert die Verbindung zur Arlo-Cloud.

      Subtype BASESTATION: Deaktiviert die regelmäßige Abfrage der Readings aus der Arlo Cloud.

    expiryTime

      Subtype ACCOUNT: Wenn alle Basisstation auf "disarmed" stehen, wird die Verbindung zur Cloud nach der hier angegebenen Zeit beendet. Bei einer Aktion mit einem Arlo-Gerät wird eine neue Verbindung aufgebaut. Angabe in Sekunden, Standard ist 600 (10 Minuten). Durch Angabe von 0 kann die Verbindung dauerhaft bestehen bleiben.

    mailServer

      Subtype ACCOUNT: Name des IMAP Mailservers, an den Arlo den Code für die 2-Faktor-Authentifizierung sendet. Das Passwort muss beim define des Arlo_Cloud-Devices angegeben werden.

    videoDownloadFix

      Subtype ACCOUNT: Dieser Wert muss auf 1 gesetzt werden, falls Videos nach der Aufnahme nicht automatisch heruntergeladen werden. Normalerweise werden Events vom Server gesendet, sobald eine neue Aufnahme vorhanden ist, aber manchmal funktioniert das nicht. Standard ist 0 (ausgeschaltet).

    pingInterval

      Subtype ACCOUNT: Setzt das Intervall in Sekunden, wie häfuig ein Heartbeat-Ping gesendet wird. Ohne den Heartbeat-Ping würde die Session ablaufen und es könnten keine Events mehr empfangen werden. Standard ist 90.

    updateInterval

      Subtype ACCOUNT: Setzt das Intervall in Sekunden, wie häufig die Readings der Basisstationen und Kameras abgefragt werden. Standard ist 3600 = 1 Stunde.

    ssePollingInterval

      Subtype ACCOUNT: Setzt das Intervall in Sekunden, wie häufig die SSE Events abgefragt werden sollen. Standard ist 2 Sekunden.

Astro

[EN DE]
    Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: Astro

Aurora

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

AutoShuttersControl

    AutoShuttersControl (ASC) ermöglicht eine vollständige Automatisierung der vorhandenen Rollläden. Das Modul bietet umfangreiche Konfigurationsmöglichkeiten, um Rollläden bspw. nach Sonnenauf- und untergangszeiten, nach Helligkeitswerten oder rein zeitgesteuert zu steuern.
    Damit ASC auf Basis der astronomischen Zeiten die Rollos fahren kann, ist es ganz wichtig im Device "global" die Location (Latitude, Longitude) korrekt zu setzen.

    Man kann festlegen, welche Rollläden von ASC in die Automatisierung mit aufgenommen werden sollen. Daraufhin stehen diverse Attribute zur Feinkonfiguration zur Verfügung. So sind unter anderem komplexe Lösungen wie Fahrten in Abhängigkeit des Bewohnerstatus einfach umsetzbar. Beispiel: Hochfahren von Rollläden, wenn der Bewohner erwacht ist und draußen bereits die Sonne aufgegangen ist. Weiterhin ist es möglich, dass der geschlossene Rollladen z.B. nach dem ankippen eines Fensters in eine Lüftungsposition fährt. Und vieles mehr.

    Define
      define <name> AutoShuttersControl

      Beispiel:

        define myASControl AutoShuttersControl

      Der Befehl erstellt ein AutoShuttersControl Device mit Namen myASControl.
      Nachdem das Device angelegt wurde, muss in allen Rollläden Devices, welche gesteuert werden sollen, das Attribut ASC mit Wert 1 oder 2 gesetzt werden. Dabei bedeutet 1 = "Prozent geschlossen" (z.B. ROLLO oder Siro Modul) - Rollo Oben 0, Rollo Unten 100, 2 = "Prozent geöffnet" (z.B. Homematic) - Rollo Oben 100, Rollo Unten 0. Die Voreinstellung für den Befehl zum prozentualen Fahren ist in beiden Fällen unterschiedlich. 1="position" und 2="pct". Dies kann, soweit erforderlich, zu späterer Zeit noch angepasst werden. Habt Ihr das Attribut gesetzt, könnt Ihr den automatischen Scan nach den Devices anstoßen.

    Readings
      Im ASC-Device
      • ..._nextAstroTimeEvent - Uhrzeit des nächsten Astro-Events: Sonnenauf- oder Sonnenuntergang oder feste Zeit
      • ..._PosValue - aktuelle Position des Rollladens
      • ..._lastPosValue - letzte Position des Rollladens
      • ..._lastDelayPosValue - letzter abgesetzter Fahrbefehl, welcher beim nächsten zulässigen Event ausgeführt wird.
      • partyMode - on/off - Partymodus-Status
      • ascEnable - on/off - globale ASC Steuerung bei den Rollläden aktiv oder inaktiv
      • controlShading - on/off - globale Beschattungsfunktion aktiv oder inaktiv
      • hardLockOut - on/off - Status des hardwareseitigen Aussperrschutzes / gilt nur für Rollläden mit dem Attribut bei denen das Attributs ASC_LockOut entsprechend auf hard gesetzt ist
      • room_... - Auflistung aller Rollläden, die in den jeweiligen Rämen gefunden wurde. Beispiel: room_Schlafzimmer: Terrasse
      • selfDefense - Selbstschutz-Status
      • state - Status des ASC-Devices: active, enabled, disabled oder weitere Statusinformationen
      • sunriseTimeWeHoliday - on/off - Status der Wochenendunterstützung
      • userAttrList - Das ASC-Modul verteilt an die gesteuerten Rollladen-Geräte diverse Benutzerattribute (userattr). In diesem Reading kann der Status dieser Verteilung geprüft werden.

      In den Rollläden-Geräten
      • ASC_Enable - on/off - Wird der Rollladen über ASC gesteuert oder nicht
      • ASC_Time_DriveUp - Im Astro-Modus ist hier die Sonnenaufgangszeit für das Rollo gespeichert. Im Brightnessmodus ist hier der Zeitpunkt aus dem Attribut ASC_Time_Up_Late gespeichert. Im Timemodus ist hier der Zeitpunkt aus dem Attribut ASC_Time_Up_Early gespeichert.
      • ASC_Time_DriveDown - Im Astro-Modus ist hier die Sonnenuntergangszeit für das Rollo gespeichert. Im Brightnessmodus ist hier der Zeitpunkt aus dem Attribut ASC_Time_Down_Late gespeichert. Im Timemodus ist hier der Zeitpunkt aus dem Attribut ASC_Time_Down_Early gespeichert.
      • ASC_ShuttersLastDrive - Grund der letzten Fahrt vom Rollladen
      • ASC_ShadingMessage -
      • ASC_Time_PrivacyDriveDown -
      • ASC_Time_PrivacyDriveUp -


    Set
    • advDriveDown - Holt bei allen Rollläden durch ASC_Adv on ausgesetzte Fahrten nach.
    • ascEnable - on/off - Aktivieren oder deaktivieren der globalen ASC Steuerung
    • controlShading - on/off - Aktiviert oder deaktiviert die globale Beschattungssteuerung
    • createNewNotifyDev - Legt die interne Struktur für NOTIFYDEV neu an. Diese Funktion steht nur zur Verfügung, wenn Attribut ASC_expert auf 1 gesetzt ist.
    • hardLockOut - on/off - Aktiviert den hardwareseitigen Aussperrschutz für die Rollläden, bei denen das Attributs ASC_LockOut entsprechend auf hard gesetzt ist. Mehr Informationen in der Beschreibung bei den Attributen für die Rollladengeräten.
    • partyMode - on/off - Aktiviert den globalen Partymodus. Alle Rollladen-Geräten, in welchen das Attribut ASC_Partymode auf on gesetzt ist, werden durch ASC nicht mehr gesteuert. Der letzte Schaltbefehl, der bspw. durch ein Fensterevent oder Wechsel des Bewohnerstatus an die Rollläden gesendet wurde, wird beim Deaktivieren des Partymodus ausgeführt
    • renewTimer - Erneuert beim ausgewählten Rollladen die Zeiten für Sonnenauf- und -untergang und setzt die internen Timer neu.
    • renewAllTimer - Erneuert bei allen Rollläden die Zeiten für Sonnenauf- und -untergang und setzt die internen Timer neu.
    • scanForShutters - Durchsucht das System nach GerätenRo mit dem Attribut ASC = 1 oder ASC = 2
    • selfDefense - on/off - Aktiviert bzw. deaktiviert die Selbstschutzfunktion. Beispiel: Wenn das Residents-Gerät absent meldet, die Selbstschutzfunktion aktiviert wurde und ein Fenster im Haus noch geöffnet ist, so wird an diesem Fenster der Rollladen deaktivieren dann heruntergefahren.
    • shutterASCenableToggle - on/off - Aktivieren oder deaktivieren der ASC Kontrolle beim einzelnen Rollladens
    • sunriseTimeWeHoliday - on/off - Aktiviert die Wochenendunterstützung und somit, ob im Rollladengerät das Attribut ASC_Time_Up_WE_Holiday beachtet werden soll oder nicht.
    • wiggle - Bewegt einen oder mehrere Rollläden um einen definierten Wert (default: 5%) und nach einer Minute wieder zurück in die Ursprungsposition. Diese Funktion könnte bspw. zur Abschreckung in einem Alarmsystem eingesetzt werden.


    Get
    • showNotifyDevsInformations - Zeigt eine Übersicht der abgelegten NOTIFYDEV Struktur. Diese Funktion wird primär fürs Debugging genutzt. Hierzu ist das Attribut ASC_expert = 1 zu setzen.


    Attributes
      Im ASC-Device
      • ASC_autoAstroModeEvening - REAL, CIVIL, NAUTIC, ASTRONOMIC oder HORIZON
      • ASC_autoAstroModeEveningHorizon - Höhe über dem Horizont. Wird nur berücksichtigt, wenn im Attribut ASC_autoAstroModeEvening der Wert HORIZON ausgewählt wurde. (default: 0)
      • ASC_autoAstroModeMorning - REAL, CIVIL, NAUTIC, ASTRONOMIC oder HORIZON
      • ASC_autoAstroModeMorningHorizon - Höhe über dem Horizont. Wird nur berücksichtigt, wenn im Attribut ASC_autoAstroModeMorning der Wert HORIZON ausgewählt wurde. (default: 0)
      • ASC_autoShuttersControlComfort - on/off - schaltet die Komfortfunktion an. Bedeutet, dass ein Rollladen mit einem threestate-Sensor am Fenster beim Öffnen in eine Offenposition fährt. Hierzu muss beim Rollladen das Attribut ASC_ComfortOpen_Pos entsprechend konfiguriert sein. (default: off)
      • ASC_autoShuttersControlEvening - on/off - Aktiviert die automatische Steuerung durch das ASC-Modul am Abend.
      • ASC_autoShuttersControlMorning - on/off - Aktiviert die automatische Steuerung durch das ASC-Modul am Morgen.
      • ASC_blockAscDrivesAfterManual - 0,1 - wenn dieser Wert auf 1 gesetzt ist, dann werden Rollläden vom ASC-Modul nicht mehr gesteuert, wenn zuvor manuell eingegriffen wurde. Voraussetzung hierfür ist jedoch, dass im Reading ASC_ShuttersLastDrive der Status manual enthalten ist und sich der Rollladen auf eine unbekannte (nicht in den Attributen anderweitig konfigurierte) Position befindet.
      • ASC_brightnessDriveUpDown - WERT-MORGENS:WERT-ABENDS - Werte bei dem Schaltbedingungen für Sonnenauf- und -untergang geprüft werden sollen. Diese globale Einstellung kann durch die WERT-MORGENS:WERT-ABENDS Einstellung von ASC_BrightnessSensor im Rollladen selbst überschrieben werden.
      • ASC_debug - Aktiviert die erweiterte Logausgabe für Debugausgaben
      • ASC_expert - ist der Wert 1, so werden erweiterte Informationen bezüglich des NotifyDevs unter set und get angezeigt
      • ASC_freezeTemp - Temperatur, ab welcher der Frostschutz greifen soll und der Rollladen nicht mehr fährt. Der letzte Fahrbefehl wird gespeichert.
      • ASC_advStartDate - Start der Adventszeit, Auswahl ab wann die Adventszeit beginnen soll. 1. Advent oder Totensonntag
      • ASC_advEndDate - Ende der Adventszeit, Auswahl ab wann die Adventszeit Enden soll. EpiphanyDay 6. Januar oder CandlemasDay 2. Februar
      • ASC_rainSensor - DEVICENAME[:READINGNAME] MAXTRIGGER[:HYSTERESE] [CLOSEDPOS:[WAITINGTIME]] - der Inhalt ist eine Kombination aus Devicename, Readingname, Wert ab dem getriggert werden soll, Hysterese Wert ab dem der Status Regenschutz aufgehoben werden soll und der "wegen Regen geschlossen Position", sowie der Wartezeit bis dann tatsächlich die aktion ausgeführt wird.
      • ASC_residentsDev - DEVICENAME[:READINGNAME] - der Inhalt ist eine Kombination aus Devicenamen und Readingnamen des Residents-Device der obersten Ebene (z.B. rgr_Residents:state)
      • ASC_shuttersDriveDelay - maximale Zufallsverzögerung in Sekunden bei der Berechnung der Fahrzeiten. 0 bedeutet keine Verzögerung
      • ASC_TempSensor - DEVICENAME[:READINGNAME] - der Inhalt ist eine Kombination aus Device und Reading für die Außentemperatur
      • ASC_twilightDevice - das Device, welches die Informationen zum Sonnenstand liefert. Wird unter anderem für die Beschattung verwendet.
      • ASC_windSensor - DEVICE[:READING] - Sensor für die Windgeschwindigkeit. Kombination aus Device und Reading.


      In den Rollläden-Geräten
      • ASC - 0/1/2 0 = "kein Anlegen der Attribute beim ersten Scan bzw. keine Beachtung eines Fahrbefehles",1 = "Inverse oder Rollo - Bsp.: Rollo oben 0, Rollo unten 100 und der Befehl zum prozentualen Fahren ist position",2 = "Homematic Style - Bsp.: Rollo oben 100, Rollo unten 0 und der Befehl zum prozentualen Fahren ist pct
      • ASC_Antifreeze - soft/am/pm/hard/off - Frostschutz, wenn soft fährt der Rollladen in die ASC_Antifreeze_Pos und wenn hard/am/pm wird gar nicht oder innerhalb der entsprechenden Tageszeit nicht gefahren (default: off)
      • ASC_Antifreeze_Pos - Position die angefahren werden soll, wenn der Fahrbefehl komplett schließen lautet, aber der Frostschutz aktiv ist (default: ist abhängig vom Attribut ASC 85/15) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!
      • ASC_AutoAstroModeEvening - aktuell REAL,CIVIL,NAUTIC,ASTRONOMIC oder HORIZON (default: none)
      • ASC_AutoAstroModeEveningHorizon - Höhe über Horizont, wenn beim Attribut ASC_autoAstroModeEvening HORIZON ausgewählt (default: none)
      • ASC_AutoAstroModeMorning - aktuell REAL,CIVIL,NAUTIC,ASTRONOMIC oder HORIZON (default: none)
      • ASC_AutoAstroModeMorningHorizon - Höhe über Horizont,a wenn beim Attribut ASC_autoAstroModeMorning HORIZON ausgewählt (default: none)
      • ASC_BlockingTime_afterManual - wie viel Sekunden soll die Automatik nach einer manuellen Fahrt aussetzen. (default: 1200)
      • ASC_BlockingTime_beforDayOpen - wie viel Sekunden vor dem morgendlichen öffnen soll keine schließen Fahrt mehr stattfinden. (default: 3600)
      • ASC_BlockingTime_beforNightClose - wie viel Sekunden vor dem nächtlichen schließen soll keine öffnen Fahrt mehr stattfinden. (default: 3600)
      • ASC_BrightnessSensor - DEVICE[:READING] WERT-MORGENS:WERT-ABENDS / 'Sensorname[:brightness [400:800]]' Angaben zum Helligkeitssensor mit (Readingname, optional) für die Beschattung und dem Fahren der Rollladen nach brightness und den optionalen Brightnesswerten für Sonnenauf- und Sonnenuntergang. (default: none)
      • ASC_Down - astro/time/brightness/roommate - bei astro wird Sonnenuntergang berechnet, bei time wird der Wert aus ASC_Time_Down_Early als Fahrzeit verwendet und bei brightness muss ASC_Time_Down_Early und ASC_Time_Down_Late korrekt gesetzt werden. Der Timer läuft dann nach ASC_Time_Down_Late Zeit, es wird aber in der Zeit zwischen ASC_Time_Down_Early und ASC_Time_Down_Late geschaut, ob die als Attribut im Moduldevice hinterlegte ASC_brightnessDriveUpDown der Down Wert erreicht wurde. Wenn ja, wird der Rollladen runter gefahren (default: astro)
        • Beschreibung der besonderen Positionsattribute
        • ASC_Closed_Pos - in 10 Schritten von 0 bis 100 (default: ist abhängig vom Attribut ASC 0/100)
        • ASC_Open_Pos - in 10 Schritten von 0 bis 100 (default: ist abhängig vom Attribut ASC 100/0)
        • ASC_Sleep_Pos - in 10 Schritten von 0 bis 100 (default: ist abhängig vom Attribut ASC 75/25) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!
        • ASC_ComfortOpen_Pos - in 10 Schritten von 0 bis 100 (default: ist abhängig vom Attribut ASC 20/80) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!
        • ASC_Shading_Pos - Position des Rollladens für die Beschattung (default: ist abhängig vom Attribut ASC 80/20) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!
        • ASC_Ventilate_Pos - in 10 Schritten von 0 bis 100 (default: ist abhängig vom Attribut ASC 70/30) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!
        • In Bezug auf die Verwendung mit Lamellen gibt es folgende ergänzende Parameter.
          • Wird die gesamte Position inklusive der Lamellen mit Hilfe einer "festen Zurdnung" angefahren, so z.B. set ROLLONAME Beschattung dann wird hinter dem Positionswert mittels : getrennt die "feste Zuordnung" geschrieben. Beispiel: attr ROLLONAME ASC_Shading_Pos 30:Beschattung
          • Wird hingegen ein ander Command verwendet z.B. slatPct oder ähnliches dann muss hinter der normalen Positionsangebe noch die Position für die Lamellen mit angegeben werden. Beispiel: attr ROLLONAME ASC_Shading_Pos 30:75. Bitte beachtet in diesem Zusammenhang auch das Attribut ASC_SlatPosCmd_SlatDevice wo mindestens die Angabe des SlatPosCMD Voraussetzung ist.

      • ASC_Shutter_IdleDetection - READING:VALUE gibt das Reading an welches Auskunft über den Fahrstatus des Rollos gibt, sowie als zweites den Wert im Reading welcher aus sagt das das Rollo nicht fährt
      • ASC_DriveUpMaxDuration - die Dauer des Hochfahrens des Rollladens plus 5 Sekunden (default: 60)
      • ASC_Drive_Delay - maximaler Wert für einen zufällig ermittelte Verzögerungswert in Sekunden bei der Berechnung der Fahrzeiten.
      • ASC_Drive_DelayStart - in Sekunden verzögerter Wert ab welchen das Rollo gefahren werden soll.
      • ASC_LockOut - soft/hard/off - stellt entsprechend den Aussperrschutz ein. Bei global aktivem Aussperrschutz (set ASC-Device lockOut soft) und einem Fensterkontakt open bleibt dann der Rollladen oben. Dies gilt nur bei Steuerbefehlen über das ASC Modul. Stellt man global auf hard, wird bei entsprechender Möglichkeit versucht den Rollladen hardwareseitig zu blockieren. Dann ist auch ein Fahren über die Taster nicht mehr möglich. (default: off)
      • ASC_LockOut_Cmd - inhibit/blocked/protection - set Befehl für das Rollladen-Device zum Hardware sperren. Dieser Befehl wird gesetzt werden, wenn man "ASC_LockOut" auf hard setzt (default: none)
      • ASC_Mode_Down - always/home/absent/off - Wann darf die Automatik steuern. immer, niemals, bei Abwesenheit des Roommate (ist kein Roommate und absent eingestellt, wird gar nicht gesteuert) (default: always)
      • ASC_Mode_Up - always/home/absent/off - Wann darf die Automatik steuern. immer, niemals, bei Abwesenheit des Roommate (ist kein Roommate und absent eingestellt, wird gar nicht gesteuert) (default: always)
      • ASC_Partymode - on/off - schaltet den Partymodus an oder aus. Wird am ASC Device set ASC-DEVICE partyMode on geschalten, werden alle Fahrbefehle an den Rollläden, welche das Attribut auf on haben, zwischengespeichert und später erst ausgeführt (default: off)
      • ASC_Pos_Reading - Name des Readings, welches die Position des Rollladen in Prozent an gibt; wird bei unbekannten Device Typen auch als set Befehl zum fahren verwendet
      • ASC_PrivacyUpValue_beforeDayOpen - wie viele Sekunden vor dem morgendlichen öffnen soll der Rollladen in die Sichtschutzposition fahren, oder bei Brightness ab welchem minimum Brightnesswert soll das Rollo in die Privacy Position fahren. Bei Brightness muss zusätzlich zum Zeitwert der Brightnesswert mit angegeben werden 1800:600 bedeutet 30 min vor day open oder bei über einem Brightnesswert von 600 (default: -1)
      • ASC_PrivacyDownValue_beforeNightClose - wie viele Sekunden vor dem abendlichen schließen soll der Rollladen in die Sichtschutzposition fahren, oder bei Brightness ab welchem minimum Brightnesswert soll das Rollo in die Privacy Position fahren. Bei Brightness muss zusätzlich zum Zeitwert der Brightnesswert mit angegeben werden 1800:300 bedeutet 30 min vor night close oder bei unter einem Brightnesswert von 300 (default: -1)
      • ASC_PrivacyUp_Pos - Position den Rollladens für den morgendlichen Sichtschutz (default: 50) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!
      • ASC_PrivacyDown_Pos - Position den Rollladens für den abendlichen Sichtschutz (default: 50) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!
      • ASC_ExternalTrigger - DEVICE:READING VALUEACTIVE:VALUEINACTIVE POSACTIVE:[POSINACTIVE VALUEACTIVE2:POSACTIVE2], Beispiel: "WohnzimmerTV:state on:off 66:100" bedeutet das wenn ein "state:on" Event kommt soll das Rollo in Position 66 fahren, kommt ein "state:off" Event soll es in Position 100 fahren. Es ist möglich die POSINACTIVE weg zu lassen dann fährt das Rollo in LastStatus Position.
      • ASC_WindProtection - on/off - soll der Rollladen beim Windschutz beachtet werden. on=JA, off=NEIN. (default off)
      • ASC_RainProtection - on/off - soll der Rollladen beim Regenschutz beachtet werden. on=JA, off=NEIN. (default off)
      • ASC_Roommate_Device - mit Komma getrennte Namen des/der Roommate Device/s, welche den/die Bewohner des Raumes vom Rollladen wiedergibt. Es macht nur Sinn in Schlaf- oder Kinderzimmern (default: none)
      • ASC_Roommate_Reading - das Reading zum Roommate Device, welches den Status wieder gibt (default: state)
      • ASC_GuestRoom on|off - (not functionality implemented yet?).
      • ASC_Adv - on/off bei on wird das runterfahren des Rollos während der Weihnachtszeit (1. Advent bis 6. Januar) ausgesetzt! Durch set ASCDEVICE advDriveDown werden alle ausgesetzten Fahrten nachgeholt.
      • ASC_Self_Defense_Mode - absent/gone/off - ab welchen Residents Status soll Selfdefense aktiv werden ohne das Fenster auf sind. (default: gone)
      • ASC_Self_Defense_AbsentDelay - um wie viele Sekunden soll das fahren in Selfdefense bei Residents absent verzögert werden. (default: 300)
      • ASC_Self_Defense_Exclude - on/off - bei on Wert wird dieser Rollladen bei aktiven Self Defense und offenen Fenster nicht runter gefahren, wenn Residents absent ist. (default: off), off bedeutet das es ausgeschlossen ist vom Self Defense
        • Beschreibung der Beschattungsfunktion
          Damit die Beschattung Funktion hat, müssen folgende Anforderungen erfüllt sein.
          Im ASC Device das Reading "controlShading" mit dem Wert on, sowie ein Astro/Twilight Device im Attribut "ASC_twilightDevice" und das Attribut "ASC_tempSensor".
          In den Rollladendevices benötigt ihr ein Helligkeitssensor als Attribut "ASC_BrightnessSensor", sofern noch nicht vorhanden. Findet der Sensor nur für die Beschattung Verwendung ist der Wert DEVICENAME[:READING] ausreichend.
          Alle weiteren Attribute sind optional und wenn nicht gesetzt mit Default-Werten belegt. Ihr solltet sie dennoch einmal anschauen und entsprechend Euren Gegebenheiten setzen. Die Werte für die Fensterposition und den Vor- Nachlaufwinkel sowie die Grenzwerte für die StateChange_Cloudy und StateChange_Sunny solltet ihr besondere Beachtung dabei schenken.
        • ASC_Shading_InOutAzimuth - Azimut Wert ab dem bei überschreiten beschattet und bei unterschreiten endschattet werden soll. (default: 95:265)
        • ASC_Shading_MinMax_Elevation - ab welcher min Höhe des Sonnenstandes soll beschattet und ab welcher max Höhe wieder beendet werden, immer in Abhängigkeit der anderen einbezogenen Sensorwerte (default: 25.0:100.0)
        • ASC_Shading_Min_OutsideTemperature - ab welcher Temperatur soll beschattet werden, immer in Abhängigkeit der anderen einbezogenen Sensorwerte (default: 18)
        • ASC_Shading_Mode - absent,always,off,home / wann soll die Beschattung nur stattfinden. (default: off)
        • ASC_Shading_Pos - Position des Rollladens für die Beschattung (default: ist abhängig vom Attribut ASC 80/20) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss eine positive Zahl/Dezimalzahl sein!!!
        • ASC_Shading_StateChange_SunnyCloudy - Brightness Wert ab welchen die Beschattung stattfinden und aufgehoben werden soll, immer in Abhängigkeit der anderen einbezogenen Sensorwerte. Ein optionaler dritter Wert gibt an, wie viele Brightnesswerte für den aktuellen Brightness-Durchschnitt berücksichtigt werden. Standard ist 3, es sollten nicht mehr als 5 berücksichtigt werden. (default: 35000:20000 [3])
        • ASC_Shading_WaitingPeriod - wie viele Sekunden soll gewartet werden bevor eine weitere Auswertung der Sensordaten für die Beschattung stattfinden soll (default: 1200)
        • ASC_Shading_BetweenTheTime - das Fahren in die Beschattung erfolgt bei Angabe nur innerhalb des Zeitraumes, Bsp: 09:00-13:00 11:25-15:30

      • ASC_ShuttersPlace - window/terrace/awning - Wenn dieses Attribut auf terrace gesetzt ist, das Residence Device in den Status "gone" geht und SelfDefense aktiv ist (ohne das das Reading selfDefense gesetzt sein muss), wird das Rollo geschlossen. awning steht für Markise und wirkt sich auf die Beschattungssteuerung aus. (default: window)
      • ASC_Time_Down_Early - Sonnenuntergang früheste Zeit zum Runterfahren (default: 16:00) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
      • ASC_Time_Down_Late - Sonnenuntergang späteste Zeit zum Runterfahren (default: 22:00) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
      • ASC_Time_Up_Early - Sonnenaufgang früheste Zeit zum Hochfahren (default: 05:00) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
      • ASC_Time_Up_Late - Sonnenaufgang späteste Zeit zum Hochfahren (default: 08:30) !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
      • ASC_Time_Up_WE_Holiday - Sonnenaufgang früheste Zeit zum Hochfahren am Wochenende und/oder Urlaub (holiday2we wird beachtet). (default: 08:00) ACHTUNG!!! in Verbindung mit Brightness für ASC_Up muss die Uhrzeit kleiner sein wie die Uhrzeit aus ASC_Time_Up_Late !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
      • ASC_Up - astro/time/brightness/roommate - bei astro wird Sonnenaufgang berechnet, bei time wird der Wert aus ASC_Time_Up_Early als Fahrzeit verwendet und bei brightness muss ASC_Time_Up_Early und ASC_Time_Up_Late korrekt gesetzt werden. Der Timer läuft dann nach ASC_Time_Up_Late Zeit, es wird aber in der Zeit zwischen ASC_Time_Up_Early und ASC_Time_Up_Late geschaut, ob die als Attribut im Moduldevice hinterlegte Down Wert von ASC_brightnessDriveUpDown erreicht wurde. Wenn ja, wird der Rollladen hoch gefahren (default: astro)
      • ASC_Ventilate_Window_Open - auf lüften, wenn das Fenster gekippt/geöffnet wird und aktuelle Position unterhalb der Lüften-Position ist (default: on)
      • ASC_WiggleValue - Wert um welchen sich die Position des Rollladens ändern soll (default: 5)
      • ASC_WindParameters - TRIGGERMAX[:HYSTERESE] [DRIVEPOSITION] / ACHTUNG! Wird nur beachtet wenn ASC_WindProtection auf on gesetzt ist. - Angabe von Max Wert ab dem für Wind getriggert werden soll, Hytsrese Wert ab dem der Windschutz aufgehoben werden soll TRIGGERMAX - HYSTERESE / Ist es bei einigen Rollläden nicht gewünscht das gefahren werden soll, so ist der TRIGGERMAX Wert mit -1 an zu geben. (default: '50:20 ASC_Closed_Pos')
      • ASC_WindowRec_PosAfterDayClosed - open,lastManual / auf welche Position soll das Rollo nach dem schließen am Tag fahren. Open Position oder letzte gespeicherte manuelle Position (default: open)
      • ASC_WindowRec - WINDOWREC:[READING], Name des Fensterkontaktes, an dessen Fenster der Rollladen angebracht ist (default: none). Reading ist optional
      • ASC_WindowRec_subType - Typ des verwendeten Fensterkontaktes: twostate (optisch oder magnetisch) oder threestate (Drehgriffkontakt) (default: twostate)
      • ASC_SlatPosCmd_SlatDevice - Angaben zu einem Slat (Lamellen) CMD und - sofern diese Lamellen über ein anderes Device gesteuert werden - zum Slat Device. Beispiele: attr ROLLO ASC_SlatPosCmd_SlatDevice slatPct oder attr ROLLO ASC_SlatPosCmd_SlatDevice dim:ROLLOSLATDEVICE. Die Angabe des Devices ist nur erforderlich, wenn zur Steuerung der Lamellen ein anderes Device verwendet wird. Damit das ganze dann auch greift, muss in den 6 Positionsangaben ASC_Open_Pos, ASC_Closed_Pos, ASC_Ventilate_Pos, ASC_ComfortOpen_Pos, ASC_Shading_Pos und ASC_Sleep_Pos ein weiterer Parameter für die Lamellenstellung mit angegeben werden.
      • ASC_CommandTemplate - FHEM-Kommando(s) oder Perl-Anweisung (in geschweiften Klammern unter Beachtung der üblichen Regeln für das escapen von Semicolons etc.).
        Dieses Attribut übersteuert das sonst intern ermittelte Fahrkommando und ist für seltene und spezielle Fälle gedacht. In der Regel ist es nicht erforderlich, dieses Attribut zu setzen!
        Die Variablen $name (der Name des Rollladen-Devices), $pos (die Zielposition des Fahrbefehls), $slatPos (die Zielposition des Fahrbefehls für eventuelle Lamellen) und $cause (die interne Benennung des Fahranlasses) werden durch die ermittelten Werte ersetzt, es muss selbst dafür gesorgt werden, dass eventuell unnötige Fahrbefehle aussortiert werden. Beispiele:
        • attr ROLLO ASC_CommandTemplate set $name $pos - Positionsbefehl direkt an Gerät setzen
        • attr ROLLO ASC_CommandTemplate set $name pct $pos - Positionsbefehl auf den setter pct absetzen
        • attr ROLLO ASC_CommandTemplate set $name datapoint 4.LEVEL_2 $slatPos 4.LEVEL $pos - Positionsbefehl und Lamellen-Ansteuerung für HM-IP-Jalousieaktoren
        • attr ROLLO ASC_CommandTemplate { fhem("set $name ".($pos+1024)).";set $name 0")} - Positionsbefehl für eine SPS in Perl umrechnen
        • attr ROLLO ASC_CommandTemplate { myPerlFn("$name",$pos,$slatPos,"$cause")} - eigene Perl-Funktion (z.B. in 99_myUtils.pm) aufrufen
        Hinweis: ASC_CommandTemplate ist für seltene und spezielle Fälle gedacht. In der Regel ist es nicht erforderlich, dieses Attribut zu setzen!

    Beschreibung der AutoShuttersControl API
    Mit dem Aufruf der API Funktion und Übergabe der entsprechenden Parameter ist es möglich auf interne Daten zu zu greifen.

    Übersicht für das Rollladen-Device Getter
      { ascAPIget('GETTER','ROLLODEVICENAME') }
    GetterErläuterung
    FreezeStatus1=soft, 2=daytime, 3=hard
    AntiFreezePoskonfigurierte Position beim AntiFreeze Status
    AntiFreezePosAssignmentkonfigurierte Lamellen Position bei der AntiFreeze Position
    AntiFreezeaktuelle Konfiguration für AntiFreeze
    ShuttersPlaceaktuelle Konfiguration an welchem Platz sich das Rollo befindet, Fenster oder Terrasse
    SlatPosCmdwelcher PosCmd ist aktuell für den Lamellen Befehl konfiguriert
    SlatDevicewelches Device aktuell für die Lamellen Steuerung konfiguriert ist
    PrivacyUpTimePrivacy Zeit in Sekunden zum fahren in die Privacy Pos vor dem vollen Öffnen
    PrivacyUpBrightnessValPrivacy Brightness Wert zum fahren in die Privacy Pos
    PrivacyUpPosPosition für die Privacy Up Fahrt
    PrivacyUpPositionAssignmentPosition für die Lamellenfahrt von Privacy Up
    PrivacyDownTimePrivacy Zeit in Sekunden zum fahren in die Privacy Pos vor dem vollen schließen
    PrivacyDownBrightnessValPrivacy Brightness Wert zum fahren in die Privacy Pos
    PrivacyDownPosPosition für die Privacy Down Fahrt
    PrivacyDownPositionAssignmentPosition für die Lamellenfahrt von Privacy Down
    SelfDefenseModeModus für den SelfDefense
    SelfDefenseAbsentDelayVerzögerungszeit der SelfDefense Fahrt bei absent
    WiggleValueum welchen Wert soll das Rollo bei einer wiggle Fahrt fahren
    AdvIst es in der definierten Weihnachtszeit
    ShadingPoskonfigurierte Position für die Beschattungsfahrt
    ShadingPositionAssignmentPosition für die Lamellenfahrt für die Beschattungsfahrt
    ShadingModewelcher aktuelle Modus für das Beschatten ist konfiguriert
    IdleDetectionValuewelcher Wert im IdleDetectionRading zeigt an dass das Rollo aktuell nicht in Bewegung ist
    ShadingAzimuthLeftab welchem Azimut beginnt die Beschattung
    ShadingAzimuthRightab welchem Azimut endet die Beschattung
    ShadingMinOutsideTemperatureüber welchem Temperaturwert beginnt die Beschattung
    ShadingMinElevationüber welchem Elevationwert beginnt die Beschattung
    ShadingMaxElevationüber welchem Elevationwert endet die Beschattung
    ShadingStateChangeSunnyüber welchem Brightnesswert beginnt die Beschattung
    ShadingStateChangeCloudyunter welchem Brightnesswert endet die Beschattung
    ShadingWaitingPeriodnach welcher Wartezeit werden beschattungsrelevante Sensorwerte wieder beachtet und die Beschattungsroutine abgearbeitet
    ExternalTriggerDevicekonfiguriertes Triggerdevice
    ExternalTriggerReadingkofiguriertes Triggerdevice Reading
    ExternalTriggerValueActiveWert mit welchen der externe Trigger Prozess ausgel&uoml;st werden soll.
    ExternalTriggerValueActive2weiterer Wert mit welchen der externe zweite Trigger Prozess ausgel&uoml;st werden soll.
    ExternalTriggerValueInactiveWert mit welchen der externe Trigger Prozess beendet werden soll
    ExternalTriggerPosActiveRolloposition welche angefahren werden soll wenn der erste externe Trigger aktiv wird.
    ExternalTriggerPosActive2Rolloposition welche angefahren werden soll wenn der zweite externe Trigger aktiv wird.
    ExternalTriggerPosInactiveRolloposition welche angefahren werden soll wenn der externe Trigger inaktiv wird.
    ExternalTriggerStatusaktueller Status des externen Triggers, 0 oder 1
    Delaykonfigurierte Verzögerungswert welcher für die Zufallsberechnung werwendet werden soll
    DelayStartkonfigurierter fester Verzögerungswert
    BlockingTimeAfterManualkonfigurierte Blockzeit nach einer manuellen Fahrt
    BlockingTimeBeforNightClosekonfigurierte Blockzeit vor dem nächtlichen schließen
    BlockingTimeBeforDayOpenkonfigurierte Blockzeit vor dem morgendlichen öffnen
    PosCmdwelches Kommando wird zum fahren der Rollos verwendet (pct, position?)
    OpenPosPosition für Rollo ganz auf
    OpenPositionAssignmentSlat-Position für Rollo ganz auf
    VentilatePosLüften Position
    VentilatePositionAssignmentLüften Slat-Position
    VentilatePosAfterDayClosedPosition des Rollos beim schließen des Fensters am Tag
    ClosedPosPosition für Rollo ganz geschlossen
    ClosedPositionAssignmentSlat-Position für Rollo ganz geschlossen
    SleepPosPosition für schlafen
    SleepPositionAssignmentSlat-Position für schlafen
    VentilateOpenLüften aktiv?
    ComfortOpenPosComfort Position
    ComfortOpenPositionAssignmentSlat-Comfort Position
    PartyModeAbfrage Party Mode
    RoommatesAbfrage Roommates / Antwort als String
    RoommatesReadingRoommates Reading
    RoommatesStatusRoommates Status unter Berücksichtigung aller Roommates und dessen Status
    RoommatesLastStatusRoommates letzter Status unter Berücksichtigung aller Roommates und dessen letzten Status
    WindPosRollo Position bei Windtrigger
    WindMaxWert über dem die Windprotection aktiviert werden soll
    WindMinWert unter dem die Windprotection aufgehoben werden soll
    WindProtectionWindprotection soll aktiv sein oder nicht
    WindProtectionStatusaktueller Status der Wind Protection „protected“ oder „unprotected“
    RainProtectionRain Protection soll aktiv sein oder nicht
    RainProtectionStatusaktueller Status der Regen Protection „unprotected“ oder „unprotected“
    ModeUpaktuelle Einstellung für den Modus des Morgens hoch fahren
    ModeDownaktuelle Einstellung für den Modus des Abends runter fahren
    LockOutaktuelle Einstellung für den Aussperrschutz
    LockOutCmdAussperrschutz Kommando am Aktor
    AutoAstroModeMorningaktuell engestellter Wert für Astro Morgens
    AutoAstroModeEveningaktuell engestellter Wert für Astro Abends
    AutoAstroModeMorningHorizonHORIZON Wert Morgens
    AutoAstroModeEveningHorizonHORIZON Wert Abends
    Upaktueller Wert für Morgenfahrten
    Downaktueller Wert für Abendfahrten
    TimeUpEarlyaktueller Wert für früheste Morgenfahrt
    TimeUpLateaktueller Wert für späteste Morgenfahrt
    TimeDownEarlyaktueller Wert für früheste Abendfahrt
    TimeDownLateaktueller Wert für späteste Abendfahrt
    TimeUpWeHolidayaktueller Wert für Wochenende und Feiertags Morgenfahrten
    BrightnessMinVal
    BrightnessMaxVal
    DriveUpMaxDuration
    Homemode
    PrivacyDownStatus
    PrivacyUpStatus
    IsDay
    SelfDefenseState
    LastDrive
    LastPos
    Sunset
    Sunrise
    OutTemp
    IdleDetection
    BrightnessAverageNur für die Beschattung relevant
    ShadingStatus
    ShadingLastStatus
    ShadingManualDriveStatus
    IfInShading
    WindProtectionStatus
    RainProtectionStatus
    Brightness
    WindStatus
    Statusaktuelle Position des Rollos
    DelayCmdStatus der Query von ausgesetzten Fahrten wegen PartyMod oder offnen Fenster
    ASCenableStatus der ASC Steuerung vom Rollo
    SubTypSubtype vom Rollo
    WinDevReading
    WinDev
    WinStatus
    NoDelayWurde die Behandlung von Offset deaktiviert (Beispiel bei Fahrten über Fensterevents)
    LastDriveGrund des letzten Fahrens
    LastPosdie letzte Position des Rollladens
    LastPosTimestampTimestamp der letzten festgestellten Position
    LastManPosPosition der letzten manuellen Fahrt
    LastManPosTimestampTimestamp der letzten manuellen Position
    SunsetUnixTimeberechnete Unixzeit für Abends (Sonnenuntergang)
    Sunset1=Abendfahrt wurde durchgeführt, 0=noch keine Abendfahrt durchgeführt
    SunriseUnixTimeberechnete Unixzeit für Morgens (Sonnenaufgang)
    Sunrise1=Morgenfahrt wurde durchgeführt, 0=noch keine Morgenfahrt durchgeführt
    RoommatesStatusaktueller Status der/des Roommate/s für den Rollladen
    RoommatesLastStatusletzter Status der/des Roommate/s für den Rollladen
    ShadingStatusAusgabe des aktuellen Shading Status, ���in“, �����out“, „in reserved“, „out reserved“
    ShadingStatusTimestampTimestamp des letzten Beschattungsstatus
    IfInShadingBefindet sich der Rollladen, in Abhängigkeit des Shading Mode, in der Beschattung
    DelayCmdletzter Fahrbefehl welcher in die Warteschlange kam. Grund z.B. Partymodus.
    StatusPosition des Rollladens
    ASCenableAbfrage ob für den Rollladen die ASC Steuerung aktiv ist.
    IsDayAbfrage ob das Rollo im Tag oder Nachtmodus ist. Also nach Sunset oder nach Sunrise
    PrivacyDownStatusAbfrage ob das Rollo aktuell im PrivacyDown Status steht
    OutTempaktuelle Außentemperatur sofern ein Sensor definiert ist, wenn nicht kommt -100 als Wert zurück
    ShadingBetweenTheTimeKonfiguration für die Zeit der Beschattung

    Übersicht für das Rollladen-Device mit Parameterübergabe Getter
      { ascAPIget('GETTER','ROLLODEVICENAME',VALUE) }
    GetterErläuterung
    QueryShuttersPosRückgabewert 1 bedeutet das die aktuelle Position des Rollos unterhalb der Valueposition ist. 0 oder nichts bedeutet oberhalb der Valueposition.

    Übersicht für das Rollladen-Device Setter
      { ascAPIset('SETTER','ROLLODEVICENAME','VALUE') }
    SetterErläuterung
    AntiFreezePossetzt die Position für Antifreeze
    AntiFreezesetzt den Wert für Antifreeze - off/soft/hard/am/pm
    ShuttersPlacesetzt den Standort des Rollos - window/terrace
    SlatPosCmdsetzt Command für das fahren der Lamellen
    PrivacyUpTimesetzt die Zeit für die morgendliche privacy Fahrt
    PrivacyDownTimeetzt die Zeit für die abendliche privacy Fahrt
    PrivacyDownPossetzt die Position für eine abendliche privacy Fahrt
    PrivacyUpPossetzt die Position für eine morgendliche privacy Fahrt
    SelfDefenseModesetzt den Modus für SelfDefense
    SelfDefenseAbsentDelaysetzt den Verzögerungswert für SelfDefense
    WiggleValuesetzen der Werte für Wiggle
    Advsetzt die Unterstützung für Weihnachten - on/off
    ShadingPossetzt den Wert der Beschattungsposition
    ShadingModesetzt den Modus der Beschattung - absent/always/off/home
    ShadingMinOutsideTemperaturesetzt den mininmal Temperaturwert zur Beschattung
    ShadingWaitingPeriodsetzt den Wert der Beschattungswartezeit
    Delaysetzt den Zufallswert zur verzögerten Fahrt
    DelayStartsetzen den festen Wert zur verzögerten Fahrt
    BlockingTimeAfterManualsetzt den Wert in Sekunden zur Blockade nach einer manuellen Fahrt
    BlockingTimeBeforNightClosesetzt den Wert in Sekunden zur Blockade vor der Nachtfahrt
    BlockingTimeBeforDayOpensetzt den Wert in Sekunden zur Blockade vor der Tagfahrt
    PosCmdsetzt den Readingnamen zur Positionserkennung des Rollos
    OpenPossetzt den Wert für die offen Position
    VentilatePossetzt den Wert für die ventilate Position
    VentilatePosAfterDayClosedwas soll passieren wenn am Tag das Fenster geschlossen wird - open/lastManual
    ClosedPossetzt den Wert für die geschlossen Position
    SleepPossetzt den Wert für die schlafen Position
    VentilateOpensetzt den Wert für VentilateOpen Position
    ComfortOpenPossetzt den Wert für ComfortOpen Position
    PartyModeWert für den PartyMode - on/off
    Roommatessetzt den Wert für Roommates als String, mehrere Roommates durch Komma getrennt
    RoommatesReadingsetzt das Reading für die Roommates
    WindProtectionsetzt/überschreibt die WindProtection - protected/unprotected
    RainProtectionsetzt/überschreibt die RainProtection - protected/unprotected
    ModeUpsetzt den Modus für die morgendliche Fahrt - absent/always/off/home
    ModeDownsetzt den Modus für die abendliche Fahrt - absent/always/off/home
    LockOutsetzt den zu berücksichtigen LockOut Modus - off/soft/hard
    LockOutCmdsetzt das Kommando für den LockOut des Rollos
    AutoAstroModeMorning
    AutoAstroModeEvening
    AutoAstroModeMorningHorizon
    AutoAstroModeEveningHorizon
    Up
    Down
    TimeUpEarly
    TimeUpLate
    TimeDownEarly
    TimeDownLate
    TimeUpWeHoliday
    DriveUpMaxDuration
    SubTyp
    WinDev
    ShadingBetweenTheTimeKonfiguration für die Zeit der Beschattung, Beispiel: 09:00-13:00 WICHTIG!!!! Immer bei einstelligen Stunden die 0 davor setzen

    Übersicht für das ASC Device Getter
      { ascAPIget('GETTER') }
    GetterErläuterung
    OutTemp aktuelle Außentemperatur sofern ein Sensor definiert ist, wenn nicht kommt -100 als Wert zurück
    ResidentsStatusaktueller Status des Residents Devices
    ResidentsLastStatusletzter Status des Residents Devices
    AzimuthAzimut Wert
    ElevationElevation Wert
    ASCenableist die ASC Steuerung global aktiv?
    PartyModeParty Mode Reading
    HardLockOutHard Lock Out Reading
    SunriseTimeWeHolidayFeiertags und Wochenend Sunrise Zeiten beachten
    AutoShuttersControlShadingglobale Beschattung on/off
    SelfDefenseglobal Self Defense on/off
    ShuttersOffsetglobales Drive Delay
    BrightnessMinValBrightness Wert für Sonnenuntergang
    BrightnessMaxValBrightness Wert für Sonnenaufgang
    AutoAstroModeEvening
    AutoAstroModeEveningHorizon
    AutoAstroModeMorning
    AutoAstroModeMorningHorizon
    AutoShuttersControlMorning
    AutoShuttersControlEvening
    AutoShuttersControlComfort
    FreezeTemp
    RainTriggerMax
    RainTriggerMin
    RainSensorShuttersClosedPos
    RainWaitingTime
    BlockAscDrivesAfterManual

AutomowerConnect

    FHEM-FORUM: AutomowerConnect
    FHEM-Wiki: AutomowerConnect: Wie erstellt man eine Karte des Mähbereiches?

    Einleitung

    • Dieses Modul etabliert eine Kommunikation zwischen der Husqvarna Cloud and FHEM, um einen Husqvarna Automower zu steuern, der mit einem Connect Modul (SIM) ausgerüstet ist.
    • Es arbeitet als Device für einen Mähroboter. Für jeden in der API registrierten Mähroboter ist ein extra Appilcation Key mit Application Secret zu verwenden.
    • Der Pfad des Mähroboters wird in der Detailansicht des FHEMWEB Frontends angezeigt.
    • Der Pfad kann mit einer beliebigen Karte hinterlegt werden.
    • Die Karte muss als Rasterbild im webp, png oder jpg Format vorliegen.
    • Die Grundstücksgrenze kann manuell eingetragen werden.
    • Die Die Mähflächengrenze kann manuell eingetragen werden.
    • Alternativ kann die Mähflächengrenze berechnet werden.
    • Es ist möglich alles was die API anbietet zu steuern, z.B. Mähplan,Scheinwerfer, Schnitthöhe und Aktionen wie, Start, Pause, Parken usw.
    • Zonen können selbst definiert werden.
    • Die Schnitthöhe kann je selbstdefinierter Zone eingestellt werden.
    • Die Daten aus der API sind im Gerätehash gespeichert, Mit {Dumper $defs{<device name>}} in der Befehlezeile können die Daten angezeigt werden und daraus userReadings erstellt werden.

    Anforderungen

    • Für den Zugriff auf die API muss eine Application im Husqvarna Developer Portal angelegt und mit der Automower Connect API verbunden werden.
    • Währenddessen wird ein Application Key (client_id) und ein Application Secret (client secret) bereitgestellt. Diese Angaben sind im Zusammenhang mit der Definition eines Gerätes erforderlich.
    • Das Modul nutzt Client Credentials als Granttype zur Authorisierung.

    • Das Modul läd Drittsoftware, die zur Berechnung der Hüllkurve des Mähbereiches erforderlich ist, von einem externem Server.

    • Das Perlmodul Readonly muss installiert sein.
      Wenn nicht bereits vorhanden, das Debianaket libreadonly-perl installieren oder per CPAN das Perlmodul Readonly.


    Define
      define <device name> AutomowerConnect <application key> [<mower number>]
      Beispiel:
      define myMower AutomowerConnect 123456789012345678901234567890123456 Erstes Gerät: die Defaultmähernummer ist 0.
      Es muss ein client_secret gesetzt werden. Es ist das Application Secret vom Husqvarna Developer Portal.
      set myMower client_secret <client secret>

    Hinweise
    • Die verfügbaren Setter, Attribute und Readings, so wie die Karte, werden durch die im Mähertyp vorhandenen Fähigkeiten ( cutting height, headlights, position, stay out zones, work areas ) bestimmt.

    Button
    • Mower Schedule
      Über den Button kann eine Benutzeroberfläche zur Bearbeitung des Mähplans geöffnet werden.
      Eintrag zufügen/ändern: Die gewünschten Angaben eintragen und betätigen.
      Eintrag löschen: Alle Wochentage abwählen und betätigen.
      Eintrag zurücksetzen: Irgend ein Zeitfeld mit -- füllen und betätigen.
    Set
    • Park
      set <name> Park <number of minutes>
      Parkt den Mäher in der Ladestation (LS) für <number of minutes>
    • ParkUntilFurtherNotice
      set <name> ParkUntilFurtherNotice
      Parkt den Mäher bis auf Weiteres in der LS
    • ParkUntilNextSchedule
      set <name> ParkUntilNextSchedule
      Parkt den Mäher bis auf Weiteres in der LS und startet zum nächsten geplanten Zeitpunkt
    • Pause
      set <name> Pause
      Pausiert den Mäher sofort am aktuellen Standort
    • ResumeSchedule
      set <name> ResumeSchedule
      Startet im geplanten Intervall den Mäher sofort, sonst zum nächsten geplanten Zeitpunkt
    • Start
      set <name> Start <number of minutes>
      Startet sofort für <number of minutes>
    • StartInWorkArea
      set <name> StartInWorkArea <workAreaId|zone name> [<number of minutes>]
      Testing: Startet sofort in <workAreaId|name> für <number of minutes>
      Wenn <number of minutes> nicht angegeben wird oder im Auswahlfeld 0 gewählt wird, dann wird der Mähvorgang bis auf Weiteres fortgesetzt.
      Der Name der WorkArea darf keine Leerzeichen beinhalten und muss mindestens einen Buchstaben enthalten.
    • chargingStationPositionToAttribute
      set <name> chargingStationPositionToAttribute
      Setzt die berechneten Koordinaten der LS in das entsprechende Attribut.
    • client_secret
      set <name> client_secret <application secret>
      Setzt das erforderliche Application Secret (client secret)
    • cuttingHeight
      set <name> cuttingHeight <1..9>
      Setzt die Schnitthöhe. HINWEIS: Nicht für 550 EPOS und Ceora geeignet.
    • resetCuttingBladeUsageTime
      set <name> resetCuttingBladeUsageTime
      Setzt die Benutzungszeit der Messer zurück, falls der Mäher es unterstützt.
    • cuttingHeightInWorkArea
      set <name> cuttingHeightInWorkArea <Id|name> <0..100>
      Testing: Setzt die Schnitthöhe für Id oder Zonennamen von 0 bis 100. Der Zonenname darf keine Leerzeichen beinhalten und muss mindestens einen Buchstaben enthalten.
    • stayOutZone
      set <name> stayOutZone <Id|name> <enable|disable>
      Testing: Schaltet stayOutZone ein oder aus, für die Id oder den Namen der Zone.
      Der Zonenname darf keine Leerzeichen beinhalten und muss mindestens einen Buchstaben enthalten.
    • dateTime
      set <name> dateTime <timestamp / s>
      Setzt die Mäherzeit auf die Systemzeit des Rechners auf dem der Mäher definiert ist, erscheint nur wenn mowerAutoSyncTime nicht gesetzt ist, siehe auch mowerTimeZone
    • confirmError
      set <name> confirmError
      Testing: Bestätigt den letzten Fehler im Mäher, wenn der Mäher es zulässt. Verfügbar für 405X, 415X, 435X AWD and 535 AWD und alle Ceora, EPOS and NERA.
    • getNewAccessToken
      set <name> getNewAccessToken
      Nur zur Fehlerbehebung.
    • getUpdate
      set <name> getUpdate
      Nur zur Fehlerbehebung.
    • getMessages
      get <name> getMessages
      Läd die im Mäher gespeicherten Meldungen, sofern unterstützt, siehe auch errorStack.
    • headlight
      set <name> headlight <ALWAYS_OFF|ALWAYS_ON|EVENIG_ONLY|EVENING_AND_NIGHT>
      Setzt den Scheinwerfermode
    • mowerScheduleToAttribute
      set <name> mowerScheduleToAttribute
      Schreibt den Mähplan ins Attribut mowerSchedule.
    • sendScheduleFromAttributeToMower
      set <name> sendScheduleFromAttributeToMower
      Sendet den Mähplan zum Mäher. HINWEIS: Nicht für 550 EPOS und Ceora geeignet.
    • mapZonesTemplateToAttribute
      set <name> mapZonesTemplateToAttribute
      Läd das Beispiel aus der Befehlsreferenz in das Attribut mapZones.
    • defaultDesignAttributesToAttribute
      set <name> defaultDesignAttributesToAttribute
      Läd die Standartdesignattribute.


    Get
    • html
      get <name> html
      Gibt das Bild des Mäherbereiches html kodiert zurück, zur Verwendung in uiTable, TabletUI, Floorplan, readingsGroup, weblink usw.
    • errorCodes
      get <name> errorCodes
      Listet die Statuscode der API-Anfrage und die Fehlercodes des Mähroboters auf.
    • InternalData
      get <name> InternalData
      Listet einige Daten des FHEM-Gerätes auf.
    • MowerData
      get <name> MowerData
      Listet alle Daten des Mähers einschließlich Hashpfad auf, ausgenommen das Positonsarray. Der Hashpfad kann zur Erzeugung von userReadings genutzt werden, getriggert wird durch z.B. device_state:\sconnected oder mower_wsEvent:\s<event name>.
      Beispiel: erzeugen des Reading serialnumber mit dem Hashpfad $hash->{helper}{mower}{attributes}{system}{serialNumber}

      attr <name> userReadings serialnumber:device_state:\sconnected {$defs{$name}->{helper}{mower}{attributes}{system}{serialNumber}}
    • StatisticsData
      get <name> StatisticsData
      Listet statistische Daten mit ihrem Hashpfad auf. Der Hashpfad kann zur Erzeugung von userReadings genutzt werden, getriggert wird z.B. durch device_state:\sconnected oder mower_wsEvent:\s<event name>
    • errorStack
      get <name> errorStack
      Listet die gespeicherten Fehler und die geladenen Meldungen auf, siehe auch getMessages.


    Attributes
    • mapImagePath
      attr <name> mapImagePath <path to image>
      Pfad zur Bilddatei. Auf das Bild werden Pfad, Anfangs- u. Endpunkte gezeichnet.
      Wenn der Bildname die Bildgröße impliziert indem er zu dem regulären Ausdruck /(\d+)x(\d+)/ passt,
      wird das zugehörige Attribut gesetzt mapImageWidthHeight = '$1 $2'
      Beispiel Bildname: map740x1300.webp
    • mapImageWidthHeight
      attr <name> mapImageWidthHeight <width in pixel><separator><height in pixel>
      Bildbreite in Pixel des Bildes auf das Pfad, Anfangs- u. Endpunkte gezeichnet werden. <separator> ist 1 Leerzeichen.
    • mapImageZoom
      attr <name> mapImageZoom <zoom factor>
      Zoomfaktor zur Salierung des Bildes auf das Pfad, Anfangs- u. Endpunkte gezeichnet werden. Standard: 0.5
    • mapBackgroundColor
      attr <name> mapBackgroundColor <color value>
      Der Wert wird als Hintergrungfarbe benutzt.
    • mapDesignAttributes
      attr <name> mapDesignAttributes <complete list of design-attributes>
      Lade die Attributliste mit set <name> defaultDesignAttributesToAttribute um die Werte zu ändern. Nur Designattribute mit geänderten Standartwerten müssen in diesem Attribut enthalten sein.
      Vorgabe Werte:
        areaLimitsColor="#ff8000"
        areaLimitsLineWidth="1"
        areaLimitsConnector=""
        hullColor="#0066ff"
        hullLineWidth="1"
        hullConnector="1"
        hullResolution="40"
        hullCalculate="1"
        hullSubtract=""
        propertyLimitsColor="#33cc33"
        propertyLimitsLineWidth="1"
        propertyLimitsConnector="1"
        errorBackgroundColor="#3d3d3d"
        errorFont="14px Courier New"
        errorFontColor="#ff8000"
        errorPathLineColor="#ff00bf"
        errorPathLineDash=""
        errorPathLineWidth="2"
        chargingStationPathLineColor="#999999"
        chargingStationPathLineDash="6,2"
        chargingStationPathLineWidth="1"
        chargingStationPathDotWidth="2"
        otherActivityPathLineColor="#999999"
        otherActivityPathLineDash="6,2"
        otherActivityPathLineWidth="1"
        otherActivityPathDotWidth="2"
        leavingPathLineColor="#33cc33"
        leavingPathLineDash="6,2"
        leavingPathLineWidth="2"
        leavingPathDotWidth="2"
        goingHomePathLineColor="#0099ff"
        goingHomePathLineDash="6,2"
        goingHomePathLineWidth="2"
        goingHomePathDotWidth="2"
        mowingPathDisplayStart=""
        mowingPathLineColor="#ff0000"
        mowingPathLineDash="6,2"
        mowingPathLineWidth="1"
        mowingPathDotWidth="2"
        mowingPathUseDots=""
        mowingPathShowCollisions=""
        hideSchedulerButton=""
    • mapImageCoordinatesToRegister
      attr <name> mapImageCoordinatesToRegister <upper left longitude><space><upper left latitude><line feed><lower right longitude><space><lower right latitude>
      Obere linke und untere rechte Ecke der Fläche auf der Erde, die durch das Bild dargestellt wird, um das Bild auf der Fläche zu registrieren (oder einzupassen).
      Format: Zeilenweise Paare von Longitude- u. Latitudewerten getrennt durch 1 Leerzeichen. Die Zeilen werden aufgeteilt durch (/\s|\R$/).
      Angabe der WGS84 (GPS) Koordinaten muss als Dezimalgrad erfolgen.
    • mapImageCoordinatesUTM
      attr <name> mapImageCoordinatesUTM <upper left longitude><space><upper left latitude><line feed><lower right longitude><space><lower right latitude>
      Obere linke und untere rechte Ecke der Fläche auf der Erde, die durch das Bild dargestellt wird, um das Bild auf der Fläche zu registrieren (oder einzupassen).
      Format: Zeilenweise Paare von Longitude- u. Latitudewerten getrennt durch 1 Leerzeichen. Die Zeilen werden aufgeteilt durch (/\s|\R$/).
      Die Angabe der UTM Koordinaten muss als Dezimalzahl in Meter erfolgen.
      Das Attribut muss nach dem Attribut mapImageCoordinatesToRegister gesetzt werden.
      Dieses Attribut berechnet die Skalierungsfaktoren. Das Attribut scaleToMeterXY wird entsprechend gesetzt.
    • showMap
      attr <name> showMap <1,0>
      Zeigt die Karte an (1 default) oder nicht (0).
    • chargingStationCoordinates
      attr <name> chargingStationCoordinates <longitude><separator><latitude>
      Longitude und Latitude der Ladestation als WGS84 (GPS) Koordinaten als Deimalzahl. <separator> ist 1 Leerzeichen.
    • chargingStationImagePosition
      attr <name> chargingStationImagePosition <right, bottom, left, top, center>
      Position der Ladestation relativ zu ihren Koordinaten.
    • mowerAutoSyncTime
      attr <name> mowerAutoSyncTime <0,1>
      Synchronisiert die Zeit im Mäher, bei einer Zeitumstellung, ein (1) aus (0 Standard).
    • mowerTimeZone
      attr <name> mowerTimeZone <area/location>
      Setzt die Zeitzone für den Setter dateTime und das Attribut mowerAutoSyncTime. Wenn das Attribut nicht gesetzt ist wird die Zeitzone des FHEM-Servers verwendet. Es muss nur gesetzt werden, wenn der Mäher in einer anderen Zeitzone arbeitet. Eine Liste der gültigen Area/Location Angabe kann mit dem Linuxbefehl timedatectl list-timezones angezeigt werden.
      Beispiel für Deutschland: Europe/Berlin
    • mowerCuttingWidth
      attr <name> mowerCuttingWidth <cutting width>
      Schnittbreite in Meter zur Berechnung der gemähten Fläche. default: 0.24
    • mowerSchedule
      attr <name> mowerSchedule <schedule array>
      Dieses Attribut bietet die Möglichkeit den Mähplan zu ändern, er liegt als JSON Array vor.
      Der aktuelle Mähplan kann mit dem Befehl set <name> mowerScheduleToAttrbute ins Attribut geschrieben werden.
      Der Befehl set <name> sendScheduleFromAttributeToMower sendet den Mähplan an den Mäher. Das Maximum der Arrayelemente beträgt 14, 2 für jeden Tag, so daß jeden Tag zwei Intervalle geplant werden können. Jedes Arrayelement besteht aus 7 Tageswerten (monday bis sunday) die auf true oder false gesetzt werden können, einen start Wert und einen duration Wert in Minuten. Die Startzeit start wird von Mitternacht an gezählt. HINWEIS: Nicht für 550 EPOS und Ceora geeignet.
    • mowingAreaLimits
      attr <name> mowingAreaLimits <positions list>
      Liste von Positionen, die den Mähbereich beschreiben. Format: Zeilenweise Paare von Longitude- u. Latitudewerten getrennt durch 1 Leerzeichen. Die Zeilen werden aufgeteilt durch (/\s|\R$/).
      Die Liste der Positionen kann aus einer mit Google Earth erzeugten KML-Datei entnommen werden, aber ohne Höhenangaben.
    • propertyLimits
      attr <name> propertyLimits <positions list>
      Liste von Positionen, um die Grundstücksgrenze zu beschreiben. Format: Zeilenweise Paare von Longitude- u. Latitudewerten getrennt durch 1 Leerzeichen. Eine Zeile wird aufgeteilt durch (/\s|\R$/).
      Die genaue Position der Grenzpunkte kann man über die Geoportale der Länder finden. Eine Umrechnung der UTM32 Daten in Meter nach ETRS89 in Dezimalgrad kann über das BKG-Geodatenzentrum erfolgen.
    • numberOfWayPointsToDisplay
      attr <name> numberOfWayPointsToDisplay <number of way points>
      Legt die Anzahl der gespeicherten und und anzuzeigenden Wegpunkte fest, Standartwert ist 5000 und Mindestwert ist 100. Die Wegpunkte werden durch den zugeteilten Wegpunktspeicher geschoben.
    • weekdaysToResetWayPoints
      attr <name> weekdaysToResetWayPoints <any combination of weekday numbers, space or minus [0123456 -]>
      Eine Kombination von Wochentagnummern an denen der Wegpunktspeicher gelöscht wird. Keine Löschung bei Leer- oder Minuszeichen, Standard 1.
    • scaleToMeterXY
      attr <name> scaleToMeterXY <scale factor longitude><seperator><scale factor latitude>
      Der Skalierfaktor hängt vom Standort ab und muss daher für kurze Strecken berechnet werden. <seperator> ist 1 Leerzeichen.
      Longitude: (LongitudeMeter_1 - LongitudeMeter_2) / (LongitudeDegree_1 - LongitudeDegree_2)
      Latitude: (LatitudeMeter_1 - LatitudeMeter_2) / (LatitudeDegree_1 - LatitudeDegree_2)
    • mapZones
      attr <name> mapZones <JSON string with zone names in alpabetical order and valid perl condition to seperate the zones>
      Die Zonen werden vom Modul bereit gestellt, sie stehen in keinem Zusammenhang mit Husquvarnas Work Areas
      Die Wegpunkte stehen über die Perlvariablen $longitude und $latitude zur Verfügung.
      Die Zonennamen und Bedingungen müssen als JSON-String angegeben werden.
      Die Zonennamen müssen in alphabetischer Reihenfolge durch Bedingungen abgegrenzt werden.
      Die letzte Zone ergibt sich aus den übrig gebliebenen Wegpunkten.
      Syntaxbeispiel:
      '{
          "<name_1>" : {
            "condition" : "<condition to separate name_1 from other zones>",
            "cuttingHeight" : "<cutting height for the first zone>"
        },
          "<name_2>" : {
            "condition" : "<condition to separate name_2 from other zones, except name_1>",
            "cuttingHeight" : "<cutting height for the second zone>"
        },
          "<name_3>" : {
            "condition" : "<condition to separate name_3 from other zones, except name_1 and name_2>",
            "cuttingHeight" : "<cutting height for the third zone>"
        },
          "<name_n-1>" : {
            "condition" : "<condition to separate name_n-1 from other zones ,except the zones already seperated>",
            "cuttingHeight" : "<cutting height for the nth-1 zone>"
        },
          "<name n>" : {
            "condition" : "Use 'undef' because the last zone remains.",
            "cuttingHeight" : "<cutting height for the nth zone>"
        }
      }'

      Beispiel mit zwei Zonen und gedachten Linien bestimmt durch die Punkte Latitude 52.6484600648553, 52.64839739580418 (horizontal) und 9.54799477359984 (vertikal). Alle Wegpunkte deren Latitude über einer horizontalen Linie mit der Latitude 52.6484600648553 liegen oder alle Wegpunkte deren Latitude über einer horizontalen Linie mit der Latitude 52.64839739580418 liegen und deren Longitude rechts von einer vertikale Linie mit der Longitude 9.54799477359984 liegen, gehören zur Zone 01_oben. Alle anderen Wegpunkte gehören zur Zone 02_unten.
      In den Zonen sind unterschiedliche Schnitthöhen eingestellt.
      '{
          "01_oben" : {
            "condition" : "$latitude > 52.6484600648553 || $longitude > 9.54799477359984 && $latitude > 52.64839739580418",
            "cuttingHeight" : "7"
        },
          "02_unten" : {
            "condition" : "undef",
            "cuttingHeight" : "3"
        }
      }'
    • calculateReadings
      attr <name> calculateReadings <nextStart>
      Berechnet nextStart wenn der Wert nicht per Plannerevent geliefert wird.
    • addPollingMinInterval
      attr <name> addPollingMinInterval <interval in seconds>
      Setzt das Mindestintervall für zusätzliches Polling der API nach einem websocket event, default 0 (kein Polling). Liest periodisch zusätzlich Mäherdaten von der API. Es muss sichergestellt werden, das die API Begrenzung (10000 Anfragen pro Monat) eingehalten wird.
    • addPositionPolling
      attr <name> addPositionPolling <[1|0]>
      Setzt das Positionspolling, default 0 (kein Positionpolling). Wertet periodisch die API Positiondaten des Mähers aus, statt der über Websocket gelieferten Daten. Das Attribut ist nur wirksam, wenn durch das Attribut addPollingMinInterval das Polling eingeschaltet ist.
    • mowingAreaHull
      attr <name> mowingAreaHull <use button 'mowingAreaHullToAttribute' to fill the attribute>

      Enthält die berechneten Hüllenkooordinaten als JSON String und wird gesetzt durch den Button 'mowingAreaHullToAttribute' unterhalb der angezeigten Karte.
      Das gespeicherte Hüllenpolygon wird wie die anderen Grenzen angezeigt.
      Mit dem Designattribut 'hullResolution' kann die Anzahl der Brechungen beeinflusst werden ℕ, Default 40.
      Das Hüllenpolygon wird berechnet wenn das Designattribute gesetzt ist, hullCalculate="1" und es mehr als 50 Wegpunkte der Aktivität MOWING gibt.
      Die Berechnung wird beim Laden oder Wiederladen der Website ausgeführt.
      Die Berechnung stopt wenn dieses Attribut gesetzt ist und startet wenn das Attibut gelöscht wird.
      Das Attribut weekdaysToResetWayPoints sollte auf - und das Designattribut mowingPathUseDots sollte auf "1" gesetzt werden.
      Befindet sich ein Polygon im Attribut, besteht die Möglichkeit das Polygon anzupassen.
      Das Designattribut hullSubtract kann auf eine natürliche Zahl {ℕ} gesetzt werden, die angibt in welcher Rekursionstiefe Polygonpunkte aus der Menge der Wegpunkte entfernt werden.
      Das reduziert Ausreißer im Randbereich der vom Polygon umschlossenen Fläche.
      Wenn hullSubtract="" gesetzt wird, dann wird der Button 'Subtract Hull' entfernt.
    • mowerPanel
      attr <name> mowerPanel <html code>
      Zeigt HTML Kode unterhalb der Karte z.B. für ein Panel mit Kurzbefehlen.
      Das command Attribut beinhaltet den Mäherbefehl, ohne set <name>
      command="Start 210" steht für set <name> Start 210
      Eine Direktive als Kommentar in der ersten Zeile erlaubt die Positionierung:
      • <!-- ON_TOP --> zeigt das Panel über der Karte an.
      Das Panel muss in einem div-Element eingebettet sein das ein HTML-Attribut data-amc_panel_inroom=<"1"|""> enthält. Das Panel wird in der Raumansicht, z.B. bei uiTable, weblink, usw., angezeigt wenn der Wert "1" ist und versteckt falls der Wert "" ist, s. Bsp.
      Beispiel:
      <style>
      .amc_panel_button {height:50px; width:150px;}
      .amc_panel_div {position:relative; left:348px; top:-330px; z-index: 2; width:150px; height:1px}
      </style>
      <div class="amc_panel_div" data-amc_panel_inroom="1" >
      <button class="amc_panel_button" command="Start 210" >Start für 3 1/2 h</button>
      <button class="amc_panel_button" command="Pause" >Pause bis auf Weiteres</button>
      <button class="amc_panel_button" command="ResumeSchedule" >Weiter nach Plan</button>
      <button class="amc_panel_button" command="ParkUntilNextSchedule" >Parken bis nächsten Termin</button>
      <button class="amc_panel_button" command="ParkUntilNextSchedule" >Parken bis auf Weiteres</button>
      </div>
    • disable
    • disabledForIntervals

    userattr
      Die folgenden Benutzerattribute werden unterstützt.
    • loglevelDevIo
      attr <name> loglevelDevIo <[012345]>
      Setzt das Internal deviologlevel, DevIo: Wichtige_Internals_zur_Konfiguration
    • timeoutGetMower
      attr <name> timeoutGetMower <[6 to 60]>
      Setzt den Timeout für das Lesen der Mäherdaten, default 5 s.
    • timeoutApiAuth
      attr <name> timeoutApiAuth <[6 to 60]>
      Setzt den Timeout für die Authentifikation, default 5 s.
    • timeoutCMD
      attr <name> timeoutCMD <[6 to 60]>
      Setzt den Timeout für Befehl senden, default 15 s.

    • Wird ein Timeout auf 60 s gesetzt, wird die Antwortzeit gemessen und geloggt.
    • testing
      attr <name> testing 1
      Macht Befehle verfügbar, die mit Testing markiert sind.

    zusätzliche Events
      Eine Liste von Events zusätzlich zu den Readingsevents.
    • <device name>:AUTHENTICATION ERROR Fehler bei der Authentifizierung.
    • <device name>:MOWERAPI ERROR Fehler bei der Verbindung zur AutomowerConnect API.
    • <device name>:WEBSOCKET ERROR Fehler bei der Websocketverbindung.

    Readings
    • api_MowerFound - Alle Mähroboter, die unter dem genutzten Application Key (client_id) registriert sind.
    • api_callsThisMonth - Zählt die im Monat erfolgten API Aufrufe, wenn das Attribut addPollingMinInterval gesetzt ist.
    • api_token_expires - Datum wann die Session der Husqvarna Cloud abläuft
    • batteryPercent - Batterieladung in Prozent
    • mower_activity - aktuelle Aktivität "UNKNOWN" | "NOT_APPLICABLE" | "MOWING" | "GOING_HOME" | "CHARGING" | "LEAVING" | "PARKED_IN_CS" | "STOPPED_IN_GARDEN"
    • mower_commandSend - Letzter erfolgreich gesendeter Befehl.
    • mower_commandStatus - Status des letzten uebermittelten Kommandos wird duch Statusupdate zurückgesetzt.
    • mower_currentZone - Name der Zone im aktuell abgefragten Intervall der Statuszeitstempel , in der der Mäher gemäht hat und Anzahl der Wegpunkte in der Zone in Klammern.
    • mower_inactiveReason - Gründe für Inaktivität: NONE, PLANNING, SEARCHING_FOR_SATELLITES.
    • mower_wsEvent - Events der Websocketverbindung (battery-event-v2, calendar-event-v2, cuttingHeight-event-v2, headights-event-v2, messages-event-v2, mower-event-v2, planner-event-v2 and position-event-v2)
    • mower_errorCode - last error code
    • mower_errorCodeTimestamp - last error code time stamp
    • mower_errorDescription - error description
    • mower_mode - aktueller Arbeitsmodus "MAIN_AREA" | "SECONDARY_AREA" | "HOME" | "DEMO" | "UNKNOWN"
    • mower_state - aktueller Status "UNKNOWN" | "NOT_APPLICABLE" | "PAUSED" | "IN_OPERATION" | "WAIT_UPDATING" | "WAIT_POWER_UP" | "RESTRICTED" | "OFF" | "STOPPED" | "ERROR" | "FATAL_ERROR" |"ERROR_AT_POWER_UP"
    • planner_nextStart - nächste Startzeit
    • planner_restrictedReason - Grund für Parken NOT_APPLICABLE, NONE, WEEK_SCHEDULE, PARK_OVERRIDE, SENSOR, DAILY_LIMIT, FOTA, FROST
    • planner_overrideAction - Grund für vorrangige Aktion NOT_ACTIVE, FORCE_PARK, FORCE_MOW
    • state - Status der Websocketverbindung der Husqvarna API.
    • device_state - Status der Verbindung des FHEM-Gerätes zur Husqvarna Cloud API (defined, authentification, authentified, connected, error, update).
    • settings_cuttingHeight - aktuelle Schnitthöhe aus der API
    • settings_headlight - aktueller Scheinwerfermode aus der API
    • statistics_newGeoDataSets - Anzahl der neuen Datensätze zwischen den letzten zwei unterschiedlichen Zeitstempeln
    • statistics_numberOfCollisions - Anzahl der Kollisionen (laufender Tag/letzter Tag/alle Tage)
    • status_connected - Status der Verbindung zwischen dem Automower und der Husqvarna Cloud.
    • status_statusTimestamp - Lokalzeit des letzten Updates der API
    • status_statusTimestampDiff - Zeitdifferenz zwischen dem letzten und vorletzten Update.
    • system_name - Name des Automowers
    • third_party_library - Info, dass die JS-Bibliothek geladen wurde. Das Reading kann bedenkenlos gelöscht werden.

BDKM

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

BEOK

[EN DE]
    BEOK implementiert die Verbindung zu einem BEOK / Floureon / Hysen WiFi Raum Thermostaten
    Wiki : https://wiki.fhem.de/wiki/BEOK

    Da das Modul AES-Verschlüsselung benötigt müssen ggf. noch zusätzliche Perl Module installiert werden.
    Bsp. für Debian/Raspian :
    sudo apt-get install libcrypt-cbc-perl
    sudo apt-get install libcrypt-rijndael-perl
    sudo apt-get install libssl-dev
    sudo cpan Crypt/OpenSSL/AES.pm



    Define
      define <name> BEOK <ip> [mac]

      Beispiel: define WT BEOK 192.178.1.100
      define WT BEOK 192.178.1.100 01:02:03:04:05:06
      Es wird empfohlen die MAC Adresse mit anzugeben. Z.z ist noch nicht geklärt ob sonst eventuell vermehrte Timeouts die Folge sind.


    Set

    • mode <auto manual>

    • loop <12345.67 123456.7 1234567>
      12345.67 Montag - Freitag Werktag, Samstag & Sonntag sind Wochenende
      123456.7 Montag - Samstag Werktag, nur Sonntag ist Wochendende
      1234567 jeder Tag (inklusive Samstag & Sonntag) ist ein Werktag, kein Wochenende

    • sensor <external internal both>
      both = internal control temperature, external limit temperature

    • time
      setzt Uhrzeit und Wochentag

    • lock <on off>

    • power-on-memory <on off>

    • fre <open close>
      Frostschutz Funktion

    • room-temp-adj <-5 - +5>
      Korrekturwert (Offset) Raumtemperatur

    • osv <5 - 99>
      Maximum Temperatur für externen Sensor

    • svh <5 - 99>
      Raumtemperatur Maximum

    • svl <5 - 99>
      Raumtemperatur Minimum

    • dif <1 - 9>
      difference of limit temperature value of external sensor

    • day-profil[1-6]-temp <5 - 99>
      Werktagprofil Temperatur

    • day-profil[1-6]-time <00:00 - 23:59>
      Werktagprofil Zeit

    • we-profile[7-8]-temp <5 - 99>
      Wochenendprofil Temperatur

    • we-profile[7-8]-time <00:00 - 23:59>
      Wochenendprofil Zeit

    • weekprofile
      Setzt alle Wochentag Schaltzeiten und Temperaturen mit Werten aus einem Profil des Moduls weekprofile.
      Syntax : set weekprofile <weekprofile_device:profil_name[:Wochentag]>
      siehe auch Erklärung im Forum bzw. im Wiki.

    Attribute
    • display
      auto | always_on , default auto
      Displaybeleuchtung bei jeder Statusabfrage einschalten (always_on). Wird ausserdem das Attribut interval auf eine Zeit kleiner 9 Sekunden gesetzt, so leuchtet das Display dauerhaft.
      ACHTUNG dies hat eine wesentlich höhere Funklast zur Folge !
      D.h. die Wahrscheinlichkeit von gelegentlichen Timeouts wird stark zunehmen, siehe auch Attribut skipTimeouts.

    • interval
      Poll Intevall in Sekunden, 0 = kein Polling , default 60

    • keepAuto
      0 | 1 , default 0 (aus)
      Schaltet das Thermostat kurz vor Ende eines Tages in den Mode auto sollte es sich zu diesem Zeitpunkt im Mode manu befinden.

    • language
      DE für deutsche Bezeichnungen in der Übersicht, z.B. Raum statt Room , usw.

    • maxErrorLog
      Default : 10
      maximale Anzahl wie oft die gleiche Fehlermeldung in die Log Datei geschrieben wird.

    • model
      nur für die FHEM Modul Statistik unter https://fhem.de/stats/statistics.html

    • skipTimeouts
      0 - 9 , default 1
      Anzahl der max. zulässigen Timeouts in Folge ohne das ein Logeintrag bzw. eine Fehlermeldung erfolgt (default 1)

    • timeout
      Timeout in Sekunden für die Wlan Kommunikation, default 5
      ACHTUNG in Verbindung mit dem Attribut display = alaways_on darf diese Wert niemals grösser als als das Attribut interval sein !

    • timesync
      Uhrzeit und Wochentag automatisch mit FHEM synchronisieren, default 1 (an)
      Setzt automatisch FHEM Zeit und Wochentag im Thermostsat.

BOSEST

[EN DE]
    BOSEST ist ein Modul um ein BOSE SoundTouch System zu steuern, (ein oder mehrere SoundTouch 10, 20 30, 300 oder Portable Geräte)

    Hinweis: Für das BOEST Modul sind folgende Bibliotheken erforderlich:
    • libwww-perl
    • libmojolicious-perl
    • libxml-simple-perl
    • libnet-bonjour-perl
    • libev-perl
    • liburi-escape-xs-perl
    • sox
    • libsox-fmt-mp3

    • Rufe sudo apt-get install libwww-perl libmojolicious-perl libxml-simple-perl libnet-bonjour-perl libev-perl liburi-escape-xs-perl auf, um diese Bibliotheken zu installieren.
      Hinweis:libmojolicious-perl muss mindestens die Version 5.54 haben.
      Rufe sudo apt-get install cpanminus and sudo cpanm Mojolicious auf, um auf die aktuelle Version zu updaten.

      Die Konfiguration von TTS (TextToSpeech) ist in diesem FHEM Forum Beitrag beschrieben: Link
      Fragen und Feedback bitte über das FHEM Forum: Link

    Define
      define <name> BOSEST

      Beispiel:
        define bosesystem BOSEST
        Definiert das BOSE SoundTouch System. Alle Lautsprecher erscheinen innerhalb von ca. 60 s unter "Unsorted" in FHEM.

    Set
      set <name> <command> [<parameter>]

      Die folgenden SET-Kommandos gelten für Lautsprecher (Ausnahme: autoAddDLNAServers ist nur für das Hauptmodul BOSEST) :

        Allgemein
      • on   -   Lautsprecher einschalten
      • off   -   Lautsprecher ausschalten
      • power   -   Wechselt zw. on und off
      • volume [0...100] [+x|-x]   -   Lautstärke setzen (direkt oder als ±x Differenz zur aktuellen Lautstärke)
      • channel 0...20   -   Present auswählen
      • saveChannel 07...20   -   Aktuelle Wiedergabe als Present 07 bis 20 speichern
      • play   -   Startet die Wiedergabe
      • pause   -   Pausiert die Wiedergabe
      • playpause   -   Wechselt zw. play und pause
      • stop   -   Stoppt die Wiedergabe
      • nextTrack   -   Nächsten Titel spielen
      • prevTrack   -   Vorherigen Titel spielen
      • playTrack name|location|source[|sourceAccount]   -   Sucht per DNLA nach dem Titel und spielt ihn ab
        Weitere Informationen:
        1. "Es ist immer nur eine Suche und die ist nach trackTitle, trackAlbum, trackArtist möglich, so wie in der SoundTouch App" (FHEM Forum Beitrag)
        2. "Einfach in der SoundTouch APP auf die Suche klicken und schauen, ob Playlists gefunden und abgespielt werden können." (FHEM Forum Beitrag)
      • mute on|off|toggle   -   Stummschaltung
      • shuffle on|off   -   Zufallswiedergabe
      • repeat all|one|off   -   Wiederholung
      • bass 0...10   -   Basseinstellung
      • recent 0...15   -   Anzahl der Namen, die in der recent list in readings aufgeführt werden
      • source bluetooth,bt-discover,aux mode, airplay   -   lokale Quelle auswählen

      • addDLNAServer Name1 [Name2] [Namex]   -   DLNA server Name1 (und Name2 bis Namex) zur BOSE Bibliothek hinzufügen
      • removeDLNAServer Name1 [Name2] [Namex]   -   DLNA server Name1 (und Name2 bis Namex) aus der BOSE Bibliothek entfernen

      Beispiel: set BOSE_1234567890AB volume 25  Setzt die Lautstärke des Lautsprechers BOSE_1234567890AB auf 25.


        Zeiten:
      • on-for-timer 1...x   -   Schaltet den Lautsprecher für x Sekunden ein
      • off-for-timer 1...x   -   Schaltet den Lautsprecher für x Sekunden aus
      • on-till hh:mm:ss   -   Schaltet den Lautsprecher bis zur angegebenen Zeit ein
      • off-till hh:mm:ss   -   Schaltet den Lautsprecher bis und zur angegebenen Zeit aus
      • on-till-overneight hh:mm:ss   -   Schaltet den Lautsprecher bis zur angegebenen Zeit am nächsten Tag ein
      • off-till-overneight hh:mm:ss   -   Schaltet den Lautsprecher bis zur angegebenen Zeit am nächsten Tag aus

      Beispiel: set BOSE_1234567890AB on-till 23:00:00  Schaltet den Lautsprecher BOSE_1234567890AB ein und um 23:00:00 Uhr aus.


        Multiroom:
      • createZone deviceID[,deviceID]   -   Legt eine Wiedergabe-Zone an und fügt einen oder mehrere Lautsprecher der Wiedergabezone hinzu
      • addToZone deviceID   -   Fügt einen Lautsprecher einer bestehenden Wiedergabe-Zone zu
      • removeFromZone deviceID   -   Entfernt einen Lautsprecher aus einer Wiedergabe-Zone
      • playEverywhere   -   Startet "Überall wiedergeben"
      • stopPlayEverywhere   -   Beendet "Überall wiedergeben"

      Beispiel 1: set BOSE_1234567890AB playEverywhere  Startet die Überall-Wiedergabe (Mit dem Lautsprecher BOSE_1234567890AB als Master-Lautsprecher).

      Beispiel 2: set BOSE_1234567890AB createZone AB1234567890,12AB34567890  Definiert BOSE_1234567890AB als Master-Lautsprecher und fügt BOSE_AB1234567890 und BOSE_12AB34567890 der Wiedergabe-Zone hinzu

      Hinweis: Drücken Sie 2x ein Present (innerhalb einer Sekunde) am Lautsprecher oder auf der Fernbedienung, wird "Überall Wiedergeben" ein oder ausgeschaltet.


        Uhr Anzeige (nur für ST20/30):
      • clock enable/disable   -   Schaltet die Uhrenanzeige im Standby um

      Beispiel: set BOSE_1234567890AB clock enable  Zeigt die Uhr im Standby auf dem Display des ST20/30 an.


        TextToSpeach (benötigt Google Translate):
      • speak "message" [0...100] [+x|-x] [en|de|xx]   -   Text den der Lautsprecher sagen soll, ggf. mit Lautstärkeangabe, die für diese Ansage verwendet werden soll. Nach der Ansage setzt der Lautsprecher die Wiedergabe fort.
      • speakOff "message" [0...100] [+x|-x] [en|de|xx]   -   Text den der Lautsprecher sagen soll, ggf. mit Lautstärkeangabe, die für diese Ansage verwendet werden soll. Nach der Ansage schaltet der Lautsprecher ab.

      Beispiel: set BOSE_1234567890AB speakOff "Ab isn Bett." 30 en  Spricht die Meldung mit Lautstärke 30 und schaltet den Lautsprecher dann aus.


        DNLA Server:
      • autoAddDLNAServers 0|1   -   1=automatisch alle DLNA servers zur BOSE Bibliothek hinzufügen. Dieser Parameter ist nur für das Hauptmodul BOSEST, nicht für die Lautsprecher!

    Get
      n/a

    Attribute
      • staticIPs IP-Address [,IP-Address]  -   Manuelle Angabe der IP Adresse(n). Sollte nur verwendet werden, wenn die automatiche Erkennung nicht funktioniert. (z.B. bei mehreren Sub-Netzwerken oder wenn Teile des Netzwerks manuell verbunden werden, ...)
        Beispiel: attr bosesystem staticIPs 192.168.1.52,192.168.1.53
      • speakChannel channel(s)   -   Ansage des aktuellen Present vor der Wiedergabe, sinnvoll für SoundTouch Lautsprecher ohne Display (Angabe komma-separiert oder als Bereich: z.B. 2,3,5,6 oder 1-6 ). TTS muss eingerichtet sein.
      • auto-zone on|off   -   "Überall Wiedergabe" automatisch starten, wenn Lautsprecher das gleiche wiedergeben ("contentItemLocation" ist identisch); (Standardwert: off)
      • ttsDirectory "directory"   -   Angabe des DLNA TTS Verzeichnisses. Der FHEM user muss Schreibrechte in diesem Verzeichnis haben.
      • ttsLanguage en|de|xx   -   Standardsprache für TTS setzen (default: en)
      • ttsSpeakOnError 0|1   -   0= Ansage "not available" unterdrücken
      • ttsVolume [0...100] [+x|-x]   -   Lautstärke setzen (direkt oder als ±x Differnez zur aktuellen Lautstärke)
      • Channel_07 to Channel_20 name|location|source|[sourceAccount]   -   Festlegen der Present 07 bis 20
        Bei Wiedergabe kann in den readings "ContentItemLocationName, ContentItemLocation, etc. " ausgelesen werden. Dies Daten können dann verwendet werden, um die Presents zu belegen.

BOTVAC

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

BRAVIA

[EN DE]
    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:
      • application
        Liste der Anwendungen. Anwendungen sind ab Modelljahr 2013 verfügbar.
      • channel
        Liste aller bekannten Kanäle. Das Modul merkt sich alle aufgerufenen Kanäle. Ab Modelljahr 2013 werden die Kanäle automatisch geladen (Anzahl siehe channelsMax).
      • channelDown
        Einen Kanal zurück schalten.
      • channelUp
        Einen Kanal weiter schalten.
      • enable
        Aktiviert den internen Task zum regelmäßigen Abrufen des Status des TV und weiterer Informationen.
      • disable
        Unterbricht den internen Task zum regelmäßigen Abrufen des Status des TV und weiterer Informationen.
      • input
        Liste der Eingänge. Eingänge sind ab Modelljahr 2013 verfügbar.
      • mute
        Direkte Stummschaltung erfolgt nur per aktiviertem Upnp.
      • off
        Schaltet den TV aus. Der State des Gerätes wird auf "set_off" gesetzt. Dieser Wert wird nach 60 Sekunden wieder überschrieben oder sobald der TV entsprechend "off" meldet.
      • on
        Einschalten des TV, ab Modelljahr 2013 per WOL. Der State des Gerätes wird auf "set_on" gesetzt. Dieser Wert wird nach 60 Sekunden wieder überschrieben oder sobald der TV entsprechend "on" meldet.
      • openUrl
        Öffnet eine URL auf dem Bildschirm. Diese Funktion ist ab Modelljahr 2013 verfügbar.
      • 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
      • requestReboot
        Startet den TV direkt neu. Diese Funktion ist ab Modelljahr 2013 verfügbar.
      • remoteControl
        Direktes Senden von Kommandos an den TV.
      • statusRequest
        Ruft die aktuellen Statusinformationen vom TV ab.
      • stop
        Stoppt die Wiedergabe einer Aufnahme, einer internen App, etc.
      • text
        Überträgt den eingegebenen Text in ein Textfeld der Anzeige.
      • toggle
        Wechselt den Einschaltstatus des TV.
      • tvpause
        Aktiviert den Timeshift-Modus.
      • upnp
        Aktiviert Upnp zum Abfragen und Einstellen der Lautstärke.
      • volume
        Direktes Setzen der Lautstärke erfolgt nur per aktiviertem Upnp.
      • volumeDown
        Verringert die Lautstärke.
      • volumeUp
        Erhöht die Lautstärke.

    Attributes
      attr <name> <attribute> <value>

      Attribute:
      • channelsMax
        Maximale Anzahl der im FHEMWEB angezeigten Kanäle. Der Standartwert ist 50.
      • macaddr
        Ermöglicht das Einschalten des TV per Wake-On-Lan.
      • wolBroadcast
        Broadcast-Adresse für die Wake-On-Lan Magic Packets. Der Standartwert ist 255.255.255.255.

BS

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

Babble

[EN DE]
    Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: Babble

BlinkCamera

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

Broadlink

[EN DE]
    Broadlink implementiert die Verbindung zu Broadlink Geräten - aktuell mit Broadlink RM Pro, welcher sowohl Infrarot als auch 433MHz aufnehmen und anschließend versenden kann. Zusätzlich werden RMMinis und die Wlan Steckdosen SP3 und SP3S unterstützt
    Das Modul benötigt AES-Verschlüsslung.
    In Windows installiert man die Untersützung mit:
    ppm install Crypt-CBC
    ppm install Crypt-OpenSSL-AES

    Auf Linux/Raspberry: sudo apt-get install libcrypt-cbc-perl
    sudo apt-get install libcrypt-rijndael-perl
    sudo cpan Crypt/OpenSSL/AES.pm


    Define
      define <name> Broadlink <ip/host> <mac> <type=rmpro or rmmini or sp3 or sp3s>

      Beispiel: define broadlinkWZ Broadlink 10.23.11.85 34:EA:34:F4:77:7B rmpro

      Die mac-Adresse des Gerätes muss im folgenden Format eingegeben werden: xx:xx:xx:xx:xx
      Der Typ sp3 wird für schaltbare Steckdosen genutzt. rmpro für alle anderen Geräte.

    Set für rmpro
    • set <name> <commandSend> <command name>

      Sendet ein vorher aufgenommenen Befehl
    • set <name> recordNewCommand <command name>

      Nimmt ein neuen Befehl auf. Man muss einen Befehlnamen angeben.
    • set <name> remove <command name>

      Löscht einen vorher aufgezeichneten Befehl.
    • set <name> rename <old command name> <new command name>

      Benennt einen vorher aufgezeichneten Befehl um.
    • set <name> getTemperature

      Ermittelt die aktuelle Temperatur die am Gerät gemessen wird.

    Set für rmmini
    • set <name> <commandSend> <command name>

      Sendet ein vorher aufgenommenen Befehl
    • set <name> recordNewCommand <command name>

      Nimmt ein neuen Befehl auf. Man muss einen Befehlnamen angeben.
    • set <name> remove <command name>

      Löscht einen vorher aufgezeichneten Befehl.
    • set <name> rename <old command name> <new command name>

      Benennt einen vorher aufgezeichneten Befehl um.

    Set für sp3
    • set <name> on

      Schaltet das Gerät an.
    • set <name> off

      Schaltet das Gerät aus.
    • set <name> toggle

      Schaltet das Gerät entweder ein oder aus.
    • set <name> getStatus

      Ermittelt den aktuellen Status des Gerätes.

    Set für sp3s
    • set <name> on

      Schaltet das Gerät an.
    • set <name> off

      Schaltet das Gerät aus.
    • set <name> toggle

      Schaltet das Gerät entweder ein oder aus.
    • set <name> getStatus

      Ermittelt den aktuellen Status des Gerätes.
    • set <name> getEnergy

      Ermittelt den aktuellen Stromverbrauch des angeschlossenen Gerätes.

    Attribute für alle Broadlink Gräte
    • socket_timeout

      Setzt den Timeout für die Gerätekommunikation.

CALVIEW

[EN DE]
    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!
    Bitte setzt das Attribut HideOlderThen in eurem CALENDAR_Device, da sonst auch vergangene Termine gezeigt werden.
Define
    define <Name> CALVIEW <Kalendername(n) getrennt durch ','> <next> <updateintervall in sek (default 43200)>
    define myView CALVIEW Googlekalender next
    define myView CALVIEW Googlekalender,holiday next 900
    - die Einstellung des Aktualisierungsintervalls wird normalerweise nicht benötigt, da jede Kalenderaktualisierung ein Caview-Update auslöst
Set
    update readings:
    set <Name> update
    set myView update

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

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

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

  • fulldaytext [text]
    Dieser Text wird bei ganztägigen Terminen in _timeshort Readings genutzt (default ganztägig)

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

  • maxreadings
    bestimmt die Anzahl der Termine als Readings

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

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

  • sourcecolor <calendername>:<colorcode>[,<calendername>:<colorcode>]
    Hier kann man die Farben für die einzelnen Calendar definieren die dann zb im Tabletui widget genutzt werden kann. Die calendar:color Elemente sind durch Komma zu trennen. So kann man zb die google-Kalender Farben auch in der TUI für eine gewohnte Anzeige nutzen.

  • timeshort
    0 Zeit in _timeshort Readings im Format 00:00:00 - 00:00:00
    1 Zeit in _timeshort Readings im Format 00:00 - 00:00

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

  • weekdayformat
    formatiert den Namen im Reading weekdayname
    - de-long - (default) Deutsch, lang zb Dienstag
    - de-short - Deutsch, kurze zb Di
    - en-long - English, lang zb Tuesday
    - en-short - English, kurze zb Tue

  • CDCOpenData

    [EN DE]
      Der DWD stellt Werte der pro Tag gefallenen Regenmengen zur Verfügung, die auf Regenradar-Messungen beruhen und deren Werte an die gemessenen Mengen der Wetterstation angeeicht wurden. Die räumliche Auflösung beträgt dabei 1 km, was die Daten für diejenigen interessant macht, die keine eigene Regenmengenmessung zur Verfügung haben.

      Define

        define <name> CDCOpenData [<name>:]latitude,longitude>
        Die Parameter latitude,longitude definieren die Lokation.
        [<name>:] ist ein optionaler sprechender Name für die Lokation.
        Werden die Parameter nicht angegeben wird die Lokation aus den globalen Attribute latitude,longitude ermittelt.
        Sind diese nicht definiert wird die Standardlokation 49.473067,6.3851 für Deutschland herangezogen.

        Beispiel: define DWDRegen CDCOpenData ...

      Set
      • set <name> update

        Startet eine Aktualisierung der Daten.

      • set <name> htmlBarAsStateFormat <on|off>

        Definiert eine HTML Bar zur Anzeige des Regen Radars im Attribut stateFormat.
        Um die Änderung zu persistieren muss sie durch klicken auf 'Save config' gesichert werden.
        Die Funktion zur Generierung kann auch für die Defintion eines weblink Device genutzt werden.
        defmod <barName> weblink htmlCode {CDCOpenData_radar2html('<nameCDCDevice>', '<readingName_rain_radar>')}

      Get
      • get <name> rainbyLatLongDate [latitude,longitude] [date]

        <latitude,longitude> Wert-Latitude,Wert-Longitude <date> Datum in der Formatierung yyyy-mm-dd

      • get <name> rainSinceMidnight [latitude,longitude]

        <latitude,longitude> Wert-Latitude,Wert-Longitude

      • get <name> rainRadar [latitude,longitude]

        <latitude,longitude> Wert-Latitude,Wert-Longitude

      Attributes

      • INTERVAL <seconds>

        Abfrage-Interval. Standard ist 300 (Sekunden). Der kleinste mögliche Wert ist 60.
        Wird das Attribut cronTime gesetzt, dann ist INTERVAL deaktiviert.

      • attr <name> verbose <0 .. 5>
        Wird verbose auf den Wert 5 gesetzt, so werden alle Log-Daten in eine eigene Log-Datei geschrieben.
        Name der Log-Datei:deviceName_debugLog.dlog
        Im INTERNAL Reading DEBUGLOG wird ein Link <DEBUG Log kann hier eingesehen werden> zur direkten Ansicht des Logs angezeigt.
        Weiterhin wird ein FileLog Device:deviceName_debugLog im selben Raum und der selben Gruppe wie das CDCOpenData Device erzeugt.
        Wird verbose auf kleiner 5 gesetzt, so wird das FileLog Device gelöscht, die Log-Datei bleibt erhalten. Wird verbose gelöscht, so werden das FileLog Device und die Log-Datei gelöscht.

      • attr <name> FhemLog3Std <0 | 1>
        Wenn gesetzt, werden die Log Informationen im Standard Fhem Format geschrieben.
        Sofern durch ein verbose 5 die Ausgabe in eine seperate Log-Datei aktiviert wurde, wird diese beendet.
        Die seperate Log-Datei und das zugehörige FileLog Device werden gelöscht.
        Wird das Attribut auf 0 gesetzt oder gelöscht und ist das Device verbose auf 5 gesetzt, so werden alle Log-Daten in eine eigene Log-Datei geschrieben.
        Name der Log-Datei:deviceName_debugLog.dlog
        Im INTERNAL Reading DEBUGLOG wird ein Link <DEBUG Log kann hier eingesehen werden> zur direkten Ansicht des Logs angezeigt.

      • attr <name> clearRadarFileLog <name of FileLog device>
        Wenn gesetzt wird das FileLog des FileLog Device bei einem Update Regen Radar geleert.
        Macht nur Sinn für FileLogs, die die Daten des Regen Radars für eine Grafik verwenden.

      • attr <name> RainRadarFileLog <name of FileLog device>
        Wenn gesetzt, wird ein FileLog Device angelegt.
        Das FileLog des FileLog Device wird bei jedem Update Regen Radar geleert.
        Macht nur Sinn für FileLogs, die die Daten des Regen Radars für eine Grafik verwenden.

      • attr <name> ownRadarFileLog <0 | 1>
        Wenn gesetzt, wird eine Log Datei: deviceName_rainLog.log direkt über das Modul erzeugt.
        Die Log Datei beinhaltet immer nur die aktuellen Werte.
        Zusätzlich wird ein FileLog Device mit dem Namen deviceName_rainLog im selben Raum und der selben Gruppe erzeugt.

      • attr <name> cronTime <* * * * *>
        CRON Regel. Wenn gesetzt, dann wird die Ausführung über diese Regel gesteuert.
        Standard ist jede Stunde.

      • attr <name> enableDWDdata <rainByDay, rainSinceMidnight, rainRadarbyLocation>

        Anwählen, welche Daten periodisch abgeholt werden. In der Standardeinstellung werden keine Daten vom DWD abgeholt.

      • attr <name> locations <[name:]latitude,longitude> [[name:]<latitude,longitude>] ...

        Durch Leerzeichen getrennte Liste von Lokationen, die zusätzlich zur Standard-Lokation abgefragt werden sollen.
        <name[:]> ist ein optionaler sprechender Name für die Lokation.

      • attr <name> nonblockingTimeOut <50|75|100|125>

        Timeout für das regelmäßige Holen der Daten. Standard ist 55 (Sekunden).

      • attr <name> numberOfDays <0..9>

        Anzahl der Tage, für die Daten *_day_rain als Reading vorgehalten werden. Standard sind 5 Readings.

      • attr <name> updateOnStart <0 | 1>

        Wenn gesetzt und der CRON Timer ist aktiv, dann werden die Daten direkt nach der Definition oder Start von Fhem geholt. Ansonsten mit Ablauf des Timers.


      Readings
        Der Wert -1 kennzeichnet einen fehlerhaften Wert seitens des DWD
      • name | loc0..n_day_rain/nn - Regenmenge der Lokation name | n
      • name | loc0..n_since_midnight - Regenmenge der Lokation name | n
      • name | loc0..n_rain_radar/nn - Regenmenge der Lokation name | n

    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

    COE_Node

    [EN DE]
    Define
      define <name> COE_Node <CAN-Node ID>

      Repräsentiert einen einzelnen CanOverEthernet Node. Wird normalerweise automatisch erstellt.
      Beispiel:
        define COE_Node_coe_2 COE_Node 2
      Die eintreffenden Werte müssen noch im Attribut 'readingsConfig' einem Reading zugewiesen werden.


    Attributes

    • readingsConfigAnalog {index=reading-name}
      Ordnet analoge Werte einem Reading zu. zB 1=Durchfluss_Solar 2=T.Solar_Rücklauf
    • readingsConfigDigital {index=reading-name}
      Ordnet digitale Werte einem Reading zu. zB 1=Solarpumpe_Status 2=Wasserpumpe_Status

    CUL

    [EN DE]
      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
        • WMBus_C
          Für die Kommunikation mit Wireless M-Bus Geräten wie Wasser-, Gas- oder Elektrozählern. Wireless M-Bus verwendet drei unterschiedliche Kommunikationsarten, S-Mode, T-Mode und C-Mode. In diesem Modus ist der Empfang von anderen Protokollen wie SlowRF oder HomeMatic nicht möglich.

      • noRawReadLog
        In manchen Fällen ist der Empfang von verbose 5 / raw Logmeldungen störend, mit diesem Attribut kann man diese Ausgabe deaktivieren (Forum #122160)

      • 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

    [EN DE]
      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 CUL_EM 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

    [EN DE]
      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 "virtual" hinzugefügt oder geändert werden. Wichtig: Der Devicecode sollte nicht der FHTID entsprechen.

      D
        define <name> CUL_FHTTK <devicecode>

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

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

        set <name> <value>

        wobei value folgendes sein kann:
        • Closed
          setzt den Fensterstatus zu Closed

        • Open
          setzt den Fensterstatus zu Open

        • Pair
          startet das Anlernen an das FHT80B (FHT80B muss sich im Sync mode befinden) - danach wird der state auf "Closed" gesetzt

        • ReSync
          neu synchronisieren des virtuellen Sensor mit dem FHT80b Module. Damit wird ein virtueller Batteriewechsel simuliert und der angelernte Sensor wieder aufsynchronisiert. (aktuell nur mit Prototyp CUL FW verfügbar Forum 55774)


      Spezielles zum "ReSync" von vorhanden FHT80TFs nach einem CUL Firmware Reset:
      Nach einem Reset bzw. Neustart eines CUL Devices ist die Verbindung zwischen dem FHT80B und den virtuellen FHT80TFs unterbrochen. Dies kommt einem Batteriewechsel gleich. Die Kontakte sind weiterhin am FHT80B angelernt. Ein neues Pairen entfällt. Wenn mehrere vitruelle Kontakte verwendet werden, empfiehlt es sich diese in großen Abständen wieder zu synchronisieren!
      Mithilfe des Aufrufes der Funktion CUL_FHTTK_ReSyncAll() werden alle virtuellen Fensterkontakte nacheinander mit den FHT80B wieder synchronisiert. Der Abstand beträgt zwischen den einzelnen Sensoren 1 Stunde. Dies wird durch die 1% Regeln bestimmt, da pro Kontakt 480 credits innerhalb von 64 Sekunden verbraucht werden!

      Get
        N/A

      Attributes
      • do_not_notify

      • verbose

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

      • showtime

      • IODev

      • ignore

      • eventMap

      • readingFnAttributes

    CUL_HM

    [EN DE]
      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).
        • 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|List7]<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.
        • assignIO <IOname> <set|unset>
          IO-Gerät zur Liste der IO's hinzufügen oder aus dieser Löschen. Ändert das Attribut IOList entsprechend.

        subType abhängige Befehle:

        • switch
          • on - setzt Wert auf 100%
          • off - setzt Wert auf 0%
          • on-for-timer <sec> - Schaltet das Gerät für die gewählte Zeit in Sekunden [0-85825945] an.
            Hinweis: off-for-timer wie bei FS20 wird nicht unterstützt. Kann aber über Kanalregister programmiert werden.
          • on-till <time> - einschalten bis zum angegebenen Zeitpunkt.
              set <name> on-till 20:32:10
            Das momentane Maximum für eine Endzeit liegt bei 24 Stunden.
          • pressL <peer> [<repCount>] [<repDelay>]
            simuliert einen Tastendruck eines lokalen oder anderen peers.
            <peer> peer auf den der Tastendruck bezogen wird.
            <repCount> automatische Wiederholungen des long press.
            <repDelay> timer zwischen den Wiederholungen.
            Beispiel: set actor pressL FB_Btn01 # trigger long peer FB button 01
            set actor pressL FB_chn-8 # trigger long peer FB button 08
            set actor pressL self01 # trigger short des internen peers 01
            set actor pressL fhem02 # trigger short des FHEM channel 2
          • pressS <peer>
            simuliert einen kurzen Tastendruck entsprechend peerL
          • eventL <peer> <condition> [<repCount>] [<repDelay>]
            simuliert einen Event mit zusätzlichem Wert.
            <peer> peer auf den der Tastendruck bezogen wird.
            <codition>wert des Events, 0..255
            Beispiel: set actor eventL md 30 # trigger vom Bewegungsmelder mit Wert 30
          • eventS <peer> <condition>
            simuliert einen kurzen Event eines Peers des actors. Typisch senden Sensoren nur short Events.

        • dimmer, blindActuator
          Dimmer können virtuelle Kanäle unterstützen. Diese werden automatisch angelegt falls vorhanden. Normalerweise gibt es 2 virtuelle Kanäle zusätzlich zum primären Kanal. Virtuelle Dimmerkanäle sind standardmäßig deaktiviert, können aber parallel zum ersten Kanal benutzt werden um das Licht zu steuern.
          Die virtuellen Kanäle haben Standardnamen SW<channel>_V<nr> z.B. Dimmer_SW1_V1 and Dimmer_SW1_V2.
          Virtuelle Dimmerkanäle unterscheiden sich komplett von virtuellen Knöpfen und Aktoren in FHEM, sind aber Teil des HM-Geräts. Dokumentation und Möglichkeiten würde hier aber zu weit führen.
          • 0 - 100 [on-time] [ramp-time]
            Setzt den Aktor auf den gegeben Wert (In Prozent) mit einer Auflösung von 0.5.
            Bei Dimmern ist optional die Angabe von "on-time" und "ramp-time" möglich, beide in Sekunden mit 0.1s Abstufung.
            "On-time" verhält sich analog dem "on-for-timer".
            "Ramp-time" beträgt standardmäßig 2.5s, 0 bedeutet umgehend.
          • 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.
          • trgEventS [all|<peer>] <condition>
            Initiiert ein eventS fuer die peer entity. Wenn all ausgewählt ist wird das Kommando bei jedem der Peers ausgeführt. Siehe auch eventS
            <condition>: Ist der Wert welcher mit dem Event versendet wird. Bei einem Bewegungsmelder ist das bspw. die Helligkeit.
          • trgEventL [all|<peer>] <condition>
            Initiiert ein eventL fuer die peer entity. Wenn all ausgewählt ist wird das Kommando bei jedem der Peers ausgeführt. Siehe auch eventL
            <condition>: is the condition being transmitted with the event. E.g. the brightness in case of a motion detector.
          • trgPressS [all|<peer>]
            Initiiert ein pressS fuer die peer entity. Wenn all ausgewählt ist wird das Kommando bei jedem der Peers ausgeführt. Siehe auch pressS
          • trgPressL [all|<peer>]
            Initiiert ein pressL fuer die peer entity. Wenn all ausgewählt ist wird das Kommando bei jedem der Peers ausgeführt. Siehe auch pressL
          • peerSmart [<peer>]
            Das Kommando ist aehnlich peerChan mit reduzierten Optionen.
            peerSmart peert immer single mode (siehe peerChan). Die Funktionalitaet über das setzen der Register erstellt (kein grosser Unterschied zu peerChan).
            Smartes Registersetzen unterstützt bspw hmTemplate.
          • 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.
          • tplDel =>" <template>
            Löscht eine Template Eintrag dieser entity.
          • tplSet_<peer> =>" <template>
            setzt ein Template für einen Peer der Entity. Mögliche Parameter des Templates werde auf den aktuellen Wert der Register gesetzt. Die Parameter können danach mit dem Kommando tplPara* geaendert werden.
            Das Kommando steht nur zu Verfügung wenn HMinfo definiert ist und ein passendes Template erstellt ist.
            Sollte das Template dediziert einem langen (long) oder kurzen (short) Trigger zugeordnet werden wird je ein Kommando zu Verfügung gestellt - siehe long oder short am Ende des Kommandos.
          • tplParaxxx_<peer>_<tpl>_<param> =>" <template>
            Ein Parameter eines zugewiesenen Templates kann geaendert werden. Das Kommando bezieht sich auf genau einen Parameter eines Templates.

        • 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 einen "Roh"-Befehlen. 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

      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.
      • list (normal|hidden);
        triggern des list commandos fuer die entity normal oder inclusive der verborgenen parameter
      • 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
      • readingOnDead
        definiert wie readings behandelt werden sollten wenn das Device als 'dead' mariert wird.
        Das Attribut ist nur auf Devices anwendbar. Es ändert die Readings wenn das Device nach dead geht. Beim Verlasen des Zustandes 'dead' werden die ausgewählten Readings nach 'notDead' geändert. Es kann erwartet werden, dass sinnvolle Werte vom Device eingetragen werden.
        Optionen sind:
        noChange: keine Readings ausser Actvity werden geändert. Andere Einträge werden ignoriert.
        state: das Reading 'state' wird auf 'dead' gesetzt.
        periodValues: periodische numerische Readings des Device werden auf '0' gesetzt.
        periodString: periodische string Readings des Device werden auf 'dead' gesetzt.
        channels: die Readings der Kanäle werden ebenso wie die des Device behandelt und auch geaendert.
        custom readings: der Anwender kann weitere Readingnamen eintragen, welche ggf. auf 'dead' zu setzen sind.

        Beispiel:
          attr myDevice readingOnDead noChange,state # kein dead marking - noChange hat Prioritaet
          attr myDevice readingOnDead state,periodValues,channels # Empfohlen. Reading state des device und aller seiner Kanäle werden auf 'dead' gesetzt. Periodische nummerische werden werden auf 0 gesetzt was Auswirkungen auf die Grafiken hat.
          attr myDevice readingOnDead state,channels # Reading state des device und aller seiner Kanäle werden auf 'dead' gesetzt.
          attr myDevice readingOnDead periodValues,channels # Numerische periodische Readings des Device und der Kanaele werden auf '0' gesetzt
          attr myDevice readingOnDead state,deviceMsg,CommandAccepted # beim Eintreten in dead state,deviceMsg und CommandAccepted des Device werden, wenn verfuegbar, auf 'dead' gesetzt.
      • aesCommReq
        wenn gesetzt wird IO AES signature anfordern bevor ACK zum Device gesendet wird.
      • actAutoTry
        actAutoTry 0_off,1_on
        setzen erlaubt dem ActionDetector ein statusrequest zu senden falls das Device dead markiert werden soll. Das Attribut kann für 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.
      • aesKey
        Spezifiziert, welcher aes key verwendet wird, falls aesCommReq aktiviert wird.
      • 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 beachten ist, dass das Register "burstRx" im Gerät ebenfalls gesetzt werden muss.
      • expert
        Dieses Attribut steuert die Sichtbarkeit der Register Readngs. Damit wird die Darstellung der Geräteparameter kontrolliert.
        Es handdelt sich um einen binaer kodierten Wert mit folgenden Empfehlungen:
          0_defReg : default Register
          1_allReg : all Register
          2_defReg+raw : default Register und raw Register
          3_allReg+raw : alle Register und raw reading
          4_off : no Register
          8_templ+default: templates und default Register
          12_templOnly : nur templates
          251_anything : alles verfügbare
        Wird 'expert' auf ein Gerät angewendet so gilt dies auch für alle verknüpften Kanäle. Kann übergangen werden indem das Attribut ' expert' auch für den Gerätekanal gesetzt wird.
        Das Attribut "showInternalValues" bei den globalen Werten muss ebenfalls überprüft werden. "expert" macht sich diese Implementierung zu Nutze. Gleichwohl setzt "showInternalValues" - bei Definition - 'expert' außer Kraft .
      • readOnly
        beschränkt kommandos auf Lesen und Beobachten.
      • IOgrp
        kann an Devices vergeben werden und zeigt auf eine virtuelle VCCU. Das Setzen des Attributs führt zum Löschen des Attributs IODev da sich diese ausschliessen. Danach wird die VCCU beim Senden das passende IO für das Device auswählen. Es ist notwendig, dass die virtuelle VCCU definiert und alle erlaubten IOs eingetragen sind. Beim Senden wird die VCCU prüfen welches IO operational ist und welches den besten rssi-faktor für das Device hat.
        Optional kann ein bevorzugtes IO definiert werden. In diesem Fall wird es, wenn operational, genutzt - unabhängig von den rssi Werten.
        wenn kein IO aus VCCU's IOList verfügbar ist wird der Mechanismus gestoppt und nichts gesendet.
        Beispiel:
          attr myDevice1 IOgrp vccu
          attr myDevice2 IOgrp vccu:prefIO1,prefIO2,prefIO3
          attr myDevice2 IOgrp vccu:prefIO1,prefIO2,none
      • 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 'none' oder '0'setzen.
        Format ist <file>:<templatename>.
      • modelForce
        modelForce überschreibt das model attribut. Dabei wird das Device und seine Kanäle reconfguriert.
        Grund für dieses Attribut ist ein eQ3 bug bei welchen Devices mit falscher ID ausgeliefert werden. Das Attribut erlaubt dies zu ueberschreiben
        ACHTUNG: Durch das Eintragen eines anderen model werden die Entites modifiziert, ggf. neu angelegt oder gelöscht.
      • model
        wird automatisch gesetzt.
      • subType
        wird automatisch gesetzt.
      • 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.

    • 'param' definiert modelspezifische Verhalten oder Funktionen. Verfügbare Parameter für "param" (Modell-abhängig):
      • 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 valvePos 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.
      • switch
        levelInverse: siehe oben bei blind
      • sensRain
        siren
        powerMeter
        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


    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

    [EN DE]
      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
      • dummy

      • debug

      • do_not_notify

      • ignore

      • showtime

      • readingFnAttributes

      Events
        N/A

    CUL_REDIRECT

    [EN DE]
      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

    [EN DE]
      Das CUL_TCM97001 Modul verarbeitet von einem IO Gerät (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur \ Wind \ Rain - Sensoren.

      Unterstützte Modelle:
      • ABS700
      • AURIOL (ältere Sensoren mit nur Temperatur)
      • Auriol_IAN (NC-3982, ADE WS 1503, Tchibo 65 722)
      • Auriol_Z31743B
      • Eurochron
      • GT_WT_02
      • KW9010
      • KW9015 (TFA 30.3161)
      • Mebus
      • Mebus7312
      • NC_WS (PEARL NC7159)
      • TCM21....
      • TCM218943
      • TCM97...
      • Type1
      • PFR-130 (rain)
      • Prologue (GT-WT-01)
      • Rubicson
      • Ventus W155(Auriol): W044(temp/hum) W132(wind) W174(rain)

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

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

      Generierte Events:
      • temperature: Die aktuelle Temperatur
      • humidity: Die aktuelle Luftfeutigkeit (falls verfügbar)
      • battery: Der Batteriestatus: low oder ok (falls verfügbar)
      • channel: Kanalnummer (falls verfügbar)
      • trend: Der Temperaturtrend (falls verfügbar)
      • israining: Aussage Regen zwichen zwei Messungen (falls verfügbar)
      • rain: Der Regenwert, eine fortlaufende Zahl bis zum Batteriewechsel (falls verfügbar)
      • winddir: Die aktuelle Windrichtung
      • windgrad: Die aktuelle Windrichtung in Grad
      • windspeed: Die aktuelle Windgeschwindigkeit
      • windgust: Windböe

      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.
      • disableCreateUndefDevice (nur beim device Unknown)
        damit kann das Anlegen neuer Devices deaktiviert werden
        die neuen Devices (Modell + ID, ioname, Anzahl) werden im Device Unknown in den readings "undefModel_a" und "undefModel_b" gespeichert
      • disableUnknownEvents (nur beim device Unknown)
        damit können die events bei unbekannten Nachrichten deaktiviert werden
      • do_not_notify
      • ignore
      • model (Länge = Codelänge + 2)
        Länge = 8 (nur Temp)
        - ABS700
        - TCM97...
        Länge = 10 (nur Temp)
        - Mebus (CRC)
        - AURIOL
        - Auriol_Z31743B (Lidl Version: 09/2013), Z31743B IAN 91838 (checksum)
        Länge = 12
        - Eurochron
        - W174 (CRC)
        - TCM21.... (CRC)
        - W044 (CRC)
        - W132 (CRC)
        - GT_WT_02 (CRC)
        - Type1 (CRC)
        - Prologue (beginnt mit 9)
        - NC_WS (beginnt mit 5)
        - Rubicson (3. Stelle ist 8)
        - PFR_130 (CRC)
        - KW9010 und KW9015(CRC)
        - Auriol_IAN
        - Mebus7312 (7. Stelle ist F)
        - AURIOL nur Temp (Lidl Version: 09/2013), Z31743B IAN 91838
        - TCM218943
        Länge = 14
        - NX7674 (CRC)
      • max-deviation-temp: (Default:1, erlaubte Werte: 1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50)
        Maximal erlaubte Abweichung der gemessenen Temperatur zum vorhergehenden Wert in Kelvin.
      • max-diff-rain: Default:0 (deaktiviert)
        Maximal erlaubte Abweichung der Regenmenge zum vorhergehenden Wert in l/qm.
      • negation-batt: Battery reading invertieren
      • showtime
      • readingFnAttributes
      • windDirectionInverse: Wenn der Windmesser auf dem Kopf montiert wurde, kann damit die Windrichtung herumgedreht werden.

    CUL_TX

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

    CUL_WS

    [EN DE]
      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
      • strangeTempDiff DIFFVAL
        Falls gesetzt, werden nur solche Temperaturen akzeptiert, wo der Unterschied bei der gemeldeten Temperatur zum letzten Wert weniger als DIFFVAL ist.

    CULflash

    [EN DE]
      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".

    Calendar

    [EN DE]
      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).

        Die <URL> kann %-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)

        -Die wildcards werden bei jedem Kalenderupdate ausgewertet.
        -Die Auswertung von wildcards kann bei Bedarf fü einen Kalender deaktiviert werden, indem das Schlüsselwort 'noWildcards' dem Attribut 'quirks' hinzugefügt wird. Das ist nützlich bei url die bereits ein % enthalten, ohne damit ein wildcard zu kennzeichnen.

        Hinweise für Nutzer des Google-Kalenders:
        • Wildcards dürfen in Google Kalender URL nicht verwendet werden!
        • Du kannst direkt die private iCal-URL des Google-Kalenders nutzen.
        • Sollte deine Google-Kalender-URL mit https:// beginnen und das Perl-Modul IO::Socket::SSL ist nicht auf deinem System 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.
        Hinweis für Nutzer des Nextcloud-Kalenders: Du kannst eine URL der folgenden Form benutzen: https://admin:admin@demo.nextcloud.com/wid0ohgh/remote.php/dav/calendars/admin/personal/?export.

        Der optionale Parameter interval bestimmt die Zeit in Sekunden zwischen den Updates. Default-Wert ist 3600 (1 Stunde).
        Eine Intervallangabe von 0 ist nicht erlaubt. Diese wird automatisch durch den Standardwert 3600 ersetzt und im Log protokolliert.

        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
              

        Hinweis zur Erzeugung von Terminen:
        • Termine, die zum Zeitpunkt ihrer Erstellung mehr als 400 Tage in der Vergangenheit oder in der Zukunft liegen, werden ausgelassen. Dieses Zeitfenster kann durch die Attribute cutoffOlderThan und cutoffLaterThan noch verkleinert werden. Dies kann zur Folge haben, dass Termine jenseits dieses Horizonts niemals erstellt werden, solange der Kalender nicht neu initialisiert wird (set ... reload oder Neustart von FHEM) oder der VEVENT-Datensatz nicht verändert wird. Daher sollte ab und zu ein erzwungenes Neuladen eingeplant werden.

      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> events [format:<formatSpec>] [timeFormat:<timeFormatSpec>] [filter:<filterSpecs>] [series:next[=<max>]] [limit:<limitSpecs>] [include:<names>] [returnType:<returnTypeSpec>]

        Das Schweizer Taschenmesser für die Anzeige von Terminen. Die Termine des Kalenders <name> werden Zeile für Zeile entsprechend der Format- und Filterangaben ausgegeben. Keiner, einer oder mehrere der Parameter format, timeFormat, filter, series und limit können angegeben werden, weiterhin ist es sinnvoll, den Parameter filter mehrere Male anzugeben.

        Der Parameter format legt den zurückgegeben Inhalt fest.

        Folgende Formatspezifikationen stehen zur Verfügung:

        <formatSpec>Beschreibung
        defaultStandardformat (siehe unten)
        fullentspricht custom="$U $M $A $T1-$T2 $S $CA $L"
        textentspricht custom="$T1 $S"
        humansame as custom={ human($t1,$t2,$S) } - human() ist eine eingebaute Funktion, die das Ereignis in einem verdichteten menschenlesbaren Format ausgibt
        custom="<formatString>"ein spezifisches Format (siehe unten)
        custom="{ <perl-code> }"ein spezifisches Format (siehe unten)

        Einzelne Anführungszeichen (') können anstelle von doppelten Anführungszeichen (") innerhalb eines spezifischen Formats benutzt werden. Folgende Variablen können in <formatString> und in <perl-code> verwendet werden:

        variableBedeutung
        $t1Startzeit in Sekunden
        $T1Startzeit entsprechend Zeitformat
        $t2Endzeit in Sekunden
        $T2Endzeit entsprechend Zeitformat
        $aAlarmzeit in Sekunden
        $AAlarmzeit entsprechend Zeitformat
        $dDauer in Sekunden
        $DDauer in menschenlesbarer Form
        $SZusammenfassung
        $LOrtsangabe
        $CAKategorien
        $CLKlassifizierung
        $DSBeschreibung
        $UUID
        $MModus

        \, (maskiertes Komma) in Zusammenfassung, Ortsangabe und Beschreibung werden durch ein Komma ersetzt, aber \n (kennzeichnet Absatz) bleibt unberührt.

        Wird der Parameter format ausgelassen, dann wird die Formatierung aus defaultFormat benutzt. Ist dieses Attribut nicht gesetzt, wird "$T1 $D $S" als Formatierung benutzt. Das letzte Auftreten von format gewinnt bei mehrfacher Angabe.

        Examples:
        get MyCalendar events format:full
        get MyCalendar events format:custom="$T1-$T2 $S \@ $L"
        get MyCalendar events format:custom={ sprintf("%20s %8s", $S, $D) }

        Der Parameter timeFormat legt das Format für die Start-, End- und Alarmzeiten fest.

        In <timeFormatSpec> kann die POSIX-Spezifikation verwendet werden. Auf strftime.net gibt es ein Tool zum Erstellen von <timeFormatSpec>.

        Wenn der Parameter timeFormat ausgelassen, dann wird die Formatierung aus defaultTimeFormat benutzt. Ist dieses Attribut nicht gesetzt, dann wird "%d.%m.%Y %H:%M" als Formatierung benutzt. Zum Umschließen der Formatangabe können einfache (') oder doppelte (") Anführungszeichen verwendet werden.

        Das letzte Auftreten von timeFormat gewinnt bei mehrfacher Angabe.

        Example:
        get MyCalendar events timeFormat:"%e-%b-%Y" format:full

        Der Parameter filter schränkt die Anzeige der Termine ein. <filterSpecs> ist eine kommaseparierte Liste von <filterSpec>-Angaben. Alle Filterangaben müssen zutreffen, damit ein Termin angezeigt wird. Die Angabe ist kumulativ: jeder angegebene Filter wird zur Filterliste hinzugef&uum;gt und ber&uum;cksichtigt.

        <filterSpec>Beschreibung
        uid=="<uid>"UID ist <uid>
        entspricht field(uid)=="<uid>"
        uid=~"<regex>"Der reguläre Ausdruck <regex> entspricht der UID
        entspricht field(uid)=~"<regex>"
        mode=="<mode>"Modus ist <mode>
        entspricht field(mode)=="<mode>"
        mode=~"<regex>"Der reguläre Ausdruck <regex> entspricht mode
        entspricht field(mode)=~"<regex>"
        field(<field>)=="<value>"Inhalt von <field> ist <value>
        <field> ist eines von uid, mode, summary, location, description, categories, classification
        field(<field>)=~"<regex>"Inhalt von <field> entspricht dem regulären Ausdruck <regex>
        <field> ist eines von uid, mode, summary, location, description, categories, classification

        Die doppelten Anführungszeichen auf der rechten Seite von <filterSpec> sind nicht Teil des regulären Ausdrucks. Es können stattdessen einfache Anführungszeichen verwendet werden.

        Examples:
        get MyCalendar events filter:uid=="432dsafweq64yehdbwqhkd"
        get MyCalendar events filter:uid=~"^7"
        get MyCalendar events filter:mode=="alarm"
        get MyCalendar events filter:mode=~"alarm|upcoming"
        get MyCalendar events filter:field(summary)=~"Mama"
        get MyCalendar events filter:field(classification)=="PUBLIC"
        get MyCalendar events filter:field(summary)=~"Gelber Sack",mode=~"upcoming|start"
        get MyCalendar events filter:field(summary)=~"Gelber Sack" filter:mode=~"upcoming|start"

        Der Parameter series bestimmt die Anzeige von wiederkehrenden Terminen. series:next begrenzt die Anzeige auf den nächsten Termin der noch nicht beendeten Termine innerhalb der Serie. series:next=<max> zeigt die nächsten <max> Termine der Serie. Dies gilt pro Serie. Zur Begrenzung der Anzeige siehe den limit-Parameter.

        Der Parameter limit begrenzt die Anzeige der Termine. <limitSpecs> ist eine kommaseparierte Liste von <limitSpec> Angaben.

        <limitSpec>Beschreibung
        count=<n>zeigt <n> Termine, wobei <n> eine positive Ganzzahl (integer) ist
        from=[+|-]<timespec>zeigt nur Termine die nach einer Zeitspanne <timespec> ab jetzt enden; Minuszeichen für Termine in der Vergangenheit benutzen; <timespec> wird weiter unten im Attribut-Abschnitt beschrieben.
        to=[+|-]<timespec> zeigt nur Termine die vor einer Zeitspanne <timespec> ab jetzt starten; Minuszeichen für Termine in der Vergangenheit benutzen; <timespec> wird weiter unten im Attribut-Abschnitt beschrieben.
        when=today|tomorrowzeigt anstehende Termin für heute oder morgen an
        when=<D1>zeigt Termine für Tag <D1> von heute an, <D1>= 0 steht für heute, negative Werte sind erlaubt
        when=<D1>..<D2>zeigt Termine für den Tagesbereich von Tag <D1> bis Tag <D2> von heute an

        Examples:
        get MyCalendar events limit:count=10
        get MyCalendar events limit:from=-2d
        get MyCalendar events limit:when=today
        get MyCalendar events limit:count=10,from=0,to=+10d


        Der include Parameter schließt Termine aus anderen Kalendern ein. Das ist nützlich, um Termine aus anderen Kalendern in einer kombimierten Ausgabe anzuzeigen. <names> ist eine mit Kommas getrennte Liste der Namen von Calendar-Geräten. Der Name des Kalenders selbst sowie Duplikate werden stillschweigend ignoriert. Namen von Geräten, die es nicht gibt oder keine Calendar-Geräte sind, werden ignoriert und es wird eine Fehlermeldung ins Log geschrieben.

        Example:
        get MyCalendar events include:Feiertage,Müllabfuhr


        Der Parameter returnType wird verwendet, um die Termine als ein bestimmter Typ zurückzugeben. Das ist nützlich für Perl-Skripte.

        <returnTypeSpec>Beschreibung
        $textein mehrzeiliger String in menschenlesbarer Darstellung (Vorgabe)
        @textsein Array von Strings in menschenlesbarer Darstellung
        @eventsein Array von Calendar::Event-Hashs


      • get <name> find <regexp>
        Gibt zeilenweise die UID von allen Terminen aus, deren Zusammenfassung dem regulären Ausdruck <regexp> entspricht.

      • get <name> vcalendar
        Gibt den Kalender im ICal-Format aus, so wie er von der Quelle abgerufen wurde.

      • get <name> vevents
        Gibt eine Liste aller VEVENT-Einträge mit weiteren Informationen für Debugzwecke zurück. Nur Eigenschaften, die bei der Verarbeitung des Kalenders behalten wurden, werden gezeigt. Die Liste, der aus jedem VEVENT-Eintrag erstellten Termine, wird, ebenso wie die ausgelassenen Termine, gezeigt.

      Attribute

      • defaultFormat <formatSpec>
        Setzt das Standardformat für get <name> events. Der Aufbau wird dort erklät. <formatSpec> muss in doppelte Anführungszeichen (") gesetzt werden, wie z.B. attr myCalendar defaultFormat "$T1 $D $S".
      • defaultTimeFormat <timeFormatSpec>
        Setzt das Standardzeitformat für get <name> events. Der Aufbau wird dort erklät. <timeFormatSpec> nicht in Anführungszeichen setzten.
      • synchronousUpdate 0|1
        Wenn dieses Attribut nicht oder auf 0 gesetzt ist, findet die Verarbeitung im Hintergrund statt und FHEM wird während der Verarbeitung nicht blockieren.
        Wird dieses Attribut auf 1 gesetzt, findet die Verarbeitung des Kalenders im Vordergrund statt. Umfangreiche Kalender werden FHEM auf langsamen Systemen blockieren.

        Das Attribut wird ignoriert, falls FHEM unter Windows betrieben wird. In diesem Fall erfolgt die Verarbeitung immer synchron.
      • update none|onUrlChanged
        Wird dieses Attribut auf none gesetzt ist, wird der Kalender überhaupt nicht aktualisiert.
        Wird dieses Attribut auf onUrlChanged gesetzt ist, wird der Kalender nur dann aktualisiert, wenn sich die URL seit dem letzten Aufruf verändert hat, insbesondere nach der Auswertung von wildcards im define.
      • delay <time>
        Wartezeit in Sekunden nach der Initialisierung von FHEM oder einer Konfigurationsänderung bevor der Kalender tatsächlich von der Quelle geladen wird. Wenn nicht gesetzt wird eine Zufallszeit zwischen 10 und 29 Sekunden gewählt. Wenn mehrere Kalender definiert sind, führen gestaffelte Wartezeiten zu einer Verminderung der Ladefehleranfälligkeit.
      • timeout <time>
        Der Timeout in Sekunden um einen Kalender von seiner Quelle zu holen. Standard ist 30. Erhöhen für sehr große Kalender, bei denen es eine Weile dauert, sie an der Quelle zusammenzustellen und herunterzuladen.
      • removevcalendar 0|1
        Wenn dieses Attribut auf 1 gesetzt ist, wird der vCalendar nach der Verarbeitung verworfen, gleichzeitig reduziert sich der Speicherverbrauch des Moduls. Ein Abruf über get <name> vcalendar ist dann nicht mehr möglich.
      • hideOlderThan <timespec>
        hideLaterThan <timespec>

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

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

        <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
      • cutoffOlderThan <timespec>
        cutoffLaterThan <timespec>
        Diese Attribut schneidem alle Termine weg, die eine Zeitspanne cutoffOlderThan vor bzw. cutoffLaterThan nach der letzten Aktualisierung des Kalenders enden. Der Zweck dieses Attributs ist es Speicher und Verarbeitungszeit zu sparen. Auf solche Termine kann gar nicht mehr aus FHEM heraus zugegriffen werden.
      • onCreateEvent <perl-code>
        Dieses Attribut führt ein Perlprogramm <perl-code> für jeden erzeugten Termin aus. Weitere Informationen unter Plug-ins im Text.
      • SSLVerify
        Dieses Attribut setzt die Art der Überprüfung des Zertifikats des Partners bei mit SSL gesicherten Verbindungen. Entweder auf 0 setzen für SSL_VERIFY_NONE (keine Überprüfung des Zertifikats) oder auf 1 für SSL_VERIFY_PEER (Überprüfung des Zertifikats). Die Überprüfung auszuschalten ist nützlich für lokale Kalenderinstallationen(e.g. OwnCloud, NextCloud) ohne gütiges SSL-Zertifikat.
      • ignoreCancelled
        Wenn dieses Attribut auf 1 gesetzt ist, werden Termine im Status "CANCELLED" ignoriert. Dieses Attribut auf 1 setzen, falls Termine in einer Serie zurückgegeben werden, die gelöscht sind.
      • hasModeReadings
        Auf 1 setzen, um die veralteten mode-Readings zu benutzen.
      • quirks <values>
        Parameter für spezielle Situationen. <values> ist eine kommaseparierte Liste der folgenden Schlüsselwörter:
        • ignoreDtStamp: wenn gesetzt, dann zeigt ein verändertes DTSTAMP Attribut eines Termins nicht an, dass; der Termin verändert wurde.
        • noWildcards: wenn gesetzt, werden Wildcards in der URL des Kalenders nicht ersetzt.
      • readingFnAttributes

      Beschreibung

        Ein Kalender ist eine Menge von Terminen. Ein Termin hat eine Zusammenfassg;ung (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 gewiss;en 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; FHEM die künftigen Termine ausgehen. Du kann so etwas wie define reloadCalendar at +*240:00:00 set MyCalendar reload dafür verwenden.

        Manche dumme 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 Endzeit 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 Endzeiten aller Kalender-Ereignisse gewartet wird.

        Aus Gründen der Abwärtskompatibilität werden mode-Readings gefüllt, wenn das Attribut hasModeReadings gesetzt ist. Der Rest dieser Beschreibung bezieht sich auf diese veralteten mode-Readings.

        Ein Kalender-Device hat verschiedene mode-Readings. Jedes mode-Reading stellt eine semikolonseparierte Liste aus UID 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 Endmodus
        modeEndedEreignisse, welche gerade vom Start- in den Endmodus 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 identischer 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 Endzeit 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, das Termine nebenher verändern kann. Das Perl-Programm arbeitet mit der Hash-Referenz $e.
        Die wichtigsten Elemente sind:

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

        Zum Ergänzen einer fehlenden Endezeit, kann folgendes Plug-In benutzt werden:

        attr MyCalendar onCreateEvent { $e->{end}= $e->{start}+86400 unless(defined($e->{end})) }


      Anwendungsbeispiele

        Alle Termine inkl. Details anzeigen

          get MyCalendar events format:full
          2767324dsfretfvds7dsfn3e4­dsa234r234sdfds6bh874­googlecom 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 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 events timeFormat:'%d.%m.%Y %H:%M' format:custom='$T1 $S' filter:mode=~'alarm|start') }

          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 notif (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 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:.* { \
          my $reading="$EVTPART0";; \
          my $uid= "$EVTPART1";; \
          my $actor= fhem('get MyCalendar events filter:uid=="'.$uid.'" format:custom="$S"');; \
          if(defined $actor) { fhem("set $actor on") } \
          }

          define SwitchActorOff notify MyCalendar:end:.* { \
          my $reading="$EVTPART0";; \
          my $uid= "$EVTPART1";; \
          my $actor= fhem('get MyCalendar events filter:uid=="'.$uid.'" format:custom="$S"');; \
          if(defined $actor) { fhem("set $actor off") } \
          }


          Auch hier kannst du Aktionen mitloggen:

          define LogActors notify MyCalendar:(start|end):.* { my $reading= "$EVTPART0";; my $uid= "$EVTPART1";; \
          my $actor= fhem('get MyCalendar events filter:uid=="'.$uid.'" format:custom="$S"');; \
          Log3 $NAME, 1, "Actor: $actor, Reading $reading" }


        Benachrichtigen über Müllabholung

          Nehmen wir an der GarbageCalendar beinhaltet alle Termine der Müllabholung mit der Art des Mülls innerhalb der Zusammenfassung (summary). Das folgende notify kann zur Benachrichtigung über die Müllabholung benutzt werden:

          define GarbageCollectionNotifier notify GarbageCalendar:alarm:.* { \
          my $uid= "$EVTPART1";; \
          my $summary= fhem('get GarbageCalendar events filter:uid=="'.$uid.'" format:custom="$S"');; \
          # e.g. mail $summary to someone \
          }


          Wenn der Müllkalender keine Erinnerungen hat, dann kannst du sie auf auf einen Tag vor das Datum der Abholung setzen:

          attr GarbageCalendar onCreateEvent { $e->{alarm}= $e->{start}-86400 }

          Das folgende realisiert eine HTML Anzeige für die n&aauml;chsten Abholungstermine:

          { CalendarEventsAsHtml('GarbageCalendar','format:text filter:mode=~"alarm|start"') }
      Eingebettetes HTML

        Das Modul definiert zwei Funktionen an, die HTML-Code zurückliefern.

        CalendarAsHtml(<name>,<parameter>) liefert eine Liste von Kalendereinträgen als HTML zurück. <name> ist der Name des Kalender-Devices; <parameter> würdest Du nach get <name> text ... schreiben. Diese Funktion ist veraltert und sollte nicht mehr genutzt werden!.

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

        CalendarEventsAsHtml(<name>,<parameter>) liefert eine Liste von Kalender-Events zurück; zu name und parameters siehe oben.

        Beispiel

        define MyCalendarWeblink weblink htmlCode { CalendarEventsAsHtml('F','format:custom="$T1 $D $S" timeFormat:"%d.%m" series:next=3') }

        Empfehlung: Benutze einfache Anführungszeichen als äußere Anführungszeichen.

    CanOverEthernet

    [EN DE]
    Define
      define <name> CanOverEthernet

      Erstellt ein CanOverEthernet device. FHEM empfängt auf Port 5441 UDP broadcasts.
      Beispiel:
        define coe CanOverEthernet
      Die eingehenden Daten werden als readings in eigenen COE_Node devices gespeichert. Diese devices werden automatisch angelegt, sobald Daten dafür empfangen werden.
    Set
    • sendDataAnalog
      Veröffentlicht analoge Werte.
      Beispiel: set sendDataAnalog <Target-IP> <CAN-Channel> <Index>=<Value>;<Type>
      set coe sendDataAnalog 192.168.1.1 3 1=22.7;1 2=18.0;1
    • sendDataDigital
      Veröffentlicht digitale Werte. Also nur 0 oder 1.
      Beispiel: set sendDataDigital <Target-IP> <CAN-Channel> <Index>=<Value>
      set coe sendDataDigital 192.168.1.1 3 1=1 2=0

    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

    DENON_AVR

    [EN DE]
      Define
        define <name> DENON_AVR <ip-address-or-hostname[:PORT]>
        define <name> DENON_AVR <devicename[@baudrate]>

        Dieses Modul steuert DENON (Marantz) A/V-Receiver über das Netzwerk.

        Anstatt der IP-Addresse oder dem Hostnamen kann eine serielle Schnittstelle angegeben werden.

        Beispiele:

          define avr DENON_AVR 192.168.0.10

          # Unter Angabe eines bestimmten Ports
          define avr DENON_AVR 192.168.0.10:23

          # Mit serieller Schnittstelle
          define avr DENON_AVR /dev/ttyUSB0@9600


      Set
        set <name> <command> [<parameter>]

        Momentan sind folgende Befehle verfügbar:
        • allZoneStereo   -   allZoneStereo an/aus
        • audioRestorer   -   set audioRestorer off/low/medium/high
        • audysseyLFC   -   audysseyLFC an/aus
        • audysseyLFCAmount   -   set audysseyLFCAmount (1 - 7)
        • autoStandby   -   Zeit für den Auto-Standby setzen
        • bass   -   Bass-Pegel einstellen
        • channelVolume   -   Lautstärkepegel der aktiven Lautsprecher schrittweise setzen (up/down)
           Um alle Einstellungen zurückzusetzen, kann FactoryDefaults verwendet werden.
           Beispiel, wie der Lautstärkepegel direkt über die Kommandozeile gesetzt wird: set avr channelVolume FrontLeft -1
           (mögliche Werte sind -12 bis 12)
        • cinemaEQ   -   cinemaEQ an/aus
        • display   -   zur Auswahl der "Dim-Modi" des Displays
        • dynamicEQ   -   dynamicEQ an/aus
        • dynamicEQRefLevelOffset   -   set dynamicEQRefLevelOffset (0, 5, 10, 15)
        • dynamicVolume   -   Wert für dynamicEQ setzen (off/light/medium/heavy)
        • eco   -   zur Auswahl des Eco-Modus
        • favorite   -   zur Auswahl der Favoriten (nur alte Modelle)
        • favoriteList   -   zur Auswahl der Favoriten aus der Listenansicht (Workaround für Modelle >= 2014)
           Es wird emfohlen den Set-Befehl stream in Kombination mit dem Modul 98_DLNARenderer zu verwenden!
        • input   -   zur Auswahl der Eingänge
        • loudness   -   Loudness an/aus
        • lowFrequencyEffect   -   LFE-Pegel einstellen (-10 to 0)
        • multiEQ   -   Wert für multiEQ setzen (off/reference/bypassLR...)
        • mute on,off   -   AV-Receiver laut/stumm schalten
        • muteT   -   zwischen laut und stumm wechseln
        • off   -   Standby AV-Receiver
        • on   -   AV-Receiver anschalten
        • preset   -   zwischen Voreinstellungen (1-3, nur alte Modelle) wechseln
        • presetCall   -   zwischen Voreinstellungen (00-35, 00-55 alte Modelle) wechseln
        • presetMemory   -   Voreinstellungen speichern (00-35, 00-55 alte Modelle, für Aktivierung der alphanumerschen Liste A1-G8 das Attribut presetMode auf alphanumeric setzen)
        • quickselect   -   zur Auswahl der "Quick-Select" Modi (1-5, nur neue Modelle)
        • rawCommand   -   schickt ein "raw command" zum AV-Receiver
        • reconnect   -   stellt die Verbindung zum AV-Receivers wieder her
        • remoteControl   -   Fernbedienungsbefehle (play, stop, pause,...)
        • setup   -   Anzeige Onscreen-Setup an/aus
        • sleep   -   Sleep-Timer (aus/10 bis 120 min)
        • smartselect   -   Smart-Select Modus wählen (1-5, nur Marantz, für Aktivierung das Attribut brand auf Marantz setzen)
        • stream   -   Aufruf von Streams über Modul 98_DLNARenderer; eine Datei "Denon.streams" mit einer Liste von Streams muss im Ordner "fhem/FHEM" selbst angelegt werden.

          Format der Liste:
          Rockantenne<>http://mp3channels.webradio.antenne.de/rockantenne
          Bayern3<>http://streams.br.de/bayern3_2.m3u
          JamFM<>http://www.jam.fm/streams/jam-nmr-mp3.m3u

          Der Name des Recievers aus dem DLNARenderer-Modul muss als Attribut "dlnaName" im Denon-Modul gesetzt werden.
        • surroundMode   -   zur Auswahl der Surround-Modi
        • toggle   -   AV-Receiver an/aus
        • treble   -   Höhen-Pegel einstellen
        • trigger1   -   trigger1 an/aus
        • trigger2   -   trigger2 an/aus
        • tuner   -   zwischen AM und FM wechseln
        • tunerPreset   -   zwischen Radio Voreinstellungen (1-56) wechseln
        • tunerPresetMemory   -   Radio Voreinstellungen (1-56) speichern
        • usedInputs   -   zur manuellen Auswahl der genutzten Eingänge (z.B. AUX-Ausgänge hinzufügen/enfernen)
        • volume 0...98   -   Lautstärke in Prozent
        • volumeStraight -80...18   -   absolute Lautstärke in dB
        • volumeUp   -   erhöht Lautstärke
        • volumeDown   -   verringert Lautstärke


      Get
        get <name> <what>

        Momentan sind folgende Befehle verfügbar:
        • disconnect   -   Verbindung zum AV receiver trennen
        • mediaInfo   -   aktuelle Medieninformationen abrufen
        • reconnect   -   Verbindung zum AV receiver wiederherstellen
        • remoteControl   -   Fernbedienung automatisch erzeugen lassen
        • statusRequest   -   Status neu laden
        • diverse Readings   -   siehe Liste unten
        • zone   -   Zonen automatisch erzeugen lassen

        Erzeugte Readings/Events:

        Einige Statusmeldungen werden vom AV-Reciever nur gesendet, wenn die entsprechende
        Einstellung (z.B. ampAssign) geändert wird oder der Reciever wieder ans Stromnetz
        angeschlossen wird (muss ca. 5 min vom Strom getrennt sein!).

        • ampAssign   -   Endstufenzuweisung des AV-Receiver (5.1, 7.1, 9.1,...)
        • audioRestorer   -   audioRestorer Level (off, low, medium, high)
        • autoStandby   -   Standbyzustand des AV-Recievers
        • bass   -   Bass-Level in dB
        • currentAlbum   -   aktuelles Album (Mediaplayer, Online Music,...)
        • currentArtist   -   aktueller Künstler (Mediaplayer, Online Music,...)
        • currentBitrate   -   aktuelle Bitrate (Mediaplayer, Online Music,...)
        • currentMedia   -   aktuelle Quelle (Mediaplayer, Online Music,...)
        • currentStation   -   aktueller Sender (Online Radio)
        • currentTitle   -   aktueller Titel (Mediaplayer, Online Music,...)
        • display   -   Dim-Status des Displays
        • dynamicCompression   -   Status der dynamischen Kompression
        • eco   -   Eco-Status
        • input   -   gewählte Eingangsquelle
        • levelFrontLeft   -   Pegel des linken Frontlautsprechers in dB
        • levelFrontRight   -   Pegel des rechten Frontlautsprechers in dB
        • lowFrequencyEffects   -   LFE-Status (low frequency effect)
        • mute   -   Status der Stummschaltung
        • power   -   Einschaltzustand des AV-Recievers
        • samplingRate   -   aktuelle Sampling-Rate
        • signal   -   aktuell anliegendes Eingangssignal
        • sound   -   aktueller Sound-Modus
        • state   -   Status des AV-Recievers (on,off,disconnected)
        • stateAV   -   stateAV-Status des AV-Recievers (on,off,mute,absent)
        • surroundMode   -   gewählter Surround-Modus (Auto, Stereo, Music,...)
        • toneControl   -   Status der Klangkontrolle
        • treble   -   Höhen-Level in dB
        • videoSelect   -   gewählter Videoselect-Modus
        • volume   -   aktuelle Lautstärke in Prozent
        • volumeMax   -   maximale Lautstärke in Prozent
        • volumeStraight   -   aktuelle absolute Lautstärke in dB

        Attribute

        • brand   -   Marke des Recievers (Denon oder Marantz) - um smartselect zu aktivieren Attribut brand auf Marantz setzen
        • connectionCheck   -   Zeitintervall für die Übeprüfung der Verbindung
        • disable   -   definiertes Gerät vorübergehend deaktivieren
        • dlnaName   -   Name des Recievers im DLNARenderer-Modul
        • favorites   -   maximale Anzahl der Favoriten
        • maxFavorites   -   maximale Anzahl der Einträge in der Favoritenliste für die Verwendung mit "set favoriteList"
        • maxPreset   -   maximale Anzahl der Einträge in der Liste für die Voreinstellungen
        • playTime   -   Zeitintervall für die Abfrage der Spielzeit bei Online-Medien (off, 1-60 sec)
        • presetMode   -   Verhalten der Liste für die Voreinstellungen (numerisch [00-55] oder alphanumerisch [A1-G8])
        • sleep   -   Pause zwischen den Befehlen zum Aufruf der Favoritenliste mit "set favoriteList"
        • timeout   -   Anzahl der Versuch für den Verbindungsaufbau
        • type   -   Verstärkertyp (AVR oder Ceol), legt Schrittweite der Lautstärkeslider fest (0.5 oder 1)
        • unit   -   Einheiten für Readings de-/aktivieren (on oder off)

    DENON_AVR_ZONE

    [EN DE]
      Define
        define <name> DENON_AVR_ZONE <zonename[:PORT]>

        Dieses Modul steuert DENON A/V Receiver über das Netzwerk.


        Beispiele:

          define avr_zone2 DENON_AVR_ZONE 2

          define avr_zone3 DENON_AVR_ZONE 3



      Set
        set <name> <command> [<parameter>]

        Momentan sind folgende Befehle verfügbar:
        • autoStandby   -   Zeit für den Auto-Standby setzen
        • favorite   -   zur Auswahl der Favoriten (nur alte Modelle)
        • input   -   zur Auswahl der Eingänge
        • mute an,aus   -   AV-Receiver laut/stumm schalten
        • muteT   -   zwischen laut und stumm wechseln
        • off   -   Standby AV-Receiver
        • on   -   AV-Receiver anschalten
        • quickselect   -   zur Auswahl der "Quick-Select" Modi (1-5, nur neue Modelle)
        • rawCommand   -   schickt ein "raw command" zum AV-Receiver
        • remote   -   Fernbedienungsbefehle (play, stop, pause,...)
        • surroundMode   -   zur Auswahl der Surround-Modi
        • toggle   -   AV-Receiver an/aus
        • volume 0...98   -   Lautstärke in Prozent
        • volumeStraight -80...18   -   absolute Lautstärke in dB
        • volumeUp   -   erhöht Lautstärke
        • volumeDown   -   erniedrigt Lautstärke


      Get
        get <name> <what>

        Momentan sind folgende Befehle verfügbar:

        • remoteControl   -   Fernbedienung automatisch erzeugen
        • diverse Readings   -   siehe Liste unten


      Erzeugte Readings/Events:

      • autoStandby   -   Standbyzustand des AV-Recievers
      • bass   -   Bass-Level in dB
      • display   -   Dim-Status des Displays
      • input   -   gewählte Eingangsquelle
      • levelFrontLeft   -   Pegel des linken Frontlautsprechers in dB
      • levelFrontRight   -   Pegel des rechten Frontlautsprechers in dB
      • mute   -   Status der Stummschaltung
      • power   -   Einschaltzustand des AV-Recievers
      • sound   -   aktueller Sound-Modus
      • state   -   Status des AV-Recievers (on,off,disconnected)
      • stateAV   -   stateAV-Status des AV-Recievers (on,off,mute,absent)
      • toneControl   -   Status der Klangkontrolle
      • treble   -   Höhen-Level in dB
      • videoSelect   -   gewählter Videoselect-Modus
      • volume   -   aktuelle Lautstärke in Prozent
      • volumeMax   -   maximale Lautstärke in Prozent
      • volumeStraight   -   aktuelle absolute Lautstärke in dB

      Attribute

      • IODev   -   Input/Output Device

    DFPlayerMini - FN-M16P Embedded MP3 Audio Module

    [EN DE]
    Dieses Modul integriert den DFPlayerMini - FN-M16P Embedded MP3 Audio Modul in fhem. Siehe auch das Datenblatt des Moduls für technische Details.
    Der MP3-Spieler kann direkt mit einer seriellen Schnittstelle verbunden werden oder per Ethernet/WiFi mittels einer Hardware die eine transparente serielle Übertragung per TCP/IP zur Verfügung stellt, z. B. ESPEasy Ser2Net.

    Es ist auch möglich ein anderes fhem Device für den Datentransport zu nutzen, z. B. MYSENSORS.

    Das Modul unterstützt alle Kommandos des DFPlayers und bietet weitere Funktionen wie
    • Integration von Text2Speech um einfach Sprach-MP3-Dateien herunterzuladen
    • einfachere Kontrolle darüber welche Dateien abgespielt werden sollen
    • Verwaltung aller Dateien die der DFPlayer abspielen kann
    • Abspielen mehrerer Dateien hintereinander (playlist)
    • Erzeugung und Abspielen von Sprachschnipseln um beliebige Zahlen per Sprache auszugeben

    Define
    define <name> DFPlayerMini {none | devicename[\@baudrate] | devicename\@directio | hostname:port}
    • Wenn der Player direkt angeschlossen ist wird per <devicename> der Name der seriellen Schnittstelle angegeben an die der DFPlayer Mini angeschlossen ist. Der Name der seriellen Schnittstelle hängt von der Betriebssystemdistribution ab, unter Linux ist das cdc_acm kernel Modul verantwortlich, und normalerweise wird ein /dev/ttyACM0 oder /dev/ttyUSB0 Device angelegt. Man kann auch eine Baudrate angeben in dem dem im Devicenamen nach dem @ Zeichen die Baudrate angegeben wird, z. B. /dev/ttyACM0@9600

      Das ist auch die standard Baudrate und sollte normalerweise nicht geändert werden da diese Baudrate beim DFPlayer fest eingestellt ist. Wenn als Baudrate "directio" angegeben wird (z. B.: /dev/ttyACM0@directio) dann wird das perl Modul Device::SerialPort nicht benötigt und fhem öffnet das Device mit simple file io. Das kann funktionieren wenn das Betriebssystem sinnvolle Voreinstellungen für die Parameter der seriellen Schnittstelle verwendet, z. B. einige Linux Distributionen und OSX.
    • Wenn die Verbindung über TCP/IP statt findet spezifiziert <hostname:port> die IP Adresse und den Port des Device das die transparente serielle Verbindung zum DFP bereit stellt, e.g. 192.168.2.28:23
    • Für andere Arten des Datentransports kann none als Device angegeben werden. In diesem Fall sollte das Attribute sendCmd angegeben werden. Antworten vom DFPlayer sollten per set response zurück an dieses Module übergeben werden.

    Attribute
    • TTSDev
      Der Name eines Text2Speech Devices. Dieses muss bereits vorher mit none als <alsadevice> als Server Device angelegt worden sein. Es sollte ausschließlich für dieses Modul zur Verfügung stehen und nicht für andere Zwecke verwendet werden.
    • requestAck
      Der DFPlayer kann fü jedes Kommando eine Bestätigung senden. Da das zu erhöhter Kommunikation führt kann es über dieses Attribut abgeschaltet werden. Wenn es eingeschaltet ist wird das nächste Kommando erst dann zum DFPlayer wenn das vorherige bestätigt wurde. Das stellt sicher, dass kein Kommando verloren geht selbst wenn der DFPlayer ausgelastet oder im Schlafzustand ist.
    • sendCmd
      Ein fhem Kommando das verwendet wird um ein durch diese Modul erzeugtes DFPlayer Kommando an die DFPlayer Hardware zu senden. Wenn dieses Attribut gesetzt ist wird kein andere Art der Kommunikation mit dem DFPlayer verwendet. Es kann verwendet werden um andere fhem Devices für den Datentransport zu nutzen.
      Um z. B. mittels eines MySensor Devices mit dem Namen mys_dfp zu kommunizieren kann
      attr <dfp> sendCmd set mys_dfp value11 $msg
      verwendet werden. Auf dem MySensors Devices muss eine passende Firmware installiert sein.
      Dieses Modul wird dann ein Kommando an den DFP senden in dem $msg mit dem tatsächlichen Kommando <payload> ersetzt wird und dann das fhem Kommando set mys_dfp value11 <payload>
      ausgeführt wird. Siehe set response für einen Weg um die Antwort des DFPlayers zurück an dieses Modul zu senden.
    • uploadPath
      Der DFPlayer spielt Dateien von einer an ihn angeschlossenen SD-Karte oder USB-Stick ab. Die mp3/wav Dateien müssen vom Anwender auf dieses Speichermedium kopiert werden. Der Player erwartet die Dateien mit speziellen Namen und in spezifischen Verzeichnissen, im Datenblatt stehen die Einzelheiten. Das Kopieren der Dateien kann auch von diesem Modul durchgeführt werden. Dazu muss das Speichermedium mit dem Rechner verbunden sein auf dem fhem ausgeführt wird. Es muss dazu in dem Pfad gemounted sein der durch diese Attribut angegeben ist.
      Siehe auch uploadTTS, uploadTTScache und readFiles Kommandos wo es verwendet wird.
    • rememberMissingTTS
      Wenn gesetzt erzeugen tts Kommandos ohne eine passende Datei ein spezielles Reading. Siehe set tts und set uploadTTScache.
    • keepAliveInterval
      Gibt das Intervall in Sekunden zwischen KeepAlive Kommandos an den DFP an. Das kann verwendet werden um automatisch zu prüfen, ob der DFP noch funktioniert und erreichbar ist.
      Nach drei fehlenden Antwortden wird der Status auf disconnected gesetzt.
      Interval 0 schaltet die Funktion ab, die Voreinstellung ist 60 Sekunden.

    Get

    Alle Abfrage Kommandos die vom DFP unterstützt werden haben ein zugehöriges get Kommando:
    getDFP cmd byteParameterKommentar
    storage0x3F
    status0x42
    volume0x43
    equalizer0x44
    noTracksRootUsb0x47
    noTracksRootSd0x48
    currentTrackUsb0x4B
    currentTrackSd0x4C
    noTracksInFolder0x4EVerzeichnisnummer1-99
    noFolders0x4F

    Set

    Alle Kommandos die vom DFP angeboten werden haben ein zugehöriges set Kommando:
    setDFP cmd byteParameterKommentar
    next0x01-
    prev0x02-
    trackNum0x03Nummer der Datei im Wurzelverzeichniszwischen 1 und 3000 (es wird die Reihenfolge verwendet in der die Dateien angelegt wurden!)
    volumeUp0x04-
    volumeDown0x05-
    volumeStraight0x06Lautstärke0-30
    equalizer0x07Name des EqualizermodusNormal, Pop, Rock, Jazz, Classic, Bass
    repeatSingle0x08-
    storage0x09SD oder USB
    sleep0x0A-vom DFP nicht unterstützt, danach muss er stromlos gemacht werden um wieder zu funktionieren
    wake0x0B-vom DFP nicht unterstützt, aber wahrscheinlich vom FN-M22P
    reset0x0C-
    play0x0D-spielt die aktuelle Datei
    play0x0F, 0x12, 0x13, 0x14Eine durch Leerzeichen getrennte Liste von Dateien die nacheinander abgespielt werdenDas korrekte DFP Kommando wird automatisch ermittelt. Dateien können über den Namen ihres Readings, den Readingwert oder Verzeichnisname/Dateinummer angegeben werden. Siehe set readFiles
    pause0x0E-
    amplification0x10Verstärkungsstufe0-31
    repeatRoot0x11on, off
    MP3TrackNum0x12Dateinummer1-3000, aus dem Verzeichnis MP3
    intercutAdvert0x13Dateinummer1-3000, aus dem Verzeichnis ADVERT
    folderTrackNum0x0FVerzeichnisnummer DateinummerVerzeichnis: 1-99, Datei: 1-255
    folderTrackNum30000x14Verzeichnisnummer DateinummerVerzeichnis: 1-15, Datei: 1-3000
    stopAdvert0x15-
    stop0x16-
    repeatFolder0x17Verzeichnisnummer1-99
    shuffle0x18-
    repeatCurrentTrack0x19on, off
    DAC0x1Aon, off

    Alle anderen set Kommandos werden nicht an den DFPlayer geschickt sondern bieten Komfortfunktionen:
    • close
    • raw
      sendet ein in Hexadezimal kodiertes Kommando direkt und ohne Prüfung an den DFP
    • reopen
    • readFiles
      ließt alle Dateien auf dem Speichermedium das in uploadPath gemounted ist. Wenn diese Dateien durch den DFP addressiert werden können (d.h. sie entprechen den Namenskonventionen) so wird ein Reading dafür angelegt. Der Readingname ist File_<Verzeichnis>/<Dateinummer>. Das Verzeichnis kann ., MP3, ADVERT oder 00 bis 99 sein. Der Readingwert ist der Dateiname ohne die Dateinummer und das Suffix.
      Beispiel:
      Für die Datei MP3/0003SongTitle.mp3 wird das Reading File_MP3/0003 mit dem Wert SongTitle angelegt.
      Das set <dfp> play Kommando kann diese Readings verwenden, d.h. es ist möglich entweder set <dfp> play File_MP3/0003, set <dfp> play MP3/3 oder set <dfp> play SongTitle zu verwenden, um die selbe Datei abzuspielen.
    • uploadTTS <destination path> <Text der in Sprache umgewandelt werden soll>
      Der angegebene Text wird in eine MP3 Sprachdatei umgewandelt. Dafür wird das Text2Speech Device verwendet das mit attr TTSDev angegebene wurde. Die MP3 Datei wird dann in das angegebene Zielverzeichnis unterhalb von uploadPath kopiert.
      Beispiele:
      set <dfp> 01/0001Test Dies ist ein Test
      set <dfp> ADVERT/0099Hinweis Achtung
    • uploadTTScache
      Kopiert alle Dateien aus dem cache Verzeichnis des TTSDev in uploadPath. Es wird zuerst in das Verzeichnis 01 kopiert. Nach 3000 Dateien wird das nächste Verzeichnis verwendet. Der MD5 Hash wird als Dateiname verwendet. Zum Schluss wird set readFiles ausgeführt. Das Kommando set tts verwendet die dadurch angelegten Readings.
    • tts <Text der in Sprache übersetzt werden soll>
      TTSDev wird verwendet um den MD5 Hash von <Text der in Sprache übersetzt werden soll> zu berechnen. Anschließend wird versucht die Datei mit diesem Hash abzuspielen. Wenn kein Reading für diesen Hash existiert und das wenn das Attribute rememberMissingTTS gesetzt ist dann wird ein neues Reading Missing_MD5<md5> mit dem Wert <Text der in Sprache übersetzt werden soll> angelegt.
      Voraussetzungen:
      Das funktioniert nur, wenn vorher der zu übersetzende Text bereits einmal übersetzt wurde und die daraus resultierende MP3 Datei im cache Verzeichnis des TTSDev gespeichert wurde, Die Dateien aus dem Cache müssen auf das Speichermedium mittels set uploadTTScache kopiert werden
    • uploadNumbers Zielverzeichnis
      erzeugt MP3 Dateien für alle Sprachschnipsel die benötigt werden um beliebige deutsche Zahlen zu sprechen.
      Beispiel:
      set <dfp> uploadNumbers 99
      erzeugt die benötigten 31 MP3 Dateien im Verzeichnis 99.
    • sayNumber Zahl
      übersetzt eine Zahl in Sprache und spielt die benötigten Dateien ab. Setzt voraus, dass vorher uploadNumbers verwendet wurde um die Sprachdateien zu erzeugen.
      Beispiel:
      sayNumber -34.7
      entspricht
      play minus vier und dreissig komma sieben
    • response
      10 Byte Antwortnachricht vom DFP hexadezimal kodiert

    DLNARenderer

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

    DOIF

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

      Mit diesem Modul ist es möglich, einfache wie auch komplexere Automatisierungsvorgänge zu definieren oder in Perl zu programmieren. Ereignisse, Zeittrigger, Readings oder Status werden durch DOIF-spezifische Angaben in eckigen Klammern angegeben. Sie führen zur Triggerung des Moduls und damit zur Auswertung und Ausführung der definierten Anweisungen.

      Das Modul verfügt über zwei Modi: FHEM-Modus und Perl-Modus. Der Modus eines definierten DOIF-Devices wird automatisch aufgrund der Definition vom Modul erkannt (FHEM-Modus beginnt mit einer runden Klammer auf). Der Perl-Modus kommt weitgehend ohne Attribute aus, er ist aufgrund seiner Flexibilität, der Möglichkeit strukturiert zu programmieren und seiner hohen Performance insb. bei umfangreichen Automatisierungsaufgaben dem FHEM-Modus vorzuziehen. Hier geht´s zum Perl-Modus. Beide Modi sind innerhalb eines DOIF-Devices nicht miteinander kombinierbar.

      Syntax FHEM-Modus:

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

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

      Das DOIF-Modul arbeitet mit Zuständen. Jeder Ausführungszweig DOIF/DOELSEIF..DOELSEIF/DOELSE stellt einen eigenen Zustand dar (cmd_1, cmd_2, usw.). Das Modul merkt sich den zuletzt ausgeführten Ausführungszweig und wiederholt diesen standardmäßig nicht. Ein Ausführungszweig wird erst dann wieder ausgeführt, wenn zwischenzeitlich ein anderer Ausführungszweig ausgeführt wurde, also ein Statuswechsel des DOIF-Moduls stattgefunden hat. Dieses Verhalten ist sinnvoll, um zu verhindern, dass zyklisch sendende Sensoren (Temperatur, Feuchtigkeit, Helligkeit, usw.) zu ständiger Wiederholung des selben Befehls oder Befehlsabfolge führen. Das Verhalten des Moduls im FHEM-Modus kann durch diverse Attribute verändert werden. Im FHEM-Modus wird maximal nur ein Zweig pro Ereignis- oder Zeit-Trigger ausgeführt, es gibt nur einen Wait-Timer.

      Einfache Anwendungsbeispiele

        Fernbedienung (Ereignissteuerung)

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

        Zeitschaltuhr (Zeitsteuerung)

        define di_clock_radio DOIF ([06:30|Mo Di Mi] or [08:30|Do Fr Sa So]) (set radio on) DOELSEIF ([08:00|Mo Di Mi] or [09:30|Do Fr Sa So]) (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)

      Eine ausführliche Erläuterung der obigen Anwendungsbeispiele kann hier nachgelesen werden: Erste Schritte mit DOIF


      Inhaltsübersicht (Beispiele im Perl-Modus sind besonders gekennzeichnet)

        Lesbarkeit der Definitionen
        Ereignissteuerung
        Teilausdrücke abfragen
        Ereignissteuerung über Auswertung von Events
        Angaben im Ausführungsteil
        Filtern nach Ausdrücken mit Ausgabeformatierung
        Durchschnitt, Median, Differenz, Änderungsrate, anteiliger Anstieg
        Aggregieren von Werten
        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
        Intervall-Timer
        Zeittrigger alle X Tage
        Kombination von Ereignis- und Zeitsteuerung mit logischen Abfragen
        Zeitintervalle, Readings und Status ohne Trigger
        Nutzung von Readings, Status oder Internals im Ausführungsteil
        Berechnungen im Ausführungsteil
        Ersatzwert für nicht existierende Readings oder Status
        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 bei jedem Event des Devices
        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
        uiTable, DOIF Web-Interface
        uiState, DOIF Web-Interface im Status
        Reine Statusanzeige ohne Ausführung von Befehlen
        Anpassung des Status mit Hilfe des Attributes state
        Erzeugen berechneter Readings
        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
        addStateEvent   checkall   checkReadingEvent   cmdpause   cmdState   DOIF_Readings   disable   do always   do resetwait   event_Readings   initialize   notexist   repeatcmd   repeatsame   selftrigger   readingList   setList   startup   state   timerevent   timerWithWait   uiTable   uiState   wait   waitdel   waitsame   weekdays  
        readingFnAttributes  

      Set Befehle
        checkall   disable   enable   initialize   cmd  

      Get Befehle
        html

      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

      Perl-Modus:
      define di_Modul DOIF
      { if ([Switch1] eq "on" and [Switch2] eq "on") { ## wenn Schalter 1 und Schalter 2 on ist
        fhem_set "lamp on"
       ## wird Lampe eingeschaltet
        } else {  ## im sonst-Fall, also wenn einer der Schalter off ist
        fhem_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 in der Bedingung, mit Perl-Operatoren ==, !=, <, <=, >, >= bei Zahlen und mit eq, ne, lt, le, gt, ge, =~, !~ bei Zeichenketten angegeben. Logische Verknüpfungen sollten zwecks Übersichtlichkeit mit and bzw. or vorgenommen werden. Die Reihenfolge der Auswertung wird, wie in höheren Sprachen üblich, durch runde Klammern beeinflusst. Status werden mit [<devicename>], Readings mit [<devicename>:<readingname>], Internals mit [<devicename>:&<internal>] angegeben.

      Anwendungsbeispiel: Einfache Ereignissteuerung, "remotecontrol" ist hier ein Device, es wird in eckigen Klammern angegeben. Ausgewertet wird der Status des Devices - nicht das Event.

      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 Status von remotecontrol nicht das Event selbst. Im FHEM-Modus arbeitet das Modul mit Zuständen, indem es den eigenen Status auswertet. Die Ausführung erfolgt standardmäßig nur ein mal, bis ein anderer DOIF-Zweig und damit eine Ändernung des eigenen Status erfolgt. Das bedeutet, dass ein mehrmaliges Drücken der Fernbedienung auf "on" nur einmal "set garage on" ausführt. Die nächste mögliche Ausführung ist "set garage off", wenn Fernbedienung "off" liefert.
      Wünscht man eine Ausführung des gleichen Befehls mehrfach nacheinander bei jedem Trigger, unabhängig davon welchen Status das DOIF-Modul hat, weil z. B. Garage nicht nur über die Fernbedienung geschaltet wird, dann muss man das per "do always"-Attribut angeben:

      attr di_garage do always

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

      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.

      Soll bei Nicht-Erfüllung aller Bedingungen ein Zustandswechsel erfolgen, so muss man ein DOELSE am Ende der Definition anhängen. Ausnahme ist eine einzige Bedingung ohne do always, wie im obigen Beispiel, hierbei wird intern ein virtuelles DOELSE angenommen, um bei Nicht-Erfüllung der Bedingung einen Zustandswechsel in cmd_2 zu provozieren, da sonst nur ein einziges Mal geschaltet werden könnte, da das Modul aus dem cmd_1-Zustand nicht mehr herauskäme.

      Perl-Modus:

      Im Perl-Modus arbeitet das DOIF-Modul im Gegensatz zum FHEM-Modus ohne den eigenen Status auszuwerten. Es kommt immer zur Auswertung des definierten Block, wenn er getriggert wird. Diese Verhalten entspricht dem Verhalten mit dem Attribut do always im FHEM-Modus. Damit bei zyklisch sendenden Sensoren nicht zum ständigen Schalten kommt, muss das Schalten unterbunden werden. Das obige Beispiel lässt sich, wie folgt definieren:

      define di_heating DOIF {if ([sens:temperature] < 20) {if (Value("heating") ne "on") {fhem_set"heating on"}}}


      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


      Perl-Modus:
      define di_garage DOIF {if ([remotecontrol] =~ "Long") {fhem_set"garage on"}}

      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 Status oder Readings ist das Auswerten von Ereignissen (Events) mit Hilfe von regulären Ausdrücken. Der Suchstring wird als regulärer Ausdruck in Anführungszeichen angegeben. Die Syntax lautet: [<devicename>:"<regex>"]

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

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

      Perl-Modus:
      define di_garage DOIF {if ([remotecontrol:"on"]) {fhem_set"garage on"} elsif ([remotecontrol:"off"]) {fhem_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 if-Fall wird ausgeführt, ansonsten wird der else-if-Fall entsprechend ausgewertet. Die Auswertung von reinen Ereignissen bietet sich dann an, wenn ein Modul keinen Status oder Readings benutzt, die man abfragen kann, wie z. B. beim Modul "sequence". Die Angabe von regulären Ausdrücken kann recht komplex werden und würde die Aufzählung aller Möglichkeiten an dieser Stelle den Rahmen sprengen. Weitere Informationen zu regulären Ausdrücken sollten in der Perl-Dokumentation nachgeschlagen werden. Die logische Verknüpfung "and" mehrerer Ereignisse ist nicht sinnvoll, da zu einem Zeitpunkt immer nur ein Ereignis zutreffen kann.

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

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

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

      Beispiele für Regex-Angaben:

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

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

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

      Anwendungsbeispiele:

      "Fenster offen"-Meldung

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


      Perl-Modus:
      define di_window_open DOIF {if (["^window_:open"]) {fhem_set"Pushover msg 'alarm' 'open windows $DEVICE' '' 2 'persistent' 30 3600"}}

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

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

      Syntax:

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

      Anwendungsbeispiel:

      define di_warning DOIF ([":^temperature",0] < 0) (set pushmsg danger of frost $DEVICE)
      attr di_warning do always

      Perl-Modus:
      define di_warning DOIF {if ([":^temperature",0] < 0) {fhem_set"pushmsg danger of frost $DEVICE}}

      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.


      Filtern nach Ausdrücken mit Ausgabeformatierung   back

      Syntax: [<device>:<reading>|<internal>:d<number>|"<regex>":<output>]

      d - Der Buchstabe "d" ist ein Synonym für das Filtern nach Dezimalzahlen, es entspricht intern dem regulären Ausdruck "(-?\d+(\.\d+)?)". Ebenfalls lässt sich eine Dezimalzahl auf eine bestimmte Anzahl von Nachkommastellen runden. Dazu wird an das "d" eine Ziffer angehängt. Mit der Angabe d0 wird die Zahl auf ganze Zahlen gerundet.
      <Regex>- Der reguläre Ausdruck muss in Anführungszeichen angegeben werden. Dabei werden Perl-Mechanismen zu regulären Ausdrücken mit Speicherung der Ergebnisse in Variablen $1, $2 usw. genutzt.
      <Output> - ist ein optionaler Parameter, hier können die in den Variablen $1, $2, usw. aus der Regex-Suche gespeicherten Informationen für die Aufbereitung genutzt werden. Sie werden in Anführungszeichen bei Texten oder in Perlfunktionen angegeben. Wird kein Output-Parameter angegeben, so wird automatisch $1 genutzt.

      Beispiele:

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

      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 die Zahl aus einem Reading auf 3 Nachkommastellen formatiert werden:

      [mydevice:myreading:d3]

      Es soll aus einem Text eine Zahl herausgefiltert werden und anschließend gerundet auf zwei Nachkommastellen mit der Einheit °C ausgeben werden:

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

      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.


      Durchschnitt, Median, Differenz, Änderungsrate, anteiliger Anstieg   back

      Die folgenden Funktionen werden auf die letzten gesendeten Werte eines Readings angewendet. Das angegebene Reading muss Events liefern, damit seine Werte intern im Modul gesammelt und die Berechnung der angegenen Funktion erfolgen kann.

      Syntax

      [<device>:<reading>:<function><number of last values>]

      <number of last values> ist optional. Wird sie nicht angegeben, so werden bei Durchschnitt/Differenz/Änderungsrate/Anstieg die letzten beiden Werte, bei Median die letzten drei Werte, ausgewertet.

      Durchschnitt

      Funktion: avg

      Bsp.:

      define di_cold DOIF ([outdoor:temperature:avg5] < 10)(set cold on)

      Wenn der Durchschnitt der letzten fünf Werte unter 10 Grad ist, dann wird die Anweisung ausgeführt.

      Median

      Mit Hilfe des Medians können punktuell auftretende Ausreißer eliminiert werden.

      Funktion: med

      Bsp.:

      define di_frost DOIF ([$SELF:outTempMed] < 0) (set warning frost)

      attr di_frost event_Readings outTempMed:[outdoor:temperature:med]


      Die Definition über das Attribut event_Readings hat den Vorteil, dass der bereinigte Wert im definierten Reading visualisiert und geloggt werden kann (med entspricht med3).

      Differenz

      Es wird die Differenz zwischen dem letzten und dem x-ten zurückliegenden Wert berechnet.

      Funktion: diff

      Bsp.:

      define temp_abfall DOIF ([outdoor:temperature:diff5] < -3) (set temp fall in temperature)

      Wenn die Temperaturdifferenz zwischen dem letzten und dem fünftletzten Wert um mindestens drei Grad fällt, dann Anweisung ausführen.

      Änderungsrate

      Es wird die Änderungsrate (Veränderung pro Zeit) zwischen dem letzten und dem x-ten zurückliegenden Wert berechnet. Es wird der Differenzenquotient von zwei Werten und deren Zeitdifferenz gebildet. Mit Hilfe dieser Funktion können momentane Verbräuche von Wasser, elektrischer Energie, Gas usw. bestimmt, ausgewertet oder visualisiert werden.

      Funktion: diffpsec

      Berechnung:

      (letzter Wert - zurückliegender Wert)/(Zeitpunkt des letzten Wertes - Zeitpunkt des zurückliegenden Wertes)

      Bsp.:

      define di_pv DOIF ([pv:total_feed:diffpsec]*3600 > 1) (set heating on) DOELSE (set heating off)

      Wenn die momentane PV-Einspeise-Leistung mehr als 1 kW beträgt, dann soll die Heizung eingeschaltet werden, sonst soll sie ausgeschaltet werden. Das total_feed-Reading beinhaltet den PV-Ertrag in Wh.

      anteiliger Anstieg

      Funktion: inc

      Berechnung:

      (letzter Wert - zurückliegender Wert)/zurückliegender Wert

      Bsp.:

      define humidity_warning DOIF ([bathroom:humidiy:inc] > 0.1) (set bath speak open window)

      Wenn die Feuchtigkeit im Bad der letzten beiden Werte um über zehn Prozent ansteigt, dann Anweisung ausführen (inc entspricht inc2).

      Zu beachten:

      Differenz/Änderungsrate/Anstieg werden gebildet, sobald zwei Werte eintreffen. Die intern gesammelten Werte werden nicht dauerhaft gespeichert, nach einem Neustart sind sie gelöscht. Die angegebenen Readings werden intern automatisch für die Auswertung nach Zahlen gefiltert.


      Angaben im Ausführungsteil (gilt nur für FHEM-Modus):   back

      Der Ausführungsteil wird durch runde Klammern eingeleitet. Es werden standardmäßig FHEM-Befehle angegeben, wie z. B.: ...(set lamp on)

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

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

      Perlbefehle werden in geschweifte Klammern gesetzt: ... {system ("wmail Peter is at home")}. In diesem Fall können die runden Klammern des Ausführungsteils weggelassen werden.

      Perlcode kann im DEF-Editor wie gewohnt programmiert werden: ...{my $name="Peter"; system ("wmail $name is at home");}

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


      Aggregieren von Werten   back

      Mit Hilfe der Aggregationsfunktion können mehrere gleichnamige Readings im System ausgewertet werden, die einem bestimmten Kriterium entsprechen. Sie wird in eckigen Klammern durch ein # (aggregierter Wert) oder @ (Liste der passeden Devices) eingeleitet. Es kann bestimmt werden: die Anzahl der Readings bzw. Devices, Durchschnittswert, Summe, höchster Wert, niedrigster Wert oder eine Liste der dazugehörigen Devices. Die Aggregationsfunktion kann in einer DOIF-Bedingungen, im Ausführungsteil oder mit Hilfe des state-Attributs im Status angegeben werden. In der Bedingung und im Status reagiert sie auf Ereignistrigger. Das lässt sich durch ein vorangestelltes Fragezeichen unterbinden. Die Angabe des Readings kann weggelassen werden, dann wird lediglich nach entsprechenden Devices gesucht.

      Syntax:

      [<function>:<format>:"<regex device>:<regex event>":<reading>|"<regex reading>":<condition>,<default>]

      <function>:

      # Anzahl der betroffenen Devices, der folgende Doppelpunkt kann weggelassen werden
      @ kommagetrennte Liste Devices, der folgende Doppelpunkt kann weggelassen werden
      #sum Summe
      #max höchster Wert
      #min niedrigster Wert
      #average Durchschnitt
      #median Medianwert
      @max Device des höchsten Wertes
      @min Device de niedrigsten Wertes

      <format> d<number> zum Runden des Wertes mit Nachkommastellen, a für Aliasnamen bei Devicelisten, s(<splittoken>) <splittoken> sind Trennzeichen in der Device-Liste

      "<regex Device>:<regex Event>" spezifiziert sowohl die betroffenen Devices, als auch den Ereignistrigger, die Syntax entspricht der DOIF-Syntax für Ereignistrigger.
      Die Angabe <regex Event> ist im Ausführungsteil nicht sinnvoll und sollte weggelassen werden.

      <reading> Reading, welches überprüft werden soll

      "<regex reading>"; Regex für Readings, die überprüft werden sollen

      <condition> Aggregations-Bedingung, $_ ist der Platzhalter für den aktuellen Wert des internen Schleifendurchlaufs, Angaben in Anführungszeichen der Art "<value>" entsprechen $_ =~ "<value>" , hier sind alle Perloperatoren möglich.

      <default> Default-Wert, falls kein Device gefunden wird, entspricht der Syntax des Default-Wertes bei Readingangaben

      <format>, <reading>, <condition>, <default> sind optional

      Syntax-Beispiele im Ausführungteil

      Anzahl der Devices, die mit "window" beginnen:

      [#"^window"]

      Liste der Devices, die mit "window" beginnen, es werden Aliasnamen ausgegeben, falls definiert:

      [@:a"^window"]

      Liste der Devices, die mit "windows" beginnen und ein Reading "myreading" beinhalten:

      [@"^window":myreading]

      Liste der Devices, die mit "windows" beginnen und im Status das Wort "open" vorkommt:

      [@"^window":state:"open"]

      entspricht:

      [@"^window":state:$_ =~ "open"] siehe Aggregationsbedingung.

      Kleinster Wert der Readings des Devices "abfall", in deren Namen "Gruenschnitt" vorkommt und die mit "_days" enden:

      [#min:"^abfall$":"Gruenschnitt.*_days$"]

      Durchschnitt von Readings aller Devices, die mit "T_" beginnen, in deren Reading-Namen "temp" vorkommt:

      [#average:"^T_":"temp"]

      Medianwert (gewichtetes Mittel) von Readings aller Devices, die mit "T_" beginnen, in deren Reading-Namen "temp" vorkommt:

      [#median:"^T_":"temp"]

      In der Aggregationsbedingung können alle in FHEM definierten Perlfunktionen genutzt werden. Folgende Variablen sind vorbelegt und können ebenfalls benutzt werden:

      $_ Inhalt des angegebenen Readings (s.o.)
      $number Nach Zahl gefilteres Reading
      $name Name des Devices
      $TYPE Devices-Typ
      $STATE Status des Devices (nicht das Reading state)
      $room Raum des Devices
      $group Gruppe des Devices

      Beispiele für Definition der Aggregationsbedingung <condition>:

      Liste der Devices, die mit "rooms" enden und im Reading "temperature" einen Wert größer 20 haben:

      [@"rooms$":temperature:$_ > 20]

      Liste der Devices im Raum "livingroom", die mit "rooms" enden und im Reading "temperature" einen Wert größer 20 haben:

      [@"rooms$":temperature:$_ > 20 and $room eq "livingroom"]

      Liste der Devices in der Gruppe "windows", die mit "rooms" enden, deren Status (nicht state-Reading) "on" ist:

      [@"rooms$"::$STATE eq "on" and $group eq "windows"]

      Liste der Devices, deren state-Reading "on" ist und das Attribut disable nicht auf "1" gesetzt ist:

      [@"":state:$_ eq "on" and AttrVal($name,"disable","") ne "1"]


      Aggregationsangaben in der DOIF-Bedingung reagieren zusätzlich auf Ereignistrigger, hier sollte die regex-Angabe für das Device um eine regex-Angabe für das zu triggernde Event erweitert werden.

      Anzahl der Devices, die mit "window" beginnen. Getriggert wird, wenn eine Eventzeile beginnend mit "window" und dem Wort "open" vorkommt:

      [#"^window:open"]

      Anwendungsbeispiele

      Statusanzeige: Offene Fenster:

      define di_window DOIF

      attr di_window state Offene Fenster: [@"^window:open":state:"open","keine"]


      Statusanzeige: Alle Devices, deren Batterie nicht ok ist:

      define di_battery DOIF

      attr di_battery state [@":battery":battery:$_ ne "ok","alle OK"]


      Statusanzeige: Durchschnittstemperatur aller Temperatursensoren in der Gruppe "rooms":

      define di_average_temp DOIF

      attr di_average_temp state [#average:d2:":temperature":temperature:$group eq "rooms"]


      Fenster Status/Meldung:

      define di_Fenster DOIF (["^Window:open"])
      (push "Fenster $DEVICE wurde geöffnet. Es sind folgende Fenster offen: [@"^Window":state:"open"]")
      DOELSEIF ([#"^Window:closed":state:"open"] == 0)
      (push "alle Fenster geschlossen")

      attr di_Fenster do always
      attr di_Fenster cmdState [$SELF:Device] zuletzt geöffnet|alle geschlossen


      Raumtemperatur-Überwachung:

      define di_temp DOIF (([08:00] or [20:00]) and [?#"^Rooms":temperature: $_ < 20] != 0)
      (push "In folgenden Zimmern ist zu kalt [@"^Rooms":temperature:$_ < 20,"keine"]")
      DOELSE
      (push "alle Zimmmer sind warm")

      attr di_temp do always
      attr di_Raumtemp state In folgenden Zimmern ist zu kalt: [@"^Rooms":temperature:$_ < 20,"keine"])


      Es soll beim Öffnen eines Fensters eine Meldung über alle geöffneten Fenster erfolgen:

      define di_Fenster DOIF (["^Window:open"]) (push "Folgende Fenster: [@"^Window:state:"open"] sind geöffnet")
      attr di_Fenster do always

      Wenn im Wohnzimmer eine Lampe ausgeschaltet wird, sollen alle anderen Lampen im Wohnzimmer ebenfalls ausgeschaltet werden, die noch an sind:

      define di_lamp DOIF (["^lamp_livingroom: off"]) (set [@"^lamp_livingroom":state:"on","defaultdummy"] off)
      attr di_lamp DOIF do always


      Mit der Angabe des Default-Wertes "defaultdummy", wird verhindert, dass der set-Befehl eine Fehlermeldung liefert, wenn die Device-Liste leer ist. Der angegebene Default-Dummy muss zuvor definiert werden.

      Für reine Perlangaben gibt es eine entsprechende Perlfunktion namens AggrDoIf(<function>,<regex Device>,<reading>,<condition>,<default>) diese liefert bei der Angabe @ ein Array statt einer Stringliste, dadurch lässt sie sich gut bei foreach-Schleifen verwenden.

      Beispiele

      Perl-Modus:
      define di_Fenster DOIF {if (["^Window:open"]) {foreach (AggrDoIf('@','^windows','state','"open"')) {Log3 "di_Fenster",3,"Das Fenster $_ ist noch offen"}}}

      define di_Temperature DOIF {if (["^room:temperature"]) {foreach (AggrDoIf('@','^room','temperature','$_ < 15')) {Log3 "di_Temperatur",3,"im Zimmer $_ ist zu kalt"}}


      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)

      Perl-Modus:
      define di_light DOIF
      {[08:00];fhem_set"switch on"}
      {[10:00];fhem_set"switch on"}


      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)

      Perl-Modus:
      define di_light DOIF
      {if ([08:00] or [10:00] or [20:00]) {fhem_set"switch on"}}
      {if ([09:00] or [11:00] or [00:00]) {fhem_set"switch off"}}



      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


      Perl-Modus:
      define di_save DOIF {[+01:00];fhem"save"}

      Ebenfalls lassen sich relative Angaben in Sekunden angeben. [+01:00] entspricht [+3600];

      Zeitangaben nach Zeitraster ausgerichtet   back

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

      Anwendungsbeispiel: Viertelstunden-Gong

      Perl-Modus:
      define di_gong DOIF
      {[:00];system"mplayer /opt/fhem/Sound/BigBen_00.mp3 -volume 90 −really−quiet &"}
      {[:15];system"mplayer /opt/fhem/Sound/BigBen_15.mp3 -volume 90 −really−quiet &"}
      {[:30];system"mplayer /opt/fhem/Sound/BigBen_30.mp3 -volume 90 −really−quiet &"}
      {[: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 00 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


      Perl-Modus:
      define di_gong DOIF {[+:15];fhem_set"Gong_mp3 playTone 1"}


      Zeitangaben nach Zeitraster ausgerichtet alle X Stunden   back

      Format: [+[h]:MM] mit: h sind Stundenangaben zwischen 1 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


      Perl-Modus:
      define di_gong DOIF {[+[2]:05];fhem_set"pump on-for-timer 300"}


      Wochentagsteuerung   back

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

      [<time>|0123456789X] mit 0 Sonntag, 1 Montag, ... bis 6 Samstag, 7 Wochenende und Feiertage (entspricht $we), 8 Arbeitstag (entspricht !$we),9 Wochenende oder Feiertag morgen (entspricht intern $twe), X Arbeitstag morgen (entspricht intern !$twe)

      alternativ mit Buchstaben-Kürzeln:

      [<time>|So Mo Di Mi Do Fr Sa WE AT MWE MAT] WE entspricht der Ziffer 7, AT der Ziffer 8, MWE der Ziffer 9, MAT dem Buchstaben X

      oder entsprechend mit englischen Bezeichnern:

      [<time>|Su Mo Tu We Th Fr Sa WE WD TWE TWD]

    • Mit Hilfe des Attributes weekdays können beliebige Wochentagbezeichnungen definiert werden.

      Die Syntax lautet:

      weekdays <Bezeichnung für Sonntag>,<Bezeichnung für Montag>,...,<Bezeichnung für Wochenende oder Feiertag>,<Bezeichnung für Arbeitstag>,<Bezeichnung für Wochenende oder Feiertag morgen>,<Bezeichnung für Arbeitstag morgen>

      Beispiel: di_mydoif attr weekdays Son,Mon,Die,Mit,Don,Fre,Sam,Wochenende,Arbeitstag,WochenendeMorgen,ArbeitstagMorgen

      Anwendungsbeispiel: Radio soll am Wochenende und an Feiertagen um 08:30 Uhr eingeschaltet und um 09:30 Uhr ausgeschaltet werden. Am Montag und Mittwoch soll das Radio um 06:30 Uhr eingeschaltet und um 07:30 Uhr ausgeschaltet werden. Hier mit englischen Bezeichnern:

      define di_radio DOIF ([06:30|Mon Wochenende] or [08:30|Wochenende]) (set radio on) DOELSEIF ([07:30|Mon Wochenende] or [09:30|Wochenende]) (set radio off)
      attr di_radio weekdays Son,Mon,Die,Mit,Don,Fre,Sam,Wochenende,Arbeitstag,WochenendeMorgen

      Perl-Modus:
      define di_radio DOIF
      {if ([06:30|Mo We] or [08:30|WE]) {fhem_set"radio on"}}
      {if ([07:30|Mo We] or [09:30|WE]) {fhem_set"radio off"}}


      Bemerkung: Es ist unerheblich wie die definierten Wochenttagbezeichner beim Timer angegeben werden. Sie können mit beliebigen Trennzeichen oder ohne Trennzeichen direkt aneinander angegeben werden.

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

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

      define dummy myweekday
      set myweekday monday wednesday thursday weekend

      define di_radio DOIF ([06:30|[myweekday]]) (set radio on) DOELSEIF ([07:30|[myweekday]]) (set radio off)
      attr di_radio weekdays sunday,monday,thuesday,wednesday,thursday,friday,saturday,weekend,workdays,weekendtomorrow


      Perl-Modus:
      define di_radio DOIF
      {[06:30|[myweekday]];fhem_set"radio on"}
      {[07:30|[myweekday]];fhem_set"radio off"}

      attr di_radio weekdays sunday,monday,thuesday,wednesday,thursday,friday,saturday,weekend,workdays,weekendtomorrow



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

      Perl-Modus:
      define di_radio DOIF {if ([08:00-10:00]) {fhem_set"radio on"} else {fhem_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)

      Perl-Modus:
      define di_radio DOIF {if ([08:00-10:00] or [20:00-22:00]) {fhem_set"radio on"} else {fhem_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)

      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)

      Perl-Modus:
      define di_light DOIF
      {[22:00|5];fhem_set"light on"}
      {[10:00|1];fhem_set"light off"}


      Schalten mit Zeitfunktionen, hier: bei Sonnenaufgang und Sonnenuntergang:

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

      Perl-Modus:
      define di_light DOIF
      {[{sunrise(900,"06:00","08:00")}];fhem_set"outdoorlight off"}
      {[{sunset(900,"17:00","21:00")}];fhem_set"outdoorlight on"}



      Indirekte Zeitangaben   back

      Statt fester Zeitangaben kann ein Status oder ein Reading angegeben werden, welches eine Zeitangabe beinhaltet. Die Angaben werden in doppelte eckige Klammern gesetzt. Eine Änderung der Zeit im angegebenen Reading bzw. Status führt zu sofortiger Neuberechnung der Zeit im DOIF.

      Syntax:

      [[<Device>:<Reading>]] bzw. bei Statusangabe [[<Device>]]

      Bei relativen Zeitangaben (hier wird die Zeitangabe zu aktueller Zeit hinzuaddiert):

      [+[<Device>:<Reading>]] bzw. bei Statusangabe [+[<Device>]]

      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


      Perl-Modus:
      define di_time DOIF {[[time]];fhem_set"lamp on"}

      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)
      attr di_time do always


      Perl-Modus:
      define di_time DOIF {[+[time]];fhem"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)


      Perl-Modus:
      define di_time DOIF {if([[begin]-[end]]) {fhem_set"radio on"} else {fhem_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 angegebenen 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)
      attr di_timer do always

      Perl-Modus:
      define di_time DOIF {[[myTwilight:ss_weather]];fhem_set"lamp on"}

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

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

      Perl-Modus:
      define di_time DOIF {if ([[begin]-[end]|7]) {fhem_set"radio on"} else {fhem_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. Status oder Readings, die Zeitangaben in dieser Form beinhalten werden in eckige Klammern gesetzt.

      Anwendungsbeispiele:

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

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

      Perl-Modus:
      define di_light DOIF
      {[({sunset()}+900+int(rand(600)))];;fhem_set"lamp on"}
      {[([23:00]+int(rand(600)))];;fhem_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.


      Intervall-Timer   back

      Syntax:

      [<begin>-<end>,<relative timer>]

      Innerhalb des definierten Zeitintervalls, triggert der definierte Timer. Außerhalb des Zeitintervall wird kein Timer gesetzt.

      Anwendungsbeispiel: Zwischen 08:00 und 22:00 Uhr soll eine Pumpe jede halbe Stunde für fünf Minuten eingeschaltet werden:

      define di_pump DOIF ([08:00-22:00,+:30])(set pump on-for-timer 300)
      attr di_pump do always


      Perl-Modus:
      define di_pump DOIF {[08:00-22:00,+:30];;fhem_set"pump on-for-timer 300"}

      Es wird um 08:00, 08:30, 09:00, ..., 21:30 Uhr die Anweisung ausgeführt. Um 22:00 wird das letzte Mal getriggert, das Zeitintervall ist zu diesem Zeitpunkt nicht mehr wahr.

      Es lassen sich ebenso indirekte Timer, Timer-Funktionen, Zeitberechnungen sowie Wochentage miteinander kombinieren.

      define di_rand_lamp DOIF ([{sunset()}-[end:state],+(rand(600)+900)|Sa So])(set lamp on-for-timer 300)
      attr di_rand_lamp do always


      Perl-Modus:
      define di_rand_lamp DOIF {[{sunset()}-[end:state],+(rand(600)+900)|Sa So];;fhem_set"lamp on-for-timer 300"}


      Zeittrigger alle X Tage   back

      Mit Hilfe der Zeitberechnung kann ein Zeitpunkt statt täglich alle X Tage triggern.

      Syntax:

      [([<time>]+<days>*[24:00])]

      Anwendungsbeispiel: Alle zwei Tage sollen Pflanzen um 21:00 Uhr gewässert werden:

      define di_water_plants DOIF ([([21:00]+2*[24:00])])(set water on-for-timer 60)
      attr di_water_plants do always


      Perl-Modus:
      define di_water_plants DOIF {[([21:00]+2*[24:00])];;fhem_set"water on-for-timer 60"}


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


      Perl-Modus:
      define di_motion DOIF {if ([?06:00-10:00] and [button] and [?Home] eq "present"){fhem_set"lamp on-for-timer 600"}}


      Nutzung von Readings, Status oder Internals im Ausfü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: Benachrichtigung 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, Status oder Internals wie gewohnt in eckigen Klammern angegeben werden.

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

      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 Status   back

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

      Syntax:

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

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

    • 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 Kommandos in eigene Klammern gesetzt werden, das Modul arbeitet dann mit Zwischenzuständen.

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

      Beispieldefinition bei mehreren DO-Blöcken mit Befehlssequenzen:

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

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


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

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

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

      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: Benachrichtigung "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: Rollladen 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 Status 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 bei jedem Event des Devices   back

      Bei Angaben der Art [<Device>:<Reading>] wird das Modul getriggert, wenn ein Ereignis zum angegebenen Device und Reading kommt. Soll das Modul, wie bei Statusangaben der Art [<Device>], auf alle Ereignisse des Devices reagieren, so muss das Attribut auf Null gesetzt werden.

      Bemerkung: In früheren Versionen des Moduls war checkReadingEvent 0 die Voreinstellung des Moduls. Da die aktuelle Voreinstellung des Moduls checkReadingEvent 1 ist, hat das Setzen von checkReadingEvent 1 keine weitere Funktion mehr.

    • 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: Überwachung eines Temperatursensors

      define di_monitor DOIF ([+01:00] and [?sensor:temperature:sec]>3600)(set pushbullet message sensor failed)
      attr di_monitor do always


      Wenn der Temperatursensor seit über einer Stunde keinen Temperaturwert geliefert hat, dann soll eine Nachricht erfolgen.

    • 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 angegeben werden:

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

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

    • Darstellungselement mit Eingabemöglichkeit im Frontend und 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.

      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


      Anwendungsbeispiel: Ausführung von Befehlen abhängig einer Auswahl ohne Zusatzreading

      define di_web DOIF ([$SELF:"myInput first"]) (do something) DOELSEIF ([$SELF:"myInput second"]) (do something else)

      attr di_web setList myInput:first,second


      Links
      readingList
      setList
      webCmd
      webCmdLabel
      widgetOverride
      weiterführendes Beispiel für Tablet-UI
      benutzerdefinierte Readings
      Bedingungsloses Ausführen von Befehlen

    • uiTable, DOIF Web-Interface   back

      Mit dem Attribut uiTable kann innerhalb eines DOIF-Moduls ein Web-Interface zur Visualisierung und Steuerung von Geräten in Form einer Tabelle erstellt werden.

      Die Dokumentation zu diesem Attribut wurde mit bebilderten Beispielen im FHEM-Wiki erstellt: uiTable/uiState Dokumentation

      Anwendungsbeispiele für Fortgeschrittene: uiTable für Fortgeschrittene im FHEM-Wiki

    • uiState   back

      Die Syntax des uiState-Attributes entspricht der des uiTable-Attributes. Die definierte Tabelle wird jedoch in der Statuszeile des DOIF-Devices dargestellt.

      Siehe Dokumentation: uiTable/uiState Dokumentation

    • 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 Status oder Readings in eckigen Klammern oder Perlfunktionen sowie Berechnungen in Klammern der Form {(...)} angegeben werden.
      Die Trennzeichen Komma und | sind in Klammern und Anführungszeichen geschützt und gelten dort nicht als Trennzeichen.

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

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

      Reine Statusanzeige ohne Ausführung von 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 Status oder Internals angegeben werden.

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

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

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

      Anwendungsbeispiel: Berechnung des Mittelwertes zweier Readings:

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


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

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

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

    • Erzeugen berechneter Readings ohne Events   back

      Mit Hilfe des Attributes DOIF_Readings können eigene Readings innerhalb des DOIF definiert werden, auf die man im selben DOIF-Device zugreifen kann. Die Nutzung ist insbesondere dann sinnvoll, wenn zyklisch sendende Sensoren, im Perl-Modus oder mit dem Attribut do always, abgefragt werden. DOIF_Readings-Berechnungen funktionieren ressourcenschonend ohne Erzeugung FHEM-Events nach außen. Änderungen dieser Readings triggern intern das eigene DOIF-Modul, allerdings nur, wenn sich deren Inhalt ändert.

      Syntax

      attr <DOIF-Modul> DOIF_Readings <readingname1>:<definiton>, <readingname2>:<definition>,...

      <definition>: Beliebiger Perlausdruck ergänzt um DOIF-Syntax in eckigen Klammern. Angaben in eckigen Klammern wirken triggernd und aktualisieren das definierte Reading.

      Beispiel

      Perl-Modus:
      define heating DOIF {if ([switch] eq "on" and [$SELF:frost]) {fhem_set"heating on"} else {fhem_set"heating off"}}
      attr heating DOIF_Readings frost:([outdoor:temperature] < 0)


      Das Reading frost triggert nur dann die definierte Abfrage, wenn sich sein Zustand ändert. Dadurch wird sichergestellt, dass ein wiederholtes Schalten der Heizung vermieden wird, obwohl der Sensor outdoor zyklisch sendet.

      Beispiel: Push-Mitteilung über die durchschnittliche Temperatur aller Zimmer

      define di_temp DOIF ([$SELF:temperature]>20) (push "Die Durchschnittstemperatur ist höher als 20 Grad, sie beträgt [$SELF:temperature]")

      attr di_temp DOIF_Readings temperature:[#average:d2:":temperature":temperature]

      Hierbei wird der aufwändig berechnete Durchschnittswert nur einmal berechnet, statt zwei mal, wenn man die Aggregationsfunktion direkt in der Bedingung und im Ausführungsteil angeben würde.

    • Erzeugen berechneter Readings mit Events   back

      Mit Hilfe des Attributes event_Readings können eigene Readings innerhalb des DOIF definiert werden. Dieses Atrribut hat die gleiche Syntax wie DOIF_Readings. Der Unterschied besteht darin, dass event_Readings im Gegensatz zu DOIF_Readings beim Setzen der definierten Readings jedes mal Events produziert. Die Nutzung von event_Readings ist insb. dann sinnvoll, wenn man eventgesteuert außerhalb des Moduls auf die definierten Readings zugreifen möchte.

      Syntax

      attr <DOIF-Modul> event_Readings <readingname1>:<definiton>, <readingname2>:<definition>,...

      <definition>: Beliebiger Perlausdruck ergänzt um DOIF-Syntax in eckigen Klammern. Angaben in eckigen Klammern wirken triggernd und aktualisieren das definierte Reading.

      Bsp.:

      define outdoor DOIF ##

      attr outdoor event_Readings\
      median:[outdoor:temperature:med],\
      average:[outdoor:temperature:avg10],\
      diff: [outdoor:temperature:diff],\
      increase: [outdoor:temperature:inc]


      Auf die definierten Readings des Moduls outdoor (hier: median, average, diff und increase) kann in anderenen Modulen eventgesteuert zugegriffen werden.

      Bemerkung: Sind Events des definierten Readings nicht erforderlich und nur die interne Triggerung des eigenen DOIF-Moduls interessant, dann sollte man das Attribut DOIF_Readings nutzen, da es durch die interne Triggerung des Moduls weniger das System belastet als event_Readings.

    • Vorbelegung des Status mit Initialisierung nach dem Neustart   back

      Mit dem Attribut initialize Wird der Status vorbelegt, mit Initialisierung nach dem Neustart.

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

      attr di_lamp initialize initialized

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

    • Ausführen von Befehlsketten beim Starten von FHEM   back

      Beim Hochfahren von FHEM lässt sich eine bestimme Aktion ausführen. Es kann dazu genutzt werden, um sofort nach dem Hochfahren des Systems einen definierten Zustand des Moduls zu erreichen. Dabei wird sichergestellt, dass die angegebenen Befehle erst dann ausgeführt werden, wenn FHEM komplett hochgefahren ist.

      Symtax:

      attr <DOIF-Modul> startup <FHEM-Befehl oder Perl-Befehl in geschweiften Klammern mit DOIF-Syntax>

      Die Syntax entspricht der eines DOIF-Ausführungsteils (runde Klammern brauchen nicht angegeben werden).

      Beispiele:

      attr di_test startup set $SELF cmd_1
      attr di_test startup set $SELF checkall
      attr di_test startup sleep 60;set lamp1 off;set lamp2 off
      attr di_test startup {myfunction()},set lamp1 on,set lamp2 on

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

    • Set-Befehle

    • Überprüfung aller DOIF-Bedingungen mit Ausführung eines DOIF-Zweiges   back

      Mit dem set-Befehl checkall werden wie beim gleichnamigen Attribut alle DOIF-Bedingung überprüft, sobald eine Bedingung als wahr geprüft ist, wird das dazugehörige Kommando ausgeführt. Zu beachten ist, dass nur der erste wahre DOIF-Zweig ausgeführt wird und dass nur Zustandsabfragen sowie Zeitintervalle sinnvoll überprüft werden können. Ereignisabfragen sowie Zeitpunkt-Definitionen, sind zum Zeitpunkt der checkall-Abfrage normalerweise nicht wahr.

      Beispiel:

      attr di_test startup set $SELF checkall

    • Inaktivieren des Moduls   back

      Mit dem set-Befehl disable wird ein DOIF-Modul inaktiviert. Hierbei bleiben alle Timer aktiv, sie werden aktualisiert - das Modul bleibt im Takt, allerdings werden keine Befehle ausgeführt. Das Modul braucht mehr Rechenzeit, als wenn es komplett über das Attribut disable deaktiviert wird. Ein inaktiver Zustand bleibt nach dem Neustart erhalten. Ein inaktives Modul kann über set-Befehle enable bzw. initialize (im FHEM-Modus) wieder aktiviert werden.

    • Aktivieren des Moduls   back

      Mit dem set-Befehl enable wird ein inaktives DOIF-Modul wieder aktiviert. Im FHEM-Modus: Im Gegensatz zum set-Befehl initialize wird der letzte Zustand vor der Inaktivierung des Moduls wieder hergestellt.

    • Initialisieren des Moduls   back

      mit dem set-Befehl initialize wird ein DOIF-Modul initialisiert. Ein inaktives DOIF-Modul wieder aktiviert. Im Gegensatz zum set-Befehl enable wird der letzte Zustand des Moduls gelöscht, damit wird ein Zustandswechsel herbeigeführt, der nächste Trigger führt zur Ausführung eines wahren DOIF-Zweiges. Diese Eigenschaft kann auch dazu genutzt werden, ein bereits aktives Modul zu initialisieren.

    • Auführen von Befehlszweigen ohne Auswertung der 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) bei wait wird der erste Timer einer Sequenz ignoriert, alle folgenden Timer einer Sequenz werden jedoch beachtet
      3) ein laufender Wait-Timer wird unterbrochen
      4) 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 devStateIcon cmd_1:on:cmd_2 initialized|cmd_2:off:cmd_1

      Mit der Definition des Attributes devStateIcon führt das Anklicken des on/off-Lampensymbol zum Ausführen von set di_lamp cmd_1 bzw. set di_lamp cmd_2 und damit zum Schalten der Lampe.

      Wenn mit cmdState eigene Zuständsbezeichnungen definiert werden, so können diese ebenfalls per set-Befehl angegeben werden.

      define di_lamp DOIF ([FB:"on"]) (set lamp on) DOELSEIF ([FB:"off"]) (set lamp off)

      attr di_lamp cmdState on|off
      attr di_lamp setList on off

      set di_lamp on entspricht hier set di_lamp cmd_1 und set di_lamp off set di_lamp cmd_2
      Zusätzlich führt die Definition von setList zur Ausführung von set di_lamp on/off durch das Anlicken des Lampensymbols wie im vorherigen Beispiel.


    • Weitere Anwendungsbeispiele   back

      Zweipunktregler a la THRESHOLD

      define di_threshold DOIF ([sensor:temperature] < [$SELF:desired]-1)
      (set heating on)
      DOELSEIF ([sensor:temperature]>[$SELF:desired])
      (set heating off)

      attr di_threshold cmdState on|off
      attr di_threshold readingList desired
      attr di_threshold setList desired:17,18,19,20,21,22
      attr di_threshold webCmd desired

      Die Hysterese ist hier mit einem Grad vorgegeben. Die Vorwahltemperatur wird per Dropdown-Auswahl eingestellt.

      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

        block_<block name>
        Zeigt die Ausführung eines Perl-Blocks an (Perl).

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

        cmd_event
        Angabe des auslösenden Ereignisses

        cmd_nr
        Nr. des letzten ausgeführten Befehlszweiges

        cmd_seqnr
        Nr. der letzten ausgeführten Befehlssequenz

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

        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: <enabled|disabled|deactivated>

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

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

        timer_<timer name>
        verwendete, benannte Timer mit Angabe des nächsten Zeitpunktes (Perl)

        wait_timer
        Angabe des aktuellen Wait-Timers

        warning
        Perl-Warnung bei der Auswertung einer Bedingung

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

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

        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 Status, 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>|0123456789], [<begin>-<end>]|0123456789]
        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, 9 für $twe, Wochenende oder Feiertag morgen.

        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.

        Intervall-Timer [<begin>-<end>,<relativ timer>]
        Löst zu den aus <relativ timer> berechneten Zeitpunkten im angegebenen Zeitintervall <begin>-<end> aus.

        Trigger verhindern [?<devicename>], [?<devicename>:<readingname>], [?<devicename>:&<internalname>], [?<time specification>]
        Werden Status, 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, $we, $twe

      set-Befehle
        disable set <name> checkall
        Überprüfung aller DOIF-Bedingungen mit Ausführung eines wahren DOIF-Zweiges

        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

      get-Befehle
        html
        liefert HTML-Code einer definierten uiTable zurück.

      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

      • attr <name> do <always|resetwait>
        always wiederholt den Ausführungsteil, wenn die selbe Bedingung wiederholt wahr wird.
        resetwait setzt den Waittimer zurück, wenn die selbe Bedingung wiederholt wahr wird.

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

        Readingauswertung bei jedem Event des Devices attr <name> checkReadingEvent <0|1>
        0 deaktiviert, 1 keine Funktion mehr, entspricht internen der Voreinstellung des Moduls.

        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 Ersatzstatus von Befehlssequenzen werden durch Kommata, die von Befehlszweigen durch Pipe Zeichen getrennt.

        Befehle bei FHEM-Start ausführen attr <name> startup <FHEM-Befehle>|{<Perl-Befehle mit DOIF-Syntax>}

        dynamischer Status attr <name> state <content>
        <content> ist das Ergebnis eines Perl-Ausdrucks, DOIF-Syntax ([<device>:<reading>], usw.) triggert bei Event die Berechnung.

        Erzeugen berechneter Readings attr <name> DOIF_Readings <readingname_1>:<content_1>,<readingname_2>:<content_2> ...
        <content_n> ist das Ergebnis von Perl-Ausdrücken, DOIF-Syntax ([<device>:<reading>], usw.) triggert bei Event die Berechnung.

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

        Status Initialisierung nach Neustart attr <name> initialize <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

      • attr <name> readingList <Reading1> <Reading2> ...
        fügt zum set-Befehl direkt setzbare, durch Leerzeichen getrennte Readings hinzu.

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

      • User Interface für DOIF attr <name> uiTable ⟨{<perl code (format specification, template specification, function definition, control variable, ...)>}\n⟩<template file import, method definition, table definition>
        format specification:
        $TABLE = "<CSS-Attribute>" ergänzt das table-Elemente um CSS-Attribute.
        $TD{<rows>}{<columns>} = "<HTML Attribute>" ergänzt td-Elemente um HTML-Attribute.
        $TR{<rows>} = "<HTML Attribute>" ergänzt tr-Elemente um HTML-Attribute.
        $TC{<columns>} = "<HTML Attribute>" ergänzt zu columns gehörende td-Elemente um HTML-Attribute.
        template specification:
        $TPL{<name>} = "<Zeichenkette>" speichert ein Template.
        function definition:
        sub FUNC_<name> {<function BLOCK>} definiert eine Funktion.
        control variables:
        $ATTRIBUTESFIRST = 1; organisiert die Detailansicht um.
        $SHOWNOSTATE = 1; blendet den Status in der Gerätezeile aus.
        $SHOWNODEVICELINE = "<regex room>"; blendet die Gerätezeile aus, wenn <regex room> zum Raumnamen passt, gilt nicht für den Raum Everything.
        $SHOWNODEVICELINK = 1; schaltet das Ersetzen des Gerätenamen durch einen Link auf die Detailseite aus.

        template file import:
        IMPORT <path with filename> importiert eine Templatedatei.
        method definition:
        DEF TPL_<name>(<definition with place holder $1,$2 usw.>) erzeugt ein Methodentemplate zur wiederholten Nutzung in der Tabellendefinition.
        table definition:
        Schreiben die nachstehenden Elemente HTML-Code in die Tabellenzelle, so wird er interpretiert.
        ↵ oder ↵↵ trennt Tabellenzeilen.
        | oder |↵ trennt Tabellenzellen.
        >↵ oder ,↵ sind zur Textstrukturierung zugelassen.
        WID([<device>:<reading>],"<widget modifier>"⟨,"<command>"⟩) bindet ein Widget an <device>:<reading>, <command> steht für set oder setreading, siehe widgetOverride und FHEMWEB-Widgets
        STY(<content>,<CSS style attributes>) schreibt den Inhalt von <content> in die Zelle und formatiert ihn mit <CSS style attributes>.
        <content> schreibt den Inhalt von <content> in die Zelle.
        <content> und <CSS style attributes> sind das Ergebnis von Perl-Ausdrücken. Enthalten sie DOIF-Syntax ([<device>:<reading>], usw.), werden sie dynamisch erzeugt.
        PUP(<DOIF-name to show interface table>, <iconname[@color number]>)
        gibt ein Link zum Öffnen eines Popup-Fensters zurück.
        <DOIF-name to show interface table> Name des DOIF-Gerätes dessen Benutzerschnittstelle angezeigt werden soll.
        <iconname[@color number]|string> gibt ein Icon an, wenn das Icon nicht verfügbar ist, wird <string> angezeigt.

        readingFnAttributes

      Perl-Funktionen
        DOIF_hsv(<current value>, <lower value>, <upper value>, <lower HUE value>, <upper HUE value>, <saturation>, <lightness>)
        gibt eine im HSV-Raum interpolierte HTML Farbnummer zurück, mit Prefix #
        <current value> aktueller Wert, für den die Farbnummer erzeugt wird.
        <lower value> unterer Wert, des Bereiches auf den die Farbnummer skaliert wird.
        <upper value> oberer Wert, des Bereiches auf den die Farbnummer skaliert wird.
        <lower HUE value> unterer HUE-Wert, der mit dem unteren Wert korrespondiert (0-360).
        <upper HUE value> oberer HUE-Wert, der mit dem oberen Wert korrespondiert (0-360).
        <saturation> Farbsättigung (0-100).
        <lightness> Hellwert (0-100).

        DOIF_rgb(<start color number>, <end color number>, <lower value>, <upper value>, <current value>)
        gibt eine linear interpolierte RGB Farbnummer zurück, abhängig vom Prefix der Start- o. Endfarbnummer mit oder ohne Prefix #.
        <start color number> Startfarbnummer des Farbbereiches, mit oder ohne Prefix #.
        <end color number> Endfarbnummer des Farbbereiches, mit oder ohne Prefix #.
        <lower value> unterer Wert, des Bereiches auf den die Farbnummer skaliert wird.
        <upper value> oberer Wert, des Bereiches auf den die Farbnummer skaliert wird.
        <current value> aktueller Wert, für den die Farbnummer erzeugt wird.

        FW_makeImage(<iconname[@color number]>)
        gibt HTML-Code zurück, der ein FHEM icon einbindet.
        <color number> optionale Farbnummer in Großschreibung, mit oder ohne Prefix #.
        weitere Infos im Quelltext von 01_FHEMWEB.pm.

      Perl Modus

      Dokumentation zum DOIF-Perl-Modus

    DOIFtools

    [EN DE]
      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.
      • erzeugt DOIF-Operanden aus einer Event-Zeile des Event-Monitors.
        • Ist der Event-Monitor in DOIF geöffnet, dann kann die Definition des DOIF geändert werden.
        • Ist der Event-Monitor in DOIFtools geöffnet, dann kann die Definition eines DOIF erzeugt werden.
      • prüfen der Definitionen mit Empfehlungen für DOIF-Modus FHEM.
      • erstellen von Shortcuts
      • optionalen Menüeintrag erstellen
      • Liste der laufenden Wait-Timer anzeigen
      • skaliert Werte zu Farbnummern und RGB Werten zum Einfärben, z.B. von Icons.
      • Auflistung der Subs, die vom User im Package DOIF deklariert wurden.

      Inhalt
        Bedienungsanleitung
        Definition
        Set-Befehl
        Get-Befehl
        Attribute
        Readings
        Links

      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 DOIFtoolsExecuteDefinition 1
        attr DOIFtools DOIFtoolsExecuteSave 1
        attr DOIFtools DOIFtoolsMenuEntry 1
        attr DOIFtools DOIFtoolsMyShortcuts ##My Shortcuts:,,list DOIFtools,fhem?cmd=list DOIFtools,remove_DOIFtoolsLog,fhem?cmd=delete DOIFtoolsLog;%22rm ./log/DOIFtoolsLog*.log%22

      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 ! Commandref#deletereading

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

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

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

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

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

      • set <name> specialLog <0|1>
        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 für DOIF-Modus FHEM.

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

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

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

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

      • get <name> runningTimerInDOIF
        runningTimerInDOIF zeigt eine Liste der laufenden Timer. Damit kann entschieden werden, ob bei einem Neustart wichtige Timer gelöscht werden und der Neustart ggf. verschoben werden sollte. Zeigt nachrichtlich das Ergebnis von blockinginfo an.

      • get <name> SetAttrIconForDOIF <DOIF names for setting the attribute icon to helper_doif>
        SetAttrIconForDOIF setzt für die ausgewählten DOIF das Attribut icon auf helper_doif.

      • get <name> linearColorGradient <start color number>,<end color number>,<minimal value>,<maximal value>,<step width>
        linearColorGradient erzeugt eine Tabelle mit linear abgestuften Farbnummern und RGB-Werten.
        <start color number>, ist eine HTML-Farbnummer, Beispiel: #0000FF für Blau.
        <end color number>, , ist eine HTML-Farbnummer, Beispiel: #FF0000 für Rot.
        <minimal value>, der Minimalwert auf den die Startfarbnummer skaliert wird, Beispiel: 7.
        <maximal value>, der Maximalwert auf den die Endfarbnummer skaliert wird, Beispiel: 30.
        <step width>, für jeden Schritt wird ein Farbwert erzeugt, Beispiel: 0.5.
        Beispiel: get DOIFtools linearColorGradient #0000FF,#FF0000,7,30,0.5

      • get <name> modelColorGradient <minimal value>,<middle value>,<maximal value>,<step width>,<color model>
        modelColorGradient erzeugt eine Tabelle mit modellbedingt abgestuften Farbnummern und RGB-Werten, siehe FHEM-Wiki Farbskala mit Color::pahColor
        <minimal value>, der Minimalwert auf den die Startfarbnummer skaliert wird, Beispiel: 7.
        <middle value>, der Mittenwert ist ein Fixpunkt zwischen Minimal- u. Maximalwert, Beispiel: 20.
        <maximal value>, der Maximalwert auf den die Endfarbnummer skaliert wird, Beispiel: 30.
        <step width>, für jeden Schritt wird ein Farbwert erzeugt, Beispiel: 1.
        <color model>, die Angabe eines vordefinierten Modells <0|1|2> oder fünf RGB-Werte als Array [r1,g1,b1,r2,g2,b2,r3,g3,b3,r4,g4,b4,r5,g5,b5] für ein eigenes Model.

        Beispiele:
        get DOIFtools modelColorGradient 7,20,30,1,0
        get DOIFtools modelColorGradient 0,50,100,5,[255,255,0,127,255,0,0,255,0,0,255,255,0,127,255]
        Farbskala mit Color::pahColor

      • get <name> hsvColorGradient <HUE start value>,<HUE end value>,<minimal value>,<maximal value>,<step width>,<saturation>,<lightness>
        hsvColorGradient erzeugt eine Tabelle über HUE-Werte abgestufte Farbnummern und RGB-Werten.
        <Hue start value>, der HUE-Startwert, Beispiel: 240 für Blau.
        <HUE end value>, der HUE-Endwert, Beispiel: 360 für Rot.
        <minimal value>, der Minimalwert auf den der HUE-Startwert skaliert wird, Beispiel: 7.
        <maximal value>, der Maximalwert auf den der HUE-Endwert skaliert wird, Beispiel: 30.
        <step width>, für jeden Schritt wird ein Farbwert erzeugt, Beispiel: 1.
        <saturation>, die Angabe eines Wertes für die Farbsättigung <0-100>, Beispiel 80.
        <lightness>, die Angabe eines Wertes für die Helligkeit <0-100>, Beispiel 80.

        Beispiele:
        get DOIFtools hsvColorGradient 240,360,7,30,1,80,80

      • get <name> subsInPackageDOIF
        subsInPackageDOIF erzeugt eine Liste der Subs, die vom User im Package DOIF deklariert wurden.

      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>
        DOIFtoolsHideGetSet 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
        menuEntries
      • attr <name> DOIFtoolsMenuEntry <0|1>
        DOIFtoolsMenuEntry 1, erzeugt einen Menüeintrag im FHEM-Menü. Default 0.

      • attr <name> DOIFtoolsLogDir <path to DOIFtools logfile>
        DOIFtoolsLogDir <path>, gibt den Pfad zum Logfile an Default ./log oder der Pfad aus dem Attribut global logdir.

        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

        DOIF im FHEM-Wiki
        Erste Schritte mit DOIF
        DOIF: Einsteigerleitfaden, Grundfunktionen und Erläuterungen
        DOIF-Labor - ausführbare, praxisnahe Beispiele als Problemlösung zum Experimentieren
        DOIF: Tipps zur leichteren Bedienung
        DOIF: Tools und Fehlersuche

      DSBMobile liest die Vertretungspläne der DSBMobile App, die (zumindest) an einigen Schulen in Deutschland verwendet wird

    Define
      DSBMobile verwendet einige Perl-Module, die vorab installiert werden müssen:
      • IO::Compress::Gzip
      • IO::Uncompress::Gunzip
      • MIME::Base64
      • HTML::TableExtract
      • DSBMobile wird ohne Parameter definiert.

        define <devicename> DSBMobile



      Get
        • Empfängt die aktuellen Vertretungsplan- und Aushang-Informationen
      Readings
        Die folgenden Readings werden erstellt:
        • columnNames: Readingnamen, die dynamisch aus den Spaltenüberschriften des Vertretungsplans generiert werden
        • lastCheck: Datum/Uhrzeit der letzten erfolgreichen Überprüfung auf neue Daten
        • lastSync: Datum/Uhrzeit der letzten erfolgreichen Synchronisierung neuer Daten(nicht nur Überprüfung)
        • lastTTUpdate: Datum/Uhrzeit der letztenAktualisierung auf dem DSBMobile Server
        • error: enthält die letzte Fehlermeldung, die bei der Datensynchronisierung aufgetreten ist
        • state: "ok" sofern der letzte Abruf erfolgreich war, "error" wenn nicht.
        Für jeden Aushang bzw. jede Vertretung werden folgende Readings erstellt
        • i#_date: Datum des Aushangs
        • i#_title: Titel des Aushangs
        • i#_url: Link zum Aushang
        • ti#_sdate: Datum der "Info des Tages"
        • ti#_topic: Titel der "Info des Tages"
        • ti#_text: Inhalt der "Info des Tages"
        • tt#_xxxxDynamisch generierte Readings für jede Spalte des Vertretungsplanes
      Attributes
        • dsb_user: Der User für die DSBMobile-Anmeldung
        • dsb_password: Das Passwort für die DSBMobile-Anmeldung
        • dsb_class: Die Klasse nach der gefiltert werden soll. Kann eine Regex sein, z.B. 5a|8b or 6.*c.
        • dsb_classReading: Muss gesetzt werden, wenn die Spalte mit der Klasse nicht "Klasse(n)" heisst, d.h. das generierte reading nicht "Klasse_n_" lautet
        • dsb_interval: Intervall in Sekunden in dem Daten von DSBMobile abgerufen werden, ein Wert von 0 bedeuted disabled
        • dsb_outputFormat: Kann benutzt werden, um den Output des weblinks zu formatieren. Die Readingnamen von % umschlossen können als Variablen verwendet werden, z.B. %Klasse_n_%
      DSBMobile bietet zusätzlich drei Funktionen, um die Informationen in weblinks darzustellen:
      • DSBMobile_simpleHTML($name ["dsb",showInfoOfTheDay]): Zeigt den Vertretungsplan, wenn der zweite optionale Parameter auf "1" gesetzt wird, wird die Info des Tages zusätzlich mit angezeigt. Die Darstellung kann durch das Attribut dsb_outputFormat beeinflusst werden Beispiel defmod dsb_web weblink htmlCode {DSBMobile_simpleHTML("dsb",1)}
      • DSBMobile_tableHTML($name ["dsb",showInfoOfTheDay]): Zeigt den Vertretungsplan in einfacher tabellarischer Ansicht, wenn der zweite optionale Parameter auf "1" gesetzt wird, wird die Info des Tages zusätzlich mit angezeigt. Beispiel defmod dsb_web weblink htmlCode {DSBMobile_tableHTML("dsb",1)}
      • DSBMobile_infoHTML($name): Zeigt die Aushänge mit Links zu den Details. Beispiel defmod dsb_infoweb weblink htmlCode {DSBMobile_infoHTML("dsb")}

    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

    DWD_OpenData

    [EN DE]
      Der Deutsche Wetterdienst (DWD) stellt Wetterdaten über den Open Data Server zur Verfügung. Die Verwendung dieses Dienstes und der vom DWD zur Verfügung gestellten Daten unterliegt den auf der OpenData Webseite beschriebenen Bedingungen. Einen Überblick über die verfügbaren Daten findet man in der Tabelle OpenData_weather_content.xls.

      Eine Installationsbeschreibung findet sich in der FHEMWiki.

      Eine detaillierte Modulbeschreibung gibt es auf Englisch - siehe die englische Modulhilfe von DWD_OpenData.

    Dashboard

    [EN DE]
      Erstellt eine Übersicht in der Gruppen und/oder Geräte angeordnet werden können. Dabei können die Objekte mit Drag'n Drop frei positioniert und in mehreren Spalten angeordnet werden. Auch kann die Breite und Höhe eines Objektes über die Mindestgröße hinaus gezogen werden.

      Hinweis:
      Ein Gruppenname im Dashboard bzw. dem Attribut "dashboard_tabXgroups" entspricht der Gruppe in FHEM und stellt die darin enthaltenen Geräte im Dashboard dar.

      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> activateTab <TabNo>
          Das Tab mit der angegebenen Nummer wird im Dashboard aktiviert. Ist das Attribut "dashboard_homeTab" gesetzt, wird das in diesem Attribut definierte Tab beim nächsten Browser-Refresh reaktiviert.

        • set <name> lock
          Sperrt das Dashboard. Es können keine Positionsänderungen vorgenommen werden.

        • set <name> unlock
          Entsperrt das Dashboard.


      Get
        • get <name> config
          Liefert die Konfiguration des Dashboards zurück.

        • get <name> icon <icon name>
          Liefert den Pfad und vollen Namen des angegebenen Icons zurück.

          Beispiel:
          get <name> icon measure_power_meter

      Attributes

        • dashboard_backgroundimage
          Zeigt ein Hintergrundbild im Dashboard an. Das Bild wird nicht gestreckt, es sollte daher auf die Größe des Dashboards passen oder diese überschreiten. Es ist nur der Filename anzugeben.
          Das File muss sich an beliebiger Stelle unterhalb des Verzeichnisses "./www/images/" befinden.
          Empfehlung: Das Verzeichnis "./www/images/dashboard" anlegen und das Bildfile in diesem Verzeichnis ablegen.

          Beispiel
          attr dashboard_backgroundimage cam_video.PNG

        • 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!
          Default: 1

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

        • 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 "zuschnappt".
          Default: 0

        • dashboard_hideGroupHeader
          Wenn gesetzt, wird der Kopf mit Gruppenname und -icon der dargestellten FHEM-Gruppe (siehe dashboard_tab1groups) verborgen.
          Default: 0

        • dashboard_homeTab
          Legt das aktuell aktivierte Tab fest. Wenn nicht gesetzt, wird das zuletzt gewählte Tab das aktive Tab.
          Default: 1

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

        • dashboard_rowcenterheight
          Höhe der mittleren Zeile, in der die Gruppen angeordnet werden.
          Default: 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.
          Default: 100

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

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

        • 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.
          Default: tabs-and-buttonbar-at-the-top

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

        • dashboard_tab1backgroundimage
          Zeigt ein Hintergrundbild für den Tab an. (gilt ebenfalls für weitere dashboard_tabXbackgroundimage)
          Das Bild wird nicht gestreckt, es sollte also auf die Größe des Tabs passen oder diese überschreiten. Es ist nur der Filename anzugeben.
          Das File muss sich an beliebiger Stelle unterhalb des Verzeichnisses "./www/images/" befinden.
          Empfehlung: Das Verzeichnis "./www/images/dashboard" anlegen und das Bildfile in diesem Verzeichnis ablegen.

          Beispiel
          attr dashboard_tab1backgroundimage cam_video.PNG

        • dashboard_tab1colcount
          Die Anzahl der Spalten im Tab in der Gruppen dargestellt werden können. (gilt ebenfalls für weitere dashboard_tabXcolcount)
          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!
          Default: <dashboard_colcount>

        • dashboard_tab1devices
          DevSpec Liste von Geräten, die im Tab angezeigt werden sollen. (gilt ebenfalls für weitere dashboard_tabXdevices)
          Das Format ist:

            GROUPNAME:devspec1,devspec2,...,devspecX:ICONNAME

          ICONNAME ist optional. Auch GROUPNAME muss nicht vorhanden sein. Fehlt GROUPNAME, werden die angegebenen Geräte nicht gruppiert, sondern als einzelne Widgets im Tab angezeigt. Für weitere Details bezüglich DevSpec: DevSpec

        • dashboard_tab1groups
          Durch Komma getrennte Liste der FHEM-Gruppen (siehe Attribut "group" eines Devices), die im Tab angezeigt werden. (gilt ebenfalls für weitere dashboard_tabXgroups) 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_tab1icon
          Zeigt am Tab ein Icon an (gilt ebenfalls für weitere dashboard_tabXicon). 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_tab1name
          Titel des Tab. (gilt ebenfalls für weitere dashboard_tabXname)

        • dashboard_tab1sorting
          Enthält die Positionierung jeder Gruppe im Tab (gilt ebenfalls für weitere dashboard_tabXsorting).
          Der Wert wird mit der Schaltfläche "Set" geschrieben. Es wird nicht empfohlen dieses Attribut manuell zu ändern.

        • dashboard_noLinks
          Es erfolgt keine Linkerstellung zur Detailansicht von Devices.

          Hinweis:
          Bei manchen Devicetypen wird der Link zur Detailansicht integriert im Device mitgeliefert. In diesen Fällen muß die Linkgenerierung direkt im Device abgestellt werden (z.B. bei SMAPortalSPG).

        • dashboard_webRefresh
          Mit diesem Attribut werden FHEMWEB-Devices bestimmt, die:

          • beim Setzen des Attributes "dashboard_homeTab" diesen Tab im Dashboard sofort aktivieren
          • beim Ausführen von "set <name> activateTab" auf diesen Tab im Dashboard positionieren

          Default: alle

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

    DbLog

    [EN DE]

      Mit DbLog werden Events in einer Datenbank gespeichert. Es wird SQLite, MySQL/MariaDB und PostgreSQL unterstützt.

      Voraussetzungen

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

      Auf einem Debian-System können diese Module z.Bsp. installiert werden mit:

        DBI : sudo apt-get install libdbi-perl
        MySQL : sudo apt-get install [mysql-server] mysql-client libdbd-mysql libdbd-mysql-perl (mysql-server nur bei lokaler MySQL Server Installation)
        MariaDB : sudo apt-get install [mariadb-server] mariadb-client libdbd-mariadb-perl (mariadb-server nur bei lokaler MariaDB Server Installation)
        SQLite : sudo apt-get install sqlite3 libdbi-perl libdbd-sqlite3-perl
        PostgreSQL : sudo apt-get install libdbd-pg-perl


      Vorbereitungen

      Zunächst muss die Datenbank installiert und angelegt werden. Die Installation des Datenbanksystems selbst wird hier nicht beschrieben. Dazu bitte nach den Installationsvorgaben des verwendeten Datenbanksystems verfahren.

      Hinweis:
      Im Falle eines frisch installierten MySQL/MariaDB Systems bitte nicht vergessen die anonymen "Jeder"-Nutzer mit einem Admin-Tool (z.B. phpMyAdmin) zu löschen falls sie existieren.

      Beispielcode bzw. Scripts zum Erstellen einer MySQL/PostgreSQL/SQLite Datenbank ist im SVN -> contrib/dblog/db_create_<DBType>.sql enthalten.
      (Achtung: Die lokale FHEM-Installation enthält im Unterverzeichnis ./contrib/dblog nicht die aktuellsten Scripte!)

      Die ältere Standardinstallation der MySQL/MariaDB Datenbank sah die Nutzung der Collation utf8_bin vor. Mit dieser Einstellung können Zeichen bis 3 Byte Länge gespeichert werden was im Allgemeinen ausreichend ist. Sollen jedoch Zeichen mit 4 Byte Länge (z.B. Emojis) in der Datenbank gespeichert werden, ist der Zeichensatz utf8mb4 zu verwenden.
      Dementsprechend wäre in diesem Fall die MySQL/MariaDB Datenbank mit folgendem Statement anzulegen:

        CREATE DATABASE `fhem` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

      Beachten sie den Schlüssel utf8 wenn der MySQL Datenbanktreiber benutzt wird (MODEL = MYSQL).

      Die Datenbank beinhaltet 2 Tabellen: current und history.
      Die Tabelle current enthält den letzten Stand pro Device und Reading.
      In der Tabelle history sind alle Events historisch gespeichert.
      Beachten sie bitte unbedingt das DbLogType um die Benutzung der Tabellen current und history festzulegen.

      Die Tabellenspalten haben folgende Bedeutung:

        TIMESTAMP : Zeitpunkt des Events, z.B. 2007-12-30 21:45:22
        DEVICE : Name des Devices, z.B. Wetterstation
        TYPE : Type des Devices, z.B. KS300
        EVENT : das auftretende Event als volle Zeichenkette, z.B. humidity: 71 (%)
        READING : Name des Readings, ermittelt aus dem Event, z.B. humidity
        VALUE : aktueller Wert des Readings, ermittelt aus dem Event, z.B. 71
        UNIT : Einheit, ermittelt aus dem Event, z.B. %


      Index anlegen
      Für die Leseperformance, z.B. bei der Erstellung von SVG-PLots, ist es von besonderer Bedeutung dass der Index "Search_Idx" oder ein vergleichbarer Index (z.B. ein Primary Key) angelegt ist.

      Der Index "Search_Idx" kann mit diesen Statements, z.B. in der Datenbank 'fhem', angelegt werden (auch nachträglich):

        MySQL : CREATE INDEX Search_Idx ON `fhem`.`history` (DEVICE, READING, TIMESTAMP);
        MariaDB : CREATE INDEX Search_Idx ON `fhem`.`history` (DEVICE, READING, TIMESTAMP);
        SQLite : CREATE INDEX Search_Idx ON `history` (DEVICE, READING, TIMESTAMP);
        PostgreSQL : CREATE INDEX "Search_Idx" ON history USING btree (device, reading, "timestamp");

      Der Code zur Anlage ist ebenfalls in den Scripten SVN -> contrib/dblog/db_create_<DBType>.sql enthalten.

      Für die Verbindung zur Datenbank wird eine Konfigurationsdatei verwendet. Die Konfigurationsdatei wird z.B. nach /opt/fhem kopiert und hat den nachfolgend dargestellten Aufbau. Die Angaben sind entsprechend der verwendeten Umgebung anzupassen (entsprechende Zeilen entkommentieren und ändern):

          ####################################################################################
          # database configuration file
          #
          # NOTE:
          # If you don't use a value for user / password please delete the leading hash mark
          # and write 'user => ""' respectively 'password => ""' instead !
          #
          #
          ## for MySQL
          ####################################################################################
          #%dbconfig= (
          #    connection => "mysql:database=fhem;host=<database host>;port=3306",
          #    # if want communication over socket-file instead of TCP/IP transport, use:
          #    # connection => "mysql:database=fhem;mysql_socket=</path/socket-file>",
          #    user => "fhemuser",
          #    password => "fhempassword",
          #    # optional enable UTF-8 support
          #    # (full UTF-8 support exists from DBD::mysql version 4.032, but installing version 4.042 is highly suggested)
          #    utf8 => 1,
          #    # optional enable communication compression between client and server
          #    compression => 1    
          #);
          ####################################################################################
          #
          ## for MariaDB
          ####################################################################################
          #%dbconfig= (
          #    connection => "MariaDB:database=fhem;host=<database host>;port=3306",
          #    # if want communication over socket-file instead of TCP/IP transport, use:
          #    # connection => "MariaDB:database=fhem;mariadb_socket=</path/socket-file>",
          #    user => "fhemuser",
          #    password => "fhempassword",
          #    # optional enable communication compression between client and server
          #    compression => 1 
          #);
          ####################################################################################
          #
          ## for PostgreSQL
          ####################################################################################
          #%dbconfig= (
          #    connection => "Pg:database=fhem;host=<database host>",
          #    user => "fhemuser",
          #    password => "fhempassword"
          #);
          ####################################################################################
          #
          ## for SQLite (username and password stay empty for SQLite)
          ####################################################################################
          #%dbconfig= (
          #    connection => "SQLite:dbname=/opt/fhem/fhem.db",
          #    user => "",
          #    password => ""
          #);
          ####################################################################################
          
      Wird configDB genutzt, ist das Konfigurationsfile in die configDB hochzuladen!

      Hinweis zu Sonderzeichen:
      Werden Sonderzeichen, wie z.B. @, $ oder %, welche eine programmtechnische Bedeutung in Perl haben im Passwort verwendet, sind diese Zeichen zu escapen. Das heißt in diesem Beispiel wäre zu verwenden: \@,\$ bzw. \%.

      DbLog spezifische Events

      DbLog generiert Events abhängig vom Initialisierungsstatus des DbLog-Devices:

        FRAME_INITIALIZED - Das grundlegende Rahmenwerk ist initialisiert. Blockierend arbeitende (Get)-Kommandos können ausgeführt werden.
        SUBPROC_INITIALIZED - Der SupProcess ist einsatzbereit. Nichtblockierend arbeitende (Set)-Kommandos und Daten Logging können ausgeführt werden.
        SUBPROC_DISCONNECTED - Der SupProcess wurde von der DB getrennt.
        SUBPROC_STOPPED - Der SupProcess wurde gestoppt.



      Define

        define <name> DbLog <configfilename> <regexp>

        <configfilename> ist die vorbereitete Konfigurationsdatei.
        <regexp> ist identisch FileLog der Filelog-Definition.

        Beispiel:
          define myDbLog DbLog /etc/fhem/db.conf .*:.*
          speichert alles in der Datenbank

        Nachdem das DbLog-Device definiert wurde, ist empfohlen einen Konfigurationscheck auszuführen:

          get <name> configCheck

        Dieser Check prüft einige wichtige Einstellungen des DbLog-Devices und gibt Empfehlungen für potentielle Verbesserungen.


        DbLog unterscheidet den synchronen (default) und asynchronen Logmodus. Der Logmodus ist über das asyncMode einstellbar. Ab Version 2.13.5 unterstützt DbLog einen gesetzten Primary Key (PK) in den Tabellen Current und History. Soll PostgreSQL mit PK genutzt werden, muss PostgreSQL mindestens Version 9.5 sein.

        Der gespeicherte Wert des Readings wird optimiert für eine automatisierte Nachverarbeitung, z.B. yes wird transformiert nach 1.

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

        FileLog-Dateien nach DbLog übertragen

        Zur Übertragung von vorhandenen Filelog-Daten in die DbLog-Datenbank steht das spezielle Modul 98_FileLogConvert.pm zur Verfügung.
        Dieses Modul kann hier bzw. aus dem Verzeichnis ./contrib geladen werden. Weitere Informationen und Hilfestellung gibt es im entsprechenden Forumthread .


        Reporting und Management von DbLog-Datenbankinhalten

        Mit Hilfe SVG können Datenbankinhalte visualisiert werden.
        Darüber hinaus kann das Modul DbRep genutzt werden um tabellarische Datenbankauswertungen anzufertigen oder den Datenbankinhalt mit den zur Verfügung stehenden Funktionen zu verwalten.


        Troubleshooting

        Wenn nach der erfolgreichen Definition das DbLog-Device nicht wie erwartet arbeitet, können folgende Hinweise hilfreich sein:

        • Wurden die vorbereitenden Schritte gemacht, die in der commandref beschrieben sind ? (Softwarekomponenten installieren, Tabellen, Index anlegen)
        • Wurde ein "get <name> configCheck" nach dem Define durchgeführt und eventuelle Fehler beseitigt bzw. Empfehlungen umgesetzt ?
        • Falls configDB in Benutzung ... wurde das DB-Konfigurationsfile in configDB importiert (z.B. mit "configDB fileimport ./db.conf") ?
        • Beim Anlegen eines SVG-Plots erscheint keine Drop-Down Liste mit Vorschlagswerten -> Attribut "DbLogType" auf "Current/History" setzen.

        Sollten diese Hinweise nicht zum Erfolg führen, bitte den verbose-Level im DbLog Device auf 4 oder 5 hochsetzen und die Einträge bezüglich des DbLog-Device im Logfile beachten. Zur Problemanalyse bitte die Ausgabe von "list <name>", das Ergebnis von "get <name> configCheck" und die Ausgaben des DbLog-Device im Logfile im Forumthread posten.



      Set

      • set <name> addCacheLine YYYY-MM-DD HH:MM:SS|<device>|<type>|<event>|<reading>|<value>|[<unit>]

          Im asynchronen Modus wird ein neuer Datensatz in den Cache eingefügt und beim nächsten Synclauf mit abgearbeitet.

          Beispiel:
          set <name> addCacheLine 2017-12-05 17:03:59|MaxBathRoom|MAX|valveposition: 95|valveposition|95|%

      • set <name> addLog <devspec>:<Reading> [Value] [CN=<caller name>] [!useExcludes]

          Fügt einen zusätzlichen Logeintrag einer Device/Reading-Kombination in die Datenbank ein.
          Die eventuell im Attribut "DbLogExclude" spezifizierten Readings (im Quellendevice) werden nicht geloggt, es sei denn sie sind im Attribut "DbLogInclude" enthalten bzw. der addLog Aufruf erfolgte mit der Option "!useExcludes".

          <devspec>:<Reading> Das Device kann als Geräte-Spezifikation angegeben werden.
          Die Angabe von "Reading" wird als regulärer Ausdruck ausgewertet.
          Ist das Reading nicht vorhanden und der Wert "Value" angegeben, wird das Reading
          in die DB eingefügt wenn es kein regulärer Ausdruck und ein valider Readingname ist.
          Value Optional kann "Value" für den Readingwert angegeben werden.
          Ist Value nicht angegeben, wird der aktuelle Wert des Readings in die DB eingefügt.
          CN=<caller name> Mit dem Schlüssel "CN=" (Caller Name) kann dem addLog-Aufruf ein String,
          z.B. der Name des aufrufenden Devices, mitgegeben werden.
          Mit Hilfe der im Attribut valueFn hinterlegten Funktion kann
          dieser Schlüssel über die Variable $CN ausgewertet werden.
          !useExcludes addLog berücksichtigt per default die mit dem Attribut "DbLogExclude" ausgeschlossenen Readings.
          Mit dem Schüsselwort "!useExcludes" wird das gesetzte Attribut "DbLogExclude" ignoriert.

          Das Datenbankfeld "EVENT" wird automatisch mit "addLog" belegt.
          Es wird kein zusätzlicher Event im System erzeugt!

          Beispiele:
          set <name> addLog SMA_Energymeter:Bezug_Wirkleistung
          set <name> addLog TYPE=SSCam:state
          set <name> addLog MyWetter:(fc10.*|fc8.*)
          set <name> addLog MyWetter:(wind|wind_ch.*) 20 !useExcludes
          set <name> addLog TYPE=CUL_HM:FILTER=model=HM-CC-RT-DN:FILTER=subType!=(virtual|):(measured-temp|desired-temp|actuator)

          set <name> addLog USV:state CN=di.cronjob

          In der valueFn-Funktion wird der Aufrufer "di.cronjob" über die Variable $CN ausgewertet und davon abhängig der Timestamp dieses addLog korrigiert:

          valueFn = if($CN eq "di.cronjob" and $TIMESTAMP =~ m/\s00:00:[\d:]+/) { $TIMESTAMP =~ s/\s([^\s]+)/ 23:59:59/ }

      • set <name> clearReadings

          Leert Readings die von verschiedenen DbLog-Funktionen angelegt wurden.

      • set <name> eraseReadings

          Löscht alle Readings außer dem Reading "state".

      • set <name> commitCache

          Im asynchronen Modus (asyncMode=1), werden die im Cache gespeicherten Daten in die Datenbank geschrieben und danach der Cache geleert.
          Der interne Timer des asynchronen Modus wird dabei neu gesetzt.

      • set <name> configCheck

          Es werden einige wichtige Einstellungen geprüft und Empfehlungen gegeben falls potentielle Verbesserungen identifiziert wurden.
          (Hinweis: Dieser Befehl ist abgekündigt und wird in den nächsten Versionen entfernt werden. Verwenden Sie stattdessen "get <name> configCheck".)

      • set <name> count

          Ermittelt die Anzahl der Datensätze in den Tabellen current und history und schreibt die Ergebnisse in die Readings countCurrent und countHistory.

          Hinweis
          Während der Laufzeit des Befehls werden zu loggende Daten temporär im Memory Cache gespeichert und nach Beendigung des Befehls in die Datenbank geschrieben.

      • set <name> deleteOldDays <n>

          Löscht Datensätze älter als <n> Tage in Tabelle history. Die Anzahl der gelöschten Datensätze wird im Reading lastRowsDeleted protokolliert.

          Hinweis
          Während der Laufzeit des Befehls werden zu loggende Daten temporär im Memory Cache gespeichert und nach Beendigung des Befehls in die Datenbank geschrieben.

      • set <name> exportCache [nopurge | purgecache]

          Wenn DbLog im asynchronen Modus betrieben wird, kann der Cache mit diesem Befehl in ein Textfile geschrieben werden.
          Das File wird per default im Verzeichnis (global->modpath)/log/ erstellt. Das Zielverzeichnis kann mit dem expimpdir Attribut geändert werden.

          Der Name des Files wird automatisch generiert und enthält den Präfix "cache_<name>", gefolgt von dem aktuellen Zeitstempel.

          Beispiel
          cache_LogDB_2017-03-23_22-13-55

          Mit den Optionen "nopurge" bzw. "purgecache" wird festgelegt, ob der Cacheinhalt nach dem Export gelöscht werden soll oder nicht. Mit "nopurge" (default) bleibt der Cacheinhalt erhalten.
          Das exportCacheAppend Attribut bestimmt ob mit jedem Exportvorgang ein neues Exportfile angelegt wird (default) oder der Cacheinhalt an das neuste vorhandene Exportfile angehängt wird.

      • set <name> importCachefile <file>

          Importiert ein mit "exportCache" geschriebenes File in die Datenbank.
          Die verfügbaren Dateien werden per Default im Verzeichnis (global->modpath)/log/ gesucht und eine Drop-Down Liste erzeugt sofern Dateien gefunden werden.
          Das Quellenverzeichnis kann mit dem expimpdir Attribut geändert werden.
          Es werden nur die Dateien angezeigt, die dem Muster "cache_<name>" entsprechen.

          Beispiel
          cache_LogDB_2017-03-23_22-13-55
          wenn das DbLog Device "LogDB" heißt.

          Nach einem erfolgreichen Import wird das File mit dem Präfix "impdone_" versehen und erscheint nicht mehr in der Drop-Down Liste. Soll ein Cachefile in eine andere als die Quellendatenbank importiert werden, kann der Name des DbLog Device im Filenamen angepasst werden damit dieses File in der Drop-Down Liste erscheint.

          Hinweis
          Während der Laufzeit des Befehls werden zu loggende Daten temporär im Memory Cache gespeichert und nach Beendigung des Befehls in die Datenbank geschrieben.

      • set <name> listCache

          Listet die im Memory Cache zwischengespeicherten Daten auf.

      • set <name> purgeCache

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

      • set <name> reduceLog <no>[:<nn>] [average[=day]] [exclude=device1:reading1,device2:reading2,...]

          Reduziert historische Datensätze, die älter sind als <no> Tage und (optional) neuer sind als <nn> Tage auf einen Eintrag (den ersten) pro Stunde je Device & Reading.
          Innerhalb von device/reading können SQL-Wildcards "%" und "_" verwendet werden.

          Durch die optionale Angabe von 'average' bzw. 'average=day' wird nicht nur die Datenbank bereinigt, sondern alle numerischen Werte einer Stunde bzw. eines Tages werden auf einen einzigen Mittelwert reduziert.

          Optional kann als letzer Parameter "exclude=device1:reading1,device2:reading2,...." angegeben werden um device/reading Kombinationen von reduceLog auszuschließen.
          Anstatt "exclude" kann als letzer Parameter "include=device:reading" angegeben werden um die auf die Datenbank ausgeführte SELECT-Abfrage einzugrenzen. Dadurch wird die RAM-Belastung verringert und die Performance erhöht. Die Option "include" kann nur mit einer device:reading Kombination angegeben werden.

            Beispiele:
            set <name> reduceLog 270 average include=Luftdaten_remote:%
            set <name> reduceLog 100:200 average exclude=SMA_Energymeter:Bezug_Wirkleistung

          Hinweis
          Während der Laufzeit des Befehls werden zu loggende Daten temporär im Memory Cache gespeichert und nach Beendigung des Befehls in die Datenbank geschrieben.

      • set <name> reopen [n]

          Schließt die Datenbank und öffnet sie danach sofort wieder wenn keine Zeit [n] in Sekunden angegeben wurde.
          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.
          Während der Zeit der Datenbankschließung werden zu loggende Events im Memory Cache gespeichert und nach dem Reconnect in die Datenbank geschrieben.

      • set <name> rereadcfg

          Die Konfigurationsdatei wird neu eingelesen.
          Nach dem Einlesen wird eine bestehende Datenbankverbindung beendet und mit den konfigurierten Verbindungsdaten neu aufgebaut.

      • set <name> stopSubProcess

          Ein laufender SubProzess wird beendet.
          Sobald durch eine Operation ein neuer SubProzess benötigt wird, erfolgt die automatische Neuinitialisierung eines SubProzesses.

          Hinweis
          Die Neuinitialisierung des SubProzesses während der Laufzeit verursacht einen erhöhten RAM Verbrauch bis zu einem FHEM Neustart .

      • set <name> userCommand <validSelectStatement>

          Führt einfache SQL Select Befehle auf der Datenbank aus.
          Das Ergebnis des Statements wird in das Reading "userCommandResult" geschrieben. Das Ergebnis kann nur einzeilig sein.
          Die Ausführung von SQL-Befehlen in DbLog ist veraltet. Dafür sollte das Auswertungsmodul DbRep genutzt werden.

          Hinweis
          Während der Laufzeit des Befehls werden zu loggende Daten temporär im Memory Cache gespeichert und nach Beendigung des Befehls in die Datenbank geschrieben.


      Get

      • get <name> configCheck

          Es werden einige wichtige Einstellungen geprüft und Empfehlungen gegeben falls potentielle Verbesserungen identifiziert wurden.

      • get <name> ReadingsMaxVal[Timestamp] <Device> <Reading> <default>

          Ermittelt den Datensatz mit dem größten Wert der angegebenen Device / Reading Kombination aus der history Tabelle.
          Zurück gegeben wird nur der Wert oder die Kombination aus Wert und Timestamp als String "<Wert> , <Timestamp>".
          <default> gibt einen definierten Rückgabewert an, wenn kein Wert ermittelt werden kann.

          Hinweis:
          Dieser Datenbankabruf arbeitet blockierend und beeinflusst FHEM wenn die Datenbank nicht oder nicht hinreichend schnell antwortet. Für nicht-blockierende Datenbankabfragen wird auf das Modul DbRep verwiesen.

      • get <name> ReadingsMinVal[Timestamp] <Device> <Reading> <default>

          Ermittelt den Datensatz mit dem kleinsten Wert der angegebenen Device / Reading Kombination aus der history Tabelle.
          Zurück gegeben wird nur der Wert oder die Kombination aus Wert und Timestamp als String "<Wert> , <Timestamp>".
          <default> gibt einen definierten Rückgabewert an, wenn kein Wert ermittelt werden kann.

          Hinweis:
          Dieser Datenbankabruf arbeitet blockierend und beeinflusst FHEM wenn die Datenbank nicht oder nicht hinreichend schnell antwortet. Für nicht-blockierende Datenbankabfragen wird auf das Modul DbRep verwiesen.

      • get <name> ReadingsAvgVal <Device> <Reading> <default>

          Ermittelt den Durchschnittswert der angegebenen Device / Reading Kombination aus der history Tabelle.
          Zurück gegeben wird der einfache arithmetische Durchschnittswert.
          <default> gibt einen definierten Rückgabewert an, wenn kein Wert ermittelt werden kann.

          Hinweis:
          Dieser Datenbankabruf arbeitet blockierend und beeinflusst FHEM wenn die Datenbank nicht oder nicht hinreichend schnell antwortet. Für nicht-blockierende Datenbankabfragen wird auf das Modul DbRep verwiesen.

      • get <name> ReadingsVal[Timestamp] <Device> <Reading> <default>

          Liest den letzten (neuesten) in der history Tabelle gespeicherten Datensatz der angegebenen Device / Reading Kombination.
          Zurück gegeben wird nur der Wert oder die Kombination aus Wert und Timestamp als String "<Wert> , <Timestamp>".
          <default> gibt einen definierten Rückgabewert an, wenn kein Wert ermittelt werden kann.

          Hinweis:
          Dieser Datenbankabruf arbeitet blockierend und beeinflusst FHEM wenn die Datenbank nicht oder nicht hinreichend schnell antwortet. Für nicht-blockierende Datenbankabfragen wird auf das Modul DbRep verwiesen.

      • get <name> ReadingsTimestamp <Device> <Reading> <default>

          Liest den Zeitstempel des letzten (neuesten) in der history Tabelle gespeicherten Datensatzes der angegebenen Device/Reading Kombination und gibt diesen Wert zurück.
          <default> gibt einen definierten Rückgabewert an, wenn kein Wert in der Datenbank gefunden wird.

          Hinweis:
          Dieser Datenbankabruf arbeitet blockierend und beeinflusst FHEM wenn die Datenbank nicht oder nicht hinreichend schnell antwortet. Für nicht-blockierende Datenbankabfragen wird auf das Modul DbRep verwiesen.

      • get <name> retrieve <querytype> <device|table> <reading> <from> <to> <offset> <limit>

          Liest Daten aus der Datenbank Tabelle history und gibt die Ergebnisse als JSON formatiert zurück.
          Die Abfragemethode bzw. das gewünschte Abfrageergebnis wird durch den angegebenen <querytype> bestimmt.
          Jeder <querytype> verlangt evtl. weitere Parameter gemäß der folgenden Tabelle. Nicht eingegebene Parameter sind immer als "" anzugeben sofern danach noch ein weiterer Parameter eingegeben wird.

            alldevices Ermittelt alle in der Datenbank gespeicherten Devices.
            allreadings Ermittelt alle in der Datenbank gespeicherten Readings für ein bestimmtes Device.
            benötigte Parameter: <device>
            count Liefert die Anzahl Datensätze der angegebenen Tabelle.
            benötigte Parameter: <table> (history oder current)
            fetchrows Ermittelt die gespeicherten Datensätze eines bestimmten Zeitraumes.
            Die Anzahl der Datensätze im definierten Zeitraum wird als Schlüssel "totalcount" zurückgegeben.
            benötigte Parameter: <from>, <to>, <offset>, <limit>
            last Listet die letzten 10 gespeicherten Events auf.
            mögliche Parameter: <limit> (überschreibt den Standard 10)
            timerange Ermittelt die gespeicherten Datensätze der angegebenen Device / Reading Kombination.
            benötigte Parameter: <device>, <reading>, <from>, <to>
            hourstats Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für eine Stunde.
            benötigte Parameter: <device>, <reading>, <from>, <to>
            daystats Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für einen Tag.
            benötigte Parameter: <device>, <reading>, <from>, <to>
            weekstats Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für eine Woche.
            benötigte Parameter: <device>, <reading>, <from>, <to>
            monthstats Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für einen Monat.
            benötigte Parameter: <device>, <reading>, <from>, <to>
            yearstats Errechnet die Statistiken SUM, AVG, MIN, MAX, COUNT für ein Jahr.
            benötigte Parameter: <device>, <reading>, <from>, <to>

          Hinweis:
          Dieser Datenbankabruf arbeitet blockierend und beeinflusst FHEM wenn die Datenbank nicht oder nicht hinreichend schnell antwortet. Für nicht-blockierende Datenbankabfragen wird auf das Modul DbRep verwiesen.

          Beispiele:
          • get LogSQLITE3 retrieve alldevices
          • get LogSQLITE3 retrieve allreadings MySTP_5000
          • get LogSQLITE3 retrieve last "" "" "" "" "" 50
          • get LogSQLITE3 retrieve count history
          • get LogSQLITE3 retrieve timerange MySTP_5000 etotal 2023-01-01_00:00:00 2023-01-25_00:00:00
          • get LogSQLITE3 retrieve fetchrows MySTP_5000 "" 2023-01-01_00:00:00 2023-01-25_00:00:00 0 100
          • get LogSQLITE3 retrieve fetchrows "" etotal 2023-01-01_00:00:00 2023-01-25_00:00:00 0 100
          • get LogSQLITE3 retrieve hourstats MySTP_5000 etotal 2023-01-01_00:00:00 2023-01-25_00:00:00


      Get für die Nutzung von SVG-Plots

      • get <name> <in> <out> <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 zu Filelog herzustellen.
          In der Definition eines SVG Devices entspricht dieser Paramter der Angabe von :<logfile> am Ende der Definition.
          Folgende Ausprägungen sind zugelassen:
          • current: die Werte werden aus der Tabelle "current" gelesen.
          • history: die Werte werden aus der Tabelle "history" gelesen.
          • table_<Tabelle>: die Werte werden aus der angegeben alternativen Tabelle gelesen. Die Tabelle (Name) ist in der Datenbank mit Kleinbuchstaben anzulegen.
            (Beispiel: table_energy, "energy" ist die in der Datenbank angelegte Alternativtabelle)
          • -: 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> <in> <out> <from> <to> <device> <querytype> <xaxis> <yaxis> <savename> <chartconfig> <pagingstart> <paginglimit>

        Liest Daten aus der Datenbank aus und gibt diese in JSON formatiert aus. Wird für das Charting Frontend (Wiki: Neues Charting Frontend) genutzt.

        • <name>
          Der Name des definierten DbLog Devices, so wie er in der fhem.cfg angegeben wurde.

        • <in>
          Dieser Parameter ist immer auf - zu setzen.

        • <out>
          Dieser Parameter ist auf webchart zu setzen.

        • <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. Es muß ein gültiger Feldname, typisch 'TIMESTAMP', der history-Tabelle sein.

        • <yaxis>
          Ein String, der die Y-Achse repräsentiert und auf den Namen des auszuwertenden Readings zu setzen ist.

        • <savename>
          Ein String, unter dem ein Chart in der Datenbank gespeichert werden soll.

        • <chartconfig>
          Ein jsonstring der den zu speichernden Chart repräsentiert.

        • <pagingstart>
          Ein Integer um den Startwert für die Abfrage 'getTableData' festzulegen.

        • <paginglimit>
          Ein Integer um den Limitwert für die Abfrage 'getTableData' festzulegen.


        Beispiele:
        • get logdb - webchart "" "" "" getcharts
          Liefert alle gespeicherten Charts aus der Datenbank

        • get logdb - webchart "" "" "" getdevices
          Liefert alle verfügbaren Devices aus der Datenbank

        • get logdb - webchart "" "" ESA2000_LED_011e getreadings
          Liefert alle verfügbaren Readings aus der Datenbank unter Angabe eines Gerätes

        • get logdb - webchart 2013-02-11_00:00:00 2013-02-12_00:00:00 ESA2000_LED_011e timerange TIMESTAMP day_kwh
          Liefert Chart-Daten, die auf folgenden Parametern basieren: 'xaxis', 'yaxis', 'device', 'to' und 'from'
          Die Ausgabe erfolgt als JSON, z.B.: [{'TIMESTAMP':'2013-02-11 00:10:10','VALUE':'0.22431388090756'},{'TIMESTAMP'.....}]

        • get logdb - webchart 2013-02-11_00:00:00 2013-02-12_00:00:00 ESA2000_LED_011e savechart TIMESTAMP day_kwh tageskwh
          Speichert einen Chart unter Angabe eines 'savename' und seiner zugehörigen Konfiguration

        • get logdb - webchart "" "" "" deletechart "" "" 7
          Löscht einen zuvor gespeicherten Chart unter Angabe einer id


      Attribute

      • addStateEvent [0|1]

          Bekanntlich wird normalerweise bei einem Event mit dem Reading "state" der state-String entfernt, d.h. der Event ist nicht zum Beispiel "state: on" sondern nur "on".
          Meistens ist es aber hilfreich in DbLog den kompletten Event verarbeiten zu können. Deswegen übernimmt DbLog per Default den Event inklusive dem Reading-String "state".
          In einigen Fällen, z.B. alten oder speziellen Modulen, ist es allerdings wünschenswert den state-String wie gewöhnlich zu entfernen. In diesen Fällen bitte addStateEvent = "0" setzen. Versuchen sie bitte diese Einstellung, falls es mit dem Standard Probleme geben sollte.

      • asyncMode [0|1]

          Dieses Attribut stellt den Verarbeitungsprozess ein nach dessen Verfahren das DbLog Device die Daten in die Datenbank schreibt.
          DbLog verwendet zum Schreiben der Log-Daten in die Datenbank einen SubProzess und verarbeitet die Daten generell nicht blockierend für FHEM.
          Dadurch erfolgt der Schreibprozess in die Datenbank generell nicht blockierend und FHEM wird in dem Fall, dass die Datenbank nicht performant arbeitet oder nicht verfügbar ist (Wartung, Fehlerzustand, etc.), nicht beeinträchtigt.

            0 - Synchroner Log-Modus. Die zu loggenden Daten werden nur kurz im Cache zwischengespeichert und sofort
            in die Datenbank geschrieben. (default)
            Vorteile:
            Die Daten stehen im Prinzip sofort in der Datenbank zur Verfügung.
            Bei einem Absturz von FHEM gehen sehr wenige bis keine Daten verloren.
            Nachteile:
            Eine alternative Speicherung im Filesystem (bei Datenbankproblemen) wird nicht unterstützt.
            1 - Asynchroner Log-Modus. Die zu loggenden Daten werden zunächst in einem Memory Cache zwischengespeichert
            und abhängig von einem Zeitintervall bzw. Füllgrad des Caches in die Datenbank geschrieben.
            Vorteile:
            Die Daten werden zwischengespeichert und gehen nicht verloren wenn die Datenbank nicht verfügbar ist
            oder fehlerhaft arbeitet. Die alternative Speicherung im Filesystem wird unterstützt.
            Nachteile:
            Die Daten stehen zeitlich verzögert in der Datenbank zur Verfügung.
            Bei einem Absturz von FHEM gehen alle im Memory Cache zwischengespeicherten Daten verloren.

      • cacheEvents [2|1|0]

            0 - Es werden keine Events für CacheUsage erzeugt.
            1 - Es werden Events für das Reading CacheUsage erzeugt wenn ein neuer Datensatz zum Cache hinzugefügt wurde.
            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 im Cache befindlichen
            Datensätze.
          (default: 0)

      • cacheLimit <n>

          Im asynchronen Logmodus wird der Cache in die Datenbank weggeschrieben und geleert wenn die Anzahl <n> Datensätze im Cache erreicht ist.
          Der Timer des asynchronen Logmodus wird dabei neu auf den Wert des Attributs "syncInterval" gesetzt. Im Fehlerfall wird ein erneuter Schreibversuch frühestens nach syncInterval/2 gestartet.
          (default: 500)

      • cacheOverflowThreshold <n>

          Legt im asynchronen Logmodus den Schwellenwert von <n> Datensätzen fest, ab dem der Cacheinhalt in ein File exportiert wird anstatt die Daten in die Datenbank zu schreiben.
          Die ausgeführte Funktion entspricht dem Set-Kommando "exportCache purgecache" und verwendet dessen Einstellungen.

          Mit diesem Attribut kann eine Überlastung des Serverspeichers verhindert werden falls die Datenbank für eine längere Zeit nicht verfügbar ist (z.B. im Fehler- oder Wartungsfall). Ist der Attributwert kleiner oder gleich dem Wert des Attributs "cacheLimit", wird der Wert von "cacheLimit" für "cacheOverflowThreshold" verwendet.
          In diesem Fall wird der Cache immer in ein File geschrieben anstatt in die Datenbank sofern der Schwellenwert erreicht wurde.
          So können die Daten mit dieser Einstellung gezielt in ein oder mehrere Dateien geschreiben werden, um sie zu einem späteren Zeitpunkt mit dem Set-Befehl "importCachefile" in die Datenbank zu importieren.

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

      • colType <n>

          Die Feldlänge für das DB-Feld TYPE 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 colType=0 wird das Datenbankfeld TYPE nicht gefüllt.
          Hinweis:
          Mit gesetztem Attribut gelten alle Feldlängenbegrenzungen auch für SQLite DB wie im Internal COLUMNS angezeigt!

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

      • commitMode [basic_ta:on | basic_ta:off | ac:on_ta:on | ac:on_ta:off | ac:off_ta:on]

          Ändert die Verwendung der Datenbank Autocommit- und/oder Transaktionsfunktionen. Wird Transaktion "aus" verwendet, werden im asynchronen Modus nicht gespeicherte Datensätze nicht an den Cache zurück gegeben. Dieses Attribut ist ein advanced feature und sollte nur im konkreten Bedarfs- bzw. Supportfall geändert werden.

          • basic_ta:on - Autocommit Servereinstellung / Transaktion ein (default)
          • basic_ta:off - Autocommit Servereinstellung / Transaktion aus
          • ac:on_ta:on - Autocommit ein / Transaktion ein
          • ac:on_ta:off - Autocommit ein / Transaktion aus
          • ac:off_ta:on - Autocommit aus / Transaktion ein (Autocommit "aus" impliziert Transaktion "ein")

      • convertTimezone [UTC | none]

          UTC - der lokale Timestamp des Events wird nach UTC konvertiert.
          (default: none)

          Hinweis:
          Die Perl-Module 'DateTime' und 'DateTime::Format::Strptime' müssen installiert sein !

      • DbLogType [Current|History|Current/History|SampleFill/History]

          Dieses Attribut legt fest, welche Tabelle oder Tabellen in der Datenbank genutzt werden sollen. Ist dieses Attribut nicht gesetzt, wird per default die Einstellung history verwendet.

          Bedeutung der Einstellungen sind:

            Current Events werden nur in die current-Tabelle geloggt. Die current-Tabelle wird bei der SVG-Erstellung ausgewertet.
            History Events werden nur in die history-Tabelle geloggt. Es wird keine DropDown-Liste mit Vorschlägen bei der SVG-Erstellung erzeugt.
            Current/History Events werden sowohl in die current- also auch in die hitory Tabelle geloggt. Die current-Tabelle wird bei der SVG-Erstellung ausgewertet.
            SampleFill/History Events werden nur in die history-Tabelle geloggt. Die current-Tabelle wird bei der SVG-Erstellung ausgewertet und kann zur Erzeugung einer DropDown-Liste mittels einem DbRep-Device
            "set <DbRep-Name> tableCurrentFillup" mit einem einstellbaren Extract der history-Tabelle gefüllt werden (advanced Feature).


          Hinweis:
          Die Current-Tabelle muß genutzt werden um eine Device:Reading-DropDownliste zur Erstellung eines SVG-Plots zu erhalten.

      • DbLogSelectionMode [Exclude|Include|Exclude/Include]

          Dieses für DbLog-Devices spezifische Attribut beeinflußt, wie die Device-spezifischen Attribute DbLogExclude und DbLogInclude ausgewertet werden. DbLogExclude und DbLogInclude werden in den Quellen-Devices gesetzt.
          Ist das Attribut DbLogSelectionMode nicht gesetzt, ist "Exclude" der Default.

          • Exclude: Readings werden geloggt wenn sie auf den im DEF angegebenen Regex matchen. Ausgeschlossen werden die Readings, die auf den Regex im Attribut DbLogExclude matchen.
            Das Attribut DbLogInclude wird in diesem Fall nicht berücksichtigt.

          • Include: Es werden nur Readings geloggt welche über den Regex im Attribut DbLogInclude eingeschlossen werden.
            Das Attribut DbLogExclude wird in diesem Fall ebenso wenig berücksichtigt wie der Regex im DEF.

          • Exclude/Include: Funktioniert im Wesentlichen wie "Exclude", nur dass sowohl das Attribut DbLogExclude als auch das Attribut DbLogInclude geprüft wird. Readings die durch DbLogExclude zwar ausgeschlossen wurden, mit DbLogInclude aber wiederum eingeschlossen werden, werden somit dennoch beim Logging berücksichtigt.

      • DbLogInclude Regex[:MinInterval][:force],[Regex[:MinInterval][:force]], ...

          Mit dem Attribut DbLogInclude werden die Readings definiert, die in der Datenbank gespeichert werden sollen.
          Die Definition der zu speichernden Readings erfolgt über einen regulären Ausdruck und alle Readings, die mit dem regulären Ausdruck matchen, werden in der Datenbank gespeichert.
          Der optionale Zusatz <MinInterval> gibt an, dass ein Wert dann gespeichert wird wenn mindestens <MinInterval> Sekunden seit der letzten Speicherung vergangen sind.
          Unabhängig vom Ablauf des Intervalls wird das Reading gespeichert wenn sich der Wert des Readings verändert hat.
          Mit dem optionalen Modifier "force" kann erzwungen werden das angegebene Intervall <MinInterval> einzuhalten auch wenn sich der Wert des Readings seit der letzten Speicherung verändert hat.

                    | Modifier |         innerhalb Intervall          | außerhalb Intervall |
                    |          | Wert gleich        | Wert geändert   |                     |
                    |----------+--------------------+-----------------+---------------------|
                    | <none>   | ignorieren         | speichern       | speichern           |
                    | force    | ignorieren         | ignorieren      | speichern           |
                  

          Hinweise:
          Das Attribut DbLogInclude wird in allen Devices propagiert wenn DbLog verwendet wird.
          Das Attribut DbLogSelectionMode muss entsprechend gesetzt sein um DbLogInclude zu aktivieren.
          Mit dem Attribut defaultMinInterval kann ein Default für <MinInterval> vorgegeben werden.

          Beispiele:
          attr MyDevice1 DbLogInclude .*
          attr MyDevice2 DbLogInclude state,(floorplantext|MyUserReading):300,battery:3600
          attr MyDevice2 DbLogInclude state,(floorplantext|MyUserReading):300:force,battery:3600:force

      • DbLogExclude Regex[:MinInterval][:force],[regex[:MinInterval][:force]] ...

          Mit dem Attribut DbLogExclude werden die Readings definiert, die nicht in der Datenbank gespeichert werden sollen.
          Die Definition der auszuschließenden Readings erfolgt über einen regulären Ausdruck und alle Readings, die mit dem regulären Ausdruck matchen, werden vom Logging in die Datenbank ausgeschlossen.
          Readings, die nicht über den Regex ausgeschlossen wurden, werden in der Datenbank geloggt. Das Verhalten der Speicherung wird mit den nachfolgenden optionalen Angaben gesteuert.
          Der optionale Zusatz <MinInterval> gibt an, dass ein Wert dann gespeichert wird wenn mindestens <MinInterval> Sekunden seit der letzten Speicherung vergangen sind.
          Unabhängig vom Ablauf des Intervalls wird das Reading gespeichert wenn sich der Wert des Readings verändert hat.
          Mit dem optionalen Modifier "force" kann erzwungen werden das angegebene Intervall <MinInterval> einzuhalten auch wenn sich der Wert des Readings seit der letzten Speicherung verändert hat.

                    | Modifier |         innerhalb Intervall          | außerhalb Intervall |
                    |          | Wert gleich        | Wert geändert   |                     |
                    |----------+--------------------+-----------------+---------------------|
                    | <none>   | ignorieren         | speichern       | speichern           |
                    | force    | ignorieren         | ignorieren      | speichern           |
                  

          Hinweise:
          Das Attribut DbLogExclude wird in allen Devices propagiert wenn DbLog verwendet wird.
          Das Attribut DbLogSelectionMode kann entsprechend gesetzt werden um DbLogExclude zu deaktivieren.
          Mit dem Attribut defaultMinInterval kann ein Default für <MinInterval> vorgegeben werden.

          Beispiel
          attr MyDevice1 DbLogExclude .*
          attr MyDevice2 DbLogExclude state,(floorplantext|MyUserReading):300,battery:3600
          attr MyDevice2 DbLogExclude state,(floorplantext|MyUserReading):300:force,battery:3600:force

      • DbLogValueFn {}

          Wird DbLog genutzt, wird in allen Devices das Attribut DbLogValueFn propagiert. Dieses Attribut wird in den Quellendevices gesetzt und erlaubt die Veränderung der Werte vor dem Logging oder den Ausschluß des Datensatzes vom Logging.

          Es kann auf die Variablen $TIMESTAMP, $READING, $VALUE (Wert des Readings) und $UNIT (Einheit des Readingswert) zugegriffen und diese vor dem Loggen in die Datenbank verändert werden.
          Nur Lesezugriff besteht auf $DEVICE (den Namen des Quellengeräts), $EVENT, $LASTTIMESTAMP und $LASTVALUE.

          Die Variablen $LASTTIMESTAMP und $LASTVALUE enthalten Zeit und Wert des zuletzt protokollierten Datensatzes von $DEVICE / $READING.
          Soll $TIMESTAMP verändert werden, muss die Form "yyyy-mm-dd hh:mm:ss" eingehalten werden. Anderenfalls wird die geänderte $TIMESTAMP Variable nicht übernommen. Durch Setzen der Variable "$IGNORE=1" wird der Datensatz vom Logging ausgeschlossen.

          Die devicespezifische Funktion in "DbLogValueFn" wird vor der eventuell im DbLog-Device vorhandenen Funktion im Attribut "valueFn" auf den Datensatz angewendet.

          Beispiel
          attr SMA_Energymeter DbLogValueFn
          {
            if ($READING eq "Bezug_WirkP_Kosten_Diff") {
              $UNIT="Diff-W";
            }
            if ($READING =~ /Einspeisung_Wirkleistung_Zaehler/ && $VALUE < 2) {
              $IGNORE=1;
            }
          }
          
      • dbSchema <schema>

          Dieses Attribut ist setzbar für die Datenbanken MySQL/MariaDB und PostgreSQL. Die Tabellennamen (current/history) werden durch das angegebene Datenbankschema ergänzt. Das Attribut ist ein advanced Feature und nomalerweise nicht nötig zu setzen.

      • defaultMinInterval <devspec>::<MinInterval>[::force],[<devspec>::<MinInterval>[::force]] ...

          Mit diesem Attribut wird ein Standard Minimum Intervall für devspec festgelegt. Ist defaultMinInterval angegeben, wird der Logeintrag nicht geloggt, wenn das Intervall noch nicht erreicht und der Wert des Readings sich nicht verändert hat.
          Ist der optionale Parameter "force" hinzugefügt, wird der Logeintrag auch dann nicht geloggt, wenn sich der Wert des Readings verändert hat.
          Eventuell im Quelldevice angegebene Spezifikationen DbLogExclude / DbLogInclude haben Vorrag und werden durch defaultMinInterval nicht überschrieben.
          Die Eingabe kann mehrzeilig erfolgen.

          Beispiele
          attr dblog defaultMinInterval .*::120::force
          # Events aller Devices werden nur geloggt, wenn 120 Sekunden zum letzten Logeintrag vergangen sind ist (Reading spezifisch) unabhängig von einer eventuellen Änderung des Wertes.
          attr dblog defaultMinInterval (Weather|SMA)::300
          # Events der Devices "Weather" und "SMA" werden nur geloggt wenn 300 Sekunden zum letzten Logeintrag vergangen sind (Reading spezifisch) und sich der Wert nicht geändert hat.
          attr dblog defaultMinInterval TYPE=CUL_HM::600::force
          # Events aller Devices des Typs "CUL_HM" werden nur geloggt, wenn 600 Sekunden zum letzten Logeintrag vergangen sind (Reading spezifisch) unabhängig von einer eventuellen Änderung des Wertes.

      • excludeDevs <devspec1>[#Reading],<devspec2>[#Reading],<devspec...>

          Die Device/Reading-Kombinationen "devspec1#Reading", "devspec2#Reading" bis "devspec..." werden vom Logging in die Datenbank global ausgeschlossen.
          Die Angabe eines auszuschließenden Readings ist optional.
          Somit können Device/Readings explizit bzw. konsequent vom Logging ausgeschlossen werden ohne Berücksichtigung anderer Excludes oder Includes (z.B. im DEF). Die auszuschließenden Devices können als Geräte-Spezifikation angegeben werden. Für weitere Details bezüglich devspec siehe Geräte-Spezifikation.

          Beispiel
          attr <device> excludeDevs global,Log.*,Cam.*,TYPE=DbLog
          # Es werden die Devices global bzw. Devices beginnend mit "Log" oder "Cam" bzw. Devices vom Typ "DbLog" vom Logging ausgeschlossen.
          attr <device> excludeDevs .*#.*Wirkleistung.*
          # Es werden alle Device/Reading-Kombinationen mit "Wirkleistung" im Reading vom Logging ausgeschlossen.
          attr <device> excludeDevs SMA_Energymeter#Bezug_WirkP_Zaehler_Diff
          # Es wird der Event mit Device "SMA_Energymeter" und Reading "Bezug_WirkP_Zaehler_Diff" vom Logging ausgeschlossen.

      • expimpdir <directory>

          In diesem Verzeichnis wird das Cachefile beim Export angelegt bzw. beim Import gesucht. Siehe set-Kommandos exportCache bzw. importCachefile. Das Default-Verzeichnis ist "(global->modpath)/log/". Das im Attribut angegebene Verzeichnis muss vorhanden und beschreibbar sein.

          Beispiel
          attr <device> expimpdir /opt/fhem/cache/

      • exportCacheAppend [1|0]

          Wenn gesetzt, wird beim Export des Cache ("set <device> exportCache") der Cacheinhalt an das neueste bereits vorhandene Exportfile angehängt. Ist noch kein Exportfile vorhanden, wird es neu angelegt.
          Ist das Attribut nicht gesetzt, wird bei jedem Exportvorgang ein neues Exportfile angelegt. (default)

      • headerLinks [text|icon]

          Die im Kopfbereich des Devices angebotenen Links zur Ausführung verschiedener Funktionen werden entweder als Icon (default) oder Text dargestellt. Die Textsprache wird durch das global Attribut 'language' festgelegt.

      • insertMode [1|0]

          Schaltet den Insert-Modus der Datenbankschnittstelle um.

            0 - Die Daten werden als Array der Datenbankschnittstelle übergeben. (default)
            Es ist in den meisten Fällen der performanteste Weg viele Daten auf einmal in die Datenbank einzufügen.
            1 - Die Datensätze werden sequentiell der Datenbankschnittstelle übergeben und in die DB eingefügt.

      • noSupportPK [1|0]

          Deaktiviert die programmtechnische Unterstützung eines gesetzten Primary Key durch das Modul.

      • plotInputFieldLength <Ganzzahl>

          Breite der Plot Editor Eingabefelder für Device:Reading und Funktion.
          Wird die Drop-Down Liste als Eingabehilfe für Device:Reading verwendet, wird die Breite des Feldes automatisch eingestellt.
          (default: 40)

      • 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 ausgeführten SQL-Kommandos innerhalb der jeweiligen Funktion betrachtet.
          Das Reading "background_processing_time" zeigt die im SubProcess verbrauchte Zeit.

      • 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 der Eventverarbeitung im synchronen bzw. asynchronen Modus festzustellen.
          (default: 0)

          Hinweis:
          Das Reading "notify_processing_time" erzeugt sehr viele Events und belasted das System. Deswegen sollte bei Benutzung des Attributes die Eventerzeugung durch das Setzen von Attribut "event-min-interval" auf z.B. "notify_processing_time:30" deutlich begrenzt werden.

      • SQLiteCacheSize <Anzahl Memory Pages für Cache>

          Standardmäßig werden ca. 4MB RAM für Caching verwendet (page_size=1024bytes, cache_size=4000).
          Bei Embedded Devices mit wenig RAM genügen auch 1000 Pages - zu Lasten der Performance.
          (default: 4000)

      • SQLiteJournalMode [WAL|off]

          Moderne SQLite Datenbanken werden mit einem Write-Ahead-Log (WAL) geöffnet, was optimale Datenintegrität und gute Performance gewährleistet.
          Allerdings benötigt WAL zusätzlich ungefähr den gleichen Festplattenplatz wie die eigentliche Datenbank. Bei knappem Festplattenplatz (z.B. eine RAM Disk in Embedded Devices) kann das Journal deaktiviert werden (off). Im Falle eines Datenfehlers kann die Datenbank aber wahrscheinlich nicht repariert werden, und muss neu erstellt werden!
          (default: WAL)

      • syncEvents [1|0]

          es werden Events für Reading NextSync erzeugt.

      • syncInterval <n>

          Wenn im DbLog-Device der asynchrone Modus eingestellt ist (asyncMode=1), wird mit diesem Attribut das Intervall (Sekunden) zum Wegschreiben der zwischengespeicherten Daten in die Datenbank festgelegt.
          (default: 30)

      • suppressAddLogV3 [1|0]

          Wenn gesetzt werden verbose 3 Logeinträge durch die addLog-Funktion unterdrückt.

      • suppressUndef

          Unterdrückt alle undef Werte die durch eine Get-Anfrage, z.B. Plot, aus der Datenbank selektiert werden.

      • timeout <n>

          Setzt den Timeout-Wert für die Operationen im SubProzess in Sekunden.
          Ist eine gestartete Operation (Logging, Kommando) nicht innerhalb des Timeout-Wertes beendet, wird der laufende SubProzess abgebrochen und ein neuer Prozess gestartet.
          (default: 86400)

      • traceFlag <ALL|SQL|CON|ENC|DBD|TXN>

          Bestimmt das Tracing von bestimmten Aktivitäten innerhalb des Datenbankinterfaces und Treibers. Das Attribut ist nur für den Fehler- bzw. Supportfall gedacht.

            ALL schaltet alle DBI- und Treiberflags an.
            SQL verfolgt die SQL Statement Ausführung. (Default)
            CON verfolgt den Verbindungsprozess.
            ENC verfolgt die Kodierung (Unicode Übersetzung etc).
            DBD verfolgt nur DBD Nachrichten.
            TXN verfolgt Transaktionen.


      • traceLevel <0|1|2|3|4|5|6|7>

          Schaltet die Trace-Funktion des Moduls ein.
          Achtung ! Das Attribut ist nur für den Fehler- bzw. Supportfall gedacht. Es werden sehr viele Einträge in das FHEM Logfile vorgenommen !

            0 Tracing ist disabled. (Default)
            1 Tracing von DBI Top-Level Methoden mit deren Ergebnissen und Fehlern
            2 Wie oben. Zusätzlich Top-Level Methodeneintäge mit Parametern.
            3 Wie oben. Zusätzliche werden einige High-Level Informationen des Treibers und einige interne Informationen des DBI hinzugefügt.
            4 Wie oben. Zusätzlich werden mehr detaillierte Informationen des Treibers eingefügt.
            5-7 Wie oben, aber mit mehr und mehr internen Informationen.


      • useCharfilter [0|1]

          wenn gesetzt, werden nur ASCII Zeichen von 32 bis 126 im Event akzeptiert. (default: 0)
          Das sind die Zeichen " A-Za-z0-9!"#$%&'()*+,-.\/:;<=>?@[\\]^_`{|}~".
          Umlaute und "€" werden umgesetzt (z.B. ä nach ae, € nach EUR).

      • valueFn {}

          Dieses Attribut wird im DbLog-Device gesetzt und erlaubt die Veränderung der Werte vor dem Logging oder den Ausschluß des Datensatzes vom Logging.

          Es kann auf die Variablen $TIMESTAMP, $DEVICE (Quellendevice), $DEVICETYPE, $EVENT, $READING, $VALUE (Wert des Readings) und $UNIT (Einheit des Readingswert) zugegriffen und diese vor dem Loggen in die Datenbank verändert werden.
          Nur Lesezugriff besteht auf $LASTTIMESTAMP, $LASTVALUE und $NAME (Name des DbLog Devices).

          Die Variablen $LASTTIMESTAMP und $LASTVALUE enthalten Zeit und Wert des zuletzt protokollierten Datensatzes von $DEVICE / $READING.
          Soll $TIMESTAMP verändert werden, muss die Form "yyyy-mm-dd hh:mm:ss" eingehalten werden. Anderenfalls wird die geänderte $TIMESTAMP Variable nicht übernommen. Durch Setzen der Variable "$IGNORE=1" wird der Datensatz vom Logging ausgeschlossen.

          Beispiele
          attr <device> valueFn {if ($DEVICE eq "living_Clima" && $VALUE eq "off" ){$VALUE=0;} elsif ($DEVICE eq "e-power"){$VALUE= sprintf "%.1f", $VALUE;}}
          # ändert den Reading-Wert des Gerätes "living_Clima" von "off" zu "0" und rundet den Wert vom Gerät "e-power"

          attr <device> valueFn {if ($DEVICE eq "SMA_Energymeter" && $READING eq "state"){$IGNORE=1;}}
          # der Datensatz wird nicht geloggt wenn Device = "SMA_Energymeter" und das Reading = "state" ist

          attr <device> valueFn {if ($DEVICE eq "Dum.Energy" && $READING eq "TotalConsumption"){$UNIT="W";}}
          # setzt die Einheit des Devices "Dum.Energy" auf "W" wenn das Reading = "TotalConsumption" ist


      • verbose4Devs <device1>,<device2>,<device..>

          Mit verbose Level 4/5 werden nur Ausgaben bezüglich der in diesem Attribut aufgeführten Devices im Logfile protokolliert. Ohne dieses Attribut werden mit verbose 4/5 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.

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

      Aktuell werden folgende Operationen unterstützt:

        • Selektion aller Datensätze innerhalb einstellbarer Zeitgrenzen
        • Darstellung der Datensätze einer Device/Reading-Kombination innerhalb einstellbarer Zeitgrenzen.
        • Selektion der Datensätze unter Verwendung von dynamisch berechneter Zeitgrenzen zum Ausführungszeitpunkt.
        • Dubletten-Hervorhebung bei Datensatzanzeige (fetchrows)
        • Berechnung der Anzahl von Datensätzen einer Device/Reading-Kombination unter Berücksichtigung von Zeitgrenzen und verschiedenen Aggregationen.
        • Die Berechnung von Summen-, Differenz-, Maximum-, Minimum- und Durchschnittswerten numerischer Readings in Zeitgrenzen und verschiedenen Aggregationen.
        • Speichern von Summen-, Differenz- , Maximum- , Minimum- und Durchschnittswertberechnungen in der Datenbank
        • Löschung von Datensätzen. Die Eingrenzung der Löschung kann durch Device und/oder Reading sowie fixer oder dynamisch berechneter Zeitgrenzen zum Ausführungszeitpunkt erfolgen.
        • Export von Datensätzen in ein File im CSV-Format
        • Import von Datensätzen aus File im CSV-Format
        • Umbenennen von Device/Readings in Datenbanksätzen
        • Ändern von Reading-Werten (VALUES) in der Datenbank (changeValue)
        • automatisches Umbenennen von Device-Namen in Datenbanksätzen und DbRep-Definitionen nach FHEM "rename" Befehl (siehe DbRep-Agent)
        • Ausführen von beliebigen Benutzer spezifischen SQL-Kommandos (non-blocking)
        • Ausführen von beliebigen Benutzer spezifischen SQL-Kommandos (blocking) zur Verwendung in eigenem Code (sqlCmdBlocking)
        • Backups der FHEM-Datenbank im laufenden Betrieb erstellen (MySQL, SQLite)
        • senden des Dumpfiles zu einem FTP-Server nach dem Backup incl. Versionsverwaltung
        • Restore von SQLite- und MySQL-Dumps
        • Optimierung der angeschlossenen Datenbank (optimizeTables, vacuum)
        • Ausgabe der existierenden Datenbankprozesse (MySQL)
        • leeren der current-Tabelle
        • Auffüllen der current-Tabelle mit einem (einstellbaren) Extrakt der history-Tabelle
        • Bereinigung sequentiell aufeinander folgender Datensätze mit unterschiedlichen Zeitstempel aber gleichen Werten (sequentielle Dublettenbereinigung)
        • Reparatur einer korrupten SQLite Datenbank ("database disk image is malformed")
        • Übertragung von Datensätzen aus der Quelldatenbank in eine andere (Standby) Datenbank (syncStandby)
        • Reduktion der Anzahl von Datensätzen in der Datenbank (reduceLog)
        • Löschen von doppelten Datensätzen (delDoublets)
        • Löschen und (Wieder)anlegen der für DbLog und DbRep benötigten Indizes (index)

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

      DbRep stellt dem Nutzer einen UserExit zur Verfügung. Über diese Schnittstelle kann der Nutzer in Abhängigkeit von frei definierbaren Reading/Value-Kombinationen (Regex) eigenen Code zur Ausführung bringen. Diese Schnittstelle arbeitet unabhängig von einer Eventgenerierung. Weitere Informationen dazu ist unter userExitFn beschrieben.

      Sobald ein DbRep-Device definiert ist, wird sowohl die Perl Funktion DbReadingsVal als auch das FHEM Kommando dbReadingsVal zur Verfügung gestellt. Mit dieser Funktion läßt sich, ähnlich dem allgemeinen ReadingsVal, der Wert eines Readings aus der Datenbank abrufen.
      Die Funktionsausführung erfolgt blockierend mit einem Standardtimeout von 10 Sekunden um eine dauerhafte Blockierung von FHEM zu verhindern. Der Timeout ist mit dem Attribut timeout anpassbar.

        Die Befehlssyntax für die Perl Funktion ist:

        DbReadingsVal("<name>","<device:reading>","<timestamp>","<default>")

        Beispiel:
          $ret = DbReadingsVal("Rep.LogDB1","MyWetter:temperature","2018-01-13_08:00:00","");
          attr <name> userReadings oldtemp {DbReadingsVal("Rep.LogDB1","MyWetter:temperature","2018-04-13_08:00:00","")}
          attr <name> userReadings todayPowerIn
            {
               my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime(gettimeofday());
               $month++;
               $year+=1900;
               my $today = sprintf('%04d-%02d-%02d', $year,$month,$mday);
               DbReadingsVal("Rep.LogDB1","SMA_Energymeter:Bezug_Wirkleistung_Zaehler",$today."_00:00:00",0)
            }
          
        Die Befehlssyntax als FHEM Kommando ist:

        dbReadingsVal <name> <device:reading> <timestamp> <default>

        Beispiel:
        dbReadingsVal Rep.LogDB1 MyWetter:temperature 2018-01-13_08:00:00 0

        <name> : Name des abzufragenden DbRep-Device
        <device:reading> : Device:Reading dessen Wert geliefert werden soll
        <timestamp> : Zeitpunkt des zu liefernden Readingwertes (*) im Format "YYYY-MM-DD_hh:mm:ss"
        <default> : Defaultwert falls kein Readingwert ermittelt werden konnte

      (*) Es wird der zeitlich zu <timestamp> passendste Readingwert zurück geliefert, falls kein Wert exakt zu dem angegebenen Zeitpunkt geloggt wurde.

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

      FHEM-Wiki:
      DbRep - Reporting und Management von DbLog-Datenbankinhalten.


    Voraussetzungen

      Das Modul setzt den Einsatz einer oder mehrerer DbLog-Instanzen voraus. Es werden die Zugangsdaten dieser Datenbankdefinition genutzt.
      Es werden nur Inhalte der Tabelle "history" berücksichtigt wenn nichts anderes beschrieben ist.

      Überblick welche anderen Perl-Module DbRep verwendet:

      Net::FTP (nur wenn FTP-Transfer nach Datenbank-Dump genutzt wird)
      Net::FTPSSL (nur wenn FTP-Transfer mit Verschlüsselung nach Datenbank-Dump genutzt wird)
      POSIX
      Time::HiRes
      Time::Local
      Scalar::Util
      DBI
      Color (FHEM-Modul)
      IO::Compress::Gzip
      IO::Uncompress::Gunzip
      Blocking (FHEM-Modul)


    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)

      Für eine gute Operation Performance sollte die Datenbank den Index "Report_Idx" enthalten. Der Index kann nach der DbRep Devicedefinition mit dem set-Kommando angelegt werden sofern er auf der Datenbank noch nicht existiert:

        set <name> index recreate_Report_Idx


    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.

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

        • adminCredentials <User> <Passwort>

          Speichert einen User / Passwort für den privilegierten bzw. administrativen Datenbankzugriff. Er wird bei Datenbankoperationen benötigt, die mit einem privilegierten User ausgeführt werden müssen. Siehe auch Attribut useAdminCredentials.

        • averageValue [display | writeToDB | writeToDBSingle | writeToDBSingleStart | writeToDBInTime]

          Berechnet einen Durchschnittswert des Datenbankfelds "VALUE" in den Zeitgrenzen der möglichen time.*-Attribute.

          Es muss das auszuwertende Reading im Attribut reading angegeben sein. Mit dem Attribut averageCalcForm wird die Berechnungsvariante zur Mittelwertermittlung definiert.
          Ist keine oder die Option display angegeben, werden die Ergebnisse nur angezeigt. Mit den Optionen writeToDB, writeToDBSingle, writeToDBSingleStart bzw. writeToDBInTime werden die Berechnungsergebnisse mit einem neuen Readingnamen in der Datenbank gespeichert.

            writeToDB : schreibt jeweils einen Wert mit den Zeitstempeln XX:XX:01 und XX:XX:59 innerhalb der jeweiligen Auswertungsperiode
            writeToDBSingle : schreibt nur einen Wert mit dem Zeitstempel XX:XX:59 am Ende einer Auswertungsperiode
            writeToDBSingleStart : schreibt nur einen Wert mit dem Zeitstempel XX:XX:01 am Beginn einer Auswertungsperiode
            writeToDBInTime : schreibt jeweils einen Wert am Anfang und am Ende der Zeitgrenzen einer Auswertungsperiode

          Der neue Readingname wird aus einem Präfix und dem originalen Readingnamen gebildet, wobei der originale Readingname durch das Attribut "readingNameMap" ersetzt werden kann. Der Präfix setzt sich aus der Bildungsfunktion und der Aggregation zusammen.
          Der Timestamp der neuen Readings in der Datenbank wird von der eingestellten Aggregationsperiode abgeleitet, sofern kein eindeutiger Zeitpunkt des Ergebnisses bestimmt werden kann. Das Feld "EVENT" wird mit "calculated" gefüllt.

            Beispiel neuer Readingname gebildet aus dem Originalreading "totalpac":
            avgam_day_totalpac
            # <Bildungsfunktion>_<Aggregation>_<Originalreading>

          Zusammengefasst sind die zur Steuerung dieser Funktion relevanten Attribute:

            aggregation : Auswahl einer Aggregationsperiode
            averageCalcForm : Auswahl der Berechnungsvariante für den Durchschnitt
            device : einschließen oder ausschließen von Datensätzen die <device> enthalten
            executeBeforeProc : ausführen FHEM Kommando (oder Perl-Routine) vor Start Operation
            executeAfterProc : ausführen FHEM Kommando (oder Perl-Routine) nach Ende Operation
            reading : einschließen oder ausschließen von Datensätzen die <reading> enthalten
            readingNameMap : die entstehenden Ergebnisreadings werden partiell umbenannt
            time.* : eine Reihe von Attributen zur Zeitabgrenzung
            valueFilter : ein zusätzliches REGEXP um die Datenselektion zu steuern. Der REGEXP wird auf das Datenbankfeld 'VALUE' angewendet.



        • cancelDump

          Bricht einen laufenden Datenbankdump ab.

        • changeValue old="<alter String>" new="<neuer String>"

          Ändert den gespeicherten Wert eines Readings.
          Ist die Selektion auf bestimmte Device/Reading-Kombinationen durch die Attribute device bzw. reading beschränkt, werden sie genauso berücksichtigt wie gesetzte Zeitgrenzen (time.* Attribute).
          Fehlen diese Beschränkungen, wird die gesamte Datenbank durchsucht und der angegebene Wert geändert.

          "String" kann sein:
          <alter String> :
        • ein einfacher String mit/ohne Leerzeichen, z.B. "OL 12"
        • ein String mit Verwendung von SQL-Wildcard, z.B. "%OL%"
        • <neuer String> :
        • ein einfacher String mit/ohne Leerzeichen, z.B. "12 kWh"
        • Perl Code eingeschlossen in {"..."} inkl. Quotes, z.B. {"($VALUE,$UNIT) = split(" ",$VALUE)"}
        • Dem Perl-Ausdruck werden die Variablen $VALUE und $UNIT übergeben. Sie können innerhalb
          des Perl-Code geändert werden. Der zurückgebene Wert von $VALUE und $UNIT wird in dem Feld
          VALUE bzw. UNIT des Datensatzes gespeichert.

          Beispiele:
          set <name> changeValue old="OL" new="12 OL"
          # der alte Feldwert "OL" wird in "12 OL" geändert.

          set <name> changeValue old="%OL%" new="12 OL"
          # enthält das Feld VALUE den Teilstring "OL", wird es in "12 OL" geändert.

          set <name> changeValue old="12 kWh" new={"($VALUE,$UNIT) = split(" ",$VALUE)"}
          # der alte Feldwert "12 kWh" wird in VALUE=12 und UNIT=kWh gesplittet und in den Datenbankfeldern gespeichert

          set <name> changeValue old="24%" new={"$VALUE = (split(" ",$VALUE))[0]"}
          # beginnt der alte Feldwert mit "24", wird er gesplittet und VALUE=24 gespeichert (z.B. "24 kWh")

          Zusammengefasst sind die zur Steuerung von changeValue relevanten Attribute:

            device : einschließen oder ausschließen von Datensätzen die <device> enthalten
            reading : einschließen oder ausschließen von Datensätzen die <reading> enthalten
            time.* : eine Reihe von Attributen zur Zeitabgrenzung
            executeBeforeProc : ausführen FHEM Kommando (oder Perl-Routine) vor Start changeValue
            executeAfterProc : ausführen FHEM Kommando (oder Perl-Routine) nach Ende changeValue
            valueFilter : ein zusätzliches REGEXP um die Datenselektion zu steuern. Der REGEXP wird auf das Datenbankfeld 'VALUE' angewendet.


        • countEntries [history | current]

          Liefert die Anzahl der Tabelleneinträge (default: history) in den gegebenen Zeitgrenzen (siehe time*-Attribute). Sind die Timestamps nicht gesetzt, werden alle Einträge der Tabelle gezählt. Beschränkungen durch die Attribute device bzw. reading gehen in die Selektion mit ein.
          Standardmäßig wird die Summe aller Datensätze, gekennzeichnet mit "ALLREADINGS", erstellt. Ist das Attribut countEntriesDetail gesetzt, wird die Anzahl jedes einzelnen Readings zusätzlich ausgegeben.

          Die für diese Funktion relevanten Attribute sind:

            aggregation : Zusammenfassung/Gruppierung von Zeitintervallen
            countEntriesDetail : detaillierte Ausgabe der Datensatzanzahl
            device : einschließen oder ausschließen von Datensätzen die <device> enthalten
            reading : einschließen oder ausschließen von Datensätzen die <reading> enthalten
            time.* : eine Reihe von Attributen zur Zeitabgrenzung
            executeBeforeProc : ausführen FHEM Kommando (oder Perl-Routine) vor Ausführung
            executeAfterProc : ausführen FHEM Kommando (oder Perl-Routine) nach Ausführung
            readingNameMap : die entstehenden Ergebnisreadings werden partiell umbenannt
            valueFilter : ein zusätzliches REGEXP um die Datenselektion zu steuern. Der REGEXP wird auf das Datenbankfeld 'VALUE' angewendet.


        • delDoublets [adviceDelete | delete] - zeigt bzw. löscht doppelte / mehrfach vorkommende Datensätze. Dazu wird Timestamp, Device,Reading und Value ausgewertet.
          Die Attribute zur Aggregation,Zeit-,Device- und Reading-Abgrenzung werden dabei berücksichtigt. Ist das Attribut "aggregation" nicht oder auf "no" gesetzt, wird im Standard die Aggregation "day" verwendet.

          • adviceDelete : ermittelt die zu löschenden Datensätze (es wird nichts gelöscht !)
            delete : löscht die Dubletten

          Die Anzahl der anzuzeigenden Datensätze des Kommandos "delDoublets adviceDelete" ist zunächst begrenzt (default 1000) und kann durch das Attribut limit angepasst werden. Die Einstellung von "limit" hat keinen Einfluss auf die "delDoublets delete" Funktion, sondern beeinflusst NUR die Anzeige der Daten.
          Vor und nach der Ausführung von "delDoublets" kann ein FHEM-Kommando bzw. Perl-Routine ausgeführt werden. (siehe Attribute executeBeforeProc, executeAfterProc)

            Beispiel:

            Ausgabe der zu löschenden Records inklusive der Anzahl mit "delDoublets adviceDelete":

            2018-11-07_14-11-38__Dum.Energy__T 260.9_|_2
            2018-11-07_14-12-37__Dum.Energy__T 260.9_|_2
            2018-11-07_14-15-38__Dum.Energy__T 264.0_|_2
            2018-11-07_14-16-37__Dum.Energy__T 264.0_|_2

            Im Werteteil der erzeugten Readings wird nach "_|_" die Anzahl der entsprechenden Datensätze ausgegeben, die mit "delDoublets delete" gelöscht werden.

          Zusammengefasst sind die zur Steuerung dieser Funktion relevanten Attribute:

            aggregation : Auswahl einer Aggregationsperiode
            device : einschließen oder ausschließen von Datensätzen die <device> enthalten
            limit : begrenzt NUR die Anzahl der anzuzeigenden Datensätze
            reading : einschließen oder ausschließen von Datensätzen die <reading> enthalten
            time.* : eine Reihe von Attributen zur Zeitabgrenzung
            executeBeforeProc : ausführen FHEM Kommando (oder Perl-Routine) vor Start des Befehls
            executeAfterProc : ausführen FHEM Kommando (oder Perl-Routine) nach Ende des Befehls
            valueFilter : ein zusätzliches REGEXP um die Datenselektion zu steuern. Der REGEXP wird auf das Datenbankfeld 'VALUE' angewendet.


        • delEntries [<no>[:<nn>]]

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

            "timestamp_begin" gesetzt -> gelöscht werden DB-Einträge ab diesem Zeitpunkt bis zum aktuellen Datum/Zeit
            "timestamp_end" gesetzt -> gelöscht werden DB-Einträge bis bis zu diesem Zeitpunkt
            beide Timestamps gesetzt -> gelöscht werden DB-Einträge zwischen diesen Zeitpunkten
            "timeOlderThan" gesetzt -> gelöscht werden DB-Einträge älter als aktuelle Zeit minus "timeOlderThan"
            "timeDiffToNow" gesetzt -> gelöscht werden DB-Einträge ab aktueller Zeit minus "timeDiffToNow" bis jetzt

          Zeitgrenzen (Tage) können als Option angegeben werden. In diesem Fall werden eventuell gesetzte Zeitattribute übersteuert. Es werden Datensätze berücksichtigt die älter sind als <no> Tage und (optional) neuer sind als <nn> Tage.

          Die zur Steuerung von delEntries relevanten Attribute:

            device : einschließen oder ausschließen von Datensätzen die <device> enthalten
            reading : einschließen oder ausschließen von Datensätzen die <reading> enthalten
            readingNameMap : die entstehenden Ergebnisreadings werden partiell umbenannt
            time.* : eine Reihe von Attributen zur Zeitabgrenzung
            executeBeforeProc : ausführen FHEM Kommando (oder Perl-Routine) vor Start delEntries
            executeAfterProc : ausführen FHEM Kommando (oder Perl-Routine) nach Ende delEntries
            valueFilter : ein zusätzliches REGEXP um die Datenselektion zu steuern. Der REGEXP wird auf das Datenbankfeld 'VALUE' angewendet.


        • delSeqDoublets [adviceRemain | adviceDelete | delete] - zeigt bzw. löscht aufeinander folgende identische Datensätze. Dazu wird Device,Reading und Value ausgewertet. Nicht gelöscht werden der erste und der letzte Datensatz einer Aggregationsperiode (z.B. hour, day, week usw.) sowie die Datensätze vor oder nach einem Wertewechsel (Datenbankfeld VALUE).
          Die Attribute zur Aggregation,Zeit-,Device- und Reading-Abgrenzung werden dabei berücksichtigt. Ist das Attribut "aggregation" nicht oder auf "no" gesetzt, wird als Standard die Aggregation "day" verwendet. Für Datensätze mit numerischen Werten kann mit dem Attribut seqDoubletsVariance eine Abweichung eingestellt werden, bis zu der aufeinander folgende numerische Werte als identisch angesehen und gelöscht werden sollen.

            adviceRemain : simuliert die nach der Operation in der DB verbleibenden Datensätze (es wird nichts gelöscht !)
            adviceDelete : simuliert die zu löschenden Datensätze (es wird nichts gelöscht !)
            delete : löscht die sequentiellen Dubletten (siehe Beispiel)

          Die Anzahl der anzuzeigenden Datensätze der Kommandos "delSeqDoublets adviceDelete", "delSeqDoublets adviceRemain" ist zunächst begrenzt (default 1000) und kann durch das Attribut limit angepasst werden. Die Einstellung von "limit" hat keinen Einfluss auf die "delSeqDoublets delete" Funktion, sondern beeinflusst NUR die Anzeige der Daten.
          Vor und nach der Ausführung von "delSeqDoublets" kann ein FHEM-Kommando bzw. Perl-Routine ausgeführt werden. (siehe Attribute executeBeforeProc, executeAfterProc)

            Beispiel - die nach Verwendung der delete-Option in der DB verbleibenden Datensätze sind fett gekennzeichnet:

              2017-11-25_00-00-05__eg.az.fridge_Pwr__power 0
              2017-11-25_00-02-26__eg.az.fridge_Pwr__power 0
              2017-11-25_00-04-33__eg.az.fridge_Pwr__power 0
              2017-11-25_01-06-10__eg.az.fridge_Pwr__power 0
              2017-11-25_01-08-21__eg.az.fridge_Pwr__power 0
              2017-11-25_01-08-59__eg.az.fridge_Pwr__power 60.32
              2017-11-25_01-11-21__eg.az.fridge_Pwr__power 56.26
              2017-11-25_01-27-54__eg.az.fridge_Pwr__power 6.19
              2017-11-25_01-28-51__eg.az.fridge_Pwr__power 0
              2017-11-25_01-31-00__eg.az.fridge_Pwr__power 0
              2017-11-25_01-33-59__eg.az.fridge_Pwr__power 0
              2017-11-25_02-39-29__eg.az.fridge_Pwr__power 0
              2017-11-25_02-41-18__eg.az.fridge_Pwr__power 105.28
              2017-11-25_02-41-26__eg.az.fridge_Pwr__power 61.52
              2017-11-25_03-00-06__eg.az.fridge_Pwr__power 47.46
              2017-11-25_03-00-33__eg.az.fridge_Pwr__power 0
              2017-11-25_03-02-07__eg.az.fridge_Pwr__power 0
              2017-11-25_23-37-42__eg.az.fridge_Pwr__power 0
              2017-11-25_23-40-10__eg.az.fridge_Pwr__power 0
              2017-11-25_23-42-24__eg.az.fridge_Pwr__power 1
              2017-11-25_23-42-24__eg.az.fridge_Pwr__power 1
              2017-11-25_23-45-27__eg.az.fridge_Pwr__power 1
              2017-11-25_23-47-07__eg.az.fridge_Pwr__power 0
              2017-11-25_23-55-27__eg.az.fridge_Pwr__power 0
              2017-11-25_23-48-15__eg.az.fridge_Pwr__power 0
              2017-11-25_23-50-21__eg.az.fridge_Pwr__power 59.1
              2017-11-25_23-55-14__eg.az.fridge_Pwr__power 52.31
              2017-11-25_23-58-09__eg.az.fridge_Pwr__power 51.73

          Zusammengefasst sind die zur Steuerung dieser Funktion relevanten Attribute:

            aggregation : Auswahl einer Aggregationsperiode
            device : einschließen oder ausschließen von Datensätzen die <device> enthalten
            limit : begrenzt NUR die Anzahl der anzuzeigenden Datensätze
            reading : einschließen oder ausschließen von Datensätzen die <reading> enthalten
            readingNameMap : die entstehenden Ergebnisreadings werden partiell umbenannt
            seqDoubletsVariance : bis zu diesem Wert werden aufeinander folgende numerische Datensätze als identisch angesehen und werden gelöscht
            time.* : eine Reihe von Attributen zur Zeitabgrenzung
            executeBeforeProc : ausführen FHEM Kommando (oder Perl-Routine) vor Start des Befehls
            executeAfterProc : ausführen FHEM Kommando (oder Perl-Routine) nach Ende des Befehls
            valueFilter : ein zusätzliches REGEXP um die Datenselektion zu steuern. Der REGEXP wird auf das Datenbankfeld 'VALUE' angewendet.


        • deviceRename <old_name>,<new_name>

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

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


          Hinweis:
          Obwohl die Funktion selbst non-blocking ausgelegt ist, sollte das zugeordnete DbLog-Device im asynchronen Modus betrieben werden um ein Blockieren von FHEMWEB zu vermeiden (Tabellen-Lock).

          Zusammengefasst sind die zur Steuerung dieser Funktion relevanten Attribute:

            executeBeforeProc : ausführen FHEM Kommando (oder Perl-Routine) vor Start des Befehls
            executeAfterProc : ausführen FHEM Kommando (oder Perl-Routine) nach Ende des Befehls


        • diffValue [display | writeToDB]

          Berechnet den Differenzwert des Datenbankfelds "VALUE" in den angegebenen Zeitgrenzen (siehe verschiedenen time*-Attribute).

          Es wird die Differenz aus den VALUE-Werten der im Aggregationszeitraum (z.B. day) vorhandenen Datensätze gebildet und aufsummiert. Ein Übertragswert aus der Vorperiode (aggregation) zur darauf folgenden Aggregationsperiode wird berücksichtigt, sofern diese Periode einen Value-Wert enhtält.

          In der Standardeinstellung wertet die Funktion nur positive Differenzen aus wie sie z.B. bei einem stetig ansteigenden Zählerwert auftreten. Mit dem Attribut diffAccept) kann sowohl die akzeptierte Differenzschwelle als auch die Möglichkeit negative Differenzen auszuwerten eingestellt werden.

            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.
            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. In diesem Fall wird eine Warnung im state ausgegeben und das Reading less_data_in_period mit einer Liste der betroffenen Perioden erzeugt.

          Ist keine oder die Option display angegeben, werden die Ergebnisse nur angezeigt.

          Mit der Option writeToDB werden die Berechnungsergebnisse mit einem neuen Readingnamen in der Datenbank gespeichert.
          Der neue Readingname wird aus einem Präfix und dem originalen Readingnamen gebildet, wobei der originale Readingname durch das Attribut readingNameMap ersetzt werden kann.
          Der Präfix setzt sich aus der Bildungsfunktion und der Aggregation zusammen.
          Der Timestamp der neuen Readings in der Datenbank wird von der eingestellten Aggregationsperiode abgeleitet, sofern kein eindeutiger Zeitpunkt des Ergebnisses bestimmt werden kann. Das Feld "EVENT" wird mit "calculated" gefüllt.

            Beispiel neuer Readingname gebildet aus dem Originalreading "totalpac":
            diff_day_totalpac
            # <Bildungsfunktion>_<Aggregation>_<Originalreading>

          Die für die Funktion relevanten Attribute sind:

            aggregation : Auswahl einer Aggregationsperiode
            device : einschließen oder ausschließen von Datensätzen die <device> enthalten
            diffAccept : akzeptierte positive Werte-Differenz zwischen zwei unmittelbar aufeinander folgenden Datensätzen
            executeBeforeProc : ausführen FHEM Kommando (oder Perl-Routine) vor Start Operation
            executeAfterProc : ausführen FHEM Kommando (oder Perl-Routine) nach Ende Operation
            reading : einschließen oder ausschließen von Datensätzen die <reading> enthalten
            readingNameMap : die entstehenden Ergebnisreadings werden partiell umbenannt
            time* : eine Reihe von Attributen zur Zeitabgrenzung
            valueFilter : ein zusätzliches REGEXP um die Datenselektion zu steuern. Der REGEXP wird auf das Datenbankfeld 'VALUE' angewendet.


        • dumpMySQL [clientSide | serverSide]

          Erstellt einen Dump der angeschlossenen MySQL-Datenbank.
          Abhängig von der ausgewählten Option wird der Dump auf der Client- bzw. Serverseite erstellt.
          Die Varianten unterscheiden sich hinsichtlich des ausführenden Systems, des Erstellungsortes, der Attributverwendung, des erzielten Ergebnisses und der benötigten Hardwareressourcen.
          Die Option "clientSide" benötigt z.B. eine leistungsfähigere Hardware des FHEM-Servers, sichert aber alle Tabellen inklusive eventuell angelegter Views.
          Mit dem Attribut "dumpCompress" kann eine Komprimierung der erstellten Dumpfiles eingeschaltet werden.

            Option clientSide
            Der Dump wird durch den Client (FHEM-Rechner) erstellt und per default im log-Verzeichnis des Clients (typisch /opt/fhem/log/) gespeichert. Das Zielverzeichnis kann mit dem Attribut dumpDirLocal verändert werden und muß auf dem Client durch FHEM beschreibbar sein.
            Vor dem Dump kann eine Tabellenoptimierung (Attribut "optimizeTablesBeforeDump") oder ein FHEM-Kommando (Attribut "executeBeforeProc") optional zugeschaltet werden. Nach dem Dump kann ebenfalls ein FHEM-Kommando (siehe Attribut "executeAfterProc") ausgeführt werden.

            Achtung !
            Um ein Blockieren von FHEM zu vermeiden, muß DbLog im asynchronen Modus betrieben werden wenn die Tabellenoptimierung verwendet wird !


            Über die Attribute dumpMemlimit und dumpSpeed kann das Laufzeitverhalten der Funktion beeinflusst werden um eine Optimierung bezüglich Performance und Ressourcenbedarf zu erreichen.

            Die für "dumpMySQL clientSide" relevanten Attribute sind:

              dumpComment : User-Kommentar im Dumpfile
              dumpCompress : Komprimierung des Dumpfiles nach der Erstellung
              dumpDirLocal : das lokale Zielverzeichnis für die Erstellung des Dump
              dumpMemlimit : Begrenzung der Speicherverwendung
              dumpSpeed : Begrenzung die CPU-Belastung
              dumpFilesKeep : Anzahl der aufzubwahrenden Dumpfiles
              executeBeforeProc : ausführen FHEM Kommando (oder Perl-Routine) vor dem Dump
              executeAfterProc : ausführen FHEM Kommando (oder Perl-Routine) nach dem Dump
              optimizeTablesBeforeDump : Tabelloptimierung vor dem Dump ausführen

            Nach einem erfolgreichen Dump werden alte Dumpfiles gelöscht und nur die Anzahl Files, definiert durch das Attribut "dumpFilesKeep" (default: 3), verbleibt im Zielverzeichnis "dumpDirLocal". Falls "dumpFilesKeep = 0" gesetzt ist, werden alle Dumpfiles (auch das aktuell erstellte File), gelöscht. Diese Einstellung kann sinnvoll sein, wenn FTP aktiviert ist und die erzeugten Dumps nur im FTP-Zielverzeichnis erhalten bleiben sollen.

            Die Namenskonvention der Dumpfiles ist: <dbname>_<date>_<time>.sql[.gzip]

            Um die Datenbank aus dem Dumpfile wiederherzustellen kann das Kommmando:

              set <name> restoreMySQL <filename>

            verwendet werden.

            Das erzeugte Dumpfile (unkomprimiert) kann ebenfalls mit:

              mysql -u <user> -p <dbname> < <filename>.sql

            auf dem MySQL-Server ausgeführt werden um die Datenbank aus dem Dump wiederherzustellen.


            Option serverSide
            Der Dump wird durch den MySQL-Server erstellt und per default im Home-Verzeichnis des MySQL-Servers gespeichert.
            Es wird die gesamte history-Tabelle (nicht current-Tabelle) im CSV-Format ohne Einschränkungen exportiert.
            Vor dem Dump kann eine Tabellenoptimierung (Attribut "optimizeTablesBeforeDump") optional zugeschaltet werden .

            Achtung !
            Um ein Blockieren von FHEM zu vermeiden, muß DbLog im asynchronen Modus betrieben werden wenn die Tabellenoptimierung verwendet wird !


            Vor und nach dem Dump kann ein FHEM-Kommando (siehe Attribute "executeBeforeProc", "executeAfterProc") ausgeführt werden.

            Die für "dumpMySQL serverSide" relevanten Attribute sind:

              dumpDirRemote : das Erstellungsverzeichnis des Dumpfile auf dem entfernten Server
              dumpCompress : Komprimierung des Dumpfiles nach der Erstellung
              dumpDirLocal : Directory des lokal gemounteten dumpDirRemote-Verzeichnisses
              dumpFilesKeep : Anzahl der aufzubwahrenden Dumpfiles
              executeBeforeProc : ausführen FHEM Kommando (oder Perl-Routine) vor dem Dump
              executeAfterProc : ausführen FHEM Kommando (oder Perl-Routine) nach dem Dump
              optimizeTablesBeforeDump : Tabelloptimierung vor dem Dump ausführen

            Das Zielverzeichnis kann mit dem Attribut dumpDirRemote verändert werden. Es muß sich auf dem MySQL-Host gefinden und durch den MySQL-Serverprozess beschreibbar sein.
            Der verwendete Datenbankuser benötigt das FILE Privileg (siehe Wiki).

            Hinweis:
            Soll die interne Versionsverwaltung und die Dumpfilekompression des Moduls genutzt, sowie die Größe des erzeugten Dumpfiles ausgegeben werden, ist das Verzeichnis "dumpDirRemote" des MySQL-Servers auf dem Client zu mounten und im Attribut dumpDirLocal dem DbRep-Device bekannt zu machen.
            Gleiches gilt wenn der FTP-Transfer nach dem Dump genutzt werden soll (Attribut "ftpUse" bzw. "ftpUseSSL").

              Beispiel:
              attr <name> dumpDirRemote /volume1/ApplicationBackup/dumps_FHEM/
              attr <name> dumpDirLocal /sds1/backup/dumps_FHEM/
              attr <name> dumpFilesKeep 2

              # Der Dump wird remote auf dem MySQL-Server im Verzeichnis '/volume1/ApplicationBackup/dumps_FHEM/' erstellt.
              # Die interne Versionsverwaltung sucht im lokal gemounteten Verzeichnis '/sds1/backup/dumps_FHEM/' vorhandene Dumpfiles und löscht diese bis auf die zwei letzten Versionen.

            Wird die interne Versionsverwaltung genutzt, werden nach einem erfolgreichen Dump alte Dumpfiles gelöscht und nur die Anzahl "dumpFilesKeep" (default: 3) verbleibt im Zielverzeichnis "dumpDirRemote". FHEM benötigt in diesem Fall Schreibrechte auf dem Verzeichnis "dumpDirLocal".

            Die Namenskonvention der Dumpfiles ist: <dbname>_<date>_<time>.csv[.gzip]

            Ein Restore der Datenbank aus diesem Backup kann durch den Befehl:

              set <name> <restoreMySQL> <filename>.csv[.gzip]

            gestartet werden.

            FTP Transfer nach Dump
            Wenn diese Möglichkeit genutzt werden soll, ist das Attribut ftpUse oder "ftpUseSSL" zu setzen. Letzteres gilt wenn eine verschlüsselte Übertragung genutzt werden soll.
            Das Modul übernimmt ebenfalls die Versionierung der Dumpfiles im FTP-Zielverzeichnis mit Hilfe des Attributes "ftpDumpFilesKeep". Für die FTP-Übertragung relevante Attribute sind:

              ftpUse : FTP Transfer nach dem Dump wird eingeschaltet (ohne SSL Verschlüsselung)
              ftpUser : User zur Anmeldung am FTP-Server, default: anonymous
              ftpUseSSL : FTP Transfer mit SSL Verschlüsselung nach dem Dump wird eingeschaltet
              ftpDebug : Debugging des FTP Verkehrs zur Fehlersuche
              ftpDir : Verzeichnis auf dem FTP-Server in welches das File übertragen werden soll (default: "/")
              ftpDumpFilesKeep : Es wird die angegebene Anzahl Dumpfiles im <ftpDir> belassen (default: 3)
              ftpPassive : setzen wenn passives FTP verwendet werden soll
              ftpPort : FTP-Port, default: 21
              ftpPwd : Passwort des FTP-Users, default nicht gesetzt
              ftpServer : Name oder IP-Adresse des FTP-Servers. notwendig !
              ftpTimeout : Timeout für die FTP-Verbindung in Sekunden (default: 30).



        • dumpSQLite - erstellt einen Dump der angeschlossenen SQLite-Datenbank.
          Diese Funktion nutzt die SQLite Online Backup API und ermöglicht es konsistente Backups der SQLite-DB in laufenden Betrieb zu erstellen. Der Dump wird per default im log-Verzeichnis des FHEM-Rechners gespeichert. Das Zielverzeichnis kann mit dem dumpDirLocal Attribut verändert werden und muß durch FHEM beschreibbar sein. Vor dem Dump kann optional eine Tabellenoptimierung (Attribut "optimizeTablesBeforeDump") zugeschaltet werden.

          Achtung !
          Um ein Blockieren von FHEM zu vermeiden, muß DbLog im asynchronen Modus betrieben werden wenn die Tabellenoptimierung verwendet wird !


          Vor und nach dem Dump kann ein FHEM-Kommando (siehe Attribute "executeBeforeProc", "executeAfterProc") ausgeführt werden.

          Die für diese Funktion relevanten Attribute sind:

            dumpCompress : Komprimierung des Dumpfiles nach der Erstellung
            dumpDirLocal : Zielverzeichnis der Dumpfiles
            dumpFilesKeep : Anzahl der aufzubwahrenden Dumpfiles
            executeBeforeProc : ausführen FHEM Kommando (oder Perl-Routine) vor dem Dump
            executeAfterProc : ausführen FHEM Kommando (oder Perl-Routine) nach dem Dump
            optimizeTablesBeforeDump : Tabelloptimierung vor dem Dump ausführen

          Nach einem erfolgreichen Dump werden alte Dumpfiles gelöscht und nur die Anzahl Files, definiert durch das Attribut "dumpFilesKeep" (default: 3), verbleibt im Zielverzeichnis "dumpDirLocal". Falls "dumpFilesKeep = 0" gesetzt, werden alle Dumpfiles (auch das aktuell erstellte File), gelöscht. Diese Einstellung kann sinnvoll sein, wenn FTP aktiviert ist und die erzeugten Dumps nur im FTP-Zielverzeichnis erhalten bleiben sollen.

          Die Namenskonvention der Dumpfiles ist: <dbname>_<date>_<time>.sqlitebkp[.gzip]

          Die Datenbank kann mit "set <name> restoreSQLite <Filename>" wiederhergestellt werden.
          Das erstellte Dumpfile kann auf einen FTP-Server übertragen werden. Siehe dazu die Erläuterungen unter "dumpMySQL".


        • eraseReadings

          Löscht alle angelegten Readings im Device, außer dem Reading "state" und Readings, die in der Ausnahmeliste definiert mit Attribut readingPreventFromDel enthalten sind.

        • exportToFile [</Pfad/File>] [MAXLINES=<lines>] - exportiert DB-Einträge im CSV-Format in den gegebenen Zeitgrenzen.

          Der Dateiname wird durch das expimpfile Attribut bestimmt. Alternativ kann "/Pfad/File" als Kommando-Option angegeben werden und übersteuert ein eventuell gesetztes Attribut "expimpfile". Optional kann über den Parameter "MAXLINES" die maximale Anzahl von Datensätzen angegeben werden, die in ein File exportiert werden. In diesem Fall werden mehrere Files mit den Extensions "_part1", "_part2", "_part3" usw. erstellt (beim Import berücksichtigen !).

          Einschränkungen durch die Attribute device bzw. reading gehen in die Selektion mit ein. Der Dateiname kann Wildcards enthalten (siehe Attribut "expimpfile").
          Durch das Attribut "aggregation" wird der Export der Datensätze in Zeitscheiben der angegebenen Aggregation vorgenommen. Ist z.B. "aggregation = month" gesetzt, werden die Daten in monatlichen Paketen selektiert und in das Exportfile geschrieben. Dadurch wird die Hauptspeicherverwendung optimiert wenn sehr große Datenmengen exportiert werden sollen und vermeidet den "died prematurely" Abbruchfehler.

          Die für diese Funktion relevanten Attribute sind:

            aggregation : Festlegung der Selektionspaketierung
            device : einschließen oder ausschließen von Datensätzen die <device> enthalten
            reading : einschließen oder ausschließen von Datensätzen die <reading> enthalten
            executeBeforeProc : FHEM Kommando (oder Perl-Routine) vor dem Export ausführen
            executeAfterProc : FHEM Kommando (oder Perl-Routine) nach dem Export ausführen
            expimpfile : der Name des Exportfiles
            time.* : eine Reihe von Attributen zur Zeitabgrenzung
            valueFilter : ein zusätzliches REGEXP um die Datenselektion zu steuern. Der REGEXP wird auf das Datenbankfeld 'VALUE' angewendet.

        • fetchrows [history|current] - liefert alle Tabelleneinträge (default: history) in den gegebenen Zeitgrenzen bzw. Selektionsbedingungen durch die Attribute device und reading. Eine evtl. gesetzte Aggregation wird dabei nicht berücksichtigt.
          Die Leserichtung in der Datenbank kann durch das Attribut fetchRoute bestimmt werden.

          Jedes Ergebnisreading setzt sich aus dem Timestring des Datensatzes, einem Dubletten-Index, dem Device und dem Reading zusammen. Die Funktion fetchrows ist in der Lage, mehrfach vorkommende Datensätze (Dubletten) zu erkennen. Solche Dubletten sind mit einem Dubletten-Index > 1 gekennzeichnet. Optional wird noch ein Unique-Index angehängt, wenn Datensätze mit identischem Timestamp, Device und Reading aber unterschiedlichem Value vorhanden sind.
          Dubletten können mit dem Attribut "fetchMarkDuplicates" farblich hervorgehoben werden.

          Hinweis:
          Hervorgehobene Readings werden nach einem Restart bzw. nach rereadcfg nicht mehr angezeigt da sie nicht im statefile gesichert werden (Verletzung erlaubter Readingnamen durch Formatierung).

          Dieses Attribut ist mit einigen Farben vorbelegt, kann aber mit dem colorpicker-Widget überschrieben werden:

            attr <name> widgetOverride fetchMarkDuplicates:colorpicker

          Die Ergebnisreadings von fetchrows sind nach folgendem Schema aufgebaut:

            Beispiel:
            2017-10-22_03-04-43__1__SMA_Energymeter__Bezug_WirkP_Kosten_Diff__[1]
            # <Datum>_<Zeit>__<Dubletten-Index>__<Device>__<Reading>__[Unique-Index]

          Die zur Steuerung von fetchrows relevanten Attribute sind:

            device : einschließen oder ausschließen von Datensätzen die <device> enthalten
            fetchRoute : Leserichtung der Selektion innerhalb der Datenbank
            fetchMarkDuplicates : Hervorhebung von gefundenen Dubletten
            fetchValueFn : der angezeigte Wert des VALUE Datenbankfeldes kann mit einer Funktion vor der Readingerstellung geändert werden
            limit : begrenzt die Anzahl zu selektierenden bzw. anzuzeigenden Datensätze
            executeBeforeProc : FHEM Kommando (oder Perl-Routine) vor dem Befehl ausführen
            executeAfterProc : FHEM Kommando (oder Perl-Routine) nach dem Befehl ausführen
            reading : einschließen oder ausschließen von Datensätzen die <reading> enthalten
            time.* : eine Reihe von Attributen zur Zeitabgrenzung
            valueFilter : filtert die anzuzeigenden Datensätze mit einem regulären Ausdruck (Datenbank spezifischer REGEXP). Der REGEXP wird auf Werte des Datenbankfeldes 'VALUE' angewendet.


          Hinweis:
          Auch wenn das Modul bezüglich der Datenbankabfrage nichtblockierend arbeitet, kann eine zu große Ergebnismenge (Anzahl Zeilen bzw. Readings) die Browsersesssion bzw. FHEMWEB blockieren. Aus diesem Grund wird die Ergebnismenge mit dem Attribut limit begrenzt. Bei Bedarf kann dieses Attribut geändert werden, falls eine Anpassung der Selektionsbedingungen nicht möglich oder gewünscht ist.


        • index <Option> - Listet die in der Datenbank vorhandenen Indexe auf bzw. legt die benötigten Indexe an. Ist ein Index bereits angelegt, wird er erneuert (gelöscht und erneut angelegt)

          Die möglichen Optionen sind:

            list_all : listet die vorhandenen Indexe auf
            recreate_Search_Idx : erstellt oder erneuert (falls vorhanden) den Index Search_Idx in Tabelle history (Index für DbLog)
            drop_Search_Idx : löscht den Index Search_Idx in Tabelle history
            recreate_Report_Idx : erstellt oder erneuert (falls vorhanden) den Index Report_Idx in Tabelle history (Index für DbRep)
            drop_Report_Idx : löscht den Index Report_Idx in Tabelle history

          Die für diese Funktion relevanten Attribute sind:

            useAdminCredentials : benutzt einen privilegierten User für die Operation

          Hinweis:
          Der verwendete MySQL Datenbank-Nutzer benötigt das ALTER, CREATE und INDEX Privileg.
          Diese Rechte können gesetzt werden mit:

            set <Name> sqlCmd GRANT INDEX, ALTER, CREATE ON `<db>`.* TO '<user>'@'%';

          Das Attribut useAdminCredentials muß gewöhnlich gesetzt sein um die Rechte des verwendeten Users ändern zu können.

        • insert <Datum>,<Zeit>,<Value>,[<Unit>],[<Device>],[<Reading>] - 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.
          Werden Device, Reading nicht gesetzt, werden diese Werte aus den entsprechenden Attributen device bzw. reading genommen.

          Hinweis:
          Nicht belegte Felder innerhalb des insert Kommandos müssen innerhalb des Strings in "," eingeschlossen werden.

            Beispiel:
            set <name> insert 2016-08-01,23:00:09,12.03,kW
            set <name> insert 2021-02-02,10:50:00,value with space
            set <name> insert 2022-05-16,10:55:00,1800,,SMA_Wechselrichter,etotal
            set <name> insert 2022-05-16,10:55:00,1800,,,etotal

          Die für diese Funktion relevanten Attribute sind:

            executeBeforeProc : FHEM Kommando (oder Perl-Routine) vor dem Befehl ausführen
            executeAfterProc : FHEM Kommando (oder Perl-Routine) nach dem Befehl ausführen


        • importFromFile [<File>] - importiert Datensätze im CSV-Format aus einer Datei in die Datenbank.
          Der Dateiname wird durch das Attribut expimpfile bestimmt.
          Alternativ kann die Datei (/Pfad/Datei) als Kommando-Option angegeben werden und übersteuert ein eventuell gesetztes Attribut "expimpfile". Der Dateiname kann Wildcards enthalten (siehe Attribut "expimpfile").

            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",""

            Die für diese Funktion relevanten Attribute sind:

              executeBeforeProc : FHEM Kommando (oder Perl-Routine) vor dem Import ausführen
              executeAfterProc : FHEM Kommando (oder Perl-Routine) nach dem Import ausführen
              expimpfile : der Name des Importfiles


        • maxValue [display | writeToDB | deleteOther]

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

          Ist keine oder die Option display angegeben, werden die Ergebnisse nur angezeigt. Mit der Option writeToDB werden die Berechnungsergebnisse mit einem neuen Readingnamen in der Datenbank gespeichert.
          Der neue Readingname wird aus einem Präfix und dem originalen Readingnamen gebildet, wobei der originale Readingname durch das Attribut readingNameMap ersetzt werden kann. Der Präfix setzt sich aus der Bildungsfunktion und der Aggregation zusammen.
          Der Timestamp des neuen Readings in der Datenbank wird von der eingestellten Aggregationsperiode abgeleitet. Das Feld "EVENT" wird mit "calculated" gefüllt.

          Wird die Option deleteOther verwendet, werden alle Datensätze außer dem Datensatz mit dem ermittelten Maximalwert aus der Datenbank innerhalb der definierten Grenzen gelöscht.

            Beispiel neuer Readingname gebildet aus dem Originalreading "totalpac":
            max_day_totalpac
            # <Bildungsfunktion>_<Aggregation>_<Originalreading>

          Relevante Attribute sind:
            aggregation, device, reading, readingNameMap, executeBeforeProc, executeAfterProc, valueFilter, userExitFn, time.*-Attribute


        • migrateCollation <Collation>

          Migriert den verwendeten Zeichensatz/Kollation der Datenbank und der Tabellen current und history in das angegebene Format.

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, useAdminCredentials, userExitFn


        • minValue [display | writeToDB | deleteOther]

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

          Ist keine oder die Option display angegeben, werden die Ergebnisse nur angezeigt. Mit der Option writeToDB werden die Berechnungsergebnisse mit einem neuen Readingnamen in der Datenbank gespeichert.
          Der neue Readingname wird aus einem Präfix und dem originalen Readingnamen gebildet, wobei der originale Readingname durch das Attribut readingNameMap ersetzt werden kann. Der Präfix setzt sich aus der Bildungsfunktion und der Aggregation zusammen.
          Der Timestamp der neuen Readings in der Datenbank wird von der eingestellten Aggregationsperiode abgeleitet. Das Feld "EVENT" wird mit "calculated" gefüllt.

          Wird die Option deleteOther verwendet, werden alle Datensätze außer dem Datensatz mit dem ermittelten Maximalwert aus der Datenbank innerhalb der definierten Grenzen gelöscht.

            Beispiel neuer Readingname gebildet aus dem Originalreading "totalpac":
            min_day_totalpac
            # <Bildungsfunktion>_<Aggregation>_<Originalreading>

          Relevante Attribute sind:
            aggregation, device, executeBeforeProc, executeAfterProc, reading, readingNameMap, valueFilter, userExitFn, time.*-Attribute


        • multiCmd {<Befehl-Hash>}

          Führt mehrere Set-Befehle sequentiell in einer definierbaren Reihenfolge aus.
          Die Befehle und bestimmte veränderbare Attribute, die für die Befehle relevant sind, werden in einem Hash übergeben. In einem Script, z.B. einem at-Device, kann auch eine Variable übergeben werden die einen definierten Hash enthält.
          Die auszuführenden Befehle (Schlüssel cmd) und die dafür zu setzenden Attribute werden über Schlüssel im übergebenen Hash definiert. Die Festlegung der Abarbeitungsreihenfolge der Befehle erfolgt über den Befehl-Index im Hash der nicht '0' sein darf.

          Im Hash definierbare Attributschlüssel sind:
            autoForward, averageCalcForm, device, executeBeforeProc, executeAfterProc, reading, readingNameMap, seqDoubletsVariance, timestamp_begin, timestamp_end, timeDiffToNow, timeOlderThan, timeYearPeriod, userExitFn,

          Hinweis: Alle oben genannten Attribute werden vor Ausführung jedes Befehl-Index gelöscht.
          Die im jeweiligen Befehl-Index angegebenen Attribute werden vor Ausführung des Schrittes definiert gesetzt.

          Beispiel für die Definition eines Befehl-Hashes:
                    {
                      1  => { executeBeforeProc => 'set LogDB reopen 900',
                              timestamp_begin   => '2023-12-17 00:00:00',
                              timestamp_end     => '2023-12-17 01:00:00',
                              device            => 'SMA_Energymeter',
                              reading           => 'Einspeisung_Wirkleistung_Zaehler',
                              cmd               => 'countEntries history'
                            },
                      2  => { timestamp_begin   => '2023-12-15 11:00:00',
                              timestamp_end     => 'previous_day_end',
                              device            => 'SMA_Energymeter',
                              reading           => 'Einspeisung_Wirkleistung_Zaehler',
                              cmd               => 'countEntries'
                            },
                      3  => { timeDiffToNow     => 'd:2',
                              readingNameMap    => 'COUNT',
                              autoForward       => '{ ".*COUNT.*" => "Dum.Rep.All" }',
                              device            => 'SMA_%,MySTP.*',
                              reading           => 'etotal,etoday,Ein% EXCLUDE=%Wirkleistung',
                              cmd               => 'countEntries history'
                            },
                      4  => { timeDiffToNow     => 'd:2',
                              readingNameMap    => 'SUM',
                              autoForward       => '{ ".*SUM.*" => "Dum.Rep.All" }',
                              device            => 'SMA_%,MySTP.*',
                              reading           => 'etotal,etoday,Ein% EXCLUDE=%Wirkleistung',
                              cmd               => 'sumValue'
                            },
                      5  => { executeAfterProc  => 'set LogDB reopen',
                              cmd               => 'sqlCmd select count(*) from current'
                            },
                    }
                  

        • optimizeTables [showInfo | execute]

          Optimiert die Tabellen in der angeschlossenen Datenbank (MySQL).

            showInfo : zeigt Informationen zum belegten / freien Speicherplatz innerhalb der Datenbank
            execute : führt die Optimierung aller Tabellen in der Datenbank aus

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, userExitFn


        • readingRename <[Device:]alterReadingname>,<neuerReadingname>

          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.
          Optional kann eine Device angegeben werden. In diesem Fall werden nur die alten Readings dieses Devices in den neuen Readingnamen umgesetzt.

            Beispiele:
            set <name> readingRename TotalConsumption,L1_TotalConsumption
            set <name> readingRename Dum.Energy:TotalConsumption,L1_TotalConsumption

          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.

          Für diese Funktion sind folgende Attribute relevant:

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, userExitFn


        • reduceLog [<no>[:<nn>]] [mode] [EXCLUDE=device1:reading1,device2:reading2,...] [INCLUDE=device:reading]

          Reduziert historische Datensätze.

          Arbeitsweise ohne Angabe von Befehlszeilenoperatoren

          Es werden die Daten innerhalb der durch die time.*-Attribute bestimmten Zeitgrenzen bereinigt. Es muss mindestens eines der time.*-Attribute gesetzt sein (siehe Tabelle unten). Die jeweils fehlende Zeitabgrenzung wird in diesem Fall durch das Modul ermittelt.
          Der Arbeitsmodus wird durch die optionale Angabe von mode bestimmt:

            ohne Angabe von mode : die Daten werden auf den ersten Eintrag pro Stunde je Device & Reading reduziert
            average : numerische Werte werden auf einen Mittelwert pro Stunde je Device & Reading reduziert, sonst wie ohne mode
            average=day : numerische Werte werden auf einen Mittelwert pro Tag je Device & Reading reduziert, sonst wie ohne mode
              Die FullDay-Option (es werden immer volle Tage selektiert) wird impliziert verwendet.
            max : numerische Werte werden auf den Maximalwert pro Stunde je Device & Reading reduziert, sonst wie ohne mode
            max=day : numerische Werte werden auf den Maximalwert pro Tag je Device & Reading reduziert, sonst wie ohne mode
              Die FullDay-Option (es werden immer volle Tage selektiert) wird impliziert verwendet.
            min : numerische Werte werden auf den Minimalwert pro Stunde je Device & Reading reduziert, sonst wie ohne mode
            min=day : numerische Werte werden auf den Minimalwert pro Tag je Device & Reading reduziert, sonst wie ohne mode
              Die FullDay-Option (es werden immer volle Tage selektiert) wird impliziert verwendet.
            sum : numerische Werte werden auf die Summe pro Stunde je Device & Reading reduziert, sonst wie ohne mode
            sum=day : numerische Werte werden auf die Summe pro Tag je Device & Reading reduziert, sonst wie ohne mode
              Die FullDay-Option (es werden immer volle Tage selektiert) wird impliziert verwendet.

          Mit den Attributen device und reading können die zu berücksichtigenden Datensätze eingeschlossen bzw. ausgeschlossen werden. Beide Eingrenzungen reduzieren die selektierten Daten und verringern den Ressourcenbedarf. Das Reading "reduceLogState" enthält das Ausführungsergebnis des letzten reduceLog-Befehls.

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, device, reading, numDecimalPlaces, timeOlderThan, timeDiffToNow, timestamp_begin, timestamp_end, valueFilter, userExitFn

          Beispiele:

            attr <name> timeOlderThan d:200
            set <name> reduceLog
            # Datensätze die älter als 200 Tage sind, werden auf den ersten Eintrag pro Stunde je Device & Reading reduziert.

            attr <name> timeDiffToNow d:200
            set <name> reduceLog average=day
            # Datensätze die neuer als 200 Tage sind, werden auf einen Eintrag pro Tag je Device & Reading reduziert.

            attr <name> timeDiffToNow d:30
            attr <name> device TYPE=SONOSPLAYER EXCLUDE=Sonos_Kueche
            attr <name> reading room% EXCLUDE=roomNameAlias
            set <name> reduceLog
            # Datensätze die neuer als 30 Tage sind, die Devices vom Typ SONOSPLAYER sind (außer Device "Sonos_Kueche"), die Readings mit "room" beginnen (außer "roomNameAlias"), werden auf den ersten Eintrag pro Stunde je Device & Reading reduziert.

            attr <name> timeDiffToNow d:10
            attr <name> timeOlderThan d:5
            attr <name> device Luftdaten_remote
            set <name> reduceLog average
            # Datensätze die älter als 5 und neuer als 10 Tage sind und DEVICE "Luftdaten_remote" enthalten, werden bereinigt. Numerische Werte einer Stunde werden auf einen Mittelwert reduziert


          Arbeitsweise mit Angabe von Befehlszeilenoperatoren

          Es werden Datensätze berücksichtigt die älter sind als <no> Tage und (optional) neuer sind als <nn> Tage. Der Arbeitsmodus wird durch die optionale Angabe von mode wie oben beschrieben bestimmt.

          Die Zusätze "EXCLUDE" bzw. "INCLUDE" können ergänzt werden um device/reading Kombinationen in reduceLog auszuschließen bzw. einzuschließen und überschreiben die Einstellung der Attribute "device" und "reading", die in diesem Fall nicht beachtet werden.
          Die Angabe in "EXCLUDE" wird als Regex ausgewertet. Innerhalb von "INCLUDE" können SQL-Wildcards verwendet werden (weitere Informationen zu SQL-Wildcards siehe mit get <name> versionNotes 6).

          Beispiele:

            set <name> reduceLog 174:180 average EXCLUDE=SMA_Energymeter:Bezug_Wirkleistung INCLUDE=SMA_Energymeter:%
            # Datensätze älter als 174 und neuer als 180 Tage werden auf den Durchschnitt pro Stunde reduziert.
            # Es werden alle Readings vom Device "SMA_Energymeter" außer "Bezug_Wirkleistung" berücksichtigt. reduziert.

          Hinweis:
          Obwohl die Funktion selbst non-blocking ausgelegt ist, sollte das zugeordnete DbLog-Device im asynchronen Modus betrieben werden um ein Blockieren von FHEMWEB zu vermeiden (Tabellen-Lock).
          Weiterhin wird dringend empfohlen den standard INDEX 'Search_Idx' in der Tabelle 'history' anzulegen !
          Die Abarbeitung dieses Befehls dauert unter Umständen (ohne INDEX) extrem lange.


        • repairSQLite [sec]

          Repariert eine korrupte SQLite-Datenbank.

          Eine Korruption liegt im Allgemeinen vor, wenn die Fehlermitteilung "database disk image is malformed" im state des DbLog-Devices erscheint. Wird dieses Kommando gestartet, wird das angeschlossene DbLog-Device zunächst automatisch für 10 Stunden (36000 Sekunden) von der Datenbank getrennt (Trennungszeit). Nach Abschluss der Reparatur erfolgt wieder eine sofortige Neuverbindung zur reparierten Datenbank.
          Dem Befehl kann eine abweichende Trennungszeit (in Sekunden) als Argument angegeben werden.
          Die korrupte Datenbank wird als <database>.corrupt im gleichen Verzeichnis gespeichert.

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, userExitFn

          Beispiel:
            set <name> repairSQLite
            # Die Datenbank wird repariert, Trennungszeit beträgt 10 Stunden
            set <name> repairSQLite 600
            # Die Datenbank wird repariert, Trennungszeit beträgt 10 Minuten

          Hinweis:
          Es ist nicht garantiert, dass die Reparatur erfolgreich verläuft und keine Daten verloren gehen. Je nach Schwere der Korruption kann Datenverlust auftreten oder die Reparatur scheitern, auch wenn kein Fehler im Ablauf signalisiert wird. Ein Backup der Datenbank sollte unbedingt vorhanden sein!


        • restoreMySQL <File>

          Stellt die Datenbank aus einem serverSide- oder clientSide-Dump wieder her.
          Die Funktion stellt über eine Drop-Down Liste eine Dateiauswahl für den Restore zur Verfügung.

          Verwendung eines serverSide-Dumps
          Der verwendete Datenbankuser benötigt das FILE Privileg (siehe Wiki).
          Es wird der Inhalt der history-Tabelle aus einem serverSide-Dump wiederhergestellt. Dazu ist das Verzeichnis "dumpDirRemote" des MySQL-Servers auf dem Client zu mounten und im Attribut dumpDirLocal dem DbRep-Device bekannt zu machen.
          Es werden alle Files mit der Endung "csv[.gzip]" und deren Name mit der verbundenen Datenbank beginnt (siehe Internal DATABASE), aufgelistet.

          Verwendung eines clientSide-Dumps
          Es werden alle Tabellen und eventuell vorhandenen Views wiederhergestellt. Das Verzeichnis, in dem sich die Dump-Files befinden, ist im Attribut dumpDirLocal dem DbRep-Device bekannt zu machen.
          Es werden alle Files mit der Endung "sql[.gzip]" und deren Name mit der verbundenen Datenbank beginnt (siehe Internal DATABASE), aufgelistet.
          Die Geschwindigkeit des Restores ist abhängig von der Servervariable "max_allowed_packet". Durch Veränderung dieser Variable im File my.cnf kann die Geschwindigkeit angepasst werden. Auf genügend verfügbare Ressourcen (insbesondere RAM) ist dabei zu achten.

          Der Datenbankuser benötigt Rechte zum Tabellenmanagement, z.B.:
          CREATE, ALTER, INDEX, DROP, SHOW VIEW, CREATE VIEW

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, dumpDirLocal, userExitFn


        • restoreSQLite <File>.sqlitebkp[.gzip]

          Stellt das Backup einer SQLite-Datenbank wieder her.
          Die Funktion stellt über eine Drop-Down Liste die für den Restore zur Verfügung stehenden Dateien zur Verfügung. Die aktuell in der Zieldatenbank enthaltenen Daten werden gelöscht bzw. überschrieben. Es werden alle Files mit der Endung "sqlitebkp[.gzip]" und deren Name mit dem Namen der verbundenen Datenbank beginnt, aufgelistet.

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, userExitFn


        • sqlCmd

          Führt ein beliebiges benutzerspezifisches Kommando aus.
          sqlCmd akzeptiert ebenfalls das Setzen von SQL Session Variablen wie z.B. "SET @open:=NULL, @closed:=NULL;" oder die Verwendung von SQLite PRAGMA vor der Ausführung des SQL-Statements. Soll die Session Variable oder das PRAGMA vor jeder Ausführung eines SQL Statements gesetzt werden, kann dafür das Attribut sqlCmdVars verwendet werden.

          Sollen die im Modul gesetzten Attribute device, reading, timestamp_begin bzw. timestamp_end im Statement berücksichtigt werden, können die Platzhalter §device§, §reading§, §timestamp_begin§ bzw. §timestamp_end§ eingesetzt werden.
          Dabei ist zu beachten, dass die Platzhalter §device§ und §reading§ komplex aufgelöst werden und dementsprechend wie im unten stehenden Beispiel anzuwenden sind.

          Soll ein Datensatz upgedated werden, ist dem Statement "TIMESTAMP=TIMESTAMP" hinzuzufügen um eine Änderung des originalen Timestamps zu verhindern.

          Beispiele für Statements:

          • set <name> sqlCmd select DEVICE, count(*) from history where TIMESTAMP >= "2017-01-06 00:00:00" group by DEVICE having count(*) > 800
          • set <name> sqlCmd select DEVICE, count(*) from history where TIMESTAMP >= "2017-05-06 00:00:00" group by DEVICE
          • set <name> sqlCmd select DEVICE, count(*) from history where TIMESTAMP >= §timestamp_begin§ group by DEVICE
          • set <name> sqlCmd select * from history where DEVICE like "Te%t" order by `TIMESTAMP` desc
          • set <name> sqlCmd select * from history where `TIMESTAMP` > "2017-05-09 18:03:00" order by `TIMESTAMP` desc
          • set <name> sqlCmd select * from current order by `TIMESTAMP` desc
          • set <name> sqlCmd select sum(VALUE) as 'Einspeisung am 04.05.2017', count(*) as 'Anzahl' FROM history where `READING` = "Einspeisung_WirkP_Zaehler_Diff" and TIMESTAMP between '2017-05-04' AND '2017-05-05'
          • set <name> sqlCmd delete from current
          • set <name> sqlCmd delete from history where TIMESTAMP < "2016-05-06 00:00:00"
          • set <name> sqlCmd update history set TIMESTAMP=TIMESTAMP,VALUE='Val' WHERE VALUE='TestValue'
          • set <name> sqlCmd select * from history where DEVICE = "Test"
          • set <name> sqlCmd insert into history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES ('2017-05-09 17:00:14','Test','manuell','manuell','Tes§e','TestValue','°C')
          • set <name> sqlCmd select DEVICE, count(*) from history where §device§ AND TIMESTAMP >= §timestamp_begin§ group by DEVICE
          • set <name> sqlCmd select DEVICE, READING, count(*) from history where §device§ AND §reading§ AND TIMESTAMP >= §timestamp_begin§ group by DEVICE, READING

          • Nachfolgend Beispiele für ein komplexeres Statement (MySQL) unter Mitgabe von SQL Session Variablen und die SQLite PRAGMA-Verwendung:

          • set <name> sqlCmd SET @open:=NULL, @closed:=NULL; SELECT TIMESTAMP, VALUE,DEVICE, @open AS open, @open := IF(VALUE = 'open', TIMESTAMP, NULL) AS curr_open, @closed := IF(VALUE = 'closed', TIMESTAMP, NULL) AS closed FROM history WHERE DATE(TIMESTAMP) = CURDATE() AND DEVICE = "HT_Fensterkontakt" AND READING = "state" AND (VALUE = "open" OR VALUE = "closed") ORDER BY TIMESTAMP;
          • set <name> sqlCmd PRAGMA temp_store=MEMORY; PRAGMA synchronous=FULL; PRAGMA journal_mode=WAL; PRAGMA cache_size=4000; select count(*) from history;
          • set <name> sqlCmd PRAGMA temp_store=FILE; PRAGMA temp_store_directory = '/opt/fhem/'; VACUUM;

          Die Ergebnis-Formatierung kann durch das Attribut sqlResultFormat ausgewählt, sowie der verwendete Feldtrenner durch das Attribut sqlResultFieldSep festgelegt werden.

          Das Modul stellt optional eine Kommando-Historie zur Verfügung sobald ein SQL-Kommando erfolgreich ausgeführt wurde. Um diese Option zu nutzen, ist das Attribut sqlCmdHistoryLength mit der gewünschten Listenlänge zu aktivieren.

          Ein SQL-Statement kann durch Angabe seines Listenindex ausgeführt werden:

            set <name> sqlCmd ckey:<Index>      (e.g. ckey:4)

          Der Listenindex "ckey:latest" führt das zuletzt in der SQL History gespeicherte Statement aus.

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, sqlResultFormat, sqlResultFieldSep, sqlCmdHistoryLength, sqlCmdVars, sqlFormatService, useAdminCredentials, userExitFn

          Hinweis:
          Auch wenn das Modul bezüglich der Datenbankabfrage nichtblockierend arbeitet, kann eine zu große Ergebnismenge (Anzahl Zeilen bzw. Readings) die Browsersesssion bzw. FHEMWEB blockieren.
          Wenn man sich unsicher ist, sollte man vorsorglich dem Statement ein Limit hinzufügen.


        • sqlCmdHistory

          Wenn mit dem Attribut sqlCmdHistoryLength aktiviert, kann ein gespeichertes SQL-Statement aus einer Liste ausgewählt und ausgeführt werden.
          Der SQL Cache wird beim Beenden von FHEM automatisch gesichert und beim Start des Systems wiederhergestellt.
          Mit den nachfolgenden Einträgen werden spezielle Funktionen ausgeführt:


            ___purge_sqlhistory___ : löscht den History Cache
            ___list_sqlhistory___ : zeigt die aktuell im Cache vorhandenen SQL-Statements incl. ihrem Cache Key (ckey)
            ___save_sqlhistory___ : sichert den History Cache manuell
            ___restore_sqlhistory___ : stellt die letzte Sicherung des History Cache wieder her

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, sqlResultFormat, sqlResultFieldSep, sqlCmdHistoryLength, sqlCmdVars, sqlFormatService, useAdminCredentials, userExitFn


        • sqlSpecial

          Die Funktion bietet eine Drop-Downliste mit einer Auswahl vorbereiter Auswertungen an.
          Das Ergebnis des Statements wird im Reading "SqlResult" dargestellt. Die Ergebnis-Formatierung kann durch das Attribut sqlResultFormat ausgewählt, sowie der verwendete Feldtrenner durch das Attribut sqlResultFieldSep festgelegt werden.

            50mostFreqLogsLast2days ermittelt die 50 am häufigsten vorkommenden Loggingeinträge der letzten 2 Tage
            allDevCount alle in der Datenbank vorkommenden Devices und deren Anzahl
            allDevReadCount alle in der Datenbank vorkommenden Device/Reading-Kombinationen und deren Anzahl
            50DevReadCount die 50 am häufigsten in der Datenbank enthaltenen Device/Reading-Kombinationen
            recentReadingsOfDevice ermittelt die neuesten in der Datenbank vorhandenen Datensätze eines Devices. Das auszuwertende
            Device muß im Attribut device definiert sein.
            readingsDifferenceByTimeDelta ermittelt die Wertedifferenz aufeinanderfolgender Datensätze eines Readings. Das auszuwertende
            Device und Reading muß im Attribut device bzw. reading definiert sein.
            Die Zeitgrenzen der Auswertung werden durch die time.*-Attribute festgelegt.

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, sqlResultFormat, sqlResultFieldSep, sqlFormatService, device, reading, userExitFn



        • sumValue [display | writeToDB | writeToDBSingle | writeToDBInTime]

          Berechnet die Summenwerte des Datenbankfelds "VALUE" in den Zeitgrenzen der möglichen time.*-Attribute.

          Es muss das auszuwertende Reading im Attribut reading angegeben sein.
          Diese Funktion ist sinnvoll wenn fortlaufend Wertedifferenzen eines Readings in die Datenbank geschrieben werden.

          Ist keine oder die Option display angegeben, werden die Ergebnisse nur angezeigt.
          Mit den Optionen writeToDB, writeToDBSingle bzw. writeToDBInTime werden die Berechnungsergebnisse mit einem neuen Readingnamen in der Datenbank gespeichert.

            writeToDB : schreibt jeweils einen Wert mit den Zeitstempeln XX:XX:01 und XX:XX:59 innerhalb der jeweiligen Auswertungsperiode
            writeToDBSingle : schreibt nur einen Wert mit dem Zeitstempel XX:XX:59 am Ende einer Auswertungsperiode
            writeToDBInTime : schreibt jeweils einen Wert am Anfang und am Ende der Zeitgrenzen einer Auswertungsperiode

          Der neue Readingname wird aus einem Präfix und dem originalen Readingnamen gebildet,
          wobei der originale Readingname durch das Attribut "readingNameMap" ersetzt werden kann.
          Der Präfix setzt sich aus der Bildungsfunktion und der Aggregation zusammen.
          Der Timestamp der neuen Readings in der Datenbank wird von der eingestellten Aggregationsperiode abgeleitet,
          sofern kein eindeutiger Zeitpunkt des Ergebnisses bestimmt werden kann. Das Feld "EVENT" wird mit "calculated" gefüllt.

            Beispiel neuer Readingname gebildet aus dem Originalreading "totalpac":
            sum_day_totalpac
            # <Bildungsfunktion>_<Aggregation>_<Originalreading>

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, aggregation, device, reading, readingNameMap, valueFilter, userExitFn, time.*-Attribute



        • syncStandby <DbLog-Device Standby>

          Es werden die Datensätze aus der angeschlossenen Datenbank (Quelle) direkt in eine weitere Datenbank (Standby-Datenbank) übertragen. Dabei ist "<DbLog-Device Standby>" das DbLog-Device, welches mit der Standby-Datenbank verbunden ist.

          Es werden alle Datensätze übertragen, die durch das timestamp_begin Attribut bzw. die Attribute "device", "reading" bestimmt sind.
          Die Datensätze werden dabei in Zeitscheiben entsprechend der eingestellten Aggregation übertragen. Hat das Attribut "aggregation" den Wert "no" oder "month", werden die Datensätze automatisch in Tageszeitscheiben zur Standby-Datenbank übertragen. Quell- und Standby-Datenbank können unterschiedlichen Typs sein.

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, aggregation, device, reading, readingNameMap, valueFilter, userExitFn, time.*-Attribute



        • tableCurrentFillup

          Die current-Tabelle wird mit einem Extrakt der history-Tabelle aufgefüllt.
          Die Attribute zur Zeiteinschränkung bzw. device, reading werden ausgewertet.
          Dadurch kann der Inhalt des Extrakts beeinflusst werden.
          Im zugehörigen DbLog-Device sollte das Attribut "DbLogType=SampleFill/History" gesetzt sein.

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, device, reading, valueFilter, userExitFn, time.*-Attribute


        • tableCurrentPurge

          Löscht den Inhalt der current-Tabelle.
          Es werden keine Limitierungen, z.B. durch die Attribute timestamp_begin, timestamp_end, device oder reading ausgewertet.

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, userExitFn


        • vacuum

          Optimiert die Tabellen in der angeschlossenen Datenbank (SQLite, PostgreSQL).
          Insbesondere für SQLite Datenbanken ist unbedingt empfehlenswert die Verbindung des relevanten DbLog-Devices zur Datenbank vorübergehend zu schließen (siehe DbLog reopen Kommando).

          Relevante Attribute sind:
            executeBeforeProc, executeAfterProc, userExitFn

          Hinweis:
          Bei der Ausführung des vacuum Kommandos wird bei SQLite Datenbanken automatisch das PRAGMA auto_vacuum = FULL angewendet.
          Das vacuum Kommando erfordert zusätzlichen temporären Speicherplatz. Sollte der Platz im Standard TMPDIR Verzeichnis nicht ausreichen, kann SQLite durch setzen der Umgebungsvariable SQLITE_TMPDIR ein ausreichend großes Verzeichnis zugewiesen werden.
          (siehe: www.sqlite.org/tempfiles)



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

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

        • blockinginfo
          Listet die aktuell systemweit laufenden Hintergrundprozesse (BlockingCalls) mit ihren Informationen auf. Zu lange Zeichenketten (z.B. Argumente) werden gekürzt ausgeschrieben.


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

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


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

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


        • initData
          Ermittelt einige für die Funktion des Moduls relevante Datenbankeigenschaften. Der Befehl wird bei der ersten Datenbankverbindung implizit ausgeführt.


        • minTimestamp - Ermittelt den Zeitstempel des ältesten Datensatzes in der Datenbank (wird implizit beim Start von FHEM ausgeführt). Der Zeitstempel wird als Selektionsbeginn verwendet wenn kein Zeitattribut den Selektionsbeginn festlegt.


        • procinfo - Listet die existierenden Datenbank-Prozesse in einer Tabelle auf (nur MySQL).
          Typischerweise werden nur die Prozesse des Verbindungsusers (angegeben in DbLog-Konfiguration) ausgegeben. Sollen alle Prozesse angezeigt werden, ist dem User das globale Recht "PROCESS" einzuräumen.
          Für bestimmte SQL-Statements wird seit MariaDB 5.3 ein Fortschrittsreporting (Spalte "PROGRESS") ausgegeben. Zum Beispiel kann der Abarbeitungsgrad bei der Indexerstellung verfolgt werden.
          Weitere Informationen sind hier verfügbar.


        • sqlCmdBlocking <SQL-Statement>

          Führt das angegebene SQL-Statement blockierend mit einem Standardtimeout von 10 Sekunden aus. Der Timeout kann mit dem Attribut timeout eingestellt werden.

            Beispiele:
            { fhem("get <name> sqlCmdBlocking select device,count(*) from history where timestamp > '2018-04-01' group by device") }
            { CommandGet(undef,"Rep.LogDB1 sqlCmdBlocking select device,count(*) from history where timestamp > '2018-04-01' group by device") }
            get <name> sqlCmdBlocking select device,count(*) from history where timestamp > '2018-04-01' group by device

        • Diese Funktion ist durch ihre Arbeitsweise speziell für den Einsatz in benutzerspezifischen Scripten geeignet.
          Die Eingabe akzeptiert Mehrzeiler und gibt ebenso mehrzeilige Ergebisse zurück. Dieses Kommando akzeptiert ebenfalls das Setzen von SQL Session Variablen wie z.B. "SET @open:=NULL, @closed:=NULL;" oder PRAGMA für SQLite.
          Werden mehrere Felder selektiert und zurückgegeben, erfolgt die Feldtrennung mit dem Trenner des Attributs sqlResultFieldSep (default "|"). Mehrere Ergebniszeilen werden mit Newline ("\n") separiert.
          Diese Funktion setzt/aktualisiert nur Statusreadings, die Funktion im Attribut "userExitFn" wird nicht aufgerufen.

          Erstellt man eine kleine Routine in 99_myUtils, wie z.B.:
          sub dbval {
            my $name = shift;
            my $cmd  = shift;
            my $ret  = CommandGet(undef,"$name sqlCmdBlocking $cmd");
            return $ret;
          }
              
          kann sqlCmdBlocking vereinfacht verwendet werden mit Aufrufen wie:

            Beispiele:
            { dbval("<name>","select count(*) from history") }
            oder
            $ret = dbval("<name>","select count(*) from history");


        • storedCredentials - Listet die im Device gespeicherten User / Passworte für den Datenbankzugriff auf.
          (nur gültig bei Datenbanktyp MYSQL)


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

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


        • tableinfo - ruft Tabelleninformationen aus der mit dem DbRep-Device verbundenen Datenbank ab (MySQL). Es werden per default alle in der verbundenen Datenbank angelegten Tabellen ausgewertet. Mit dem Attribut showTableInfo können die Ergebnisse eingeschränkt werden. Erläuterungen zu den erzeugten Readings sind hier zu finden.

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


        • versionNotes [hints | rel | <key>] - Zeigt Release Informationen und/oder Hinweise zum Modul an.

            rel : zeigt nur Release Informationen
            hints : zeigt nur Hinweise an
            <key> : es wird der Hinweis mit der angegebenen Nummer angezeigt

        • Sind keine Optionen angegeben, werden sowohl Release Informationen als auch Hinweise angezeigt. Es sind nur Release Informationen mit Bedeutung für den Modulnutzer enthalten.

    Attribute
      Über die modulspezifischen Attribute wird die Abgrenzung der Auswertung und die Aggregation der Werte gesteuert.
      Die hier aufgeführten Attribute sind nicht für jede Funktion des Moduls bedeutsam. In der Hilfe zu den set/get-Kommandos wird explizit angegeben, welche Attribute für das jeweilige Kommando relevant sind.

      Hinweis zur SQL-Wildcard Verwendung:
      Innerhalb der Attribut-Werte für "device" und "reading" kann SQL-Wildcards "%" angegeben werden. Dabei wird "%" als Platzhalter für beliebig viele Zeichen verwendet. Das Zeichen "_" wird nicht als SQL-Wildcard supported.
      Dies gilt für alle Funktionen ausser "insert", "importFromFile" und "deviceRename".
      Die Funktion "insert" erlaubt nicht, dass die genannten Attribute das Wildcard "%" enthalten. Character "_" wird als normales Zeichen gewertet.
      In Ergebnis-Readings wird das Wildcardzeichen "%" durch "/" ersetzt um die Regeln für erlaubte Zeichen in Readings einzuhalten.

        • aggregation

          Erstellung der Funktionsergebnisse in Zeitscheiben innerhalb des Selektionszeitraumes.

            no - keine Aggregation (default)
            minute - die Funktionsergebnisse werden pro Minute zusammengefasst
            hour - die Funktionsergebnisse werden pro Stunde zusammengefasst
            day - die Funktionsergebnisse werden pro Kalendertag zusammengefasst
            week - die Funktionsergebnisse werden pro Kalenderwoche zusammengefasst
            month - die Funktionsergebnisse werden pro Kalendermonat zusammengefasst
            year - die Funktionsergebnisse werden pro Kalenderjahr zusammengefasst

        • autoForward

          Wenn aktiviert, werden die Ergebnisreadings einer Funktion in ein oder mehrere Devices übertragen.
          Die Definition erfolgt in der Form:
             {
              "<source-reading>" => "<dest.device> [=> <dest.-reading>]",
              "<source-reading>" => "<dest.device> [=> <dest.-reading>]",
              ...
             }
            
          In der Angabe <source-reading> sind Wildcards (.*) erlaubt.

          Beispiel:
             {
              ".*"        => "Dum.Rep.All",
              ".*AVGAM.*" => "Dum.Rep     => average",
              ".*SUM.*"   => "Dum.Rep.Sum => summary",
             }
             # alle Readings werden zum Device "Dum.Rep.All" übertragen, Readingname bleibt im Ziel erhalten
             # Readings mit "AVGAM" im Namen werden zum Device "Dum.Rep" in das Reading "average" übertragen
             # Readings mit "SUM" im Namen werden zum Device "Dum.Rep.Sum" in das Reading "summary" übertragen
            

        • averageCalcForm

          Legt die Berechnungsvariante für die Ermittlung des Durchschnittswertes mit "averageValue" fest.

          Zur Zeit sind folgende Varianten implementiert:

            avgArithmeticMean: Es wird der arithmetische Mittelwert berechnet. (default)
            avgDailyMeanGWS: Berechnet die Tagesmitteltemperatur entsprechend den
            Vorschriften des deutschen Wetterdienstes. (siehe "get <name> versionNotes 2")
            Diese Variante verwendet automatisch die Aggregation "day".
            avgDailyMeanGWSwithGTS: Wie "avgDailyMeanGWS" und berechnet zusätzlich die Grünlandtemperatursumme.
            Ist der Wert 200 erreicht, wird das Reading "reachedGTSthreshold" mit dem Datum
            des erstmaligen Erreichens dieses Schwellenwertes erstellt.
            Hinweis: Das Attribut timestamp_begin muss auf den Beginn eines Jahres gesetzt werden!
            (siehe "get <name> versionNotes 5")
            avgTimeWeightMean: Berechnet den zeitgewichteten Mittelwert.
            Hinweis: Es müssen mindestens zwei Datenpunkte pro aggregation Periode vorhanden sein.

        • countEntriesDetail

          Wenn gesetzt, erstellt die Funktion "countEntries" eine detallierte Ausgabe der Datensatzzahl pro Reading und Zeitintervall. Standardmäßig wird nur die Summe aller selektierten Datensätze ausgegeben.

        • device - Abgrenzung der DB-Selektionen auf ein bestimmtes oder mehrere Devices.
          Es können Geräte-Spezifikationen (devspec) angegeben werden.
          In diesem Fall werden die Devicenamen vor der Selektion aus der Geräte-Spezifikationen und den aktuell in FHEM vorhandenen Devices aufgelöst.
          Wird dem Device bzw. der Device-Liste oder Geräte-Spezifikation ein "EXCLUDE=" vorangestellt, werden diese Devices von der Selektion ausgeschlossen.
          Die Datenbankselektion wird als logische UND-Verknüpfung aus "device" und dem Attribut reading ausgeführt.

            Beispiele:
            attr <name> device TYPE=DbRep
            attr <name> device MySTP_5000
            attr <name> device SMA.*,MySTP.*
            attr <name> device SMA_Energymeter,MySTP_5000
            attr <name> device %5000
            attr <name> device TYPE=SSCam EXCLUDE=SDS1_SVS
            attr <name> device TYPE=SSCam,TYPE=ESPEasy EXCLUDE=SDS1_SVS
            attr <name> device EXCLUDE=SDS1_SVS
            attr <name> device EXCLUDE=TYPE=SSCam

          Falls weitere Informationen zu Geräte-Spezifikationen benötigt werden, bitte "get <name> versionNotes 3" ausführen.

        • diffAccept [+-]<Schwellenwert>

          diffAccept legt für die Funktion diffValue fest, bis zu welchem <Schwellenwert> eine Werte-Differenz zwischen zwei unmittelbar aufeinander folgenden Datensätzen akzeptiert werden.
          Wird dem Schwellenwert +- (optional) vorangestellt, werden sowohl positive als auch negative Differenzen ausgewertet.

          (default: 20, nur positive Differenzen zwischen Vorgänger und Nachfolger)

            Beispiel:
            attr diffAccept +-10000

          Bei Schwellenwertüberschreitungen wird das Reading diff_overrun_limit_<Schwellenwert> erstellt.
          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 Differenz zwischen dem ersten Datensatz mit einem Wert von 0.0340 zum nächsten Wert 13.3440 ist untypisch hoch 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.

        • dumpComment
          Benutzer spezifischer Kommentar, welcher im Kopf der durch "dumpMyQL clientSide" erzeugten Datei eingetragen wird.

        • dumpCompress
          Wenn gesetzt, wird die durch "dumpMySQL" bzw. "dumpSQLite" erzeugte Datei anschließend komprimiert und die unkomprimierte Quellendatei gelöscht.

        • dumpDirLocal

            Zielverzeichnis für die Erstellung von Dumps mit "dumpMySQL clientSide" oder "dumpSQLite".
            Durch Setzen dieses Attributes wird die interne Versionsverwaltung aktiviert. In diesem Verzeichnis werden Backup Dateien gesucht und gelöscht wenn die gefundene Anzahl den Attributwert "dumpFilesKeep" überschreitet. Mit dem Attribut wird ebenfalls ein lokal gemountetes Verzeichnis "dumpDirRemote" (bei dumpMySQL serverSide) DbRep bekannt gemacht.
            (default: {global}{modpath}/log/)

            Beispiel:
            attr <Name> dumpDirLocal /sds1/backup/dumps_FHEM/

        • dumpDirRemote

            Zielverzeichnis für die Erstellung von Dumps mit "dumpMySQL serverSide".
            (default: das Home-Dir des MySQL-Servers auf dem MySQL-Host)

        • dumpMemlimit - erlaubter Speicherverbrauch für das Dump SQL-Script zur Generierungszeit (default: 100000 Zeichen). Bitte den Parameter anpassen, falls es zu Speicherengpässen und damit verbundenen Performanceproblemen kommen sollte.

        • dumpSpeed - Anzahl der abgerufenen Zeilen aus der Quelldatenbank (default: 10000) pro Select durch "dumpMySQL ClientSide". Dieser Parameter hat direkten Einfluß auf die Laufzeit und den Ressourcenverbrauch zur Laufzeit.

        • dumpFilesKeep

            Die integrierte Versionsverwaltung belässt die angegebene Anzahl Backup Dateien im Backup Verzeichnis.
            Die Versionsverwaltung muß durch Setzen des Attributs "dumpDirLocal" eingeschaltet sein.
            Sind mehr (ältere) Backup Dateien vorhanden, werden diese gelöscht nachdem ein neues Backup erfolgreich erstellt wurde. Das globale Attribut "archivesort" wird berücksichtigt.
            (default: 3)

        • executeAfterProc

          Es kann ein FHEM-Kommando oder Perl Code angegeben werden der nach der Befehlsabarbeitung ausgeführt werden soll.
          Perl Code ist in {...} einzuschließen. Es stehen die Variablen $hash (Hash des DbRep Devices) und $name (Name des DbRep-Devices) zur Verfügung.

            Beispiel:

            attr <name> executeAfterProc set og_gz_westfenster off;
            attr <name> executeAfterProc {adump ($name)}

            # "adump" ist eine in 99_myUtils definierte Funktion.
            sub adump {
                my ($name) = @_;
                my $hash   = $defs{$name};
                # die eigene Funktion, z.B.
                Log3($name, 3, "DbRep $name -> Dump ist beendet");
            
                return;
            }
            
        • executeBeforeProc

          Es kann ein FHEM-Kommando oder Perl Code angegeben werden der vor der Befehlsabarbeitung ausgeführt werden soll.
          Perl Code ist in {...} einzuschließen. Es stehen die Variablen $hash (Hash des DbRep Devices) und $name (Name des DbRep-Devices) zur Verfügung.

            Beispiel:

            attr <name> executeBeforeProc set og_gz_westfenster on;
            attr <name> executeBeforeProc {bdump ($name)}

            # "bdump" ist eine in 99_myUtils definierte Funktion.
            sub bdump {
                my ($name) = @_;
                my $hash   = $defs{$name};
                # die eigene Funktion, z.B.
                Log3($name, 3, "DbRep $name -> Dump startet");
            
                return;
            }
            
        • expimpfile </Pfad/Filename> [MAXLINES=<lines>] - Pfad/Dateiname für Export/Import in/aus einem File.

          Optional kann über den Parameter "MAXLINES" die maximale Anzahl von Datensätzen angegeben werden, die in ein File exportiert werden. In diesem Fall werden mehrere Files mit den Extensions "_part1", "_part2", "_part3" usw. erstellt.
          Der Dateiname kann Platzhalter enthalten die gemäß der nachfolgenden Tabelle ersetzt werden. Weiterhin können %-wildcards der POSIX strftime-Funktion des darunterliegenden OS enthalten sein (siehe auch strftime Beschreibung).

            %L : wird ersetzt durch den Wert des global logdir Attributs
            %TSB : wird ersetzt durch den (berechneten) Wert des Starttimestamps der Datenselektion
            Allgemein gebräuchliche POSIX-Wildcards sind:
            %d : Tag des Monats (01..31)
            %m : Monat (01..12)
            %Y : Jahr (1970...)
            %w : Wochentag (0..6); beginnend mit Sonntag (0)
            %j : Tag des Jahres (001..366)
            %U : Wochennummer des Jahres, wobei Wochenbeginn = Sonntag (00..53)
            %W : Wochennummer des Jahres, wobei Wochenbeginn = Montag (00..53)

            Beispiele:
            attr <name> expimpfile /sds1/backup/exptest_%TSB.csv
            attr <name> expimpfile /sds1/backup/exptest_%Y-%m-%d.csv

          Zur POSIX Wildcardverwendung siehe auch die Erläuterungen zum Filelog Modul.

        • fastStart - Normalerweise verbindet sich jedes DbRep-Device beim FHEM-Start kurz mit seiner Datenbank um benötigte Informationen abzurufen und das Reading "state" springt bei Erfolg auf "connected". Ist dieses Attribut gesetzt, erfolgt die initiale Datenbankverbindung erst dann wenn das DbRep-Device sein erstes Kommando ausführt.
          Das Reading "state" verbleibt nach FHEM-Start solange im Status "initialized".
          (default: 1 für TYPE Client)

        • fetchMarkDuplicates - Markierung von mehrfach vorkommenden Datensätzen im Ergebnis des "fetchrows" Kommandos

        • fetchRoute [descent | ascent] - bestimmt die Leserichtung des fetchrows-Befehl.

            descent - die Datensätze werden absteigend gelesen (default). Wird die durch das Attribut "limit" festgelegte Anzahl der Datensätze überschritten, werden die neuesten x Datensätze angezeigt.

            ascent - die Datensätze werden aufsteigend gelesen. Wird die durch das Attribut "limit" festgelegte Anzahl der Datensätze überschritten, werden die ältesten x Datensätze angezeigt.


        • fetchValueFn - Der angezeigte Wert des Datenbankfeldes VALUE kann vor der Erstellung des entsprechenden Readings geändert werden. Das Attribut muss eine Perl Funktion eingeschlossen in {} enthalten.
          Der Wert des Datenbankfeldes VALUE wird in der Variable $VALUE zur Verfügung gestellt.

            Beispiel:
            attr <name> fetchValueFn { $VALUE =~ s/^.*Used:\s(.*)\sMB,.*/$1." MB"/e }
            # Von einer langen Ausgabe wird ein spezifisches Zeichenmuster extrahiert und als VALUE anstatt der gesamten Zeile im Reading angezeigt.


        • ftpUse - FTP Transfer nach einem Dump wird eingeschaltet (ohne SSL Verschlüsselung). Das erzeugte Datenbank Backupfile wird non-blocking zum angegebenen FTP-Server (Attribut "ftpServer") übertragen.

        • ftpUseSSL - FTP Transfer mit SSL Verschlüsselung nach einem Dump wird eingeschaltet. Das erzeugte Datenbank Backupfile wird non-blocking zum angegebenen FTP-Server (Attribut "ftpServer") übertragen.

        • ftpUser - User zur Anmeldung am FTP-Server nach einem Dump, default: "anonymous".

        • ftpDebug - Debugging der FTP Kommunikation zur Fehlersuche.

        • ftpDir - Verzeichnis des FTP-Servers in welches das File nach einem Dump übertragen werden soll (default: "/").

        • ftpDumpFilesKeep - Es wird die angegebene Anzahl Dumpfiles im <ftpDir> belassen (default: 3). Sind mehr (ältere) Dumpfiles vorhanden, werden diese gelöscht nachdem ein neuer Dump erfolgreich übertragen wurde.

        • ftpPassive - setzen wenn passives FTP verwendet werden soll

        • ftpPort - FTP-Port, default: 21

        • ftpPwd - Passwort des FTP-Users, default nicht gesetzt

        • ftpServer - Name oder IP-Adresse des FTP-Servers zur Übertragung von Files nach einem Dump.

        • ftpTimeout - Timeout für eine FTP-Verbindung in Sekunden (default: 30).

        • limit - begrenzt die Anzahl der resultierenden Datensätze im select-Statement von "fetchrows", bzw. der anzuzeigenden Datensätze der Kommandos "delSeqDoublets adviceDelete", "delSeqDoublets adviceRemain" (default 1000). Diese Limitierung soll eine Überlastung der Browsersession und ein blockieren von FHEMWEB verhindern. Bei Bedarf entsprechend ändern bzw. die Selektionskriterien (Zeitraum der Auswertung) anpassen.

        • numDecimalPlaces - Legt die Anzahl der Nachkommastellen bei Readings mit numerischen Ergebnissen fest.
          Ausgenommen sind Ergebnisse aus userspezifischen Abfragen (sqlCmd).
          (default: 4)

        • optimizeTablesBeforeDump - wenn "1", wird vor dem Datenbankdump eine Tabellenoptimierung ausgeführt (default: 0). Dadurch verlängert sich die Laufzeit des Dump.

            Hinweis
            Die Tabellenoptimierung führt zur Sperrung der Tabellen und damit zur Blockierung von FHEM falls DbLog nicht im asynchronen Modus (DbLog-Attribut "asyncMode") betrieben wird !

        • reading - Abgrenzung der DB-Selektionen auf ein bestimmtes oder mehrere Readings sowie exkludieren von Readings. Mehrere Readings werden als Komma separierte Liste angegeben. Es können SQL Wildcard (%) verwendet werden.
          Wird dem Reading bzw. der Reading-Liste ein "EXCLUDE=" vorangestellt, werden diese Readings nicht inkludiert.
          Die Datenbankselektion wird als logische UND Verknüpfung aus "reading" und dem Attribut device ausgeführt.

            Beispiele:
            attr <name> reading etotal
            attr <name> reading et%
            attr <name> reading etotal,etoday
            attr <name> reading eto%,Einspeisung EXCLUDE=etoday
            attr <name> reading etotal,etoday,Ein% EXCLUDE=%Wirkleistung


        • readingNameMap

          Der Teil zwischen dem ersten und letzten doppelten Unterstrich ('__') des erstellten Readingnamens wird mit dem angegebenen String ersetzt.

        • readingPreventFromDel

          Komma separierte Liste von Readings die vor einer neuen Operation nicht gelöscht werden sollen.
          Die Readings können als regulärer Ausdruck angegeben werden.
          (default: state)

            Beispiel:
            attr <name> readingPreventFromDel .*Count.*,.*Summary1.*,.*Summary2.*

        • role

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

        • seqDoubletsVariance <positive Abweichung [negative Abweichung] [EDGE=negative|positive]>

          Akzeptierte Abweichung für das Kommando "set <name> delSeqDoublets".
          Der Wert des Attributs beschreibt die Abweichung bis zu der aufeinanderfolgende numerische Werte (VALUE) von Datensätzen als gleich angesehen werden sollen. Ist in "seqDoubletsVariance" nur ein Zahlenwert angegeben, wird er sowohl als positive als auch negative Abweichung verwendet und bilden den "Löschkorridor". Optional kann ein zweiter Zahlenwert für eine negative Abweichung, getrennt durch Leerzeichen, angegeben werden. Es sind immer absolute, d.h. positive Zahlenwerte anzugeben.
          Ist der Zusatz "EDGE=negative" angegeben, werden Werte an einer negativen Flanke (z.B. beim Wechel von 4.0 -> 1.0) nicht gelöscht auch wenn sie sich im "Löschkorridor" befinden. Entsprechendes gilt bei "EDGE=positive" für die positive Flanke (z.B. beim Wechel von 1.2 -> 2.8).

            Beispiele:
            attr <name> seqDoubletsVariance 0.0014
            attr <name> seqDoubletsVariance 1.45
            attr <name> seqDoubletsVariance 3.0 2.0
            attr <name> seqDoubletsVariance 1.5 EDGE=negative


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

        • showStatus - grenzt die Ergebnismenge des Befehls "get <name> dbstatus" ein. Es können SQL-Wildcard (%) verwendet werden.

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

        • showVariables - grenzt die Ergebnismenge des Befehls "get <name> dbvars" ein. Es können SQL-Wildcard (%) verwendet werden.

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

        • showSvrInfo - grenzt die Ergebnismenge des Befehls "get <name> svrinfo" ein. Es können SQL-Wildcard (%) verwendet werden.

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

        • showTableInfo

          Grenzt die Ergebnismenge des Befehls "get <name> tableinfo" ein. Es können SQL-Wildcard (%) verwendet werden.

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

        • sqlCmdHistoryLength

          Aktiviert mit einem Wert > 0 die Kommandohistorie von "sqlCmd" und legt die Anzahl der zu speichernden SQL Statements fest.
          (default: 0)

        • sqlCmdVars

          Setzt die angegebene(n) SQL Session Variable(n) oder PRAGMA vor jedem mit sqlCmd ausgeführten SQL-Statement.

            Beispiel:
            attr <name> sqlCmdVars SET @open:=NULL, @closed:=NULL;
            attr <name> sqlCmdVars PRAGMA temp_store=MEMORY;PRAGMA synchronous=FULL;PRAGMA journal_mode=WAL;


        • sqlFormatService

          Über einen Online-Dienst kann eine automatisierte Formatierung von SQL-Statements aktiviert werden.
          Diese Möglichkeit ist insbesondere für komplexe SQL-Statements der Setter sqlCmd, sqlCmdHistory und sqlSpecial hilfreich um die Strukturierung und Lesbarkeit zu verbessern.
          Eine Internetverbindung wird benötigt und es sollte das globale Attribut dnsServer gesetzt sein.
          (default: none)

        • sqlResultFieldSep

          Legt den verwendeten Feldseparator im Ergebnis des Kommandos "set ... sqlCmd" fest.
          (default: "|")

        • sqlResultFormat - legt die Formatierung des Ergebnisses des Kommandos "set <name> sqlCmd" fest. Mögliche Optionen sind:

            separated - die Ergebniszeilen werden als einzelne Readings fortlaufend generiert. (default)

            mline - das Ergebnis wird als Mehrzeiler im Reading SqlResult dargestellt.

            sline - das Ergebnis wird als Singleline im Reading SqlResult dargestellt. Satztrenner ist"]|[".

            table - das Ergebnis wird als Tabelle im Reading SqlResult dargestellt.

            json - erzeugt das Reading SqlResult als JSON-kodierten Hash. Jedes Hash-Element (Ergebnissatz) setzt sich aus der laufenden Nummer des Datensatzes (Key) und dessen Wert zusammen.

            Die Weiterverarbeitung des Ergebnisses kann z.B. mit der folgenden userExitFn in 99_myUtils.pm erfolgen:
                    sub resfromjson {
                      my ($name,$reading,$value) = @_;
                      my $hash   = $defs{$name};
            
                      if ($reading eq "SqlResult") {
                        # nur Reading SqlResult enthält JSON-kodierte Daten
                        my $data = decode_json($value);
            
                        foreach my $k (keys(%$data)) {
            
                          # ab hier eigene Verarbeitung für jedes Hash-Element
                          # z.B. Ausgabe jedes Element welches "Cam" enthält
                          my $ke = $data->{$k};
                          if($ke =~ m/Cam/i) {
                            my ($res1,$res2) = split("\\|", $ke);
                            Log3($name, 1, "$name - extract element $k by userExitFn: ".$res1." ".$res2);
                          }
                        }
                      }
                    return;
                    }
                    

        • timeYearPeriod <Monat>-<Tag> <Monat>-<Tag>
          Es wird eine jährliche Periode für die Datenbankselektion bestimmt. Die Jahresperiode wird dynamisch zur Ausführungszeit berechnet. Eine unterjährige Angabe ist nicht möglich.
          Dieses Attribut ist vor allem dazu gedacht Auswertungen synchron zu einer Abrechnungsperiode, z.B. der eines Energie- oder Gaslieferanten, anzufertigen.

            Beispiel:

            attr <name> timeYearPeriod 06-25 06-24

            Wertet die Datenbank in den Zeitgrenzen 25. Juni AAAA bis 24. Juni BBBB aus.
            Das Jahr AAAA bzw. BBBB wird in Abhängigkeit des aktuellen Datums errechnet.
            Ist das aktuelle Datum >= 25. Juni und <= 31. Dezember, dann ist AAAA = aktuelles Jahr und BBBB = aktuelles Jahr+1
            Ist das aktuelle Datum >= 01. Januar und <= 24. Juni, dann ist AAAA = aktuelles Jahr-1 und BBBB = aktuelles Jahr


        • timestamp_begin - der zeitliche Beginn für die Datenselektion
          Das Format von Timestamp ist "YYYY-MM-DD HH:MM:SS". Für die Attribute "timestamp_begin", "timestamp_end" kann ebenso eine der folgenden Eingaben verwendet werden. Dabei wird das timestamp-Attribut dynamisch belegt:

            current_year_begin : entspricht "<aktuelles Jahr>-01-01 00:00:00"
            current_year_end : entspricht "<aktuelles Jahr>-12-31 23:59:59"
            previous_year_begin : entspricht "<vorheriges Jahr>-01-01 00:00:00"
            previous_year_end : entspricht "<vorheriges Jahr>-12-31 23:59:59"
            current_month_begin : entspricht "<aktueller Monat erster Tag> 00:00:00"
            current_month_end : entspricht "<aktueller Monat letzter Tag> 23:59:59"
            previous_month_begin : entspricht "<Vormonat erster Tag> 00:00:00"
            previous_month_end : entspricht "<Vormonat letzter Tag> 23:59:59"
            current_week_begin : entspricht "<erster Tag der akt. Woche> 00:00:00"
            current_week_end : entspricht "<letzter Tag der akt. Woche> 23:59:59"
            previous_week_begin : entspricht "<erster Tag Vorwoche> 00:00:00"
            previous_week_end : entspricht "<letzter Tag Vorwoche> 23:59:59"
            current_day_begin : entspricht "<aktueller Tag> 00:00:00"
            current_day_end : entspricht "<aktueller Tag> 23:59:59"
            previous_day_begin : entspricht "<Vortag> 00:00:00"
            previous_day_end : entspricht "<Vortag> 23:59:59"
            next_day_begin : entspricht "<nächster Tag> 00:00:00"
            next_day_end : entspricht "<nächster Tag> 23:59:59"
            current_hour_begin : entspricht "<aktuelle Stunde>:00:00"
            current_hour_end : entspricht "<aktuelle Stunde>:59:59"
            previous_hour_begin : entspricht "<vorherige Stunde>:00:00"
            previous_hour_end : entspricht "<vorherige Stunde>:59:59"

        • timestamp_end - das zeitliche Ende für die Datenselektion. Wenn nicht gesetzt wird immer die aktuelle Datum/Zeit-Kombi für das Ende der Selektion eingesetzt.
          Das Format von Timestamp ist "YYYY-MM-DD HH:MM:SS". Für die Attribute "timestamp_begin", "timestamp_end" kann ebenso eine der folgenden Eingaben verwendet werden. Dabei wird das timestamp-Attribut dynamisch belegt:

            current_year_begin : entspricht "<aktuelles Jahr>-01-01 00:00:00"
            current_year_end : entspricht "<aktuelles Jahr>-12-31 23:59:59"
            previous_year_begin : entspricht "<vorheriges Jahr>-01-01 00:00:00"
            previous_year_end : entspricht "<vorheriges Jahr>-12-31 23:59:59"
            current_month_begin : entspricht "<aktueller Monat erster Tag> 00:00:00"
            current_month_end : entspricht "<aktueller Monat letzter Tag> 23:59:59"
            previous_month_begin : entspricht "<Vormonat erster Tag> 00:00:00"
            previous_month_end : entspricht "<Vormonat letzter Tag> 23:59:59"
            current_week_begin : entspricht "<erster Tag der akt. Woche> 00:00:00"
            current_week_end : entspricht "<letzter Tag der akt. Woche> 23:59:59"
            previous_week_begin : entspricht "<erster Tag Vorwoche> 00:00:00"
            previous_week_end : entspricht "<letzter Tag Vorwoche> 23:59:59"
            current_day_begin : entspricht "<aktueller Tag> 00:00:00"
            current_day_end : entspricht "<aktueller Tag> 23:59:59"
            previous_day_begin : entspricht "<Vortag> 00:00:00"
            previous_day_end : entspricht "<Vortag> 23:59:59"
            next_day_begin : entspricht "<nächster Tag> 00:00:00"
            next_day_end : entspricht "<nächster Tag> 23:59:59"
            current_hour_begin : entspricht "<aktuelle Stunde>:00:00"
            current_hour_end : entspricht "<aktuelle Stunde>:59:59"
            previous_hour_begin : entspricht "<vorherige Stunde>:00:00"
            previous_hour_end : entspricht "<vorherige Stunde>:59:59"

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

            Beispiel:

            attr <name> timestamp_begin current_year_begin
            attr <name> timestamp_end current_year_end

            # Wertet die Datenbank in den Zeitgrenzen des aktuellen Jahres aus.

          Hinweis
          Wird das Attribut "timeDiffToNow" gesetzt, werden die eventuell gesetzten anderen Zeit-Attribute ("timestamp_begin","timestamp_end","timeYearPeriod") gelöscht. Das Setzen von "timestamp_begin" bzw. "timestamp_end" bedingt die Löschung von anderen Zeit-Attribute falls sie vorher gesetzt waren.

        • timeDiffToNow - der Selektionsbeginn wird auf den Zeitpunkt "<aktuelle Zeit> - <timeDiffToNow>" gesetzt. Die Timestampermittlung erfolgt dynamisch zum Ausführungszeitpunkt. Optional kann mit der Zusatzangabe "FullDay" der Selektionsbeginn und das Selektionsende auf Beginn / Ende der jeweiligen Selektionstage erweitert werden (wirkt nur wenn eingestellte Zeitdifferenz ist >= 1 Tag).

            Eingabeformat Beispiele:
            attr <name> timeDiffToNow 86400
            # die Startzeit wird auf "aktuelle Zeit - 86400 Sekunden" gesetzt
            attr <name> timeDiffToNow d:2 h:3 m:2 s:10
            # die Startzeit wird auf "aktuelle Zeit - 2 Tage 3 Stunden 2 Minuten 10 Sekunden" gesetzt
            attr <name> timeDiffToNow m:600
            # die Startzeit wird auf "aktuelle Zeit - 600 Minuten" gesetzt
            attr <name> timeDiffToNow h:2.5
            # die Startzeit wird auf "aktuelle Zeit - 2,5 Stunden" gesetzt
            attr <name> timeDiffToNow y:1 h:2.5
            # die Startzeit wird auf "aktuelle Zeit - 1 Jahr und 2,5 Stunden" gesetzt
            attr <name> timeDiffToNow y:1.5
            # die Startzeit wird auf "aktuelle Zeit - 1,5 Jahre gesetzt
            attr <name> timeDiffToNow d:8 FullDay
            # die Startzeit wird auf "aktuelle Zeit - 8 Tage gesetzt, der Selektionszeitraum wird auf Beginn / Ende der beteiligten Tage erweitert

          Sind die Attribute "timeDiffToNow" und "timeOlderThan" gleichzeitig gesetzt, wird der Selektionszeitraum zwischen diesen Zeitpunkten dynamisch kalkuliert.

        • timeOlderThan - das Selektionsende wird auf den Zeitpunkt "<aktuelle Zeit> - <timeOlderThan>" gesetzt. Dadurch werden alle Datensätze bis zu dem Zeitpunkt "<aktuelle Zeit> - <timeOlderThan>" berücksichtigt. Die Timestampermittlung erfolgt dynamisch zum Ausführungszeitpunkt. Optional kann mit der Zusatzangabe "FullDay" der Selektionsbeginn und das Selektionsende auf Beginn / Ende der jeweiligen Selektionstage erweitert werden (wirkt nur wenn eingestellte Zeitdifferenz ist >= 1 Tag).

            Eingabeformat Beispiele:
            attr <name> timeOlderThan 86400
            # das Selektionsende wird auf "aktuelle Zeit - 86400 Sekunden" gesetzt
            attr <name> timeOlderThan d:2 h:3 m:2 s:10
            # das Selektionsende wird auf "aktuelle Zeit - 2 Tage 3 Stunden 2 Minuten 10 Sekunden" gesetzt
            attr <name> timeOlderThan m:600
            # das Selektionsende wird auf "aktuelle Zeit - 600 Minuten" gesetzt
            attr <name> timeOlderThan h:2.5
            # das Selektionsende wird auf "aktuelle Zeit - 2,5 Stunden" gesetzt
            attr <name> timeOlderThan y:1 h:2.5
            # das Selektionsende wird auf "aktuelle Zeit - 1 Jahr und 2,5 Stunden" gesetzt
            attr <name> timeOlderThan y:1.5
            # das Selektionsende wird auf "aktuelle Zeit - 1,5 Jahre gesetzt
            attr <name> timeOlderThan d:8 FullDay
            # das Selektionsende wird auf "aktuelle Zeit - 8 Tage gesetzt, der Selektionszeitraum wird auf Beginn / Ende der beteiligten Tage erweitert

          Sind die Attribute "timeDiffToNow" und "timeOlderThan" gleichzeitig gesetzt, wird der Selektionszeitraum zwischen diesen Zeitpunkten dynamisch kalkuliert.

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

        • useAdminCredentials - Wenn gesetzt, wird ein zuvor mit "set <Name> adminCredentials" gespeicherter privilegierter User für bestimmte Datenbankoperationen verwendet.
          (nur gültig für Datenbanktyp MYSQL und DbRep-Typ "Client")

        • userExitFn - stellt eine Schnittstelle zur Ausführung eigenen Usercodes zur Verfügung.
          Grundsätzlich arbeitet die Schnittstelle ohne Eventgenerierung bzw. benötigt zur Funktion keinen Event. Die Schnittstelle kann mit folgenden Varianten verwendet werden.

            1. Aufruf einer Subroutine, z.B. in 99_myUtils.pm

            Die aufzurufende Subroutine wird in 99_myUtils.pm nach folgendem Muster erstellt:
            sub UserFunction {
              my $name    = shift;             # der Name des DbRep-Devices
              my $reading = shift;             # der Namen des erstellen Readings
              my $value   = shift;             # der Wert des Readings
              my $hash    = $defs{$name};
              ...
              # z.B. übergebene Daten loggen
              Log3 $name, 1, "UserExitFn $name called - transfer parameter are Reading: $reading, Value: $value " ;
              ...
            return;
            }
            
            Im Attribut wird die Subroutine und optional ein Reading:Value Regex als Argument angegeben. Ohne diese Angabe werden alle Wertekombinationen als "wahr" gewertet und an die Subroutine übergeben (entspricht .*:.*).

              Beispiel:
              attr userExitFn UserFunction Meter:Energy.*
              # "UserFunction" ist die Subroutine in 99_myUtils.pm.

            Die Regexprüfung nach der Erstellung jedes Readings. Ist die Prüfung wahr, wird die angegebene Funktion aufgerufen.

            2. direkte Eingabe von eigenem Code

            Der eigene Code wird in geschweifte Klammern eingeschlossen. Der Aufruf des Codes erfolgt nach der Erstellung jedes Readings. Im Code stehen folgende Variablen für eine Auswertung zur Verfügung:

            • $NAME - der Name des DbRep-Devices
            • $READING - der Namen des erstellen Readings
            • $VALUE - der Wert des Readings

              Beispiel:
              {
                if ($READING =~ /PrEnergySumHwc1_0_value__DIFF/) {
                  my $mpk  = AttrVal($NAME, 'Multiplikator', '0');
                  my $tarf = AttrVal($NAME, 'Tarif', '0');                                   # Kosten €/kWh
                  my $m3   = sprintf "%.3f", $VALUE/10000 * $mpk;                            # verbrauchte m3
                  my $kwh  = sprintf "%.3f", $m3 * AttrVal($NAME, 'Brennwert_kWh/m3', '0');  # Umrechnung m3 -> kWh
                  my $cost = sprintf "%.2f", $kwh * $tarf;
              
                  my $hash = $defs{$NAME};
              
                  readingsBulkUpdate ($hash, 'gas_consumption_m3',   $m3);
                  readingsBulkUpdate ($hash, 'gas_consumption_kwh', $kwh);
                  readingsBulkUpdate ($hash, 'gas_costs_euro',     $cost);
                }
              }
              
              # Es werden die Readings gas_consumption_m3, gas_consumption_kwh und gas_costs_euro berechnet und im DbRep-Device erzeugt.


        • valueFilter - Regulärer Ausdruck (REGEXP) zur Filterung von Datensätzen innerhalb bestimmter Funktionen. Der REGEXP wird auf ein bestimmtes Feld oder den gesamten selektierten Datensatz (inkl. Device, Reading usw.) angewendet. Bitte beachten sie die Erläuterungen zu den entsprechenden Set-Kommandos. Weitere Informationen sind mit "get <name> versionNotes 4" verfügbar.

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

      Zusätzlich werden folgende Readings erzeugt (Auswahl):

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

        • errortext - Grund eines Fehlerstatus

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

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

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

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

        • SqlResult - Ergebnis des letzten sqlCmd-Kommandos. Die Formatierung erfolgt entsprechend des sqlResultFormat Attributes

        • sqlCmd - das letzte ausgeführte sqlCmd-Kommando


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

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

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

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

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

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

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

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

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

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

        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', '') eq 'running' ? 'renaming' : ReadingsVal($name, 'state', ''). ' »; ProcTime: '.ReadingsVal($name, 'sql_processing_time', '').' sec'}
        attr Rep.Agent timeout 86400

      Hinweis:
      Obwohl die Funktion selbst non-blocking ausgelegt ist, sollte das zugeordnete DbLog-Device im asynchronen Modus betrieben werden um ein Blockieren von FHEMWEB zu vermeiden (Tabellen-Lock).

    DoorBird

      Das DoorBird Modul ermöglicht die Komminikation zwischen der DoorBird Interkommunikationseinheit und dem fhem Automationssystem basierend auf der API des Herstellers her.
      Für den vollen Funktionsumfang muss sichergestellt werden, dass das Setting "API-Operator" in der DoorBird Android/iPhone - APP unter "Administration -> User -> Edit -> Permission -> API-Operator" gesetzt ist. Die folgenden Software - Pakete müssen noch zusätzlich installiert werden, sofern dies nicht schon durch andere Module erfolgt ist. (Die Beispiele sind auf dem Raspberry JESSIE gestestet):

    • sudo apt install sox
    • sudo apt install libsox-fmt-all
    • sudo apt install libsodium-dev
    • sudo apt install gstreamer1.0-tools
    • sudo cpan install Crypt::Argon2
    • sudo cpan install Sodium::FFI
    • sudo cpan install IO::String module
    • sudo cpan install IO::Socket

    • Define
        define <name> DoorBird <IPv4-address> <Username> <Passwort>
          <name> :
      Der Name des Device unter fhem. Beispiel: "myDoorBird".
          <IPv4-Addresse> :
      Eine gültige IPv4 - Addresse der DoorBird-Anlage. Ggf. muss man im Router nach der entsprechenden DHCP Addresse suchen, die der DoorBird Anlage vergeben wurde.
          <Username> :
      Der Username zum einloggen auf der DoorBird Anlage.
          <Passwort> :
      Das Passwort zum einloggen auf der DoorBird Anlage.

      Set
        Die Set - Funktion ist in der lage auf der DoorBird - Anlage die folgenden Einstellungen vorzunehmen bzw. zu de-/aktivieren:
      • set Light_On : Schaltet das IR lichht der DoorBird Anlage ein. Das IR Licht schaltet sich automatisch nach der in der DoorBird - Anlage vorgegebenen Default Zeit wieder aus.
      • set Live_Audio <on:off> : Aktiviert/Deaktiviert den Live Audio Stream der DoorBird - Anlage Ein oder Aus und wechselt den direkten link in dem versteckten Reading .AudioURL.
      • set Live_Video <on:off> : Aktiviert/Deaktiviert den Live Video Stream der DoorBird - Anlage Ein oder Aus und wechselt den direkten link in dem versteckten Reading .VideoURL.
      • set Open_Door <Value> : Aktiviert das Relais der DoorBird - Anlage mit dessen Adresse. Die Liste der installierten Relais werden mit der Initialisierung der Parameter importiert.
      • set OpsMode<Value>DoorbellAudio : Eine Auswahl der Audio Dateien die im Unterverzeichnis abgelegt sind welches durch das Attribut "AudioFileDir" definert ist. Diese Datei wird entsprechend konvertiert und an den DoorBird gesendet und im abgespielt sobald die Klingeltaste betätigt wird.
      • set OpsMode<Value>DoorbellRelay : Eine Auswahl der installierten Relays die aktiviert weerden, sobald die Klingeltaste betätigt wird.
      • set OpsMode<Value>MotionAudio : Wine Auswahl der Audio Dateien die im Unterverzeichnis abgelegt sind welches durch das Attribut "AudioFileDir" definert ist. Diese Datei wird entsprechend konvertiert und an den DoorBird gesendet und im abgespielt sobald der Bewegungssensor getriggert wird.
      • set OpsMode<Value>MotionRelay : Eine Auswahl der installierten Relays die aktiviert weerden, sobald der Bewegungssensor getriggert wird.
      • set Receive_Audio <Path> : Empfängt eine Audio-Datei und speichert diese. Es benötigt einen Dateipfad zu der Audio-Datei zu dem der User "fhem" Schreibrechte braucht (z.B.: /opt/fhem/audio).
      • set Restart : Sendet das Kommando zum rebooten der DoorBird - Anlage.
      • set Transmit_Audio <Path> : Konvertiert die angegebene Audio-Datei und sendet diese zur Ausgabe an die DoorBird - Anlage. Es benötigt einen Dateipfad zu der Audio-Datei zu dem der User "fhem" Schreibrechte braucht (z.B.: /opt/fhem/audio).

      Get
        Die Get - Funktion ist in der lage von der DoorBird - Anlage die folgenden Informationen und Daten zu laden:
      • get History_Request : Lädt die Bilder der letzten Ereignisse durch die Türklingel und dem Bewegungssensor herunter. (Siehe auch Attribut MaxHistory)
      • get Image_Request : Lädt das gegenwärtige Bild der DoorBird - Kamera herunter.
      • get Video_Request <Value> : Lädt das gegenwärtige Video der DoorBird - Kamera für die gegebene Zeit in Sekunden herunter.
      • get Info_Request : Lädt das interne Setup (Firmware Version, Relais Konfiguration etc.) herunter. Die übermittelten Relais-Adressen werden als Option für das Kommando Open_Door verwendet.

      Attributes
        Die folgenden Attribute können mit dem DoorBird Module neben den globalen Attributen wie room verwednet werden.
        • disable : Stoppt das Gerät von weiteren Reaktionen auf die von der DoorBird ß Anlage ausgesendeten UDP - Datageramme
          Der Default Wert ist 0 = aktiviert
        • KeepAliveTimeout : Timeout in Sekunden ohne "still-alive" - UDP Datagramme bevor der Status des Gerätes auf "disconnected" gesetzt wird.
          Der Default Wert ist 30s
        • MaxHistory : Anzahl der herunterzuladenden Bilder aus dem Historien-Archiv sowohl für Ereignisse seitens der Türklingel als auch für den Bewegungssensor.
          Der Default Wert ist "50" = Maximum.
        • PollingTimeout : Timeout in Sekunden before der Download-Versuch aufgrund fehlender Antwort seitens der DoorBird-Anlage terminiert wird. Eine Adjustierung mag notwendig sein, sobald Netzwerk-Latenzen aufteten.
          Der Default-Wert ist 10s.
        • UdpPort : Port Nummer auf welcher das DoorBird - Modul nach den UDP Datagrammen der DoorBird - Anlage hören soll. Die Ports sind von der Firmware vorgegeben.
          Der Default Port ist 6524
        • SessionIdSec : Zeit in Sekunden nach welcher die Session Id erneuert werden soll. Diese ist für die sichere Übertragung der Video und Audio Verbindungsdaten notwendig. Die DoorBird-Unit devalidiert die Session Id automatisch nach 10min. Für den Fall, dass die DoorBird Kamera an ein Überwachungssystem angebunden werden soll, muss diese Funktion ausser Betrieb genommen werden indem man den Wert auf 0 setzt 0.
          Der Default Wert ist 540s = 9min.
        • AudioFileDir : Der relative (z.B. "audio") oder absolute (z.B. "/mnt/NAS/audio") Verzeichnispfad mit oder ohne nachfolgendem Pfadzeichen "/" in welchen die Audio-Dateien abgelegt sind.
          Der Default Wert ist "" = deaktiviert
        • AudioFileDirMaxSize : Die maximale Größe des Unterverzeichnisses für die Audio-Dateien in Megabyte (MB). Beim Erreichen dieses Wertes, werden die ältesten Dateien automatisch gelöscht.
          Der Default Wert ist 50 = 50MB
        • ImageFileDir : Der relative (z.B. "images") oderr absolute (z.B. "/mnt/NAS/images") Verzeichnispfad mit oder ohne nachfolgendem Pfadzeichen "/" in welchen die Video-Dateien gespeichert werden sollen.
          Der Default Wert ist "" = deaktiviert
        • ImageFileDirMaxSize : Die maximale Größe des Unterverzeichnisses für die Image-Dateien in Megabyte (MB). Beim Erreichen dieses Wertes, werden die ältesten Dateien automatisch gelöscht.
          Der Default Wert ist 50 = 50MB
        • VideoFileDir : Der relative (z.B. "images") oder absolute (z.B. "/mnt/NAS/images") Verzeichnispfad mit oder ohne nachfolgendem Pfadzeichen "/" in welchen die Bild-Dateien gespeichert werden sollen.
          Der Default Wert ist "" = deaktiviert
        • VideoFileDirMaxSize : Die maximale Größe des Unterverzeichnisses für die Video-Dateien in Megabyte (MB). Beim Erreichen dieses Wertes, werden die ältesten Dateien automatisch gelöscht.
          Der Default Wert ist 50 = 50MB
        • VideoFileFormat : Das Dateiformat für die Videodatei
          Der Default Wert ist "mpeg"
        • VideoDurationDoorbell : Zeit in Sekunden für wie lange das Video im Falle eines Klingel Events aufgenommen werden soll.
          Der Default Wert ist 0 = deaktiviert
        • VideoDurationMotion : Zeit in Sekunden für wie lange das Video im Falle eines Bewegungssensor Events aufgenommen werden soll.
          Der Default Wert ist 0 = deaktiviert
        • EventReset : Zeit in Sekunden nach welcher die Readings für die Events (z.B. "doorbell_button", "motions sensor", "keypad")wieder auf "idle" gesetzt werden sollen.
          Der Default Wert ist 5s
        • WaitForHistory : Zeit in Sekunden die das Modul auf das Bereitstellen eines korrespondierenden History Bildes zu einem Event warten soll. Muss ggf. adjustiert werden, sobald deutliche Unterschiede in der Systemzeit zwischen fhemßServer und DoorBird Station vorliegen.
          Der Default Wert ist 7s
        • OpsModeList : Eine durch Leerzeichen getrennte Liste von Namen für Operationszustände (e.g. "Normal Party Feuer" auf diese der DoorBird automatisch bei Events reagiert.
          Der Default Wert ist "" = deaktiviert
        • HistoryFilePath : Erstellt Dateipfade zu den letzten Bildern und Videos um sie in den User Interfaces direkt anzuzeigen (e.g. fhem ftui Widget "Image")
          Der Default Wert ist "0" = disabled

    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

    EGPM Steckdose

    [EN DE]
      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
      • readingFnAttributes

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

    EGPM2LAN

    [EN DE]

      Define
        define <name> EGPM2LAN <IP-Address>

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

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

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

        set <name> password [<mein-passwort>]
        Speichert das Passwort verschlüsselt in FHEM ab. Zum Entfernen eines vorhandenen Passworts den Befehl ohne Parameter aufrufen.
        Vor 04/2017 wurde das Passwort im Klartext gespeichert und mit dem DEFINE-Command übergeben.

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

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

      Get
        get <name> state
        Gibt einen Text in diesem Format aus: "1: off 2: on 3: off 4: off" oder enthält die letzte Fehlermeldung.

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



      Beispiel:
        define sleiste EGPM2LAN 10.192.192.20
        set sleiste password SecretGarden
        set sleiste on 1

    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

    [EN DE]
      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

    ESCVP21net

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

    ESPEInk

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

    ESPEasy

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

    ElectricityCalculator

    [EN DE]
      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 dem kontinuierlich wachsenden Zählerstand 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 für Readings welche im CalculatorDevice gespeichert wurden und zum update des Offsets zwischen den Zählern.
        Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit set - Befehl gesetzt werden.
        Der Befehl "SyncCounter" errechnet und update den Offset. Hierbei einfach den Wert des mechanischen Zählers eingeben.

      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).
        • DecimalPlace : Ein Wert der vorgegebenen Auswahlliste von 3 bis 7.
          Es definiert die Genauigkeit in Nachkommastellen mit welcher die Ergebnisse berechnet werden.Der Standard-Wert ist 3 = 0,001.

      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

    EleroSwitch

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

    ElsnerWS

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

    EnOcean

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

    EseraAnalogInOut

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

    EseraCount

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

    EseraDigitalInOut

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

    EseraDimmer

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

    EseraIButton

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

    EseraMulti

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

    EseraOneWire

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

    EseraShutter

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

    EseraTemp

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

    FBAHA

    [EN DE]

      Achtung: ab Fritz!OS 6.90 ist der benötigte Dienst deaktiviert, bitte den Nachfolger FBAHAHTTP verwenden.
      Dieses Modul verbindet sich mit dem AHA (AVM Home Automation) Server auf einem FRITZ!Box. Es dient als "physikalisches" Gegenstück zum FBDECT Modul. Als erstes muss der Zugang zu diesen Daten in der FRITZ!Box Web-Oberfläche aktiviert werden.

      Define
        define <name> FBAHA <device>

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

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

      Define
        define <name> FBDECT [<FBAHAname>:]<id> props

        Beispiel:
          define lampe FBDECT 16 switch,powerMeter
        Achtung:FBDECT Einträge werden normalerweise per autocreate angelegt. Falls sie die zugeordnete FBAHA oder FBAHAHTTP Instanz umbenennen, dann muss die FBDECT Definition manuell angepasst werden.


      Set
      • on/off
        Gerät einschalten bzw. ausschalten.
      • desired-temp <value>
        Gewünschte Temperatur beim Comet DECT setzen. 7.5 entspricht aus, 28.5 bedeutet an.
      • boost <Dauer>
        Versetzt den Comet/Fritz DECT 301 in boost Modus für Dauer in Sekunden. 0 deaktiviert den boost Modus.
      • windowopen <Dauer>
        Versetzt den Comet/Fritz DECT 301 in windowopen Modus für Dauer in Sekunden. 0 deaktiviert den windowopen Modus.
      • dim <value>
        Helligkeit oder Rolladenstand (zwischen 0 und 100, in Prozent) setzen.
      • open/close/stop
        Rollade öffnen, schließen oder stoppen.
      • Die set extensions werden unterstützt.
      • msgInterval <sec>
        Anzahl der Sekunden zwischen den Sensornachrichten (nur mit FBAHA als IODev).
      • color <colorname>
        Farbname für Farbbirnen: rot, orange, gelb, grassgrün, grün, türkis, cyan, himmelblau, blau, violett, magenta, rosa . Wenn die Glühbirne im "white" Modus war, wechselt sie in den Modus "color"
      • colortemperature <Temperatur>
        Farbtemperatur in Kelvin wenn > 2000 sonst mireds. Da die Fritzbox nur vordefinierte Werte unterstützt, wird sie auf den nächstliegenden unterstützten Wert in Kelvin zurückgesetzt (um die unterstützte Werte zu kennen, set <devicename> raw getcolordefaults ausführen). Wenn die Glühbirne im "color" Modus war, wechselt sie in den Modus "white", ausser wenn die in mireds eingegebene Temperatur zu keine Aenderung der Temperatur in Kelvin führt.
      • sat_index <index>
        Index von 1 bis 3 der akzeptierten Sättigungsstufen. Setzt die Glühbirne auf die entsprechende Sättigung für die eingestellte Farbe. Wenn die Glühbirne im "white" Modus war, wechselt sie in den Modus "color"
      • hue <huevalue>
        Hue Wert von 0 bis 359. Da die Fritzbox nur vordefinierte Werte unterstützt, wird sie auf den nächstliegenden unterstützten Wert zurückgesetzt (um die unterstützte Werte zu kennen, set <devicename> raw getcolordefaults ausführen). Die Sättigung wird auf die für die Farbe und sat_index akzeptierte Sättigung geändert. Wenn die Glühbirne im "white" Modus war, wechselt sie in den Modus "color"
      • saturation <Wert>
        Farbsättigung von 0 bis 255. Da die Fritzbox nur vordefinierte Werte unterstützt, wird sie auf den nächstliegenden unterstützten Wert zurückgesetzt (um die unterstützte Werte zu kennen, set <devicename> raw getcolordefaults ausführen). Wenn die Glühbirne im "white" Modus war, wechselt sie in den Modus "color"
      • raw ...
        Dient zum debuggen.
        Sendet switchcmd=..., weitere Parameter werden per & zusammengeklebt.

      Get
      • devInfo
        meldet Geräte-Informationen (nur mit FBAHA als IODev)

      Attribute
      • IODev
      • disable
      • disabledForIntervals
      • 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

    [EN DE]
      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
      • removeItem <index> - löscht eine spezifische Zeile aus der Anrufliste (Zeilennummer)

      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 oder create-readings aktiviert 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)

      • contactImageDirectory <Verzeichnis>
      • Sofern gesetzt, nutzt FB_CALLLIST dieses Verzeichnis um Kontaktbilder für jeden Anruf anzuzeigen. Diese Bilder werden in der Spalte "image" dargestellt, welche dazu explizit in dem Attribut visible-columns konfiguriert sein muss. Wenn in diesem Verzeichnis eine Bilddatei mit der externen Nummer als Dateiname (z.B. 0123456789.jpg oder 0345678901.gif) enthalten ist, wird diese als Kontaktbild in der Anrufliste verwendet.

        Unterstützte Dateiformate: JPEG, GIF, PNG, BMP

        Standardmäßig ist kein Verzeichnis vorkonfiguriert. Daher werden standardmäßig keine Kontaktbilder angezeigt.

      • contactDefaultImage <Dateiname>
      • Sofern Kontaktbilder verwendet werden (via Attribut contactImageDirectory) und kein zugehöriges Kontaktbild existiert oder die externe Rufnummer unbekannt ist, wird die konfigurierte Datei (z.B. unknown.jpg) als Kontaktbild verwendet. Die Datei muss sich dabei in dem Verzeichnis befinden, welches via Attribut contactImageDirectory konfiguriert ist.

        Wenn nicht konfiguriert, werden keine Kontaktbilder in solchen Fällen angezeigt.

      • disable 0,1,2,3
      • Optionales Attribut zur Deaktivierung der Anrufliste. Sofern aktiviert, werden keine Anruf-Events mehr verarbeitet und die Liste nicht weiter aktualisiert. Je nach gesetztem Wert verhält sich FB_CALLLIST unterschiedlich.

        Mögliche Werte:
        • 0 => Anrufliste ist aktiv, verarbeitet Events und aktualisiert die Darstellung kontinuierlich.
        • 1 => Events werden NICHT verarbeitet. Die Darstellung wird NICHT aktualisiert (bleibt wie sie ist).
        • 2 => Events werden NICHT verarbeitet. Die Darstellung zeigt nur "disabled" an (keine Einträge mehr).
        • 3 => Events werden NICHT verarbeitet. Die Liste wird NICHT mehr angezeigt.

        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 gleich 1, ausgesetzt. Statt HH:MM kann man auch HH oder HH:MM:SS angeben.

        Um einen Intervall um Mitternacht zu spezifizieren, muss man zwei einzelne Intervalle angeben, z.Bsp.:
        23:00-24:00 00:00-01:00
        Standardwert ist nicht gesetzt (dauerhaft aktiv)

      • processEventsWhileDisabled 0,1
      • Sofern gesetzt, werden Events weiterhin verarbeitet, selbst wenn FB_CALLLIST deaktiviert ist (siehe disabled und disabledForIntervals). Sobald FB_CALLLIST wieder aktiviert wurde, stehen sämtliche Anrufe, während FB_CALLLIST deaktiviert war, zur Verfügung.

        Mögliche Werte: 0 => keine Eventverabeitung wenn FB_CALLLIST deaktiviert ist, 1 => Events werden trotz deaktiviert FB_CALLLIST intern weiterhin verarbeitet.
        Standardwert ist 0 (keine Eventverabeitung wenn deaktiviert)

      • 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..40
      • 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,image,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,image,name,number,internal,external,connection,duration
        Standardwert ist "row,state,timestamp,name,number,internal,external,connection,duration" (Anzeige aller Spalten bis auf "image", da diese erst konfiguriert werden muss)


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

        Generell werden folgende Readings/Events immer erzeugt, sofern das Attribut create-readings aktiviert ist:

        • count-all - Die Gesamtanzahl aller angezeigten Anrufe
        • count-incoming - Die Anzahl aller angezeigten eingehenden Anrufe
        • count-outgoing - Die Anzahl aller angezeigten ausgehenden Anrufe
        • count-active - Die Anzahl aller laufenden (noch nicht beendeten) Anrufe
        • count-completed - Die Anzahl aller bereits abgeschlossenen Anrufe
        • count-missed-calls - Die Anzahl aller verpassten Anrufe (eingehend)

    FB_CALLMONITOR

    [EN DE]
      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.
      Es muss zwingend das Attribut fritzbox-user nach der Definition des Device gesetzt werden.

      Dieses Modul funktioniert mit allen Fritz!Box Modellen, welche Telefonie unterstützen (Namenszusatz: Fon).

      Define
        define <name> FB_CALLMONITOR <IP-Addresse>[:Port]

        Port 1012 ist der Standardport und muss daher nicht explizit angegeben werden.

      Set
      • set <name> reopen
        schliesst die Verbindung zur FritzBox und öffnet sie erneut
      • set <name> rereadCache
        Liest den Cache aus der Datei neu ein (sofern konfiguriert, siehe dazu Attribut reverse-search-cache-file)
      • set <name> rereadPhonebook
        Liest das Telefonbuch der FritzBox neu ein (per Datei, Telnet oder direkt lokal)
      • set <name> rereadTextfile
        Liest die nutzereigene Textdatei neu ein (sofern konfiguriert, siehe dazu Attribut reverse-search-text-file)
      • set <name> password <Passwort>
        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
      • get <name> search <phone-number>
        gibt den Namen der Telefonnummer zurück (aus Cache, Telefonbuch oder Rückwärtssuche)
      • get <name> 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)
      • get <name> showPhonebookEntries [Phonebook-ID]
        gibt eine Liste aller bekannten Telefonbucheinträge, oder nur eines bestimmten Telefonbuchs, zurück (nur verfügbar, wenn eine Rückwärtssuche via Telefonbuch aktiviert ist)
      • get <name> showCacheEntries
        gibt eine Liste aller bekannten Cacheeinträge zurück (nur verfügbar, wenn die Cache-Funktionalität der Rückwärtssuche aktiviert ist))
      • get <name> 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)

      • internal-number-filter <Nummer>[<Nummer>,...]
      • Sofern gesetzt, werden nur Gespräche für die konfigurierten internen Rufnummern verarbeitet. Gültige Werte sind eine einzelne interne Rufnummer oder eine komma-separierte Liste von mehreren internen Rufnummern. Gespräche für interne Rufnummern, welche nicht in dieser Liste enthalten sind, werden ignoriert und nicht verarbeitet. Wenn dieses Attribut nicht konfiguriert ist, werden alle Gespräche regulär verarbeitet.

        Standardmäßig ist diese Funktion deaktiviert (nicht gesetzt)

      • reverse-search (phonebook,textfile,tellows.de,dasoertliche.de,11880.com,search.ch,dasschnelle.at,herold.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)

      • reverse-search-tellows-api-key <api-key>
      • tellows api-key. Für Tests kann der api-key -test123- eingetragen werden

      • reverse-search-tellows-api-partner <api-partner>
      • tellows api-partner. Für Tests kann der api-partner -test- eingetragen werden

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

      • check-deflections 0,1
      • Wenn dieses Attribut aktiviert ist, werden eingehende Anrufe gegen die konfigurierten Rufsperren-Regeln aus der FritzBox geprüft. Wenn ein Anruf auf eine dieser Regeln passt, wird der Anruf ignoriert und es werden keinerlei Readings/Events für diesen Anruf generiert. Dies funktioniert nur, wenn man das Telefonbuch aus der FritzBox via TR-064 einliest (siehe Attribute fritzbox-remote-phonebook und fritzbox-remote-phonebook-via).

        Mögliche Werte: 0 => deaktiviert , 1 => aktiviert
        Standardwert ist 0 (deaktiviert)

      • 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>
      • Benutzername für den TR064- oder einen anderen webbasierten Zugang. Die aktuellen FritzOS Versionen verlangen zwingend einen Benutzername für das Login.

      • apiKeySearchCh <API-Key>
      • Der private API-Key von tel.search.ch um eine Rückwärtssuche via search.ch durchzuführen (siehe Attribut reverse-search). Ohne einen solchen API-Key ist eine Rückwärtssuche via search.ch nicht möglich

      • sendKeepAlives (none,5m,10m,15m,30m,1h)
      • Wenn dieses Attribut gesetzt ist, wird ein zyklisches Keep-Alive im konfigurierten Zeitabstand an die FritzBox gesendet um die Verbindung aktiv zu halten. Dadurch bleibt die Verbindung bestehen, insbesondere wenn die verbundene FritzBox sich hinter einem weiteren NAT-Router befindet (z.B. einer weiteren FritzBox). Dadurch wird die Verbindung in so einem Fall nicht fälschlicherweise als "tot" erkannt und geblockt.

        Mögliche Werte: none,5m,10m,15m,30m,1h
        Standardwert ist "none" (es werden keine Keep-Alives gesendet)

      • contactImageDirectory <Verzeichnis>
      • Sofern gesetzt, generiert FB_CALLMONITOR das Reading "contact_image" sofern eine Datei mit der externen Rufnummer als Dateinamen (z.B. "012323456.jpg") in diesem Verzeichnis existiert. Wenn keine passende Datei in dem Verzeichnis existiert oder die externe Rufnummer unterdrückt ist, wird das Reading "contact_image" auf den Wert "none" gesetzt (kann mit dem Attribut contactDefaultImage geändert werden)

      • contactDefaultImage <Dateiname>
      • Sofern gesetzt, verwendet FB_CALLMONITOR den gesetzten Dateinamen anstelle von "none", sollte keine passende Datei zu einer Rufnummer existieren oder die Rufnummer unterdrückt sein.

      • contactImageViaTR064 0,1
      • Wenn dieses Attribut aktiviert ist, lädt FB_CALLMONITOR alle verfügbaren Kontaktbilder aus dem FritzBox Telefonbüchern via TR-064 (if attribute fritzbox-remote-phonebook-via is set to tr064) und speichert diese in dem Verzeichnis contactImageDirectory. Die heruntergeladenen Kontaktbilder werden dann automatisch für das Reading "contact_image" verwendet.

        Mögliche Werte: 0 => deaktiviert , 1 => aktiviert
        Standardwert ist 1 (aktiviert)



      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)
      • calls_count - Die Anzahl aller aktiven Verbindungen (gleichzeitig). Ist der Wert 0, so wird gerade kein Gespräch geführt.
      • 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.
      • contact_image - Dieses Event wird nur generiert, wenn das Attribut contactImageDirectory gesetzt ist. Es enthält das zugehörige Kontaktfoto als Dateiname oder "none", falls kein entsprechendes Kontaktfoto existiert, oder die Rufnummer unterdrückt ist.

    FHEM2FHEM

    [EN DE]
      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.

        Achtung:
        • Wenn das remote FHEM auf einem eigenen Host läuft, muss "telnetPort" des remote FHEM mit der global Option definiert sein.
        • ab FHEM Version 5.9 wird in der ausgelieferten Initialversion der fhem.cfg keine telnet Instanz vorkonfiguriert, man muss sie z.Bsp. folgendermaßen definieren:
            define telnetPort telnet 7072 global

        Der nächste Parameter spezifiziert den Verbindungs-Typ:
        • LOG
          Bei Verwendung dieses Verbindungstyps werden alle Ereignisse (Events) der remote FHEM-Installation empfangen. Die Ereignisse sehen aus wie die, die nach inform on Befehl erzeugt werden. Sie können wie lokale Ereignisse durch FileLog oder notify genutzt werden und mit einem regulären Ausdruck gefiltert werden. Die Syntax dafür ist unter der notify-Definition beschrieben.
          Einschränkungen: die Geräte der remote Installation werden nicht lokal angelegt und können weder mit list angezeigt noch lokal angesprochen werden. Auf beiden FHEM-Installationen können Geräte gleichen Namens angelegt werden, aber wenn beide dasselbe Ereignis empfangen (z.B. wenn an beiden Installationen CULs angeschlossen sind), werden alle FileLogs und notifys doppelt ausgelöst.
          Falls man lokal Geräte mit dem gleichen Namen (z.Bsp. als dummy) angelegt hat, dann werden die Readings von dem lokalen Gerät aktualisiert.
        • RAW
          Bei diesem Verbindungstyp werden unaufbereitete Ereignisse (raw messages) des remote FHEM-Geräts devicename genau so empfangen, als wäre das Gerät lokal verbunden.
          Einschränkungen: nur Geräte, welche die "Dispatch-Funktion" unterstützen (CUL, FHZ, CM11, SISPM, RFXCOM, TCM, TRX, TUL) erzeugen raw messages, und für jedes entfernte Gerät muss ein eigenes FHEM2FHEM Objekt erzeugt werden.
          devicename muss mit demselben Namen und Typ wie das Remote Devive angelegt sein, aber als Dummy, d.h. als device-node "none". Zusätzlich müssen alle notwendigen Attribute lokal gesetzt sein (z.B. rfmode, wenn die remote CUL im HomeMatic-Modus läuft). Die Verwendung bereits bestehender lokaler Geräte ist zu vermeiden, weil sonst die Duplikatsfilterung nicht richtig funktioniert (siehe dupTimeout).
        Der letzte Parameter enthält das Passwort des Remote-Servers, wenn dort eines aktiviert ist portpassword.
        Beispiele:
          define ds1 FHEM2FHEM 192.168.178.22:7072 LOG:.*

          define RpiCUL CUL none 0000
          define ds2 FHEM2FHEM 192.168.178.22:7072 RAW:RpiCUL
          und auf dem RPi (192.168.178.22):
          rename CUL_0 RpiCUL

      Set
      • reopen
        Öffnet die Verbindung erneut.
      • cmd <FHEM-command>
        fürt FHEM-command auf dem entfernten Rechner aus. Achtung: eine Fehlermeldung ist nur dann sichtbar, falls der Befehl in einer Telnet-Sitzung oder in der mehrzeiligen FHEMWEB Befehlsdialog eingegeben wurde.

      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.
      • addStateEvent
        falls gesetzt, werden state Events als solche uebertragen. Zu beachten: das Attribut ist nur für LOG-Mode relevant, beim Setzen wird eine zusätzliche reopened Logzeile generiert, und die andere Seite muss aktuell sein.
      • excludeEvents <regexp> die auf das <regexp> zutreffende Events werden nicht bereitgestellt. Achtung: ^ und $ werden automatisch hinzugefuuml;gt, wie bei notify, FileLog, usw.
      • keepaliveInterval <sec>
        setzt regelmaessig einen leeren Befehl ab, um einen Verbindungsabbruch frueher als das OS feststellen zu koennen.
      • loopThreshold
        hilft Endlosschleifen zu vermeiden. Falls gesetzt, muss die letzte Änderung des gleichen Readings mehr als der Wert in Sekunden alt sein. Achtung bei gesetzten event-on-* Attributen.
      • setState falls gesetzt (auf 1), und ein lokales Gerät mit dem gleichen Namen existiert, dann werden set Befehle vom entfernten Gerät als Solches übertragen.
      • reportConnected falls gesetzt (auf 1), dann wird auf dem Telnet-Server nach dem Verbinden das "global CONNECTED <name>" Event erzeugt. Das ermöglicht z.Bsp. das erneute Senden geänderter Zustände.

    FHEMAPP

      Definiert ein Hilfs-Device für FHEMApp (UI) Es übernimm dafür die Konfigurationsverwaltung stellt weitere Hilfsfunktionen für FHEMApp bereit.

      Es wird mindestens eine erreichbare Installation von FHEMApp UI benötigt, die von einem Web-Server ausgeliefert wird. Soll die Installation auf demselben Computer, auf dem auch FHEM installiert ist erfolgen und soll FHEM als Web-Server für die Auslieferung der FHEMApp UI - Anwendung sein (das ist die bevorzuge Methode), so kann ein FHEMAPP-Device diese lokale Installation selbst vornehemen.

      Für weitere Informationen und die FHEMApp-Dokumentation siehe FHEMApp auf github: https://github.com/jemu75/fhemApp

      Define
        define <name> FHEMAPP <pathToLocalFolder|none>

        pathToLocalFolder = Ein lokaler Ordner, der von FHEM aus erreicht werden kann und unter dem das FHEMapp UI von FHEMWEB bereitgestellt wird. Normalerweise ist das ein Ordner unterhalb von ./www (wird autom. ergänzt)

        Sollen keine lokalen FHEMapp UI Installationen durch das Modul verwaltet werden, kann hier statt des Pfade none angegeben werden.

        Beispiele:
          define fa FHEMAPP fhemapp
          define fa2 FHEMAPP none


        WICHTIG: Wenn das Device mittels delete Befehl aus FHEM gelöscht wird, dann wird ebenfalls die Config-Datei gelöscht!
        Die fhemapp Anwendungsinstallation (in ./www) wird derzeit nicht mit-gelöscht.

      Set
      • checkVersions
        Führt den Check, der nmormalerweise zyklisch ausgeführt wird, sofort aus. Der normale Abfragezyklus wird davon nicht beeinflußt.
        Dieser befehl ist nur bei einer FHEMAPP-Instanz vorhanden, die auch eine lokales FHEMApp-Installation verwaltet
      • update
        Führt ein update der lokal verwalteten fhemapp-Installation auf die aktuellste Version im gewählten Update-Pfad durch.
        Dieser befehl ist nur bei einer FHEMAPP-Instanz vorhanden, die auch eine lokales FHEMApp-Installation verwaltet
      • rereadCfg
        Erzwingt ein erneutes Einlesen der fhemapp Config-Datei. Dies kann notwendig sein, wenn manuell Änderungen an der Datei vorgenommen wurden.
      • getConfig
        Ruft die aktuell im Speicher vorhandene Config als JSON ab. Die Ausgabe efolgt dabei direkt im Fenster, ohne umschließenden Diealog, wie bei get.
      • purge [force]
        Löscht eine lokal verwaltete FHEMApp-Installation. Um die Installation wirklich zu löschen, muß der Parameter force mit '1' angebeben werden.
        FHEMApp kann ganz einfach per set update Kommando wieder neu installiert werden.

        Beispiel:
          set fa purge 1



      Get
      • rawconfig
        Gibt die aktuell gespeicherte Konfiguration von FHEMapp aus. Diese Funktion wird normalerweise ausschließlich durch FHEMapp direkt verwendet, kann aber für Debugging-Zwecke nützlich sein.

      Attributes
      • disable
        Es wird lediglich die zyklische Versionsprüfung deaktiviert!
      • interval
        überschreibt das Default-Intervall (alle 3600 Sekunden) für die zyklische Abfrage der Versionsinformationen. Minimum-Wert ist 60 Sekunden, Maximum ist 1 Tag (86400 Sekunden).
        Dieses Attribut ist nur bei Instanzen relevant, die auch ein lokale FHEMApp-Installation verwalten.
        Siehe auch INTERNAL INTERVAL
      • sourceUrl
        Mit diesem Attribut kann die Default-Url des Quell-Repositories, das für Versions-Abfragen, Installation und Aktualisierungen verwendet werden soll überschrieben werden. Das ist i.d.R. ein github-Repository.
        Siehe auch INTERNAL SOURCE_URL
      • updatePath
        Mit diesem Attribut kann der Update-Pfad festgelegt werden, sprich welche Updates überhaupt installiert werden sollen. Das Attribut kann auf "beta" gesetzt werden, um pre-releases zu erhalten. Default ist "stable" (Wenn das Attribut nicht gesetzt ist)
      • exposeConfigFile
        Mit diesem Attribut kann festgelegt werden, dass das Config-File in der Liste unter "Edit Files" zur Bearbeitung zur Verfügung steht. Diese Funktion kann zu Backup-Zwecken verwendet werden!
        !!! Die direkte Bearbeitung der Config wird ausdrücklich NICHT empfohlen!!!
      • linkPath
        Bei FHEMAPP-Instanzen, die eine lokale FHEMApp-Installation verwalten wird automatisch ein Link generiert, über den FHEMApp mit der Config dieser Instanz aufgerufen werden kann. Bei Instanzen, wo im DEF "none" angegeben wurde, fehlt die notwendige Information für den aufruf. Die kann hier analog zum DEF nachgeholt werden.
        Bei Instanzen mit lokaler FHEMApp-Verwaltung hat dieses Attribut keine Relevanz
      • requestTimeout
        Timeout in Sekunden der für die http-Requests für den Abruf von Versions- und Update-Informationen festgelegt wird.
        Der Default, wenn das Attribut nicht gestzt ist, liegt bei 60s.
        Der kleinste akzeptierte Wert sind 5s.

    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|IP]

        Aktiviert das Webfrontend auf dem Port <tcp-portnr>. Mit dem Parameter global werden Anfragen von allen Netzwerkschnittstellen akzeptiert (nicht nur vom localhost / 127.0.0.1). Falls IP angegeben wurde, dann werden nur Anfragen an diese IP Adresse akzeptiert.
        Informationen für den Betrieb mit IPv6 finden Sie hier.

      Set
      • rereadicons
        Damit wird die Liste der Icons neu eingelesen, für den Fall, dass Sie Icons löschen oder hinzufügen.
      • clearSvgCache
        Im Verzeichnis www/SVGcache werden SVG Daten zwischengespeichert, wenn das Attribut SVGcache gesetzt ist. Mit diesem Befehl leeren Sie diesen Zwischenspeicher.
      • reopen
        Schließt und öffnet der Serverport. Das kann eine Alternative zu FHEM-Neustart sein, wenn das SSL-Zertifikat sich geändert hat.

      Get
      • icon <logical icon>
        Liefert den absoluten Pfad des (logischen) Icons zurück. Beispiel:
          get myFHEMWEB icon FS20.on
          /data/Homeautomation/fhem/FHEM/FS20.on.png
      • pathlist
        Zeigt diejenigen Verzeichnisse an, in welchen die verschiedenen Dateien für FHEMWEB liegen.


      Attribute
      • addHtmlTitle
        Falls der Wert 0 ist, wird bei den set/get/attr Parametern in der DetailAnsicht der Geräte kein title Attribut gesetzt. Das is bei manchen Screenreadern erforderlich. Die Voreinstellung ist 1.

      • alias_<RoomName>
        Falls man das Attribut alias_<RoomName> definiert, und dieses Attribut für ein Gerät setzt, dann wird dieser Wert bei Anzeige von <RoomName> verwendet.
        Achtung: man kann im userattr auch alias_.* verwenden um alle möglichen Räume abzudecken, in diesem Fall wird aber die Attributauswahl in der Detailansicht für alias_.* nicht funktionieren.

      • allowfrom
        Regexp der erlaubten IP-Adressen oder Hostnamen. Wenn dieses Attribut gesetzt wurde, werden ausschließlich Verbindungen von diesen Adressen akzeptiert.
        Achtung: falls allowfrom nicht gesetzt ist, und keine gütige allowed Instanz definiert ist, und die Gegenstelle eine nicht lokale Adresse hat, dann wird die Verbindung abgewiesen. Folgende Adressen werden als local betrachtet:
          IPV4: 127/8, 10/8, 192.168/16, 172.16/10, 169.254/16
          IPV6: ::1, fe80/10

      • allowedHttpMethods
        FHEMWEB implementiert die HTTP Methoden GET, POST und OPTIONS. Manche externe Geräte benötigen HEAD, das ist aber in FHEMWEB nicht korrekt implementiert, da FHEMWEB immer ein body zurückliefert, was laut Spec falsch ist. Da ein body in manchen Fällen kein Problem ist, kann man HEAD durch setzen dieses Attributes auf GET|POST|HEAD aktivieren, die Voreinstellung ist GET|POST. OPTIONS ist immer aktiviert.

      • closeConn
        Falls gesetzt, wird pro TCP Verbindung nur ein HTTP Request durchgeführt. Für iOS9 WebApp startups scheint es zu helfen.

      • cmdIcon
        Leerzeichen getrennte Auflistung von cmd:iconName Paaren. Falls gesetzt, wird das webCmd text durch den icon gesetzt. Am einfachsten setzt man cmdIcon indem man "Extend devStateIcon" im Detail-Ansicht verwendet, und den Wert nach cmdIcon kopiert.
        Beispiel:
          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. Raum- und Gruppenspezifikation ist jeweils ein %regulärer Ausdruck.

      • confirmDelete
        Löschaktionen werden mit einem Dialog bestätigt. Falls dieses Attribut auf 0 gesetzt ist, entfällt das.

      • confirmJSError
        JavaScript Fehler werden per Voreinstellung in einem Dialog gemeldet. Durch setzen dieses Attributes auf 0 werden solche Fehler nicht gemeldet.

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

      • csrfToken
        Falls gesetzt, wird der Wert des Attributes als fwcsrf Parameter bei jedem über FHEMWEB abgesetzten Kommando verlangt, es dient zum Schutz von Cross Site Resource Forgery Angriffen. Falls der Wert random ist, dann wird ein Zufallswert beim jeden FHEMWEB Start neu generiert, falls er none ist, dann wird kein Parameter verlangt. Default ist random für featurelevel 5.8 und größer, und none für featurelevel kleiner 5.8

      • csrfTokenHTTPHeader
        Falls gesetzt (Voreinstellung), FHEMWEB sendet im HTTP Header den csrfToken als X-FHEM-csrfToken, das wird von manchen FHEM-Clients benutzt. Mit 0 kann man das abstellen, um Sites wie shodan.io die Erkennung von FHEM zu erschweren.

      • CssFiles
        Leerzeichen getrennte Liste von .css Dateien, die geladen werden. Die Dateinamen sind relativ zum www Verzeichnis anzugeben. Beispiel:
          attr WEB CssFiles pgm2/mystyle.css

      • Css
        CSS, was nach dem CssFiles Abschnitt im Header eingefuegt wird.

      • defaultRoom
        Zeigt den angegebenen Raum an falls kein Raum explizit ausgewählt wurde. Achtung: falls gesetzt, wird motd nicht mehr angezeigt. Beispiel:
        attr WEB defaultRoom Zentrale

      • detailLinks
        Anzahl der Links, die auf der Detailseite unten angezeigt werden. Die weiteren Befehle werden in einem Auswahlmenü angezeigt. Voreinstellung ist 2.
        Das kann optional mit der Liste der anzuzeigenden IDs erweitert werden, um die Links zu sortieren oder zu filtern. Die möglichen IDs sind devSpecHelp, forumCopy, rawDef, style iconFor, style showDSI, style eventMonitor, delete.
        Beispiel:
        attr WEB detailLinks 2,devSpecHelp,forumCopy

      • devStateIcon
        Erste Variante:
          Leerzeichen getrennte Auflistung von regexp:icon-name:cmd Dreierpärchen, icon-name und cmd dürfen leer sein.
          Wenn STATE 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 STATE 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 @fill:stroke Suffix verwendet werden um das Icon einzufärben, dabei wird in der SVG die Füllfarbe durch das spezifizierte fill ersetzt, und die Stiftfarbe durch das optionale stroke. 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. Achtung: falls im devStateIcons das Ändern der Stiftfarbe benötigt wird, dann ist die alternative @fill@stroke Syntax zu verwenden.
        Zweite Variante:
          Perl Ausdruck 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>'}
        Anmerkung: Obiges gilt pro STATE Zeile. Wenn STATE (durch stateFormat) mehrzeilig ist, wird pro Zeile ein Icon erzeugt.

      • 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 als perl Ausdruck(!), und Regexp. Die Voreinstellung ist:
          Own modules and helper files:$MW_dir:^(.*sh|[0-9][0-9].*Util.*pm|.*cfg|.*holiday|myUtilsTemplate.pm|.*layout)$
          Gplot files:$FW_gplotdir:^.*gplot$
          Styles:$FW_cssdir:^.*(css|svg)$
        Achtung: die Verzeichnis Angabe ist nicht flexibel: alle .js/.css/_defs.svg Dateien sind in www/pgm2 ($FW_cssdir), .gplot Dateien in $FW_gplotdir (www/gplot), alles andere in $MW_dir (FHEM).

      • endPlotNow
        Setzt die Voreinstellung für alle SVGs: 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.

      • endPlotNowByHour
        Setzt die Voreinstellung für alle SVGs: Falls endPlotNow und dieses Attribut auf 1 gesetzt sind, und Zoom-Level ein Tag ist, dann werden die angezeigten Zeitmarker auf die volle Stunde gerundet.

      • endPlotToday
        Setzt die Voreinstellung für alle SVGs: Wird dieses FHEMWEB Attribut gesetzt, so enden Wochen- bzw. Monatsplots am aktuellen Tag, sonst wird die aktuelle Woche/Monat angezeigt.

      • extraRooms
        Durch Leerzeichen oder Zeilenumbruch getrennte Liste von dynamischen Räumen, die zusätzlich angezeigt werden sollen. Beispiel:
        attr WEB extraRooms name=Offen:devspec=contact=open.* name=Geschlossen:devspec=contact=closed.*

      • forbiddenroom
        Wie hiddenroom, aber der Zugriff auf die Raum- oder Detailansicht über direkte URL-Eingabe wird unterbunden.

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

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

      • hiddengroupRegexp
        Ein regulärer Ausdruck, um Gruppen zu verstecken.

      • hiddenroom
        Eine Komma getrennte Liste, um Räume zu verstecken, d.h. nicht anzuzeigen. Besondere Werte sind input, detail und save. In diesem Fall werden diverse Eingabefelder ausgeblendent. Durch direktes Aufrufen der URL sind diese Räume weiterhin erreichbar!
        Ebenso können Einträge in den Logfile/Commandref/etc Block versteckt werden, oder die Links unten auf der Detailseite: devSpecHelp, forumCopy, rawDef, style iconFor, style showDSI, delete.

      • hiddenroomRegexp
        Ein regulärer Ausdruck, um Räume zu verstecken. Beispiel:
          attr WEB hiddenroomRegexp .*config
        Achtung: die besonderen Werte input, detail und save müssen mit hiddenroom spezifiziert werden.

      • httpHeader
        Eine oder mehrere HTTP-Header Zeile, die in jede Antwort eingebettet wird. Beispiel:
          attr WEB httpHeader X-Clacks-Overhead: GNU Terry Pratchett

      • htmlInEventMonitor
        falls 1, Text in <html>...</html> wird im Event Monitor als HTML interpretiert.

      • 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
        Diese Befehle werden beim Setzen des Attributes automatisch ausgeführt, falls kein Zertifikat gefunden wurde. Deswegen, falls nötig, sslCertPrefix vorher setzen.
      • icon
        Damit definiert man ein Icon für die einzelnen Geräte in der Raumübersicht. Es gibt einen passenden Link in der Detailansicht um das zu vereinfachen. Um ein Bild für die Räume selbst zu definieren muss ein Icon mit dem Namen ico<Raumname>.png im iconPath existieren (oder man verwendet roomIcons, s.u.)

      • iconPath
        Durch Doppelpunkt getrennte Aufzählung der Verzeichnisse, in welchen nach Icons gesucht wird. Die Verzeichnisse müssen unter fhem/www/images angelegt sein. Standardeinstellung ist: $styleSheetPrefix:fhemSVG:openautomation:default
        Setzen Sie den Wert auf fhemSVG:openautomation um nur SVG Bilder zu benutzen.

      • JavaScripts
        Leerzeichen getrennte Liste von JavaScript Dateien, die geladen werden. Die Dateinamen sind relativ zum www Verzeichnis anzugeben. Für jede Datei wird ein zusätzliches Attribut angelegt, damit der Benutzer dem Skript Parameter weiterreichen kann. Bei diesem Attributnamen werden Verzeichnisname und fhem_ Präfix entfernt und Param als Suffix hinzugefügt. Beispiel:
          attr WEB JavaScripts codemirror/fhem_codemirror.js
          attr WEB codemirrorParam { "theme":"blackboard", "lineNumbers":true }
        -fhemweb.js und/oder -f18.js verhindert das Laden diese Dateien, was, in Kombination mit einer alter Version der Datei, eine Abhilfe bei alten Tablets mit nicht mehr aktulisierbaren Browser sein kann:
          attr WEB_iOS6 JavaScripts -fhemweb.js -f18.js pgm2/iOS6_fhemweb.js pgm2/iOS6_f18.js

      • logDevice fileLogName
        Name einer FileLog Instanz, um Zugriffe zu protokollieren. Um das Protokollieren falscher Einträge zu vermeiden, sollte das FileLog Regexp der Form <WebName>:Log sein.

      • logFormat ...
        Voreinstellung ist das Apache common Format (%h %l %u %t "%r" %>s %b). Z.Zt. werden nur diese "kurzen" Platzhalter ersetzt, weiterhin kann man mit %{X} den HTTP-Header-Eintrag X spezifizieren.

      • jsLog [1|0]
        falls gesetzt, und longpoll=websocket, dann werden Browser Konsolenmeldungen in das FHEM-Log geschrieben. Nützlich bei der Fehlersuche auf Tablets oder Handys.

      • longpoll [0|1|websocket]
        Falls gesetzt, FHEMWEB benachrichtigt den Browser, wenn Gerätestatuus, Readings or Attribute sich ändern, ein Neuladen der Seite ist nicht notwendig. Zum deaktivieren 0 verwenden.
        Falls websocket spezifiziert ist, läuft die Benachrichtigung des Browsers über dieses Verfahren sonst über HTTP longpoll. Achtung: ältere Browser haben keine websocket Implementierung.

      • longpollSVG
        Lädt SVG Instanzen erneut, falls ein Ereignis dessen Inhalt ändert. Funktioniert nur, falls die dazugehörige Definition der Quelle in der .gplot Datei folgenden Form hat: deviceName.Event bzw. deviceName.*. Wenn man den Plot Editor benutzt, ist das übrigens immer der Fall. Die SVG Datei wird bei jedem auslösenden Event dieses Gerätes neu geladen. Die Voreinstellung ist aus.
        Achtung: fuer dieses Feature muss das plotEmbed Attribute auf 1 gesetzt sein.

      • mainInputLength
        Länge des maininput Eingabefeldes (Anzahl der Buchstaben, Ganzzahl).

      • menuEntries
        Komma getrennte Liste; diese Links werden im linken Menü angezeigt. Beispiel:
        attr WEB menuEntries fhem.de,http://fhem.de,culfw.de,http://culfw.de
        attr WEB menuEntries AlarmOn,http://fhemhost:8083/fhem?cmd=set%20alarm%20on

      • nameDisplay
        Das Argument ist Perl-Code, was für jedes Gerät in der Raum-Übersicht ausgeführt wird, um den angezeigten Namen zu berechnen. Dabei kann man die Variable $DEVICE für den aktuellen Gerätenamen, und $ALIAS für den aktuellen alias bzw. Name, falls alias nicht gesetzt ist, verwenden. Z.Bsp. für eine FHEMWEB Instanz mit ungarischer Anzeige fügt man ein global userattr alias_hu hinzu, und man setzt nameDisplay für diese FHEMWEB Instanz auf dem Wert:
          AttrVal($DEVICE, "alias_hu", $ALIAS)

      • nrAxis
        (bei mehrfach-Y-Achsen im SVG-Plot) Die Darstellung der Y Achsen benötigt Platz. Hierdurch geben Sie an wie viele Achsen Sie links,rechts [useLeft,useRight] benötigen. Default ist 1,1 (also 1 Achse links, 1 Achse rechts).

      • ploteditor
        Gibt an ob der Plot Editor in der SVG detail ansicht angezeigt werden soll. Kann auf always, onClick oder never gesetzt werden. Der Default ist always.

      • plotEmbed
        Falls 1, dann werden SVG Grafiken mit <embed> Tags gerendert, da auf älteren Browsern das die einzige Möglichkeit war, SVG dastellen zu können. Falls 0, dann werden die SVG Grafiken "in-place" gezeichnet. Falls 2, dann werden die Grafiken per JavaScript nachgeladen, um eine Parallelisierung auch ohne embed Tags zu ermöglichen. Die Voreinstellung ist 2 auf Mehrprozessor-Linux-Rechner und 0 sonst.

      • plotfork
        Falls gesetzt, dann werden bestimmte Berechnungen (z.Bsp. SVG und RSS) auf nebenläufige Prozesse verteilt. Voreinstellung ist 0. Achtung: nicht auf Systemen mit wenig Hauptspeicher verwenden.

      • plotmode
        Spezifiziert, wie Plots erzeugt werden sollen:
        • SVG
          Die Plots werden mit Hilfe des SVG Moduls als SVG Grafik gerendert. Das ist die Standardeinstellung.
        • gnuplot-scroll
          Die plots werden mit dem Programm gnuplot erstellt. Das output terminal ist PNG. Der einfache Zugriff auf historische Daten ist möglich (analog SVG).
        • gnuplot-scroll-svg
          Wie gnuplot-scroll, aber als output terminal wird SVG angenommen.

      • plotsize
        gibt die Standardbildgröße aller erzeugten Plots an als Breite,Höhe an. Um einem individuellen Plot die Größe zu ändern muss dieses Attribut bei der entsprechenden SVG Instanz gesetzt werden. Default sind 800,160 für Desktop und 480,160 für Smallscreen

      • plotWeekStartDay
        Starte das Plot in der Wochen-Ansicht mit diesem Tag. 0 ist Sonntag, 1 ist Montag, usw.

      • redirectCmds
        Damit wird das URL Eingabefeld des Browser nach einem Befehl geleert. Standard ist eingeschaltet (1), ausschalten kann man es durch setzen des Attributs auf 0, z.Bsp. um den Syntax der Kommunikation mit FHEMWEB zu untersuchen.

      • redirectTo
        Falls gesetzt, und FHEMWEB eine Anfrage nicht bedienen kann, wird die Seite nach $FW_ME/$redirectTo$arg umgeleitet. Falls nicht gesetzt, dann nach $FW_ME. Falls der Wert den Form eventFor: hat, und $arg auf passt, dann wird ein Event mit der FHEMWEB Instanz und $arg generiert.

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

      • rescueDialog
        Falls gesetzt, im Menue wird ein Rescue Link angezeigt. Das Ziel ist von jemanden mit mehr Wissen (Retter) Hilfe zu bekommen, indem er die lokale FHEM-Installation fernsteuert.
        Nach öffnen des Dialogs wird ein Schlüssel angezeigt, was dem Retter zu schicken ist. Nachdem er diesen Schlüssel bei sich installiert hat, muss seine Adresse (Host und Port) im Dialog eingetragen werden. Danach kann er die Verbindung fernsteuern.

        TODO für den Retter:
        • eine öffentliche IP/PORT Kombination zum eigenen SSH Server weiterleiten.
        • einen fhemrescue Benutzer auf diesem Server anlegen, und den Schlüssel vom Hilfesuchenden eintragen:
            useradd -d /tmp -s /bin/false fhemrescue
            echo "KEY_FROM_THE_CLIENT" > /etc/sshd/fhemrescue.auth
            chown fhemrescue:fhemrescue /etc/sshd/fhemrescue.auth
            chmod 600 /etc/sshd/fhemrescue.auth
        • Zu /etc/ssh/sshd_config Folgendes hinzufügen:
            Match User fhemrescue
              AllowTcpForwarding remote
              PermitTTY no
              GatewayPorts yes
              ForceCommand /bin/false
              AuthorizedKeysFile /etc/ssh/fhemrescue.auth
        • sshd neu starten, z.Bsp. mit systemctl restart sshd
        • Dem Hilfesuchenden die öffentliche IP/PORT Kombination mitteilen.
        • Nachdem der Hilfesuchende diese Daten eingegeben hat, und die Verbindung gestartet hat, kann die Remote-FHEM-Installation ueber den eigenen SSH-Server, Port 1803 erreicht wedern.

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

      • sslCertPrefix
        Setzt das Präfix der SSL-Zertifikate, die Voreinstellung ist certs/server-, siehe auch das HTTP Attribut.

      • styleData
        wird von dynamischen styles wie f18 werwendet

      • stylesheetPrefix
        Präfix für die Dateien style.css, svg_style.css und svg_defs.svg. Wenn die Datei mit dem Präfix fehlt, wird die Default Datei (ohne Präfix) verwendet. Diese Dateien müssen im FHEM Ordner liegen und können direkt mit "Select style" im FHEMWEB Menüeintrag ausgewählt werden. Beispiel:
          attr WEB stylesheetPrefix dark

          Referenzdateien:
            darksvg_defs.svg
            darksvg_style.css
            darkstyle.css

        Anmerkung:Wenn der Parametername smallscreen oder touchpad enthält, wird FHEMWEB das Layout/den Zugriff für entsprechende Geräte (Smartphones oder Touchpads) optimieren
        Standardmäßig werden 3 FHEMWEB Instanzen aktiviert: Port 8083 für Desktop Browser, Port 8084 für Smallscreen, und 8085 für Touchpad.
        Wenn touchpad oder smallscreen benutzt werden, wird WebApp support aktiviert: Nachdem Sie eine Seite am iPhone oder iPad mit Safari angesehen haben, können Sie einen Link auf den Homescreen anlegen um die Seite im Fullscreen Modus zu sehen. Links werden in diesem Modus anders gerendert, um ein "Zurückfallen" in den "normalen" Browser zu verhindern.

      • SVGcache
        Plots die sich nicht mehr ändern, werden im SVGCache Verzeichnis (www/SVGcache) gespeichert, um die erneute, rechenintensive Berechnung der Grafiken zu vermeiden. Default ist 0, d.h. aus.
        Siehe den clearSvgCache Befehl um diese Daten zu löschen.

      • title
        Setzt den Titel der Seite. Falls in {} eingeschlossen, dann wird es als Perl Ausdruck evaluiert.

      • viewport
        Setzt das "viewport" Attribut im HTML Header. Das kann benutzt werden um z.B. die Breite fest vorzugeben oder Zoomen zu verhindern.
        Beispiel: attr WEB viewport width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no

      • webCmd
        Durch Doppelpunkte getrennte Auflistung von Befehlen, die für ein bestimmtes Gerät gelten sollen. Funktioniert nicht mit smallscreen, ein Ersatz dafür ist der devStateIcon Befehl.
        Beispiel:
          attr lamp webCmd on:off:on-for-timer 10

        Der erste angegebene Befehl wird in der "set device ?" list nachgeschlagen (Siehe das setList Attrib für Dummy Geräte). Wenn dort bekannte Modifier sind, wird ein anderes Widget angezeigt. Siehe auch widgetOverride.
        Wenn der Befehl state ist, wird der Wert als Kommando interpretiert.
        Beispiele:
          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.

      • webCmdLabel
        Durch Doppelpunkte getrennte Auflistung von Texten, die vor dem jeweiligen webCmd angezeigt werden. Der Anzahl der Texte muss exakt den Anzahl der webCmds entsprechen. Um mehrzeilige Anzeige zu realisieren, kann ein Return nach dem Text und vor dem Doppelpunkt eingefuehrt werden.

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

      • widgetOverride
        Leerzeichen separierte Liste von Name:Modifier Paaren, mit dem man den vom Modulautor für einen bestimmten Parameter (Set/Get/Attribut) vorgesehenes Widget ändern kann. Die Syntax für eine Typspezifische Änderung ist Name@Typ:Modifier, wobei Typ set, get oder attr sein kann. Folgendes ist die Liste der bekannten Modifier:


          Für die folgenden icon.* Widgets gilt:
          <color> kann ein Farbname oder eine Farbnummer ohne führende # sein, z.B. orange oder FFA500. Abhängig vom Kontext ist @ zu escapen \@.
          <icon> ist der Iconname.
          [class<classname>@] als Prefix vor dem zweiten Parameter, weist den SVG-Icons eine CSS-Klasse zu.
          Beispiele zum Import über Raw definition findet man im FHEM-Wiki unter FHEMWEB-Widgets

        • iconRadio,[class<classname>@][use4icon@]<select color>,<value>,<icon>[@<color>][,<value>,<icon>[@<color>]]... - zeigt Icons als Radiobutton an und gibt Value bei Betätigung zurück.
          <value> ist der Rückgabe- u.Vergleichswert. Wenn eine numerische Folge von <value> angegeben wird, dann passt der laufende Wert zum nächsten höheren Vergleichswert. Vor und hinter der numerischen Folge dürfen nicht numerische Werte angegeben werden, dazwischen nicht. Die numerische Folge muss auf- oder absteigend sein.
          Beispiel: iconRadio,808080,zu,control_arrow_down,10,fts_shutter_10,20,fts_shutter_20,30,fts_shutter_30,auf,control_arrow_up
          <select color> die Hintergrundfarbe des gewählten Icons oder die Farbe des Icons wenn der Prefix use4icon@ vorangestellt wird.
          Das Widget enthält eine CSS-Klasse "iconRadio_widget".
        • iconButtons,[class<classname>@][use4icon@]<select color>,<value>,<icon>[@<color>][,<value>,<icon>[@<color>]]... - zeigt Icons als Tastenleiste an und gibt durch Komma getrennte Werte der betätigten Tasten zurück.
          <value> ist der Rückgabewert.
          <select color> die Hintergrundfarbe des gewählten Icons oder die Farbe des Icons wenn der Prefix use4icon@ vorangestellt wird.
          Das Widget enthält eine CSS-Klasse "iconButton_widget".
        • iconLabel[,[class<classname>@]<reference value>,[<icon>][@<color>]][,<reference value>,[<icon>][@<color>]]... - zeigt Zustände durch colorierte Werte, Beschriftungen und Icons an, wenn der aktuelle Wert zum Vergleichswert passt. Ein Zustand wird durch ein Parameterpaar beschrieben. Es können beliebig viele Paare angegeben werden. Ein Paar besteht aus einem Vergleichswert <reference value> und einem optionalen Anzeigewert mit optionaler mit Farbangabe [,<reference value>,[<icon>][@<color>]].
          <reference value> kann eine Zahl oder ein regulärer Ausdruck sein.
          Wenn <icon> keinem Iconnamen entspricht, wird der Text angezeigt, sonst das Icon. Wird <icon> nicht angegeben, wird der aktuelle Wert angezeigt.
        • iconSwitch,[class<classname>@]<reference value>,[<icon>][@<color>][,<reference value>,[<icon>][@<color>]]... - schaltet zyklisch nach jeder Betätigung in den angezeigten Zustand, dabei wird der aktuelle Wert auf den Vergleichswert gesetzt. Ein Zustand wird durch ein Parameterpaar beschrieben. Es können beliebig viele Paare angegeben werden. Ein Paar besteht aus einem Vergleichswert <reference value> und einem optionalen Anzeigewert mit optionaler mit Farbangabe [,<reference value>,[<icon>][@<color>]].
          <reference value> kann eine Zahl oder eine Zeichenkette sein.
          Wenn <icon> keinem Iconnamen entspricht, wird der Text angezeigt, sonst das Icon. Wird <icon> nicht angegeben, wird der Vergleichwert angezeigt.

        • :sortable,val1,val2,... - damit ist es möglich aus den gegebenen Werten eine Liste der gewünschten Werte durch Drag & Drop zusammenzustellen. Die Reihenfolge der Werte kann dabei entsprechend geändert werden. Es müssen keine Werte explizit vorgegeben werden, das Widget kann auch ohne vorgegebenen Werte benutzt werden. Es können eigene Werte zur Liste hinzugefügt und einsortiert werden. Das Ergebnis ist Komma-separiert entsprechend aufsteigend sortiert.
        • :sortable-strict,val1,val2,... - damit ist es möglich aus den gegebenen Werten eine Liste der gewünschten Werte durch Drag & Drop zusammenzustellen. Die Reihenfolge der Werte kann dabei entsprechend geändert werden. Es können jedoch keine eigenen Werte zur Liste hinzugefügt werden. Das Ergebnis ist Komma-separiert entsprechend aufsteigend sortiert.
        • :sortable-given,val1,val2,... - damit ist es möglich aus den gegebenen Werten eine sortierte Liste der gewünschten Werte durch Drag & Drop zusammenzustellen. Es können keine Elemente gelöscht und hinzugefügt werden. Es müssen alle gegeben Werte benutzt und entsprechend sortiert sein. Das Ergebnis ist Komma-separiert entsprechend aufsteigend sortiert.
        • uzsuToggle,zust1,zust2 - damit ist es möglich mit einem Toggle-Button zwischen zwei Zuständen zu wählen. Der Erste ist der aktive Zustand.
        • uzsuSelect,val1,val2,... - damit ist es mögliche in einer Buttonleiste meherere Werte auszuwählen. Das Ergebnis ist Komma-separiert.
        • uzsuSelectRadio,val1,val2,... - damit ist es mögliche in einer Buttonleiste einen aus meherere Werten auszuwählen.
        • uzsuDropDown,val1,val2,... - damit ist es mögliche mit einem DropDown Menü einen der Werte auszuwählen.
        • uzsuTimerEntry[,modifier2] - damit werden je ein uzsuSelect, uzsuDropDown und uzsuToggle Widget kombiniert um einen Schaltzeitpunkt auszuwählen. Über den optionalen modifier2 kann ein Widget zur Auswahl des Schaltwertes angegeben werden. Siehe Beispiele unten. Das Ergebniss is eine komma-separiert Liste von Wochentagen gefolgt vom Zeitpunkt, eine Aktiv-Indikator und dem Schaltwert, jeweils durch | abetrennt. Zum Beispiel: Mo,Di,Sa,So|00:00|enabled|19.5
        • uzsu[,modifier2] - damit werden mehrere uzsuTimerEntry Widets kombiniert um eine beliebige Anzahl an Schaltzeiten einzugeben. Über den optionalen modifier2 kann ein Widget zur Auswahl des Schaltwertes angegeben werden. Siehe Beispiele unten. Das Ergebiss ist eine durch leerzeichen getrennte Liste von uzsuTimerEntry Ergebnissen.
          Beispiele:
            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
                    
        • knob,min:1,max:100,... - zeigt das jQuery knob Widget.Die Parameter werden als eine Komma separierte Liste von Key:Value Paaren spezifiziert, wobei das data- Präfix entfällt.Für Details siehe die jQuery knob Dokumentation.
          Beispiel: attr dimmer widgetOverride dim:knob,min:1,max:100,step:1,linecap:round
        • noArg - es wird kein weiteres Eingabefeld angezeigt.
        • time - zeigt ein Zeitauswahlmenü. Beispiel: attr FS20dev widgetOverride on-till:time
        • textField[,placeholder,inputSize] - zeigt ein Eingabefeld. Mit inputSize kann man die Breite des Eingabefeldes definieren, die Voreinstellung ist 30.
          Beispiel: attr WEB widgetOverride room:textField,Raumname,20
        • textFieldNL[,placeholder,inputSize] - Eingabefeld ohne Label.
        • textField-long[,sizePct,inputSize] - ist wie textField, aber beim Click im Eingabefeld wird ein Dialog mit einer HTML textarea geöffnet. sizePct ist die relative Größe des Dialogs, die Voreinstellung ist 75.
        • textFieldNL-long[,sizePct,inputSize] - wie textField-long, aber kein Label wird angezeigt.
        • slider,<min>,<step>,<max>[,1] - zeigt einen Schieberegler. Das optionale 1 (isFloat) vermeidet eine Rundung der Fliesskommazahlen.
        • multiple,<val1>,<val2>,...[,#inputSize] - zeigt ein Dialog mit Mehrfachauswahl und Eingabefeld. Das Ergebnis ist Komma separiert. inputSize ist die Breite des Anzeigefeldes, die Voreinstellung ist 30.
        • multiple-strict,<val1>,<val2>,...[,#inputSize] - ist wie :multiple, bloß ohne Eingabefeld im Dialog.
        • selectnumbers,<min>,<step>,<max>,<number of digits after decimal point>,lin|log10" zeigt ein HTML-select mit einer Zahlenreihe vom Wert min bis Wert max mit Schritten von step.
          Die Angabe lin erzeugt eine konstant ansteigende Reihe. Die Angabe log10 erzeugt eine exponentiell ansteigende Reihe zur Basis 10, step bezieht sich auf den Exponenten, z.B. 0.0625.
        • select,<val1>,<val2>,... - zeigt ein HTML select mit allen Werten. Achtung: so ein Widget wird auch dann angezeigt, falls kein passender Modifier gefunden wurde.
        • bitfield,<size>,<mask> - zeigt eine Tabelle von Kontrollkästchen (8 pro Zeile), um einzelne Bits setzen zu können. Die Voreinstellung für size ist 8 und für mask 2^32-1.
        • widgetList,... - zeigt eine Liste von Widgets. Die Argumente aller widgets sind durch die Längenangabe der jeweiligen Argumentliste getrennt.
          Beispiel: widgetList,3,select,opt1,opt2,1,textField
          Achtung: die Werte werden Komma separiert zu FHEM gesendet, und es können nur bereits geladene widgets definiert werden.

    FHT

    [EN DE]
      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 adjusthour adjustminute
          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

        • adjusthour und adjustminute setzen Stunde bzw. Minute 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

    [EN DE]
      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

    FLAMINGO

    [EN DE]
      Das FLAMINGO module dekodiert vom SIGNALduino empfangene Nachrichten des FLAMINGO FA20RF / FA21 / FA22RF Rauchmelders.
      Von diesem Rauchmelder gibt es baugleiche Typen wie profitec KD101LA, POLLIN KD101LA oder renkforce LM-101LD.

      Define
        define <name> FLAMINGO <code> <model>

      • <code> ist der automatisch angelegte eindeutige code des FLAMINGO Rauchmelders. Dieser ändern sich nach dem Pairing mit einem Master.
      • <model> ist die Modelbezeichnung

      • - Bei einem Autocreate wird als Model unknown definiert.
        - Bei einem manuellen define kann man das Model frei wählen welche als Attribut verfügbar sind .


      Set
      • Counterreset
        - Alarmzähler auf 0 setzen
      • Testalarm
        - auslösen eines Testalarmes. (Der Testalarm erhöht nicht den Alarmzähler!)

      Get
        N/A


      Attributes
      • IODev (!)
      • do_not_notify
      • eventMap
      • ignore
      • model
        FA20RF, FA21RF, FA22RF, KD-101LA, LM-101LD, unknown
      • showtime
      • readingFnAttributes


      Generierte Readings
      - alarmcounter | Alarmzähler beginnend mit 0
      - lastReceive_ID | Protokoll ID vom SIGNALduino
      - state | (no Alarm, Alarm, Testalaram)


      Anleitung
      Melder paaren (Master-Slave Prinzip)
      • Master bestimmen
        LEARN-Taste bis grüne Anzeige LED leuchtet
      • Slave bestimmen
        LEARN-Taste bis rote Anzeige LED leuchtet
      • Master, TEST-Taste gedrückt halten, bevor LEDÅ› abschalten und alles "Slaves" ein Alarmsignal erzeugen

      Paarung aufheben / Standalone Betrieb
      • LEARN-Taste bis grüne Anzeige LED leuchtet
      • TEST-Taste gedrückt halten bis ein Alarmsignal erzeugt wird

    FLOORPLAN

    [EN DE]
      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.

    Die Steuerung erfolgt teilweise über die offizielle TR-064-Schnittstelle und teilweise über undokumentierte Schnittstellen zwischen Webinterface und Firmware Kern.

    Das Modul wurde auf der FRITZ!BOX 7590, 7490 und dem FRITZ!WLAN Repeater 1750E mit Fritz!OS 7.50 und höher getestet.
    Bitte auch die anderen FRITZ!BOX-Module beachten: SYSMON und FB_CALLMONITOR.
    Das Modul nutzt das Perlmodule 'JSON::XS', 'LWP', 'SOAP::Lite' für den Fernzugriff.
    Es muss zwingend das Attribut boxUser nach der Definition des Device gesetzt werden.

    Define

      define <name> FRITZBOX <host>
      Der Parameter host ist die Web-Adresse (Name oder IP) der FRITZ!BOX / Repeater.

      Beispiel: define Fritzbox FRITZBOX fritz.box

    Set
    • set <name> blockIncomingPhoneCall Parameters
        set <name> blockIncomingPhoneCall <new> <name> <phonenumber> <home|work|mobile|fax_work>
        set <name> blockIncomingPhoneCall <tmp> <name> <phonenumber> <home|work|mobile|fax_work> <dayTtime>
        set <name> blockIncomingPhoneCall <chg> <name> <phonenumber> <home|work|mobile|fax_work> <uid>
        set <name> blockIncomingPhoneCall <del> <uid>
        <new> erzeugt einen neuen Eintrag für eine Rufsperre für ankommende Anrufe
        <tmp> erzeugt einen neuen Eintrag für eine Rufsperre für ankommende Anrufe, der zum Zeitpunkt <dayTtime> wieder gelöscht wird
        <chg> ändert einen bestehenden Eintrag für eine Rufsperre für ankommende Anrufe
        <del> löscht einen bestehenden Eintrag für eine Rufsperre für ankommende Anrufe
        <name> eindeutiger Name der Rufsperre. Leerzeichen sind nicht zulässig
        <phonenumber> Rufnummer, die gesperrt werden soll
        <home|work|mobile|fax_work> Klassifizierung der Rufnummer
        <uid> UID der Rufsperre. Eindeutig für jeden Rufsperren Namen. Steht im Reading blocking_<phonenumber>
        <dayTtime> Fhem Timestamp im Format: yyyy-mm-ddThh:mm:ss zur Generierung eines 'at' Befehls
      Beispiel für eine tägliche Rufsperre von 20:00 Uhr bis zum Folgetag 06:00 Uhr
      defmod startNightblocking at *22:00:00 {\ fhem('set FritzBox blockIncomingPhoneCall tmp nightBlocking 012345678 home ' . strftime("%Y-%m-%d", localtime(time + DAYSECONDS)) . 'T06:00:00', 1);;\ }

      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_blockIncomingPhoneCall

    • set <name> call <number> [duration]

      Ruft für 'Dauer' Sekunden (Standard 60 s) die angegebene Telefonnummer von einem internen Telefonanschluss an (Standard ist 1). Wenn der Angerufene abnimmt, hört er die Wartemusik. Der interne Telefonanschluss klingelt ebenfalls.
      Das Klingeln erfolgt über die Wählhilfe, die über "Telefonie/Anrufe/Wählhilfe" aktiviert werden muss.
      Eventuell muss über die Weboberfläche der Fritz!Box ein anderer Port eingestellt werden. Der aktuelle steht in "box_stdDialPort".
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_ring

    • set <name> checkAPIs

      Startet eine erneute Abfrage der exitierenden Programmierschnittstellen der FRITZ!BOX.

    • set <name> chgProfile <number> <filtprofn>

      <number> ist die ID des landevicen..n oder dessen MAC
      ändert das Profile filtprof mit der Nummer 1..n des Netzgeräts.
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_chgProfile
      Benötigt FRITZ!OS 7.21 oder höher.

    • set <name> dect <on|off>

      Schaltet die DECT-Basis der Box an oder aus.
      Benötigt mindestens FRITZ!OS 7.21

    • set <name> dectRingblock <dect<nn>> <on|off>

      Aktiviert / Deaktiviert die Klingelsperre für das DECT-Telefon mit der ID dect. Die ID kann der Readingliste des <name> Device entnommen werden.

      set <name> dectRingblock <dect<nn>> <days> <hh:mm-hh:mm> [lmode:on|off] [emode:on|off]

      Aktiviert / Deaktiviert die Klingelsperre für das DECT-Telefon mit der ID dect für Zeiträume:
      <hh:mm-hh:mm> = Uhrzeit_von bis Uhrzeit_bis
      <days> = wd für Werktags, ed für Jeden Tag, we für Wochenende
      lmode:on|off = lmode definiert die Sperre. Bei off ist sie aus, außer für den angegebenen Zeitraum.
      Bei on ist die Sperre an, außer für den angegebenen Zeitraum
      emode:on|off = emode schaltet Events bei gesetzter Klingelsperre ein/aus. Siehe hierzu die FRITZ!BOX Dokumentation
      Benötigt FRITZ!OS 7.21 oder höher.

    • set <name> diversity <number> <on|off>

      Schaltet die Rufumleitung (Nummer 1, 2 ...) für einzelne Rufnummern an oder aus.
      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ätewert geben.
      Benötigt die API: TR064 (>=6.50).

    • set <name> enableVPNshare <number> <on|off>

      <number> ist die Nummer des Readings vpnn..n_user.. oder _box
      Schaltet das VPN share mit der Nummer nn an oder aus.
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_enableVPNshare
      Benötigt FRITZ!OS 7.21 oder höher.

    • set <name> energyMode <default|eco>

      Ändert den Energiemodus der FRITZ!Box. <default> verwendet einen ausgewogenen Modus bei optimaler Leistung.
      Die wichtigsten Energiesparfunktionen sind bereits aktiv.
      <eco> verringert den Stromverbrauch.
      Benötigt FRITZ!OS 7.50 oder höher.

    • 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.
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_SetGet_nonBlocking

    • set <name> inActive <on|off>

      Deaktiviert temporär den intern Timer.

    • set <name> ledSetting <led:on|off> und/oder <bright:1..3> und/oder <env:on|off>

      Die Anzahl der Parameter variiert von FritzBox zu Fritzbox zu Repeater.
      Die Möglichkeiten können über get <name> luaInfo ledSettings geprüft werden.

      <led: <bright:1..3> reguliert die Helligkeit der LED's von 1=schwach, 2=mittel bis 3=sehr hell.
      <env:on|off> schaltet Regelung der Helligkeit in abhängigkeit der Umgebungshelligkeit an oder aus.

      Benötigt FRITZ!OS 7.21 oder höher.

      Als besonderer Parameter ist set <name> ledSetting <notifyoff:notify_ID> hinzugekommen.
      Hiermit kann die rote Info-LED der FritzBox, die besondere Betriebszustände signalisiert, resetet werden.

    • set <name> lockFilterProfile <profile name> <status:never|unlimited> <bpjm:on|off>

      <profile name> Name des Zugangsprofils
      <status:> schaltet das Profil aus (never) oder ein (unlimited)
      <bpjm:> schaltet den Jugendschutz ein/aus
      Die Parameter <status:> / <bpjm:> können einzeln oder gemeinsam angegeben werden.
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_lockFilterProfile
      Benötigt FRITZ!OS 7.21 oder höher.

    • FritzOS < 8.00:
      set <name> lockLandevice <number|mac> <on|off|rt>
      FritzOS >= 8.00:
      set <name> lockLandevice <number|mac> <on|off|rt|rtoff>

      Bei FritzOS >= 8.00 kann durch den optionalen Parameter OS7 die Ausführung über data.lua erzwungen werden. Es gilt dann allerdings
      auch die Syntax für FritzOS < 8:
      set <name> lockLandevice <number|mac> <on|off|rt> OS7

      <number> ist die ID des landevicen..n
      Schaltet das Blockieren des Netzgerät on(blocked), off(unlimited) oder rt(realtime).
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_lockLandevice
      Benötigt FRITZ!OS 7.21 oder höher.

    • set <name> macFilter <on|off>

      Schaltet den MAC Filter an oder aus. In der FRITZ!BOX unter "neue WLAN Geräte zulassen/sperren
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_macFilter
      Benötigt FRITZ!OS 7.21 oder höher.

    • set <name> phoneBookEntry <new> <PhoneBookID> <category> <entryName> <home|mobile|work|fax_work|other:phoneNumber> [home|mobile|work|fax_work|other:phoneNumber] ...

      set <name> phoneBookEntry <del> <PhoneBookID> <entryName>

      <PhoneBookID> kann aus dem neuen Reading fon_phoneBook_IDs entnommen werden.
      <category> 0 oder 1. 1 steht für wichtige Person.
      <entryName> Name des Telefonbucheintrags

    • set <name> password <password>

      Speichert das Passwort für den Fernzugriff.

    • set <name> reboot <Minuten>

      Startet die FRITZ!BOX in <Minuten> neu. Wird dieses 'set' ausgeführt, so wird ein einmaliges 'at' im Raum 'Unsorted' erzeugt, über das dann der Reboot ausgeführt wird. Das neue 'at' hat den Devicenamen: act_Reboot_<Name FB Device>.

    • set <name> rescanWLANneighbors

      Löst eine Scan der WLAN Umgebung aus. Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_rescanWLANneighbors

    • set <name> ring <intNumbers> [duration]

      Beispiel:
      set <name> ring 611,612 5
      Lässt die internen Nummern für "Dauer" Sekunden und (auf Fritz!Fons) mit dem übergebenen "ring tone" lingeln.
      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).
      Je nach Fritz!OS kann das beschriebene Verhalten abweichen.
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_ring

    • set <name> smartHome Parameters
        set <name> smartHome <deviceID> <tempOffset:value>
        ändert den Temperatur Offset auf den Wert:value für das SmartHome Gerät mit der angegebenen ID.

        set <name> smartHome <deviceID> <tmpAdjust:value>
        setzt den Heizköperregeler temporär auf die Temperatur: value.

        set <name> smartHome <deviceID> <tmpPerm:0|1>
        setzt den Heizköperregeler auf permanent aus oder an.

        set <name> smartHome <deviceID> <switch:0|1>
        schaltet den Steckdosenadapter aus oder an.

        set <name> smartHome <deviceID> <preDefSave:nameEinstellung>
        speichert die Einstellungen für das Device unter dem angegeben Namen.

        set <name> smartHome <deviceID> <preDefDel:nameEinstellung>
        löscht die Einstellungen für das Device unter dem angegeben Namen.

        set <name> smartHome <deviceID> <preDefLoad:[deviceID_load:]nameEinstellung[:A|:G]>
        lädt eine gespeicherte Einstellung in die Fritzbox. Wird [deviceID_load:] angegeben, so wird die gespeicherte Einstellung eines anderen funktional identischen Device in die Fritzbox geladen.
        Bei Devices vom Typ 'socket' kann noch differenziert werden, ob alle Einstellungen oder nur die der Webseite :A == 'Automatisch schalten' oder :G == 'Allgemein' geladen werden sollen.
      Die ID kann über get <name> luaInfo <smartHome> ermittelt werden.

      Das Ergebnis des Befehls wird im Reading retStat_smartHome abgelegt.
      Benötigt FRITZ!OS 7.21 oder höher.

    • set <name> switchIPv4DNS <provider|other>

      Ändert den IPv4 DNS auf Internetanbieter oder einem alternativen DNS (sofern in der FRITZ!BOX hinterlegt).
      Benötigt FRITZ!OS 7.21 oder höher.

    • 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äte Readings.

    • set <name> wakeUpCall <alarm1|alarm2|alarm3> <off>
      set <name> wakeUpCall <alarm1|alarm2|alarm3> <Device Nummer|Name> <daily|only_once> <hh:mm>
      set <name> wakeUpCall <alarm1|alarm2|alarm3> <Device Nummer|Name> <per_day> <hh:mm> <mon:0|1 tue:0|1 wed:0|1 thu:0|1 fri:0|1 sat:0|1 sun:0|1>

      Inaktiviert oder stellt den Wecker: alarm1, alarm2, alarm3.
      Wird der Device Name gentutzt, so ist ein Leerzeichen im Namen durch %20 zu ersetzen.
      Die Device Nummer steht im Reading dectn_device or fonn_device
      Wird im Reading dectn or fonn "redundant name in FB" angezeigt, dann kann der Device Name nicht genutzt werden..
      Benötigt FRITZ!OS 7.21 oder höher.

    • set <name> wlan <on|off>

      Schaltet WLAN an oder aus.
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_SetGet_nonBlocking

    • set <name> wlan2.4 <on|off>

      Schaltet WLAN 2.4 GHz an oder aus.
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_SetGet_nonBlocking

    • set <name> wlan5 <on|off>

      Schaltet WLAN 5 GHz an oder aus.
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_SetGet_nonBlocking

    • set <name> wlanLogExtended <on|off>

      Schaltet "Auch An- und Abmeldungen und erweiterte WLAN-Informationen protokollieren" an oder aus.
      Die Ausführung erfolgt non Blocking. Die Rückmeldung erfolgt im Reading: retStat_wlanLogExtended

    • set <name> wlanGuestParams <param:value> [<param:value> ...]

      Mögliche Kombinationen aus <param:value>
      • <wlan:on|off>
      • <ssid:name>
      • <psk:password>
      • <mode:private|public>
      • <tmo:minutes> , tmo == timeout in Minuten (15 - 4320). Wird tmo gesetzt, so wird automatisch isTimeoutActive auf on gesetzt.
      • <isTimeoutActive:on|off>
      • <timeoutNoForcedOff:on|off>
      Status in Reading: retStat_wlanGuestParams

    Get

    • get <name> fritzLog <table> <all | sys | wlan | usb | net | fon>

      <table> zeigt das Ergebnis im FhemWeb als Tabelle an.

      get <name> fritzLog <hash> <all | sys | wlan | usb | net | fon> [on|off]

      <hash> leitet das Ergebnis als Standard an eine Funktion (non blocking) myUtilsFritzLogExPostnb($hash, $filter, $result) für eigene Verarbeitung weiter.
      <hash> <off> leitet das Ergebnis an eine Funktion (blocking) myUtilsFritzLogExPost($hash, $filter, $result) für eigene Verarbeitung weiter.
      wobei:
      $hash -> Fhem Device hash,
      $filter -> gewählter Log Filter,
      $result -> Rückgabe der data.lua Abfrage im JSON Format.


      <all | sys | wlan | usb | net | fon> über diese Parameter erfolgt die Filterung der Log-Informationen.

      [on|off] gibt bei Parameter <hash> an, ob die Weiterverarbeitung blocking [off] oder non blocking [on] (default) erfolgt.

      Benötigt FRITZ!OS 7.21 oder höher.

      Rückmeldung in den Readings:
      retStat_fritzLogExPost = Status des Funktionsaufrufes myUtilsFritzLogExPostnb / myUtilsFritzLogExPost
      retStat_fritzLogInfo = Status der Log Informations Abfrage.

    • get <name> lanDeviceInfo <number>

      <number> ist die ID des landevicen..n oder dessen MAC Zeigt Informationen über das Netzwerkgerät an.
      Bei vorhandener Kindersicherung, nur dann wird gemessen, wird zusätzlich folgendes ausgegeben:
      USEABLE: Zuteilung in Sekunden
      UNSPENT: nicht genutzt in Sekunden
      PERCENT: in Prozent
      USED: genutzt in Sekunden
      USEDSTR: zeigt die genutzte Zeit in hh:mm vom Kontingent hh:mm
      Benötigt FRITZ!OS 7.21 oder höher.

    • get <name> luaData [json] <Command>

      Führt Komandos über data.lua aus. Sofern in den Parametern ein Semikolon vorkommt ist dieses durch #x003B zu ersetzen.
      Optional kann als erster Parameter json angegeben werden. Es wir dann für weitere Verarbeitungen das Ergebnis als JSON zurück gegeben.

    • Experimentel siehe: FRITZBOX - Fritz!Box und Fritz!Fon sprechen
      get <name> luaDectRingTone <Command>


    • get <name> luaFunction <funktion>

      Führt AVM lua Funktionen aus.
      funktion: <Pfad/luaFunktion?><Parameter>
      funktion: internet/inetstat_monitor.lua?myXhr=1&action=disconnect&useajax=1&xhr=1 holt eine neue IP-Adresse für die FritzBox.

    • get <name> luaInfo <landevices|ledSettings|smartHome|vpnShares|globalFilters|kidProfiles|userInfos|wlanNeighborhood|mobileInfo|docsisInformation>

      Benötigt FRITZ!OS 7.21 oder höher.
      lanDevices -> Generiert eine Liste der aktiven und inaktiven Netzwerkgeräte.
      ledSettings -> Generiert eine Liste der LED Einstellungen mit einem Hinweis welche set ... ledSetting möglich sind.
      smartHome -> Generiert eine Liste SmartHome Geräte und gespeicherten Gerätedefinitionen (Zeitschaltung, Tmperaturen, ...).
      vpnShares -> Generiert eine Liste der aktiven und inaktiven VPN Shares.
      globalFilters -> Zeigt den Status (on|off) der globalen Filter: globalFilterNetbios, globalFilterSmtp, globalFilterStealth, globalFilterTeredo, globalFilterWpad
      kidProfiles -> Generiert eine Liste der Zugangsprofile.
      userInfos -> Generiert eine Liste der FRITZ!BOX Benutzer.
      wlanNeighborhood -> Generiert eine Liste der WLAN Nachbarschaftsgeräte.
      mobileInfo -> Informationen über Mobilfunk.
      docsisInformation -> Zeigt Informationen zu DOCSIS an (nur Cable).

    • get <name> luaQuery <abfrage>

      Zeigt Informations durch Abfragen der query.lua.
      abfrage: <queryFunction:><queryRequest>
      abfrage: uimodlogic:status/uptime_hours holt die Stunden, die die FritzBox seit dem letzten Neustart ununterbrochen läuft.

    • get <name> smartHomePreDef [deviceID [Saved-PreDef-Name]]

      get <name> smartHomePreDef
      listet alle gespeicherten Einstellungen auf. Diese Auflistung wird auch bei get luaInfo smartHome mit angezeigt.
      get <name> smartHomePreDef <deviceID>
      listet alle für das Device gespeicherten Einstellungen auf.
      get <name> smartHomePreDef <deviceID> <Saved-PreDef-Name>
      zeigt die für das Device unter dem Saved-PreDef Namen gespeicherten Daten.


    • 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 <name> tr064Command X_AVM-DE_OnTel:1 x_contact GetDECTHandsetInfo NewDectID 1

    • get <name> tr064ServiceListe

      Zeigt die Liste der TR-064-Dienste und Aktionen, die auf dem Gerät erlaubt sind.

    Attributes

    • INTERVAL <seconds>

      Abfrage-Interval. Standard ist 300 (Sekunden). Der kleinste mögliche Wert ist 60 (Sekunden).

    • attr <name> verbose <0 .. 5>
      Wird verbose auf den Wert 5 gesetzt, so werden alle Log-Daten in eine eigene Log-Datei geschrieben.
      Name der Log-Datei:deviceName_debugLog.dlog
      Im INTERNAL Reading DEBUGLOG wird ein Link <DEBUG Log kann hier eingesehen werden> zur dierekten Ansicht des Logs angezeigt.
      Weiterhin wird ein FileLog Device:deviceName_debugLog im selben Raum und der selben Gruppe wie das FRITZBOX Device erzeugt.
      Wird verbose auf kleiner 5 gesetzt, so wird das FileLog Device gelöscht, die Log-Datei bleibt erhalten. Wird verbose gelöscht, so werden das FileLog Device und die Log-Datei gelöscht.

    • attr <name> FhemLog3Std <0 | 1>
      Wenn gesetzt, werden die Log Informationen im Standard Fhem Format geschrieben.
      Sofern durch ein verbose 5 die Ausgabe in eine seperate Log-Datei aktiviert wurde, wird diese beendet.
      Die seperate Log-Datei und das zugehörige FileLog Device werden gelöscht.
      Wird das Attribut auf 0 gesetzt oder gelöscht und ist das Device verbose auf 5 gesetzt, so werden alle Log-Daten in eine eigene Log-Datei geschrieben.
      Name der Log-Datei:deviceName_debugLog.dlog
      Im INTERNAL Reading DEBUGLOG wird ein Link <DEBUG Log kann hier eingesehen werden> zur direkten Ansicht des Logs angezeigt.

    • reConnectInterval <seconds>

      reConnect-Interval. Nach Netzwerkausfall oder FritzBox Nichtverfügbarkeit. Standard ist 180 (Sekunden). Der kleinste mögliche Wert ist 55 (Sekunden).

    • maxSIDrenewErrCnt <5..20>

      Anzahl der in Folge zulässigen Fehler beim abholen der SID von der FritzBox. Minimum ist fünf, maximum ist zwanzig. Standardwert ist 5.
      Wird die Anzahl überschritten, dann wird der interne Timer deaktiviert.

    • nonblockingTimeOut <30|35|40|50|75|100|125>

      Timeout für das regelmäßige Holen der Daten von der Fritz!Box. Standard ist 55 (Sekunden).

    • setgetTimeout<10|30|40|50|75|100|125>

      Timeout für das Ausführen von non blocking set/get Befehlen. Standard ist 10 (Sekunden).

    • boxUser <user name>

      Benutzername für den TR064- oder einen anderen webbasierten Zugang. Die aktuellen FritzOS Versionen verlangen zwingend einen Benutzername für das Login.

    • deviceInfo <ipv4, name, uid, connection, speed, rssi, statIP, _noDefInf_, _default_&, space, comma>

      Mit diesem Attribut kann der Inhalt der Device Readings (mac_...) gestaltet werden. Ist das Attribut nicht gesetzt, setzt sich der Inhalt wie folgt zusammen:
      name,[uid],(connection: speed, rssi)

      Wird der Parameter _noDefInf_ gesetzt, die Reihenfolge ind der Liste spielt hier keine Rolle, dann werden nicht vorhandene Werte der Netzwerkverbindung mit noConnectInfo (LAN oder WLAN nicht verfügbar) und noSpeedInfo (Geschwindigkeit nicht verfügbar) angezeigt.

      Über das freie Eingabefeld können eigene Text oder Zeichen hinzugefügt und zwischen die festen Paramter eingeordnet werden.
      Hierbei gibt es folgende spezielle Texte:
      space => wird zu einem Leerzeichen.
      comma => wird zu einem Komma.
      _default_... => ersetzt das default Leerzeichen als Trennzeichen.
      Beispiele:
      _default_commaspace => wird zu einem Komma gefolgt von einem Leerzeichen als Trenner.
      _default_space:space => wird zu einem einem Leerzeichen:Leerzeichen als Trenner.
      Es werden nicht alle möglichen "unsinnigen" Kombinationen abgefangen. Es kann also auch mal schief gehen.

    • disableBoxReadings <liste>

      Abwählen einzelner box_ Readings.
      Werden folgende Readings deaktiviert, so wird immer eine ganze Gruppe von Readings deaktiviert.
      box_dns_Server -> deaktiviert alle Readings box_dns_Servern

    • enableBoxReadings <liste>

      Werden folgende Readings aktiviert, so wird immer eine ganze Gruppe von Readings aktiviert.
      box_energyMode -> aktiviert alle Readings box_energyMode.* FritzOS >= 7.21
      box_globalFilter -> aktiviert alle Readings box_globalFilter.* FritzOS >= 7.21
      box_led -> aktiviert alle Readings box_led.* FritzOS >= 6.00
      box_vdsl -> aktiviert alle Readings box_vdsl.* FritzOS >= 7.80
      box_dns_Srv -> aktiviert alle Readings box_dns_Srvn FritzOS > 7.31
      box_pwr -> aktiviert alle Readings box_pwr... FritzOS >= 7.00. Nicht verfügbar für Cable mit FritzOS 8.00
      box_guestWlan -> aktiviert alle Readings box_guestWlan... FritzOS > 7.00
      box_usb -> aktiviert alle Readings box_usb... FritzOS > 7.00
      box_notify -> aktiviert alle Readings box_notify... FritzOS > 7.00

    • enableLogReadings<liste>

      Werden folgende Readings aktiviert, wird das entsprechende SystemLog des Fritz Gerätes abgeholt.
      box_sys_Log -> holt das System-Log. Letztes Log-Datum im Reading: box_sys_LogNewest
      box_wlan_Log -> holt das WLAN-Log. Letztes Log-Datum im Reading: box_wlan_LogNewest
      box_fon_Log -> holt das Telefon-Log. Letztes Log-Datum im Reading: box_fon_LogNewest

    • disableDectInfo <0 | 1>

      Schaltet die Übernahme von Dect Informationen aus/ein.

    • disableFonInfo <0 | 1>

      Schaltet die Übernahme von Telefon Informationen aus/ein.

    • disableHostIPv4check<0 | 1>

      Deaktiviert den Check auf Erreichbarkeit des Host.

    • disableTableFormat<border(8),cellspacing(10),cellpadding(20)>

      Deaktiviert Parameter für die Formatierung der Tabelle.

    • enableAlarmInfo <0 | 1>

      Schaltet die Übernahme von Alarm Informationen aus/ein.

    • enablePoneBookInfo <0 | 1>

      Schaltet die Übernahme Telefonbuch Informationen aus/ein.

    • enableKidProfiles <0 | 1>

      Schaltet die Übernahme von Kid-Profilen als Reading aus/ein.

    • enableMobileInfo <0 | 1>


      ! Experimentel !

      Schaltet die Übernahme von USB Mobile Geräten als Reading aus/ein.
      Benötigt Fritz!OS 7.50 oder höher.

    • enablePassivLanDevices <0 | 1>

      Schaltet die Übernahme von passiven Netzwerkgeräten als Reading aus/ein.

    • enableSIP <0 | 1>

      Schaltet die Übernahme von SIP's als Reading aus/ein.

    • enableSmartHome <off | all | group | device>

      Aktiviert die Übernahme von SmartHome Daten als Readings.

    • enableReadingsFilter <liste>

      Aktiviert Filter für die Übernahme von Readings (SmartHome, Dect). Ein Readings, dass dem Filter entspricht wird
      um einen Punkt als erstes Zeichen ergänzt. Somit erscheint das Reading nicht im Web-Frontend, ist aber über ReadingsVal erreichbar.

    • enableUserInfo <0 | 1>

      Schaltet die Übernahme von Benutzer Informationen aus/ein.

    • enableVPNShares <0 | 1>

      Schaltet die Übernahme von VPN Shares als Reading aus/ein.

    • enableWLANneighbors <0 | 1>

      Schaltet die Anzeige von WLAN Nachbarschaft Geräten als Reading aus/ein.

    • lanDeviceReading <mac|ip>

      Legt fest, ob der Reading Name aus der IP-Adresse mit Präfix ip_ oder der MAC-Adresse mit Präfix mac_ für Netzwerk Geräte gebildet werden soll.
      Standard ist mac.

    • retMsgbySet <all|error|none>

      Mit dem Attribut kann die Rückgabe der SET Befehle festgelegt werden.
      <all>: Standard. Es werden alle Ergebnisse der SET's zurück gegeben.
      <error>: Es werden nur Fehler zurück gegeben.
      <none>: Es erfolgt keine Rückgabe.

    • wlanNeighborsPrefix <prefix>

      Definiert einen Präfix für den Reading Namen der WLAN Nachbarschaftsgeräte, der aus der MAC Adresse gebildet wird. Der default Präfix ist nbh_.

    • 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_connection_Type - Verbindungsart
    • box_cpuTemp - Temperatur der FritxBox CPU
    • box_dect - Aktueller Status des DECT-Basis: aktiv, inaktiv
    • box_box_dns_Servern - Provider DNS Server
    • box_box_dns_Srvn_used_IPv4_n - benutzte IPv4 DNS Server
    • box_box_dns_Srvn_used_IPv6_n - benutzte IPv6 DNS Server
    • box_dsl_downStream - Min Effektive Datenrate (MBit/s)
    • box_dsl_upStream - Min Effektive Datenrate (MBit/s)
    • box_energyMode - Energiemodus der FritzBox
    • box_energyModeWLAN_Timer - Modus des WLAN Timers
    • box_energyModeWLAN_Time - Zeitraum HH:MM - HH:MM der WLAN Deaktivierung
    • box_energyModeWLAN_Repetition - Wiederholung des WLAN Tminers
    • box_fon_LogNewest - aktuellstes Telefonie-Ereignis: ID Datum Zeit
    • box_fwVersion - Firmware-Version der Box, wenn veraltet dann wird '(old)' angehangen
    • box_globalFilterNetbios - Aktueller Status: NetBIOS-Filter aktiv
    • box_globalFilterSmtp - Aktueller Status: E-Mail-Filter über Port 25 aktiv
    • box_globalFilterStealth - Aktueller Status: Firewall im Stealth Mode
    • box_globalFilterTeredo - Aktueller Status: Teredo-Filter aktiv
    • box_globalFilterWpad - Aktueller Status: WPAD-Filter aktiv
    • 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_guestWlan_SSID - Name (SSID) des Gäste-WLAN
    • box_guestWlan_defPubSSID - Standard öffentlicher Name (SSID) des Gäste-WLAN
    • box_guestWlan_defPrivSSID - Standard privater Name (SSID) des Gäste-WLAN
    • box_guestWlan_groupAccess - Gruppenzugriff möglich
    • box_guestWlan_tmoActive - Zeitbrenzung aktiv
    • box_ipv4_Extern - Internet IPv4 der FRITZ!BOX
    • box_ipv6_Extern - Internet IPv6 der FRITZ!BOX
    • box_ipv6_Prefix - Internet IPv6 Prefix der FRITZ!BOX für das LAN/WLAN
    • box_ledCanDim - zeigt an, ob das setzen der Helligkeit der Led's in der Fritzbox/dem Repeater implementiert ist
    • box_ledDimValue - zeigt an, auf welchen Wert die Led's gedimmt sind
    • box_ledDisplay - zeigt an, ob die Led's an oder aus sind
    • box_ledEnvLight - zeigt an, ob die Umgebungshelligkeit die Helligkeit der Led's steuert
    • box_ledHasEnv - zeigt an, ob das setzen der Led Helligkeit durch die Umgebungshelligkeit in der Fritzbox/dem Repeater implementiert ist
    • box_last_auth_err - letzter Anmeldungsfehler
    • box_mac_Address - MAC Adresse
    • box_macFilter_active - Status des WLAN MAC-Filter (WLAN-Zugang auf die bekannten WLAN-Geräte beschränken)
    • box_meshRole - ab Version 07.21 wird die Mesh Rolle (master, slave) angezeigt.
    • box_model - FRITZ!BOX-Modell
    • box_moh - Wartemusik-Einstellung
    • box_notify_... - die beiden Readings werden erstellt, wenn die FritzBox die Info LED rot aktiviert und einen entsprechenden Hinweis
    • box_notify_..._info - auf der Webseite platziert. In den Readings befinden sich ein Button für weitere Informationen und ein Button
      um die Information zu quittieren. Durch diesen Link wird die Info in der FritzBox quittiert und es werden die beiden
      Readings auf -solved by click- gesetzt. Wird die Info von der FritzBox zurückgezogen, dann erhalten die Readings die
      Ergänzung -solved by FB-. Der Button wird auf '-solved by FB- Readings löschen' gesetzt. Über diesen Button können die
      beiden Readings box_notify_ und box_notify__info nun gelöscht werden.
      Die Readings müssen über das Attribut: enableBoxReadings aktiviert werden.
    • box_connect - Verbindungsstatus: Unconfigured, Connecting, Authenticating, Connected, PendingDisconnect, Disconnecting, Disconnected
    • box_last_connect_err - letzter Verbindungsfehler
    • box_upnp - Status der Anwendungsschnittstelle UPNP (wird auch von diesem Modul benötigt)
    • box_upnp_control_activated - Status Kontrolle über UPNP
    • box_uptime - Laufzeit seit letztem Neustart
    • box_uptimeConnect - Verbindungsdauer seit letztem Neuverbinden
    • box_DSL_Act - DSL: aktueller Stromverbrauch in Prozent der maximalen Leistung
    • box_Rate_Act - Gesamt: aktueller Stromverbrauch in Prozent der maximalen Leistung
    • box_WLAN_Act - WLAN: aktueller Stromverbrauch in Prozent der maximalen Leistung
    • box_mainCPU_Act - CPU: aktueller Stromverbrauch in Prozent der maximalen Leistung
    • box_powerRate - aktueller Stromverbrauch in Prozent der maximalen Leistung
    • box_powerLine - verbindung über Powerline aktiv
    • box_rateDown - Download-Geschwindigkeit des letzten Intervals in kByte/s
    • box_rateUp - Upload-Geschwindigkeit des letzten Intervals in kByte/s
    • box_sys_LogNewest - aktuellstes Systemereignis: ID Datum Zeit
    • box_stdDialPort - Anschluss der geräteseitig von der Wählhilfe genutzt wird
    • box_tr064 - Status der Anwendungsschnittstelle TR-064 (wird auch von diesem Modul benötigt)
    • box_tr069 - Provider-Fernwartung TR-069 (sicherheitsrelevant!)
    • box_usb_FTP_activ
    • box_usb_FTP_enabled
    • box_usb_NAS_enabled
    • box_usb_SMB_enabled
    • box_usb_autoIndex
    • box_usb_indexStatus
    • box_usb_webDav
    • box_usb_n_devConType
    • box_usb_n_devEject
    • box_usb_n_devID
    • box_usb_n_devName
    • box_usb_n_devStatus
    • box_usb_n_devStorageTotal
    • box_usb_n_devStorageUsed
    • box_usb_n_devType
    • box_vdsl_downStreamRate - Aktuelle DownStream Datenrate (MBit/s)
    • box_vdsl_downStreamMaxRate - Maximale DownStream Datenrate (MBit/s)
    • box_vdsl_upStreamRate - Aktuelle UpStream Datenrate (MBit/s)
    • box_vdsl_upStreamMaxRate - Maximale UpStream Datenrate (MBit/s)
    • box_wan_AccessType - Verbindungstyp (DSL, Ethernet, ...)
    • box_wlan_Count - Anzahl der Geräte die über WLAN verbunden sind
    • box_wlan_Active - Akteuller Status des WLAN
    • box_wlan_2.4GHz - Aktueller Status des 2.4-GHz-WLAN
    • box_wlan_5GHz - Aktueller Status des 5-GHz-WLAN
    • box_wlan_lastScanTime - Letzter Scan der WLAN Umgebung. Ist nur vorhanden, wenn das Attribut enableWLANneighbors gesetzt ist.
    • box_wlan_LogExtended - Status -> "Auch An- und Abmeldungen und erweiterte WLAN-Informationen protokollieren".
    • box_wlan_LogNewest - aktuellstes WLAN-Ereignis: ID Datum Zeit

    • box_docsis30_Ds_corrErrors - Nur Fritz!Box Cable
    • box_docsis30_Ds_frequencys - Nur Fritz!Box Cable
    • box_docsis30_Ds_latencys - Nur Fritz!Box Cable
    • box_docsis30_Ds_mses - Nur Fritz!Box Cable
    • box_docsis30_Ds_nonCorrErrors - Nur Fritz!Box Cable
    • box_docsis30_Ds_powerLevels - Nur Fritz!Box Cable
    • box_docsis30_Ds_modulations - Nur Fritz!Box Cable
    • box_docsis30_Us_frequencys - Nur Fritz!Box Cable
    • box_docsis30_Us_powerLevels - Nur Fritz!Box Cable
    • box_docsis30_Us_modulations - Nur Fritz!Box Cable
    • box_docsis31_Ds_frequencys - Nur Fritz!Box Cable
    • box_docsis31_Ds_powerLevels - Nur Fritz!Box Cable
    • box_docsis31_Ds_modulations - Nur Fritz!Box Cable
    • box_docsis31_Us_frequencys - Nur Fritz!Box Cable
    • box_docsis31_Us_powerLevels - Nur Fritz!Box Cable
    • box_docsis31_Us_modulations - Nur Fritz!Box Cable

    • dectn - Name des DECT Telefons n
    • dectn_alarmRingTone - Klingelton beim Wecken über das DECT Telefon n
    • dectn_custRingTone - Benutzerspezifischer Klingelton des DECT Telefons n
    • dectn_device - Interne Device Nummer des DECT Telefons n
    • dectn_fwVersion - Firmware-Version des DECT Telefons n
    • dectn_intern - Interne Telefonnummer des DECT Telefons n
    • dectn_intRingTone - Interner Klingelton des DECT Telefons n
    • dectn_manufacturer - Hersteller des DECT Telefons n
    • dectn_model - Modell des DECT Telefons n
    • dectn_NoRingWithNightSetting - Bei aktiver Klingelsperre keine Ereignisse signalisieren für das DECT Telefon n
    • dectn_radio - aktueller Internet-Radio-Klingelton des DECT Telefons n
    • dectn_NoRingTime - Klingelsperren des DECT Telefons n

    • diversityn - Eigene Rufnummer der Rufumleitung n
    • diversityn_dest - Zielnummer der Rufumleitung n
    • diversityn_state - Aktueller Status der Rufumleitung n

    • fonn - Name des analogen Telefonanschlusses n an der FRITZ!BOX
    • fonn_device - Interne Device Nummer des analogen Telefonanschlusses n
    • fonn_intern - Interne Telefonnummer des analogen Telefonanschlusses n
    • fonn_out - ausgehende Telefonnummer des Anschlusses n
    • fon_phoneBook_IDs - ID's of the existing phone books
    • fon_phoneBook_n - Name of the phone book n
    • fon_phoneBook_URL_n - URL to the phone book n

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

    • matter_..._node - matter node (SmartGateWay oder FB mit Matter).
    • matter_..._vendor - matter vendor/fabric (SmartGateWay oder FB mit Matter).

    • mobileInfo_... - Mobilfunk Readings (USB-Mobilfunk-Stick oder FritzBox LTE).

    • mac_nn_nn_nn_nn_nn_nn - MAC Adresse und Name eines aktiven Netzwerk-Gerätes.
      Wird keine MAC-Adresse bereit gestellt,z.B. Switch oder VPN, dann wird anstatt der MAC-Adresse die FritzBox DeviceID genommen.
      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: IP-Adresse" bzw "inactiv: DeviceID" wenn keine IP-Adresse zur Verfügung steht
      und werden beim nächsten Update gelöscht.

    • ip_nnn.nnn.nnn.nnn - IP-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 Wert "inactive: DeviceID" und werden beim nächsten Update gelöscht.

    • nbh_nn_nn_nn_nn_nn_nn - MAC-Adresse und Name eines aktiven WAN-Gerätes.
      Es wird die SSID, der Kanal und das Frequenzband angezeigt.
      Inaktive oder entfernte Geräte erhalten zuerst den Werte "inactive" und werden beim nächsten Update gelöscht.

    • radionn - Name der Internetradiostation 01

    • tamn - Name des Anrufbeantworters n
    • tamn_newMsg - Anzahl neuer Nachrichten auf dem Anrufbeantworter n
    • tamn_oldMsg - Anzahl alter Nachrichten auf dem Anrufbeantworter n
    • tamn_state - Aktueller Status des Anrufbeantworters n

    • usernn - Name von Nutzer/IP n für den eine Zugangsbeschränkung (Kindersicherung) eingerichtet ist
    • usernn_thisMonthTime - Internetnutzung des Nutzers/IP n im aktuellen Monat (Kindersicherung)
    • usernn_todaySeconds - heutige Internetnutzung des Nutzers/IP n in Sekunden (Kindersicherung)
    • usernn_todayTime - heutige Internetnutzung des Nutzers/IP n (Kindersicherung)

    • vpnn - Name des VPN
    • vpnn_access_type - Verbindungstyp: Benutzer VPN | Netzwert zu Netzwerk | Firmen VPN
    • vpnn_activated - Status, ob VPN n aktiv ist
    • vpnn_last_negotiation - Uhrzeit der letzten Aushandlung der Verbindung (nur Wireguard)
    • vpnn_connected_since - Dauer der Verbindung in Sekunden (nur VPN)
    • vpnn_remote_ip - IP der Gegenstelle
    • vpnn_state - not active | ready | none
    • vpnn_user_connected - Status, ob Benutzer VPN n verbunden ist

    • sipn_Telefon-Nummer - Status
    • sip_active - zeigt die Anzahl aktiver SIP.
    • sip_inactive - zeigt die Anzahl inaktiver SIP.
    • sip_error - zeigt die Anzahl fehlerhafter SIP. 0 == alles Ok.

    • shdevicen_battery -
    • shdevicen_category -
    • shdevicen_device -
    • shdevicen_firmwareVersion -
    • shdevicen_manufacturer -
    • shdevicen_model -
    • shdevicen_status -
    • shdevicen_tempOffset -
    • shdevicen_temperature -
    • shdevicen_type -
    • shdevicen_voltage -
    • shdevicen_powerPerHour -
    • shdevicen_currentInAmp -
    • shdevicen_powerInWatt -

    • retStat_blockIncomingPhoneCall - Return Status: set <name> blockIncomingPhoneCall ...
    • retStat_chgProfile - Return Status: set <name> chgProfile <number> <filtprofn>
    • retStat_enableVPNshare - Return Status: set <name> enableVPNshare <number> <on|off>
    • retStat_fritzLogInfo - Return Status: get <name> <hash> <...>
    • retStat_fritzLogExPost - Return Status der Hook-Funktion myUtilsFritzLogExPost($hash, $filter, $result) zu: get <name> <hash> <...>
    • retStat_lastReadout - Return Status: set <name> update oder Intervall update
    • retStat_lockFilterProfile - Return Status: set <name> lockFilterProfile <status:never|unlimited> <bjmp:on|off>
    • retStat_lockLandevice - Return Status: set <name> lockLandevice <number<on|off>
    • retStat_macFilter - Return Status: set <name> macFilter <on|off>
    • retStat_rescanWLANneighbors - Return Status: set <name> rescanWLANneighbors
    • retStat_ring - Return Status: set <name> ring oder call <intNumbers> [duration]
    • retStat_smartHome - Return Status: set <name> smartHome
    • retStat_wakeUpCall - Return Status: set <name> wakeUpCall
    • retStat_wlanLogExtended - Return Status: set <name> wlanLogExtended <on|off>
    • retStat_wlanGuestParams - Return Status

    • retStat_retStat_SetGet_nonBlocking - Return Status folgender set/get Befehle: wlan/wlan2.4/wlan5/guestWlan on|off

    Ereignis-Codes

    • 1 IGMPv3 multicast router n.n.n.n active
    • 11 DSL ist verfügbar (DSL-Synchronisierung besteht mit n/n kbit/s).
    • 12 DSL-Synchronisierung beginnt (Training).
    • 14 Mobilfunkmodem initialisiert.
    • 23 Internetverbindung wurde getrennt.
    • 24 Internetverbindung wurde erfolgreich hergestellt. IP-Adresse: ..., DNS-Server: ... und ..., Gateway: ..., Breitband-PoP: ..., LineID:...
    • 25 Internetverbindung IPv6 wurde erfolgreich hergestellt. IP-Adresse: ...:...:...:...:...:...:...:...
    • 26 Internetverbindung wurde getrennt.
    • 27 IPv6-Präfix wurde erfolgreich bezogen. Neues Präfix: ....:....:....:....:/nn
    • 28 Internetverbindung IPv6 wurde getrennt, Präfix nicht mehr gültig.

    • 71 Anmeldung der Internetrufnummer <Nummer> war nicht erfolgreich. Ursache: DNS-Fehler.
    • 73 Anmeldung der Internetrufnummer <Nummer> war nicht erfolgreich. Ursache: Gegenstelle antwortet nicht. Zeitüberschreitung.
    • 85 Die Internetverbindung wird kurz unterbrochen, um der Zwangstrennung durch den Anbieter zuvorzukommen.

    • 119 Information des Anbieters über die Geschwindigkeit des Internetzugangs (verfügbare Bitrate): nnnn/nnnn kbit/s
    • 131 USB-Gerät ..., Klasse 'USB 2.0 (hi-speed) storage', angesteckt
    • 132 USB-Gerät ... abgezogen
    • 134 Es wurde ein nicht unterstützes USB-Gerät angeschlossen
    • 140 Der USB-Speicher ... wurde eingebunden.
    • 141 Der USB-Speicher ... wurde entfernt.
    • 189 Die Rufnummer <Nummer> ist seit mehr als einer Stunde nicht verfügbar.

    • 201 Es liegt keine Störung der Telefonie mehr vor. Alle Rufnummern sind ab sofort wieder verfügbar.
    • 205 Anmeldung für IP-Telefoniegerät "Telefonie-Gerät" von IP-Adresse ... nicht erfolgreich.
    • 267 Integrierter Faxempfang wurde aktiviert auf USB-Speicher 'xxx'.

    • 401 SIP_UNAUTHORIZED, Beschreibung steht in der Hilfe (Webinterface)
    • 403 SIP_FORBIDDEN, Beschreibung steht in der Hilfe (Webinterface)
    • 404 SIP_NOT_FOUND, Gegenstelle nicht erreichbar (local part der SIP-URL nicht erreichbar (Host schon))
    • 405 SIP_METHOD_NOT_ALLOWED
    • 406 SIP_NOT_ACCEPTED
    • 408 SIP_NO_ANSWER

    • 484 SIP_ADDRESS_INCOMPLETE, Beschreibung steht in der Hilfe (Webinterface)
    • 485 SIP_AMBIGUOUS, Beschreibung steht in der Hilfe (Webinterface)

    • 486 SIP_BUSY_HERE, Ziel besetzt (vermutlich auch andere Gründe bei der Gegenstelle)
    • 487 SIP_REQUEST_TERMINATED, Anrufversuch beendet (Gegenstelle nahm nach ca. 30 Sek. nicht ab)

    • 500 Anmeldung an der FRITZ!Box-Benutzeroberfläche von von IP-Adresse ...
    • 501 Anmeldung an der FRITZ!Box-Benutzeroberfläche von IP-Adresse ... gescheitert (falsches Kennwort).
    • 502 Die FRITZ!Box-Einstellungen wurden über die Benutzeroberfläche geändert.
    • 503 Anmeldung an der FRITZ!Box-Benutzeroberfläche von IP-Adresse yy gescheitert (ungültige Sitzungskennung). Zur Sicherheit werden
    • 504 Anmeldung des Benutzers FhemUser an der FRITZ!Box-Benutzeroberfläche von IP-Adresse ...
    • 505 Anmeldung des Benutzers xx an der FRITZ!Box-Benutzeroberfläche von IP-Adresse yy gescheitert (falsches Kennwort)
    • 506 Anmeldung einer App des Benutzers FhemUser von IP-Adresse
    • 510 Anmeldung einer App mit unbekanntem Anmeldenamen von IP-Adresse ... gescheitert.

    • 689 WLAN-Anmeldung ist gescheitert : Die MAC-Adresse des WLAN-Geräts ist gesperrt. MAC-Adresse
    • 692 WLAN-Anmeldung ist gescheitert : Verbindungsaufbau fehlgeschlagen. MAC-Adresse
    • 705 WLAN-Gerät Anmeldung gescheitert (5 GHz): ungültiger WLAN-Schlüssel. MAC-Adresse
    • 706 [...] WLAN-Gerät Anmeldung am Gastzugang gescheitert (n,n GHz): ungültiger WLAN-Schlüssel. MAC-Adresse: nn:nn:nn:nn:nn:nn.
    • 748 [...] WLAN-Gerät angemeldet (n,n GHz), nn Mbit/s, PC-..., IP ..., MAC ... .
    • 752 [...] WLAN-Gerät hat sich abgemeldet (n,n GHz), PC-..., IP ..., MAC ....
    • 754 [...] WLAN-Gerät wurde abgemeldet (.,. GHz), PC-..., IP ..., MAC ... .
    • 756 WLAN-Gerät hat sich neu angemeldet (n,n GHz), nn Mbit/s, Gerät, IP ..., MAC ....
    • 782 WLAN-Anmeldung ist gescheitert : Die erneute Anmeldung ist aufgrund aktiver "Unterstützung für geschützte Anmeldungen von WLAN-Geräten (PMF)
    • 786 5-GHz-Band für [Anzahl] Min. nicht nutzbar wegen Prüfung auf bevorrechtigten Nutzer (z. B. Radar) auf dem gewählten Kanal (Frequenz [GHz])
    • 790 Radar wurde auf Kanal [Nummer] (Frequenz [Ziffer] GHz) erkannt, automatischer Kanalwechsel wegen bevorrechtigtem Benutzer ausgeführt
    • 801 Die FRITZ!Box ist seit mehr als einer Stunde nicht mehr mit dem Internet verbunden.
    • 801 Die FRITZ!Box ist seit mehr als einer Stunde nicht mehr mit dem Internet verbunden. Auch die Telefonie ist nicht oder nur eingeschränkt verfügbar.

    • 2104 Die Systemzeit wurde erfolgreich aktualisiert von Zeitserver nnn.nnn.nnn.nnn .

    • 2364 Ein neues Gerät wurde an der FRITZ!Box angemeldet (Schnurlostelefon)
    • 2358 Einstellungen wurden gesichert. Diese änderung erfolgte von Ihrem Heimnetzgerät ... (IP-Adresse: ...)
    • 2380 Es besteht keine Verbindung mehr zu den verschlüsselten DNS-Servern.
    • 2383 Es wurde erfolgreich eine Verbindung - samt vollständiger Validierung - zu den verschlüsselten DNS-Servern aufgebaut.
    • 2380 Es besteht keine Verbindung mehr zu den verschlüsselten DNS-Servern.
    • 3330 Verbindung zum Online-Speicher hergestellt.

    FRM

    [EN DE]
      Die Modulbeschreibung von FRM gibt es nur auf Englisch.

    FRM_AD

      Die Modulbeschreibung von FRM_AD gibt es nur auf Englisch.

    FRM_I2C

      Die Modulbeschreibung von FRM_I2C gibt es nur auf Englisch.

    FRM_IN

      Die Modulbeschreibung von FRM_IN gibt es nur auf Englisch.

    FRM_OUT

      Die Modulbeschreibung von FRM_OUT gibt es nur auf Englisch.

    FRM_PWM

      Die Modulbeschreibung von FRM_PWM gibt es nur auf Englisch.

    FRM_RGB

      Die Modulbeschreibung von FRM_RGB gibt es nur auf Englisch.

    FRM_ROTENC

      Die Modulbeschreibung von FRM_ROTENC gibt es nur auf Englisch.

    FRM_SERVO

      Die Modulbeschreibung von FRM_SERVO gibt es nur auf Englisch.

    FRM_STEPPER

    [EN DE]
      Die Modulbeschreibung von FRM_STEPPER gibt es nur auf Englisch.

    FReplacer

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

    FS10

    [EN DE]
      Das FS10-Modul entschlüsselt und sendet Nachrichten vom Typ FS10, die vom SIGNALduino verarbeitet werden. Unterstützt werden z.Z. folgende Typen: FS10-ST, FS10-DI, FS10-HD, FS10-SA, FS10-MS, FS10-S4 und FS10-S8.

      Define
        define <name> FS10 <hauscode>_<button>

        <name> ist ein beliebiger Name, der dem Gerät zugewiesen wird. Zur besseren Übersicht wird empfohlen einen Namen in der Form " FS10_6_12" zu verwenden, wobei "6" den verwendeten Hauscode und "12" die Adresse darstellt.

        <hauscode> entspricht dem Hauscode der verwendeten Fernbedienung bzw. des Gerätes, das gesteuert werden soll. Als Hauscode wird 1-8 verwendet.

        <button> stellt die Tastaturebene bzw. Adresse der verwendeten Geräte dar. Adresse "11" entspricht auf der Fernbedienung FS10-S8 z.B. den beiden Tasten der obersten Reihe.


      Set
        set <name> <value> [<anz>]

        <value> kann einer der folgenden Werte sein:
        • dimdown
        • dimup
        • off
        • on
        Bei dimup und dimdown kann optional mit <anz> die Anzahl der Wiederholungen im Bereich von 1 bis 9 angegeben werden.

        Die set extensions werden unterstützt.


      Attribute
      • IODev
      • do_not_notify
      • eventMap
      • follow-on-for-timer (aktivieren/deaktivieren follow-on-timer)
      • follow-on-timer (Anzahl Sekunden nachdem beim Timer des FS10_SA der state automatisch wieder auf off geht)
      • ignore
      • model (Modelltyp des Gerätes)
        • FS10_ST: Schaltsteckdose
        • FS10_DI: Steckdosendimmer
        • FS10_HD: Deckenbeleuchtungsdimmer
        • FS10_SA: Aufputz-Funkschalter
        • FS10_MS: Markisensteuerung
        • FS10_S4: Fernbedienung 4 Tasten
        • FS10_S8: Fernbedienung 8 Tasten
      • readingFnAttributes
      • repetition (Anzahl Wiederholungen der Sendebefehle)

    FS20

    [EN DE]
      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
      • useSetExtensions
        Falls es auf 0 gesetzt wird, werden die SetExtensions Befehle nicht angeboten. Die Voreinstellung ist 1.


      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

    FULLY

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

    FhemTestUtils

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

    FileLog

    [EN DE]

      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


      • acceptedRange col1:min:max[:regexp] ...
        Dieses Attribut spezifiert eine durch Leerzeichen getrennte Liste von Bereichen. Falls die Spalte (gerechnet ab 0) eines Events eine Zahl ist, und ausserhalb dieses Bereiches liegt, wird das Event nicht geloggt. regexp ist optional, und prüft nur das Event, ohne die Ergauml;nzung durch die üblichen ^ und $. Beispiel:
        attr fl acceptedRange 1:5:35:[Tt]emperature 1:-90:-40:RSSI

      • addLog
        Dieses Attribut enthält eine durch Kommata getrennte Liste von "devspec:readings:maxInterval" Tripel. readings wird als Regexp ausgewertet. Falls nach maxInterval Sekunden kein passendes Event eingetroffen ist, wird der letzte Wert zum Logfile hinzugefügt.

      • 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 mehreren Logdateien gespeichert ist, dann wird für die Anfrage eine temporäre Datei mit dem Inhalt aller 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.

      • filelog-event-min-interval
        Dieses Attribut enthält eine durch Kommata getrennte Liste von "devspec:readings:minInterval" Tripel. readings kann ein regexp sein. Die Daten werden nur dann geschrieben, falls seit dem letzten Auftreten des gleichen Events mindestens minInterval Sekunden vergangen sind. Achtung: nur solche Readings werden geprueft, die zum Zeitpunkt des Attribut setzens existiert haben.

      • ignoreRegexp
      • 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.
          Wird der Attributwert text:linesInTheFile verwendet, werden in der Geräteübersicht die Anzahl der enthaltenen Zeilen pro Logdatei angezeigt.
        Beispiel:
        attr ks300log1 logtype temp4rain10:Temp/Rain,hum6wind8:Hum/Wind,text:Raw-data

      • mseclog

      • outputFormat <perlCode>
        Falls gesetzt, ist die Ausgabezeile das Ergebnis der Auswertung. Voreinstellung ist "$TIMESTAMP $NAME $EVENT\n".
        Achtung: nur dieses Format ist kompatibel mit dem SVG-Editor.

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

    [EN DE]
      Eine deutsche Version der Dokumentation ist derzeit nicht vorhanden. Die englische Version ist hier zu finden:
      GEOFANCY

    GFPROBT

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

    GHoma

    [EN DE]
        Verbindet fhem mit einem G-Homa Zwischenstecker

        Vorbereitung:
      • WLAN konfigurieren (bis Firmware 1.06):
        Gerät in den AP modus bringen (Knopf für mehr als 3s drücken, diesen Schritt wiederholen bis die LED permanent leuchtet)
        Nun einen Computer mit der SSID G-Home verbinden.
        Im Browser zu 10.10.100.254 (username:passwort = admin:admin)
        In STA Setting WLAN Einstellungen eintragen
      • WLAN konfigurieren:
        Gerät in den AP modus bringen (Knopf für mehr als 3s drücken, diesen Schritt wiederholen bis die LED permanent leuchtet)
        Mit der G-Homa App das WLAN des Zwischensteckers einstellen
      • Network Parameters settings (bis Firmware 1.06):
        Other Setting -> Protocol auf TCP-Server
        Other Setting -> Port ID (wird später für FHEM benötigt)
        Other Setting -> Server Address (IP Adresse des FHEM Servers)
      • Network Parameters settings:
        Über set ... ConfigAll des Server Gerätes die Parameter automatisch setzen.
      • Optional:
        Im Router alle ausgehenden Verbindungen für G-Homa blockieren.


      Define
        define <name> GHoma <port>
        Legt ein GHoma Server device an.
        Neue Zwischenstecker werden beim ersten verbinden automatisch angelegt.
        Diese können aber auch manuell angelegt werden:
        define <name> GHoma <Id>
        Die Id besteht aus den letzten 6 Stellen der MAC Adresse des Zwischensteckers.
        Beispiel: MAC= AC:CF:23:A5:E2:3B -> Id= A5E23B

      Set
        set <name> <value>

        Gültige Werte für value:
          off
          on
        Die set extensions werden auch unterstützt.

        Für Server Device:
        set <name> ConfigAll [IP|hostname|FQDN von FHEM]
        Einstellen aller GHoma Zwischenstecker über UDP broadcast auf TCP client mit FHEM Server Adresse und Port des GHoma Server Devices.
        set <name> ConfigSingle <IP des Zwischensteckers> [IP|hostname|FQDN von FHEM]
        Einstellen eines einzelnen GHoma Zwischensteckers über UDP auf TCP client mit FHEM Server Adresse und Port des GHoma Server Devices.
      Attributes
        Für Zwischenstecker devices:
        • restoreOnStartup
          Wiederherstellen der Portzustände nach Neustart
          Standard: last, gültige Werte: last, on, off

        • restoreOnReinit
          Wiederherstellen der Portzustände nach Neustart
          Standard: last, gültige Werte: last, on, off

        • blocklocal
          Wert im Reading State sofort nach Änderung über lokale Taste wiederherstellen
          Standard: no, gültige Werte: no, yes

        Für Server devices:
        • allowfrom
          Regexp der erlaubten IP-Adressen oder Hostnamen. Wenn dieses Attribut gesetzt wurde, werden ausschließlich Verbindungen von diesen Adressen akzeptiert.

      • readingFnAttributes

    GOOGLECAST

    [EN DE]
      GOOGLECAST wird zur Steueung deines Google Cast Devices verwendet

      Note
      Es ist sicherzustellen, dass python3 installiert ist. Zusätzlich werden folgende Pakete benötigt:
      • sudo apt-get install libwww-perl python-enum34 python-dev libextutils-makemaker-cpanfile-perl python3-pip cpanminus
      • sudo pip3 install pychromecast --upgrade
      • sudo pip3 install youtube-dl --upgrade
      • sudo INLINE_PYTHON_EXECUTABLE=/usr/bin/python3 cpanm Inline::Python


      Define
        define <name> GOOGLECAST <name>

        Beispiel:
          define livingroom.chromecast GOOGLECAST livingroom

          Warte ein paar Sekunden bis das Gerät als ONLINE angezeigt wird...

          set livingroom.chromecast play https://www.youtube.com/watch?v=YE7VzlLtp-4

        Die folgenden Medienformate werden unterstützt:
        Unterstützte Medienformate
        Das Abspielen mittels youtube-dl funktioniert für die folgenden URLs:
        Unterstützte youtube-dl - Seiten


      Set
        set <name> <command> [<parameter>]
        Die folgenden Befehle sind definiert:

        • play URL   -   Abspielen einer URL
        • play   -   Abspielen im Sinne von Wiederaufnahme eines zuvor pausierten Abspielvorgangs
        • playFavorite   -   spielt die URL aus den Favoriten favoriteURL_[1-5] ab
        • stop   -   unterbricht den augenblicklichen Abspielvorgang
        • pause   -   pause
        • quitApp   -   schließt die gegenwärtige Applikation wie beispielsweise YouTube
        • skip   -   unterbricht das gegenwärtige Kapitel bzw. Lied und springt zum Nächsten
        • rewind   -   springt zum Anfang des gegenwärtigen Kapitels bzw. Liedes
        • displayWebsite   -   anzeigen einer Webseite auf Chromecast Video

      Attribute
      • favoriteURL_[1-5]   -   Abspeichern von URL - Favoriten um mittels playFavorite [1-5] - Befehl abgespielt zu werden.

      Get
        n/a

    GSI

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

    GUEST

    [EN DE]
      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


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


        Status zu Hause mit anderen GUEST, PET oder ROOMMATE Devices synchronisieren

          Um jeden Statuswechsel zu synchronisieren, welcher _nicht_ dem erreichen oder verlassen des Hauses entspricht, kann das Attribut rr_passStateTo gesetzt werden.

          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 rg_locationHome gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'home' aus.

          Immer wenn eine Lokation mit dem Namen 'underway' gesetzt wird, wird auch der Status auf 'absent' gesetzt, sofern die Anwesenheit bis dahin noch auf 'present' stand. Sofern das Attribut rg_locationUnderway gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'underway' aus. Diese Lokationen werden auch nicht in das Reading 'lastLocation' übertragen.

          Immer wenn eine Lokation mit dem Namen 'wayhome' gesetzt wird, wird das Reading 'wayhome' auf '1' gesetzt, sofern die Anwesenheit zu diesem Zeitpunkt 'absent' ist. Sofern das Attribut rg_locationWayhome gesetzt wurde, so führt das VERLASSEN einer dort aufgeführten Lokation ebenfalls dazu, dass das Reading 'wayhome' auf '1' gesetzt wird. Es gibt also 2 Möglichkeiten den Nach-Hause-Weg-Indikator zu beeinflussen (implizit und explizit).
          Die Ankunft zu Hause setzt den Wert von 'wayhome' zurück auf '0'.

          Wenn Sie auch das GEOFANCY Modul verwenden, können Sie das Reading 'location' ganz einfach über GEOFANCY Ereignisse aktualisieren lassen. Definieren Sie dazu einen NOTIFY-Trigger wie diesen:

          define n_rg_Manfred.location notify geofancy:currLoc_Manfred.* set rg_Manfred:FILTER=location!=$EVTPART1 location $EVTPART1

          Durch das Anlegen von Geofencing-Zonen mit den Namen 'home' und 'wayhome' in der iOS App werden zukünftig automatisch alle Statusänderungen wie oben beschrieben durchgeführt.


      Attribute
        • rg_autoGoneAfter - Anzahl der Stunden, nach denen sich der Status automatisch auf 'gone' ändert, wenn der aktuellen Status 'absent' ist; Standard ist 36 Stunden
        • rg_geofenceUUIDs - Mit Komma getrennte Liste von Geräte UUIDs, die ihren Standort über GEOFANCY aktualisieren. Vermeidet zusätzliche notify/DOIF/watchdog Geräte und kann als Ersatz für das GEOFANCY attribute devAlias dienen. (hier ehr als eine UUID/Device zu hinterlegen ist eher keine gute Idee da die Lokation dann womöglich anfängt zu springen)
        • rg_lang - überschreibt globale Spracheinstellung; hilft beim setzen von Device Attributen, um FHEMWEB Anzeigetext zu übersetzen
        • rg_locationHome - hiermit übereinstimmende Lokationen werden als zu Hause gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'home'
        • rg_locationUnderway - hiermit übereinstimmende Lokationen werden als unterwegs gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'underway'
        • rg_locationWayhome - das Verlassen einer Lokation, die hier aufgeführt ist, lässt das Reading 'wayhome' auf '1' setzen; mehrere Einträge durch Leerzeichen trennen; Standard ist "wayhome"
        • rg_locations - Liste der in FHEMWEB anzuzeigenden Lokationsauswahlliste in FHEMWEB; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
        • rg_moodDefault - die Stimmung, die nach Ankunft zu Hause oder nach dem Statuswechsel von 'awoken' auf 'home' gesetzt werden soll
        • rg_moodSleepy - die Stimmung, die nach Statuswechsel zu 'gotosleep' oder 'awoken' gesetzt werden soll
        • rg_moods - Liste von Stimmungen, wie sie in FHEMWEB angezeigt werden sollen; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
        • rg_noDuration - deaktiviert die kontinuierliche, nicht Event-basierte Berechnung der Zeitspannen (siehe Readings durTimer*)
        • rg_passStateTo - synchronisiere den Status zu Hause mit anderen GUEST, PET oder ROOMMATE Devices; mehrere Devices durch Leerzeichen trennen
        • rg_passPresenceTo - synchronisiere die Anwesenheit mit anderen GUEST, PET oder ROOMMATE Devices; mehrere Devices durch Leerzeichen trennen
        • rg_presenceDevices - übernehmen des presence Status von einem anderen FHEM Device. Bei mehreren Devices diese mit Komma trennen, um ein Update des GUEST Devices auszulösen, sobald ALLE Devices entweder absent oder present sind. Optional kann auch durch : abgetrennt ein Reading Name angegeben werden, ansonsten werden die Readings presence und state berücksichtigt.
        • rg_realname - wo immer GUEST den richtigen Namen verwenden möchte nutzt es den Wert des Attributs alias oder group; Standard ist group
        • rg_showAllStates - die Status 'asleep' und 'awoken' sind normalerweise nicht immer sichtbar, um einen einfachen Zubettgeh-Prozess über das devStateIcon Attribut zu ermöglichen; Standard ist 0
        • rg_states - Liste aller in FHEMWEB angezeigter Status; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Status führen zu Fehlern
        • rg_wakeupDevice - Referenz zu versklavten DUMMY Geräten, welche als Wecker benutzt werden (Teil von RESIDENTS Toolkit's wakeuptimer)
        • subType - Gibt einen bestimmten Typ eines Gasts für das Device an. Dies wird bei der Berechnung des Home Alone Status berücksichtigt. Standard ist "generic"



      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

    GardenaSmartBridge

    [EN DE]
      Voraussetzungen

    • Zusammen mit dem Device GardenaSmartDevice stellt dieses FHEM Modul die Kommunikation zwischen der GardenaCloud und Fhem her. Es können damit Rasenmäher, Bewässerungscomputer und Bodensensoren überwacht und gesteuert werden
    • Das Perl-Modul "SSL Packet" wird benötigt.
    • Unter Debian (basierten) System, kann dies mittels "apt-get install libio-socket-ssl-perl" installiert werden.
    • Das Gardena-Gateway und alle damit verbundenen Geräte und Sensoren müssen vorab in der GardenaApp eingerichtet sein.

    Define

      define <name> GardenaSmartBridge

      Beispiel:

        define Gardena_Bridge GardenaSmartBridge

      Das Bridge Device wird im Raum GardenaSmart angelegt und danach erfolgt das Einlesen und automatische Anlegen der Geräte. Von nun an können die eingebundenen Geräte gesteuert werden. Änderungen in der APP werden mit den Readings und dem Status syncronisiert.



      Readings
      • address - Adresse, welche in der App eingetragen wurde (Langversion)
      • authorized_user_ids -
      • city - PLZ, Stadt
      • devices - Anzahl der Geräte, welche in der GardenaCloud angemeldet sind (Gateway zählt mit)
      • lastRequestState - Letzter abgefragter Status der Bridge
      • latitude - Breitengrad des Grundstücks
      • longitude - Längengrad des Grundstücks
      • name - Name für das Grundstück – Default „My Garden“
      • state - Status der Bridge
      • token - SessionID


      set
      • getDeviceState - Startet eine Abfrage der Daten.
      • getToken - Holt eine neue Session-ID
      • gardenaAccountPassword - Passwort, welches in der GardenaApp verwendet wurde
      • deleteAccountPassword - l&oml;scht das Passwort aus dem Passwortstore


      Attribute
      • debugJSON - JSON Fehlermeldungen
      • disable - Schaltet die Datenübertragung der Bridge ab
      • interval - Abfrageinterval in Sekunden (default: 180)
      • gardenaAccountEmail - Email Adresse, die auch in der GardenaApp verwendet wurde

    GardenaSmartDevice

    [EN DE]
      Zusammen mit dem Device GardenaSmartBridge stellt dieses Fhem-Modul die Kommunikation zwischen der GardenaCloud und Fhem her.

      Wenn das GardenaSmartBridge Device erzeugt wurde, werden verbundene Geräte automatisch erkannt und in Fhem angelegt.
      Von nun an können die eingebundenen Geräte gesteuert werden. änderungen in der App werden mit den Readings und dem Status synchronisiert.

      Bekannte Gardena-Geräte umfassen Rasenmäher, Smart Water Control, Irrigation Control, Smart Sensoren, Steckdosen-Adapter und Pumpe. Zeitpläne können über fhem pausiert/aktiviert werden, das Anlegen oder Löschen erfolgt derzeit nur über die App oder deren Web-Frontend.
  • parkUntilFurtherNotice - Parken des Mähers und Aussetzen des Zeitplans
  • parkUntilNextTimer - Parken bis zum nächsten Start nach Zeitplan
  • startOverrideTimer n - Manuelles Mähen für n Minuten (z.B. 60 = 1h, 1440 = 24h, 4320 = 72h)
  • startResumeSchedule - Zeitplan wieder aktivieren
  • startpoint enable|disable 1|2|3 - Aktiviert oder deaktiviert einen vordefinierten Startbereich
    • set NAME startpoint enable 1
    • set NAME startpoint disable 3 enable 1
  • cancelOverride - (Manuelle) Bewässerung stoppen
  • manualButtonTime n - Bewässerungsdauer für manuellen Knopf auf n Minuten setzen (0 schaltet den Knopf aus)
  • manualOverride n - Manuelle Bewässerung für n Minuten
  • resetValveErrors - Ventilfehler zurücksetzen
  • resumeSchedule - Zeitplan wieder aktivieren
  • stopSchedule n - Zeitplan anhalten für n Stunden (Default: 2038-01-18T00:00:00.000Z, durch Gardena-App als "dauerhaft" interpretiert)
  • operating_mode -Steuert den Operation Mode. Zeitgesteuert wird in Kombination mit dem Wochenzeitplan oder mit "manualOverride" genutzt, automatisch bedeutet, dass die Pumpe immer aktiv ist und die Bewässerung abhängig vom Wert "Einschaltdruck" startet. automatic|scheduled
  • leakage_detection - Steuert die Lekage-Erkennung.
    Hierdurch wird eine Pumpenabschaltung erreicht, sollte die Pumpe unkontrollierten Wasserverlust feststellen. watering|washing_machine|domestic_water_supply|off
  • turn_on_pressure - Einschaltdruck 2.0 - 3.0 Steuert den Einschaltdruck in Scheduled und Automatic Mode. Fällt der Druck bei der Bewässerung unter diese wert, startet die Pumpe, ist der Wert dauerhaft über diesem Wert und es finden kein Durchfluss statt, geht die Pumpe in Standby
  • cancelOverrideValve1 - (Manuelle) Bewässerung an Ventil 1 stoppen
  • cancelOverrideValve2 - (Manuelle) Bewässerung an Ventil 2 stoppen
  • cancelOverrideValve3 - (Manuelle) Bewässerung an Ventil 3 stoppen
  • cancelOverrideValve4 - (Manuelle) Bewässerung an Ventil 4 stoppen
  • cancelOverrideValve5 - (Manuelle) Bewässerung an Ventil 5 stoppen
  • cancelOverrideValve6 - (Manuelle) Bewässerung an Ventil 6 stoppen
  • closeAllValves - Alle Ventile schliessen
  • manualDurationValve1 n - Ventil 1 für n Minuten öffnen
  • manualDurationValve2 n - Ventil 2 für n Minuten öffnen
  • manualDurationValve3 n - Ventil 3 für n Minuten öffnen
  • manualDurationValve4 n - Ventil 4 für n Minuten öffnen
  • manualDurationValve5 n - Ventil 5 für n Minuten öffnen
  • manualDurationValve6 n - Ventil 6 für n Minuten öffnen
  • resumeScheduleValve n - Zeitplan für Ventil n wieder aktivieren
  • stopScheduleValve n m - Zeitplan für Ventil n anhalten für m Stunden (Default: 2038-01-18T00:00:00.000Z durch Gardena-App als "dauerhaft" interpretiert)
  • winter_mode awake|hibernate - Winterschlaf aktivieren oder Gerät aufwecken
  • refresh temperature|humidity|light*
    Wert für Temperatur, Feuchtigkeit oder Helligkeit aktualisieren
    *nur bei Sensor type 1 verfügbar

    • Readings (model = mower/Mäher)

      Readings basieren auf dem Modell Sileno, andere Modelle haben abweichende/zusätzliche Readings abhängig von ihren Funktionen (tbd.)

      • battery-charging - Ladeindikator (0/1)
      • battery-level - Ladezustand der Batterie in Prozent
      • battery-rechargeable_battery_status - Zustand der Batterie (Ausser Betrieb/Kritischer Batteriestand, wechseln Sie jetzt/Niedrig/oK), nicht bei allen Modellen
      • device_info-connection_status - Verbindungs-Status (online/offline/unknown)
      • device_info-category - Eigenschaft des Gerätes (Mäher/Bewässerungscomputer/Bodensensor)
      • device_info-last_time_online - Zeitpunkt der letzten Funkübertragung
      • device_info-manufacturer - Hersteller
      • device_info-product - Produkttyp
      • device_info-serial_number - Seriennummer
      • device_info-sgtin - (tbd.)
      • device_info-version - Firmware Version
      • firmware-firmware_command - Firmware Kommando (Nichts zu tun/Firmwareupload unterbrochen/Firmwareupload/nicht unterstützt)
      • firmware-firmware_status - Firmware Status
      • firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
      • firmware-inclusion_status - Einbindungsstatus
      • internal_temperature-temperature - Interne Geräte Temperatur, nicht bei allen Modellen
      • mower-error - Aktuelle Fehler Meldung
        • Kein Fehler
        • Ausserhalb des Arbeitsbereichs
        • Kein Schleifensignal
        • Falsches Schleifensignal
        • Problem Schleifensensor, vorne
        • Problem Schleifensensor, hinten
        • Eingeschlossen
        • Steht auf dem Kopf
        • Niedriger Batteriestand
        • Batterie ist leer
        • Kein Antrieb
        • Angehoben
        • Eingeklemmt in Ladestation
        • Ladestation blockiert
        • Problem Stosssensor hinten
        • Problem Stosssensor vorne
        • Radmotor rechts blockiert
        • Radmotor links blockiert
        • Problem Antrieb, rechts
        • Problem Antrieb, links
        • Schneidsystem blockiert
        • Fehlerhafte Verbindung
        • Standardeinstellungen
        • Elektronisches Problem
        • Problem Ladesystem
        • Kippsensorproblem
        • Rechter Radmotor überlastet
        • Linker Radmotor überlastet
        • Ladestrom zu hoch
        • Vorübergehendes Problem
        • SK 1 nicht gefunden
        • SK 2 nicht gefunden
        • SK 3 nicht gefunden
        • Problem die Ladestation zu finden
        • Kalibration des Suchkabels beendet
        • Kalibration des Suchkabels fehlgeschlagen
        • Kurzzeitiges Batterieproblem
        • Batterieproblem
        • Alarm! Mäher ausgeschalten
        • Alarm! Mäher gestoppt
        • Alarm! Mäher angehoben
        • Alarm! Mäher gekippt
        • Verbindung geändert
        • Verbindung nicht geändert
        • COM board nicht verfügbar
        • Rutscht
      • mower-override_end_time - Zeitpunkt wann der manuelle Betrieb beendet ist
      • mower-source_for_next_start - Grund für den nächsten Start
        • Kein Grund
        • Mäher wurde geladen
        • SensorControl erreicht
        • Wochentimer erreicht
        • Stoppuhr Timer
        • Undefiniert
      • mower-status - Mäher Status (siehe state)
      • mower-timestamp_last_error_code - Zeitpunkt des letzten Fehlers
      • mower-timestamp_next_start - Zeitpunkt des nächsten geplanten Starts
      • mower_stats-charging_cycles - Anzahl Ladezyklen
      • mower_stats-collisions - Anzahl Zusammenstösse
      • mower_stats-cutting_time - Schnittzeit in Stunden
      • mower_stats-running_time - Laufzeit in Stunden (inkl. Schnittzeit)
      • mower_timer-mower_timer - (tbd.)
      • mower_timer-mower_timer_timestamp - (tbd.)
      • mower_type-base_software_up_to_date - Software aktuell (0/1)
      • mower_type-device_type - Gerätetyp
      • mower_type-device_variant - Gerätevariante
      • mower_type-mainboard_version - Mainboard-Version
      • mower_type-mmi_version - MMI-Version
      • mower_type-serial_number - Seriennummer
      • radio-quality - Indikator für die Funkverbindung in Prozent
      • radio-state - Verbindungsqualität (schlecht/schwach/gut/Undefiniert)
      • scheduling-schedules_event_n_end_at - Endzeit des Zeitplans 1
      • scheduling-schedules_event_n_id - ID des Zeitplans 1
      • scheduling-schedules_event_n_start_at - Startzeit des Zeitplans 1
      • scheduling-schedules_event_n_weekly - Wochentage des Zeitplans 1 (kommagetrennt)
      • ...weitere Readings für zusätzliche Zeitpläne (falls angelegt)
      • scheduling-schedules_events_count - Anzahl angelegter Zeitpläne
      • startpoint-1-enabled - starpoint 1 enabled (0/1)
      • ...weitere Readings für zusätzliche Startpunkte (falls angelegt)
      • state - Status des Mähers
        • Pausiert
        • Mähen
        • Suche Ladestation
        • Lädt
        • Mähen
        • Wird aktualisiert ...
        • Wird eingeschaltet ...
        • Geparkt nach Zeitplan
        • Geparkt
        • Der Mäher ist ausgeschaltet
        • Deaktiviert. Abdeckung ist offen oder PIN-Code erforderlich
        • Unbekannter Status
        • Fehler
        • Neustart ...
        • Deaktiviert. Manueller Start erforderlich
        • Manuelles Mähen
        • Geparkt durch SensorControl
        • Abgeschlossen
        • Winterschlaf - Gerät ist im Winterschlaf
      • winter_mode - Status Winterschlaf (awake/hibernate)


      Readings (model = watering_computer/Bewässerungscomputer)
      • ambient_temperature-temperature - Umgebungstemperatur in Celsius
      • battery-disposable_battery_status - Batteriezustand
      • battery-level - Ladezustand der Batterie in Prozent
      • device_info-category - Art des Geräts
      • device_info-connection_status - Verbindungsstatus (online/offline/unknown)
      • device_info-last_time_online - Zeitpunkt der letzten Funkübertragung
      • device_info-manufacturer - Hersteller
      • device_info-product - Produkttyp
      • device_info-serial_number - Seriennummer
      • device_info-sgtin - (tbd.)
      • device_info-version - Firmware Version
      • error-error - Fehlermeldung (tbd.)
      • error-valve_error_1_severity - (tbd.)
      • error-valve_error_1_type - (tbd.)
      • error-valve_error_1_valve_id - ID des fehlerhaften Ventils
      • firmware-firmware_available_version - Neue Firmware (nur wenn verfügbar)
      • firmware-firmware_command - Firmware-Kommando (idle/firmware_cancel/firmware_upload/unsupported)
      • firmware-firmware_status - Firmware Status
      • firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
      • firmware-inclusion_status - Einbindungsstatus
      • manualButtonTime - Bewässerungszeit für den Geräte-Knopf in Minuten
      • radio-quality - Indikator für die Funkverbindung in Prozent
      • radio-state - Verbindungsqualität (schlecht/schwach/gut/Undefiniert)
      • scheduling-scheduled_watering_end - Endzeit des nächsten Zeitplans
      • scheduling-scheduled_watering_next_start - Startzeit des nächsten Zeitplans
      • scheduling-schedules_event_n_valve_1_end_at - Endzeit von Zeitplan 1
      • scheduling-schedules_event_n_valve_1_id - ID von Zeitplan 1
      • scheduling-schedules_event_n_valve_1_start_at - Startzeit von Zeitplan 1
      • scheduling-schedules_event_n_valve_1_weekly - Wochentage von Zeitplan 1
      • scheduling-schedules_events_count - Anzahl angelegter Zeitpläne
      • scheduling-schedules_paused_until - Datum/Uhrzeit, bis wann Zeitplan pausiert ist (2038-01-18T00:00:00.000Z wird von Gardena-Cloud als dauerhaft angesehen)
      • state - Status des Geräts
        • geschossen - Ventil geschlossen, keine Zeitpläne definiert
        • geschlossen. Zeitplan dauerhaft pausiert - Ventil geschlossen, Zeitplan dauerhaft pausiert
        • geschlossen. Nächste Bewässerung: YYYY-MM-DD HH:MM - Ventil geschlossen, nächster Zeitplan-Start YYYY-MM-DDTHH:MM:00.000Z
        • will be irrigated n minutes remaining. - watering, n minutes remaining (depending on manual button time or on pre-defined schedule)
        • offline - Gerät ist ausgeschaltet/hat keine Verbindung
        • Winterschlaf - Gerät ist im Winterschlaf
      • watering-watering_timer_1_duration - Gesamt-Dauer der aktuellen Bewässerung in Sekunden
      • watering-watering_timer_1_irrigation_left - Verbleibende Bewässerungszeit in Minuten
      • watering-watering_timer_1_state - Status des Zeitplans
      • watering-watering_timer_1_valve_id - Ventil-ID des Zeitplans
      • winter_mode - Status Winterschlaf (awake/hibernate)


      Readings (model = ic24)
      • device_info-category - Art des Geräts
      • device_info-connection_status - Verbindungsstatus (online/offline/unknown)
      • device_info-last_time_online - Zeitpunkt der letzten Funkübertragung
      • device_info-manufacturer - Hersteller
      • device_info-product - Produkttyp
      • device_info-serial_number - Seriennummer
      • device_info-sgtin - (tbd.)
      • device_info-version - Firmware Version
      • error-error - Fehlermeldung (tbd.)
      • error-valve_error_0_severity - (tbd.)
      • error-valve_error_0_type - (tbd.)
      • error-valve_error_0_valve_id - ID des fehlerhaften Ventils
      • ...ggf. weitere Error-Readings
      • firmware-firmware_available_version - Neue Firmware (nur wenn verfügbar)
      • firmware-firmware_command - Firmware-Kommando (idle/firmware_cancel/firmware_upload/unsupported)
      • firmware-firmware_status - Firmware Status
      • firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
      • firmware-inclusion_status - Einbindungsstatus
      • ic24-valves_connected - Verbundene Ventile (ID, kommagetrennt)
      • ic24-valves_master_config - Masterventil (nur, wenn in Gardena-App definiert)
      • radio-quality - Indikator für die Funkverbindung in Prozent
      • radio-state - Verbindungsqualität (schlecht/schwach/gut/Undefiniert)
      • scheduling-scheduled_watering_end - Endzeit des nächsten Zeitplans
      • scheduling-scheduled_watering_end_1 - Endzeit des nächsten Zeitplans für Ventil 1
      • ...weitere Readings für Ventile 2-6
      • scheduling-scheduled_watering_next_start - Startzeit des nächsten Zeitplans
      • scheduling-scheduled_watering_next_start_1 - Startzeit des nächsten Zeitplans für Ventil 1
      • ...weitere Readings für Ventile 2-6
      • scheduling-schedules_event_n_end_at - Endzeit des ersten definierten Zeitplans für Ventil n
      • scheduling-schedules_event_n_id - ID des ersten definierten Zeitplans für Ventil n
      • scheduling-schedules_event_n_start_at - Startzeit des ersten definierten Zeitplans für Ventil n
      • scheduling-schedules_event_n_weekly - Wochentage des ersten definierten Zeitplans für Ventil n
      • scheduling-schedules_events_count - Anzahl angelegter Zeitpläne
      • ...weitere Readings für zusätzliche Zeitpläne/Ventile
      • scheduling-schedules_paused_until_1 - Datum/Uhrzeit, bis wann Zeitplan pausiert ist (2038-01-18T00:00:00.000Z wird von Gardena-Cloud als dauerhaft angesehen)
      • ...weitere Readings für Ventile 2-6
      • state - Status des Geräts
        • geschossen - Ventil geschlossen, keine Zeitpläne definiert
        • geschlossen. Zeitplan dauerhaft pausiert - Ventil geschlossen, Zeitplan dauerhaft pausiert
        • geschlossen. Nächste Bewässerung: YYYY-MM-DD HH:MM - Ventil geschlossen, nächster Zeitplan-Start YYYY-MM-DDTHH:MM:00.000Z
        • wird bewässert. n Minuten verbleibend - Bewässerung aktiv, n Minuten verbleibend (wenn 2 Ventile geöffnet sind, wird die längere Dauer angezeigt)
        • offline - Gerät ist ausgeschaltet/hat keine Verbindung
        • Winterschlaf - Gerät ist im Winterschlaf
      • valve-valve_name_1 - Eigener Name für Ventil 1
      • ...weitere Readings für Ventile 2-6 (if installed)
      • watering-watering_timer_1_duration - Gesamt-Dauer der aktuellen Bewässerung in Sekunden
      • watering-watering_timer_1_irrigation_left - Verbleibende Dauer der aktuellen Bewässerung in Minuten
      • watering-watering_timer_1_state - Status des Timers
      • watering-watering_timer_1_valve_id - Ventil-ID des Timers
      • ...weitere Readings für weitere Ventile/Zeitpläne
      • winter_mode - Status Winterschlaf (awake/hibernate)


      Readings (model = sensor)
      • ambient_temperature-frost_warning - Frostwarnung
      • ambient_temperature-temperature - Umgebungstemperatur in Celsius
      • battery-disposable_battery_status - Batteriezustand
      • battery-level - Ladezustand der Batterie in Prozent
      • device_info-category - Art des Geräts
      • device_info-connection_status - Verbindungsstatus (online/offline/unknown)
      • device_info-last_time_online - Zeitpunkt der letzten Funkübertragung
      • device_info-manufacturer - Hersteller
      • device_info-product - Produkttyp
      • device_info-serial_number - Seriennummer
      • device_info-sgtin - (tbd.)
      • device_info-version - Firmware Version
      • firmware-firmware_available_version - Neue Firmware (nur wenn verfügbar)
      • firmware-firmware_command - Firmware-Kommando (idle/firmware_cancel/firmware_upload/unsupported)
      • firmware-firmware_status - Firmware Status
      • firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
      • firmware-inclusion_status - Einbindungsstatus
      • humidity-humidity - Feuchtigkeit in Prozent
      • light-light - Helligkeit in Lux
      • radio-quality - Indikator für die Funkverbindung in Prozent
      • radio-state - Verbindungsqualität (schlecht/schwach/gut/Undefiniert)
      • soil_temperature-temperature - Erd-Temperatur in Celsius
      • state - Status (Temperatur (T:), Feuchtigkeit (H:), Helligkeit (L:)|offline|Winterschlaf)
      • winter_mode - Status Winterschlaf (awake/hibernate)


      Readings (model = sensor2)

      "sensor2" hat keine Helligkeitsmessung oder Umgebungstemperatur, und es legt die Frost-Warnung in einem anderen Reading ab. Ansonsten ist er mehr oder weniger identisch zum "sensor".

      • battery-disposable_battery_status - Batteriezustand
      • battery-level - Ladezustand der Batterie in Prozent
      • device_info-category - Art des Geräts
      • device_info-connection_status - Verbindungsstatus (online/offline/unknown)
      • device_info-last_time_online - Zeitpunkt der letzten Funkübertragung
      • device_info-manufacturer - Hersteller
      • device_info-product - Produkttyp
      • device_info-serial_number - Seriennummer
      • device_info-sgtin - (tbd.)
      • device_info-version - Firmware Version
      • firmware-firmware_available_version - Neue Firmware (nur wenn verfügbar)
      • firmware-firmware_command - Firmware-Kommando (idle/firmware_cancel/firmware_upload/unsupported)
      • firmware-firmware_status - Firmware Status
      • firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
      • firmware-inclusion_status - Einbindungsstatus
      • humidity-humidity - Feuchtigkeit in Prozent
      • radio-quality - Indikator für die Funkverbindung in Prozent
      • radio-state - Verbindungsqualität (schlecht/schwach/gut/Undefiniert)
      • soil_model-model_definition - (tbd.)
      • soil_model-model_status - (tbd.)
      • soil_temperature-frost-warning - Frostwarnung
      • soil_temperature-temperature - Erd-Temperatur in Celsius
      • state - Status (Temperatur (T:), Feuchtigkeit (H:), Helligkeit (L:)|offline|Winterschlaf)
      • winter_mode - Status Winterschlaf (awake/hibernate)


      Readings (model = power)
      • (tbd.)


      Readings (model = electronic_pressure_pump)
      • error-error - Fehlermeldung (tbd.)
      • error-valve_error_1_severity - (tbd.)
      • error-valve_error_1_type - (tbd.)
      • error-valve_error_1_valve_id - ID des fehlerhaften Ventils
      • firmware-firmware_available_version - Neue Firmware (nur wenn verfügbar)
      • firmware-firmware_command - Firmware-Kommando (idle/firmware_cancel/firmware_upload/unsupported)
      • firmware-firmware_status - Firmware Status
      • firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
      • firmware-inclusion_status - Einbindungsstatus
      • radio-quality - Indikator für die Funkverbindung in Prozent
      • radio-state - Verbindungsqualität (schlecht/schwach/gut/Undefiniert)
      • scheduling-schedules_event_n__end_at - Endzeit des ersten definierten Zeitplans für Ventil n
      • scheduling-schedules_event_n_id - ID des ersten definierten Zeitplans für Ventil n
      • scheduling-schedules_event_n_start_at - Startzeit des ersten definierten Zeitplans für Ventil n
      • scheduling-schedules_event_n_weekly - Wochentage des ersten definierten Zeitplans für Ventil n
      • scheduling-schedules_events_count - Anzahl angelegter Zeitpläne
      • ...weitere Readings für zusätzliche Zeitpläne/Ventile
      • scheduling-schedules_paused_until_1 - Datum/Uhrzeit, bis wann Zeitplan pausiert ist (2038-01-18T00:00:00.000Z wird von Gardena-Cloud als dauerhaft angesehen)
      • state - Status des Geräts
        • geschossen - Ventil geschlossen, keine Zeitpläne definiert
        • geschlossen. Zeitplan dauerhaft pausiert - Ventil geschlossen, Zeitplan dauerhaft pausiert
        • geschlossen. Nächste Bewässerung: YYYY-MM-DD HH:MM - Ventil geschlossen, nächster Zeitplan-Start YYYY-MM-DDTHH:MM:00.000Z
        • wird bewässert. n Minuten verbleibend - Bewässerung aktiv, n Minuten verbleibend (wenn 2 Ventile geöffnet sind, wird die längere Dauer angezeigt)
        • offline - Gerät ist ausgeschaltet/hat keine Verbindung
        • Winterschlaf - Gerät ist im Winterschlaf
      • watering-watering_timer_1_duration - Gesamt-Dauer der aktuellen Bewässerung in Sekunden
      • watering-watering_timer_1_irrigation_left - Verbleibende Dauer der aktuellen Bewässerung in Minuten
      • watering-watering_timer_1_state - Status des Timers
      • watering-watering_timer_1_valve_id - Ventil-ID des Timers
      • winter_mode - Status Winterschlaf (awake/hibernate)
      • Flussmengen und Lekage-Erkennung
      • flow-dripping_alert sixty
      • flow-flow_rate - FLussrate (600)
      • flow-flow_since_last_reset 13
      • flow-flow_total 20
      • leakage_detection - Status der Lekage-Konfiguration
      • Status des Gerätes Temperataur und Druck-Einstellungen
      • outlet_pressure-outlet_pressure -
      • outlet_pressure-outlet_pressure_max 5.8
      • outlet_temperature-frost_warning - Frostwarnung
      • outlet_temperature-temperature - Außentemperatur
      • outlet_temperature-temperature_max - tbd. 100
      • outlet_temperature-temperature_min - tbd. 0
      • Pumpen-Konfiguration
      • operating_mode - Modus der Pumpe
      • Pumpenstatus aktuell
      • pump-mode - Modus der Pumpe
      • pump-operating_mode – Pumpenmodus automatic|scheduled
      • pump-pump_on_off - Pumpenzustand on|off
      • pump-pump_state - tbd
      • pump-turn_on_pressure - Einschaltdruck 2.0 - 3.0



    Attribute (alle Modelle)
    • IODev - Name des GardenaSmartBridge Devices
    • model watering_computer|sensor|sensor2|mower|ic24|power|electronic_pressure_pump - Modell des GardenaSmartDevice
    • readingValueLanguage en|de - Sprache der Readings englisch oder deutsch (default: englisch, es sei denn, Deutsch ist als globale Sprache gesetzt)



    set (model = mower)
    • parkUntilFurtherNotice - Parken des Mähers und Aussetzen des Zeitplans
    • parkUntilNextTimer - Parken bis zum nächsten Start nach Zeitplan
    • startOverrideTimer n - Manuelles Mähen für n Minuten (z.B. 60 = 1h, 1440 = 24h, 4320 = 72h)
    • startResumeSchedule - Zeitplan wieder aktivieren
    • startPoint enable|disable 1|2|3 - Aktiviert oder deaktiviert einen vordefinierten Startbereich
      • set NAME startpoint enable 1
      • set NAME startpoint disable 3 enable 1
    • winter_mode hibernate|awake - Winterschlaf aktivieren oder Gerät aufwecken


    set (model = watering_computer)
    • cancelOverride - (Manuelle) Bewässerung stoppen
    • manualButtonTime n - Bewässerungsdauer für manuellen Knopf auf n Minuten setzen (0 schaltet den Knopf aus)
    • manualOverride n - Manuelle Bewässerung für n Minuten
    • resetValveErrors - Ventilfehler zurücksetzen
    • resumeSchedule - Zeitplan wieder aktivieren
    • stopSchedule n - Zeitplan anhalten für n Stunden (Default: 2038-01-18T00:00:00.000Z, durch Gardena-App als "dauerhaft" interpretiert)
    • winter_mode hibernate|awake - Winterschlaf aktivieren oder Gerät aufwecken


    set (model = ic24)
    • cancelOverrideValve1 - (Manuelle) Bewässerung an Ventil 1 stoppen
    • cancelOverrideValve2 - (Manuelle) Bewässerung an Ventil 2 stoppen
    • cancelOverrideValve3 - (Manuelle) Bewässerung an Ventil 3 stoppen
    • cancelOverrideValve4 - (Manuelle) Bewässerung an Ventil 4 stoppen
    • cancelOverrideValve5 - (Manuelle) Bewässerung an Ventil 5 stoppen
    • cancelOverrideValve6 - (Manuelle) Bewässerung an Ventil 6 stoppen
    • closeAllValves - Alle Ventile schliessen
    • manualDurationValve1 n - Ventil 1 für n Minuten öffnen
    • manualDurationValve2 n - Ventil 2 für n Minuten öffnen
    • manualDurationValve3 n - Ventil 3 für n Minuten öffnen
    • manualDurationValve4 n - Ventil 4 für n Minuten öffnen
    • manualDurationValve5 n - Ventil 5 für n Minuten öffnen
    • manualDurationValve6 n - Ventil 6 für n Minuten öffnen
    • resetValveErrors - Ventilfehler zurücksetzen
    • resumeScheduleValve n - Zeitplan für Ventil n wieder aktivieren
    • stopScheduleValve n m - Zeitplan für Ventil n anhalten für m Stunden (Default: 2038-01-18T00:00:00.000Z durch Gardena-App als "dauerhaft" interpretiert)
    • winter_mode hibernate|awake - Winterschlaf aktivieren oder Gerät aufwecken


    set (model = sensor)
    • refresh temperature|humidity|light - Sensorwert für Temperatur, Feuchtigkeit oder Helligkeit aktualisieren
    • winter_mode hibernate|awake - Winterschlaf aktivieren oder Gerät aufwecken


    set (model = sensor2)
    • refresh temperature|humidity - Sensorwert für Temperatur oder Feuchtigkeit aktualisieren
    • winter_mode hibernate|awake - Winterschlaf aktivieren oder Gerät aufwecken


    set (model = power)
    • (tbd.)


    set (model = electronic_pressure_pump)
    • manualOverride n - Bewässerungdauer in Minuten
    • cancelOverride - (Manuelle) Bewässerung stoppen
    • operating_mode - Steuert den Operation Mode. Zeitgesteuert wird in Kombination mit dem Wochenzeitplan oder mit "manualOverride" genutzt, automatisch bedeutet, dass die Pumpe immer aktiv ist und die Bewässerung abhängig vom Wert "Einschaltdruck" startet. automatic|scheduled
    • leakage_detection - Steuert die Lekage-Erkennung.
      Hierdurch wird eine Pumpenabschaltung erreicht, sollte die Pumpe unkontrollierten Wasserverlust feststellen. watering|washing_machine|domestic_water_supply|off
    • turn_on_pressure - Einschaltdruck 2.0 - 3.0 Steuert den Einschaltdruck in Scheduled und Automatic Mode. Fällt der Druck bei der Bewässerung unter diese wert, startet die Pumpe, ist der Wert dauerhaft über diesem Wert und es finden kein Durchfluss statt, geht die Pumpe in Standby
    • resetValveErrors - Ventilfehler zurücksetzen
    • winter_mode hibernate|awake - Winterschlaf aktivieren oder Gerät aufwecken

    GasCalculator

    [EN DE]
      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 dem kontinuierlich wachsenden Zählerstand 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 für Readings welche im CalculatorDevice gespeichert wurden und zum update des Offsets zwischen den Zählern.
        Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit set - Befehl gesetzt werden.
        Der Befehl "SyncCounter" errechnet und update den Offset. Hierbei einfach den Wert des mechanischen Zählers eingeben.

      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 Installation des Gas-Zälers in Relation b zum Höhenunterschieds der Hauptversorgungsstation des Gas Zulieferers.
          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

    [EN DE]
      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

    [EN DE]
      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

    HEOSGroup

    [EN DE]
      HEOSGroup

      In Kombination mit HEOSMaster and HEOSPlayer steuert dieses FHEM Modul das Denon Multiroom-Soundsystem mit Hilfe einer telnet Socket-Verbindung und dem HEOS Command Line Interface (CLI).

      Nachdem der Master einmal angelegt ist werden die Player und Gruppierungen des Systems automatisch erkannt und in FHEM angelegt. Von da an können die Player und Gruppierungen gesteuert werden und Veränderungen in der HEOS App oder am Reveiver werden mit dem Status und den Media Readings der Player und Gruppierungen synchronisiert.

      Gruppierungen können aus einem Player heraus mit "groupWithMember" erzeugt werden.

      Beispiel:

        set Wohnzimmer groupWithMember Küche

      ... erzeugt eine Gruppierung namens "Wohnzimmer+Küche" mit dem Player "Wohnzimmer" als Leader und dem Player "Küche" als Mitglied.

      Readings
      • channel - Nr des gerade abgespielten Favoriten
      • currentAlbum - Name des gerade abgespielten Albums
      • currentArtist - Name des gerade abgespielten Künstlers
      • currentImageUrl - URL des Albumcovers, Senderlogos, etc.
      • currentMedia - Medientyp des gerade abgespielten Streams (song|station|genre|artist|album|container)
      • currentMid - media ID
      • currentQid - queue ID
      • currentSid - source ID
      • currentStation - Name des gerade abgespielten Senders
      • currentTitle - Name des gerade abgespielten Titels
      • error - letzte Fehlermeldung
      • gid - Gruppen-ID
      • leader - Leader der Gruppierung
      • member - Mitglied(er) der Gruppierung
      • mute - Player mute Status (on|off)
      • name - Name der Gruppierung
      • playStatus - Status des Players (play|pause|stop)
      • repeat - Player Repeat Status (on_all|on_one|off)
      • shuffle - Player Shuffle Status (on|off)
      • state - Status der Player-Verbindung (on|off)
      • volume - aktuelle Lautstärke (0-100)
      • volumeDown - Schrittweite Lautstärke (1-10, default 5)
      • volumeUp - Schrittweite Lautstärke (1-10, default 5)


      set
      • channel <nr> - spielt den vorher mit der App erstellten Favoriten <nr> ab
      • channelUp - schaltet auf den nächsten Favoriten in der Favoritenliste um
      • channelDown- schaltet auf vorherigen Favoriten in der Favoritenliste um
      • clearGroup - Auflösen der Gruppierung (setzt state auf off)
      • getGroupInfo - holt die Media-Informationen der Gruppierung
      • mute on|off - setze den mute Status on|off
      • next - spielt nächsten Titel in Warteschlange
      • pause - setzt den Status des Players auf "pause"
      • play - setzt den Status des Players auf "play"
      • playPlaylist <myList> - spielt die Playlist <myList> ab
      • prev - spielt vorherigen Titel in Warteschlange
      • repeat - setzt den Player Repeat Status (on_all|on_one|off)
      • shuffle - setzt den Player Shuffle Status auf on|off
      • stop - setzt den Status des Players auf "stop"
      • volume - setzt die Lautstärke auf 0..100
      • volumeDown - verringert die Lautstärke um <volumeDown>
      • volumeUp - erhöht die Lautstärke um <volumeUp>


      state
      • Status der Gruppierung (on|off)

    HEOSMaster

    [EN DE]
      HEOSMaster

      In Kombination mit HEOSPlayer und HEOSGroup steuert dieses FHEM Modul das Denon Multiroom-Soundsystem mit Hilfe einer telnet Socket-Verbindung und dem HEOS Command Line Interface (CLI).

      Voraussetzung
      • Installation der folgenden Pakete: apt-get install libjson-perl libnet-telnet-perl libencode-perl

      Define

        define <name> HEOSMaster <IP address>

        Example:

          define MyMasterBox HEOSMaster 192.168.178.67

        <IP address> ist die IP-Adresse des HEOS Receivers oder der HEOS Box. Das Master Device wird im Raum HEOS angelegt und danach erfolgt das Einlesen und automatische Anlegen der Player. Von nun an können die Player gesteuert werden. Außerdem wird der Status und die Media Readings der Player entsprechend geändert, wenn man in der HEOS-App oder direkt am Receiver etwas ändert.

        Readings
        • enableChangeEvents - Status der Event Wiedergabe auf dem CLI Master
        • heosAccount - signed_out | signed_in as <HEOSAccount>
        • lastCommand - zuletzt ausgeführtes Kommando
        • lastPlayerId - Player-Id des Geräts, welches das Kommando ausgeführt hat
        • lastPlayerName - Player-Name des Geräts, welches das Kommando ausgeführt hat
        • lastResult - Ergebnis des zuletzt ausgeführten Kommandos
        • state - Status des HEOSMaster


        set
        • checkAccount - prüft das HEOS Konto
        • enableChangeEvents - aktiviert die Event Wiedergabe auf dem CLI Master
        • getGroups - holt eine Liste aller Gruppen und legt die Devices an, sofern noch nicht geschehen
        • getPlayers - holt eine Liste aller Player und legt die Devices an, sofern noch nicht vorhanden
        • password - setzt das Passwort des HEOS Kontos
        • reboot - rebootet das CLI Interface am Master
        • reopen - versucht eine neue Socket-Verbindung zum CLI Master aufzubauen
        • signAccount In|Out - anmelden|abmelden am HEOS Konto (attr MyMasterBox heosUsername <username>)


        get
        • ShowAccount - zeigt das HEOS Konto an


        state
        • connected - der HEOSmaster ist mit dem CLI Master verbunden
        • not connected - der HEOSmaster ist nicht mit dem CLI Master verbunden


        Attributes
        • heosUsername - Benutzername des HEOS Kontos


    HEOSPlayer

    [EN DE]
      HEOSPlayer

      In Kombination mit HEOSMaster and HEOSGroup steuert dieses FHEM Modul das Denon Multiroom-Soundsystem mit Hilfe einer telnet Socket-Verbindung und dem HEOS Command Line Interface (CLI).

      Nachdem der Master einmal angelegt ist werden die Player und Gruppierungen des Systems automatisch erkannt und in FHEM angelegt. Von da an können die Player und Gruppierungen gesteuert werden und Veränderungen in der HEOS App oder am Reveiver werden mit dem Status und den Media Readings der Player und Gruppierungen synchronisiert.

      Readings
      • channel - Nr des gerade abgespielten Favoriten
      • currentAlbum - Name des gerade abgespielten Albums
      • currentArtist - Name des gerade abgespielten Künstlers
      • currentImageUrl - URL des Albumcovers, Senderlogos, etc.
      • currentMedia - Medientyp des gerade abgespielten Streams (song|station|genre|artist|album|container)
      • currentMid - media ID
      • currentQid - queue ID
      • currentSid - source ID
      • currentStation - Name des gerade abgespielten Senders
      • currentTitle - Name des gerade abgespielten Titels
      • error - letzte Fehlermeldung
      • gid - ID der Gruppe, in der der Player Mitglied ist
      • ip-address - IP-Adresse des Players
      • lineout - lineout level type (variable|Fixed)
      • model - Modell des HEOS Lautsprechers (z.B. HEOS 1)
      • mute - Player mute Status (on|off)
      • name - Name des Players (aus der App übernommen)
      • network - Netzwerkverbindung (wired|wifi)
      • playStatus - Status des Players (play|pause|stop)
      • repeat - Player Repeat Status (on_all|on_one|off)
      • shuffle - Player Shuffle Status (on|off)
      • state - Status der Player-Verbindung (on|off)
      • version - Softwareversion des HEOS Lautsprechers
      • volume - aktuelle Lautstärke (0-100)
      • volumeDown - Schrittweite Lautstärke (1-10, default 5)
      • volumeUp - Schrittweite Lautstärke (1-10, default 5)


      set
      • aux - aktiviert die Quelle am AUX-Eingang des Players
      • channel <nr> - spielt den vorher mit der App erstellten Favoriten <nr> ab
      • channelUp - schaltet auf den nächsten Favoriten in der Favoritenliste um
      • channelDown- schaltet auf vorherigen Favoriten in der Favoritenliste um
      • clear queue - löscht die Warteschlange
      • deletePlaylist <myList> - löscht die Playlist <myList>
      • set <hp1> groupWithMember <hp2> - erzeugt eine Gruppierung mit hp1 als Leader und hp2 als Mitglied
      • input sid[,cid][,mid] - setze input source-id[,container-id][,media-id]
        • Beispiel: set Küche input 1027,1772574848,inputs/tvaudio
          startet "TV-Audio" auf dem Player "Küche"
      • mute on|off - setzt den mute Status on|off
      • next - spielt nächsten Titel in Warteschlange
      • pause - setzt den Status des Players auf "pause"
      • play - setzt den Status des Players auf "play"
      • playPlaylist <myList> - spielt die Playlist <myList> ab
      • playQueueItem <nr> - spielt Titel <nr> in Warteschlange
      • prev - spielt vorherigen Titel in Warteschlange
      • repeat - setzt den Player Repeat Status (on_all|on_one|off)
      • saveQueue <myList> - speichert die Warteschlange als Playlist <myList>
      • shuffle - setzt den Player Shuffle Status auf on|off
      • stop - setzt den Status des Players auf "stop"
      • volume - setzt die Lautstärke auf 0..100
      • volumeDown - verringert die Lautstärke um <volumeDown>
      • volumeUp - erhöht die Lautstärke um <volumeUp>


      get
      • ls - listet Musikquellen (Eingänge, Playlists, Favoriten, Musik-Dienste, ...)
      • channelscount - Anzahl der Favoriten


      state
      • Status der Player-Verbindung (on|off)


      attributes
      • channelring - Beim Erreichen des letzten Favoriten schaltet ChannelUp/Down im Kreis, also wieder auf den ersten/letzten Favoriten
      • mute2play - Beim Betätigen der Mute-Taste am Lautsprecher wird auch der Stream angehalten

    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

    HMCCURPCPROC

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

    HMLAN

    [EN DE]
      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
      • Set
      • 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-5
        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

    HMS

    [EN DE]
      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

    [EN DE]
      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 (Version 1.4.1)
        • HM-LGW-O-TW-W-EU: coprocessor_update_hm_only.eq3 (Version 1.4.1)
          Bitte zusätzlich sicherstellen, dass die Version der D-LANfirmware mindestens 1.1.5 beträgt. Um auf diese Version zu aktualisieren können die eQ-3 CLI Tools (siehe Wiki) oder der eQ-3 Netfinder genutzt werden. Das passende Image ist: hm-lgw-o-tw-w-eu_update.eq3
          Die Datei hm-lgw-o-tw-w-eu_update.eq3 nicht mit updateCoPro flashen!

      Get

      • assignIDs
        Gibt die aktuell diesem IO-Gerät zugeordneten HomeMatic-Geräte zurück.

      Attribute
      • csmaCa
        Aktiviert oder deaktiviert CSMA/CA (Carrier sense multiple access with collision avoidance), auch bekannt als Listen-Before-Talk.
        Default: 0 (deaktiviert)
      • dummy
        Ermöglicht die Definition des Geräts ohne jegliche Interaktion mit einem physikalischen Gerät.
        Default: nicht gesetzt
      • dutyCycle
        Aktiviert oder deaktiviert die Überprüfung des Arbeitszyklus (1%-Regel) durch das Sendemodul.
        Die Abschaltung dieser Funktion kann in verschiedenen Ländern gegen das Gesetz verstossen, weshalb zuerst die Situation anhand lokaler Richtlinien zu prüfen ist!
        Default: 1 (aktiviert)
      • 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.
      • loadEvents
        Aktiviert die Erzeugung von Log-Nachrichten über die Funklast des Interfaces (in Prozent der erlaubten Sendezeit). Default: 0 (deaktiviert)
      • logIDs
        Aktiviert die gezielte Erzeugung von Log-Nachrichten. Der Parameter ist eine durch Komma getrennte Liste an HMIds oder HM Geräte-/Kanalnamen, deren Nachrichten aufgezeichnet werden sollen.
        • all: Zeichnet die Rohnachrichten aller HMIds auf
        • sys: Zeichnet Systemnachrichten (z.B. Keep-Alive) auf
        Um alle möglichen Nachrichten aufzuzeichnen, kann all,sys genutzt werden.
      • qLen
        Maximale Anzahl an Kommandos in der internen Warteschlange des HMUARTLGW-Moduls. Neue Kommandos werden verworfen, wenn die Warteschlange gefüllt ist. Jedes Kommando hat eine Lebensdauer von 3s, sobald es aktiv verarbeitet wird. Die Verzögerung eines Kommandos beträgt im schlechtesten Fall also qLen * 3s (3 Minuten mit den Defaulteinstellungen).
        Default: 60

    HMinfo

    [EN DE]
      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.
      • peerUsg [filter]
        erzeugt eine komplette Querverweisliste aller Paarungen und die Nutzung der Templates
      • peerXref [filter]
        erzeugt eine komplette Querverweisliste aller Paarungen (Peerings)
      • configCheck [filter]
        Plausibilitätstest aller HM Einstellungen inklusive regCheck und peerCheck
      • configChkResult
        gibt das Ergebnis eines vorher ausgeführten configCheck zurück
      • templateList [<name>]
        zeigt eine Liste von Vorlagen. Ist kein Name angegeben, werden alle Vorlagen angezeigt
      • configInfo [<name>]
        Informationen zu getConfig einträgen
      • templateUsg <template> [sortPeer|sortTemplate]
        template filtert die Einträge nach diesem template
        templateUsgG (für alle Geräte)
      • 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
      • showTimer
        Zeigt alle derzeit laufenden Timer an.

      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.
        • cmdRequestG
          commando cmdRequestG wird an alle Entites verschickt um einen update zu erzwingen und die Zugriffe zu prüfen.
          Das Kommando geht nur an Entites, welche auch statusRequest unterstützen.
          ping: es wird an einen der kanäle ein status request verschickt
          status: jede entity welche das kommando unterstützt wird angesprochen
        • 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
          • Protocol set clear msgEvents fuer alle devices mit protokoll Fehlern
          • 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 vergleichen will. Ein purge vorher macht Sinn. Siehe CUL_HM purgeConfig.

        • tempList [filter] [save|restore|verify|status|genPlot] [<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.
        • x-deviceReplace <oldDevice> <newDevice>
          Ersetzen eines alten oder defekten Device. Das neue Ersatzdevice muss kompatibel zum Alten sein - FHEM prüft das nur rudimentär. Der Anwender sollt es sorgsam prüfen.
          Das Kommando muss aus Sicherheitsgründen 2-fach ausgeführt werden. Der erste Aufruf wird mit einem CAUTION quittiert. Nach Auslösen den Kommandos ein 2. mal werden die Devices umbenannt und umkonfiguriert. Er werden alle peerings, Register und Templates im neuen Device UND allen peers umgestellt.
          ACHTUNG: Nach dem Auslösen kann die Änderung nicht mehr automatisch rückgängig gemacht werden. Manuell ist das natürlich möglich.
          Auch ein ückspring auf eine ältere Konfiguration erlaubt KEIN Rückgängigmachen!!!
          Sollte das Device und seine Kanäle über Templates definiert sein - also die Registerlisten - kann im Falle von Problemen in der Übertragung - problemlos wieder hergestellt werden.

      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_battery 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_battery 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
        verifyConfig
      • configTempFile<;configTempFile2><;configTempFile3> Liste der Templfiles (weekplan) welche in HM berücksichtigt werden
        Die Files werden kommasepariert eingegeben. Das erste File ist der Default. Dessen Name muss beim Template nicht eingegeben werden.
      • hmManualOper
        auf 1 gesetzt, verhindert dieses Attribut jede automatische Aktion oder Aktualisierung seitens CUL_HM.
      • hmDefaults
        setzt default Atribute fuer HM devices. Mehrere Attribute sind moeglich, Komma separiert.
        Beispiel:
        attr hm hmDefaults hmProtocolEvents:0_off,rssiLog:0
      • verbCULHM
        Setzt das verbose logging für ausgewählte Aktionen von allen CUL_HM entities.
        allSet: alle set Kommandos fertig zur Ausführung.
        allGet: alle get Anfragen fertig zur Ausführung.
      • autoLoadArchive
        das Register Archive sowie Templates werden nach reboot automatisch geladen. Siehe loadConfig für 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

    [EN DE]

    HOMBOT

    [EN DE]
      HOMBOT - LG Homebot Staubsaugerroboter
      Dieses Modul gibt Euch die Möglichkeit Euren Hombot nach erfolgreichen Hack in FHEM ein zu binden. Voraussetzung ist das Ihr den Hombot Hack gemacht und einen WLAN Stick eingebaut habt. Als Schnittstelle zwischen FHEM und Bot wird der Luigi HTTP Server verwendet. Was genau könnt Ihr nun mit dem Modul machen:
      • Readings über den Status des Hombots werden angelegt
      • Auswahl des Reinigungsmodus ist möglich
      • Starten der Reinigung
      • Beenden der Reinigung
      • zurück zur Homebase schicken
      • Namen vergeben
      • Wochenprogramm einstellen
      • Repeat und Turbo aktivieren

      !!! Voraussetzungen schaffen !!!
      Ihr benötigt zum verwenden des Modules die Programme ssh und sshpass. Desweiteren muß im Homeverzeichnis des fhem Users das Verzeichniss .ssh existieren und darin die Datei known_hosts. Diese sollte eine Passphrass des Bots beinhalten. Am besten Ihr macht als normaler User eine ssh Session zum Bot und kopiert danach die known_hosts Eures normalen Users in das .ssh Verzeichnis des fhem Users. Rechte anpassen nicht vergessen.
      Das Device für den Hombot legt Ihr wie folgt in FHEM an.

      Define

        define <name> HOMBOT <IP-ADRESSE>

        Beispiel:

          define Roberta HOMBOT 192.168.0.23

        Diese Anweisung erstellt ein neues HOMBOT-Device im Raum HOMBOT.Der Parameter <IP-ADRESSE> legt die IP Adresse des LG Hombot fest.
        Das Standard Abfrageinterval ist 180 Sekunden und kann über das Attribut intervall geändert werden. Das Interval ist in Abhängigkeit des Arbeitsstatus dynamisch. Im Status WORKING beträgt es z.B. 30 Sekunden.


      Nach anlegen der Geräteinstanz sollten bereits die ersten Readings erscheinen.


      Readings
      • at_* - Reading für das Wochenprogramm. Startzeit für den jeweiligen Tag
      • batteryPercent - Status der Batterie in %
      • cleanMode - aktuell eingestellter Reinigungsmodus
      • cpu_* - Informationen über die Prozessorauslastung
      • currentBumping - Anzahl der Zusammenstöße mit Hindernissen
      • firmware - aktuell installierte Firmwareversion
      • hombotState - Status des Hombots
      • lastClean - Datum und Uhrzeit der letzten Reinigung
      • lastSetCommandError - letzte Fehlermeldung vom set Befehl
      • lastSetCommandState - letzter Status vom set Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
      • lastStatusRequestError - letzte Fehlermeldung vom statusRequest Befehl
      • lastStatusRequestState - letzter Status vom statusRequest Befehl, Befehl erfolgreich/nicht erfolgreich gesendet
      • luigiSrvVersion - Version des Luigi HTTP Servers auf dem Hombot
      • nickname - Name des Hombot
      • num* - Bisher begonnene und beendete Reinigungen im entsprechenden Modus
      • repeat - Reinigung wird wiederholt Ja/Nein
      • state - Modulstatus
      • turbo - Turbo aktiv Ja/Nein


      Set
      • cleanMode - setzen des Reinigungsmodus (ZZ-ZickZack / SB-Cell by Cell / SPOT-Spiralreinigung
      • cleanStart - Reinigung starten
      • homing - Beendet die Reinigung und lässt die Bot zurück zur Bases kommen
      • nickname - setzt des Bot-Namens. Wird im Reading erst nach einem neustart des Luigiservers oder des Bots sichtbar
      • pause - lässt den Reinigungsproßess pausieren
      • repeat - Reinigung wiederholen? (true/false)
      • schedule - setzen des Wochenprogrammes Bsp. set Roberta schedule Mo=13:30 Di= Mi=14:00,ZZ Do=15:20 Fr= Sa=11:20 So= Man kann also auch den Modus mitgeben!
      • statusRequest - Fordert einen neuen Statusreport beim Device an
      • turbo - aktivieren des Turbomodus (true/false)


    HOMEMODE

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

    HP1000

    [EN DE]
      Define
        define <WeatherStation> HP1000 [<ID> <PASSWORD>]

        Stellt einen Webhook für WLAN-basierte Wetterstationen bereit, die das PWS Protokoll von Weather Underground verwenden (z.B. HP1000, WH2600, WH2601, WH2621, WH2900, WH2950 Wetterstation von Fine Offset Electronics - manchmal auch bekannt als Ambient Weather WS-1001-WIFI oder ähnliches). In Deutschland werden die Geräte zumeist von froggit oder von Conrad unter dem Markennamen Renkforce vertrieben.
        Es muss noch eine dedizierte FHEMWEB Instanz angelegt werden, wo das Attribut webname auf "weatherstation" gesetzt wurde.
        Kein anderer Name funktioniert, da dieser fest in der Wetterstation hinterlegt ist!
        Sofern notwendig, erstellt dieses Modul eine passende FHEMWEB Instanz namens WEBweatherstation während der initialen Definition.

        Da die URI ebenfalls fest kodiert ist, kann mit einer einzelnen FHEM Installation maximal eine Instanz dieses Moduls gleichzeitig verwendet werden.

        Beispiel:
        # ungeschützte Instanz bei der ID und PASSWORD ignoriert werden
        define WeatherStation HP1000

        # geschützte Instanz: Die Wetterstation muss so konfiguriert sein, dass sie
        # diese ID und PASSWORD sendet, damit Daten akzeptiert werden
        define WeatherStation HP1000 MyHouse SecretPassword

        WICHTIG: Im Gerät selbst muss sichergestellt sein, dass ein DNS Name statt einer IP Adresse verwendet wird, da einige Revisionen damit nicht umgehen können.
        Ggf. sollte man hier einmal nach einer neueren Firmware schauen.

      Attributes
      • readingFnAttributes

      • webhookFWinstances
      • Explizite Angabe der FHEMWEB Instanzen, äber die Dateneingaben erlaubt sind (Standard ist weatherstation)
      • wu_id
      • Weather Underground (Wunderground) Stations ID
      • wu_password
      • Weather Underground (Wunderground) Passwort
      • wu_dataValues
      • Ersetzt Werte oder fügt neue Werte hinzu, bevor diese zu Weather Underground übertragen werden.
        Das Format entspricht key=value wobei value im Format set magic sein kann.
      • wu_indoorValues
      • Gibt an, ob die Innenraumwerte mit zu Weather Underground übertragen werden sollen (Standard ist 1=an)
      • wu_push
      • Pushen der Daten zu Weather Underground aktivieren oder deaktivieren (Standard ist 0=aus)
      • wu_pushValues
      • Schränkt die Werte ein, die an Weather Underground übertragen werden. Andernfalls werden alle Werte übertragen.
      • wu_realtime
      • Sendet die Daten an den WU Echtzeitserver statt an den Standard Server (Standard ist 1=an)

    HProtocolGateway

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

    HProtocolTank

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

    HTTPAPI

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

    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

    HVAC_DaikinAC

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

    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

    Hunter Hydrawise

    [EN DE]
      Das Modul empfängt Daten und sendet Befehle über die Hunter Hydrawise API.
      Alle Zonen werden durch eine eindeutige ID identifiziert - diese ID wird verwendet, um die Bewässerungspläne der Zonen zu modifizieren, einschließlich des Betreibens einer Zone, des Anhaltens einer Zone und des Aussetzens einer Zone für eine bestimmte Zeit. Statusinformationen zu allen Zonen, die mit einem Konto verbunden sind, können ebenfalls abgefragt werden.

      Voraussetzungen

        Einen API-Schlüssel können Sie von Ihrem Hydrawise-Konto unter Mein Konto generieren lassen. Dieser hat das Format XXXX-XXXX-XXXX-XXXX.

      Definition und Verwendung

        Das Modul wird mithilfe des API-Keys und des Refreshintervals definiert!

        Definition des Moduls

          define <name> HYDRAWISE <API-KEY> <Intervall>


      Beispiel für eine Moduldefinition:

        define myHydrawise HYDRAWISE 1234-5678-90AB-CDEF 60

      Set
        renewcontext Gibt Details zu allen Controllern zurück, die mit dem Kundenkonto verbunden sind.
        renewRelays Rückgabe von Bewässerungsplänen für Steuergeräte
        run Eine Zone für eine bestimmte Zeitspanne ausführen. 2 Parameter: "relay_id" "zeit_in_sekunden"
        runall Alle Zonen für eine bestimmte Zeitspanne ausführen. 1 Parameter: "zeit_in_sekunden"
        stop Stoppt eine Zone. 1 Parameter: "relay_id"
        stopall Stoppt alle laufenden Zonen.
        suspend Setzt eine Zone für eine bestimmte Zeit aus. 3 Parameter: "relay_id" "DD.MM.YYYY" "HH24:MI"
        suspendall Setzt alle Zonen für eine bestimmte Zeit aus. 2 Parameter: "DD.MM.YYYY" "HH24:MI"

      Get
        help Zeigt die Hilfe für die SET Befehle an

      Readings

        controller_counts Anzahl der vorhandenen Controller
        controller_id Controller ID
        ct1_controller_id Controler 1: ID
        ct1_controller_message Controler 1: Statusnachricht von Hydrawise
        ct1_controller_name Controler 1: Definierter Name in Hydrawise
        ct1_last_contact Controler 1: Letzter Kontakt von Hydrawise zum Controller
        ct1_serial_number Controler 1: Seriennummer des Controllers
        cur_controller_id Aktiver Controller (ID)
        cur_controller_name Aktiver Controllername
        customer_id KundenID von Hydrawise
        presence Status des Moduls: presence oder absent
        relay_counts Anzahl der Relays
        rl1_name Relay 1: Name
        rl1_next Relay 1: Nächste Ausführung der Zone
        rl1_relay Relay 1: Physikalische Zonennummer
        rl1_relay_id Relay 1: Eindeutige ID für diese Zone
        rl1_run_minutes Relay 1: Länge der nächsten Laufzeit. Wenn ein Lauf im Gange ist, gibt der Wert die Anzahl der verbleibenden Sekunden an.

    Hideki

    [EN DE]
      Das Hideki module dekodiert empfangene Nachrichten von Wettersensoren, welche das Hideki Protokoll verwenden.

      Unterstützte Hersteller
      • Arduinos with remote Sensor lib from Randy Simons
      • Bresser
      • Cresta
      • Hama
      • Hideki (Anemometer | UV sensor | Rain level meter | Thermo/hygro-sensor)
      • TFA Dostman
      • 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 ändert 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.

      Generierte Readings
      • battery & batteryState (ok oder low)
      • channel (Der Sensor Kanal)
      • humidity (0-100)
      • state (T:x.xx H:y B:z)
      • temperature (°C)

      • - Hideki spezifisch -
      • comfort_level (Status: Humidity OK... , Wet größer 69% RH, Dry weniger als 40% RH, Temperature and humidity comfortable)
      • package_number (Paketnummer in der letzten Signalfolge, startet bei 1)

      Set
        N/A

      Get
        N/A

      Attribute
      • do_not_notify
      • eventMap
      • ignore
      • readingFnAttributes
      • showtime
      • windDirCorr
        Korrekturwert Ihrer angezeigten Windrichtung in Grad. Der Korrekturwert wird zu dem gemessenen Grad Wert Addiert.
        Beispielwert: 5
        Standardwert: 0
      • windSpeedCorr
        Korrekturwert Ihrer angezeigten Windgeschwindigkeit als Fließkommezahk. Die gemessene Geschwindigkeit wird mit dem angegeben Wert multiplizuert. Der Wert 0 deaktiviert die Funktion.
        Beispielwert: 1.25
        Standardwert: 1

    HourCounter

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

    Husqvarna Automower mit Connect Modul

    [EN DE]
      Voraussetzungen

      • Dieses Modul ermöglicht die Kommunikation zwischen der Husqvarna Cloud und FHEM.
      • Es kann damit jeder Automower, der über ein original Husqvarna Connect Modul (SIM) verfügt, überwacht und gesteuert werden.
      • Der Automower muss vorab in der Husqvarna App eingerichtet sein.

      Define

        define <name> HusqvarnaAutomower

        Beispiel:

          define myMower HusqvarnaAutomower
          attr myMower username YOUR_USERNAME
          attr myMower password YOUR_PASSWORD



        Es müssen die beiden Attribute username und password gesetzt werden. Diese sind identisch mit den Logindaten der Husqvarna App.

      Set
      • startTimer - Startet mit dem nächsten Timer
      • start3h - Startet sofort für 3 Stunden
      • start6h - Startet sofort für 6 Stunden
      • start9h - Startet sofort für 9 Stunden
      • stop - Stoppt/pausiert den Mäher sofort an der aktuellen Position
      • park - Parkt den Mäher in der Ladestation bis auf Weiteres
      • parkTimer - Parkt den Mäher in der Ladestation und startet mit dem nächsten Timer
      • update - Aktualisiert den Status

      Attributes
      • username - Email, die in der Husqvarna App verwendet wird
      • password - Passwort, das in der Husqvarna App verwendet wird

      Optionale Attribute
      • mower - ID des Automowers, sofern mehrere registriert sind. Standard: 0
      • interval - Zeit in Sekunden nach denen neue Daten aus der Husqvarna Cloud abgerufen werden. Standard: 300
      • language - Spracheinstellungen, EN = original Meldungen, DE = deutsche Übersetzung. Standard: DE

      Readings
      • expires - Datum wann die Session der Husqvarna Cloud abläuft
      • batteryPercent - Batteryladung in Prozent (ohne %-Zeichen)
      • mower_id - ID des Automowers
      • mower_battery - Bettrieladung in Prozent (mit %-Zeichen)
      • mower_commandStatus - Status des letzten uebermittelten Kommandos
      • mower_lastLatitude - letzte bekannte Position (Breitengrad)
      • mower_lastLongitude - letzte bekannte Position (Längengrad)
      • mower_mode - aktueller Arbeitsmodus (e. g. AUTO)
      • mower_name - Name des Automowers
      • mower_nextStart - nächste Startzeit
      • mower_state - aktueller Status (e. g. OFF_HATCH_CLOSED_DISABLED, PARKED_IN_CS)
      • mower_cuttingMode - Angabe welcher Bereich gemäht wird (e. g. MAIN_AREA)
      • mower_nextStartSource - detaillierter Status (e. g. COMPLETED_CUTTING_TODAY_AUTO)
      • mower_restrictedReason - Grund für Parken (e. g. SENSOR)
      • provider - Sollte immer Husqvarna sein
      • state - Status der Verbindung zur Husqvarna Cloud (e. g. connected)
      • token - aktueller Sitzungstoken für die Husqvarna Cloud
      • user_id - Nutzer-ID in der Husqvarna Cloud

    Hyperion

    [EN DE]
      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]

      • active
        Aktiviert das Gerät (ahnlich wie attr disable aber ohne speichern zu müssen)
      • 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>
        Justiert 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
      • inactive
        Deaktiviert das Gerät (ahnlich wie attr disable aber ohne speichern zu müssen)
      • 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_ADS1x1x

    [EN DE]
    (en | de)
      Bitte englische Dokumentation verwenden.

      Define
        define <name> I2C_ADS1x1x <I2C Address>
        Der Wert <I2C Address> ist ohne das Richtungsbit
      Set
      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: 5, gültige Werte: Dezimalzahl


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

        <I2C Address> kann ein zweistelliger Hex-Wert (0xnn) oder ein Dezimalwert sein
        Fehlt <I2C Address> wird 0x76 (hexadezimal) = 118 (dezimal) verwendet.
        Als I2C Adresse verstehen sich die 7 MSB, das LSB ist das R/W Bit.

        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ätzlich für die Berechnung des Luftdrucks bezogen auf Meereshöhe (Normalhöhennull) NHN herangezogen.
        Bemerkung: Dies ist ein globales Attribut.

        attr global altitude 220
      • IODev
      • do_not_notify
      • showtime

    I2C_BMP180

    [EN DE]

      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 (Normalhöhennull) NHN 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

    [EN DE]
      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>
        <I2C Address> kann ein zweistelliger Hex-Wert (0xnn) oder ein Dezimalwert sein
        Beispielsweise 0x40 (hexadezimal) = 64 (dezimal). Als I2C Adresse verstehen sich die 7 MSB, das LSB ist das R/W Bit.
      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_EMC1001

    [EN DE]
    (en | de)
      Ermöglicht die Verwendung eines digitalen Temperatur EMC1001 über den I2C Bus des Raspberry Pi.

      I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.
      Define
        define EMC1001 <EMC1001_name> [<I2C Addresse>]

        Fehlt <I2C Address> wird 0x48 verwendet

        Beispiel:
        			define EMC1001 I2C_EMC1001 0x48
        			attr EMC1001 poll_interval 5
        			attr roundTemperatureDecimal 2
        		
      Set
        set EMC1001 readValues

        set <name> readValues
        Aktuelle Temperatur Werte vom Sensor lesen.

      Attribute
      • 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 jeweils den Temperaturwert mit den angegebenen Nachkommastellen.
        Standard: 1, gültige Werte: 0, 1, 2

      • IODev
      • do_not_notify
      • showtime

    I2C_HDC1008

    [EN DE]
      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

    I2C_K30

    [EN DE]
    (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_LM75A

    [EN DE]
    (en | de)
      Ermöglicht die Verwendung eines LM75A I2C Temperatursensors.. I2C-Botschaften werden über ein I2C Interface Modul wie beispielsweise das RPII2C, FRM oder NetzerI2C gesendet. Daher muss dieses vorher definiert werden.
      Das Attribut IODev muss definiert sein.

      Define
        define <name> I2C_LM75A [<I2C Address>]
        <I2C Address> kann ein zweistelliger Hex-Wert (0xnn) oder ein Dezimalwert sein
        Fehlt <I2C Address> wird 0x48 (hexadezimal) = 72 (dezimal) verwendet.
        Als I2C Adresse verstehen sich die 7 MSB, das LSB ist das R/W Bit.
      Set
        set <name> readValues
        Aktuelle Temperatur Werte vom Sensor lesen.

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: 5, gültige Werte: 1,2,5,10,20,30

      • roundTemperatureDecimal
        Anzahl Dezimalstellen für den Temperaturwert
        Standard: 1, gültige Werte: 0 1 2

      • IODev
      • do_not_notify
      • showtime

    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>
        <I2C Address> kann ein zweistelliger Hex-Wert (0xnn) oder ein Dezimalwert sein
        Beispielsweise 0x40 (hexadezimal) = 64 (dezimal). Als I2C Adresse verstehen sich die 7 MSB, das LSB ist das R/W Bit.
      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>
        <I2C Address> kann ein zweistelliger Hex-Wert (0xnn) oder ein Dezimalwert sein
        Beispielsweise 0x40 (hexadezimal) = 64 (dezimal). Als I2C Adresse verstehen sich die 7 MSB, das LSB ist das R/W Bit.
      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>]
        <I2C Address> kann ein zweistelliger Hex-Wert (0xnn) oder ein Dezimalwert sein
        Beispielsweise 0x40 (hexadezimal) = 64 (dezimal). Als I2C Adresse verstehen sich die 7 MSB, das LSB ist das R/W Bit.
        <n channels> ist 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>
        <I2C Address> kann ein zweistelliger Hex-Wert (0xnn) oder ein Dezimalwert sein
        Beispielsweise 0x40 (hexadezimal) = 64 (dezimal). Als I2C Adresse verstehen sich die 7 MSB, das LSB ist das R/W Bit.
      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
        Änderung der Frequenzwerte von PWM0 nach der Formel: Fx = 152/(Tx + 1). Der entsprechende Frequenzwert wird unter Internals angezeigt.
        Standard: 0 (152Hz), gültige Werte: 0-255

      • T1
        Änderung der Frequenzwerte von 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>]
        <I2C Address> kann ein zweistelliger Hex-Wert (0xnn) oder ein Dezimalwert sein
        Beispielsweise 0x40 (hexadezimal) = 64 (dezimal). Als I2C Adresse verstehen sich die 7 MSB, das LSB ist das R/W Bit.
        <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>
        <I2C Address> kann ein zweistelliger Hex-Wert (0xnn) oder ein Dezimalwert sein
        Beispielsweise 0x40 (hexadezimal) = 64 (dezimal). Als I2C Adresse verstehen sich die 7 MSB, das LSB ist das R/W Bit.
      Set
        set <name> <port[,port[...]]> <value>

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

        Beispiel:
          set mod1 Port4 on
          set mod1 Port4,Port6 off
          set mod1 Port4,6 on

      Get
        get <name>

        Aktualisierung aller Werte

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: -, gültige Werte: Dezimalzahl

      • InputPorts
        Durch Komma getrennte Portnummern die als Inputs genutzt werden.
        Ports in dieser Liste können nicht geschrieben werden.
        Standard: -, gültige Werte: 0 - 7

      • InvrtPorts
        Durch Komma getrennte Portnummern die invertiert werden.
        Standard: -, gültige Werte: 0 - 7

      • OnStartup
        Durch Komma getrennte Output Ports und ihr gewünschter Status nach dem Start.
        Ohne dieses Attribut werden alle Ausgänge nach dem Start auf den letzten Status gesetzt.
        Standard: -, gültige Werte: <port>=on|off|last wobei <port> = 0 - 7

      • 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>]
        <I2C Address> kann ein zweistelliger Hex-Wert (0xnn) oder ein Dezimalwert sein
        Beispielsweise 0x40 (hexadezimal) = 64 (dezimal). Als I2C Adresse verstehen sich die 7 MSB, das LSB ist das R/W Bit.
      Set
        set <name> readValues
        Aktuelle Temperatur und Feuchte Werte vom Sensor lesen.

      Attribute
      • poll_interval
        Aktualisierungsintervall aller Werte in Minuten.
        Standard: 5, gültige Werte: 1,2,5,10,20,30

      • roundHumidityDecimal
        Anzahl Dezimalstellen für den Feuchtewert
        Standard: 1, gültige Werte: 0 1 2

      • roundTemperatureDecimal
        Anzahl Dezimalstellen für den Temperaturwert
        Standard: 1, gültige Werte: 0 1 2

      • IODev
      • do_not_notify
      • showtime

    I2C_SHT3x

    [EN DE]
    (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

    [EN DE]
      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')}}


    IOhomecontrol

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

    IOhomecontrolDevice

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

    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

    [EN DE]
      Das InterTechno 433MHZ Protokoll wird von einer Vielzahl von Geräten benutzt. Diese gehören entweder zur Kategorie Sender/Sensoren oder zur Kategorie Empfänger/Aktoren. Es ist das Senden sowie das Empfangen von InterTechno Befehlen möglich. Geräten kötnnen z.B. Schalter, Dimmer usw. sein. Von diesem Modul wird sowohl das Protolkoll 1 sowie das Protokoll 3 unterstützt. Neu empfangene Pakete werden per autocreate in Fhem unter der Kategorie IT angelegt. Hinweis: Für ein AutoCreate muss die Taste innerhalb von 30 Sek 2 mal gedrückt werden.

      Define
        define <name> IT <housecode> <on-code> <off-code> [<dimup-code>] [<dimdown-code>]
        oder
        define <name> IT <ITRotarySwitches|FLS100RotarySwitches>
        oder
        define <name> IT <Adresse 26 Bit> <Group bit> <Unit Code>
        oder
        define <name> IT HE800 <Transmitter ID> <Receiver ID>

        Der Wert von Hauscode ist abhängig vom verwendeten Gerät und besteht aus zehn Ziffern InterTechno-Code Protokoll 1. Da dieser ein tri-State-Protokoll ist, können die Ziffern jeweils die Werte 0/1/F annehmen.
        Bit 11/12 werden für Schalten oder Dimmen verwendet. Da die Hersteller verschiedene Codes verwenden, können hier die (2-stelligen) Codes für an, aus, heller und dunkler (on/off/dimup/dimdown) als tri-State-Ziffern (0/1/F) festgelegt werden.
        Der Wert des ITRotary-Schalters setzt sich aus dem Wert des Buchstaben-Schalters A-P und dem numerischen Schalter 1-16 des InterTechno-Gerätes zusammen, z.B. A1 oder G12.
        Der Wert des FLS100Rotary-Schalters setzt sich aus dem Wert des Schalters I,II,II,IV und dem numerischen Schalter 1-4 des InterTechno-Gerätes zusammen, z.B. I2 oder IV4.
        Die Werte der ITRotary-Schalter und FLS100Rotary-Schalter werden intern in Hauscode-Werte umgewandelt.
        Für Intertechno Protokoll 3 besteht der Hauscode aus 26 Ziffern. Zusätzlich werden noch 4 Ziffern als Unit Code sowie eine Ziffer als Group code benötigt.
        Neues IT Element in FHEM anlegen: define IT myITSwitch IT

        Intertechno Protokoll 1 (ITv1)
        • <housecode> 10 Ziffern lange tri-State-Zahl (0/1/F) abhängig vom benutzten Gerät.
        • <on-code> <off-code> jeweils 2 Ziffern lange quad-State-Zahl (0/1/F/D), die den Einschaltbefehl enthält; die Zahl wird an den <housecode> angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
        • optional <dimup-code> <dimdown-code> jeweils 2 Ziffern lange quad-State-Zahl (0/1/F/D), die den Befehl zum Herauf- und Herunterregeln enthält; die Zahl wird an den <housecode> angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
        • Falls es das Attribut userV1setCodes gibt, werden diese Codes auch für den Empfang verwendet, dabei haben die userV1setCodes Vorrang vor den XMIT Codes.
        • Hinweis: orginal ITv1 devices werden nur beim on Befehl angelegt.
        • Die nicht orginal ITv1 devices können wie folgt angelegt werden:

        • Zum anlegen mit autocreate 2 mal auf "on" drücken:
          2016.11.27 11:47:37.753 4: sduinoD IT: 001F001000 not defined (Switch code: 11)
          2016.11.27 11:47:37.755 2: autocreate: define IT_001F001000 IT 001F001000 0F F0

          Nun auf "off" oder eine andere Taste drücken:
          2016.11.27 11:48:32.004 3: sduinoD IT: Code 1D not supported by IT_001F001000.

          Da dies keine orginal Intertechno Steckdose ist, passt der on/off code im define nicht und muss angepasst werden
          DEF 001F001000 11 1D

        • EV1527
        • Wenn im housecode ein nicht gültiger (10) ITv1 Tristatecode enthalten ist, dann wird es per autocreate als EV1527 angelegt.
          <housecode> 1527xabcde , abcde ist der empfangene housecode im Hex Format
          <on-code> <off-code> jeweils 4 Ziffern lange Bin Zahl (0/1), die den Einschaltbefehl enthält; die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
          optional <dimup-code> <dimdown-code> jeweils 4 Ziffern lange Bin Zahl (0/1), die den Befehl zum Herauf- und Herunterregeln enthält; die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.

          Nach dem anlegen per autocreate muss noch der on/off- und optional der dimcode beim define (DEF) angepasst werden.

        SBC_FreeTec
        • <housecode> 8 Ziffern lange tri-State-Zahl (0/1/F) abhängig vom benutzten Gerät.
        • <on-code> 4 Ziffern lange tri-State-Zahl, die den Einschaltbefehl enthält; die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.
        • <off-code> 4 Ziffern lange tri-State-Zahl, die den Ausschaltbefehl enthält; die Zahl wird an den housecode angefügt, um den 12-stelligen IT-Sendebefehl zu bilden.

        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 SBC_FreeTec_Steck1 IT FFF00FFF 000F 0000
          define itswitch1 IT A1
          define lamp IT J10
          define flsswitch1 IT IV1
          define lamp IT II2
          define HE800_TID1_SW1 IT HE800 1 1

        Für Intertechno Protokoll 3 (ITv3) ist der <housecode> eine 26-stellige Zahl. Zusätzlich wird noch ein 1 stelliger Gruppen-Code, sowie ein 4-stelliger <unit code> verwendet.
        • <address> ist eine 26-stellige Nummer (0/1)
        • <group> ist eine 1-stellige Nummer (0/1)
        • <unit> ist eine 4-stellige Nummer (0/1)

        Beispiele:
          define myITSwitch IT 00111100110101010110011111 0 0000

      Set
        set <name> <value> [<time>]

        wobei value eines der folgenden Schlüsselwörter ist:
            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 oder ein SIGNALduino.
        Anmerkung: Beim Start weist fhem einem InterTechno-Gerät kein IO-Gerät zu. Das Attribut IODev ist daher IMMER zu setzen.

      • eventMap
        Ersetzt Namen von Ereignissen (wie on und off) und set-Parametern. Die Liste besteht dabei aus mit Doppelpunkt verbundenen Wertepaaren, die durch Leerzeichen getrennt sind. Der erste Teil des Wertepaares ist der zu ersetzende Wert, der zweite der neue/gewünschte Wert. Man kann Leerzeichen innerhalb der neuen/gewünschten Werte verwenden, muss dann aber Fhem signalisieren, dass das die Werte nicht mehr durch Leerzeichen getrennt werden. Die geschieht, indem das erste Zeichen der Werteliste ein Komma (,) oder ein Schrägsstrich (/) wird. Dieses Komma bzw der Schrägstrich werden dann als Listenzeichen verwendet. Beispiele:
          attr store eventMap on:open off:closed
          attr store eventMap /on-for-timer 10:open/off:closed/
          set store open

      • 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. Mit Hilfe dieser Information können externe Programme oder Web-Interfaces Geräteklassen unterscheiden, um geeignete Kommandos zu senden (z.B. "on" oder "off" an Schalter, aber "dim..%" an Dimmer usw.). Die Schreibweise der Modellbezeichnung sollten der dem Gerät mitgelieferten Dokumentation in Kleinbuchstaben ohne Leerzeichen entsprechen. Andere Zeichen als a-z 0-9 und - (Bindestrich) sollten vermieden werden. Dies ist die Liste der "offiziellen" Modelltypen:
        Sender/Sensor: itremote
        Dimmer: itdimmer
        Tür/Fensterkontakt (China): itswitch_CHN (closed:1110 open:1010 tamper:0111)
        Empfänger/Actor: itswitch
        EV1527: ev1527

      • ignore
        Durch das Setzen dieser Eigenschaft wird das Gerät nicht durch Fhem beachtet, z.B. weil es einem Nachbarn gehört. Aktivitäten dieses Gerätes erzeugen weder Log-Einträge noch reagieren notifys darauf, erzeugte Kommandos werden ignoriert (wie bei Verwendung des Attributes dummy werden keine Signale gesendet). Das Gerät ist weder in der Ausgabe des list-Befehls enthalten (außer es wird explizit aufgerufen), noch wird es bei Befehlen berücksichtigt, die mit Platzhaltern in Namensangaben arbeiten (siehe devspec). Sie werden weiterhin mit der speziellen devspec (Gerätebeschreibung) "ignored=1" gefunden.

      • ITclock
        ITclock ist die kleinste Basispulslänge beim Senden des Intertechno V1 Protokolls.
        Ein Signal beim IT-Protokoll besteht immer aus einer Sequenz von HIGH und LOW, die mit einer bestimmten Pulslänge gesendet werden. Typischerweise stehen die Pulslängen dabei im Verhältnis 1:3 (also z.B. LOW=Basispulslänge und HIGH=3*Basispulslänge).
        Voreingestellt ist 250 für Original-IT-Geräte. Andere Hersteller verwenden manchmal andere Werte, dennoch sollte ITclock nur dann verändert werden, wenn es Probleme beim Schalten mit Fhem gibt. Achten Sie in dem Fall auch darauf, ob nicht vielleicht das Signal zu schwach ist oder gestört wird, um regelmässig empfangen zu werden.
        - Hier ist eine Beschreibung für die Ermittlung des ITclock beim Signalduino: Nach Drücken einer Taste an der Fernbedienung steht die empfangene raw Nachricht im log und in der device-Ansicht des IT-device, also etwa
        MS;P0=357;P2=-1128;P3=1155;P4=-428;P5=-11420;D=05023402020202020202020202020202020202023402340234;CP=0;SP=5;
        Die Ziffer hinter "CP=" gibt die Pattern-Nr des clock an, also z.B. folgt aus CP=0 --> P0, das am Anfang der Nachricht definiert ist, hier ist also die clock 357.
        - Beim CUL kann die ITclock aus den raw Daten (X31) ermittelt werden.

      • ITfrequency
        Setzt die Sendefrequenz.

      • ITrepetition
        Setzt die Sendewiederholungen (Default=6).

      • userV1setCodes
        Damit können beim ITv1 Protokoll eigene setcodes zugefügt werden.
        Die setcodes werden auch für den Empfang verwendet, dabei haben die userV1setCodes Vorrang vor den XMIT Codes.
        Beispiele:
          attr lamp userV1setCodes rot:FD blau:1F
          attr lamp userV1setCodes hoch:1001 runter:1000 stop:1011
          attr IT_1527x12345 userV1setCodes closed:0111 open:1110 tamper:1011 lowVoltage:1111 # Kerui Fensterkontakt

      • SIGNALduinoProtocolId
        Damit kann beim Senden mit dem SIGNALduino eine Protocol-Id gewählt werden.


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

    Iluminize

    [EN DE]

    Define define <name> Iluminize <ip/hostname>

    Definiert ein Iluminize LED Wifi-Licht

    InfluxDBLogger

    [EN DE]
      Modul zum Loggen in eine InfluxDB Zeitreihendatenbank. Entsprechend der InfluxDB Terminologie, hier die Standardzuordnung, die mittels Attribute frei verändert werden kann:
      • Ein measurement wird für jeden reading namen erzeugt.
      • Ein tag namens 'site_name' wird für jedes device verwendet
      • Ein field namens 'value' wird für die reading Werte genutzt
      Das Modul arbeitet standardmäßig mit der InfluxDB API v1, dies kann mit dem Attribut api geändert werden. Ein weiterer Weg um das Modul mit InfluxDB 2 zu nutzen ist es, die Buckets auf Datenbanken zu mappen. Siehe hier

      Define

        define <name> InfluxDBLogger [http|https]://IP_or_Hostname:port dbname devspec

        Für details zur devspec bitte hier informieren. Wenn eine devspec verwendet wird, die auf ALLE Geräe zutrifft, wird der Logger sich initial erstmal selber abschalten (disable 1). Wenn man eine RegEx für die Readings gesetzt hat, kann disable wieder auf 0 gesetzt werden.

      Set

      • password set <name> password <password>
        Speichert das Passwort verschlüsselt für basic authentication. Es wird nur genutzt, wenn das security Attribut auf basic_auth gesetzt wurde.
      • token set <name> token <token>
        Speichert das Token verschlüsselt für Token Authentification. Es wird nur genutzt, wenn das security Attribut auf token gesetzt wurde.
      • resetStatistics set <name> resetStatistics
        Setzt alle statistischen Zähler auf 0 und entfernt die letzte Fehlermeldung
      • write set <name> write
        Schreibt die aktuellen Werte der konfigurierten Readings(readingInclude,readingExclude) der konfigurierten Geräte(devspec) in die Datenbank. Dies ist zum Beispiel nützlich für saubere Tagesstart und Tagesendwerte. Hinweis: Der Zeitstempel des Readings wird nicht in der Datenbank gespeichert, sondern der Zeitstempel des Schreibzeitpunktes.

      Attributes

      • disable attr <name> disable [0|1]
        Wenn disable 1 ist, werden keine Ereignisse in die Datenbank geschrieben
      • security attr <name> security [basic_auth|none|token]
        Wenn basic_auth genutzt wird, muss ein Benutzer per Attribut und ein Passwort per set gesetzt werden
        Wenn token genutzt wird, muss ein token über set gesetzt werden
      • username attr <name> username <username>
        Wird nur genutzt wenn das security Attribut auf basic_auth gesetzt wurde
      • readingInclude attr <name> readingInclude <regex>
        Nur Ereignisse die zutreffen werden geschrieben. Hinweis - das Format eines Ereignisses sieht so aus: 'state: on'
      • readingExclude attr <name> readingExclude <regex>
        Nur Ereignisse die nicht zutreffen werden geschrieben. Hinweis - das Format eines Ereignisses sieht so aus: 'state: on'
      • deviceTagName attr <name> deviceTagName <deviceTagName>
        Das ist der Name des tags, in dem der Gerätename gespeichert wird. Standard ist 'site_name'
      • conversions attr <name> conversions <conv1,conv2>
        Kommagetrennte Liste von Ersetzungen e.g. open=1,closed=0,tilted=2 oder true|on|yes=1,false|off|no=0 Die rechte Seite kann ein Perlausdruck und dadurch auch genutzt werden um Gruppen in regulären Ausdrücken zu nutzen. z.B. ([0-9]+)%=$1 Dies extrahiert die Zahlen aus einer Prozentangabe.
      • measurement attr <name> measurement <string>
        Name des zu verwendenen measurements. Dies kann ein freie Zeichenkette sein. Das Schlüsselwort $DEVICE wird ersetzt durch den Gerätenamen. Das Schlüsselwort $READINGNAME wird ersetzt durch den Readingnamen. Standard ist $READINGNAME. Es können Perl-Ausdrücke in geschweiften Klammern verwendet werden. $name, $device, $reading, $value stehen dabei als Variable zur Verfügung. attr influx measurement { AttrVal($device, "influx_measurement", $reading)}
      • tags attr <name> tags <x,y>
        Dies ist the Liste der tags die an InfluxDB mitgesendet werden. Das Schlüsselwort $DEVICE wird ersetzt durch den Gerätenamen. Wenn dieses Attribut gesetzt ist wird das Attribut deviceTagName nicht berücksichtigt. Standard ist site_name=$DEVICE. Um keine Tags zu schreiben (insbesondere, weil measurement auf $DEVICE und fields auf $READINGNAME=$READINGVALUE steht) bitte ein "-" eintragen. Es können Perl-Ausdrücke in geschweiften Klammern verwendet werden um z.B. Attribute als tag zu nutzen. $name, $device, $reading, $value stehen dabei als Variable zur Verfügung. attr influx tags device={AttrVal($device, "alias", "fallback")}
      • fields attr <name> fields <val=$READINGVALUE>
        Dies ist the Liste der fields die an InfluxDB gesendet werden. Das Schlüsselwort $READINGNAME wird ersetzt durch den Readingnamen. Das Schlüsselwort $READINGVALUE wird ersetzt durch den Readingwert. Standard ist value=$READINGVALUE.
      • api attr <name> api [v1|v2]
        Die zu verwendende API Version von InfluxDB. Standard ist v1. Bei v2 wird als bucket der Datenbankname verwendet.
      • org attr <name> org <org>
        Bei API Version v2 wird hiermit die Organisation angegeben. Standard ist "privat".
      • precision attr <name> precision [ms|s|us|ns]
        Die Zeit-Präzision wird hiermit angegeben. Standard ist keine Vorgabe.
      • stringValuesAllowed attr <name> stringValuesAllowed [0|1]
        Erlaubt bei 1 das Senden von Zeichenketten an die Datenbank, oder verhindert es bei 0 aktiv. Konvertierung werden immer zuerst verarbeitet. Setze Konvertierungen in Zeichenkette in doppele Anfürungszeichen. z.B. 1="offen" Hinweis: Influx kann den Datentyp eines Felder nicht wechseln. Das Ändern dieses Attributes kann somit zu Fehlermeldungen führen. Standard: 0 (keine Zeichenketten, nur Zahlen)
      • readingTimeStamps attr <name> readingTimeStamps [0|1]
        Sendet wenn angeschaltet (1) den Reading Zeitstempel vom FHEM an die InfluxDB, andernfalls(0) wird der Zeitstempel von der InfluxDB bestimmt. Diese Funktion ist nützlich für Geräte die Werte nachmelden mit dem Originalzeitstempel. Default: 0 (InfluxDB bestimmt den Zeitstempel, es wird keiner mitgesendet)

      Readings

      • total_writes
        Anzahl der versuchten Schreibvorgänge. Dies sind nicht die Abgeschlossenen.
      • succeeded_writes
        Anzahl der erfolgreich geschriebenen Ereignisse. Dies sind die Ereignisse die man in der Datenbank finden wird.
      • failed_writes
        Anzahl der fehlgeschlagenen Ereignisse. Die letzte Fehlermeldung findet man im Reading failed_writes_last_error
      • failed_writes_last_error
        Die Fehlermeldung, was recht nützlich ist für systematische Fehler, wie falsche DNS Einträge usw.
      • dropped_writes
        Anzahl von nicht getätigten Schreibvorgängen da nicht numerisch. Siehe conversions um es zu beheben.
      • state
        Statistics: t=total_writes s=succeeded_writes f=failed_writes e=events

    InfoPanel

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

    Installer

    [EN DE]
      Eine deutsche Version der Dokumentation ist derzeit nicht vorhanden. Die englische Version ist hier zu finden:
      Installer

    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

    JSONMETER

    [EN DE]
      Dieses Modul liest Daten von Messgeräten (z.B. Stromzähler, Gaszähler oder Wärmezähler, so genannte Smartmeter), welche OBIS kompatible Daten im JSON-Format auf einem Webserver oder auf dem FHEM-Dateisystem zur Verfügung stellen.
      Für detaillierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.
       
      Define
        define <name> JSONMETER <Gerätetyp> [<IP-Adresse>] [Abfrageinterval]
        Beispiel: define Stromzaehler JSONMETER ITF 192.168.178.20 300
         
      • [Abfrageintervall]
        Optional. Standardmäßig 300 Sekunden. Der kleinste mögliche Wert ist 30.
        Bei 0 kann die Geräteabfrage nur manuell gestartet werden.

      • <Gerätetyp>
        Definiert den Pfad und den Port, um die JSON-Datei einzulesen.
        Mit dem Attribute 'pathString' können Login Information an den URL-Pfad von vordefinierten Geräte angehangen werden.
        • ITF - FROETEC Simplex ME Eintarifzähler (N-ENERGY) (ITF Fröschl)
        • EFR - EFR Smart Grid Hub für Stromzähler (EON, N-ENERGY, EnBW)
                Die Login-Information wird über das Attribute 'pathstring' angegeben.
                ?LogName=Benutzer&LogPSWD=Passwort
        • LS110 - YouLess LS110 Netzwerkfähiger Sensor für elektromechanische Stromzähler
        • LS120 - YouLess LS120 Neues Modell
        • url - benutzt die URL, welche durch das Attribut 'pathString' und 'port' definiert wird.
        • file - benutzt die Datei, welche durch das Attribut 'pathString' definiert wird (im FHEM Dateisystem)

      Set
      • activeTariff < 0 - 9 >
        Erlaubt die gezielte, separate Erfassung der statistischen Verbrauchswerte (doStatistics = 1) für verschiedene Tarife (Doppelstromzähler), wenn der Stromzähler dies selbst nicht unterscheiden kann (z.B. LS110) oder wenn geprüft werden soll, ob ein zeitabhängiger Tarif preiswerter wäre. Dieser Wert muss entsprechend des vorhandenen oder geplanten Tarifes zum jeweiligen Zeitpunkt z.B. durch den FHEM-Befehl "at" gesetzt werden.
        0 = tariflos

      • INTERVAL <Abfrageinterval>
        Abfrageinterval in Sekunden

      • resetStatistics <statWerte>
        Löscht die ausgewählten statisischen Werte: all, statElectricityConsumed..., statElectricityConsumedTariff..., statElectricityPower...

      • restartJsonAnalysis
        Neustart der Analyse der json-Datei zum Auffinden bekannter Gerätewerte (kompatibel zum OBIS Standard). Diese Analysie wird normaler Weise nur einmalig durchgeführt, nachdem Gerätewerte gefunden wurden.

      • statusRequest
        Aktualisieren der Gerätewerte

      Get
      • jsonFile
        Liest die JSON-Datei ein und zeigt sie an.

      • jsonAnalysis
        Extrahiert die JSON-Daten und zeigt das Resultat der JSON-Analyse.

      Attributes
      • alwaysAnalyse < 0 | 1 >
        Führt bei jeder Abfrage der Gerätewerte eine Analyse der JSON-Datenstruktur durch.
        Dies ist sinnvoll, wenn sich die JSON-Struktur ändert. Normalerweise wird die analysierte Struktur zwischengespeichert, um die CPU-Last gering zu halten.

      • doStatistics < 0 | 1 >
        Bildet tägliche, monatliche und jährliche Statistiken bestimmter Gerätewerte (Mittel/Min/Max oder kumulierte Werte). Für grafische Auswertungen können die Werte der Form 'statReadingNameLast' genutzt werden.

      • pathString <Zeichenkette>
        • Gerätetyp 'file': definiert den lokalen Dateinamen und -pfad
        • Gerätetyp 'url': Definiert den URL-Pfad
        • Andere: Kann benutzt werden um Login-Information zum URL Pfad von vordefinierten Geräten hinzuzufügen

      • port <Nummer>
        Beim Gerätetyp 'url' kann hier der URL-Port festgelegt werden. (standardmäßig 80)

      • timeOut <Sekunden>
        Gibt an, nach wieviel Sekunden das Einlesen der Rohdaten abgebrochen werden soll. (standardmäßig 10)
        Die Laufzeit des Einlesevorganges wird bei "get <device> jsonFile" angezeigt.

      • readingFnAttributes

    Jabber

    [EN DE]
      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

    JsonList2

    [EN DE]
      jsonlist2 [<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.

    JsonMod

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

    KM271

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

    KM273

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

    KNX

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

    KNXIO

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

    KNXTUL

    [EN DE]
      Das Modul KNXTUL stellt die Verbindung von FHEM zu KNX dar. KNX Instanzen stellen die Vrbindung zu den KNX-Gruppen dar und benötigen ein TUL-Device als IO-Schnittstelle.
      Das Modul KNXTUL kommuniziert mit dem KNX über die KNX-Multicast-Adresse 224.0.23.12. Voraussetzung ist ein KNX/IP-Router im selben Netztwerk wie die FHEM-Instanz. Anmerkung: das Modul benötigt das Perl Modul IO::Socket::Multicast. Define
        define <name> KNXTUL <Physikalische KNX-Adresse>

        Beispiel:
        define tul KNXTUL 1.1.249
        Die physikalische Adresse wird als Absender für KNX-Telegramme genutzt.

      Attribute
      • do_not_notify

      • dummy

      • showtime

      • verbose


    KNX_scan

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

    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

    [EN DE]
      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).
      • strangeTempDiff DIFFVAL
        Falls gesetzt, werden nur solche Temperaturen akzeptiert, wo der Unterschied bei der gemeldeten Temperatur zum letzten Wert weniger als DIFFVAL ist.

    KeyValueProtocol

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

    Klafs Saunasteuerung

    [EN DE]
      Das Modul empfängt Daten und sendet Befehle an die Klafs App.
      In der aktuellen Version kann die Sauna an- bzw. ausgeschaltet werden und dabei die Parameter mitgegeben werden.

      Voraussetzungen

        Die SaunaID muss bekannt sein. Diese findet sich in der URL direkt nach dem Login an der App (http://sauna-app.klafs.com).
        Dort steht die ID mit dem Parameter ?s=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        Darüberhinaus müssen Benutzername und Passwort bekannt sein sowie die PIN, die am Saunamodul definiert wurde.

      Definition und Verwendung

        Das Modul wird ohne Pflichtparameter definiert.
        Benutzername, Passwort, Refresh-Intervall, SaunaID, und am Saunamodul definierte Pin werden als Attribute gesetzt.
        Definition des Moduls

        define <name> Klafs <Intervall>
        attr <name> <saunaid> <xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
        attr <name> <username> <xxxxxx>
        attr <name> <pin> <1234>
        attr <name> <interval> <60>

        set <name> <password> <xxxxxx>
      Beispiel für eine Moduldefinition:

        define mySauna Klafs
        attr mySauna saunaid ab0c123d-ef4g-5h67-8ij9-k0l12mn34op5
        attr mySauna username user01
        attr mySauna pin 1234
        attr mySauna interval 60

        set mySauna password geheim
      Set
        ResetLoginFailures Bei fehlerhaftem Login wird das Reading LoginFailures auf 1 gesetzt. Damit ist der automatische Login vom diesem Modul gesperrt.
        Klafs sperrt den Account nach 3 Fehlversuchen. Damit nicht automatisch 3 falsche Logins hintereinander gemacht werden.
        ResetLoginFailures setzt das Reading wieder auf 0. Davor sollte man sich erfolgreich an der App bzw. unter sauna-app.klafs.com
        angemeldet bzw. das Passwort zurückgesetzt haben. Erfolgreicher Login resetet die Anzahl der Fehlversuche in der Klafs-Cloud.
        off Schaltet die Sauna|Sanarium aus - ohne Parameter.
        on set <name> on ohne Parameter - Starten mit zuletzt verwendeten Werten
        set <name> on Sauna 90 - 3 Parameter möglich: "Sauna" mit Temperatur [10-100]; Optional Uhrzeit [19:30]
        set <name> on Saunarium 65 5 - 4 Parameter möglich: "Sanarium" mit Temperatur [40-75]; Optional HumidtyLevel [0-10] und Uhrzeit [19:30]
        Infrarot ist aber nicht supported, da keine Testumgebung verfügbar.
        Update Refresht die Readings und führt ggf. ein Login durch.

      Get
        SaunaID Liest die verfügbaren SaunaIDs aus.
        help Zeigt die Hilfe für die SET Befehle an.

      Readings

        Mode Sauna oder Sauna
        LoginFailures Fehlerhafte Loginversuche an der App. Steht der Wert auf 1, werden vom Modul keine Loginversuche unternommen. Siehe set <name> ResetLoginFailures
        Restzeit Restliche Badezeit. Wert aus remainingBathingHours und remainingBathingMinutes
        antiforgery_date Datum des Antiforgery Cookies. Dieses wird beim Einschalten erzeugt.
        remainingBathingHours Stunde der Restbadezeit
        remainingBathingMinutes Minute der Restbadezeit
        cookieExpire Laufzeit des Logincookies. 2 Tage
        currentHumidity Im Sanariumbetrieb. Prozentuale Luftfeuchtigkeit
        currentHumidityStatus nicht definiertes Reading
        currentTemperature Temperatur in der Sauna. 0 wenn die Sauna aus ist
        currentTemperatureStatus nicht definiertes Reading
        firstname Definierter Vorname in der App
        irSelected true/false - Aktuell eingestellter Betriebsmodus Infrarot
        isConnected true/false - Sauna mit der App verbunden
        isPoweredOn true/false - Sauna ist an/aus
        langcloud Eingestellte Sprache in der App
        last_errormsg Letzte Fehlermeldung. Häufig, dass die Sicherheitsüberprüfung Türkontakt nicht durchgeführt wurde.
        Sicherheitsüberprüfung muss durchgeführt werden mit dem Reedkontakt an der Tür.
        lastname Definierter Nachname in der App
        mail Definierte Mailadresse in der App
        sanariumSelected true/false - Aktuell eingestellter Betriebsmodus Sanarium
        saunaId SaunaID, die als Attribut definiert wurde
        saunaSelected true/false - Aktuell eingestellter Betriebsmodus Sauna
        selectedHour Definierte Einschaltzeit. Hier Stunde
        selectedHumLevel Definierte Luftfeuchtigkeitslevel im Sanariumbetrieb
        selectedIrLevel Definierte Intensivität im Infrarotbetrieb
        selectedIrTemperature Definierte Infrottemperatur
        selectedMinute Definierte Einschaltzeit. Hier Minute
        selectedSanariumTemperature Definierte Sanariumtemperatur
        selectedSaunaTemperature Definierte Saunatemperatur
        showBathingHour true/false - nicht näher definiert. true, wenn Sauna an ist.
        standbytime Definierte Standbyzeit in der App.
        power on/off
        statusCode nicht definiertes Reading
        statusMessage nicht definiertes Reading
        username Benutzername, der als Attribut definiert wurde

    LGTV_IP12

    [EN DE]
      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.

    LGTV_WebOS

    [EN DE]
        Dieses Modul steuert SmartTV's des Herstellers LG mit dem Betriebssystem WebOS über die Netzwerkschnittstelle. Es bietet die Möglichkeit den aktuellen TV Kanal zu steuern, sowie Apps zu starten, Fernbedienungsbefehle zu senden, sowie den aktuellen Status abzufragen.



      Definition define <name> LGTV_WebOS <IP-Addresse>

            Bei der Definition eines LGTV_WebOS-Moduls wird eine interne Routine in Gang gesetzt, welche regelmäßig alle 15s den Status des TV abfragt und entsprechende Notify-/FileLog-Definitionen triggert.
            Beispiel: define TV LGTV_WebOS 192.168.0.10


      Set-Kommandos set <Name> <Kommando> [<Parameter>]
            Aktuell werden folgende Kommandos unterstützt.
            • connect  -  Verbindet sich zum Fernseher unter der IP wie definiert, führt beim ersten mal automatisch ein pairing durch
            • pairing  -   Berechtigungsanfrage an den Fernseher, hier muss die Anfrage mit der Fernbedienung bestätigt werden
            • screenMsg <Text>  -   zeigt für ca 3-5s eine Nachricht auf dem Fernseher oben rechts an
            • mute on, off  -  Schaltet den Fernseher Stumm, je nach Anschluss des Audiosignals, muss dieses am Verstärker (AV Receiver) geschehen (siehe Volume)
            • volume 0-100, Schieberegler  -   Setzt die Lautstärke des Fernsehers, je nach Anschluss des Audiosignals, muss dieses am Verstärker (AV Receiver) geschehen (siehe mute)
            • volumeUp  -   Erhöht die Lautstärke um den Wert 1
            • volumeDown  -   Verringert die Lautstärke um den Wert 1
            • channelUp   -   Schaltet auf den nächsten Kanal um
            • channelDown   -   Schaltet auf den vorherigen Kanal um
            • getServiceList  -  Fragrt die Laufenden Dienste des Fernsehers an (derzeit noch in Beta-Phase)
            • on  -   Schaltet den Fernseher ein, wenn WLAN oder LAN ebenfalls im Aus-Zustand aktiv ist (siehe Bedienungsanleitung da Typabhängig)
            • off - Schaltet den Fernseher aus, wenn eine Connection aktiv ist
            • launchApp <Anwendung>  -   Aktiviert eine Anwendung aus der Liste (Maxdome, AmazonVideo, YouTube, Netflix, TV, GooglePlay, Browser, Chili, TVCast, Smartshare, Scheduler, Miracast, TV) 
              Achtung: TV ist hier eine Anwendung, und kein Geräteeingang
            • 3D on,off  -  3D Modus kann hier ein- und ausgeschaltet werden, je nach Fernseher können mehrere 3D Modi unterstützt werden (z.B. Side-by-Side, Top-Bottom)
            • stop  -   Stop-Befehl (anwendungsabhängig)
            • play  -   Play-Befehl (anwendungsabhängig)
            • pause  -   Pause-Befehl (anwendungsabhängig)
            • rewind  -   Zurückspulen-Befehl (anwendungsabhängig)
            • fastForward  -   Schneller-Vorlauf-Befehl (anwendungsabhängig)
            • clearInputList  -   Löscht die Liste der Geräteeingänge
            • input  - Wählt den Geräteeingang aus (Abhängig von Typ und angeschossenen Geräten)
              Beispiele: extInput_AV-1, extInput_HDMI-1, extInput_HDMI-2, extInput_HDMI-3)

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

          • 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.
          • channelGuide
          • Optionales Attribut zur Deaktivierung der zyklischen Updates des TV-Guides, dieses beansprucht je nach Hardware einigen Netzwerkverkehr und Prozessorlast
            Mögliche Werte: 0 => keine zyklischen TV-Guide-Updates, 1 => zyklische TV-Guide-Updates
          • wakeOnLanMAC
          • MAC Addresse der Netzwerkkarte vom LG TV
          • wakeOnLanBroadcast
          • Broadcast Netzwerkadresse - wakeOnLanBroadcast <netzwerk>.255
          • pingPresence
          • Mögliche Werte: 0 => presence via ping deaktivert, 1 => presence via ping aktiviert
          • keepAliveCheckTime
          • Wert in Sekunden - keepAliveCheckTime kontrolliert in einer bestimmten Zeit ob noch Daten über die TCP Schnittstelle kommen und verhindert somit FHEM Freezes
          • wakeupCmd
          • Befehl zum Einschalten des LG TV. Möglich ist ein FHEM Befehl oder Perl in {}.



      Generierte Readings/Events:

        • 3D - Status des 3D-Wiedergabemodus ("on" => 3D Wiedergabemodus aktiv, "off" => 3D Wiedergabemodus nicht aktiv)
        • 3DMode - Anzeigemodus (2d, 2dto3d, side_side_half, line_interleave_half, column_interleave, check_board)
        • channel - Die Nummer des aktuellen TV-Kanals
        • channelName - Der Name des aktuellen TV-Kanals
        • channelMedia - Senderinformation
        • channelCurrentEndTime - Ende der laufenden Sendung (Beta)
        • channelCurrentStartTime - Start der laufenden Sendung (Beta)
        • channelCurrentTitle - Der Name der laufenden Sendung (Beta)
        • channelNextEndTime - Ende der nächsten Sendung (Beta)
        • channelNextStartTime - Start der nächsten Sendung (Beta)
        • channelNextTitle - Der Name der nächsten Sendung (Beta)
        • extInput_<Geräteeingang> - Status der Eingangsquelle (connect_true, connect_false)
        • input - Derzeit aktiver Geräteeingang
        • lastResponse - Status der letzten Anfrage (ok, error <Fehlertext>)
        • launchApp <Anwendung> - Gegenwärtige aktive Anwendung
        • lgKey - Der Client-Key, der für die Verbindung verwendet wird
        • mute on,off - Der aktuelle Stumm-Status ("on" => Stumm, "off" => Laut)
        • pairing paired, unpaired - Der Status des Pairing
        • presence absent, present - Der aktuelle Power-Status ("present" => eingeschaltet, "absent" => ausgeschaltet)
        • state on, off - Status des Fernsehers (ähnlich presence)
        • volume - Der aktuelle Lautstärkepegel -1, 0-100 (-1 invalider Wert)

    LIGHTIFY

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

    LIRC

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

    LUXTRONIK2

    [EN DE]
      Die Luxtronik 2.0 and 2.1 ist eine Heizungssteuerung der Firma Alpha InnoTec AIT, welche in Wärmepumpen von Alpha InnoTec, Buderus (Logamatic HMC20, HMC20 Z), CTA All-In-One (Aeroplus), Elco, Nibe (AP-AW10), Roth (ThermoAura®, ThermoTerra), Novelan (WPR NET) und Wolf Heiztechnik (BWL/BWS) verbaut ist. Sie besitzt einen Ethernet (RJ45) Anschluss, so dass sie direkt in lokale Netzwerke (LAN) integriert werden kann.
      Das Modul wurde bisher mit folgender Steuerung-Firmware getestet: V1.51, V1.54C, V1.60, V1.64, V1.69, V1.70, V1.73, V1.77, V1.80, V1.81.
      Mehr Infos im entsprechenden Artikel der FHEM-Wiki.
       
      Define
        define <name> LUXTRONIK2 <IP-Adresse[:Port]> [Abfrageintervall]
        Wenn das Abfrage-Interval nicht angegeben ist, wird es auf 300 (Sekunden) gesetzt. Der kleinste mögliche Wert ist 10.
        Die Angabe des Portes kann gewöhnlich entfallen.
        Beispiel: define Heizung LUXTRONIK2 192.168.0.12 600

      Set
        Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpen mit ungetesteter Firmware nicht unabsichtlich beschädigt werden.
         
      • activeTariff < 0 - 9 >
        Erlaubt die gezielte, separate Erfassung der statistischen Verbrauchswerte (doStatistics = 1) für verschiedene Tarife (Doppelstromzähler)
        Dieser Wert muss entsprechend des vorhandenen oder geplanten Tarifes zum jeweiligen Zeitpunkt z.B. durch den FHEM-Befehl "at" gesetzt werden.
        0 = tariflos

      • heatingCurveEndPoint <Temperatur>
        Einstellung des Heizkurven-Parameters. In 0.1er Schritten einstellbar.

      • heatingCurveOffset <Temperatur>
        Einstellung des Heizkurven-Parameters. In 0.1er Schritten einstellbar.

      • heatingSystemCircPumpDeaerate <on | off>
        Schaltet die Umwälzpumpe des Heizkreislaufes an oder aus. Damit werden auch im Sommer alle Heizkreise auf gleicher Temperatur gehalten und es findet eine geringfügige Umverteilung von Wärme und Kühle statt.
        Achtung! Es wird die Entlüftungsfunktion der Steuerung genutzt. Dadurch taktet die Pumpe jeweils 5 Minuten ein und 5 Minuten aus.

      • hotWaterCircPumpDeaerate <on | off>
        Schaltet die externe Warmwasser-Zirkulationspumpe an oder aus. Durch die Zirkulation wird das Abkühlen des Warmwassers in den Hausleitungen verhindert. Der Wärmeverbrauch steigt jedoch drastisch.
        Achtung! Es wird die Entlüftungsfunktion der Steuerung genutzt. Dadurch taktet die Pumpe jeweils 5 Minuten ein und 5 Minuten aus.

      • ventBOSUPCircPumpDeaerate <on | off>
        Schaltet die Umwälzpumpe des BOSUP an oder aus.
        Achtung! Es wird die Entlüftungsfunktion der Steuerung genutzt. Dadurch taktet die Pumpe jeweils 5 Minuten ein und 5 Minuten aus.

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

      • opModeHotWater <Betriebsmodus>
        Betriebsmodus des Heißwasserspeichers ( Auto | Party | Off )

      • opModeVentilation <Betriebsmodus>
        Betriebsmodus der Lueftung ( Auto | Off )

      • opModeHeating <Betriebsmodus>
        Betriebsmodus der Heizung ( Auto | Off )

      • resetStatistics <statWerte>
        Löscht die ausgewählten statistischen Werte: all, statBoilerGradientCoolDownMin, statAmbientTemp..., statElectricity..., statHours..., statHeatQ...

      • returnTemperatureHyst <Temperatur>
        Sollwert-Hysterese der Heizungsregelung. 0.5 K bis 3 K. In 0.1er Schritten einstellbar.

      • returnTemperatureSetBack <Temperatur>
        Absenkung oder Anhebung der Rücklauftemperatur von -5 K bis + 5K. In 0.1er Schritten einstellbar.

      • INTERVAL <Sekunden>
        Abfrageintervall in Sekunden

      • statusRequest
        Aktualisieren der Gerätewerte

      • synchClockHeatPump
        Abgleich der Uhr der Steuerung mit der FHEM Zeit. Diese Änderung geht verloren, sobald die Steuerung ausgeschaltet wird!!

      Get
      • heatingCurveParameter <Aussentemp1 Solltemp1 Aussentemp2 Solltemp2>
        Ermittelt rekursiv anhand zweier Punkte auf der Heizkurve die entsprechenden Heizkurven-Parameter heatingCurveEndPoint und heatingCurveOffset.
        Diese können dann über die entsprechenden set-Befehl einstellt werden.

      • rawData
        Zeigt alle von der Steuerung auslesbaren Parameter und Betriebswerte an.
        Diese können dann mit den Attributen userHeatpumpParameters und userHeatpumpValues einem Gerätewert zugeordnet werden.


      Attribute
      • allowSetParameter < 0 | 1 >
        Die internen Parameter der Wärmepumpensteuerung können nur geändert werden, wenn dieses Attribut auf 1 gesetzt ist.

      • autoSynchClock <Zeitunterschied>
        Die Uhr der Wärmepumpe wird automatisch korrigiert, wenn ein gewisser Zeitunterschied (10 s - 600 s) gegenüber der FHEM Zeit erreicht ist. Zuvor wird die Kompatibilität der Firmware überprüft.
        (Ein Gerätewert 'delayDeviceTimeCalc' <= 2 s ist auf die internen Berechnungsintervalle der Wärmepumpensteuerung zurückzuführen.)

      • compressor2ElectricalPowerWatt
        Betriebsleistung des zweiten Kompressors zur Berechnung der Arbeitszahl (erzeugte Wärme pro elektrische Energieeinheit) und Abschätzung des elektrischen Verbrauches (Auswertungen noch nicht implementiert)

      • doStatistics < 0 | 1 | 2 >
        Berechnet statistische Werte: statBoilerGradientHeatUp, statBoilerGradientCoolDown, statBoilerGradientCoolDownMin (Wärmeverlust des Boilers)
        Bildet tägliche, monatliche und jährliche Statistiken bestimmter Gerätewerte.
        Für grafische Auswertungen können die Werte der Form 'statReadingNameLast' genutzt werden.

      • heatPumpElectricalPowerWatt <E-Leistung in Watt>
        Elektrische Leistungsaufnahme der Wärmepumpe in Watt bei einer Vorlauftemperatur von 35°C zur Berechnung der Arbeitszahl (erzeugte Wärme pro elektrische Energieeinheit) und Abschätzung des elektrischen Verbrauches

      • heatPumpElectricalPowerFactor
        Änderung der elektrischen Leistungsaufnahme pro 1 K Vorlauf-Temperaturdifferenz zu 35°C
        (z.B. 2% pro 1 K = 0,02)

      • heatRodElectricalPowerWatt <E-Leistung in Watt>
        Elektrische Leistungsaufnahme der Heizstäbe in Watt zur Abschätzung des elektrischen Verbrauches

      • ignoreFirmwareCheck < 0 | 1 >
        Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpen mit ungetesteter Firmware nicht unabsichtlich beschädigt werden. Wenn dieses Attribute auf 1 gesetzt ist, dann wird der Firmware-Test ignoriert und neue Firmware kann getestet werden. Dieses Attribut wird jedoch ignoriert, wenn die Steuerung-Firmware bereits als nicht kompatibel berichtet wurde.

      • statusHTML
        Wenn gesetzt, dann wird ein HTML-formatierter Wert "floorplanHTML" erzeugt, welcher vom Modul FLOORPLAN genutzt werden kann.
        Momentan wird nur geprüft, ob der Wert dieses Attributes ungleich NULL ist, der entsprechende Gerätewerte besteht aus dem aktuellen Wärmepumpenstatus und der Warmwassertemperatur.

      • userHeatpumpParameters <Index [Name][,Index2 [Name2],Index3 [Name3] ...]>
        Erlaubt das Auslesen der Werte benutzerspezifischer Parameter. Die Indizes der verfügbaren Parameterwerte können mit dem get-Befehl rawData ermittelt werden.
        In der Attributdefinition kann der Name hinter den Index getrennt durch ein Leerzeichen geschrieben werden. Der jeweilige Parameter-Wert wird entweder mit dem Präfix "userParameter..." oder unter dem angegebenen Namen angezeigt.
        Mehrere Indizes werden durch Kommas getrennt.
        Nicht mehr benötigte Gerätewerte können mit dem FHEM-Befehl deleteReading gelöscht werden.

      • userHeatpumpValues <Index Name[,Index2 Name2,Index3 Name3 ...]>
        Erlaubt das Auslesen benutzerspezifische Betriebswerte. Vorgehen wie bei userHeatpumpParameters.

      • 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

    LaMetric2

    [EN DE]
      Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: LaMetric2

    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

    Log2Syslog

    [EN DE]
      Das Modul sendet FHEM Systemlog-Einträge und/oder Events an einen externen Syslog-Server weiter oder agiert als Syslog-Server um Syslog-Meldungen anderer Geräte zu empfangen.
      Die Implementierung des Syslog-Protokolls erfolgte entsprechend den Vorgaben von RFC5424 (IETF), RFC3164 (BSD) sowie dem TLS Transport Protokoll nach RFC5425.

      Voraussetzungen

        Es werden die Perl Module "IO::Socket::INET" und "IO::Socket::SSL" (wenn SSL benutzt) benötigt und müssen installiert sein.
        Das Modul kann über CPAN oder, auf Debian Linux Systemen, besser mit

        sudo apt-get install libio-socket-multicast-perl
        sudo apt-get install libio-socket-ssl-perl

        installiert werden.

      Definition und Verwendung

        Je nach Verwendungszweck kann ein Syslog-Server (MODEL Collector) oder ein Syslog-Client (MODEL Sender) definiert werden.
        Der Collector empfängt Meldungen im Syslog-Format anderer Geräte und generiert daraus Events/Readings zur Weiterverarbeitung in FHEM. Das Sender-Device leitet FHEM Systemlog Einträge und/oder Events an einen externen Syslog-Server weiter.

      Der Collector (Syslog-Server)

        Definition eines Collectors

          define <name> Log2Syslog

        Die Definition benötigt keine weiteren Parameter. In der Grundeinstellung wird der Syslog-Server mit dem Port=1514/UDP und dem Parsingprofil "Automatic" initialisiert. Mit dem Attribut "parseProfile" können alternativ andere Formate (z.B. BSD oder IETF) ausgewählt werden. Der Syslog-Server ist sofort betriebsbereit, versucht das Format der empfangenen Messages zu erkennen und parst die Syslog-Daten entsprechend der Richtlinien nach RFC5424 oder RFC3164 und generiert aus den eingehenden Syslog-Meldungen FHEM-Events (Daten sind im Eventmonitor sichtbar).
        Wird das Format nicht selbständig erkannt, kann es mit dem Attribut "parseProfile" manuell festgelegt werden.


        Beispiel für einen Collector:

          define SyslogServer Log2Syslog

        Im Eventmonitor können die generierten Events kontrolliert werden.

        Beispiel von generierten Events mit Attribut parseProfile=IETF:

        2018-07-31 17:07:24.382 Log2Syslog SyslogServer HOST: fhem.myds.me || FAC: syslog || SEV: Notice || ID: Prod_event || CONT: USV state: OL
        2018-07-31 17:07:24.858 Log2Syslog SyslogServer HOST: fhem.myds.me || FAC: syslog || SEV: Notice || ID: Prod_event || CONT: HMLAN2 loadLvl: low

        Zwischen den einzelnen Feldern wird der Trenner "||" verwendet. Die Bedeutung der Felder in diesem Beispiel sind:

          HOST der Sender des Datensatzes
          FAC Facility (Kategorie) nach RFC5424
          SEV Severity (Schweregrad) nach RFC5424
          ID Ident-Tag
          CONT der Nachrichtenteil der empfangenen Meldung

        Der Timestamp der generierten Events wird aus den Syslogmeldungen geparst. Sollte diese Information nicht mitgeliefert werden, wird der aktuelle Timestamp des Systems verwendet.
        Der Name des Readings im generierten Event entspricht dem aus der Syslogmeldung geparsten Hostnamen. Ist der Hostname in der Meldung nicht enthalten, wird die IP-Adresse des Senders aus dem Netzwerk Interface abgerufen und der Hostname ermittelt sofern möglich. In diesem Fall wird der ermittelte Hostname bzw. die IP-Adresse als Reading im Event genutzt.
        Nach der Definition des Collectors werden die Syslog-Meldungen im IETF-Format gemäß RFC5424 erwartet. Werden die Daten nicht in diesem Format geliefert bzw. können nicht geparst werden, erscheint im Reading "state" die Meldung "parse error - see logfile" und die empfangenen Syslog-Daten werden im Logfile im raw-Format ausgegeben. Das Reading "Parse_Err_No" enthält die Anzahl der Parse-Fehler seit Modulstart.
        In diesem Fall kann mit dem Attribut "parseProfile" ein anderes vordefiniertes Parse-Profil eingestellt bzw. ein eigenes Profil definiert werden.

        Zur Definition einer eigenen Parse-Funktion wird "parseProfile = ParseFn" eingestellt und im Attribut "parseFn" eine spezifische Parse-Funktion hinterlegt.
        Die im Event verwendeten Felder und deren Reihenfolge können aus einem Wertevorrat mit dem Attribut "outputFields" bestimmt werden. Je nach verwendeter Parse-Funktion können alle oder nur eine Untermenge der verfügbaren Felder verwendet werden. Näheres dazu in der Beschreibung des Attributes "parseProfile".

        Das Verhalten der Eventgenerierung kann mit dem Attribut "makeEvent" angepasst werden.

      Der Sender (Syslog-Client)

        Definition eines Senders

          define <name> Log2Syslog <Zielhost> [ident:<ident>] [event:<regexp>] [fhem:<regexp>]

          <Zielhost> Host (Name oder IP-Adresse) auf dem der Syslog-Server läuft
          [ident:<ident>] optionaler Programm Identifier. Wenn nicht gesetzt wird per default der Devicename benutzt.
          [event:<regexp>] optionaler regulärer Ausdruck zur Filterung von Events zur Weiterleitung
          [fhem:<regexp>] optionaler regulärer Ausdruck zur Filterung von FHEM Logs zur Weiterleitung


        Direkt nach der Definition sendet das neue Device alle neu auftretenden FHEM Systemlog Einträge und Events ohne weitere Einstellungen an den Zielhost, Port=514/UDP Format=IETF, wenn reguläre Ausdrücke für "event" und/oder "fhem" angegeben wurden.
        Wurde kein Regex gesetzt, erfolgt keine Weiterleitung von Events oder FHEM-Systemlogs.

        Die Verbose-Level der FHEM Systemlogs werden in entsprechende Schweregrade der Syslog-Messages umgewandelt.
        Weiterhin wird der Meldungstext der FHEM Systemlogs und Events nach den Signalwörtern "warning" und "error" durchsucht (Groß- /Kleinschreibung wird nicht beachtet). Davon abhängig wird der Schweregrad ebenfalls äquivalent gesetzt und übersteuert einen eventuell bereits durch Verbose-Level gesetzten Schweregrad.

        Umsetzungstabelle Verbose-Level in Syslog-Schweregrad Stufe:

          Verbose-Level Schweregrad in Syslog
          0 Critical
          1 Error
          2 Warning
          3 Notice
          4 Informational
          5 Debug


        Beispiel für einen Sender:

          define splunklog Log2Syslog fhemtest 192.168.2.49 ident:Test event:.* fhem:.*

        Es werden alle Events weitergeleitet wie deses Beispiel der raw-Ausgabe eines Splunk Syslog Servers zeigt:
        Aug 18 21:06:46 fhemtest.myds.me 1 2017-08-18T21:06:46 fhemtest.myds.me Test_event 13339 FHEM [version@Log2Syslog version="4.2.0"] : LogDB sql_processing_time: 0.2306
        Aug 18 21:06:46 fhemtest.myds.me 1 2017-08-18T21:06:46 fhemtest.myds.me Test_event 13339 FHEM [version@Log2Syslog version="4.2.0"] : LogDB background_processing_time: 0.2397
        Aug 18 21:06:45 fhemtest.myds.me 1 2017-08-18T21:06:45 fhemtest.myds.me Test_event 13339 FHEM [version@Log2Syslog version="4.2.0"] : LogDB CacheUsage: 21
        Aug 18 21:08:27 fhemtest.myds.me 1 2017-08-18T21:08:27.760 fhemtest.myds.me Test_fhem 13339 FHEM [version@Log2Syslog version="4.2.0"] : 4: CamTER - Informations of camera Terrasse retrieved
        Aug 18 21:08:27 fhemtest.myds.me 1 2017-08-18T21:08:27.095 fhemtest.myds.me Test_fhem 13339 FHEM [version@Log2Syslog version="4.2.0"] : 4: CamTER - CAMID already set - ignore get camid
            
        Der Aufbau der Payload unterscheidet sich je nach verwendeten logFormat.

        logFormat IETF:

        "<PRIVAL>IETFVERS TIME MYHOST IDENT PID MID [SD-FIELD] MESSAGE"

          PRIVAL Priority Wert (kodiert aus "facility" und "severity")
          IETFVERS Version der benutzten RFC5424 Spezifikation
          TIME Timestamp nach RFC5424
          MYHOST Internal MYHOST
          IDENT Ident-Tag aus DEF wenn angegeben, sonst der eigene Devicename. Die Angabe wird mit "_fhem" (FHEM-Log) bzw. "_event" (Event-Log) ergänzt.
          PID fortlaufende Payload-ID
          MID fester Wert "FHEM"
          [SD-FIELD] Structured Data Feld. Enthält Informationen zur verwendeten Modulversion (die Klammern "[]" sind Bestandteil des Feldes)
          MESSAGE der zu übertragende Datensatz

        logFormat BSD:

        "<PRIVAL>MONTH DAY TIME MYHOST IDENT[PID]: MESSAGE"

          PRIVAL Priority Wert (kodiert aus "facility" und "severity")
          MONTH Monatsangabe nach RFC3164
          DAY Tag des Monats nach RFC3164
          TIME Zeitangabe nach RFC3164
          MYHOST Internal MYHOST
          TAG Ident-Tag aus DEF wenn angegeben, sonst der eigene Devicename. Die Angabe wird mit "_fhem" (FHEM-Log) bzw. "_event" (Event-Log) ergänzt.
          PID Die ID der Mitteilung (= Sequenznummer)
          MESSAGE der zu übertragende Datensatz



      Set

        • reopen

          Schließt eine bestehende Client/Server-Verbindung und öffnet sie erneut. Der Befehl kann z.B. bei "broken pipe"-Fehlern hilfreich sein.

        • sendTestMessage [<Message>]

          Mit einem Devicetyp "Sender" kann abhängig vom Attribut "logFormat" eine Testnachricht im BSD- bzw. IETF-Format gesendet werden. Wird eine optionale eigene <Message> angegeben, wird diese Nachricht im raw-Format ohne Formatanpassung (BSD/IETF) gesendet. Das Attribut "disable = maintenance" legt fest, dass keine Daten ausser eine Testnachricht an den Empfänger gesendet wird.


      Get

        • certinfo

          Zeigt auf einem Sender-Device Informationen zum Serverzertifikat an sofern eine TLS-Session aufgebaut wurde (Reading "SSL_Version" ist nicht "n.a.").

        • versionNotes [hints | rel | <key>]

          Zeigt Release Informationen und/oder Hinweise zum Modul an. Es sind nur Release Informationen mit Bedeutung für den Modulnutzer enthalten.
          Sind keine Optionen angegben, werden sowohl Release Informationen als auch Hinweise angezeigt. "rel" zeigt nur Release Informationen und "hints" nur Hinweise an. Mit der <key>-Angabe wird der Hinweis mit der angegebenen Nummer angezeigt. Ist das Attribut "language = DE" im global Device gesetzt, erfolgt die Ausgabe der Hinweise in deutscher Sprache.


      Attribute

        • addTimestamp

          Das Attribut ist nur für "Sender" verwendbar. Wenn gesetzt, werden FHEM Timestamps im Content-Feld der Syslog-Meldung mit übertragen.
          Per default werden die Timestamps nicht im Content-Feld hinzugefügt, da innerhalb der Syslog-Meldungen im IETF- bzw. BSD-Format bereits Zeitstempel gemäß RFC-Vorgabe erstellt werden.
          Die Einstellung kann hilfeich sein wenn mseclog in FHEM aktiviert ist.

          Beispielausgabe (raw) eines Splunk Syslog Servers:
          Aug 18 21:26:55 fhemtest.myds.me 1 2017-08-18T21:26:55 fhemtest.myds.me Test_event 13339 FHEM - : 2017-08-18 21:26:55 USV state: OL
          Aug 18 21:26:54 fhemtest.myds.me 1 2017-08-18T21:26:54 fhemtest.myds.me Test_event 13339 FHEM - : 2017-08-18 21:26:54 Bezug state: done
          Aug 18 21:26:54 fhemtest.myds.me 1 2017-08-18T21:26:54 fhemtest.myds.me Test_event 13339 FHEM - : 2017-08-18 21:26:54 recalc_Bezug state: Next: 21:31:59
                  

        • addStateEvent

          Das Attribut ist nur für "Sender" verwendbar. Wenn gesetzt, werden state-events mit dem Reading "state" ergänzt.
          Die Standardeinstellung ist ohne state-Ergänzung.


        • contDelimiter

          Das Attribut ist nur für "Sender" verwendbar. Es enthält ein zusätzliches Zeichen welches unmittelber vor das Content-Feld eingefügt wird.
          Diese Möglichkeit ist in manchen speziellen Fällen hilfreich (z.B. kann das Zeichen ':' eingefügt werden um eine ordnungsgemäße Anzeige im Synology-Protokollcenter zu erhalten).


        • disable [1 | 0 | maintenance]

          Das Device wird aktiviert, deaktiviert bzw. in den Maintenance-Mode geschaltet. Im Maintenance-Mode kann mit dem "Sender"-Device eine Testnachricht gesendet werden (siehe "set <name> sendTestMessage").


        • exclErrCond <Pattern1,Pattern2,Pattern3,...>

          Das Attribut ist nur für "Sender" verwendbar.
          Wird in einem Event der Text "Error" erkannt, bekommt diese Message automatisch den Schweregrad "Error" zugewiesen. Im Attribut exclErrCond kann eine durch Komma getrennte Liste von Events angegeben werden, deren Schweregrad trotzdem nicht als "Error" gewertet werden soll. Kommas innerhalb von <Pattern> müssen mit ,, (doppeltes Komma) escaped werden. Das Attribut kann Zeilenumbrüche enthalten.

          Beispiel
          attr <name> exclErrCond Error: none, 
                                  Errorcode: none,
                                  Dum.Energy PV: 2853.0,, Error: none,
                                  Seek_Error_Rate_,
                                  Raw_Read_Error_Rate_,
                                  sabotageError:,
                  

        • logFormat [ BSD | IETF ]

          Das Attribut ist nur für "Sender" verwendbar. Es stellt das Protokollformat ein. (default: "IETF")


        • makeEvent [ intern | no | reading ]

          Das Attribut ist nur für "Collector" verwendbar. Mit dem Attribut wird das Verhalten der Event- bzw. Readinggenerierung festgelegt.

            intern Events werden modulintern generiert und sind nur im Eventmonitor sichtbar. Readings werden nicht erstellt.
            no es werden nur Readings der Form "MSG_<Hostname>" ohne Eventfunktion erstellt
            reading es werden Readings der Form "MSG_<Hostname>" erstellt. Events werden in Abhängigkeit der "event-on-.*"-Attribute generiert


        • octetCount

          Das Attribut ist nur für "Sender" verfügbar.
          Wenn gesetzt, wird das Syslog Framing von Non-Transparent-Framing (default) in Octet-Framing geändert. Der Syslog-Empfänger muss Octet-Framing unterstützen ! Für weitere Informationen siehe RFC6587 "Transmission of Syslog Messages over TCP".


        • outputFields

          Das Attribut ist nur für "Collector" verwendbar. Über eine sortierbare Liste können die gewünschten Felder des generierten Events ausgewählt werden. Die abhängig vom Attribut "parseProfil" sinnvoll verwendbaren Felder und deren Bedeutung ist der Beschreibung des Attributs "parseProfil" zu entnehmen. Ist "outputFields" nicht gesetzt, wird ein vordefinierter Satz Felder zur Eventgenerierung verwendet.


        • parseFn {<Parsefunktion>}

          Das Attribut ist nur für Device-MODEL "Collector" verwendbar. Es wird die eingegebene Perl-Funktion auf die empfangene Syslog-Meldung angewendet. Der Funktion werden folgende Variablen übergeben die zur Verarbeitung und zur Werterückgabe genutzt werden können. Leer übergebene Variablen sind als "" gekennzeichnet.
          Das erwartete Rückgabeformat einer Variable wird in "()" angegeben sofern sie Restriktionen unterliegt. Ansonsten ist die Variable frei verfügbar. Die Funktion ist in { } einzuschließen.

            Variable Übergabewert erwartetes Rückgabeformat
            $PRIVAL "" (0 ... 191)
            $FAC "" (0 ... 23)
            $SEV "" (0 ... 7)
            $TS Zeitstempel (YYYY-MM-DD hh:mm:ss)
            $HOST ""
            $DATE "" (YYYY-MM-DD)
            $TIME "" (hh:mm:ss)
            $ID ""
            $PID ""
            $MID ""
            $SDFIELD ""
            $CONT ""
            $DATA Rohdaten der Message keine Rückgabeauswertung
            $IGNORE 0 (0|1), wenn $IGNORE==1 wird der Syslog-Datensatz ignoriert

          Die Variablennamen korrespondieren mit den Feldnamen und deren ursprünglicher Bedeutung angegeben im Attribut "parseProfile" (Erläuterung der Felddaten).

            Beispiel:
            # Quelltext: '<4> <;4>LAN IP and mask changed to 192.168.2.3 255.255.255.0'
            # Die Zeichen '<;4>' sollen aus dem CONT-Feld entfernt werden
            {
            ($PRIVAL,$CONT) = ($DATA =~ /^<(\d{1,3})>\s(.*)$/);
            $CONT = (split(">",$CONT))[1] if($CONT =~ /^<.*>.*$/);
            } 
            


        • parseProfile [ Automatic | BSD | IETF | ... | ParseFn | raw ]

          Auswahl eines Parsing-Profiles. Das Attribut ist nur für Device-Model "Collector" verwendbar.
          Im Modus "Automatic" versucht das Modul zu erkennen, ob die empfangenen Daten vom Typ "BSD" oder "IEFT" sind. Konnte der Typ nicht erkannt werden, wird das "raw" Format genutzt und im Log eine Warnung generiert.

            Automatic Es wird versucht das Datenformat zu erkennen und das BSD-Format RFC3164 oder IETF-Format RFC5424 anzuwenden (default)
            BSD Parsing der Meldungen im BSD-Format nach RFC3164
            IETF Parsing der Meldungen im IETF-Format nach RFC5424 (default)
            TPLink-Switch spezifisches Parser Profile für TPLink Switch Meldungen
            UniFi spezifisches Parser Profile für UniFi Controller Syslog as und Netconsole Meldungen
            ParseFn Verwendung einer eigenen spezifischen Parsingfunktion im Attribut "parseFn".
            raw kein Parsing, die Meldungen werden wie empfangen in einen Event umgesetzt

          Die geparsten Informationen werden in Feldern zur Verfügung gestellt. Die im Event erscheinenden Felder und deren Reihenfolge können mit dem Attribut "outputFields" bestimmt werden.
          Abhängig vom verwendeten "parseProfile" oder erkannten Message-Format (Internal PROFILE) werden die folgenden Felder mit Werten gefüllt und es ist dementsprechend auch nur sinnvoll die benannten Felder im Attribut "outputFields" zu verwenden. Im raw-Profil werden die empfangenen Daten ohne Parsing in einen Event umgewandelt.

          Die sinnvoll im Attribut "outputFields" verwendbaren Felder des jeweilgen Profils sind:

            BSD -> PRIVAL,FAC,SEV,TS,HOST,ID,CONT
            IETF -> PRIVAL,FAC,SEV,TS,HOST,DATE,TIME,ID,PID,MID,SDFIELD,CONT
            ParseFn -> PRIVAL,FAC,SEV,TS,HOST,DATE,TIME,ID,PID,MID,SDFIELD,CONT
            raw -> keine Auswahl sinnvoll, es wird immer die Originalmeldung in einen Event umgesetzt

          Erläuterung der Felddaten:

            PRIVAL kodierter Priority Wert (kodiert aus "facility" und "severity")
            FAC Kategorie (Facility)
            SEV Schweregrad der Meldung (Severity)
            TS Zeitstempel aus Datum und Zeit (YYYY-MM-DD hh:mm:ss)
            HOST Hostname / Ip-Adresse des Senders
            DATE Datum (YYYY-MM-DD)
            TIME Zeit (hh:mm:ss)
            ID Gerät oder Applikation welche die Meldung gesendet hat
            PID Programm-ID, oft belegt durch Prozessname bzw. Prozess-ID
            MID Typ der Mitteilung (beliebiger String)
            SDFIELD Metadaten über die empfangene Syslog-Mitteilung
            CONT Inhalt der Meldung
            DATA empfangene Rohdaten

          Hinweis für die manuelle Entscheidung:
          Der typische Satzaufbau der Formate "BSD" bzw. "IETF" beginnt mit:

          <45>Mar 17 20:23:46 ... -> Satzstart des BSD-Formats
          <45>1 2019-03-17T19:13:48 ... -> Satzstart des IETF-Formats


        • port <Port>

          Der verwendete Port. Für einen Sender ist der default-Port 514, für einen Collector (Syslog-Server) der Port 1514.


        • protocol [ TCP | UDP ]

          Setzt den Protokolltyp der verwendet werden soll. Es kann UDP oder TCP gewählt werden.
          Standard ist "UDP" wenn nichts spezifiziert ist.


        • rateCalcRerun <Zeit in Sekunden>

          Wiederholungszyklus für die Bestimmung der Log-Transferrate (Reading "Transfered_logs_per_minute") in Sekunden (>=60). Default: 60 Sekunden.


        • respectSeverity

          Es werden nur Nachrichten übermittelt (Sender) bzw. beim Empfang berücksichtigt (Collector), deren Schweregrad im Attribut enthalten ist. Ist "respectSeverity" nicht gesetzt, werden Nachrichten aller Schweregrade verarbeitet.


        • sslCertPrefix

          Setzt das Präfix der SSL-Zertifikate, die Voreinstellung ist "certs/server-". Mit diesem Attribut kann für verschiedene Log2Syslog-Devices die Verwendung unterschiedlicher SSL-Zertifikate bestimmt werden. Siehe auch das "TLS" Attribut.


        • ssldebug

          Debugging Level von SSL Messages. Das Attribut ist nur für Device-MODEL "Sender" verwendbar.

          • 0 - Kein Debugging (default).
          • 1 - Ausgabe Errors von from IO::Socket::SSL und ciphers von Net::SSLeay.
          • 2 - zusätzliche Ausgabe von Informationen über den Protokollfluss von IO::Socket::SSL und Fortschrittinformationen von Net::SSLeay.
          • 3 - zusätzliche Ausgabe einiger Dumps von IO::Socket::SSL und Net::SSLeay.


        • TLS

          Ein Client (Sender) baut eine gesicherte Verbindung zum Syslog-Server auf. Ein Syslog-Server (Collector) stellt eine gesicherte Verbindung zur Verfügung. Das Protokoll schaltet automatisch auf TCP um. Damit ein Collector TLS verwenden kann, muss ein Zertifikat erstellt werden bzw. vorhanden sein. Mit folgenden Schritten kann ein Zertifikat erzeugt werden:

          1. im FHEM-Basisordner das Verzeichnis "certs" anlegen:
              sudo mkdir /opt/fhem/certs
              
          2. SSL Zertifikat erstellen:
              cd /opt/fhem/certs
              sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem
              
          3. Datei/Verzeichnis-Rechte setzen:
              sudo chown -R fhem:dialout /opt/fhem/certs
              sudo chmod 644 /opt/fhem/certs/*.pem
              sudo chmod 711 /opt/fhem/certs
              


        • timeout

          Das Attribut ist nur für "Sender" verwendbar. Timeout für die Verbindung zum Syslog-Server (TCP).
          Default: 0.5s.


        • timeSpec [Local | UTC]

          Verwendung des lokalen bzw. UTC Zeitformats im Device. Nur empfangene Zeitdatagramme, die die Spezifikation gemäß RFC 3339 aufweisen, werden entsprechend umgewandelt. Die Zeitspezifikation beim Datenversand (Model Sender) erfolgt immer entsprechend des eingestellten Zeitformats.
          Default: Local.

            Beispiele unterstützter Zeitspezifikationen
            2019-04-12T23:20:50Z
            2019-12-19T16:39:57-08:00
            2020-01-01T12:00:27+00:20
            2020-04-04T16:33:10+00:00
            2020-04-04T17:15:00+02:00


        • useParsefilter

          Wenn aktiviert, werden vor dem Parsing der Message nicht-ASCII Zeichen entfernt.


        • verbose

          Verbose-Level entsprechend dem globalen Attribut "verbose". Die Ausgaben der Verbose-Level von Log2Syslog-Devices werden ausschließlich im lokalen FHEM Logfile ausgegeben und nicht weitergeleitet um Schleifen zu vermeiden.


        • useEOF

          Model Sender (Protokoll TCP):
          Nach jedem Sendevorgang wird eine TCP-Verbindung mit EOF beendet.

          Model Collector:
          Es wird mit dem Parsing gewartet, bis der Sender ein EOF Signal gesendet hat. CRLF wird nicht als Datentrenner berücksichtigt. Wenn nicht gesetzt, wird CRLF als Trennung von Datensätzen gewertet.

          Hinweis:
          Wenn der Sender kein EOF verwendet, wird nach Überschreiten eines Puffer-Schwellenwertes das Parsing der Daten erzwungen und die Warnung "Buffer overrun" im FHEM Log ausgegeben.



      Readings

        MSG_<Host> die letzte erfolgreich geparste Syslog-Message von <Host>
        Parse_Err_LastData der letzte Datensatz bei dem das eingestellte parseProfile nicht erfolgreich angewendet werden konnte
        Parse_Err_No die Anzahl der Parse-Fehler seit Start
        SSL_Algorithm der verwendete SSL Algorithmus wenn SSL eingeschaltet und aktiv ist
        SSL_Version die verwendete TLS-Version wenn die Verschlüsselung aktiv ist
        Transfered_logs_per_minute die durchschnittliche Anzahl der übertragenen/empfangenen Logs/Events pro Minute

    LuftdatenInfo

    [EN DE]
      LuftdatenInfo ist das FHEM Modul um Feinstaub-, Temperatur- und Luftfeuchtichkeitswerte von den selbstbau Feinstaub Sensoren von Luftdaten.info auszulesen.
      Dabei können die Werte direkt vom Server oder auch lokal abgefragt werden.
      Bei einer lokalen Abfrage werden durch eine alternative Firmware noch weitere Sensoren unterstützt.

      Vorraussetzungen
        Das Perl-Modul "JSON" wird benötigt.
        Unter Debian (basierten) System, kann dies mittels "apt-get install libjson-perl" installiert werden.

      Define

        define <name> LuftdatenInfo remote <SENSORID1> [<SENSORID2> ..]
        define <name> LuftdatenInfo local <IP>
        define <name> LuftdatenInfo slave <master-name> <sensor1 sensor2 ...>

        Für eine Abfrage der Daten vom Server müssem alle betroffenenen SensorIDs angegeben werden. Die IDs vom SDS01 stehen rechts auf der Seite http://maps.luftdaten.info/ . Die DHT22 SensorID entspricht normalerweise der SDS011 SensorID + 1. Bei einer Abfrage werden die die Positionsangaben verglichen und bei einer Abweichung eine Meldung ins Log geschrieben.
        Für eine lokale Abfrage der Daten muss die IP Addresse oder der Hostname angegeben werden.
        Werden mehrere ähnliche Sensoren betrieben lassen sich die doppelten Werte in einem anderen Gerät geschrieben werden.

      Set

      • statusRequest
        Startet eine Abfrage der Daten.

      Get

      • sensors
        Listet alle Sensoren auf.

      Readings


      • airQuality
        1 => gut
        2 => mittelmä&suml;ig
        3 => ungesund für empfindliche Menschen
        4 => ungesund
        5 => sehr ungesund
        6 => katastrophal
      • altitude
        Höhe über NN
      • humidity
        Relative Luftfeuchtgkeit in %
      • illuminanceFull
        Helligkeit des vollen Bereich in lux
      • illuminanceIR
        Helligkeit des IR Bereich in lux
      • illuminanceUV
        Helligkeit des UV Bereich in lux
      • illuminanceVisible
        Helligkeit des sichtbaren Bereich in lux
      • latitude
        Längengrad
      • location
        Standort als "Postleitzahl Ort"
        Nur bei remote Abfrage verfügbar.
      • longitude
        Breitengrad
      • PM1
        Menge der Partikel mit einem Durchmesser von weniger als 1 µm in µg/m³
      • PM2.5
        Menge der Partikel mit einem Durchmesser von weniger als 2.5 µm in µg/m³
      • PM10
        Menge der Partikel mit einem Durchmesser von weniger als 10 µm in µg/m³
      • pressure
        Luftdruck in hPa
      • pressureNN
        Luftdruck für Normal Null in hPa
        Wird bei aktivem Luftdruck- und Temperatursensor berechnet, sofern sich der Sensor nicht auf Normal Null befindet.
        Hierzu ist die Höhe, kann über Kartendienste oder SmartPhone ermittelt werden, auf der Konfigurationsseite anzugeben.
      • signal
        WLAN Signalstärke in dBm
        Nur bei local Abfrage verfügbar.
      • temperature
        Temperatur in °C
      • UVIntensity
        UV Intensität in W
      • UVRisk
        UV Risiko von 1 bis 5

      Attribute

      • disable 1
        Es werden keine Abfragen mehr gestartet.
      • disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM ...
      • interval <seconds>
        Intervall in Sekunden in dem Abfragen durchgeführt werden.
        Der Vorgabe- und Mindestwert beträgt 300 Sekunden für remote Abfragen und 30 Sekunden für local Abfragen.
      • timeout <seconds>
        Timeout in Sekunden für die Abfragen.
        Der Vorgabe- und Mindestwert beträgt 5 Sekunden.

    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

    [EN DE]
      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), PushButton (Eco-Taster) oder virtualShutterContact (virtueller Fensterkontakt) gewählt werden. Die Adresse <addr> ist eine 6-stellige hexadezimale Zahl. Da autocreate diese vergibt, sollte diese eigentlich nie händisch gewählt werden müssen. Ausnahme : virtueller Fensterkontakt
        Es wird dringend empfohlen 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
      • 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 HT/WT verbunden wird, sendet der Fensterkontakt automatisch die windowOpen Information wenn der Kontakt geöffnet ist. Das Thermostat muss ebenfalls mit dem Fensterkontakt verbunden werden, um diese Nachricht zu verarbeiten. Achtung: Nach dem Senden der Botschaft zum Verbinden an den Fensterkontakt muss der Knopf am Fensterkontakt gedrückt werden um den Fensterkonakt aufzuwecken und den Befehl zu verarbeiten. Details über das erfolgreiche Verbinden finden sich in der Logdatei! Das Verbinden eines Heizkörperthermostates und eines Wandthermostates synchronisiert deren desiredTemperature und verwendet die am Wandthermostat gemessene Temperatur für die Regelung.
      • comfortTemperature <value>
        Nur für HT/WT. Schreibt die angegebene comfort Temperatur in den Speicher des Gerätes.
        Diese kann durch drücken der Taste Halbmond/Stern am Gerät aktiviert werden.
      • deassociate <value>
        Löst die Verbindung, die mit associate gemacht wurde, wieder auf.
      • desiredTemperature <value> [until <date>]
        Nur für HT/WT <value> kann einer aus folgenden Werten sein
        • Grad Celsius zwischen 4,5 und 30,5 Grad Celisus in 0,5 Grad Schritten
        • "on" (30.5) oder "off" (4.5) versetzt den Thermostat in volle Heizleistung bzw. schaltet ihn ab
        • "eco" oder "comfort" mit der eco/comfort Temperatur, die direkt am Gerät eingestellt wurde (änhlich wie die Halbmond/Stern 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ß: "TT.MM.JJJJ SS:MM" (Minuten nur 30 bzw. 00 !), um kurzzeitige eine andere Temperatur bis zu diesem Datum und dieser Zeit einzustellen. Wichtig : der Zeitpunkt muß in der Zukunft liegen !
        Wenn dd.mm.yyyy dem heutigen Tag entspricht kann statdessen auch das Schl¨sselwort today verwendet werden. Bitte sicherstellen, dass der Cube bzw. das Gerät die korrekte Systemzeit hat
      • deviceRename <value>
        Benennt das Device um, inklusive dem durch autocreate erzeugtem Logfile
      • ecoTemperature <value>
        Nur für HT/WT. Schreibt die angegebene eco Temperatur in den Speicher des Gerätes. Diese kann durch Drücken der Halbmond/Stern Taste am Gerät aktiviert werden.
      • export_Weekprofile [device weekprofile name]
      • 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.
      • 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.
      • 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.
      • weekProfile [<day> <temp1>,<until1>,<temp2>,<until2>] [<day> <temp1>,<until1>,<temp2>,<until2>] ...
        Erlaubt das Setzen eines Wochenprofils. Nur für Heizkö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.
      • saveConfig
      • saveConfig [name]
      • restoreRedings [name]
      • restoreDevice [name]

      Get
      • show_savedConfig
        zeigt gespeicherte Konfigurationen an die mittels set restoreReadings / restoreDevice verwendet werden können
        steht erst zur Verfügung wenn für dieses Gerät eine gespeichrte Konfiguration gefunden wurde.

      Attributes
      • actCycle <hh:mm> default leer (nur mit CUL_MAX)
        Stellt eine Lebenserkennung für das Gerät zur Verfügung. [hhh:mm] legt die maximale Zeit ohne eine Nachricht dieses Geräts fest.
        Wenn innerhalb dieser Zeit keine Nachrichten empfangen werden wird das Reading Actifity auf dead gesetzt.
        Sendet das Gerät wieder wird das Reading auf alive zurück gesetzt.
        Wichtig : Der Einsatz ist Nicht sinnvoll beim ECO Taster, da dieser als einziges Mitglied der MAX! Familie keine zyklischen Statusnachrichten verschickt !

      • CULdev <name> default leer (nur mit CUL_MAX)
        CUL der zum senden benutzt wird wenn CUL_MAX eine IO Gruppe verwendet (Multi IO )

      • DbLog_log_onoff (0|1) schreibe die Werte on und off als Text in die DB oder ersetzt sie direkt durch ihre numerischen Werte 30.5 and 4.5
        Hilfreich bei Plots da auf eine extra Plotfunktion verzichtet werden kann.

      • debug (0|1) default 0
        erzeugt zusätzliche Readings (nur mit CUL_MAX)

      • dTempCheck (0|1) default 0
        überwacht im Abstand von 5 Minuten ob das Reading desiredTemperatur der Soll Temperatur im aktuellen Wochenprofil entspricht. (nur fü Ger&aumk;te vom Typ HT oder WT)
        Das Ergebniss steht als Abweichung im Reading dTempCheck, d.h. 0 = keine Abweichung
        Die Überwachung is nur aktiv wenn die Soll Temperatur ungleich der Window Open Temperatur ist

      • dummy (0|1) default 0
        macht das Device zum read-only Device

      • externalSensor <device:reading> default none
        Wenn in einem Raum kein Wandthermostat vorhanden ist aber die Raumtemperatur zusätlich mit einem externen Sensor in FHEM erfasst wird (z.B. LaCrosse)
        kann dessen aktueller Temperatur Wert zur Berechnung des Readings deviation benutzt werden statt des eigenen Readings temperature

      • IODev <name>
        MAXLAN oder CUL_MAX Device Name

      • keepAuto (0|1) default 0
        Wenn der Wert auf 1 gesetzt wird, bleibt das Gerät im Wochenprogramm auch wenn ein desiredTemperature gesendet wird.

      • scanTemp (0|1) default 0
        wird vom MaxScanner benutzt

      • skipDouble (0|1) default 0 (nur mit CUL_MAX)
        Wenn mehr als ein Thermostat zusammmen mit einem Fensterkontakt und/oder einem Wandthermostst eine Gruppe bildet,
        versendet jedes Mitglieder der Gruppe seine Statusnachrichten einzeln an jedes andere Mitglied der Gruppe.
        Das führt dazu das manche Events doppelt oder sogar dreifach ausgelöst werden, kann mit diesem Attribut unterdrückt werden.

      • windowOpenCheck (0|1)
        überwacht im Abstand von 5 Minuten ob bei Geräten vom Typ ShutterContact das Reading onoff den Wert 1 hat (Fenster offen , default 1)
        oder bei Geräten vom Typ HT/WT ob die Soll Temperatur gleich der Window Open Temperatur ist (default 0). Das Ergebniss steht im Reading windowOpen, Format hh:mm


      Erzeugte Ereignisse:
      • desiredTemperature
        Nur für Heizkörperthermostate und Wandthermostate
      • valveposition
        Nur für Heizkörperthermostate
      • battery
      • batteryState
      • 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

    MAX_Temperature

    [EN DE]

      Dieses Modul erweitert die Heizkörpersteuerung MAX um weitere Einstellmöglichkeiten.
      Möglichkeiten:
      - Setzen der Temperatur für ein oder mehrere Heizkörperthermostate.
      - Setzen der Temperatur und der Zeit (Urlaubsmodus).
      - Gruppen können für dieses Modul festgelegt werden.
      - Es können einzelne Devices hinzugefügt oder auch ausgeschlossen werden.
      - Das Layout für die Auswahlfelder kann beliebig angepasst werden.

      Beispiele:

      define MaxTemp MAX_Temperature
      define MaxTemp MAX_Temperature T
      define MaxTemp MAX_Temperature HT
      define MaxTemp MAX_Temperature WT
      define MaxTemp MAX_Temperature 123456

      Define

      define <NAME> MAX_Temperature
      Definition eines Temperatur-Moduls für alle Heizkörperthermostate und Wandthermostate.

      define <NAME> MAX_Temperature T
      Definition eines Temperatur-Moduls für alle Heizkörperthermostate und Wandthermostate.

      define <NAME> MAX_Temperature HT
      Definition eines Temperatur-Moduls nur für Heizkörperthermostate.

      define <NAME> MAX_Temperature WT
      Definition eines Temperatur-Moduls nur für Wandthermostate.

      define <NAME> MAX_Temperature 123456
      Definition eines Temperatur-Moduls für einen bestimmten Thermostaten.

    Attributes

    • Layout
      attr <NAME> Layout <HTML>
      Layoutmöglichkeit der Anzeige.

      Es ist möglich das Layout selbst zu definieren. HTML-Code ist möglich. Beispiele:
      Standard:
      [DEVICE][MODE][TEMP][SEND][DATE][CLOCK][SEND]<br>\n[STATE]

      Aufbau als Tabelle:
      [STATE]<br><table class=\"block wide\"><tr><td>[DEVICE]</td><td>[MODE]</td><td>[DATE]</td><td>[CLOCK]</td><td>[SEND]</td></tr></table>

      Ohne Einstellung des Urluabsmodus:
      [STATE]<br> [DEVICE][MODE][TEMP][SEND]

      Nur Einstellung des Urlaubsmodus:
      [STATE]<br> [DEVICE][TEMP][DATE][CLOCK][SEND]

      Alle Einträge untereinander: [STATE]<br>
      [DEVICE]<br>
      [MODE]<br>
      [TEMP]<br>
      [DATE]<br>
      [CLOCK]<br>
      [SEND]<br>

      Es ist auch möglich Perl-Code hinzuzufügen (in geschweiften Klammern)
      {ReadingsVal("meinDevice","MeinReading","Standardwert")}[STATE][DEVICE][MODE][TEMP][SEND][DATE][CLOCK][SEND]

      Spezielle Einträge:
      [STATE] Status
      Anzeige von Readings des gewählten MAX-Gerätes.
      Standard: Mode: (auto|manual|temporary) keepAuto: (0|1) Temp: (aktuelle Temperatur) desiredTemperature: (eingestellte Temperatur)
      Wird eine Gruppe ausgewählt, wird hier der Name der Gruppe angezeigt.
      [DEVICE] Auswahlbox oder Name des gewählten MAX-Gerätes.
      [MODE] Auswahlbox für den Modus (auto|manual).
      [TEMP] Auswahlbox für die gewünschte Temperatur.
      [DATE] Auswahlbox für das Datum.
      [CLOCK] Auswahlbox für die Uhrzeit.
      [SEND] Button zum senden der neuen Einstellungen.
      [RESET] Button zum zurücksetzen der gemachten Einstellungen.
    • maxDay
      attr <NAME> maxDay (1,2,3,4,5,6,7,14,21,28,35)
      Einstellung, wie viele Tage im Auswahlfeld für das Datum eingetragen werden.
    • maxHour
      attr <NAME> maxHour (6,12,18,24)
      Einstellung, wie viele Stunden im Auswahlfeld für das Zeit eingetragen werden.
    • ignoreDevices
      attr <NAME> ignoreDevices <Auflistung>
      Auflistung von Geräten, die von dem Modul ignoriert werden sollen.
      Komma als Trenner.
      Beispiel:
      MyMax_Wohnzimmer,MyMax_Schlafzimmer
    • addDevices
      attr <NAME> addDevices <Auflistung>
      Auflistung von Geräten, die zur Auswahlliste hinzugefügt werden sollen.
      Somit lassen sich dann auch z.B. "structure" hinzufügen.
      Komma als Trenner.
      Beispiel:
      Struc_HeizungenUnten,Struc_HeizungenOben
    • addDevicesFirst
      attr <NAME> addDevicesFirst (0|1)
      Die manuell hinzugefügten Geräte als erstes in der Liste anzeigen.
    • addGroups
      attr <NAME> addGroups (Text)
      Gruppen erstellen.
      Beispiele:
      Untergeschoss:Max_Device1,Max_Device2,Max_Device3 Obergeschoss:Max_Device4,Max_Device5
      Gruppe&nbsp;1:Max_Device1,Max_Device2,Max_Device3 Gruppe&nbsp;2:Max_Device4,Max_Device5
      Um ein leerzeichen in den Namen der Gruppe einzufügen, kann &nbsp; eingegeben werden. Beispiel:
      Meine&nbsp;Gruppe:Device1,Device2
    • addGroupsFirst
      attr <NAME> addGroupsFirst (0|1)
      Die Gruppen als erstes in der Liste anzeigen.
    • DevicesAlias
      attr <NAME> addDevicesAlias <Auflistung>
      Ein Aliasnamen für die MAX-Geräte vergeben.
      Komma als Trenner.
      Beispiele:
      Struc_HeizungenUnten:Heizkörper unten,Struc_HeizungenOben:Heizkörper oben
      Max-Device1:Heizkörper Bad,Max-Device2:Heizkörper Küche
    • ShowMSg
      attr <NAME> ShowMSg (0|1)
      Nach dem Senden von Einstellungen eine Erfolgsbenachrichtigung in einem Dialog anzeigen.
    • SendButton
      attr <NAME> SendButton (Text)
      Entweder der Name eines Symbols oder ein Text. Standard:
      audio_play
    • ResetButton
      attr <NAME> ResetButton (Text)
      Entweder der Name eines Symbols oder ein Text. Standard:
      control_x
    • createAT
      attr <NAME> createAT (0|1)
      Legt automatisch ein temporäres AT an, um das Gerät nach Ablauf der Zeit
      wieder in den Automatik Modus zu schalten.
      Dies ist normalerweise nicht notwendig.
    • autoAT_room
      attr <NAME> autoAT_room MAX
      Der Raum in dem das temporäre AT erstellt werden soll. Standard:
      MAX

    Readings

    • Selected_*
      Die derzeit ausgewählten Werte der Auswahlboxen.

    MEDIAPORTAL

    [EN DE]

    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.

    MOBILEALERTS

    [EN DE]
      MOBILEALERTS ist ein FHEM-Modul fü die deutschen MobileAlerts Gerä und TFA WEATHERHUB.

      Dieses FHEM Modul stellt jeweils ein MobileAlerts Gerät dar. Die Verbindung wird durch das MOBILELAERTSGW Modul bereitgestellt.
      Aktuell werden unterstüzt: MA10100, MA10101, MA10200, MA10238, MA10230, MA10300, MA10650, MA10320PRO, MA10350, MA10410, MA10450, MA10660, MA10700, TFA 30.3312.02, MA10800, WL2000, TFA30.3060.01.IT, MA10120PRO, MA10860, MA10880
      Unterstüzt aber ungetestet: ./.

      Define
        define <name> MOBILEALERTS <deviceID> <corrTempIn> <corrHumIn> <corrTempOut> <corrHumOut> <corrTemp2> <corrHum2> <corrTemp3> <corrHum3>

        deviceID ist der Sensorcode auf dem Sensor. Alternativ: deviceID_<Kanalnummer>
        corrTempIn optional: Korrekturwert für Temperatur (bzw. Temperatur in)
        corrHumIn optional: Korrekturwert für die Luftfeuchte
        corrTempOut optional: Korrekturwert für Temperatur Out / Sensor 1
        corrHumOut optional: Korrekturwert für die Luftfeuchte Out / Sensor 1
        corrTemp2 optional: Korrekturwert für Temperatur Sensor 2
        corrHum2 optional: Korrekturwert für die Luftfeuchte Sensor 2
        corrTemp3 optional: Korrekturwert für Temperatur Sensor 3
        corrHum3 optional: Korrekturwert für die Luftfeuchte Sensor 3

      Readings
      • lastMsg
        Die letzte empfangene Nachricht (immer für unbekannte Geräte, für bekannte nur wenn das Attribut lastMsg gesetzt ist).
      • deviceType
        Der Gerätetyü.
      • lastRcv
        Timestamp der letzten Nachricht.
      • actStatus
        Zeigt 'unknown', 'alive', 'dead', 'switchedOff' abhängig vom Attribut actCycle
      • txCounter
        Counter des letzten Nachricht (wird 0 nach Batteriewechsel).
      • batteryState
        Status der Batterie (low oder ok)
      • triggered
        1=letzte Nachricht wurde von einem Ereignis ausgelöst.
      • tempertature, prevTemperature, temperatureIn, temperatureOut, prevTemperatureIn, prevTemperatureOut
        Temperatur (abhänging vom Gerät und dem Attribut expert).
      • tempertatureString, prevTemperatureString, temperatureInString, temperatureOutString, prevTemperatureInString, prevTemperatureOutString
        Temperatur als Zeichkette.
      • state
        State of device (short actual reading)
      • humidity, prevHumidity, humidityIn, humidityOut, prevHumidityIn, prevHumidityOut
        Luftfeuchte (abhänging vom Gerät und dem Attribut expert).
      • humidityString, prevHumidityString, humidityInString, humidityOutString, prevHumidityInString, prevHumidityOutString
        Luftfeuchte als Zeichenkette
      • wetness
        Zeigt ob der Sensors Wasser entdeckt.
      • lastEvent, lastEvent<X> ,lastEventString, lastEvent<X>String
        Zeitpunkt wann das letzte Event (Regen) stattgefunden hat (nur MA10650).
      • mmRain, mmRainActHour, mmRainLastHour, mmRainActDay, mmRainYesterday
        Regen seit dem letzten Reset des Counters, in der aktuellen Stunde, seit der letzten Stunden, am aktuellen Tagn, gestern.
      • direction, directionInt
        Richtung des Winds.
      • windSpeed, gustSpeed
        Windgeschwindigkeit in m/s.
      • airPressure
        Luftdruck in hPa
      • airPressureString
        Luftdruck in hPa als Zeichenkette
      • alarm1, alarm2, alarm3, alarm4
        Aktive Alarme (Werte: on/off)

      Set
      • set <name> clear <readings|counters>
        Löscht die Readings (alle) oder Counter (wie mmRain).

      Get
        N/A


      Attributes
      • ignore
      • readingFnAttributes
      • lastMsg
        Wenn dieser Wert auf 1 gesetzt ist, wird die letzte erhaltene Nachricht als Reading gelogt auch wenn das Gerä bekannt ist.
      • actCycle <[hhh:mm]|off>
        Dieses Attribut ermölicht eine 'nicht erreichbarkeit' Erkennung. [hhh:mm] ist die maximale Zeit, innerhalb der keine Nachrichten empfrangen wird. Das Reading actStatus zeigt den Status 'unknown', 'alive', 'dead' an.
      • expert
        Gibt an wie detailiert die Readings angezeigt werden (0=nur aktuelle, 1=mit vorhergehenden, 4=alle).

    MOBILEALERTSGW

    [EN DE]
      MOBILEALERTSGW ist ein FHEM-Modul für das deutsche MobileAlerts Gateway und TFA WEATHERHUB.

      Dieses FHEM-Modul simuliert einen http-proxy, um Nachrichten vom Gateway abzufangen. Um dies zu erreichen, muss das Gateway so konfiguriert werden, dass es den FHEM-Server mit dem definierten Port als Proxy nutzt. Sie können dies entweder mit der App oder dem Kommando initgateway erreichen. Es erkennt automatisch Geräte. Die Gerä werden durch das MOBILELAERTS Modul bereitgestellt. MOBILEALERTS nutzt dieses Modul als Backend.

      Define
        define <name> MOBILEALERTSGW <port>

        port ist der Port auf dem der Proxy-Server hört. Der Port muss frei sein.

      Readings
      • Gateways
        Liste der bekannten Gateways
      • GW_<Gateway-MAC>_lastSeen
        Zeitpunkt when zuletzt eine Nachricht empfangen wurde
      • GW_<Gateway-MAC>_ip
        IP-Adresse des Gateways
      • GW_<Gateway-MAC>_serial
        Seriennummer des Gateways
      • GW_<Gateway-MAC>_proxy
        on, off: Einstellung des Proxies (nur verfünach einem get config)
      • GW_<Gateway-MAC>_proxyname
        Name/IP der Proxy (nur verfünach einem get config)
      • GW_<Gateway-MAC>_proxyport
        Port der Proxy (nur verfünach einem get config)
      • GW_<Gateway-MAC>_config
        Komplette Konfiguration als HEX-Wert (nur verfünach einem get config)

      Set
      • set <name> clear <readings>
        Löscht die Readings.
      • set <name> initgateway <gatewayid>
        Setzt den Proxy im Gateway auf dem FHEM-Server. Es kann ein Neustart (reboot) des Gateways nötig sein, damit die Einstellung wirksam wird.
      • set <name> rebootgateway <gatewayid>
        Startet das Gateway neu.

      Get
      • get <name> config <IP or gatewayid>
        Holt die Konfiguration eines oder aller Gateways im lokalen Netz. IP bzw. die GatewayId sind optional. Wenn keines von beiden angegeben ist, werden alle Gateways im lokalen Netz gesucht (Broadcast).


      Attributes
      • forward
        Wenn dieser Wert auf 1 gesetzt ist, werden die Daten zusätzlich zum MobileAlerts Server http://www.data199.com/gateway/put gesendet.
      • allowfrom
        Gibt an von welchens Host-(Gateways) IPs eingaben angenommen werden. Wenn nicht gesetzt, sind alle privaten IP-Adressen erlaubt.

    MPD

    [EN DE]
      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. Achtung: funktioniert nicht mit modipy und ist allgemein nicht mehr zu empfehlen!
      • 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

    MQTT2_CLIENT

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

    MQTT2_DEVICE

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

    MQTT2_SERVER

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

    MQTT_DEVICE

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

    MQTT_GENERIC_BRIDGE

      Dieses Modul ist eine MQTT-Bridge, die gleichzeitig mehrere FHEM-Devices erfaßt und deren Readings per MQTT weiter gibt bzw. aus den eintreffenden MQTT-Nachrichten befüllt oder diese als 'set'-Befehl an dem konfigurierten FHEM-Gerät ausführt.
      Es wird eines der folgenden Geräte als IODev benötigt: MQTT, MQTT2_CLIENT oder MQTT2_SERVER.

      Die (minimale) Konfiguration der Bridge selbst ist grundsätzlich sehr einfach.

      Definition:

        Im einfachsten Fall reichen schon zwei Zeilen:

        defmod mqttGeneric MQTT_GENERIC_BRIDGE [prefix] [devspec,[devspec]]
        attr mqttGeneric IODev

        Alle Parameter im Define sind optional.

        Der erste ist ein Prefix für die Steuerattribute, worüber die zu überwachende Geräte (s.u.) konfiguriert werden. Defaultwert ist 'mqtt'. Wird dieser z.B. als 'mqttGB1_' festgelegt, heißen die Steuerungsattribute entsprechend mqttGB1_Publish etc.

        Der zweite Parameter ('devspec') erlaubt die Menge der zu überwachenden Geräten zu begrenzen (sonst werden einfach alle überwacht, was jedoch Performance kosten kann). Beispiel für devspec: 'TYPE=dummy' oder 'dummy1,dummy2'. Es gelten die allgemeinen Regeln für devspec, bei kommaseparierter Liste sind also keine Leerzeichen erlaubt!

      get:

      • version
        Zeigt Modulversion an.

      • devlist [<name (regex)>]
        Liefert Liste der Namen der von dieser Bridge überwachten Geräte deren Namen zu dem optionalen regulärem Ausdruck entsprechen. Fehlt der Ausdruck, werden alle Geräte aufgelistet.

      • devinfo [<name (regex)>]
        Gibt eine Liste der überwachten Geräte aus, deren Namen dem optionalen regulären Ausdruck entsprechen. Fehlt der Ausdruck, werden alle Geräte aufgelistet. Zusätzlich werden bei 'publish' und 'subscribe' verwendete Topics angezeigt incl. der entsprechenden Readingsnamen.

      readings:

      • device-count
        Anzahl der überwachten Geräte

      • incoming-count
        Anzahl eingehender Nachrichten

      • outgoing-count
        Anzahl ausgehende Nachrichten

      • updated-reading-count
        Anzahl der gesetzten Readings

      • updated-set-count
        Anzahl der abgesetzten 'set' Befehle

      • transmission-state
        letze Übertragunsart

      Attribute:

      Folgende Attribute werden unterstützt:

    • Im MQTT_GENERIC_BRIDGE-Device selbst:

      • IODev
        Dieses Attribut ist obligatorisch und muss den Namen einer funktionierenden MQTT-IO-Modulinstanz enthalten. Es werden derzeit MQTT, MQTT2_CLIENT und MQTT2_SERVER unterstützt.

      • disable
        Wert 1 deaktiviert die Bridge

        Beispiel:
        attr <dev> disable 1

      • globalDefaults
        Definiert Defaults. Diese greifen in dem Fall, wenn in dem jeweiligen Gerät definierte Werte nicht zutreffen. s.a. mqttDefaults.

        Beispiel:
        attr <dev> sub:base={"FHEM/set/$device"} pub:base={"FHEM/$device"}

      • globalAlias
        Definiert Alias. Diese greifen in dem Fall, wenn in dem jeweiligen Gerät definierte Werte nicht zutreffen. s.a. mqttAlias.

      • globalPublish
        Definiert Topics/Flags für die Übertragung per MQTT. Diese werden angewendet, falls in dem jeweiligen Gerät definierte Werte nicht greifen oder nicht vorhanden sind. s.a. mqttPublish.

        Hinweis:
        Dieses Attribut sollte nur gesetzt werden, wenn wirklich alle Werte aus den überwachten Geräten versendet werden sollen; dies wird eher nur im Ausnahmefall zutreffen!

      • globalTypeExclude
        Definiert (Geräte-)Typen und Readings, die nicht bei der Übertragung berücksichtigt werden. Werte können getrennt für jede Richtung (publish oder subscribe) vorangestellte Prefixe 'pub:' und 'sub:' angegeben werden. Ein einzelner Wert bedeutet, dass ein Gerät diesen Types komplett ignoriert wird (also für alle seine Readings und beide Richtungen). Durch einen Doppelpunkt getrennte Paare werden als [sub:|pub:]Type:Reading interpretiert. Das bedeutet, dass an dem gegebenen Type die genannte Reading nicht übertragen wird. Ein Stern anstatt Type oder auch Reading bedeutet, dass alle Readings eines Geretätyps bzw. genannte Readings an jedem Gerätetyp ignoriert werden.

        Beispiel:
        attr <dev> globalTypeExclude MQTT MQTT_GENERIC_BRIDGE:* MQTT_BRIDGE:transmission-state *:baseID

      • globalDeviceExclude
        Definiert Gerätenamen und Readings, die nicht übertragen werden. Werte können getrennt für jede Richtung (publish oder subscribe) vorangestellte Prefixe 'pub:' und 'sub:' angegeben werden. Ein einzelner Wert bedeutet, dass ein Gerät mit diesem Namen komplett ignoriert wird (also für alle seine Readings und beide Richtungen). Durch ein Doppelpunkt getrennte Paare werden als [sub:|pub:]Device:Reading interptretiert. Das bedeutet, dass an dem gegebenen Gerät die genannte Readings nicht übertragen wird.

        Beispiel:
        attr <dev> globalDeviceExclude Test Bridge:transmission-state

      • forceNEXT

        Nur relevant, wenn MQTT2_CLIENT oder MQTT2_SERVER als IODev verwendet werden. Wird dieses Attribut auf 1 gesetzt, gibt MQTT_GENERIC_BRIDGE alle eingehenden Nachrichten an weitere Client Module (z.b. MQTT2_DEVICE) weiter, selbst wenn der betreffende Topic von einem von der MQTT_GENERIC_BRIDGE überwachten Gerät verwendet wird. Im Regelfall ist dies nicht erwünscht und daher ausgeschaltet, um unnötige autocreates oder Events an MQTT2_DEVICEs zu vermeiden. Siehe dazu auch das clientOrder Attribut bei MQTT2_CLIENT bzw -SERVER; wird das Attribut in einer Instance von MQTT_GENERIC _BRIDGE gesetzt, kann das Auswirkungen auf weitere Instanzen haben.


    • Für die überwachten Geräte wird eine Liste der möglichen Attribute automatisch um mehrere weitere Einträge ergänzt.
      Sie fangen alle mit vorher mit dem in der Bridge definierten Prefix an. Über diese Attribute wird die eigentliche MQTT-Anbindung konfiguriert.
      Als Standardwert werden folgende Attributnamen verwendet: mqttDefaults, mqttAlias, mqttPublish, mqttSubscribe.
      Die Bedeutung dieser Attribute wird im Folgenden erklärt.

      • mqttDefaults

        Hier wird eine Liste der "key=value"-Paare erwartet. Folgende Keys sind dabei möglich:

        • 'qos'
          definiert ein Defaultwert für MQTT-Paramter 'Quality of Service'.
        • 'retain'
          erlaubt MQTT-Nachrichten als 'retained messages' zu markieren.
        • 'base'
          wird als Variable ($base) bei der Konfiguration von konkreten Topics zur Verfügung gestellt. Sie kann entweder Text oder eine Perl-Expression enthalten. Perl-Expression muss in geschweifte Klammern eingeschlossen werden. In einer Expression können folgende Variablen verwendet werden: $base = entsprechende Definition aus dem 'globalDefaults', $reading = Original-Readingname, $device = Devicename und $name = Readingalias (s. mqttAlias. Ist kein Alias definiert, ist $name=$reading).
          Weiterhin können frei benannte Variablen definiert werden, die neben den oben genannten in den public/subscribe Definitionen verwendet werden können. Allerdings ist zu beachten, dass diese Variablen dort immer mit Anführungszeichen zu verwenden sind.

        Alle diese Werte können durch vorangestelle Prefixe ('pub:' oder 'sub') in ihrer Gültigkeit auf nur Senden bzw. nur Empfangen begrenzt werden (soweit sinnvoll). Werte für 'qos' und 'retain' werden nur verwendet, wenn keine explizite Angaben darüber für ein konkretes Topic gemacht worden sind.

        Beispiel:
        attr <dev> mqttDefaults base={"TEST/$device"} pub:qos=0 sub:qos=2 retain=0

      • mqttAlias
        Dieses Attribut ermöglicht Readings unter einem anderen Namen auf MQTT-Topic zu mappen. Dies ist dann sinnvoll, wenn entweder Topicdefinitionen Perl-Expressions mit entsprechenden Variablen sind oder der Alias dazu dient, aus MQTT-Sicht standardisierte Readingnamen zu ermöglichen. Auch hier werden 'pub:' und 'sub:' Prefixe unterstützt (für 'subscribe' gilt das Mapping quasi umgekehrt).

        Beispiel:
        attr <dev> mqttAlias pub:temperature=temp

        temperature ist dabei der Name des Readings in FHEM.

      • mqttPublish

        Hier werden konkrete Topics definiert und den Readings zugeordnet (Format: <reading>:topic=<topic>). Weiterhin können diese einzeln mit 'qos'- und 'retain'-Flags versehen werden.
        Topics können auch als Perl-Expression mit Variablen definiert werden ($device, $reading, $name, $base sowie ggf. über mqttDefaults weitere).

        'topic' kann auch als 'readings-topic' geschrieben werden.
        Werte für mehrere Readings können auch gemeinsam gleichzeitig definiert werden, indem sie, mittels '|' getrennt, zusammen angegeben werden.
        Wird anstatt eines Readingsnamen ein '*' verwendet, gilt diese Definition für alle Readings, für die keine expliziten Angaben gemacht wurden.
        Neben Readings können auch Attributwerte gesendet werden ('atopic' oder 'attr-topic').
        Sollten für ein Event mehrere Nachrichten (sinnvollerweise an verschiedene Topics) versendet werden, müssen jeweilige Definitionen durch Anhängen von einmaligen Suffixen (getrennt von dem Readingnamen durch ein !-Zeichen) unterschieden werden: reading!1:topic=... reading!2:topic=....
        Weiterhin können auch Expressions (reading:expression=...) definiert werden.
        Die Expressions können sinnvollerweise entweder Variablen ($value, $topic, $qos, $retain, $message, $uid) verändern, oder einen Wert != undef zurückgeben.
        Der Rückgabewert wird als neuer Nachrichten-Value verwendet, die Änderung der Variablen hat dabei jedoch Vorrang.
        Ist der Rückgabewert undef, dann wird das Setzen/Ausführen unterbunden.
        Ist die Rückgabe ein Hash (nur 'topic'), werden seine Schlüsselwerte als Topic verwendet, die Inhalte der Nachrichten sind entsprechend die Werte aus dem Hash.

        Option 'resendOnConnect' erlaubt eine Speicherung der Nachrichten, wenn keine Verbindung zu dem MQTT-Server besteht. Die zu sendende Nachrichten werden in einer Warteschlange gespeichert. Wird die Verbindung aufgebaut, werden die Nachrichten in der ursprüngichen Reihenfolge verschickt.

          Mögliche Werte:
        • none
          alle verwerfen
        • last
          immer nur die letzte Nachricht speichern
        • first
          immer nur die erste Nachricht speichern, danach folgende verwerfen
        • all
          alle speichern, allerdings existiert eine Obergrenze von 100, wird es mehr, werden älteste überzählige Nachrichten verworfen.

        Beispiele:
        attr <dev> mqttPublish temperature:topic={"$base/$name"} temperature:qos=1 temperature:retain=0 *:topic={"$base/$name"} humidity:topic=TEST/Feuchte
        attr <dev> mqttPublish temperature|humidity:topic={"$base/$name"} temperature|humidity:qos=1 temperature|humidity:retain=0
        attr <dev> mqttPublish *:topic={"$base/$name"} *:qos=2 *:retain=0
        attr <dev> mqttPublish *:topic={"$base/$name"} reading:expression={"message: $value"}
        attr <dev> mqttPublish *:topic={"$base/$name"} reading:expression={$value="message: $value"}
        attr <dev> mqttPublish *:topic={"$base/$name"} reading:expression={"TEST/Topic1"=>"$message", "TEST/Topic2"=>"message: $message"}
        attr <dev> mqttPublish [...] *:resendOnConnect=last
        attr <dev> mqttPublish temperature:topic={"$base/temperature/01/value"} temperature!json:topic={"$base/temperature/01/json"} temperature!json:expression={toJSON({value=>$value,type=>"temperature",unit=>"°C",format=>"00.0"})}

      • mqttSubscribe

        Dieses Attribut konfiguriert das Empfangen der MQTT-Nachrichten und die entsprechenden Reaktionen darauf.
        Die Konfiguration ist ähnlich der für das 'mqttPublish'-Attribut. Es können Topics für das Setzen von Readings ('topic' oder auch 'readings-topic') und Aufrufe von 'set'-Befehl an dem Gerät ('stopic' oder 'set-topic') definiert werden.
        Attribute können ebenfalls gesetzt werden ('atopic' oder 'attr-topic').
        Mit Hilfe von zusätzlichen auszuführenden Perl-Expressions ('expression') kann das Ergebnis vor dem Setzen/Ausführen noch beeinflußt werden.
        In der Expression sind die folgenden Variablen verfügbar: $device, $reading, $message (initial gleich $value). Die Expression kann dabei entweder die Variable $value verändern, oder einen Wert != undef zurückgeben. Redefinition der Variable hat Vorrang. Ist der Rückgabewert undef, dann wird das Setzen/Ausführen unterbunden (es sei denn, $value hat einen neuen Wert).
        Ist die Rückgabe ein Hash (nur für 'topic' und 'stopic'), dann werden seine Schlüsselwerte als Readingsnamen bzw. 'set'-Parameter verwendet, die zu setzenden Werte sind entsprechend den Werten aus dem Hash.
        Weiterhin kann das Attribut 'qos' angegeben werden ('retain' macht dagegen keinen Sinn).
        In der Topic-Definition können MQTT-Wildcards (+ und #) verwendet werden.
        Falls der Reading-Name mit einem '*'-Zeichen am Anfang definiert wird, gilt dieser als 'Platzhalter'. Mehrere Definitionen mit '*' sollten somit z.B. in folgender Form verwendet werden: *1:topic=... *2:topic=... Der tatsächliche Name des Readings (und ggf. des Gerätes) wird dabei durch Variablen aus dem Topic definiert ($device (nur für globale Definition in der Bridge), $reading, $name). Im Topic wirken diese Variablen als Wildcards, was evtl. dann sinnvoll ist, wenn der Reading-Name nicht fest definiert ist (also mit '*' anfängt, oder mehrere Namen durch '|' getrennt definiert werden).
        Die Variable $name wird im Unterschied zu $reading ggf. über die in 'mqttAlias' definierten Aliase beeinflusst. Auch Verwendung von $base ist erlaubt.
        Bei Verwendung von 'stopic' wird der 'set'-Befehl als 'set <dev> <reading> <value>' ausgeführt. Um den set-Befehl direkt am Device ohne Angabe eines Readingnamens auszuführen (also 'set <dev> <value>') muss als Reading-Name 'state' verwendet werden.

        Um Nachrichten im JSON-Format zu empfangen, kann mit Hilfe von 'expression' direkt die in fhem.pl bereitgestellte Funktion json2nameValue() aufgerufen werden, als Parameter ist $message anzugeben.

        Einige Beispiele:
        attr <dev> mqttSubscribe temperature:topic=TEST/temperature test:qos=0 *:topic={"TEST/$reading/value"}
        attr <dev> mqttSubscribe desired-temperature:stopic={"TEST/temperature/set"}
        attr <dev> mqttSubscribe state:stopic={"TEST/light/set"} state:expression={...}
        attr <dev> mqttSubscribe state:stopic={"TEST/light/set"} state:expression={$value="x"}
        attr <dev> mqttSubscribe state:stopic={"TEST/light/set"} state:expression={"R1"=>$value, "R2"=>"Val: $value", "R3"=>"x"} attr <dev> mqttSubscribe verbose:atopic={"TEST/light/verbose"} attr <dev> mqttSubscribe json:topic=XTEST/json json:expression={json2nameValue($message)}

      • mqttForward

        Dieses Attribut definiert was passiert, wenn eine und dasselbe Reading sowohl aboniert als auch gepublisht wird. Mögliche Werte: 'all' und 'none'.
        Bei 'none' werden per MQTT angekommene Nachrichten nicht aus dem selben Gerät per MQTT weiter gesendet.
        Die Einstellung 'all' bewirkt das Gegenteil, also damit wird das Weiterleiten ermöglicht.
        Fehlt dieser Attribut, dann wird standardmäßig für alle Gerätetypen außer 'Dummy' die Einstellung 'all' angenommen (damit können Aktoren Befehle empfangen und ihre Änderungen im gleichem Zug weiter senden) und für Dummies wird 'none' verwendet. Das wurde so gewählt, da dummy von vielen Usern als eine Art GUI-Schalterelement verwendet werden. 'none' verhindert hier unter Umständen das Entstehen einer Endlosschleife der Nachrichten.

      • mqttDisable

        Wird dieses Attribut in einem Gerät gesetzt, wird dieses Gerät vom Versand bzw. Empfang der Readingswerten ausgeschlossen.

    Beispiele

    • Bridge für alle möglichen Geräte mit dem Standardprefix:
      defmod mqttGeneric MQTT_GENERIC_BRIDGE
      attr mqttGeneric IODev mqtt

    • Bridge mit dem Prefix 'mqttSensors' für drei bestimmte Geräte:
      defmod mqttGeneric MQTT_GENERIC_BRIDGE mqttSensors sensor1,sensor2,sensor3
      attr mqttGeneric IODev mqtt

    • Bridge für alle Geräte in einem bestimmten Raum:
      defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt room=Wohnzimmer
      attr mqttGeneric IODev mqtt

    • Einfachste Konfiguration eines Temperatursensors:
      defmod sensor XXX
      attr sensor mqttPublish temperature:topic=haus/sensor/temperature

    • Alle Readings eines Sensors (die Namen werden unverändet übergeben) per MQTT versenden:
      defmod sensor XXX
      attr sensor mqttPublish *:topic={"sensor/$reading"}

    • Topic-Definition mit Auslagerung des gemeinsamen Teilnamens in 'base'-Variable:
      defmod sensor XXX
      attr sensor mqttDefaults base={"/$device/$reading"}
      attr sensor mqttPublish *:topic={"$base"}

    • Topic-Definition nur für bestimmte Readings mit deren gleichzeitigen Umbennenung (Alias):
      defmod sensor XXX
      attr sensor mqttAlias temperature=temp humidity=hum
      attr sensor mqttDefaults base={"/$device/$name"}
      attr sensor mqttPublish temperature:topic={"$base"} humidity:topic={"$base"}

    • Beispiel für eine zentrale Konfiguration in der Bridge für alle Devices, die Reading 'temperature' besitzen:
      defmod mqttGeneric MQTT_GENERIC_BRIDGE
      attr mqttGeneric IODev mqtt
      attr mqttGeneric defaults sub:qos=2 pub:qos=0 retain=0
      attr mqttGeneric publish temperature:topic={"haus/$device/$reading"}

    • Beispiel für eine zentrale Konfiguration in der Bridge für alle Devices
      (wegen einer schlechten Übersicht und einer unnötig grossen Menge eher nicht zu empfehlen!):
      defmod mqttGeneric MQTT_GENERIC_BRIDGE
      attr mqttGeneric IODev mqtt
      attr mqttGeneric defaults sub:qos=2 pub:qos=0 retain=0
      attr mqttGeneric publish *:topic={"haus/$device/$reading"}

    Einschränkungen:

    • Wenn mehrere Readings das selbe Topic abonnieren, sind dabei keine unterschiedlichen QOS möglich.
    • Wird in so einem Fall QOS ungleich 0 benötigt, sollte dieser entweder für alle Readings gleich einzeln definiert werden, oder allgemeingültig über Defaults.
      Ansonsten wird beim Erstellen von Abonnements der erst gefundene Wert verwendet.
    • Abonnements werden nur erneuert, wenn sich das Topic ändert; QOS-Flag-Änderung alleine wirkt sich daher erst nach einem Neustart aus.

    MSG

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

    MSGFile

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

    MSGMail

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

    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

    MediaList

    [EN DE]

    Eine deutsche Beschreibung ist aktuell nur im WIKI verfügbar.
    Wiki MediaList

    MieleAtHome

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

    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

    ModbusElsnerWS

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

    ModbusSET

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

    ModbusTrovis5576

    [EN DE]
      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> [<IP Adresse:Port> <TCP oder RTU>]

        Das Modul verbindet sich zur Samson Trovis 5576 Heizungssteuerung mit der angegebenen Modbus Id <ID> über ein bereits fertig definiertes Modbus-Device und fragt die gewünschten Werte im Abstand von <Interval> Sekunden ab.

        Beispiel:
        define heizung ModbusTrovis5576 255 60

      Set-Kommandos
        Die folgenden Werte können gesetzt werden:
        • Regelkreis 1 (Normalerweise Wandheizkörper):
          • RK1_Betriebsart: Die Betriebsart des Regelkreis 1. Kann Standby, Mond oder Sonne sein, und entspricht der Einstellung am Regler selbst (siehe auch Reading RK1_Schalter).
          • RK1_Betriebsart_EBN: Das Ebenen-Bit zur Betriebsart. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
          • RK1_Stellsignal: Der Öffnungsgrad in Prozent des Stellglieds zur Wärmeübertragung.
          • RK1_Stellsignal_EBN: Das Ebenen-Bit zum Stellsignal. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
          • RK1_Umwaelzpumpe: Der Zustand der Umwälzpumpe, Kann An oder Aus sein.
          • RK1_Umwaelzpumpe_EBN: Das Ebenen-Bit zur Umwälzpumpe. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
        • Regelkreis 2 (Normalerweise Fußbodenheizung):
          • RK2_Betriebsart: Die Betriebsart des Regelkreis 2. Kann Standby, Mond oder Sonne sein, und entspricht der Einstellung am Regler selbst (siehe auch Reading RK2_Schalter).
          • RK2_Betriebsart_EBN: Das Ebenen-Bit zur Betriebsart. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
          • RK2_Stellsignal: Der Öffnungsgrad in Prozent des Stellglieds zur Wärmeübertragung.
          • RK2_Stellsignal_EBN: Das Ebenen-Bit zum Stellsignal. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
          • RK2_Umwaelzpumpe: Der Zustand der Umwälzpumpe, Kann An oder Aus sein.
          • RK2_Umwaelzpumpe_EBN: Das Ebenen-Bit zur Umwälzpumpe. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
        • Trinkwasserspeicher:
          • Wasser_Betriebsart: Die Betriebsart des Trinkwasserkreises. Kann Standby, Mond oder Sonne sein, und entspricht der Einstellung am Regler selbst (siehe auch Reading Wasser_Schalter).
          • Wasser_Betriebsart_EBN: Das Ebenen-Bit zur Betriebsart. Kann GLT oder Autark sein, und gibt an, ob die Heizungssteuerung Autark läuft, oder übersteuert wurde.
          • Wasser_Speicherladepumpe: Der Zustand der Speicherladepumpe. Kann An oder Aus sein.
          • Wasser_Speicherladepumpe_EBN: Das Ebenen-Bit zur Speicherladepumpe. Kann GLT oder Autark sein, und gibt an, ob die Pumpe Autark läuft, oder übersteuert wurde.
          • Wasser_Zirkulationspumpe: Der Zustand der Zirkulationspumpe. Kann An oder Aus sein.
          • Wasser_Zirkulationspumpe_EBN: Das Ebenen-Bit zur Zirkulationspumpe. Kann GLT oder Autark sein, und gibt an, ob die Pumpe Autark läuft, oder übersteuert wurde.
          • Wasser_ThermischeDesinfektion: Gibt an, ob gerade eine thermische Desinfektion läuft (=An) oder nicht (=Aus).
          • Wasser_Temp_Soll: Die Solltemperatur des Trinkwasserspeichers.
          • Wasser_Temp_Minimum: Die Minimaltemperatur des Trinkwasserspeichers.
          • Wasser_Temp_Desinfektion: Die Solltemperatur der thermischen Desinfektion.

        Hier der Vollständigkeit halber die Bedeutung der restlichen Readings (die nur gelesen werden können):
        • Grundsätzliches:
          • Modellnummer: Gibt die gemeldete Modellnummer an. Sollte "5576" sein.
          • Aussen_Temp: Gibt die gemessene Aussentemperatur in °C an.
          • Fehlerstatusregister_CL1: Gibt den Zustand des aktuellen Status Register zurück.
        • Regelkreis 1 (Normalerweise Wandheizkörper):
          • RK1_Schalter: Gibt die Schalterstellung am Regler an. Kann PA, Auto, Standby, Hand, Sonne oder Mond sein.
          • RK1_Frostschutzbetrieb: Gibt an, ob der Heizungsregelkreis 1 im Frostschutzbetrieb läuft.
          • RK1_Vorlauf_Temp: Gibt die Heizungsvorlauftemperatur in °C an.
          • RK1_Ruecklauf_Temp: Gibt die Heizungsrücklauftemperatur in °C an.
        • Regelkreis 2 (Normalerweise Fußbodenheizung):
          • RK2_Schalter: Gibt die Schalterstellung am Regler an. Kann PA, Auto, Standby, Hand, Sonne oder Mond sein.
          • RK2_Frostschutzbetrieb: Gibt an, ob der Heizungsregelkreis 2 im Frostschutzbetrieb läuft.
          • RK2_Vorlauf_Temp: Gibt die Heizungsvorlauftemperatur in °C an.
          • RK2_Ruecklauf_Temp: Gibt die Heizungsrücklauftemperatur in °C an.
        • Trinkwasserspeicher:
          • Wasser_Schalter: Gibt die Schalterstellung am Regler an. Kann PA, Auto, Standby, Hand, Sonne oder Mond sein.
          • Wasser_Frostschutzbetrieb: Gibt an, ob der Trinkwasserregelkreis im Frostschutzbetrieb läuft.
          • Wasser_Temp: Gibt die Trinkwasserspeichertemperatur in °C an.

      Get-Kommandos
        Alle Readings sind auch als get-Kommando verfügbar. Intern führt ein get einen Request an die Heizungssteuerung aus, und aktualisiert den entsprechenden Readings-Wert (und gibt ihn als Ergebnis des Aufrufs zurück). Damit kann man eine zusätzliche Aktualisierung des Wertes erzwingen.

      Attribute
        Nur zentral definierte Attribute werden untstützt. Im speziellen:
        • readingFnAttributes

    N4HBUS

    [EN DE]
    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

    [EN DE]
    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
        • 34 - TLH-Regler H,Sollwert,Temperatur
        • 95 - Ausgang, Jal, Motor AJ3
        • 210 - RF Reader
        • 240 - Messwert,Wind
        • 242 - Messwert,Luftdruck
        • 245 - Messwert,Regenmenge

      Readings
      • Die Readings werden Abhängig vom Modultyp angegeben.

      Attributes
      • Interval
        Das Interval bestimmt bei Messwerten die Zeit zwischen dem Senden der Daten auf den Bus. Ist kein Attribut definiert, so wird der Standardwert genutzt.

    NEUTRINO

    [EN DE]
      Define
        define <name> NEUTRINO <ip-address-or-hostname> [[[[<port>] [<poll-interval>]] [<http-user>]] [<http-password>]]

        Dieses Modul steuert NEUTRINO basierte Geräte wie die Coolstream über eine Netzwerkverbindung.

        Für definierte NEUTRINO Geräte wird ein interner Task angelegt, welcher periodisch die Readings aktualisiert. Der Standartpollintervall ist 45 Sekunden.

        Beispiele:
          define SATReceiver NEUTRINO 192.168.0.10

          # Alternativer Port
          define SATReceiver NEUTRINO 192.168.0.10 8080

          # Alternativer poll intervall von 20 seconds
          define SATReceiver NEUTRINO 192.168.0.10 80 20

          # Mit HTTP Benutzer Zugangsdaten
          define SATReceiver NEUTRINO 192.168.0.10 80 20 root secret


      Set
        set <name> <command> [<parameter>]

        Aktuell gibt es folgende Befehle.
        • on   -   Schaltet das Gerät aus dem Standby wieder an
        • off   -   Schaltet das Gerät in den Standby
        • toggle   -   Ein- und Ausschalten zwischen Standby
        • shutdown   -   Schaltet das Gerät aus
        • reboot   -  Neustart des Gerätes
        • channel   -  Schaltet auf den angegebenen Kanal
        • volume 0...100   -   Ändert die Lautstärke in Prozent
        • mute on,off,toggle   -   Steuert Lautstärke "stumm"
        • statusRequest   -   Fordert den aktuellen Status des Gerätes an
        • remoteControl UP,DOWN,...   -   Sendet Fernsteuerungsbefehle
        • showText text   -   Sendet eine Textnachricht
        • showtextwithbutton   -   Sendet eine Textnachricht mit OK Button



      Get
        get <name> <what>

        Aktuell gibt es folgende Befehle.

          channel
          channelurl
          currentTitle
          input
          mute
          power
          volume


      Attributes
        • disable - Schaltet das Polling aus (true/false)
        • http-noshutdown - Setzt FHEM-internal HttpUtils Verbindung offen halten (defaults=0)
        • https - Zugriff über HTTPS aktivieren (true/false)
        • timeout - Setzen des Timeout der HTTP Verbindung (default=2)



      Generelle Readings:
        • ber - Zeigt die Bit Error Rate vom aktuellen Kanal
        • bouquetnr - Zeigt die aktuelle Bouquet Nummer vom aktuellen Kanal
        • channel - Zeigt den aktuellen Servicenamen vom aktuellen Kanal
        • channel_id - Zeigt die aktuelle Kanal ID vom aktuellen Kanal
        • channel_name - Zeigt den aktuellen Kanal Namen
        • channel_url - Zeigt die aktuelle Kanal URL, welche im Vlc Player zum Streamen verwendet werden kann
        • currentTitle - Zeigt den aktuellen Titel der aktuellen Sendung an
        • epg_current_channel_id - Zeigt die Kanal ID von aktuellen EPG an
        • epg_current_date - Zeigt das Datum des aktuellen EPGs an
        • egp_current_description - Zeigt die aktuelle Beschreibung der aktuellen Sendung an
        • egp_current_duration_min - Zeigt die Dauer der aktuellen Sendung an
        • egp_current_info1 - Zeigt die Information Teil 1 der aktuellen Sendung an
        • egp_current_info2 - Zeigt die Information Teil 2 der aktuellen Sendung an
        • egp_current_number - Zeigt die EPG Nummer der aktuellen Sendung an
        • egp_current_start_sec - Zeigt die Startzeit der aktuellen Sendung an (ticks)
        • egp_current_start_t - Zeigt die Startzeit der aktuellen Sendung an
        • egp_current_stop_sec - Zeigt die Stopzeit der aktuellen Sendung an (ticks)
        • egp_current_stop_t - Zeigt die Stopzeit der aktuellen Sendung an
        • eventid - Zeigt die aktuelle Event ID von der aktuellen Sendung an
        • image_* - Zeigt Image Informationen von NEUTRINO
        • input - Zeigt den aktuellen Input an (TV/Radio)
        • mute - Zeigt aktuellen Mute Status ("on" oder "off")
        • power - Zeigt aktuellen Power Status ("on" oder "off")
        • presence - Zeigt den aktuellen presence Status an ("absent" oder "present").
        • recordmode - Zeigt an ob die Box gerade eine Aufnahme macht ("on" oder "off")
        • recordmodetitle - Zeigt den letzten Aufnahme Titel an
        • sig - Zeigt Signalstärke vom aktuellen Sender an
        • snr - Zeigt Singal Noise vom aktuellen Sender an
        • state - Zeigt den aktuellen Status an ("on", "off" oder "standby")
        • time_now - Aktuelle Uhrzeit
        • time_raw_now - Aktuelle Uhrzeit (ticks)
        • timerX - Zeigt den kompletten Timer an (Report from NEUTRINO)
        • timerXannounceTime - Zeigt die Ankündigungszeit des Timers an
        • timerXname - Zeigt den Aufnahmekanal des Timers an
        • timerXnumber - Zeigt die Timernummer an
        • timerXrepcount - Zeigt den Rep. Counter des Timers an
        • timerXrepeat - Zeigt die Wiederholungszeit an
        • timerXstartTime - Zeigt die Startzeit des Timers an
        • timerXstopTime - Zeigt die Stopzeit des Timers an
        • timerXtyp - Zeigt den Typ des Timers an
        • timer_count - Zeigt die Anzahl der aktuellen Timer an
        • timer_count - Zeitg die max. Anzahl der Timer an (wird intern verwendet)
        • volume - Zeit die aktuelle Lautstärke an (zwischen 0 und 100 %)

    NUKIBridge

    [EN DE]
      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
      • bridgeType - Hardware oder Software/App Bridge
      • configAuthSuccess - status des Kommandos zum aktivieren/deaktivieren des bridge discovery
      • currentGMTime - 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
      • state - status der bridge zu fhem, zu meist online :-)
      • uptime - Uptime der Bridge in Sekunden
      • wifiFirmwareVersion- Firmwareversion des Wifi Modules der Bridge
      • wlanConnected - Wlan verbunden?

      • Die vorangestellte Zahl ist forlaufend und gibt beginnend bei 0 die Eigenschaften Eines Smartlocks wieder.


      Set
      • getDeviceList - Veranlasst ein erneutes Einlesen aller Devices von der Bridge und falls noch nicht in FHEM vorhanden das automatische anlegen.
      • callbackRemove - Löschen der Callback Instanz auf der Bridge.
      • 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.
      • logFile - Zeigt das Logfile der Bridge an



      Attribute
      • disable - deaktiviert die Nuki Bridge
      • webhookFWinstance - zu verwendene Webinstanz für den Callbackaufruf
      • webhookHttpHostname - IP oder FQDN vom FHEM Server für den Callbackaufruf

    NUKIDevice

    [EN DE]
      NUKIDevice - Zur Steuerung von Nuki Geräte
      Das Nuki Modul verbindet FHEM über die Nuki Bridge mit einem Nuki Smartlock oder Opener. Nach der Einrichtung können diese Geräte gesteuert werden.
      Die Nuki Geräte werden automatisch nach dem erstellen der Nuki Bridge in FHEM eingerichtet.

      Define

        define <name> NUKIDevice <Nuki-Id> <IODev-Device> <Device-Type>

        Der Device-Type kann 0/4 für ein Smartlock sein oder 2 für den Opener.

        Example:

          define Frontdoor NUKIDevice 1 NBridge1 0

        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
      Smartlock
      • batteryCharging - wird die Batterie geladen true/false.
      • batteryPercent - aktueller Ladestand der Batterie.
      • batteryState - Staus der Batterie ok/low
      • deviceType - der Typenname des Nuki Gerätes smartlock/smartlock3/opener
      • firmwareVersion - Version der Geräte Firmware
      • name - Name des Nuki Gerätes
      • nukiid - die Geräte Id
      • paired - paired Informationen false/true
      • rssi - Wert für die empfangene Signalstärke
      • state - Status des Smartlock bzw . Fehlermeldung von Fehler vorhanden.
      • succes - true, false. Gibt den Status des letzen Befehls zurück.

      Opener
      • batteryCharging - wird die Batterie geladen true/false.
      • batteryPercent - aktueller Ladestand der Batterie.
      • batteryState - Staus der Batterie ok/low
      • deviceType - der Typenname des Nuki Gerätes smartlock/smartlock3/opener
      • firmwareVersion - Version der Geräte Firmware
      • name - Name des Nuki Gerätes
      • nukiid - die Geräte Id
      • paired - paired Informationen false/true
      • ringactionState - Status der Klingel. Wurde eben geklingelt (0/1)
      • ringactionTimestamp - Zeitstempel des klingelns
      • rssi - Wert f ür die empfangene Signalst ärke
      • state - Status des Opener bzw . Fehlermeldung von Fehler vorhanden.
      • succes - true, false. Gibt den Status des letzen Befehls zurück.


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

      Opener
      • statusRequest - ruft den aktuellen Status des Opener von der Bridge ab.
      • activateRto - aktiviert den ring to open Modus / ein klingeln aktiviert den Türöffner
      • deactivateRto - deaktiviert den ring to open Modus
      • electricStrikeActuation - aktiviert den Türöffner
      • activateContinuousMode - aktiviert dauerhaft öffnen der Tür durch klingeln Modus
      • deactivateContinuousMode - deaktiviert diesen Modus


      Attributes
      • disable - disables the Nuki device

    NUT

    [EN DE]
      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

    Nello

    [EN DE]
      Das Nello Modul ermöglicht die Steuerung des nello one Chips.
      Um es aufzusetzen, muss zunächst ein neuer Nutzer mit Admin-Rechten in der Nello-App angelegt werden, der nur für FHEM verwendet wird - eine Nutzung per App ist mit diesem Account dann nicht mehr möglich.
      Anschließend kann das Gerät angelegt werden. Sobald das Gerät erstellt wurde, kann der Login durchgeführt werden.
      ACHTUNG: Sollte der Login fehlschlagen, versuche das Passwort über die recoverPassword Funktion zurückzusetzen.
      Dringend empfohlen: Für verzögerungsfreie Events die detectDeviceID Funktion nach dem Login aufrufen.

      Benötigte Pakete

      sudo apt-get install libcpan-meta-yaml-perl
      sudo cpan -i Net::MQTT::Simple



      Define

        define <name> Nello

        Beispiel: define nello Nello

      set <required> [ <optional> ]

      • login <username> <password>
        Login
      • recoverPassword <username>
        setzt das Passwort zurück
      • detectDeviceID
        erkennt die Geräte-ID des Nellos durch einmaliges Öffnen der Tür und erstellt MQTT-Helper-Geräte für verzögerungsfreie Ereignisse
      • open [ <location_id> ]
        öffnet die Tür
      • update
        aktualisiert Aktionen und Ereignisse

      Get

        N/A

      Attribute

      • updateInterval
        das Intervall in Sekunden, in dem Ereignisse gepollt werden (nur relevant, wenn deviceID nicht erkannt wurde)
        default: 900 (wenn Geräte-ID erkannt wurde), ansonten 15

    NetIO230B

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

    Netzer

    [EN DE]
      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

    [EN DE]
      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

    Netzfrequenz

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

    Neuron

    [EN DE]
      Modul für die Steuerung von Geräten auf denen EVOK läuft z.B. UniPi Neuron.

      Define
        define Neuron <IP>[:<Port>]

      Set
        set <name> <value> [<args>]

        Werte für value:
        • dev_circuit
          nur für Ausgänge
          <args>: on, off für Ausgänge und Slider für ao
        • clearreadings
          lösche alle Readings
        • websocket
          <arg>: open,close
          Websocket Verbindung öffnen, schliessen
        • postjson
          <args>: dev circuit type value
          JSON Kommando an entsprechendes Subdevice schicken.
          z.B.: set neuron input 1_01 mode simple
        • Details dazu sind in der UniPi Evok Dokumentation zu finden.

      Get
        get <name> <value> [<arg>]

        Werte für value:
        • all: aktualisiert alle readings
        • config: gibt die Konfiguration des Subdevices <arg> zurück
        • updt_sets_gets: Aktualisierung der Set und Get Auswahllisten
        • value: gibt das Status des Subdevices <arg> zurück

      Attribute
      • connection
        Verbindungsart zum EVOK Device
        Standard: polling
        gültige Werte: websockets, polling

      • poll_interval
        Interval in Minuten in dem alle Werte gelesen (und auch an die log. Devices weitergeleitet) werden.
        Standard: -
        gültige Werte: Dezimalzahl

      • wsFilterwsFilter
        Filter um die liste der Geräte zu limitieren welche websocket events generieren sollen
        Standard: all
        gültige Werte: all, ai, ao, input, led, relay, wd, temp, unit_register

      • logicalDev
        Filter um Geräte zu limitieren die logische Devices anlegen und mit ihnen kommunizieren.
        Standard: ao, input, led, relay
        gültige Werte: ai, ao, input, led, relay, wd, temp, unit_register

      • readingFnAttributes

    NeuronPin

    [EN DE]
      Logisches Modul für Geräte auf denen EVOK läuft. Diese werden automatisch vom Neuron Modul angelegt.
      Define
        define NeuronPin <dev> <circuit> <Neuron IODev>

        <dev> ist der Typ des Subdevices/Pins z.B. input, ai (analoger Eingang), relay (digitaler Ausgang) etc.
        <circuit> ist die Nummer des Subdevices/Pins.
        <Neuron IODev> ist der Name des EVOK Devices zu dem dieses Subdevice gehört.

        Beispiel:
              define  NeuronPin_relay_2_01 NeuronPin relay 2_01 Neuron1
            
      Set
        set <name> <value>

        where value can be e.g.:
        • für Subdevice Typ relay
            off
            on
          set extensions werden für Ausgänge ebenso unterstützt.
        Weitere set values sind abhängig von den jeweiligen Subdevice Funktionen. Details dazu sind in der UniPi Evok Dokumentation zu finden.

      Get
        get <name> <value>

        value:
        • refresh: aktualisiert alle readings
        • config: gibt das Konfigurations JSON zurück

      Attribute
      • poll_interval
        Interval in Minuten in dem alle Werte gelesen werden.
        Standard: -
        gültige Werte: Dezimalzahl

      • restoreOnStartup
        Readings nach Neustart wiederherstellen
        Standard: last
        gültige Werte: last, on, off

      • aomax
        Maxwert für den Schieberegler beim Analogen Ausgang
        Standard: 10
        gültige Werte: Dezimalzahl

      • skipreadings
        Werte, die vom Gerät gesendet, aber nicht als Reading dargestellt werden sollen.
        Standard: relay_type,typ,dev,circuit,glob_dev_id,value,pending
        gültige Werte: kommaseparierte Liste

      • ownsets
        Werte, die vom Gerät gesendet, und über set verändert werden können. Schickt das Gerät feste Auswahllisten für einen Wert dann werden die sets automatisch angelegt.
        Standard: debounce;counter;interval;pwm_freq;pwm_duty:slider,0,0.1,100
        gültige Werte: semikolonseparierte Liste

      • autoalias
        Wenn auf 1 wird das reading alias automatisch als Attribut alias gesetzt.
        Standard: 1
        gültige Werte: 0,1

      • IODev
      • readingFnAttributes
      • do_not_notify
      • showtime
      • disable
      • disabledForIntervals

    Nextion

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

    Nmap

    [EN DE]
      Nmap ist das FHEM Modul um einen Netzwerkscan mit Nmap durchzuführen und Informationen über die erreichbaren Netzwerkgeräte darzustellen.
      Wird ein neues Gerät erkannt wird ein Event "<name> new host: <hostname> (<IPv4>)" erzeugt.
      Wird erkannt, dass ein Gerät mit bekannter MAC-Adresse eine neue IP erhalten hat wird ein Event "<name> new IP: <hostname> (<IPv4>)" erzeugt.

      Vorraussetzungen:
        Das Programm "Nmap" sowie das Perl-Modul "Nmap::Parser" werden benötigt.
        Unter Debian (basierten) System, können diese mittels "apt-get install nmap libnmap-parser-perl" installiert werden.

      Define

        define <name> Nmap <target specification>
        In der <target specification> stehen alle Zielhosts, die gescannet werden sollen.
        Der einfachste Fall ist die Beschreibung einer IP-Zieladresse oder eines Zielhostnamens zum Scannen.
        Um ein ganzes Netzwerk benachbarter Hosts zu scannen unterstützt Nmap Adressen im CIDR-Stil. Es können /numbits an eine IPv4-Adresse oder an einen Hostnamen angefügt werden, und Nmap wird alle IP-Adressen scannen, bei denen die ersten numbits mit denen der gegebenen IP oder des gegebenen Hostnamens übereinstimmen. Zum Beispiel würde 192.168.10.0/24 die 256 Hosts zwischen 192.168.10.0 und 192.168.10.255 scannen. 192.168.10.40/24 würde genau dieselben Ziele scannen. Es ist auch möglich mehrere Netzwerke zur gleichen Zeit zu scannen. Zum Beispiel würde 192.168.1.0/24 192.168.2.0/24 die 512 Hosts zwischen 192.168.1.0 und 192.168.2.255 scannen.
        Siehe Nmap Man Page (Angabe von Zielen) .

      Set

      • clear readings
        Löscht alle Readings außer "state".
      • deleteOldReadings <s>
        Löscht alle Readings die älter sind als <s> Sekunden.
      • interrupt
        Bricht einen laufenden Scan ab.
      • statusRequest
        Startet einen Netzwerkscan.

      Readings

        Allgemeine Readings:
        • NmapVersion
          Die Versionsnummer des installierten Nmap Programms.
        • hostsScanned
          Die Anzahl der gescannten Adressen.
        • hostsUp
          Die Anzahl der erreichbaren Netzwerkgeräte.
        • knownHosts
          Die Anzahl der bekannten Netzwerkgeräte.
        • scanDuration
          Die Scan-Dauer in Sekunden.
        • state
          • Initialized
            Nmap wurde definiert oder enabled.
          • running
            Ein Netzwerkscan wird ausgeführt.
          • done
            Der Netzwerkscan wurde erfolgreich abgeschlossen.
          • aborted
            Der Netzwerkscan wurde aufgrund einer Zeitüberschreitung oder durch den Benutzer abgebrochen.
          • disabled
            Nmap wurde deaktiviert.

        Hostspezifische Readings:
        • <metaReading>_alias
          Alias welcher unter dem Attribut "devAlias" für das Netzwerkgerät angegeben ist. Ist kein Alias angegeben wird der Hostname angezeigt.
        • <metaReading>_hostname
          Hostname des Netzwerkgeräts. Kann dieser nicht ermittel werden wird die IPv4-Adresse angezeigt.
        • <metaReading>_ip
          IPv4-Adresse des Netzwerkgeräts.
        • <metaReading>_lastSeen
          Der Zeitpunkt zu dem das Netzwerkgerät das letzte mal als gesehen wurde.
        • <metaReading>_macAddress
          MAC-Adresse des Netzwerkgeräts. Diese kann nur ermittelt werden, wenn der Scan mit Root-Rechten ausgeführt wird.
        • <metaReading>_macVendor
          Vermutlicher Hersteller des Netzwerkgeräts. Dieser kann nur ermittelt werden, wenn der Scan mit Root-Rechten ausgeführt wird.
        • <metaReading>_state
          Status des Netzwerkgeräts. Kann entweder "absent" oder "present" sein.
        • <metaReading>_uptime
          Zeit in Sekunden seit der das Netzwerkgerät erreichbar ist.
        • <metaReading>_uptimeText
          Zeit in "d days, hh hours, mm minutes, ss seconds" seit der das Netzwerkgerät erreichbar ist.

      Attribute

      • absenceThreshold <n>
        Die Anzahl an Netzwerkscans, welche in "absent" resultieren müssen, bevor der Status eines Netzwerkgeräts auf "absent" wechselt. Mit dieser Funktion kann man die Abwesenheit eines Gerätes verifizieren bevor der Status final auf "absent" geändert wird. Wenn dieses Attribut auf einen Wert >1 gesetzt ist, verbleibt das Reading "<metaReading>_state" auf "present", bis der Status final auf "absent" wechselt.
      • args <args>
        Argumente für den Nmap-Scan.
        Die Vorgabe ist "-sn".
      • deleteOldReadings <s>
        Nach einem Netzwerkscan werden alle hostspezifischen Readings, die älter sind als <s> Sekunden, gelöscht
      • devAlias <ID>:<ALIAS> <ID2>:<ALIAS2> ...
        Eine Leerzeichen-getrennte getrennte Liste von <ID>:<ALIAS> Paaren, die dazu genutzt werden kann um Netzwerkgeräten einen Alias zu geben.
        Die ID kann dabei MAC-Adresse, hostname oder IPv4-Adresse sein.
        Beispiele:
          MAC-Adresse: attr <name> devAlias 5C:51:88:A5:94:1F:Michaels_Handy_byMAC
          hostname: attr <name> devAlias android-87c7a6221093d830:Michaels_Handy_byHOST
          IPv4-Adresse: attr <name> devAlias 192.168.1.130:Michaels_Handy_byIP
      • disable 1
        Ein laufender Scan wird abgebrochen und es werden keine neuen Scans gestartet.
      • excludeHosts <target specification>
        In der <target specification> stehen alle Zielhosts, die beim Scan übersprungen werden sollen.
      • interval <seconds>
        Intervall in Sekunden in dem der Scan durchgeführt wird.
        Der Vorgabewert ist 900 Sekunden und der Mindestwert 30 Sekunden.
      • keepReadings 1
        Wird für ein Gertät mit bekannter MAC-Adresse eine neue IP-Adresse erkannt, werden die ungültig gewordenen Readings gelöscht es sei denn dieses Attribut ist gesetzt.
      • leadingZeros 1
        Bei den Readings-Namen werden die IPv4-Adressen mit führenden Nullen dargestellt.
      • metaReading <metaReading>
        Als <metaReading> kann "alias", "hostname", "ip" oder "macAddress" angegeben werden und ist der Bezeichner für die Readings.
        Die Vorgabe is "ip".
      • path
        Pfad unter dem das Nmap Programm zu erreichen ist.
        Die Vorgabe ist "/urs/bin/nmap".
      • readingFnAttributes
      • sudo 1
        Der Scan wird mit Root-Rechten ausgeführt.
        Voraussetzung ist, dass der Benutzer unter dem FHEM ausgeführt diese Rechte besitzt. Für den Benutzer "fhem", auf einem Debian (basierten) System, lassen sich diese in der Datei "/etc/sudoers" festlegen. Dafür muss im Abschnitt "# User privilege specification" die Zeile "fhem ALL=(ALL) NOPASSWD: /usr/bin/nmap" eingefügt werden.

    NotifyAndroidTV

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

    OBIS

    [EN DE]
      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 oder den Hostnamen/die IP-Adresse:Port an. Für den Tibber Pulse ist stattdessen die vollständige URL im LAN anzugeben, unter der die Daten geladen werden können.
        Bei seriellem Port (USB) und Linux gibt man hier entweder
        • als Gerät etwas wie /dev/ttyUSBx, an (x eine Zahl)
        • oder - um nach einem Neustart der Hardware keine geänderte Reihenfolge zu riskieren - sucht man die passende ID unter /dev/serial/by-id/, also z.B. /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A106Q3OW-if00-port0


        Optional: MeterType kann sein:
        • VSM102 -> Voltcraft VSM102
        • E110 -> Landis&&;Gyr E110
        • E350USB -> Landis&&;Gyr E350 USB-Version
        • MT382 -> ISKRA MT382
        • Standard -> Daten kommen als plainText
        • SML -> Smart Message Language

        Beispiel:
        define myPowerMeter OBIS /dev/ttyPlugwise@9600,7,E,1 VSM102
        define myPowerMeter OBIS 192.168.0.12:1234 Standard

      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, z.B.: attr myOBIS directions {">" => "pwr consuming", "<"=>"pwr feeding"}
      • extChannels
        Mögliche Werte:
        auto (default). Die Werte 0 und 255 werden wie bei extChannels off geschrieben. Die Werte 96-100 führen zu Postfix "_last1d" / "_last7d", "_last30d", "_last365d" und "_since_rst". Andere Werte werden wie bei "on" geschrieben.
        off Historische Werte werden nicht berücksichtigt und überschreiben ggf. aktuelle Werte.
        on Jedem Counter-Wert wird die extChannel-Nummer angehängt, aus total_consumption wird z.B. total_consumption.255
      • interval
        Abrufinterval der Daten. (Bringt nur im Polling-Mode was)
      • alignTime
        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"
      • resetAfterNoDataTime
        Bei TCP-Verbindungen wird nach der angegebenen Zahl Sekunden die Verbindung geschlossen und neu geöffnet, wenn keine Daten empfangen wurden
      • httpAuthorization
        Werden die SML-Daten per HTTP abgefragt (Usecase: Tibber Pulse z.B.), wird hiermit die Authentifizierung für den HTTP-Request gesetzt. Das Format muss : sein, also für den Tibber Pulse i.d.R. "admin:"
      • nohacks
        Für DZG- und HOLY-Zähler wurden jeweils Workarounds für Bugs im SML-Encoding implementiert. Für neue DZG-Zähler scheint der Bug behoben zu sein. Mit "nohacks" auf "1" werden die Workarounds abgeschaltet.

    ONKYO_AVR

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

    ONKYO_AVR_ZONE

    [EN DE]
      Eine deutsche Version der Dokumentation ist derzeit nicht vorhanden. Die englische Version ist hier zu finden:
      ONKYO_AVR_ZONE

    OPENWEATHER

    [EN DE]
      Das Modul extrahiert Wetterdaten über die "openweather"-Schnittstelle (API) von www.wetter.com.
      Zuvor ist eine Registrierung auf der Webseite notwendig.
      Das Modul nutzt die Perl-Module HTTP::Request, LWP::UserAgent, HTML::Parse und Digest::MD5.
      Für detailierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.

      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 Aktualisierung ist angehalten, wenn der Wert auf 1 gesetzt wird.

      • INTERVAL <Abfrageintervall>
        Abfrageintervall in Sekunden (Standard und kleinster Wert ist 3600 = 1 Stunde). 0 stoppt die automatische Aktualisierung

      • 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

    [EN DE]
      Das OREGON Modul interpretiert Oregon-Sensornachrichten, die von einem RFXCOM- oder SIGNALduino- oder CUx-Empfänger empfangen werden. Sie müssen zuerst einen Empfänger (RFXCOM, SIGNALduino oder CUx) definieren. Schau dazu hier RFXCOM oder hier SIGNALduino.

      Define
        define <name> OREGON <deviceid>

        <deviceid> ist die Gerätekennung des Oregon-Sensors. Sie besteht aus dem Namen des Sensors und einer 1-Byte-Hex-Zeichenfolge (00-ff), die den Sensor identifiziert. Die define-Anweisung mit der DeviceID wird automatisch von autocreate generiert. Die folgenden Sensornamen werden verwendet: BTHR918, BTHR918N, PCR800 RGR918, RTGR328N, THN132N, THGR228N, THGR328N, THGR918, THR128, THWR288A, THGR810, UV138, UVN800, WGR918, WGR800, WTGR800_A, WTGR800_T.
        Die Ein-Byte-Hex-Zeichenfolge wird vom Oregon-Sensor generiert, wenn er eingeschaltet wird. Der Wert scheint zufällig zu sein. Dies hat den Vorteil, dass Sie mehr als einen Oregon-Sensor des gleichen Typs verwenden können, auch wenn kein Schalter zum Einstellen einer Sensor-ID vorhanden ist. Zum Beispiel verwendet der Autor drei BTHR918 Sensoren gleichzeitig. Alle haben unterschiedliche DeviceIDs. Der Nachteil ist, dass sich die Geräte-ID nach dem Batteriewechsel ändert.

        Example:
        define Kaminzimmer OREGON BTHR918N_ab

      Set
        N/A

      Get
        N/A

      Attributes
      • do_not_notify
      • event-min-interval
      • event-on-change-reading
      • event-on-update-reading
      • ignore
      • IODev
      • readingFnAttributes
      • showtime

    OW2S0SMSGUARD.

    [EN DE]
    1-wire USB Master von sms-guard.org FHEM Forum : 1Wire
    Define
      define <name> OW2S0SMSGUARD <IO Device> [interval]
      Beispiel :
      define myOW2S0 OW2S0SMSGUARD /dev/ttyUSB0@38400
      define myOW2S0 OW2S0SMSGUARD /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A702PE1J-if00-port0@38400
      define myOW2S0 OW2S0SMSGUARD 192.168.0.100:2000 (socat, ser2net)


    Set
    • reset IO Device ( nur Master Device )

    • S0-resets ( nur Master Device )
      setzt die beiden internen S0 Zähler ( A & B) auf 0 zurück

    • deleteDS2401 ( nur Master Device )
      löscht das das Reading und falls definiert auch das dazugehörige Sub-Device (siehe Attr useSubDevice)

    Get
    • OWdeviceList
      Liste der aktuell gefunden OW Geräte ( nur Master Device )

    Attribute
    • A_calc_mode ( master only ) after, before, never, default before

    • B_calc_mode ( master only ) after, before, never, default before

    • A_calc_current ( master only ) default 0, setzt A_calc_mode after oder before vorraus

    • B_calc_current ( master only ) default 0, setzt B_calc_mode after oder before vorraus

    • A_offset ( master only )

    • B_offset ( master only )

    • DS2401_Timeout in Sekunden ( nur Master Device ) , default 1.5 x interval
      Werte kleiner als Interval sind nicht zulässig.
      Wartezeit in Sekunden bis ein fehlender DS2401 seinen Status von timeout auf absent wechselt.

    • mapOWIDs
      Kommata getrennte Liste von ID=Name Paaren
      Beispiel : 10D64CBF02080077=Badezimmer, 01E5D9370B00005D=Kellerfenster
      Statt der OW ID wird Name als Reading verwendet.( nur Master Device )

    • model
      nur für die FHEM Modul Statistik unter https://fhem.de/stats/statistics.html

    • useSubDevices ( nur Master Device ) , default 0
      Legt für jedes gefundene Device am 1-W Bus ein eigenes extra Device an

    • delay ( nur Master Device ) , default 0.5 Sekukunden
      Wartezeit in Sekunden zwischen dem Auslesen der Temperaturwerte wenn mehr als ein DS18XX am OW Bus angeschlosen ist

    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

    [EN DE]

      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.

        Geräte hinter 1-wire-Hubs (DS2409, Adressfamilie 1F) müssen über den vollen Pfad adressiert werden, z.B. 1F.0AC004000000/main/26.A157B6000000 (kein führender Schrägstrich). Sie werden nicht automatisch erkannt.

        Wird zusätzlich <interval> angegeben, ruft OWServer alle <interval> Sekunden einen Datensatz des Gerätes ab.

        Jedes OWDevice ist ein eigenständiges Gerät. Seine Eigenschaften werden erstmals zum Zeitpunkt der Definition abgefragt. Die durch "get" oder "set" erzeugten, sowie durch den zyklischen Abruf gelieferten readings, können mit dem Kommando list <name> angezeigt werden.

        Folgende 1-Wire- und iButton- Komponenten werden aktuell unterstützt:
        • DS2401 - Im Chip integrierte Seriennummer
        • DS1990A - iButton mit fester Seriennummer
        • DS2405 - Adressierbarer Schalter
        • DS18S20 - Hochpräzisions-Digital-Thermosensor
        • DS1920 - iButton-Thermosensor
        • DS2406, DS2407 - Dualer adressierbarer Schalter mit 1 kbit Speicher
        • DS2436 - Batterie-ID/Monitor- Schaltkreis
        • DS2423 - Dual-Zählerbaustein mit Speicherfunktion
        • DS2450 - Vierfach-A/D Umsetzer
        • DS1822 - Econo-Thermosensor
        • DS2433 - 4kbit 1-Wire RAM
        • DS2415 - Zeitgeber- Schaltkreis
        • DS1904 - iButton-Echtzeituhr
        • DS2438 - Smart-Batterie-Monitor
        • DS2417 - Zeitgeber-Schaltkreis mit Interrupt
        • DS18B20 - Thermosensor mit programmierbarer Auflösung
        • DS2408 - 8-kanaliger adressierbarer Schalter
        • DS2413 - 2-kanaliger adressierbarer Schalter
        • DS1825 - Thermosensor mit programmierbarer Auflösung und ID
        • EDS0066 - Vielfachsensor für Temperatur und Luftdruck
        • LCD - LCD-Ansteuerung von Louis Swart

        Das Hinzufügen weiterer Geräte ist im Modulcode (subroutine OWDevice_GetDetails) sehr einfach möglich.

        Achtung: Dieses Modul ist weder verwandt noch verwendbar mit den 1-Wire Modulen, deren Namen nur aus Großbuchstaben bestehen!

        Bitte beachten: Um einer Verwechselung entgegenzuwirken, stößt das reading "state" der Geräte keine Events an.

        Beispiele zur Einrichtung:
          define myOWServer OWServer localhost:4304

          get myOWServer devices
          10.487653020800 DS18S20

          define myT1 10.487653020800

          list myT1 10.487653020800
          Internals:
          ...
          Readings:
          2012-12-22 20:30:07 temperature 23.1875
          Fhem:
          ...
          getters:
          address
          family
          id
          power
          type
          temperature
          templow
          temphigh
          polls:
          temperature
          setters:
          alias
          templow
          temphigh
          ...

      Set-Befehle
      • set <name> interval <value>
        value überschreibt das Abrufintervall der Datensätze. Der Wert ist in Sekunden anzugeben.

      • set <name> <reading> <value>
        Setzt das <reading> auf <value> für das 1-Wire-Gerät <name>. Die verwendbaren Werte werden durch die jeweiligen 1-wire-Geräte bestimmt.

        Beispiel:
          set myT1 templow 5

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

        Beispiel:
          get myT1 temperature

      Attribute
      • IODev: Bestimmt die OWServer-Instanz, welche für das Senden und Abrufen der Daten eines OWDevice-Gerätes genutzt werden soll. Hinweis: Während des Starts ordnet FHEM die neuen OWDevice-Geräte der jeweils zuletzt definierten OWServer-Instanz zu. Deshalb verfährt man idealerweise so, dass man zuerst eine OWServer-Instanz und anschließend die zugehörigen OWDevice-Geräte definiert. Danach definiert man die nächste OWServer-Instanz, gefolgt von den zugehörigen OWDevice-Geräten, usw.
      • trimvalues: Entfernt voran- und nachgestellte Leerzeichen aus den readings. Standartwert ist 1 (ein).
      • cstrings: Interpretiert die readings als C-String, d.h. hört mit dem ersten 0-Byte zu lesen auf. Standardwert ist 0 (off).
      • polls: Eine per Komma getrennte Liste der abzurufenden readings. Mit diesem Attribut unterdrückt man alle standartmäßig abgerufenen readings und ersetzt sie durch die eigene Zusammenstellung.
      • disable: auf 1 setzen, um Polling abzustellen.
      • 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


    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

    [EN DE]

      Definition
        define <name> OWServer <protocol> [<version>]

        Definiert eine logische OWServer-Instanz, die sich mit einem owserver verbindet. owserver ist die Serverkomponente des 1-Wire Dateisystems. Sie ermöglicht den Zugriff auf alle 1-Wire-Busteilnehmer eines Systems. <protocol> hat das Format <hostname>:<port>. Nähere Informationen dazu gibt es in der owserver Dokumentation.

        Die OWServer-Instanz verwendet OWNet.pm von Sourceforge, um sich mit dem owserver zu verbinden. Gegenwärtig werden OWNet-Module für die Versionen 2.8p17 and 3.1p5 mit FHEM verteilt. Man kann manuell weitere Versionen hinzufügen, indem man OWNet.pm aus einer der verfügbaren Versionen extrahiert und als FHEM/lib/OWNet-<version>.pm in der FHEM-Verzeichnisstruktur speichert.

        Die erste Verbindung mit dem owserver wird mit der Version 3.1p5 aufgebaut, es sei denn, dass man ausdrücklich eine andere Version mit dem optionalen Parameter <version> vorschlägt. Man sollte eine OWNet-Modulversion vorschlagen, die der tatsächlichen Version von owserver entspricht, falls FHEM nach dem Verbindungsaufbau zum owserver hängt.

        Die OWServer-Instanz erkennt die Version von owserver automatisch und wählt das passende OWNet-Modul aus der Liste der verfügbaren OWNet-Module aus. Wenn kein passendes OWNet-Modul gefunden wird, wird die ursprünglich vorgeschlagene Version verwendet. Die alptraumhafte Situation mit zwei OWServer-Instanzen, die sich mit owserver-Instanzen in unterschiedlichen Versionen verbinden, wird nicht korrekt gehandhabt. Die Versionen von Server und Modul werden zum Nachschauen in den Internals der OWServer-Instanz gespeichert.

        Die ow*-Pakete in der Version 3.1p5 bei Debian Stretch und die ow*-Pakete in der Version 2.8p17 bei Debian Jessie sind gut. Die ow*-Pakete in der Version 2.9 bei Debian Jessie in Kombination mit den OWNet-Modulen bei FHEM können Auffälligkeiten zeigen (Rückmeldung willkommen). Für Debian Jessie kann man owfs_2.8p17-1_all.zip auspacken und owserver, Abhängigkeiten und was man sonst so braucht mittels dpkg -i <package>.deb installieren.

        Bitte Auffälligkeiten und Erfolgsmeldungen zu Versionen im 1Wire-Board des FHEM-Forums berichten.

        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
        • /uncached/alarm
      • Nähere Informationen zu diesen Einstellungen gibt es im owserver- Manual.

      Attribute

      • nonblocking
        Holt alle readings (OWServer / OWDevice) über einen Tochterprozess. Dieses Verfahren stellt sicher, dass FHEM während der Kommunikation mit owserver nicht angehalten wird.
        Beispiel:
        attr <name> nonblocking 1
      • eventMap
      • readingFnAttributes

      Hinweis: Falls in FHEM trotzdem ungewöhnliche Stillstände auftreten, sollte das Attribut nonblocking wieder deaktiviert werden.

    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

    [EN DE]
      Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: OWX

    OWX_ASYNC

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

    OWX_CCC

    [EN DE]
      Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: OWX

    OWX_FRM

    [EN DE]
      Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: OWX

    OWX_SER

    [EN DE]
      Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: OWX

    OWX_TCP

    [EN DE]
      Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: OWX

    OctoPrint

    [EN DE]

    OilFox

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

    PCA301

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

    PET

    [EN DE]
      Define
        define <rp_FirstName> PET [<Device Name(n) der Bewohnergruppe(n)>]

        Stellt ein spezielles virtuelles Device bereit, welches ein Haustier 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 rp_Pet PET

          # Typisches Gruppenmitglied
          define rp_Pet PET rgr_Residents # um Mitglied der Gruppe rgr_Residents zu sein

          # Mitglied in mehreren Gruppen
          define rp_Pet PET rgr_Residents,rgr_Pets # um Mitglied der Gruppen rgr_Residents und rgr_Pets zu sein

        Hinweis: Ein Haustier ist generell "wert" als FHEM Device repräsentiert zu werden, wenn es sich um ein Tier handelt, welches normalerweise regelmäßig das Haus verlässt und wieder betritt. Es sollte ein Tier sein, bei welchem sich die Hausautomation abhängig des Präsenz- und Zuhause Status anders verhalten soll. Für gewöhnlich sind das keine Fische oder Kleintiere in Käfigen, sondern etwas wie insbesondere ein Hund. Bei Katzen kann es sich unter Umständen auch nicht lohnen diese zu tracken, je nach Charakter und dem täglichen Familienleben.


      Set
        set <rp_FirstName> <command> [<parameter>]

        Momentan sind die folgenden Kommandos definiert.
        • location   -   setzt das Reading 'location'; siehe auch Attribut rp_locations, um die in FHEMWEB angezeigte Liste anzupassen
        • mood   -   setzt das Reading 'mood'; siehe auch Attribut rp_moods, um die in FHEMWEB angezeigte Liste anzupassen
        • state   home,gotosleep,asleep,awoken,absent,gone   wechselt den Status; siehe auch Attribut rp_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 rp_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 rp_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 rp_autoGoneAfter angepasst werden.


        Anwesenheit mit anderen PET, 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 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.


        Status zu Hause mit anderen PET, GUEST oder ROOMMATE Devices synchronisieren

          Um jeden Statuswechsel zu synchronisieren, welcher _nicht_ dem erreichen oder verlassen des Hauses entspricht, kann das Attribut rr_passStateTo gesetzt werden.

          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 rp_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 rp_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 rp_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_rp_Manfred.location notify geofancy:currLoc_Manfred.* set rp_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
        • rp_autoGoneAfter - Anzahl der Stunden, nach denen sich der Status automatisch auf 'gone' ändert, wenn der aktuellen Status 'absent' ist; Standard ist 36 Stunden
        • rp_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)
        • rp_lang - überschreibt globale Spracheinstellung; hilft beim setzen von Device Attributen, um FHEMWEB Anzeigetext zu übersetzen
        • rp_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'
        • rp_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'
        • rp_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"
        • rp_locations - Liste der in FHEMWEB anzuzeigenden Lokationsauswahlliste in FHEMWEB; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
        • rp_moodDefault - die Stimmung, die nach Ankunft zu Hause oder nach dem Statuswechsel von 'awoken' auf 'home' gesetzt werden soll
        • rp_moodSleepy - die Stimmung, die nach Statuswechsel zu 'gotosleep' oder 'awoken' gesetzt werden soll
        • rp_moods - Liste von Stimmungen, wie sie in FHEMWEB angezeigt werden sollen; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
        • rp_noDuration - deaktiviert die kontinuierliche, nicht Event-basierte Berechnung der Zeitspannen (siehe Readings durTimer*)
        • rp_passStateTo - synchronisiere den Status zu Hause mit anderen PET, GUEST oder ROOMMATE Devices; mehrere Devices durch Leerzeichen trennen
        • rp_passPresenceTo - synchronisiere die Anwesenheit mit anderen PET, GUEST oder ROOMMATE Devices; mehrere Devices durch Leerzeichen trennen
        • rp_presenceDevices - übernehmen des presence Status von einem anderen FHEM Device. Bei mehreren Devices diese mit Komma trennen, um ein Update des PET Devices auszulösen, sobald ALLE Devices entweder absent oder present sind. Optional kann auch durch : abgetrennt ein Reading Name angegeben werden, ansonsten werden die Readings presence und state berücksichtigt.
        • rp_realname - wo immer PET den richtigen Namen verwenden möchte nutzt es den Wert des Attributs alias oder group; Standard ist group
        • rp_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
        • rp_states - Liste aller in FHEMWEB angezeigter Status; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Status führen zu Fehlern
        • rp_wakeupDevice - Referenz zu versklavten DUMMY Geräten, welche als Wecker benutzt werden (Teil von RESIDENTS Toolkit's wakeuptimer)
        • subType - Gibt einen bestimmten Typ eines Haustiers für das Device an. Dies wird bei der Berechnung des Home Alone Status berücksichtigt. Standard ist "generic"



      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

    PHC

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

    PHILIPS_AUDIO

    [EN DE]
      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 im lokalen Netzwerk steuern.
        Geräte, die über die myRemote App oder einen internen HTTP Server am Port 8889 sollten theoretisch ebenfalls bedient werden können.
        (http://[ip Nummer des Gerätes]:8889/index)

        (Getestet mit: AW9000, NP3500, NP3700 und NP3900)

        Beispiel:

          define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15

          # 60 Sekunden Intervall
          define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15 60

          # 60 Sekunden Intervall für "off" und 10 Sekunden für "on"
          define PHAUDIO_player PHILIPS_AUDIO NP3900 192.168.0.15 60 10


          Bemerkung: Aufgrund der relativ langsamen Verarbeitung von Befehlen durch den Player selbst wurde das minimale Intervall auf 5 Sekunden limitiert. Dadurch sollten potentielle Gerätefreezes reduziert werden.

      Set
        set <name> <command> [<parameter>]

        Bemerkung: Befehle und Parameter sind case-sensitive

        • favoriteAdd – Fügt den aktuellen Audiostream zu Favoriten hinzu
        • favoriteRemove – Löscht den aktuellen Audiostream aus den Favoriten
        • getFavorites – Liest aus die gespeicherten Favoriten aus dem Gerät (kann einige Zeit dauern...)
        • getMediaRendererDesc – Liest aus Gerätspezifische Informationen aus (siehe auch deviceInfo reading)
        • getPresets – Liest aus die gespeicherten Presets aus dem Gerät (kann einige Zeit dauern...)
        • input – Schaltet auf den folgenden Eingang
          • analogAux – AUX input (nur AW9000)
          • digital1Coaxial – digital coaxial input (nur AW9000)
          • digital2Optical – digital optical input (nur AW9000)
          • internetRadio – Internet Radio
          • mediaLibrary – Media Library (UPnP/DLNA server) (nicht verfügbar beim AW9000)
          • mp3Link – Analoger MP3 Link (nicht verfügbar beim AW9000)
          • onlineServices – Online Services
        • mute [ on | off ] – Stummschaltung (an/aus)
        • player – Player-Befehle
          • next – Nächstee Audiostream
          • prev – Letzter Audiostream
          • play-pause – Play/pause des aktuellen Audiostreams
          • stop – Stoppt das Abspielen des aktuellen Audiostreams
        • repeat [ single | all | off] – Stellt den repeat mode ein
        • selectFavorite [ name ] – Wählt einen Favoriten. Leer falls keine Favoriten vorhanden (s. getFavorites)
        • selectFavoriteByNumber [ number ] – Wählt einen Favoriten anhand seiner Speichernummer. Leer falls keine Favoriten vorhanden (s. getFavorites)
        • selectPreset [ name ] – Wählt einen Preset. Leer falls keine Presets vorhanden (s. getPresets)
        • selectPresetByNumber [ number ] – Wählt einen Preset anhand seiner Speichernummer. Leer falls keine Presets vorhanden (see also getPresets)
        • selectStream [ name ] – Context-sensitive. Wählt einen Audiostream. Hängt vom aktuellen Inhalt der Playerlist ab. Ein 'c'-Präfix repräsentiert einen 'Container' (Directory). ein 'i'-Präfix repräsentiert ein 'Item' (audio stream).
        • shuffle [ on | off ] – Wählt den gewünschten Shuffle Modus
        • standbyButton – Emuliert den standby-Knopf. Toggelt zwischen standby und power on
        • volume – Setzt die relative Lautstärke 0...100%
        • volumeDown – Setzt die Lautstärke um ein Dekrement herunter
        • volumeStraight – Setzt die devicespezifische Lautstärke 0...64
        • volumeUp – Setzt die Lautstärke um ein Inkrement herauf

      Get
        get <name> <reading> <reading name>

        • deviceInfo – Liefert devicespezifische Information
        • reading
          • input – Liefert den aktuellen Eingang oder '-' falls kein Audiostream aktiv
          • listItem_xxx – Liefert Einträge der Playerliste (limitiert auf 999 Einträge)
          • networkError – Liefert einen potentiellen Netzwerkfehler
          • networkRequest – Liefert die aktuelle Netzwerkaktivität (idle/busy)
          • power – Liefert den Power-Status (on/off)
          • playerAlbum – Liefert den Albumnamen des aktiven Audiostreams
          • playerAlbumArt – Liefert die Albumart des aktiven Audiostreams
          • playerListStatus – Liefert den aktuellen Zusatand der Playlist (busy/ready)
          • playerListTotalCount – Liefert die Anzahl der Playlisteinträge
          • playerPlayTime – Liefert die aktuell Audiostreamspieldauer
          • playerPlaying – Zeigt an, ob Audiostream abgespielt wird (yes/no)
          • playerRadioStation – Liefert den Stationsnamen des Radiosenders
          • playerRadioStationInfo – Liefert zusätzliche Informationen des Radiosenders
          • playerRepeat – Zeigt den Reapeat Mode an (off/single/all)
          • playerShuffle – Zeigt den aktuellen Shuffle mode an (on/off)
          • playerState – Zeigt den Playerzustand an (home/browsing/playing)
          • playerStreamFavorite – Zeigt an, ob aktueller Audiostream ein Favorit ist (yes/no)
          • playerStreamRating – Zeigt das rating des Audiostreams
          • playerTitle – Zeigt den Titel des Audiostreams an
          • playerTotalTime – Zeigt die Audiostreamdauer an
          • presence – Liefert den presence status (present/absent)
          • state – Lifert den aktuellen Gerätestatus (on/off)
          • totalFavorites – Liefert die Anzahl gepseicherter Favoriten (s. getFavorites)
          • totalPresets – Liefert die Anzahl gepseicherter Presets (see getPresets)
          • volume – Liefert die relative Lutstärke (0...100%)
          • volumeStraight – Liefert die devicespezifische Lautstärke (0...64)

      Attribute

        • autoGetFavorites – Automatisches Auslesen der Favoriten beim Modulstart falls keine vorhanden (default off)
        • autoGetPresets – Automatisches Auslesen der Presets beim Modulstart falls keine vorhanden (default off)
        • do_not_notify
        • httpBufferTimeout – Optionalles Attribut für den internen http buffer timeount (default 10 Sekunden)
        • maxListItems – Definiert die max. Anzahl der anzuzeigenden Playerlisteinträge (default 100)
        • playerBrowsingTimeout – Definiert den Inaktivitäts-Timeout beim Browsen der Playerlist. Nach diesem Timeout fällt das Modul in den "home"-State zurück. Die Playerreadings werden wieder aktualisiert (default 180 Sekunden)
        • readingFnAttributes
        • requestTimeout – Optionalles Attribut für http responses (default 4 Sekunden)

    PHTV

    [EN DE]
      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

    [EN DE]
      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
      • inputSkip [0|1] - Aktiviert/deaktiviert den Input (0: aktiviert , 1: deaktiviert )
      • 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
      • renameInputAlias - Gibt dem Eingang am Pioneer AV Receiver (und in diesem Modul) den neuen Namen
      • 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

      • connectionCheck   1..120,off   Pingt den Pioneer AV Receiver alle X Sekunden um den Datenverbindungsstatus zu überprüfen. Standard: 60 Sekunden.
      • timeout   1,2,3,4,5,7,10,15  Zeit in Sekunden, innerhalb der der Pioneer AV Receiver auf einen Ping antwortet. Standard: 3 Sekunden.
      • statusUpdateStart <enable|disable> - Ein-/Ausschalten des Status Updates (lesen aller Parameter vom Pioneer AV Receiver, dauert bis zu einer Minute) beim Start des Moduls. Mit "disable" lässt sich das Status Update abschalten, FHEM startet schneller, das Pioneer Modul zeigt eventuell nicht korrekte readings.
      • statusUpdateReconnect <enable|disable> - Ein-/Ausschalten des Status Updates (lesen aller Parameter vom Pioneer AV Receiver, dauert bis zu einer Minute) nach dem Wiederherstellen der Datenverbindung zum Pioneer AV Receiver. Mit "disable" lässt sich das Status Update abschalten, FHEM bleibt reaktiver beim reconnect, das Pioneer Modul zeigt eventuell nicht korrekte readings.
      • logTraffic <loglevel> - Ermöglicht das Protokollieren ("Loggen") der Datenkommunikation vom/zum Pioneer AV Receiver. Steuerzeichen werden angezeigt z.B. ein doppelter Rückwärts-Schrägstrich wird als einfacher Rückwärts-Schrägstrich angezeigt, \n wird für das Steuerzeichen "line feed" angezeigt, etc.
      • verbose - Beeinflusst die Menge an Informationen, die dieses Modul protokolliert. 0: möglichst wenig in die Fhem Logdatei schreiben, 5: möglichst viel in die Fhem Logdatei schreiben
      • volumeLimit <0 ... 100> - beschränkt die maximale Lautstärke (in %). Selbst wenn manuell am Pioneer AV Receiver eine höher Lautstärke eingestellt wird, regelt Fhem die Lautstärke auf volumeLimit zurück.
      • volumeLimitStraight < -80 ... 12> - beschränkt die maximale Lautstärke (Werte wie am Display des Pioneer AV Receiver angezeigt). Selbst wenn manuell am Pioneer AV Receiver eine höher Lautstärke eingestellt wird, regelt Fhem die Lautstärke auf volumeLimit zurück.


      Generated Readings/Events:

      • audioAutoPhaseControlMS - aktuell konfigurierte Auto Phase Control in ms
      • audioAutoPhaseControlRevPhase - aktuell konfigurierte Auto Phase Control reverse Phase -> 1 bedeutet: reverse phase
      • audioInputFormat - Zeigt ob im Audio Eingangssignal der Kanal XXX vorhanden ist (1 bedeutet: ist vorhanden)
      • audioInputFrequency - Frequenz des Eingangssignals
      • audioInputSignal - Art des Inputsignals (z.B. ANALOG, PCM, DTS,...)
      • audioOutputFormat - Zeigt ob im Audio Ausgangssignal der Kanal XXX vorhanden ist (1 bedeutet: ist vorhanden)
      • audioOutputFrequency - Frequenz des Ausgangssignals
      • bass - aktuell konfigurierte Bass-Einstellung
      • channel - Tuner Preset (1...9)
      • channelStraight - Tuner Preset wie am Display des Pioneer AV Receiver angezeigt, z.B. A2
      • display - Text, der aktuell im Display des Pioneer AV Receivers angezeigt wird
      • displayPrevious - Zuletzt im Display angezeigter Text
      • eq - Status des Equalizers des Pioneer AV Receivers (on|off)
      • hdmiOut - welche HDMI-Ausgänge sind aktiviert?
      • input - welcher Eingang ist ausgewählt
      • inputsList - Mit ":" getrennte Liste der aktivierten/verfügbaren Eingänge
      • listeningMode - Welcher Hörmodus (Listening Mode) ist eingestellt
      • listeningModePlaying - Welcher Hörmodus (Listening Mode) wird aktuell verwendet
      • mcaccMemory - MCACC Voreinstellung
      • mute - Stummschaltung
      • power - Main Zone eingeschaltet oder in Standby?
      • pqlsWorking - aktuelle PQLS Einstellung
      • presence - Kann der Pioneer AV Receiver via Ethernet erreicht werden?
      • screenHirarchy - Hierarchie des aktuell angezeigten On Screen Displays (OSD)
      • screenLine01...08 - Inhalt der Zeile 01...08 des OSD
      • screenLineHasFocus - Welche Zeile des OSD hat den Fokus?
      • screenLineNumberFirst - Lange Listen werden im OSD zu einzelnen Seiten mit je 8 Zeilen angezeigt. Die oberste Zeile im OSD repräsentiert welche Zeile in der gesamten Liste?
      • screenLineNumberLast - Lange Listen werden im OSD zu einzelnen Seiten mit je 8 Zeilen angezeigt. Die unterste Zeile im OSD repräsentiert welche Zeile in der gesamten Liste?
      • screenLineNumbersTotal - Wie viele Zeilen hat die im OSD anzuzeigende Liste insgesamt?
      • screenLineNumbers - Wie viele Zeilen hat das OSD
      • screenLineType01...08 - Welchen Typs ist die Zeile 01...08? Z.B. "directory", "Now playing", "current Artist",...
      • screenName - Name des OSD
      • screenReturnKey - Steht die "Return-Taste" in diesem OSD zur Verfügung?
      • screenTopMenuKey - Steht die "Menu-Taste" in diesem OSD zur Verfügung?
      • screenToolsKey - Steht die "Tools-Taste" (Menu, Edit, iPod control) in diesem OSD zur Verfügung?
      • screenType - Typ des OSD, z.B. "message", "List", "playing(play)",...
      • speakerSystem - Zeigt, wie die hinteren Surround-Lautsprecheranschlüsse und die B-Lautsprecheranschlüsse verwendet werden
      • speakers - Welche Lautsprecheranschlüsse sind aktiviert?
      • standingWave - Einstellung der Steuerung stark resonanter tiefer Frequenzen im Hörraum
      • state - Wird beim Verbindungsaufbau von Fhem mit dem Pioneer AV Receiver gesetzt. Mögliche Werte sind disconnected, innitialized, off, on, opened
      • stateAV - Status aus der Sicht des USers: Kombiniert die readings presence, power, mute und playStatus zu einem Status (on|off|absent|stopped|playing|paused|fast-forward|fast-rewind).
      • tone - Ist die Klangsteuerung eingeschalten?
      • treble - Einstellung des Höhenreglers
      • tunerFrequency - Tunerfrequenz
      • volume - Eingestellte Lautstärke (0%-100%)
      • volumeStraight - Eingestellte Lautstärke, so wie sie auch am Display des Pioneer AV Receivers angezeigt wird
      • alternateVolumeControl <enable|disable> - Aktiviert/deaktiviert alternative Lautst?eeinstellung für Gerate, die keine direktes Setzen der Lautst?e zulassen (z.B. VSX-52x/VSX-82x)


    PIONEERAVRZONE

    [EN DE]

      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

    [EN DE]
      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/Raspbian (architekturunabhängig): presenced-1.5.deb


        lepresenced

          lepresenced ist ein Perl Netzwerkdienst, der analog zu presenced eine Bluetooth-Anwesenheitserkennung von ein oder mehreren Geräten über Netzwerk bereitstellt. Im Gegensatz zu presenced unterstützt lepresenced Bluetooth 4.0 (Low Energy) Geräte wie z. B. Gigaset G-Tags, FitBit Charges. lepresenced lauscht standardmäßig auf TCP Port 5333 und wartet auf eingehende Verbindungen des PRESENCE-Moduls bzw. von collectord.
          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.8.1.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)
      • overrideInterval - Übersteuert das Prüfinterval auf die übergebene Dauer in Sekunden (Nicht im Modus "event" und "lan-bluetooth" anwendbar)
      • clearOverride - Entfernt eine zuvor gesetzte Übersteuerung des Prüfintervals (Nur anwendbar, wenn zuvor eine Übersteuerung mit dem Set-Befehl overrideInterval stattgefunden hat)

      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)

      • retryInterval
      • (Nicht im Modus "event" oder "lan-bluetooth" anwendbar)
        Das Prüfinterval, welches im Falle eines vorzeitig abgebrochenen Checks genutzt wird, um eine Wiederholung auszuführen. Dazu wird im Falle eines abgebrochenen Checks der nächste Check nach der übergebenen Dauer in Sekunden ausgeführt. Diese sollte geringer sein als das reguläre Prüfinterval.

        Standardwert ist 10 Sekunden

      • retryCount
      • (Nicht im Modus "event" oder "lan-bluetooth" anwendbar)
        Die maximale Anzahl an Wiederholungen, sollte ein Check vorzeitig abgebrochen werden. Sobald ein Check vorzeitigabbricht, werden maximal die übergebene Anzahl an Wiederholung innerhalb des in retryInterval konfigurierten Interval ausgeführt um in kürzerer Zeit ein valides Ergebnis zu erhalten.

        Standardwert ist 3 Wiederholungen

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

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

      • fritzboxCheckSpeed
      • (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 Readings/Events:

        Generelle ReadingsEvents:

        • state: (absent|maybe absent|present|maybe present|disabled|error|timeout) - Der Anwesenheitsstatus eine Gerätes (absent = abwesend; present = anwesend) oder "disabled" wenn das disable-Attribut aktiviert ist
        • presence: (absent|maybe absent|present|maybe present) - Der Anwesenheitsstatus eine Gerätes (absent = abwesend; present = anwesend). Der Wert "maybe absent" (vielleicht abwesend) tritt nur auf, sofern das Attribut absenceThreshold aktiviert ist. Der Wert "maybe present" (vielleicht anwesend) tritt nur auf, sofern das Attribut presenceThreshold aktiviert ist.
        • powerCmd: (executed|failed) - Ausführung des power-Befehls war erfolgreich.


        Bluetooth-spezifische Readings/Events:

        • device_name: $name - Der Name des Bluetooth-Gerätes, wenn es anwesend (Status: present) ist


        FRITZ!Box-spezifische Readings/Events:

        • speed: $speed - Die Netzwerkdeschwindigkeit des Gerätes, sofern das Attribut fritzboxCheckSpeed aktiviert ist.


        presenced-/collectord-spezifische Readings/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)

    PRESENCE2

    [EN DE]
      Das PRESENCE2-Modul bietet mehrere Möglichkeiten, die PRESENCE2-Geräte wie Mobiltelefone oder Tablets zu überprüfen.
      Darüber hinaus können FHEM- oder Systemebene-Aktionen regelmäßig ausgeführt und analysiert werden
      Weitere FHEM-Einheiten können für die regelmäßige Tätigkeit betreut werden.

      Dieses Modul bietet verschiedene Betriebsmodi, um Euren Anforderungen gerecht zu werden. Dies sind:

      • lan-ping – Geräte-PRÄSENCE2-Prüfung mithilfe von Netzwerk-Ping.
      • netcat – Geräte-PRÄSENCE2-Prüfung mithilfe von Netzwerk-netcat.
      • function – Ausführen eines benutzerdefinierten FHEM-Befehls.
      • shellscript – Ausführen eines benutzerdefinierten Betriebssystembefehls.
      • bluetooth – Bluetooth-Gerätescan vom FHEM-Server .
      • lan-bluetooth – Geräte-PRESENCE2-Prüfung über LAN-Netzwerk durch Verbindung mit einer PRESENCE2d- oder Collectord-Instanz.

      Daemon-Entität: Eine Daemon-Entität wird automatisch erstellt, wenn keine Definition einer PRESENCE2-Entität vorliegt.
      Der Daemon plant und führt die Ping- und Scan-Aktionen für alle Einheiten außer LAN-Bluetooth aus. Es wird zyklisch ausgeführt, wie durch das Attribut „IntervallNormal“ definiert.
      Da der Daemon die Scan-Aktivitäten ausführt (außer LAN-Bluetooth), können Berichte und Erkennungen nicht schneller als der Daemon-Zyklus sein.


      Define
        Modus: lan-ping
        define <name> PRESENCE2 lan-ping <IP-Adresse>
        Sucht über PING-Anfragen nach einem Netzwerkgerät und meldet seinen PRESENCE2-Status.
        Beispiel
        define iPhone PRESENCE2 lan-ping 192.168.179.21

        Modus: function
        define <name> PRESENCE2 function cmd:<Befehl> scan:<scanExpression>
        Führt den FHEM-Befehl aus und analysiert die Antwort für scanExpression.
        • Befehl kann ein beliebiger FHEM-Ausdruck wie
          sein get PsnceDaemon-Liste list nrmal
          {ReadingsVal("PsnceDaemon","state","empty")}
        • scanExpression ist eine Zeichenfolge oder ein regulärer Ausdruck zum Parsen der Antwort
        Beispiel
        define iPhone PRESENCE2 function cmd:{snmpCheck("10.0.1.1","0x44d77429f35c")} scan:1

        Modus: shellscript
        define <name> PRESENCE2 shellscript cmd:<Script> scan:<scanExpression>
        Führt den Betriebssystem-Script aus und analysiert die Antwort für scanExpression.
        Beispiel
        definiere PRESENCE2 shellscript cmd:/opt/check_device.sh iPhone scan:1

        Modus: bluetooth
        define <name> PRESENCE2 bluetooth <Adresse>
        Sucht nach der MAC-Adresse auf der BT-Schnittstelle des FHEM-Servers.
        Beispiel
        define iPhone PRESENCE2 bluetooth 0a:8d:4f:51:3c:8f

        Modus: lan-bluetooth
        define <name> PRESENCE2 lan-bluetooth cmd:<address> scannen:<IP-Adresse>
        Sucht mit Hilfe von PRESENCE2d oder Collectord nach einem Bluetooth-Gerät. Sie können überall dort installiert werden, wo Sie möchten, und sind dennoch über das Netzwerk erreichbar. Das angegebene Gerät wird auf den PRESENCE2-Status überprüft.
        Der Standardport ist 5111 (PRESENCE2d). Alternativ können Sie Port 5222 (Collector)
        verwenden Beispiel
        define iPhone PRESENCE2 lan-bluetooth 0a:4f:36:d8:f9:89 127.0.0.1:5222

        PRESENCE2d
          PRESENCE2 ist ein Perl-Netzwerk-Daemon, der PRESENCE2-Prüfungen mehrerer Bluetooth-Geräte über das Netzwerk bereitstellt. Es überwacht den TCP-Port 5111 auf eingehende Verbindungen von einer FHEM PRESENCE2-Instanz oder einem laufenden Collectord.
          Führt den Betriebssystem-Befehl aus und analysiert die Antwort für scanExpression.
          Beispiel
          define iPhone PRESENCE2 lan-bluetooth 0a:8d:4f:51:3c:8f
          Verwendung:
            PRESENCE2d [-d] [-p <Port>] [-P <Dateiname>]
            PRESENCE2d [-h | --helfen]
          
          Optionen:
            -p, --port
               TCP-Port, der verwendet werden soll (Standard: 5111)
            -P, --pid-file
               PID-Datei zum Speichern der lokalen Prozess-ID (Standard: /var/run/PRESENCE2d.pid)
            -d, --daemon
               Vom Terminal trennen und als Hintergrund-Daemon ausführen
            -n, --no-timestamps
               Geben Sie keine Zeitstempel in Protokollnachrichten aus
            -v, --verbose
               Detaillierte Protokollausgabe drucken
            -h, --help
               Detaillierten Hilfebildschirm drucken
          
          Es verwendet den Befehl hcitool (bereitgestellt durch eine bluez-Installation). um eine Paging-Anfrage an die angegebene Bluetooth-Adresse zu stellen (z. B. 01:B4:5E:AD:F6:D3). Die Geräte dürfen aber nicht sichtbar sein weiterhin aktiviert, um Bluetooth-Anfragen zu empfangen.

          Wenn ein Gerät vorhanden ist, wird dieses an FHEM gesendet, zusammen mit dem Gerätenamen als Lesegerät.

          Das PRESENCE2d ist verfügbar als:

          • direkte Perl-Skriptdatei: PRESENCE2d
          • .deb-Paket für Debian/Raspbian (noarch): PRESENCE2d-1.5.deb


        lePRESENCE2d
          lePRESENCE2d ist ein Perl-Netzwerk-Daemon, der PRESENCE2-Prüfungen von bereitstellt Mehrere Bluetooth-Geräte über das Netzwerk. Im Gegensatz zu PRESENCE2d, lePRESENCE2d deckt Bluetooth 4.0-Geräte (Low Energy) ab, d. e. Gigaset G-Tags, FitBit-Gebühren. lePRESENCE2d lauscht am TCP-Port 5333 auf Verbindungen einer PRESENCE2-Definition oder Collectord.
          Um die PRESENCE2 eines Geräts zu erkennen, verwendet es den Befehl hcitool lescan (Paket: bluez) zum kontinuierlichen Anhören Beacons von Bluetooth LE-Geräten.

          Wenn ein Gerät vorhanden ist, wird dieses an FHEM gesendet, zusammen mit dem Gerätenamen als Lesegerät.

          Das PRESENCE2d ist verfügbar als:

          • Perl-Skript: lePRESENCE2d
          • .deb-Paket (noarch): contrib/ PRESENCE2/deb/


        Collectord
          Der Collectord ist ein Perl-Netzwerk-Daemon, der Verbindungen zu mehreren PRESENCE2d-Installationen verwaltet, um über das Netzwerk nach mehreren Bluetooth-Geräten zu suchen.

          Es überwacht den TCP-Port 5222 auf eingehende Verbindungen von einer FHEM PRESENCE2-Instanz.
          Verwendung:
            Collectord -c <configfile> [-d] [-p <Port>] [-P <pidfile>]
            Collectord [-h | --helfen]
          
          Optionen:
            -c, --configfile <configfile>
               Die Konfigurationsdatei, die die Raum- und Timeout-Definitionen enthält
            -p, --port
               TCP-Port, der verwendet werden soll (Standard: 5222)
            -P, --pid-file
               PID-Datei zum Speichern der lokalen Prozess-ID (Standard: /var/run/collector.pid)
            -d, --daemon
               Vom Terminal trennen und als Hintergrund-Daemon ausführen
            -n, --no-timestamps
               Geben Sie keine Zeitstempel in Protokollnachrichten aus
            -v, --verbose
               Detaillierte Protokollausgabe drucken
            -l, --logfile <logfile>
               log in die angegebene Protokolldatei
            -h, --help
               Detaillierten Hilfebildschirm drucken
          
          Bevor der Collectord verwendet werden kann, benötigt er eine Konfigurationsdatei, in der alle verschiedenen Räume aufgelistet werden, die über einen PRESENCE2d-Melder verfügen. Diese Konfigurationsdatei sieht so aus:
              # room definition
              # ===============
              #
              [room-name]              # name of the room
              address=192.168.0.10     # ip-address or hostname
              port=5111                # tcp port which should be used (5111 is default)
              PRESENCE2_timeout=120    # timeout in seconds for each check when devices are present
              absence_timeout=20       # timeout in seconds for each check when devices are absent
          
              [living room]
              address=192.168.0.11
              port=5111
              PRESENCE2_timeout=180
              absence_timeout=20
          
          Wenn in einem der konfigurierten Räume ein Gerät vorhanden ist, wird dies an FHEM gesendet, zusammen mit dem Gerätenamen als Messwert und dem Raum, in dem das Gerät erkannt wurde.

          Der Collector ist verfügbar als:

          • direkte Perl-Skriptdatei: collectord
          • .deb-Paket für Debian (noarch): collector-1.8.1.deb

      Set
      • set <name> statusRequest
        Holt den aktuelle Presence Status des Geräts.

      • set <name> killChilds
        Entfernt alle Kind-Prozesse.

      • Kind-Prozesse:
        set <name> clearCounts
        Zurücksetzen des Zählers.

        Für Dämon:
        set <name> clearCounts <daemon|allEntities>
        <daemon> - Lösche alle Zähler von Deamon.
        <allEntities> - Löscht alle Zähler vom Deamon und allen PRESENCE2-Entitäten.


      Get
      • set <name> list <normal|full>
        <normal> - List ausführen.
        <full> - List ausführen und versteckte Einträge einschließen.

      • Nur Daemon
        set <name> childInfo <PRESENCE2|all>
        <PRESENCE2> – Zeigt alle laufenden Prozesse an, die von PRESENCE2 gestartet wurden.
        <all> - Alle laufenden Prozesse werden angezeigt.

      • Nur Daemon
        set <name> statusInfo <definition|status>
        <definition> - Gibt eine Tabelle der Definition für alle PRESENCE2-Entitäten zurück.
        <status> - Gibt eine Tabelle mit dem Status für alle PRESENCE2-Entitäten zurück.


      Attributes
      • attr <name> FhemLog3Std <0 | 1>
        Wenn gesetzt, werden die Log Informationen im Standard Fhem Format geschrieben.
        Sofern durch ein verbose 5 die Ausgabe in eine seperate Log-Datei aktiviert wurde, wird diese beendet.
        Die seperate Log-Datei und das zugehörige FileLog Device werden gelöscht.
        Wird das Attribut auf 0 gesetzt oder gelöscht und ist das Device verbose auf 5 gesetzt, so werden alle Log-Daten in eine eigene Log-Datei geschrieben.
        Name der Log-Datei:deviceName_debugLog.dlog
        Im INTERNAL Reading DEBUGLOG wird ein Link <DEBUG Log kann hier eingesehen werden> zur direkten Ansicht des Logs angezeigt.

      • attr <name> intervalPresent <Sekunden>
        Zeit in Sekunden, um den Status zu überprüfen, ob sich das Gerät im Status „Present“ befindet. Es ist an den Dämonenzyklus angepasst.
        Gilt nicht für Daemon-Entitäten

      • attr <name> intervalNormal <Sekunden>
        Zeit in Sekunden, um den Status zu überprüfen, ob sich das Gerät im Status „Present“ befindet. Es ist an den Dämonenzyklus angepasst.
        Gilt nicht für Daemon-Entitäten

      • attr <name> nonblockingTimeOut <30..240>

        Timeout für das regelmäßige prüfen auf Anwesenheit. Standard ist 60 (Sekunden).

      • attr <name> bluetoothHciDevice <hci[0..n]>
        (Nur im lokalen Modus "bluetooth" und nicht für Daemon Device 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, ...).

      • attr <name> hcitoolParam <name|info>
        (Nur im lokalen Modus "bluetooth" und nicht für Daemon Device anwendbar)

        Auswahl über welchen Paramter das hcitool ein verbundenes Bluetooth Device erkennen soll.
        Vorgabe ist <name>

      • attr <name> pingParam <params>
        (Nur verfügbar, wenn OS nicht Solaris oder Windows/CygWin)

        Parameter, außer der IP/Host, wie sie in der Befehlsrefrenz für das Betriebssystem Kommando 'ping' verfügbar sind.
        Default für Linux: -c 1 -w 1
        Supported Parameters:
        -q quiet output
        -c stop after replies
        -w reply wait in seconds
        -i seconds between sending each packet

      • attr <name> disable <0|1>
        Wenn aktiviert, ist jede Prüfung deaktiviert und der Status wird auf deaktiviert gesetzt.

      • attr <name> prGroup <static|dynamic|...>
        Durch die Definition einer Gruppe können mehrere Präsenzgeräte einer Gruppe zugeordnet und überwacht werden.
        <static> vordefiniert.
        <dynamic> vordefiniert.
        Sie können Ihre eigenen Gruppen definieren.

      • attr <name> prGroupDisp <condense|verbose>
        <condense> - Zeigt Informationen zur Anwesenheitsgruppe im komprimierten Modus an. [Standard]
        <verbose> – Zeigt Informationen zur Anwesenheitsgruppe im ausführlichen Modus an.

      • Kind-Prozesse
        attr <name> thresholdAbsence <Sekunden>

      • für Devices, die überwacht werden sollen
      • attr <name> presentCycle <Sekunden>
        Dieses Attribut steht in jedem Device in FHEM zur Verfügung. Wenn gesetzt, wird das zu überwachende Reading aus dem Attribut presentReading oder dem default Reading state durch den Presence2 Daemon auf Aktualisierung überprüft. Findet innerhalb der definierten Zeitspanne keine Aktuallisierung statt wird im Device das Reading "presentState" auf "absend" gesetzt. Im Presence2 Dämon Device wird das Reading evt_monitoredDevice generiert und entsprechend gesetzt.

      • attr <name> presentReading <name des Readings>
        Dieses Attribut steht in jedem Device in FHEM zur Verfügung. Es definiert das Reading, dass von presentCycle überwacht wird. Wird das Attribut nicht gesetzt, wird das Reading state> überwacht.


      Readings/events:

        Allgemein
        • Status: (absent|present|disabled) – Der Status des Geräts, Prüffehler oder „deaktiviert“, wenn das Attribut disable ist aktiviert
        • PRESENCE2: (abwesend|vielleicht abwesend|vorhanden|vielleicht vorhanden) – Der PRESENCE2-Status des Geräts. Der Wert „vielleicht abwesend“ tritt nur auf, wenn thresholdAbsence aktiviert ist.
        • appearCnt: Anzahl der verfügbaren Eingaben
        • lastAppear: Zeitstempel des letzten Erscheinens
        • lastDisappear: Zeitstempel des letzten Verschwindens
        • thresHldCnt: aktueller Schwellenwertzähler. 0 = Schwellenwert nicht aktiv

        Daemon-spezifische Messwerte/Ereignisse:

        • daemonMaxScanTime: maximale Zeit, die der Scanauftrag verwendet hat. Sollte kleiner als „intervalNormal“ sein, um ein Überspringen zu vermeiden.
        • daemonSkipCnt: Zähler für das Überspringen des Daemon-Jobs aufgrund einer Kollision.
        • pGrp_<group>: Zählerzusammenfassung der der <group>
        • zugewiesenen Entitäten
        • pGrp_<group>_ab: Ausführliche Zählerzusammenfassung der Entitäten, die <group> zugewiesen sind. : fehlende Entitäten
        • pGrp_<group>_dis: Ausführliche Zählerzusammenfassung der Entitäten, die <group> zugewiesen sind. : deaktivierte Entitäten
        • pGrp_<group>_pres: Ausführliche Zählerzusammenfassung der Entitäten, die <group> zugewiesen sind. : gegenwärtige Entitäten
        • pr_<entity>: Status der PRESENT-Aufsicht – siehe presentCycle
        • evt_<entiy>: Status der Ereignisüberwachung – siehe presentCycle


        Bluetooth-spezifische Messwerte/Ereignisse:
        • Gerätename: $name – Der Name des Bluetooth-Geräts, falls vorhanden


    PROPLANTA

    [EN DE]
      Das Modul extrahiert Wetterdaten von der Website www.proplanta.de.
      Es stellt eine Vorhersage für 12 Tage zur Verfügung - während der ersten 7 Tage im 3-Stunden-Intervall.
      Dieses Modul erzeugt eine hohe CPU-Last. Es wird deshalb empfohlen, die auszulesenden Vorhersagetage zu reduzieren.
      Es nutzt die Perl-Module HTTP::Request, LWP::UserAgent und HTML::Parse.
      Für detaillierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.

      Define

        define <Name> PROPLANTA [Stadt] [Ländercode]
        Beispiel:
        define wetter PROPLANTA Bern ch
        define wetter PROPLANTA Wittingen+(Niedersachsen)
         
      • [Stadt]
        Optional. Die Stadt muss auf www.proplanta.de auswählbar sein.
        Wichtig!! Auf die großen Anfangsbuchstaben achten. Leerzeichen im Stadtnamen werden durch ein + (Plus) ersetzt.

      • [Ländercode]
        Optional. Mögliche Werte: de (Standard), at, ch, fr, it

      • Über die Funktion PROPLANTA_Html und PROPLANTA_Html_Landscape wird ein HTML-Code für eine Vorhersage für die angegebenen Anzahl Tage (standardmäßig 3) erzeugt.
        Beispiel:
        define Vorschau weblink htmlCode {PROPLANTA_Html("Wetter"[, Tage])}


      Set

      • set <name> update
        Startet sofort ein neues Auslesen der Wetterdaten.

      Attribute

      • forecastDays <4-14>
        Anzahl Tage, für die die Vorhersage ausgelesen werden soll. Standard ist 14 Tage (inkl. heute).

      • INTERVAL <Abfrageintervall>
        Abfrageintervall in Sekunden (Standard 3600 = 1 Stunde)

      • URL <Internetadresse>
        Internetadresse, von der die Daten ausgelesen werden (überschreibt die Werte im 'define'-Term)

      • 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)
      • fc0_gust15 - maximale Windböen heute um 15:00 Uhr in km/h
      • 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
      • fc1_temp15 - Temperatur morgen 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
      • fc0_wind15 - Windgeschwindigkeit heute um 15:00 Uhr in km/h
      • fc0_windDir15 - Windrichtung heute um 15:00 Uhr in ° (Grad)
      • 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 ° (Grad)


    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

    [EN DE]
      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


    PW_Scan

    [EN DE]
      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.


    PW_Sense

    [EN DE]
      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.


    PW_Switch

    [EN DE]
      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"


    PiXtendV2

    [EN DE]
      PiXtend ist eine speicherprogrammierbare Steuerung auf Basis des Raspberry Pi. Dieses FHEM-Modul ermöglicht dabei den Zugriff auf die Funktionen des PiXtendV2-Boards in der FHEM-Oberfläche. Der PiXtend bietet dabei eine Vielzahl an digitalen und analogen Ein- und Ausgängen, die nach Industrie-Standards ausgelegt sind und ist aufgrund der sicheren Anschlüsse auch ideal für die Hausautomatisierung geeignet. Für mehr Informationen über PiXtend(R) und das FHEM-Modul besuchen Sie unsere Website www.PiXtend.de oder www.PiXtend.com.

      Define
        define <name> PiXtendV2 <optional>

        Der Parameter "optional" bestimmt für welches Hardware-Modell ein FHEM-Gerät angelegt werden soll, z.B. S oder L. Wird der Parameter weggelassen, wird automatisch ein FHEM-Gerät für Model -S- angelegt.

        Beispiel:
          define pix PiXtendV2    => erzeugt ein FHEM-Gerät für Model S
          define pix PiXtendV2 S   => erzeugt ein FHEM-Gerät für Model S
          define pix PiXtendV2 L   => erzeugt ein FHEM-Gerät für Model L

      Set
        Kommandos um die Basiskonfiguration für den PiXtend durchzuführen, beginnen mit einem "_".
        Unterstützt ein Kommando mehrere Kanäle, muss das "#"-Zeichen durch die Kanal-Nummer ersetzt werden.
        Alle Set-Kommandos sind unabhängig von der Groß-/Kleinschreibung um die einfache Benutzung zu ermöglichen.
        Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im Downloadbereich unserer Hompage nach.

        Beispiel:
          set pix relayOut0 on
          set pix Relayout0 On
          set pix rElAyoUT0 oFf


      • _GPIO#Ctrl [input,output,DHT11,DHT22]
        Mit dieser Einstellung kann die Funktion des GPIO eingestellt werden. [input], [output] oder [DHT11] und [DHT22] wenn ein DHT-Sensor an den GPIO angeschlossen ist. Wenn ein DHT-Sensor angeschlossen ist und verwendet wird, kann die normale Funktion des GPIO als Eingang/Ausgang nicht gleichzeitig verwendet werden.

      • _GPIOPullupsEnable [yes,no]
        Diese Einstellung aktiviert [yes] oder deaktiviert [no] für alle GPIOs die Möglichkeit die internen PullUp-Widerstände durch GPIOOut zu setzen.

      • _JumperSettingAI# [5V,10V]
        Diese Einstellung beeinflusst die Berechnung der Spannung durch die analogen Eingänge und bezieht sich dabei auf die tatsächliche Position des Jumpers auf dem PiXtend-Board [5V,10V]. Wenn kein Jumper verwendet wird, entspricht das der Standardeinstellung von [10V].

      • _StateLEDDisable [yes,no]
        Diese Einstellung deaktiviert [yes] oder aktiviert [no] die Status-LED auf dem PiXtend. Wenn die LED deaktiviert ist, leuchtet sie im Fehlerfall nicht auf.

      • _WatchdogEnable [disable,125ms,1s,8s]
        Diese Einstellung ermöglicht die Konfiguration des Watchdog-Timers. Wenn der Watchdog konfiguriert ist, geht der PiXtend in den Sicheren Zustand über, falls innerhalb der eingestellten Zeit keine gültige Übertragung zwischen PiXtend und Raspberry Pi stattgefunden hat. Im Sicheren Zustand kann der PiXtend erst wieder angesprochen werden, nachdem ein Reset des PiXtend durchgeführt wurde.

      • AnalogOut# []
        Stellt am analogen Ausgang eine Spannung ein. Der übergebene Wert kann eine Spannung zwischen 0 V und 10 V oder ein Rohwert zwischen 0 und 1023 sein. Um den Wert als Spannung zu übergeben, muss der Wert ein "." enthalten, auch wenn der Wert ganzzahlig ist.

        Beispiel:
          set pix analogout0 2.5   => Setzt den analogen Ausgang 0 auf 2,5 V
          set pix analogout0 4.0   => Setzt den analogen Ausgang 0 auf 4 V
          set pix analogout0 223   => Setzt den analogen Ausgang 0 auf 10*(233/1024) = 1,09 V


      • DigitalDebounce# [0-255]
        Ermöglicht das Entprellen der digitalen Eingänge. Die Einstellung beeinflusst dabei immer zwei Kanäle. DigitalDebounce01 beeinflusst somit DigitalIn0 und DigitalIn1. Die resultierende Verzögerung berechnet sich dabei durch (eingestellten Wert)*(100 ms). Der übergebene Wert kann eine beliebige Zahl zwischen 0 und 255 sein. Entprellen kann sinnvoll sein, falls an den Eingängen Schalter oder Taster angeschlossen sind.

        Beispiel:
          set pix digitaldebounce01 20   => entprellt DigitalIn0 und DigitalIn1 über (20*100ms) = 2s


      • DigitalOut# [on,off,toggle]
        Setzt den digitalen Ausgang auf HIGH [on] oder LOW [off] oder [toggle]t ihn.

      • GPIODebounce# [0-255]
        Ermöglicht das Entprellen der GPIO Eingänge. Die Einstellung beeinflusst dabei immer zwei Kanäle. GPIODebounce01 beeinflusst somit GPIOIn0 und GPIOIn1. Die resultierende Verzögerung berechnet sich dabei durch (eingestellten Wert)*(100 ms). Der übergebene Wert kann eine beliebige Zahl zwischen 0 und 255 sein. Entprellen kann sinnvoll sein, falls an den Eingängen Schalter oder Taster angeschlossen sind.

        Beispiel:
          set pix gpiodebounce23 33   => entprellt GPIOIn2 und GPIOIn3 über (33*100ms) = 3,3s


      • GPIOOut# [on,off,toggle]
        Setzt den GPIO auf HIGH [on] oder LOW [off] oder [toggle]t ihn, falls er als Ausgang konfiguriert ist. Wenn der GPIO als Eingang konfiguriert ist, kann mit diesem Kommando der interne PullUp-Widerstand aktiviert [on], deaktiviert [off] oder ge[toggle]t werden. Dazu muss die Möglichkeit allerdings global durch _GPIOPullupsEnable aktiviert werden.

      • PWM
        PiXtendV2 unterstützt mehrere PWM-Modi, die mit diesen Einstellungen konfiguriert werden können. Zum Beispiel wird ein Servo-Mode um Modellbau-Servomotoren anzusteuern, ein Frequency-Mode oder ein Duty-Cycle-Mode unterstüzt. Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im Downloadbereich unserer Hompage nach.

        PWM#Ctrl0 benötigt einen Wert zwischen 0 und 255
        PWM#Ctrl1 benötigt einen Wert zwischen 0 und 65535 (oder einen Wert zwischen 0 und 255, siehe Ausnahme Model -S-)
        PWM#A/B benötigt einen Wert zwischen 0 und 65535 (oder einen Wert zwischen 0 und 255, siehe Ausnahme Model -S-)

      • RelayOut# [on,off,toggle]
        Setzt das Relay auf HIGH [on] oder LOW [off] oder [toggle]t es.

      • Reset
        Setzt den Controller auf dem PiXtend zurück, z.B. wenn er sich im Sicheren Zustand befindet, um ihn erneut konfigurieren zu können.

      • RetainCopy [on,off]
        Wenn RetainCopy aktiviert [on] ist, werden die geschriebenen Daten RetainDataOut vom PiXtend in RetainDataIn zurückgegeben. Die Aktivierung kann in Situationen sinnvoll sein, wenn überprüft werden soll, welche Daten an den PiXtend geschickt wurden. Ist die Funktion deaktiviert [off] werden die zuletzt gespeicherten Daten in RetainDataIn zurückgegeben.

      • RetainDataOut [0-(RetainSize-1)] [0-255]
        Der PiXtendV2 unterstüzt die Speicherung remanenter/persistenter Daten - auch Retain genannt. Diese Daten werden im Falle einer Betribsspannungsunterbrechung, beim Auslösen des Watchdog-Timers oder beim Entritt in den Sicheren Zustand gespeichert, sofern diese Funktion aktiviert wurde. Die Retain-Daten sind dabei in Bytes organisiert, wobei jedes Byte individuell mit einem Wert zwischen 0 und 255 beschrieben werden kann.
        Als ersten Parameter erwartet das Kommando den Index des Bytes, der zwischen 0 und (RetainSize-1) liegt. RetainSize ist in den "Internals" zu finden. Als zweiter Parameter wird der Wert erwartet, der gespeichert werden soll.

        Beispiel:
          set pix retaindataout 0 34    => speichert 34 in Retain-Data-Byte 0
          set pix retaindataout 30 222   => speichert 222 in Retain-Data-Byte 30


      • RetainEnable [on,off]
        Die Funktion um Retain-Daten auf dem PiXtend zu speichern muss erst aktiviert [on] werden. Andernfalls [off] werden keine Daten gespeichert. Es ist zu beachten, dass für den Retain-Speicherbereich 10.000 Schreibzyklen unterstützt werden. Dementsprechend sollte die Funktion nur aktiviert werden, wenn sie tatsächlich benötigt wird.

      • SafeState
        Mit dieser Einstellung kann der PiXtend in den Sicheren Zustand versetzt werden. Wenn die Retain-Speicherung aktiviert ist, werden die Daten gesichert. Im Sicheren Zustand kommuniziert der PiXtend nicht mehr mit FHEM. Um den PiXtend neuzustarten muss ein Reset durchgeführt werden.


      Get
        Unterstützt ein Kommando mehrere Kanäle, muss das "#"-Zeichen durch die Kanal-Nummer ersetzt werden.
        Alle Get-Kommandos sind unabhängig von der Groß-/Kleinschreibung um die einfache Benutzung zu ermöglichen.
        Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im Downloadbereich unserer Hompage nach.
        Die Werte können als Text, wobei die Werte in eckigen Klammern stehen oder als rohe Werte zurückgegeben werden. Die Einstellung für das Format ist in den Attributen ("PiXtend_GetFormat") zu finden.

      • AnalogIn#
        Gibt den Wert des ausgewählten analogen Eingangs zurück. Der Wert hängt dabei von der Einstellung _JumperSettingAI# und der tatsächlichen Jumper-Position auf dem Board ab, sowie der Messmethode des Kanals ab. AnalogIn4 und AnalogIn5 bei Modell -L- sind z.B. Stromeingänge.

      • DigitalIn#
        Gibt den Status on (HIGH) oder off (LOW) des digitalen Eingangs zurück.

      • GPIOIn#
        Gibt den Status on (HIGH) oder off (LOW) des GPIOs zurück, unabhängig von der Konfiguration (input, output, ..).

      • RetainDataIn [0-(RetainSize-1)]
        Gibt den Wert des ausgewählten RetainDataIn-Bytes zurück.

      • Sensor# [temperature,humidity]
        Wenn ein DHT-Sensor an den entsprechenden GPIO angeschlossen ist und _GPIO#Ctrl auf DHT11 oder DHT22 gesetzt ist wird die Temperatur und Luftfeuchtigkeit gemessen und kann ausgelesen werden.

        Beispiel:
          set pix _GPIO0Ctrl DHT11
          get pix Sensor0 temperature


      • SysState
        Gibt den Systemstatus [defined, active, error] des FHEM-Moduls zurück.

      • UCState
        Gibt den Status des PiXtend zurück. Ist der Status 1, ist alles in Ordnung. Ist der Status allerdings größer als 1 ist ein Fehler aufgetreten oder steht noch an. In diesem Fall kann der PiXtend nicht konfiguriert werden. Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im Downloadbereich unserer Hompage nach.

      • UCWarnings
        Der zurückgegebene Wert repräsentiert die Warnungen des PiXtendV2. Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im Downloadbereich unserer Hompage nach.

      • Version
        Gibt die Version des FHEM-Moduls sowie die PiXtend-Version [Model-Hardware-Firmware] zurück.


      Readings
        Das FHEM-Modul des PiXtend unterstüzt mehrere Readings, von denen die meisten ein Event auslösen, sobald sie sich ändern. Die Bedeutung der Readings ist ähnlich zu den Get-Kommandos.

      • AnalogIn#
        Zeigt das Ergebnis der Messungen der analogen Eingänge in V beziehungsweise in mA an.

      • DigitalIn#
        Zeigt den Status on (HIGH) oder off (LOW) der digitalen Eingänge an.

      • Firmware
        Zeigt die Firmware-Version an.

      • GPIOIn#
        Zeigt den Status on (HIGH) oder off (LOW) der GPIOs, unabhängig von deren Konfiguration (input, output, ..).

      • Hardware
        Zeigt die Hardware-Version an.

      • Model
        Zeigt das Model an.

      • RetainDataIn
        Zeigt die Werte von RetainDataIn an. Die Werte von RetainDataIn sind dabei in einer Zeile zusammengefasst. Der am weitsten links stehende Wert entspricht Byte0 / RetainDataIn0. Die Werte sind durch ein Leerzeichen " " voneinander getrennt und können somit einfach in Perl ausgewertet werden:

        Beispiel:
          my ($str) = ReadingsVal(pix, "RetainDataIn", "?")
          if($str ne "?"){
           my @val = split(/ /, $str);   => $val[0] enthält nun Byte0, $val[1] Byte1, usw
           ...
          }


      • Sensor#T/H
        Zeigt die Temperatur (T) in °C und die Luftfeuchtigkeit (H) in % des Sensors an, der an den entsprechenden GPIO angeschlossen ist.

      • UCState
        Zeigt den Status des PiXtend an. Ist der Status 1, ist alles in Ordnung. Ist der Status allerdings größer als 1 ist ein Fehler aufgetreten oder steht noch an. In diesem Fall kann der PiXtend nicht konfiguriert werden. Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im Downloadbereich unserer Hompage nach.

      • UCWarnings
        Der angezeigte Wert repräsentiert die Warnungen des PiXtendV2. Für mehr Informationen sehen Sie bitte im Handbuch für den PiXtendV2 im Downloadbereich unserer Hompage nach.


      Attributes
        Für den Attribut-Namen muss die Groß-/Kleinschreibung beachtet werden.

      • PiXtend_GetFormat [text,value]
        Ändert die Darstellung, wie die Werte durch die Get-Kommandos zurückgegeben werden. Die Werte können entweder in einer Nachricht [text] oder als rohe Werte [value] zurückgegeben werden. Standard ist die Ausgabe als Text.

      • PiXtend_Parameter
        Dieses Attribut kann verwendet werden, um die Einstellungen zur Basiskonfiguration (Set-Kommandos beginnend mit "_") als Attribut zu speichern. Attribute werden im Gegensatz zu Set-Kommandos in der Config-Datei gespeichert.
        Einzelne Kommandos werden durch ein Leerzeichen voneinander getrennt und erhalten ihre Werte nach einem Doppelpunkt.

        Beispiel:
          attr pix PiXtend_Parameter _gpio0ctrl:dht11 _gpio3ctrl:dht22



    Plugwise

    [EN DE]
      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)



    PostMe

    [EN DE]
      Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: PostMe

    PrecipitationSensor

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

    PushNotifier

    [EN DE]
      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

    Pushbullet

    [EN DE]
      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

    [EN DE]
      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   - Typ: Integer - Sende mit -2, um keine/n Benachrichtigung/Alarm zu generieren. Sende mit -1, um immer eine lautlose Benachrichtigung zu senden. Sende mit 1, um die Nachricht mit hoher Priorität anzuzeigen und die Ruhezeiten des Empfängers zu umgehen. Oder sende mit 2, um zusätzlich eine Bestätigung des Empfängers anzufordern.
          retry      - Typ: Integer - Verpflichtend bei einer Nachrichten Priorität >= 2.
          expire     - Typ: Integer - Verpflichtend bei einer Nachrichten Priorität >= 2.
          cancel_id  - Typ: Text - Benutzerdefinierte ID, um Nachrichten mit einer Priorität >= 2 sofort ablaufen zu lassen und die wiederholte Benachrichtigung auszuschalten.
          timestamp  - Typ: Integer - Ein Unix Zeitstempfel mit Datum und Uhrzeit deiner Nachricht, die dem Empfänger statt der Uhrzeit des Einganges auf den Pushover Servern angezeigt wird. Hat Vorrang bei gesetztem Attribut timestamp=1.
          sound      - Typ: Text - Der Name eines vom Empfängergerät unterstützten Klangs, um den vom Empfänger ausgewählten Klang zu überschreiben.
          attachment      - Typ: Text - Pfad zu einer Bilddatei, welche an die Nachricht angehängt werden soll. Der Basispfad ist relativ zum FHEM Verzeichnis und kann über das storagePath Attribut überschrieben werden.

          Beispiele:
            set Pushover1 msg Meine erste Pushover Nachricht.
            set Pushover1 msg Meine zweite Pushover Nachricht.\nDiesmal mit zwei Zeilen.
            set Pushover1 msg "Eine andere Pushover Nachricht in doppelten Anfährungszeichen."
            set Pushover1 msg 'Eine andere Pushover Nachricht in einfachen Anfährungszeichen.'
            set Pushover1 msg message="Pushover Nachricht, die die explizite Nachrichten Option für den Textinhalt verwendet." Dieser Teil des Textes wird ignoriert.
            set Pushover1 msg Dies ist eine Nachricht mit einem Titel. title="Dies ist ein Betreff"
            set Pushover1 msg Diese Nachricht hat einen Anhang! attachment="demolog/pictures/p1.jpg"
            set Pushover1 msg title="Dies ist auch ein Betreff!" Dies ist eine weitere Nachricht mit einem Titel, der am Anfang des Kommandos gesetzt ist.
            set Pushover1 msg title=Notfall priority=2 retry=30 expire=3600 Sicherheits-Alarm im Wohnzimmer.
            set Pushover1 msg title=Link Schau dir mal diese Website an: url_title="Öffnen" action="http://fhem.de/" expire=3600
            set Pushover1 msg title=Hinweis expire=3600 Dies ist eine Erinnerung, um etwas zu tun. Der Link verliert in 1h seine Gültigkeit. url_title="Hier klicken, um den Befehl auszuführen" action="set device something"
            set Pushover1 msg title=Notfall priority=2 retry=30 expire=3600 Sicherheits-Alarm im Wohnzimmer. sound=siren url_title="Hier klicken, um den Befehl auszuführen" action="set device something"



        msgCancel
          set <Pushover_device> msgCancel <ID>

          Stoppt vorzeitig die wiederkehrende Aufforderung zur Bestätigung bei Nachrichten mit Priorität >= 2.

          Beispiel:
            set Pushover1 msg title=Notfall priority=2 retry=30 expire=3600 Sicherheits-Alarm im Wohnzimmer. sound=siren cancel_id=SicherheitsAlarm
            set Pushover1 msgCancel SicherheitsAlarm


        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
      • expire
        Wenn die Nachrichten Priorität 2 ist, wird dieser Wert als Standard für expire verwendet, falls dieser nicht in der Nachricht angegeben wurde. Muss 30 oder höher sein.
      • retry
        Wenn die Nachrichten Priorität 2 ist, wird dieser Wert als Standard für retry verwendet, falls dieser nicht in der Nachricht angegeben wurde.
      • sound
        Wird beim Senden als Titel verwendet, sofern dieser nicht als Aufrufargument angegeben wurde. Kann auch generell entfallen, dann wird der eingestellte Ton der App verwendet.
      • storagePath
        Wird als Standardpfad beim Versand von Anhängen verwendet, ansonsten wird das globale Attribut modpath benutzt.

      Generated events:
        N/A

    Pushsafer

    [EN DE]
      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

    PylonLowVoltage

    [EN DE]

    Modul zur Einbindung von Niedervolt-Batterien mit Batteriemanagmentsystem (BMS) des Herstellers Pylontech über RS485 via RS485/Ethernet-Gateway. Die Kommunikation zum RS485-Gateway erfolgt ausschließlich über eine Ethernet-Verbindung.
    Das Modul wurde bisher erfolgreich mit Pylontech Batterien folgender Typen eingesetzt:
    • US2000
    • US2000B Plus
    • US2000C
    • US2000 Plus
    • US3000
    • US3000C
    • US5000
    Als RS485-Ethernet-Gateways wurden bisher folgende Geräte erfolgreich eingesetzt:
    • USR-TCP232-304 des Herstellers USRiot
    • Waveshare RS485 to Ethernet Converter
    Prinzipiell sollte auch jedes andere RS485/Ethernet-Gateway kompatibel sein.

    Voraussetzungen

    Dieses Modul benötigt die Perl-Module:
    • IO::Socket::INET (apt-get install libio-socket-multicast-perl)
    • IO::Socket::Timeout (Installation z.B. über die CPAN-Shell oder das FHEM Installer Modul)
    Das Datenformat muß auf dem RS485 Gateway wie folgt eingestellt werden:
      Start Bit - 1 Bit
      Data Bit - 8 Bit
      Stop Bit - 1 Bit
      Parity - ohne Parität

    Beispielkonfiguration eines Waveshare RS485 to Ethernet Converters

    Das Webinterface des Konverters bietet mehrere Seiten mit Einstellungen an. Die relevanten Einstellungen sind nachfolgend beispielhaft gezeigt. Die Zuweisung einer festen IP-Adresse wird vorab vorausgesetzt.
      Einstellungen Serial Port
      - Baud Rate : entsprechend Einstellung der Batterie
      - Data Size : 8 Bit
      - Parity : None
      - Stop Bits : 1
      - Local Port Number : frei gewählt
      - Work Mode : TCP Server
      - Reset : nicht gesetzt
      - Link : gesetzt
      - Index : nicht gesetzt
      - Similar RCF2217 : gesetzt
      Einstellungen Expand Function
      - Heartbeat Packet Type : None
      - Register Packet Type : None
      - Short Connection : nicht gesetzt
      - TCP Server-kick off old connection : gesetzt
      - Buffer Data before Connected : gesetzt
      - UART Set Parameter : nicht gesetzt

    Einschränkungen
    Das Modul unterstützt zur Zeit maximal 16 Batterien (1 Master + 15 Slaves) in bis zu 7 Gruppen.
    Die realisierbare Gruppen- und Batterieanzahl ist von den eingesetzen Produkten abhängig. Dazu bitte die Hinweise des Herstellers beachten.

    Definition
      define <name> PylonLowVoltage <hostname/ip>:<port> [<bataddress>] [group=<N>]

      Beispiel:
      define Pylone1 PylonLowVoltage 192.168.2.86:9000 1 group=0

    • hostname/ip:
      Hostname oder IP-Adresse des RS485/Ethernet-Gateways
    • port:
      Port-Nummer des im RS485/Ethernet-Gateways konfigurierten Ports
    • bataddress:
      Optionale Geräteadresse der Pylontech Batterie. Es können mehrere Pylontech Batterien über eine Pylontech-spezifische Link-Verbindung verbunden werden. Die zulässige Anzahl ist der jeweiligen Pylontech Dokumentation zu entnehmen.
      Die Master Batterie im Verbund (mit offenem Link Port 0 bzw. an der die RS485-Verbindung angeschlossen ist) hat die Adresse 1, die nächste Batterie hat dann die Adresse 2 und so weiter. Ist keine Geräteadresse angegeben, wird die Adresse 1 verwendet.
    • group:
      Optionale Gruppennummer des Batteriestacks. Ist group=0 oder nicht angegeben, wird die Standardkonfiguration "Single Group" verwendet. Die Gruppennummer kann 0 bis 7 sein.

    Arbeitsweise
      Das Modul liest entsprechend der Einstellung des Attributes "interval" zyklisch Werte aus, die das Batteriemanagementsystem über die RS485-Schnittstelle zur Verfügung stellt.
    Get
    • data
      Die Datenabfrage des Batteriemanagementsystems wird ausgeführt. Der Zeitgeber der zyklischen Abfrage wird entsprechend dem gesetzten Wert des Attributes "interval" neu initialisiert.

    Attribute
    • disable 0|1
      Aktiviert/deaktiviert die Gerätedefinition.

    • interval <Sekunden>
      Intervall der Datenabfrage von der Batterie in Sekunden. Ist "interval" explizit auf den Wert "0" gesetzt, erfolgt keine automatische Datenabfrage.
      (default: 30)

    • timeout <Sekunden>
      Timeout für den Verbindungsaufbau zum RS485 Gateway.
      (default: 0.5)

      Hinweis: Wird ein Timeout >= 1 Sekunde eingestellt, schaltet das Modul intern auf die Verwendung eines Parallelprozesses (BlockingCall) um damit Schreib- bzw. Leseverzögerungen auf dem RS485 Interface nicht zu blockierenden Zuständen in FHEM führen.

    • userBatterytype
      Der automatisch ermittelte Batterietyp (Reading batteryType) wird durch die angegebene Zeichenfolge ersetzt.

    • waitTimeBetweenRS485Cmd <Sekunden>
      Wartezeit zwischen der Ausführung von RS485 Befehlen in Sekunden.
      Dieser Parameter hat nur Auswirkung wenn das Attribut "timeout" auf einen Wert >= 1 gesetzt ist.
      (default: 0.1)

    Readings
    • averageCellVolt
      mittlere Zellenspannung (V)
    • bmsTemperature
      Temperatur (°C) des Batteriemanagementsystems
    • cellTemperature_0104
      Temperatur (°C) der Zellenpacks 1 bis 4
    • cellTemperature_0508
      Temperatur (°C) der Zellenpacks 5 bis 8
    • cellTemperature_0912
      Temperatur (°C) der Zellenpacks 9 bis 12
    • cellTemperature_1315
      Temperatur (°C) der Zellenpacks 13 bis 15
    • cellTemperature_Pos_XX
      Temperatur (°C) der Position XX (nicht näher spezifiziert)
    • cellVoltage_XX
      Zellenspannung (V) des Zellenpacks XX. In dem Batteriemodul sind "packCellcount" Zellenpacks in Serie geschaltet verbaut. Jedes Zellenpack besteht aus parallel geschalten Einzelzellen.
    • chargeCurrentLimit
      aktueller Grenzwert für den Ladestrom (A)
    • chargeEnable
      aktuelles Flag Laden erlaubt
    • chargeFullRequest
      aktuelles Flag Batteriemodul voll laden (notfalls aus dem Netz)
    • chargeImmediatelySOCXX
      aktuelles Flag Batteriemodul sofort laden (05: SOC Grenze 5-9%, 09: SOC Grenze 9-13%)
    • chargeVoltageLimit
      aktuelle Ladespannungsgrenze (V) des Batteriemoduls
    • dischargeCurrentLimit
      aktueller Grenzwert für den Entladestrom (A)
    • dischargeEnable
      aktuelles Flag Entladen erlaubt
    • dischargeVoltageLimit
      aktuelle Entladespannungsgrenze (V) des Batteriemoduls
    • moduleSoftwareVersion_manufacture
      Firmware Version des Batteriemoduls
    • packAlarmInfo
      Alarmstatus (ok - Batterienmodul ist in Ordnung, failure - im Batteriemodul liegt eine Störung vor)
    • packCapacity
      nominale Kapazität (Ah) des Batteriemoduls
    • packCapacityRemain
      aktuelle Kapazität (Ah) des Batteriemoduls
    • packCellcount
      Anzahl der Zellenpacks im Batteriemodul
    • packCurrent
      aktueller Ladestrom (+) bzw. Entladstrom (-) des Batteriemoduls (A)
    • packCycles
      Anzahl der Vollzyklen - Die Anzahl der Zyklen ist in gewisserweise ein Maß für den Verschleiß der Batterie. Eine komplettes Laden und Entladen wird als ein Zyklus gewertet. Wird die Batterie 50% entladen und wieder aufgeladen, zählt das nur als ein halber Zyklus. Pylontech gibt eine Lebensdauer von mehreren 1000 Zyklen an (siehe Datenblatt).
    • packImbalance
      aktuelles Ungleichgewicht der Spannung zwischen den Einzelzellen des Batteriemoduls (%)
    • packPower
      aktuell bezogene (+) bzw. gelieferte (-) Leistung (W) des Batteriemoduls
    • packSOC
      Ladezustand (%) des Batteriemoduls
    • packState
      aktueller Arbeitsstatus des Batteriemoduls
    • packVolt
      aktuelle Spannung (V) des Batteriemoduls
    • paramCellHighVoltLimit
      Systemparameter obere Spannungsgrenze (V) einer Zelle
    • paramCellLowVoltLimit
      Systemparameter untere Spannungsgrenze (V) einer Zelle (Alarmgrenze)
    • paramCellUnderVoltLimit
      Systemparameter Unterspannungsgrenze (V) einer Zelle (Schutzgrenze)
    • paramChargeCurrentLimit
      Systemparameter Ladestromgrenze (A) des Batteriemoduls
    • paramChargeHighTempLimit
      Systemparameter obere Temperaturgrenze (°C) bis zu der die Batterie lädt
    • paramChargeLowTempLimit
      Systemparameter untere Temperaturgrenze (°C) bis zu der die Batterie lädt
    • paramDischargeCurrentLimit
      Systemparameter Entladestromgrenze (A) des Batteriemoduls
    • paramDischargeHighTempLimit
      Systemparameter obere Temperaturgrenze (°C) bis zu der die Batterie entlädt
    • paramDischargeLowTempLimit
      Systemparameter untere Temperaturgrenze (°C) bis zu der die Batterie entlädt
    • paramModuleHighVoltLimit
      Systemparameter obere Spannungsgrenze (V) des Batteriemoduls
    • paramModuleLowVoltLimit
      Systemparameter untere Spannungsgrenze (V) des Batteriemoduls (Alarmgrenze)
    • paramModuleUnderVoltLimit
      Systemparameter Unterspannungsgrenze (V) des Batteriemoduls (Schutzgrenze)
    • protocolVersion
      PYLON low voltage RS485 Prokollversion
    • serialNumber
      Seriennummer


    QRCode

    [EN DE]
      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

    [EN DE]
      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, GUEST und PET 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.
        • addPet   -   erstellt ein neues PET 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.
        • removePet   -   zeigt alle Mitglieder vom Typ PET 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, addPet, addRoommate, removeGuest, removePet, 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 oder PET als 'none' behandelt.


      Attribute
        • rgr_homealoneInStatus - wenn aktiviert, dann erhält state den Wert von HomealoneSubtype als Präfix; Standard ist "0"
        • rgr_homealoneSubTypes - eine Liste von subTypes, die den Home Alone Status auslösen, sofern sie diese die einzigen Anwesenden zu Hause sind. Die Reihenfolge beeinflusst die Bestimmung der Person mit der höchsten Verantwortung im Haus. Die Sortierung geht vom unwichtigsten zum wichtigsten.
        • rgr_lang - überschreibt globale Spracheinstellung; hilft beim setzen von Device Attributen, um FHEMWEB Anzeigetext zu übersetzen
        • rgr_noDuration - deaktiviert die kontinuierliche, nicht Event-basierte Berechnung der Zeitspannen (siehe Readings durTimer*)
        • rgr_showAllStates - die Status 'asleep' und 'awoken' sind normalerweise nicht immer sichtbar, um einen einfachen Zubettgeh-Prozess über das devStateIcon Attribut zu ermöglichen; Standard ist 0
        • rgr_states - Liste aller in FHEMWEB angezeigter Status; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Status führen zu Fehlern
        • rgr_wakeupDevice - Referenz zu versklavten DUMMY Geräten, welche als Wecker benutzt werden (Teil von RESIDENTS Toolkit's wakeuptimer)



      Generierte Readings/Events:
        • homealoneSubtype - subType des Bewohner Objekts in Verantwortung
        • homealoneType - type des Bewohner Objekts in Verantwortung
        • 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 zu 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
        • residentsTotalPeople - Anzahl der aktiven Personen, welche momentan zu den Bewohnern dazugezählt werden
        • residentsTotalPeopleAbsent - Anzahl der aktiven Personen, die momentan unterwegs sind
        • residentsTotalPeopleAbsentDevs - Gerätename der aktiven Personen, die momentan unterwegs sind
        • residentsTotalPeopleAbsentNames - Gerätealias der aktiven Personen, die momentan unterwegs sind
        • residentsTotalPeoplePresent - Anzahl der aktiven Personen, die momentan zu Hause sind
        • residentsTotalPeoplePresentDevs - Gerätename der aktiven Personen, die momentan zu Hause sind
        • residentsTotalPeoplePresentNames - Gerätealias der aktiven Personen, die momentan zu Hause sind
        • residentsTotalPets - Anzahl der Haustiere, die als permanente Bewohner behandelt werden
        • residentsTotalPetsAbsent - Anzahl der Haustiere, die momentan unterwegs sind
        • residentsTotalPetsAbsentDevs - Gerätename der Haustiere, die momentan unterwegs sind
        • residentsTotalPetsAbsentNames - Gerätealias der Haustiere, die momentan unterwegs sind
        • residentsTotalPetsPresent - Anzahl der Haustiere, die momentan zu Hause sind
        • residentsTotalPetsPresentDevs - Gerätename der Haustiere, die momentan zu Hause sind
        • residentsTotalPetsPresentNames - Gerätealias der Haustiere, 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, GUEST oder PET Geräten hinzugefügt werden.
          Die folgenden Kommandos sind momentan verfügbar:

        • wakeuptimer   -   fügt ein Dummy Gerät mit erweiterten Funktionen als Wecker hinzu, um darauf Weck-Automationen aufzubauen.
            Ein notify Gerät wird als Makro erstellt, um die eigentliche Automation auszuführen. Das Makro wird durch ein normales at-Gerät ausgelöst und kann ebenfalls angepasst werden. Die Hauptfunktion wird dabei trotzdem von einer speziellen RESIDENTS Toolkit funktion gehandhabt.
            Die Zeit aktiver Wecker kann mittels + oder - relativ erhöht bzw. verringert werden. Die Angabe als +HH:MM ist auch möglich.

            Die Weckfunktion kann wie folgt über Attribute beinflusst werden:
          • wakeupAtdevice - Backlink zum at Gerät (notwendig)
          • wakeupDays - Makro nur an bestimmten Tagen auslösen. Mon=1,Di=2,Mi=3,Do=4,Fr=5,Sa=6,So=0 (optional)
          • wakeupDefaultTime - Stellt die Weckzeit nach dem auslösen zurück auf diesen Standardwert (optional)
          • wakeupEnforced - Forciertes wecken (optional; 0=nein, 1=ja, 2=wenn Weckzeit ungleich wakeupDefaultTime, 3=wenn Weckzeit früher ist als wakeupDefaultTime)
          • wakeupHolidays - Makro u.U. an Feiertagen oder Nicht-Feiertagen ausführen (optional; andHoliday=an Feiertagen ggf. zusammen mit wakeupDays, orHoliday=an Feiertagen unabhängig von wakeupDays, andNoHoliday=an Nicht-Feiertagen ggf. zusammen mit wakeupDays, orNoHoliday=an Nicht-Feiertagen unabhängig von wakeupDays)
          • wakeupMacro - Name des notify Makro Gerätes (notwendig)
          • wakeupOffset - Wert in Minuten, die das Makro früher ausgelöst werden soll, z.B. bei komplexen Weckprogrammen über einen Zeitraum von 30 Minuten (Standard ist 0)
          • wakeupResetSwitcher - das DUMMY Device, welches zum schnellen ein/aus schalten der Resetfunktion verwendet wird (optional, Device wird automatisch angelegt)
          • wakeupResetdays - sofern wakeupDefaultTime gesetzt ist, kann der Reset hier auf betimmte Tage begrenzt werden. Mon=1,Di=2,Mi=3,Do=4,Fr=5,Sa=6,So=0 (optional)
          • wakeupUserdevice - Backlink zum RESIDENTS, ROOMMATE, GUEST oder PET 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

    RHASSPY

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

    ROLLO

    [EN DE]

      Das Modul ROLLO bietet eine einfache Moeglichkeit, mit ein bis zwei Relais den Hoch-/Runterlauf eines Rolladen zu steuern und punktgenau anzuhalten.
      Ausserdem wird die aktuelle Position in FHEM dargestellt. Ueber welche Hardware/Module die Ausgaenge angesprochen werden ist dabei egal.

      Anmerkung

      Wenn ROLLO installiert wurde, bevor es Bestandteil von FHEM wurde und lange kein Update gemacht wurde, wirst du die "position" readings und das entsprechende set Kommando vermissen. "position" wurde durch "pct" ersetzt, um Kompatibilität mit anderen Modulen (wie Automatic shutter control - ASC) sicher zu stellen. Bitte passe deine notifies/DOIFs entsprechend an.

      Example

      define TestRollo ROLLO

      Define

      define <Rollo-Device> ROLLO

      Defination eines Rollos.

    Set

    • open set <Rollo-Device> open
      Faehrt das Rollo komplett auf (pct 0)
    • closed set <Rollo-Device> closed
      Faehrt das Rollo komplett zu (pct 100)
    • up set <Rollo-Device> up
      Faehrt das Rollo um 10 auf (pct +10)
    • down set <Rollo-Device> down
      Faehrt das Rollo um 10 zu (pct -10)
    • half set <Rollo-Device> half
      Faehrt das Rollo zur haelfte runter bzw. hoch (pct 50)
    • stop set <Rollo-Device> stop
      Stoppt das Rollo
    • drive set <Rollo-Device> drive up 5
      Fährt das Rollo in die angegebene Richtung für die angegebene Zeit (in Sekunden)
    • blocked set <Rollo-Device> blocked
      wenn aktiviert, kann der ROLLO nur noch eingeschränkt gesteuert werden. Siehe Attribut block_mode für Details.
    • unblocked set <Rollo-Device> unblocked
      Aktiviert einen geblockten ROLLO wieder für die normale Benutzung
    • pct set <Rollo-Device> pct <value>
      Faehrt das Rollo auf eine beliebige pct zwischen 0 (offen) - 100 (geschlossen)
    • reset set <Rollo-Device> reset <value>
      Sagt dem Modul in welcher pct sich der Rollo befindet
    • extern set <Rollo-Device> extern <value>
      Der Software mitteilen dass gerade Befehl X bereits ausgeführt wurde und nun z.B,. das berechnen der aktuellen pct gestartet werden soll

    Get

    • version get <Rollo-Device> version
      Gibt die version des Modul Rollos aus

    Attributes

    • rl_type attr <Rollo-Device> rl_type [normal|HomeKit]
      Typunterscheidung zur unterstützung verschiedener Hardware. Abhängig vom gewählten Typ wird die Richtung von der die pct gerechnet wird festgelegt:
      • normal = pct 0 ist offen, pct 100 ist geschlossen
      • HomeKit = pct 100 ist offen, pct 0 ist geschlossen
    • rl_secondsDown attr <Rollo-Device> rl_secondsDown <number>
      Sekunden zum hochfahren
    • rl_secondsUp attr <Rollo-Device> rl_secondsUp <number>
      Sekunden zum herunterfahren
    • rl_excessTop attr <Rollo-Device> rl_excessTop <number>
      Zeit die mein Rollo Fahren muss ohne das sich die Rollo-pct ändert (bei mir fährt der Rollo noch in die Wand, ohne das man es am Fenster sieht, die pct ist also schon bei 0%)
    • rl_excessBottom attr <Rollo-Device> rl_excessBottom <number>
      (siehe excessTop)
    • rl_switchTime attr <Rollo-Device> rl_switchTime <number>
      Zeit die zwischen 2 gegensätzlichen Laufbefehlen pausiert werden soll, also wenn der Rollo z.B. gerade runter fährt und ich den Befehl gebe hoch zu fahren, dann soll 1 sekunde gewartet werden bis der Motor wirklich zum stillstand kommt, bevor es wieder in die andere Richtung weiter geht. Dies ist die einzige Zeit die nichts mit der eigentlichen Laufzeit des Motors zu tun hat, sondern ein timer zwischen den Laufzeiten.
    • rl_resetTime attr <Rollo-Device> rl_resetTime <number>
      Zeit die beim Anfahren von Endpositionen (offen,geschlossen) der Motor zusätzlich an bleiben soll um sicherzustellen das die Endposition wirklich angefahren wurde. Dadurch können Differenzen in der Positionsberechnung korrigiert werden.
    • rl_reactionTime attr <Rollo-Device> rl_reactionTime <number>
      Zeit für den Motor zum reagieren
    • rl_autoStop attr <Rollo-Device> rl_autoStop [0|1]
      Es muss kein Stop-Befehl ausgeführt werden, das Rollo stoppt von selbst.
    • rl_commandUp attr <Rollo-Device> rl_commandUp <string>
      Es werden bis zu 3 beliebige Befehle zum hochfahren ausgeführt
    • rl_commandDown attr <Rollo-Device> rl_commandDown <string>
      Es werden bis zu 3 beliebige Befehle zum runterfahren ausgeführt
    • rl_commandStop attr <Rollo-Device> rl_commandStop <string>
      Befehl der zum Stoppen ausgeführt wird, sofern nicht commandStopDown bzw. commandStopUp definiert sind
    • rl_commandStopDown attr <Rollo-Device> rl_commandStopDown <string>
      Befehl der zum stoppen ausgeführt wird, wenn der Rollo gerade herunterfährt. Wenn nicht definiert wird commandStop ausgeführt
    • rl_commandStopUp attr <Rollo-Device> rl_commandStopUp <string>
      Befehl der zum Stoppen ausgeführt wird,wenn der Rollo gerade hochfährt. Wenn nicht definiert wird commandStop ausgeführt
    • rl_blockMode attr <Rollo-Device> rl_blockMode [blocked|force-open|force-closed|only-up|only-down|half-up|half-down|none]
      wenn ich den Befehl blocked ausführe, dann wird aufgrund der blockMode-Art festgelegt wie mein Rollo reagieren soll:
      • blocked = Rollo lässt sich nicht mehr bewegen
      • force-open = bei einem beliebigen Fahrbefehl wird Rollo hochgefahren
      • force-closed = bei einem beliebigen Fahrbefehl wird Rollo runtergefahren
      • only-up = Befehle zum runterfahren werden ignoriert
      • only-down = Befehle zum hochfahren werden ignoriert
      • half-up = es werden nur die Positionen 50-100 angefahren, bei pct <50 wird pct 50% angefahren,
      • half-down = es werden nur die Positionen 0-50 angefahren, bei pct >50 wird pct 50 angefahren
      • none = block-Modus ist deaktiviert
    • automatic-enabled attr <Rollo-Device> automatic-enabled [on|off]
      Wenn auf off gestellt, haben Befehle über Modul ROLLO_Automatic keine Auswirkungen auf diesen Rollo
    • automatic-delay attr <Rollo-Device> automatic-delay <number>
      Dieses Attribut wird nur fuer die Modulerweiterung ROLLADEN_Automatic benoetigt.
      Hiermit kann einge Zeitverzoegerund fuer den Rolladen eingestellt werden, werden die Rolladen per Automatic heruntergefahren, so wird dieser um die angegebenen minuten spaeter heruntergefahren.
    • rl_forceDrive attr <Rollo-Device> rl_forceDrive [0|1]
      open/closed wird ausgeführt, auch wenn das ROLLO bereits in der Zielposition ist
    • rl_noSetPosBlocked attr <Rollo-Device> rl_noSetPosBlocked [0|1]
      Wenn deaktiviert, können Positionsn (pct) auch gesetzt werden, wenn der ROLLO geblockt ist. Nach dem unblocken wird die entsprechende Position angefahren.
    • disableattr <Rollo-Device> disable [0|1]
      Wenn deaktiviert, können keine set oder get commandos für den ROLLO ausgeführt werden.
    • readingFnAttributes

    ROOMMATE

    [EN DE]
      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


      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, GUEST oder PET 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.


        Status zu Hause mit anderen ROOMMATE, GUEST oder PET Devices synchronisieren

          Um jeden Statuswechsel zu synchronisieren, welcher _nicht_ dem erreichen oder verlassen des Hauses entspricht, kann das Attribut rr_passStateTo gesetzt werden.

          Bitte beachten, dass Mitbewohner mit dem aktuellen Status 'gone' oder 'none' (im Falle von Gästen) nicht beachtet werden.


        Zusammenhang zwischen Aufenthaltsort/Location und Anwesenheit/Presence

          Unter bestimmten Umständen hat der Wechsel des Readings 'location' auch einen Einfluss auf den tatsächlichen Status.

          Immer wenn eine Lokation mit dem Namen 'home' gesetzt wird, wird auch der Status auf 'home' gesetzt, sofern die Anwesenheit bis dahin noch auf 'absent' stand. Sofern das Attribut rr_locationHome gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'home' aus.

          Immer wenn eine Lokation mit dem Namen 'underway' gesetzt wird, wird auch der Status auf 'absent' gesetzt, sofern die Anwesenheit bis dahin noch auf 'present' stand. Sofern das Attribut rr_locationUnderway gesetzt wurde, so lösen alle dort angegebenen Lokationen einen Statuswechsel nach 'underway' aus. Diese Lokationen werden auch nicht in das Reading 'lastLocation' übertragen.

          Immer wenn eine Lokation mit dem Namen 'wayhome' gesetzt wird, wird das Reading 'wayhome' auf '1' gesetzt, sofern die Anwesenheit zu diesem Zeitpunkt 'absent' ist. Sofern das Attribut rr_locationWayhome gesetzt wurde, so führt das VERLASSEN einer dort aufgeführten Lokation ebenfalls dazu, dass das Reading 'wayhome' auf '1' gesetzt wird. Es gibt also 2 Möglichkeiten den Nach-Hause-Weg-Indikator zu beeinflussen (implizit und explizit).
          Die Ankunft zu Hause setzt den Wert von 'wayhome' zurück auf '0'.

          Wenn Sie auch das GEOFANCY Modul verwenden, können Sie das Reading 'location' ganz einfach über GEOFANCY Ereignisse aktualisieren lassen. Definieren Sie dazu einen NOTIFY-Trigger wie diesen:

          define n_rr_Manfred.location notify geofancy:currLoc_Manfred.* set rr_Manfred:FILTER=location!=$EVTPART1 location $EVTPART1

          Durch das Anlegen von Geofencing-Zonen mit den Namen 'home' und 'wayhome' in der iOS App werden zukünftig automatisch alle Statusänderungen wie oben beschrieben durchgeführt.


      Attribute
        • rr_autoGoneAfter - Anzahl der Stunden, nach denen sich der Status automatisch auf 'gone' ändert, wenn der aktuellen Status 'absent' ist; Standard ist 36 Stunden
        • rr_geofenceUUIDs - Mit Komma getrennte Liste von Geräte UUIDs, die ihren Standort über GEOFANCY aktualisieren. Vermeidet zusätzliche notify/DOIF/watchdog Geräte und kann als Ersatz für das GEOFANCY attribute devAlias dienen. (hier ehr als eine UUID/Device zu hinterlegen ist eher keine gute Idee da die Lokation dann womöglich anfängt zu springen)
        • rr_lang - überschreibt globale Spracheinstellung; hilft beim setzen von Device Attributen, um FHEMWEB Anzeigetext zu übersetzen
        • rr_locationHome - hiermit übereinstimmende Lokationen werden als zu Hause gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'home'
        • rr_locationUnderway - hiermit übereinstimmende Lokationen werden als unterwegs gewertet; der erste Eintrag wird für das Zusammenspiel bei Statusänderungen benutzt; mehrere Einträge durch Leerzeichen trennen; Standard ist 'underway'
        • rr_locationWayhome - das Verlassen einer Lokation, die hier aufgeführt ist, lässt das Reading 'wayhome' auf '1' setzen; mehrere Einträge durch Leerzeichen trennen; Standard ist "wayhome"
        • rr_locations - Liste der in FHEMWEB anzuzeigenden Lokationsauswahlliste in FHEMWEB; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
        • rr_moodDefault - die Stimmung, die nach Ankunft zu Hause oder nach dem Statuswechsel von 'awoken' auf 'home' gesetzt werden soll
        • rr_moodSleepy - die Stimmung, die nach Statuswechsel zu 'gotosleep' oder 'awoken' gesetzt werden soll
        • rr_moods - Liste von Stimmungen, wie sie in FHEMWEB angezeigt werden sollen; mehrere Einträge nur durch Komma trennen und KEINE Leerzeichen verwenden
        • rr_noDuration - deaktiviert die kontinuierliche, nicht Event-basierte Berechnung der Zeitspannen (siehe Readings durTimer*)
        • rr_passStateTo - synchronisiere den Status zu Hause mit anderen ROOMMATE, GUEST oder PET Devices; mehrere Devices durch Leerzeichen trennen
        • rr_passPresenceTo - synchronisiere die Anwesenheit mit anderen ROOMMATE, GUEST oder PET Devices; mehrere Devices durch Leerzeichen trennen
        • rr_presenceDevices - übernehmen des presence Status von einem anderen FHEM Device. Bei mehreren Devices diese mit Komma trennen, um ein Update des ROOMMATE Devices auszulösen, sobald ALLE Devices entweder absent oder present sind. Optional kann auch durch : abgetrennt ein Reading Name angegeben werden, ansonsten werden die Readings presence und state berücksichtigt.
        • rr_realname - wo immer ROOMMATE den richtigen Namen verwenden möchte nutzt es den Wert des Attributs alias oder group; Standard ist group
        • rr_showAllStates - die Status 'asleep' und 'awoken' sind normalerweise nicht immer sichtbar, um einen einfachen Zubettgeh-Prozess über das devStateIcon Attribut zu ermöglichen; Standard ist 0
        • rr_states - Liste aller in FHEMWEB angezeigter Status; Eintrage nur mit Komma trennen und KEINE Leerzeichen benutzen; nicht unterstützte Status führen zu Fehlern
        • rr_wakeupDevice - Referenz zu versklavten DUMMY Geräten, welche als Wecker benutzt werden (Teil von RESIDENTS Toolkit's wakeuptimer)
        • subType - Gibt einen bestimmten Typ eines Mitbewohner für das Device an. Dies wird bei der Berechnung des Home Alone Status berücksichtigt. Standard ist "adult"



      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_1Wire

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

    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: no, gültige Werte: no, yes

      • 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

    [EN DE]

      Robonect ist ein Nachr¨stmodul für automower, die auf der Husky-G3-Steuerung basieren. Es wurde von Fabian H. entwickelt und kann unter www.robonect.de bezogen werden. Dieses Modul gibt Euch Zugriff auf die nötigsten Kommandos. Dieses Modul benötigt libjson-perl. Bitte NICHT VERGESSEN zu installieren!

      Define

        define <name> Robonect <IP-Adresse oder Name>

        Mit gesetztem Winterschlaf wird die Kommunikation zum Mäher unterbunden.

        Die Zugangsinformationen können im Klartext bei der Definition angegeben werden. Wahlweise auch per Attribut. Standardmäßig wird der Status vom RObonect alle 90s aktualisiert.

        Beispiel:

              define myMower Robonect 192.168.13.5
        	  define myMower Robonect myMowersDNSName
              

      Set

        Set
        • auto
          Dies versetzt den Mäher in den Automatikmodus. Der Mäher reagiert nur auf den internen Timer, bis eine andere Betriebsart gewählt wird. Der Mäher kann mit Stop jederzeit angehalten werden. Es wird erst wieder begonnen zu mähen, wenn der Timer (wieder) ein aktives Fenster hat UND Start gesendet wurde.
        • manuell
          Dies versetzt den Mäher in den manuellen modus. Der interne Timer wird nicht beachtet. Der Mäher reagiert nur auf Start oder Stopp Befehle von FHEM.
        • home
          Dies schickt den Mäher direkt nach hause. Weiteres mähen wird verhindert, bis auf manuell oder auto umgeschalten wird.
        • feierabend
          Dies schickt den Mäher für den aktuellen Timerslot direkt nach hause. Beim nächsten aktiven Timerslot wird weitergemäht.
        • start
          Startet den Mähvorgang im manuellen Modus oder im Automatikmodus bei aktivem Zeitslot.
        • stop
          Beendet den Mähvorgang. Der Mäher fährt nicht nach Hause und beginnt nicht wieder zu mähen. Er bleibt stehen, bis die Batterie leer ist. Nur mit Bedacht benutzen!
        • maehauftrag
          Hiermit wird ein (einmaliger) Auftrag an den Mäher abgesetzt. Es können beliebig viele Parameter mitgegeben werden. So kann zum Beispiel der Modus nach dem Auftrag, sowie Start- oder Stoppzeit beeinflusst werden.
          Die Parameter müssen wie in der API des Robonect beschrieben lauten. Es erfolgt keine syntaktische Prüfung!

          Beispiel:
          Startzeit 15 Uhr, Dauer 120 Minuten, keinen Fernstartpunkt verwenden, keine Betriebsartenumschaltung nach Auftragsende
          			  set myMower maehauftrag start=15:00 duration=120 remotestart=0 after=4
          			
        • winterschlaf <on, off>
          Wenn aktiviert, wird das Pollen unterbunden. Empfiehlt sich für die Winterpause.
        • user <user>
          Alternativ zur Angabe per Argument kann per Set-Befehl der Benutzername zur Anmeldung am Robonect hier einmalig eingegeben werden. Er wird im Klartext in FhemUtils oder der DB gespeichert.
          Wenn angegeben, werden die Attribute zur Authentisierung ignoriert.
        • password <password>
          Alternativ zur Angabe per Argument kann per Set-Befehl das Passwort zur Anmeldung am Robonect hier einmalig eingegeben werden. Er wird im Klartext in FhemUtils oder der DB gespeichert.
          Wenn angegeben, werden die Attribute zur Authentisierung ignoriert.

      Get

        Get
        • status
          Holt den aktuellen Status des Mähers. Wird normalerweise nicht benötigt, da automatisch gepolled wird.
        • health
          Mit diesem Kommando können detailliertere Informationen vom Mäher gelesen werden. Beispielsweise sind einge Spannungen und Umweltbedingungen verfügbar.
          Es werden NICHT ALLE MÄHER UNTERSTÜTZT!!! Wenn das entsprechende Attribut gesetzt ist, wird health analog status gepolled. This one gets more detailed information - like voltages and temperatures. It is NOT SUPPORTED BY ALL MOWERS!!!
          If enabled via attribute, health is polled accordingly status.

      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 Robonect 192.168.5.1
        	  attr myMower basicAuth me:mySecret
              
              define myMower Robonect 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.

      useHealth

        Wenn dieses Attribut auf 1 gesetzt wird, wird der health-status analog dem normalen Status gepolled.
        Bitte beachtet, dass NICHT ALLE MÄHER UNTERSTÜTZT WERDEN! Wenn die Funktion nicht gegeben zu sein scheint, bitte den LAST_COMM_STATUS und das Logfile beachten.

    S7

    [EN DE]
          This module connects a SIEMENS PLC (S7,S5,SIEMENS Logo!). The TCP communication (S7, Siemens LOGO!) module is based on settimino (http://settimino.sourceforge.net). The serial Communication is based on a libnodave portation.

     

        You can found a german wiki here: httl://www.fhemwiki.de/wiki/S7



        For the communication the following modules have been implemented:
        • S7 … sets up the communication channel to the PLC
        • S7_ARead … Is used for reading integer Values from the PLC
        • S7_AWrite … Is used for write integer Values to the PLC
        • S7_DRead … Is used for read bits
        • S7_DWrite … Is used for writing bits.



        Reading work flow:



        The S7 module reads periodically the configured DB areas from the PLC and stores the data in an internal buffer. Then all reading client modules are informed. Each client module extracts his data and the corresponding readings are set. Writing work flow:



        At the S7 module you need to configure the PLC writing target. Also the S7 module holds a writing buffer. Which contains a master copy of the data needs to send.

     

        (Note: after configuration of the writing area a copy from the PLC is read and used as initial fill-up of the writing buffer)

     

        Note: The S7 module will send always the whole data block to the PLC. When data on the clients modules is set then the client module updates the internal writing buffer on the S7 module and triggers the writing to the PLC.



    Definedefine <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
        • receiveTimeoutMs
        • Intervall

     

        MaxMessageLength ... restricts the packet length if lower than the negioated PDULength. This could be used to increate the processing speed. 2 small packages may be smaler than one large package
        receiveTimeoutMs ... timeout in ms for TCP receiving packages. Default Value 500ms. 
        Intervall ... polling intervall in s 

    S7_ARead

    [EN DE]
      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

    [EN DE]
        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.

    Logo 7 / Logo 8

    For Logo7 / Logo 8 also a short notation is supportet:

    define <name> S7_AWrite {AI|AM|AQ|NAI|NAQ}X

    Set

    set <name> S7_AWrite <value>

        • value … an numeric value

    S7_Client

    [EN DE]
        abstract interface layer S7 / S5

    S7_DRead

    [EN DE]
      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

    [EN DE]
        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 in Seconds. Note out can also use trigger_length less than 1

    S7_S5Client

    [EN DE]
        low level interface to S5

    S7_S7Client

    [EN DE]
        low level interface to S7

    SCIVT

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

    SD_BELL

    [EN DE]
      Das Modul SD_BELL ist ein Universalmodul vom SIGNALduino für verschiedene Klingeln.

      Derzeit werden folgende Modelle untersützt:
      • wireless doorbell TCM 234759 Tchibo [Protokoll 15]
      • FreeTec PE-6946 [Protokoll 32]
      • Elro (Smartwares) Doorbell DB200 / 16 Melodien - unitec Modell:98156+98YK [Protokoll 41]
      • Pollin 551227 [Protokoll 42]
      • m-e doorbell für FG- und Basic-Serie [Protokoll 57]
      • Heidemann | Heidemann HX | VTX-BELL_Funkklingel [Protokoll 79]
      • Grothe Mistral SE 01.1 (40 bit), 03.1 (48 bit) [Protokoll 96]
      • GEA-028DB [Protokoll 98]
      • AVANTEK DB-LE [Protokoll 112]

      • Besonderheit Protokoll 41, es sendet 2 verschiedene Codes nacheinader!


      Define
        define <NAME> SD_BELL <Protokoll> <Hex-Adresse>

        Beispiele:
          define <NAME> SD_BELL 32 68C1DA
          define <NAME> SD_BELL 41 754485D3_08E8D593
          define <NAME> SD_BELL 79 A3C

      Set
        ring

      Get
        N/A

      Attribute
      • do_not_notify
      • ignore
      • IODev
      • model
        Das Attribut bezeichnet den Modelltyp Ihres Gerätes.
      • repeats
        Mit diesem Attribut kann angepasst werden, wie viele Wiederholungen gesendet werden. Standard ist 5.
        (Bei dem Model Heidemann_|_Heidemann_HX_|_VTX-BELL ist der Wert repeats fest auf 135 gesetzt unabhäning vom eingestellten Attribut!)


    SD_GT

    [EN DE]
      Das SD_GT-Modul dekodiert und sendet Nachrichten unter Verwendung des Protokolls vom Typ GT-9000. Dieses Protokoll wird von einer Vielzahl Fernbedienungen verwendet, die unter verschiedene Namen gehandelt werden. Die Nachrichten werden von einem SIGNALduino empfangen und gesendet.

      Folgende Modelle sind zur Zeit bekannt, die dieses Protokoll verwenden:

      • EASY HOME RCT DS1 CR-A 3725
      • Globaltronics GT-3000, GT-9000
      • OBI Emil Lux / CMI Art.Nr.: 315606
      • SilverCrest FSS B 20-A (3726) / 66538
      • Tec Star Modell 2335191R
      • uniTEC 48110 Funkfernschalterset (Receiver 55006x10, Transmitter: 50074)

      Neue Geräte werden in FHEM normalerweise per autocreate automatisch angelegt. Da das Protokoll eine Verschlüsselung nutzt, ist ein manuelles Einrichten praktisch nicht möglich.

      Das Einrichten der Fernbedienung erfolgt in einem Lernprozess. Nach dem Empfang von mindestens 5 Nachrichten innerhalb von 3 Minuten wird ein neues Gerät "SD_GT_LEARN" angelegt. Das Einrichten der einzelnen Tasten der Fernbedienung beginnt nach dem Empfang weiterer 6 verschiedener Nachrichten. Dieser Lernprozess wird mit dem Status "learned code 4, please press another button" signalisiert, wobei der Zähler die Anzahl der aktuell registrierten Codes anzeigt.
      Es müssen jetzt sämtliche Tasten der Fernbedienung mehrmals betätigt werden. Bei erfolgreicher Dekodierung der Funksignale werden dabei die einzelnen Tasten angelegt.

      Das Anlernen der Fernbedienung ist beendet, wenn alle Tastenebenen (A, B, C, D und evtl. all) angelegt sind und jeweils die Befehle "on" und "off" angezeigt werden. Bei jedem Gerät müssen die Readings "CodesOn" und "CodesOff" mit jeweils mindestens einem Code eingerichtet sein. Ohne diese gelernten Codes ist kein Senden möglich.
      Das Gerät "SD_GT_LEARN" wird jetzt nicht mehr benötigt und kann gelöscht werden.

      Sollen mehrere Fernbedienungen angelernt werden, muss dieser Prozess für jede Fernbedienung getrennt durchgeführt werden. Das Gerät "SD_GT_LEARN" muss jeweils vor Beginn des Anlernens einer neuen Fernbedienung gelöscht werden.

      Attribute:

      • IODev - Setzt das IO oder das physische Device, welches zum Senden der Signale an dieses logische Device verwendet werden soll.
      • disableSetAllFunction - Deaktiviert die Funktion der Taste "all" um alle Geräte zu schalten.
      • do_not_notify - Deaktiviert die FileLog/Notify/Inform-Benachrichtigungen für ein Gerät.
      • ignore - Ignoriert das Gerät, z.b. wenn es dem Nachbarn gehört. Das Gerät löst keine FileLogs/Benachrichtigungen aus.
      • repeats - Anzahl Wiederholungen der Sendebefehle
      • showtime - Wird im FHEMWEB verwendet, um die Zeit der letzten Aktivität anstelle des Status in der Gesamtansicht anzuzeigen.


      Readings:

      • CodesOff: ein bis vier hexadezimale Codes für "off", die angelernt wurden und zum Senden verwendet werden
      • CodesOn: ein bis vier hexadezimale Codes für "on", die angelernt wurden und zum Senden verwendet werden
      • SendCode: der zuletzt gesendete Code
      • SystemCode: Systemcode hexadezimal, bei allen Tasten einer Fernbedienung gleich
      • SystemCodeDec: Systemcode in dezimaler Darstellng
      • Version: Version der verwendeten Verschlüsselung
      • state: Zustand, "on" oder "off"

    SD_RSL

    [EN DE]
    Das SD_RSL-Modul decodiert und erstellt Conrad-RSL-Nachrichten, die vom SIGNALduino gesendet bzw. empfangen werden.
    Beim Verwendung von Autocreate wird bei der Taste All anstatt channel und button = 4 "<code>_ALL" angelegt, z.B. RSL_74A400_ALL

    Define

      define <name> SD_RSL <code>_<channel>[_<button>] <optional IODEV>

      <name> ist ein Name, der dem Gerät zugewiesen ist. Zur besseren Übersicht wird empfohlen, einen Namen in dieser Form zu verwenden "RSL_B1A800_1_2"

      <code> Der Code ist 00000-FFFFFF

      <channel> Der Kanal ist 1-4 oder ALL

      <button> Der Knopf ist 1-4

    Set
      set <[on|off|toggle]>

      set <[on-for-timer|off-for-timer|on-till|off-till|blink|intervals]>
      Schaltet das Gerät für einen bestimmten Zeitraum. Weitere Infos hierzu unter set extensions.



    Get
      N/A

    Attribute
    • IODev
    • do_not_notify
    • eventMap
    • ignore
    • readingFnAttributes
    • RSLrepetition
      Stellen Sie die Wiederholungen für das Senden des Signals ein.

    SD_UT

    [EN DE]
      Das Modul SD_UT ist ein Universalmodul vom SIGNALduino für Geräte oder Sensoren.
      Nach dem ersten Anlegen des Gerätes unknown_please_select_model muss der User das Gerät selbst definieren mittels des Attributes model.
      Bei noch nicht unterstützen Geräten können mit dem unknown_please_select_model Gerät Bitdaten gesammelt werden.

      Hinweis: Sobald das Attribut model eines definierten Gerätes verstellt oder gelöscht wird, so legt das Modul ein Gerät des gewählten Typs neu an und mit Durchlauf einer neuen Nachricht wird das aktuelle Gerät gelöscht. Das Betreiben von Geräten des gleichen oder unterschiedliches Typs mit gleichem deviceCode führt zu Fehlern. BITTE achte stets auf einen unterschiedlichen deviceCode.

      Es werden bisher folgende Geräte unterstützt:
      • AC114-01 Fernbedienung   (Modulmodel: AC114_01, Protokoll 56)
      • Atlantic Security Sensoren   (Modulmodel: MD-2003R, MD-2018R,MD-210R, Protokoll 91|91.1)
           Hinweis: Das Model MD_230R (water) wird aufgrund gleicher Hardwarekennung als MD-2018R erkannt!
      • BeSmart S4 Fernbedienung   (Modulmodel: BeSmart_S4, Protokoll 78)
      • BF-301 Fernbedienung   (Modulmodel: BF_301, Protokoll 105)
      • BOSCH Deckenlüfter   (Modulmodel: SF01_01319004_Typ2, Protokoll 86)
      • Busch-Transcontrol HF - Handsender 6861   (Modulmodel: TC6861, Protokoll 121)
      • CAME Drehtor Antrieb   (Modulmodel: CAME_TOP_432EV, Protokoll 86)
      • ChiliTec LED Christbaumkerzen   (Modulmodel: Chilitec_22640, Protokoll 14)
      • DC-1961-TG - Fernbedienung mit 12 Tasten für Deckenventilator mit Beleuchtung   (Modulmodel: DC_1961_TG, Protokoll 20)
      • ESTO Deckenlampe   (Modulmodel: KL_RF01, Protokoll 93)
      • Fernbedienung mit 4 Tasten für Diesel-Heizung    (Modulmodel: RCnoName20, Protokoll 20)
      • Fernbedienung mit 10 Tasten für Leroy Deckenventilator   (Modulmodel: RCnoName20_10, Protokoll 20)
      • Fernbedienung mit 12 Tasten für Deckenventilator   (Modulmodel: RCnoName128, Protokoll 128)
      • Fernbedienung mit 14 Tasten für Deckenventilator   (Modulmodel: RCnoName127, Protokoll 127)
      • Hoermann HS1-868-BS   (Modulmodel: HS1_868_BS, Protokoll 69)
      • Hoermann HSM4   (Modulmodel: HSM4, Protokoll 69)
      • Krinner LUMIX Christbaumkerzen   (Modulmodel: Krinner_LUMIX, Protokol 92)
      • LED_XM21_0 Christbaumkerzen   (Modulmodel: LED_XM21_0, Protokol 76)
      • TR-502MSV (LIDL, LIBRA, MANDOLYN, QUIGG), kompatibel GT-7008BS, GT-FSI-04, DMV-7008S, Powerfix RCB-I 3600   (Modulmodel: TR_502MSV, Protokoll 34)
      • TR401 (Well-Light, Fernbedienung 4 Tasten)   (Modulmodel: TR401, Protokoll 114)
      • Manax RCS250   (Modulmodel: RC_10, Protokoll 90)
      • Medion OR28V   (Modulmodel: OR28V, Protokoll 68)
      • Meikee Fernbedienungen (Protokoll 118)
        • Meikee, 21 Tasten, z.B. für Solar Flood Lights - Modulmodel: Meikee_21
        • Meikee, 24 Tasten, z.B. für RGB LED Wallwasher Light - Modulmodel: Meikee_24
      • mumbi AFS300-s (Fernbedienung RC-10, Funksteckdose RCS-22GS)   (Modulmodel: RC_10, Protokoll 90)
      • Momento (Fernbedienung für digitalen Bilderrahmen)   (Modulmodel: Momento, Protokoll 97)
      • NAVARIS Funk-Licht-Schalter Model No.: 44344.04   (Modulmodel: Navaris, Protokoll 99)
      • NEFF oder Refsta Topdraft (Tecnowind) Dunstabzugshaube   (Modulmodel: SF01_01319004, Protokoll 86)
      • Novy Cloud 230 Dunstabzugshaube   (Modulmodel: Novy_840039, Protokoll 86)
      • Novy Pureline 6830 Dunstabzugshaube   (Modulmodel: Novy_840029, Protokoll 86)
      • QUIGG DMV-7000   (Modulmodel: QUIGG_DMV, Protokoll 34)
      • SA-434-1 mini 923301   (Modulmodel: SA_434_1_mini, Protokoll 81)
      • Techmar Garden Lights    (Modulmodel: Techmar, Protokoll 95)
      • Tedsen Teletaster (Protokoll 46):
        • SKX1xx, 1 Taste - Modulmodel: Tedsen_SKX1xx
        • SKX2xx, 2 Tasten (GEIGER_GF0x01) - Modulmodel: Tedsen_SKX2xx
        • SKX4xx, 4 Tasten (GEIGER_GF0x02) - Modulmodel: Tedsen_SKX4xx
        • SKX6xx, 6 Tasten (GEIGER_GF0x03) - Modulmodel: Tedsen_SKX6xx
      • unitec Magnetkontakt 47031 (für Alarmanlagen Unitec 47121, Unitec 47125, Friedland)   (Modulmodel: Unitec_47031, Protokoll 30)
      • Visivo Fernbedienung für Motorleinwand   (Modulmodel: Visivo, Protokoll 24)
      • Westinghouse Deckenventilator (Fernbedienung, 5 Tasten ohne SET)   (Modulmodel: Buttons_five, Protokoll 29)
      • Westinghouse Deckenventilator (Fernbedienung, 6 Tasten mit Dimmer)   (Modulmodel: Buttons_six, Protokoll 29)
      • Westinghouse Delancey Deckenventilator (Fernbedienung, 9 Tasten mit SET)   (Modulmodel: RH787T, Protokoll 83)
      • Westinghouse Deckenventilator Bendan (Fernbedienung TR60C-1, Touch screen)   (Modulmodel: TR60C1, Protokoll 104)
      • xavax 00111939 (Fernbedienung, 10 Tasten)   (Modulmodel: xavax, Protokoll 26)


      Define
        define <NAME> SD_UT <model> <Hex-Adresse>

        Beispiele:
          define <NAME> SD_UT RH787T A
          define <NAME> SD_UT SA_434_1_mini ffd
          define <NAME> SD_UT unknown


      Set
        Je nach Gerät sind unterschiedliche Sendebefehle verfügbar.

        BOSCH (SF01_01319004_Typ2), NEFF / Refsta Topdraft (SF01_01319004)
        • delay: Taste 1 auf der Fernbedienung
        • interval: Taste 2 auf der Fernbedienung
        • light_on_off: Taste 3 auf der Fernbedienung
        • minus: Taste 4 auf der Fernbedienung
        • plus: Taste 5 auf der Fernbedienung

        ChiliTec LED Christbaumkerzen
        • power_on: Taste ON auf der Fernbedienung
        • power_off: Taste OFF auf der Fernbedienung
        • flickering_slowly: Taste SL auf der Fernbedienung
        • flickering_fast: Taste SF auf der Fernbedienung
        • brightness_minus: Taste - auf der Fernbedienung
        • brightness_plus: Taste + auf der Fernbedienung

        ESTO KL_RF01
        • on: Taste ON auf der Fernbedienung
        • off: Taste OFF auf der Fernbedienung
        • alternating_full_luminosity: Taste ABWECHSELNDE_LEUCHTKRAFT auf der Fernbedienung
        • full_brightness: Taste VOLLE_HELLIGKEIT auf der Fernbedienung
        • light_color_warm_white: Taste LICHTFARBE_WARMWEIß auf der Fernbedienung
        • light_color_cold_white: Taste LICHTFARBE_KALTWEIß auf der Fernbedienung
        • dimup: Taste DIMUP auf der Fernbedienung
        • dimdown: Taste DIMDOWN auf der Fernbedienung
        • night_mode: Taste MOND auf der Fernbedienung

        LED_XM21_0 Christbaumkerzen
        • on: Taste I auf der Fernbedienung
        • off: Taste O auf der Fernbedienung

        Fernbedienungen SA-434-1 mini 923301, Hoermann HS1-868-BS, Tedsen_SKX1xx
        • send: Tastendruck (Sendet immer den gleichen Befehl, auch wenn der Benutzer einen anderen Set-Befehl via Konsole sendet.)

        Hoermann HSM4 (Fernbedienung mit 4 Tasten)
        • button_1: Taste 1 auf der Fernbedienung
        • button_2: Taste 2 auf der Fernbedienung
        • button_3: Taste 3 auf der Fernbedienung
        • button_4: Taste 4 auf der Fernbedienung

        Techmar Garden Lights (Fernbedienung mit 10 Tasten)
        • Group_1 ... Group_9: Gruppe 1 bis 9, jeweils ein und aus
        • All_on / All_off: Alle Gruppen ein / aus

        Westinghouse Deckenventilator (Fernbedienung mit 5 oder 6 Tasten)
        • 1_fan_low_speed: Taste 1/LOW auf der Fernbedienung
        • 2_fan_medium_speed: Taste 2/MED auf der Fernbedienung
        • 3_fan_high_speed: Taste 3/HI auf der Fernbedienung
        • fan_off: Ventilator ausschalten
        • light_on_off: Licht ein-/ausschalten
        • light_dimm: Licht dimmen

        Westinghouse Delancey Deckenventilator (Fernbedienung RH787T mit 9 Tasten + SET)
        • 1_fan_minimum_speed: Taste I auf der Fernbedienung
        • 2_fan_low_speed: Taste II auf der Fernbedienung
        • 3_fan_medium_low_speed: Taste III auf der Fernbedienung
        • 4_fan_medium_speed: Taste IV auf der Fernbedienung
        • 5_fan_medium_high_speed: Taste V auf der Fernbedienung
        • 6_fan_high_speed: Taste VI auf der Fernbedienung
        • fan_off: Ventilator ausschalten
        • fan_direction: Drehrichtung festlegen
        • light_on_off: Licht ein-/ausschalten
        • set: Taste SET in der Fernbedienung


      Get
        N/A


      Attribute
      • do_not_notify
      • ignore
      • IODev
      • model
        Diese Attribut bezeichnet den Modelltyp Ihres Gerätes (AC114_01B, BeSmart_S4, Buttons_five, Buttons_six, CAME_TOP_432EV, Chilitec_22640, DC_1961_TG, HS1-868-BS, HSM4, KL_RF01, LED_XM21_0, Meikee_21, Meikee_24, Momento, Navaris, Novy_840029, Novy_840039, OR28V, QUIGG_DMV, RC_10, RH787T, SA_434_1_mini, SF01_01319004, TC6861, TR60C1, Tedsen_SKX1xx, Tedsen_SKX2xx, Tedsen_SKX4xx, Tedsen_SKX6xx, TR_502MSV, Unitec_47031, unknown).
        Bei Änderung des Attributes wird ein neues Gerät mittels autocreate erzeugt. Autocreate muss dazu aktiviert sein.
      • repeats
        Mit diesem Attribut kann angepasst werden, wie viele Wiederholungen gesendet werden. Standard ist 5. Erlaubte Werte 1-99.
      • UTclock
        Mit diesem Attribut kann der Basistakt beim Senden eingestellt werden. Einen Standardwert gibt es nicht.
        Ausnahme: Das Model Novy_840039 hat einen voreingestellten Basistakt von 375. Auch diesen kann man mit dem Attribut individuell anpassen.
      • UTfrequency
        Mit diesem Attribut kann eine individuelle Sendefrequenz eingestellt werden. Ist dieses Attribut nicht gesetzt, wird die Sendefrequenz des IO Devices (z.B. Signalduino) verwendet. Erlaubte Werte 300.00-999.99 Mhz.


      Generierte Readings der Modelle
        AC114-01, BeSmart_S4, Buttons_five, Buttons_six, CAME_TOP_432EV, Chilitec_22640, HSM4, KL_RF01, LED_XM21_0, Meikee_xx, Momento, Novy_840029, Novy_840039, OR28V, QUIGG_DMV, RC_10, RH787T, SF01_01319004, SF01_01319004_Typ2, TR401, TR_502MSV, Visivo
        • deviceCode: GeräteCode des Systemes
        • LastAction: Zuletzt ausgeführte Aktion des Gerätes (receive für Kommando empfangen, send für Kommando gesendet).
        • state: Aktueller Zustand des Gerätes

        MD_2003R (gas), MD_2018R (vibration), MD_210R (door/windows switch), MD_230R (water)
        • contact: Zustand des internen Alarmkontaktes.
        • deviceTyp: Modeltyp des Sensors.
        • sabotage: Zustand des Sabotagekontaktes.
        • state: Zustand des Gerätes.

        HS1-868-BS, SA_434_1_mini, Tedsen_SKX1, Tedsen_SKX2xx, Tedsen_SKX4xx, Tedsen_SKX6xx
        • LastAction: Zuletzt ausgeführte Aktion des Gerätes (receive für Kommando empfangen, send für Kommando gesendet).
        • state: Aktueller Zustand des Gerätes

        Unitec_47031
        • System-Housecode: Eingestellter System- bzw. Hauscode des Gerätes
        • state: Zustand des Kontaktes (vorbereitet, unbestätigt)
        • Zone: Eingestellte Zone des Gerätes
        • Usersystem: Bezeichnung Systemes

    SD_WS

    [EN DE]
      Das Modul SD_WS verarbeitet die von einem IO-Gerät (CUL, CUN, SIGNALDuino, SignalESP etc.) empfangenen Nachrichten verschiedener Umwelt-Sensoren.

      Unterstützte Modelle:

      • ADE WS1907 Wetterstation mit Regenmesser
      • Atech Wetterstation
      • BBQ Temperatur Sensor GT-TMBBQ-01s (Sender), GT-TMBBQ-01e (Empfaenger)
      • Bresser 5-in-1, 6-in-1 und 7-in-1 Comfort Wetter Center, 7009994, Profi Regenmesser, Temeo
      • Conrad S522
      • EuroChron EFTH-800, EFS-3110A (Temperatur- und Feuchtigkeitssensor)
      • Fine Offset WH51, aka ECOWITT WH51, aka Froggit DP100, aka MISOL/1 (Bodenfeuchtesensor)
      • Fine Offset WH57, aka Froggit DP60, aka Ambient Weather WH31L (Gewittersensor)
      • Fine Offset WH31, aka Ambient Weather WH31E Thermo-Hygrometer Sensor (Temperatur- und Feuchtemsser)
      • Fine Offset WH40, aka Ambient Weather WH40, aka ecowitt WH40 (rain sensor)
      • Fody E42 (Temperatur- und Feuchtigkeitssensor)
      • Inkbird IBS-P01R Pool Thermometer, ITH-20R
      • Kabelloses Grillthermometer, Modellname: GFGT 433 B1
      • NC-3911, NC-3912 digitales Kuehl- und Gefrierschrank-Thermometer
      • Opus XT300
      • PV-8644 infactory Poolthermometer
      • Regenmesser DROP TFA 47.3005.01 mit Regensensor TFA 30.3233.01
      • Renkforce E0001PA
      • Sainlogic Wetterstationen FT-0835, FT0300, FT-0310, FT020T, WS019T
      • TECVANCE TV-4848
      • Temperatur-Sensor FT007T, FT007TP, F007T, F007TP
      • Temperatur/Feuchte-Sensor FT007TH, F007TH
      • TS-FT002 Wassertank Füllstandswächter mit Temperatur
      • TX-EZ6 fuer Wetterstation TZS First Austria
      • WH2, WH2A (TFA Dostmann/Wertheim 30.3157 (Deutschland), Agimex Rosenborg 66796 (Denmark), ClimeMET CM9088 (UK)
      • Wetterstation Auriol IAN 283582 Version 06/2017 (Lidl), Modell-Nr.: HG02832D
      • Wetterstation Auriol AHFL 433 B2, IAN 314695 (Lidl)
      • Wetterstationen und Sensoren TFA 30.3151, 30.3152, 30.3153, 30.3157, 30.3200, 30.3208.02, 30.3221.02, 30.3222.02, 30.3228.02, 30.3229.02, 30.3233.01, 30.3251.10, 35.1077.54.S2, 35.1140.01


      Define

        Neu empfangene Sensoren werden in FHEM normalerweise per autocreate automatisch angelegt.
        Sensoren, die eine Kanalnummer unterstützen, werden z.B. in folgender Form angelegt:
        SD_WS_33_1
        Dabei kennzeichnet die 1 das der Sensor mit Kanal 1 angelegt wurde. Sensoren, die keine Kanalauswahl bieten, werden ohne Kanalnummer angelegt, wie z.B.:
        SD_WS_108
        Sollten mehrere Sensoren ohne oder mit gleicher Kanalnummer empfangen werden, so kann man beim SIGNALduino das Attribut "longids" setzen. Jeder Sensor bekommt dann eine eindeutige Ident zugeordnet, die sich allerdings beim Batteriewechsel oder Neustart ändern kann.
        Es ist auch möglich, die Geräte manuell mit folgendem Befehl einzurichten:

        define <name> SD_WS <code>

        <code> ist der Kanal oder eine individuelle Ident, mit dem der Sensor identifiziert wird.


      Generierte Readings:

        (verschieden, je nach Typ des Sensors)
      • adc (Roh-Wert vom Analog-Digital-Wandler)
      • batteryChanged (1)
      • batteryState (low oder ok)
      • batteryVoltage (Batteriespannung in Volt)
      • batteryPercent (Batteriestand in %)
      • brightness (Helligkeit in kLux)
      • channel (Sensor-Kanal)
      • distance (Entfernung in cm (Protokoll 111) oder km (Protokoll 116)
      • humidity (Luft-/Bodenfeuchte, 1-100 %)
      • humidityTrend (Trend Luftfeuchte, gleichbleibend, steigend, fallend)
      • rain (Regenmenge l/m²))
      • rain_total (Regenmenge l/m²))
      • sendmode (Sendemodus, automatic oder manuell mittels Taster am Sender)
      • state (T: H: W: R:)
      • temperature (Temperatur °C)
      • temperatureTrend (Trend Temperatur gleichbleibend, steigend, fallend)
      • type (Sensortypen)
      • uv (Ultraviolettstrahlung)
      • windDirectionDegree (Windrichtung, Grad)
      • windDirectionText (Windrichtung, N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW)
      • windGust (Windboe, m/s)
      • windSpeed (Windgeschwindigkeit, m/s)


      Attribute

      • do_not_notify

      • ignore

      • max-deviation-hum
        (Standard: 1, erlaubte Werte: 1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50)
        Maximal erlaubte Abweichung der gemessenen Feuchte zum vorhergehenden Wert in Prozent.
        Da viele der in dem Modul behandelten Sensoren keine Checksummen o.ä. senden, kann es leicht zum Empfang von unplausiblen Werten kommen. Um diese abzufangen, kann eine maximale Abweichung zum letzten korrekt empfangenen Wert festgelegt werden. Größere Abweichungen werden dann ignoriert und führen zu einer Fehlermeldung im Logfile, wie z.B. dieser:
        SD_WS_TH_84 ERROR - Hum diff too large (old 60, new 68, diff 8)
        Zusätzlich zum eingestellten Wert wird ein von der Differenz der Empfangszeiten abhängiger Wert addiert. Dieser beträgt 1.0 % relative Feuchte pro Minute. Das bedeutet z.B. wenn eine Differenz von 8 eingestellt ist und der zeitliche Abstand des Empfangs der Nachrichten beträgt 3 Minuten, ist die maximal erlaubte Differenz 11.
        Anstelle der Attribute max-deviation-hum und max-deviation-temp kann bei gutem Empfang des Sensors auch das Attribut doubleMsgCheck_IDs des SIGNALduino verwendet werden. Dabei wird ein Update der Readings erst ausgeführt, wenn mindestens zweimal die gleichen Werte empfangen wurden.

      • max-deviation-temp
        (Standard: 1, erlaubte Werte: 1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50)
        Maximal erlaubte Abweichung der gemessenen Temperatur zum vorhergehenden Wert in Kelvin.
        Erklärung siehe Attribut "max-deviation-hum".

      • model
        (Standard: other, zur Zeit unterstützte Sensoren: E0001PA, S522, TFA_30.3251.10, TX-EZ6)
        Die Sensoren der "SD_WS_33 - Reihe" verwenden unterschiedliche Positionen für das Batterie-Bit und unterstützen verschiedene Readings. Sollte das Batterie-Bit falsch erkannt werden (low statt ok), so kann man mit der Modelauswahl des Sensors das evtl. anpassen.
        Bisher sind 3 Varianten bekannt. Alle Sensoren werden durch Autocreate als Model "other" angelegt. Empfangen Sie einen Sensor vom Typ Conrad S522, Renkforce E0001PA oder TX-EZ6, so stellen Sie das jeweilige Modell für die richtige Verarbeitung der Readings ein.
        Protokoll 85 (SD_WS_85_THW) dekodiert zwei verschiedene Sensortypen: TFA 30.3222.02 (Thermo-Hygro-Wind) und 30.3251.10 (Wind). Damit auch die Windrichtung bei dem Sensor TFA 30.3251.10 angezeigt wird, muss das Attribut auf diesen Wert "TFA_30.3251.10" gesetzt werden.

      • readingFnAttributes

      • showtime


      Set

      • replaceBatteryForSec
        (Nur verfügbar bei Geräten, bei deren SIGNALduinos das Attribut "longids" aktiviert ist.)

        replaceBatteryForSec <Sekunden>

        Versetzt das Gerät für <Sekunden> Sekunden in den Batteriewechselmodus. Die erste unbekannte Adresse mit gleichem Protokoll, die empfangen wird, ersetzt die aktuelle Geräteadresse.

    SD_WS07

    [EN DE]
      Das SD_WS07 Modul verarbeitet von einem IO Geraet (SIGNALDuino, Signal-ESP, etc.) empfangene Nachrichten von Temperatur-/Feuchte-Sensoren.

      Unterstützte Modelle:
      • Auriol AFW 2 A1, IAN: 297514
      • Eurochon EAS800z
      • FreeTec Aussenmodul fuer Wetterstation NC-7344
      • Mebus HQ7312-2
      • Technoline WS6750/TX70DTH
      • TFA 30320902

      Neu empfangene Sensoren werden in FHEM per autocreate angelegt.

      Das Modul schreibt in das Logfile ab verbose 4 Meldungen, wenn die dekodierten Werte nicht plausibel sind. Z.B. Feuchtewerte über 100%.

      Define
        Die empfangenen Sensoren werden automatisch angelegt.
        Die ID der angelegten Sensoren ist _, oder wenn das Attribut longid gesetzt ist, und eine Kombination aus Bits, welche der Sensor beim Einschalten zufaellig vergibt und dem Kanal.

      Generierte Readings:
      • state: (T: H:)
      • temperature: (°C)
      • humidity: (Luftfeuchte (1-100)
      • batteryState: (low oder ok)
      • channel: (Der Sensor Kanal)

      Attribute
      • offset-temp
        Damit kann die Temperatur korrigiert werden. z.B. mit 10 wird eine um 10 Grad höhere Temperatur angezeigt.
      • offset-hum
        Damit kann die Luftfeuchtigkeit korrigiert werden.
      • do_not_notify
      • ignore
      • max-deviation-hum (Default:1, erlaubte Werte: 1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50)
        Maximal erlaubte Abweichung der gemessenen Feuchte zum vorhergehenden Wert in Prozent.
        Da diese Sensoren keine Checksummen o.ä. senden, kann es leicht zum Empfang von unplausiblen Werten kommen. Um diese abzufangen, kann eine maximale Abweichung zum letzten korrekt empfangenen Wert festgelegt werden. Größere Abweichungen werden dann ignoriert und führen zu einer Fehlermeldung im Logfile, wie z.B. dieser:
        SD_WS07_TH_1 ERROR - Hum diff too large (old 60, new 68, diff 8)
        Zusätzlich zum eingestellten Wert wird ein von der Differenz der Empfangszeiten abhängiger Wert addiert. Dieser beträgt 1.0 % relative Feuchte pro Minute. Das bedeutet z.B. wenn eine Differenz von 8 eingestellt ist und der zeitliche Abstand des Empfangs der Nachrichten beträgt 3 Minuten, ist die maximal erlaubte Differenz 11.
      • max-deviation-temp (Default:1, erlaubte Werte: 1,2,3,4,5,6,7,8,9,10,15,20,25,30,35,40,45,50)
        Maximal erlaubte Abweichung der gemessenen Temperatur zum vorhergehenden Wert in Kelvin.
        siehe max-deviation-hum
      • showtime
      • readingFnAttributes

        Anstelle der Attribute max-deviation-hum und max-deviation-temp kann bei gutem Empfang des Sensors auch das Attribut doubleMsgCheck_IDs des SIGNALduino verwendet werden. Dabei wird ein Update der Readings erst ausgeführt, wenn mindestens zweimal die gleichen Werte empfangen wurden.

      Set
        N/A

      Get
        N/A

    SD_WS09

    [EN DE]
      Das SD_WS09 Module verarbeitet von einem IO Gerät (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur-Sensoren.

      Perl-Module Digest::CRC / Math::Trig erforderlich.
      • cpan install Digest::CRC oder auch
        sudo apt-get install libdigest-crc-perl
      • cpan install Math::Trig


      Unterstütze Modelle:
      • WS-0101 --> Model: WH1080
      • TFA 30.3189 / WH1080 --> Model: WH1080
      • 1073 (WS1080) --> Model: WH1080
      • WH2315 --> Model: WH1080
      • WH3080 --> Model: WH1080
      • CTW600 --> Model: CTW600

      Neu empfangene Sensoren werden in FHEM per autocreate angelegt.


      Define
        Die empfangenen Sensoren werden automatisch angelegt.
        Die ID der angelegten Sensoren wird nach jedem Batteriewechsel geändert, welche der Sensor beim Einschalten zufällig vergibt.
        CRC Checksumme wird zur Zeit noch nicht überprüft, deshalb werden Sensoren bei denen die Luftfeuchte < 0 oder > 100 ist, nicht angelegt.

      Set
        N/A

      Get
        N/A


      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

      • Unit_of_Wind
        Hiermit wird der Einheit eingestellt und im State die entsprechenden Werte + Einheit angezeigt.
        m/s,km/h,ft/s,mph,bft,knot

      • WindDirAverageTime
        default ist 600s, Zeitspanne die für die Berechung berücksichtig werden soll

      • WindDirAverageMinSpeed
        da bei sehr geringer Windgeschwindigkeit die Windrichtung üblicherweise nicht eindeutig ist, kann mit minspeed ein Schwellwert angegeben werden Ist die (gewichtetete) mittlere Geschwindigkeit < minspeed wird undef zurück geliefert

      • WindDirAverageDecay
        1 -> alle Werte werden gleich gewichtet
        0 -> nur der aktuelle Wert wird verwendet.
        in der Praxis wird man Werte so um 0.75 nehmen

      • WS09_CRCAUS
        Wird im Signalduino-Modul (00_SIGNALduino.pm) gesetzt
        0: CRC-Prüfung bei WH1080 CRC-Summe = 0
        2: CRC-Summe = 49 (x031) bei WH1080 wird als OK verarbeitet


      Generierte Readings:
      • State (T: H: Ws: Wg: Wd: R: ) temperature, humidity, windSpeed, windGuest, Einheit, windDirection, Rain
      • Temperature (°C)
      • Humidity: (1-100 wenn verfügbar)
      • Battery: (low or ok)
      • ID: (ID-Nummer wenn verfügbar)
      • windSpeed/windgust (Einheit siehe Unit_of_Wind) und windDirection (N-O-S-W)
      • Rain (mm)
      • windDirectionAverage Als Ergebnis wird die Windrichtung zurück geliefert, die aus dem aktuellen und vergangenen Werten über eine Art exponentiellen Mittelwert berechnet werden. Dabei wird zusätzlich die jeweilige Windgeschwindigkeit mit berücksichtigt (höhere Geschwindigkeit bedeutet höhere Gewichtung).

      • WH2315 / WH3080:
      • UV Index
      • Lux

    BBQ Sensors protocol #47

    [EN DE]
      Das SD_WS_Maverick Module verarbeitet von einem IO Geraet (CUL, CUN, SIGNALDuino, etc.) empfangene Nachrichten von Temperatur-Sensoren.

      Unterstützte Modelle:
      • Maverick 732/733
      • TFA 14.1504 (Küchen-Chef Funk-Bratenthermometer)

      Neu empfangene Sensoren werden in FHEM per autocreate angelegt (sofern autocreate in global aktiv ist).

      Define
        Die empfangenen Sensoren werden automatisch angelegt.
        Da das Maverick bei jedem Start eine neue zufällige ID erzeugt kann das Gerät nicht mit dem fhem-device gekoppelt werden. Das bedeutet, dass es nicht möglich ist in fhem zwei Mavericks parallel zu betreiben.

      Generierte Readings:
      • State (Food: BBQ: )
      • temp-food (°C)
      • temp-bbq (°C)
      • Sensor-1-food_state (connected, disconnected oder inactive)
      • Sensor-2-bbq_state (connected, disconnected oder inactive)
      • messageType (sync bei Start oder resync, sonst normal)
      • checksum (experimentell)

      Attribute
      • inactivityinterval
        Das Interval nach dem Sensor-1-food_state und/oder Sensor-2-bbq_state auf inactive gesetzt werden, wenn keine Signale mehr empfangen werden. Hilfreich zum erkennen einer leeren Batterie oder eines defekten Termperaturfühlers.
        default: 360
      • do_not_notify
      • ignore
      • showtime
      • readingFnAttributes
      Set
        N/A

      Parse
        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

    [EN DE]
    Der SIGNALduino ist basierend auf einer Idee von "mdorenka" und veröffentlicht im FHEM Forum.
    Mit der OpenSource-Firmware (SIGNALDuino und SIGNALESP) ist dieser fähig zum Empfangen und Senden verschiedener Protokolle auf 433 und 868 Mhz.

    Folgende Geräte werden zur Zeit unterstützt:

    Funk-Schalter
    • ITv1 & ITv3/Elro und andere Marken mit dem pt2263-Chip oder welche das arctech Protokoll nutzen --> IT.pm
      Das ITv1 Protokoll benutzt einen Standard ITclock von 250 und es kann vorkommen, das in dem IT-Modul das Attribut "ITclock" zu setzen ist.
    • ELV FS10 -> 10_FS10
    • ELV FS20 -> 10_FS20
    Temperatur-, Luftfeuchtigkeits-, Luftdruck-, Helligkeits-, Regen- und Windsensoren
    • CTW600, WH1080 -> 14_SD_WS09.pm
    • ELV WS-2000, La Crosse WS-7000 -> 14_CUL_WS
    • Eurochon EAS 800z -> 14_SD_WS07.pm
    • FreeTec Aussenmodul NC-7344 -> 14_SD_WS07.pm
    • Hama TS33C, Bresser Thermo/Hygro Sensoren -> 14_Hideki.pm
    • La Crosse WS-7035, WS-7053, WS-7054 -> 14_CUL_TX
    • Oregon Scientific v2 und v3 Sensoren -> 41_OREGON.pm
    • PEARL NC7159, LogiLink WS0002,GT-WT-02,AURIOL,TCM97001, TCM27 und viele anderen -> 14_CUL_TCM97001.pm
    • Temperatur / Feuchtigkeits Sensoren unterstützt -> 14_SD_WS07.pm
    • technoline WS 6750 und TX70DTH -> 14_SD_WS07.pm

    Es ist möglich, mehr als ein Gerät anzuschließen, um beispielsweise besseren Empfang zu erhalten. FHEM wird doppelte Nachrichten herausfiltern. Mehr dazu im dem global Abschnitt unter dem Attribut dupTimeout

    Hinweis: Dieses Modul erfordert das Device::SerialPort oder Win32::SerialPort Modul. Es kann derzeit nur über USB angeschlossen werden.

    Define
      define <name> SIGNALduino <device>
    USB-connected devices (SIGNALduino):
    • <device> spezifiziert den seriellen Port für die Kommunikation mit dem SIGNALduino. Der Name des seriellen Geräts hängt von Ihrer Distribution ab. In Linux ist das cdc_acm Kernel_Modul dafür verantwortlich und es wird ein /dev/ttyACM0 oder /dev/ttyUSB0 Gerät angelegt. Wenn deine Distribution kein cdc_acm Module besitzt, kannst du usbserial nutzen um den SIGNALduino zu betreiben mit folgenden Kommandos:
      • modprobe usbserial
      • vendor=0x03eb
      • product=0x204b
      In diesem Fall ist das Gerät höchstwahrscheinlich /dev/ttyUSB0.

      Sie können auch eine Baudrate angeben, wenn der Gerätename das @ enthält, Beispiel: /dev/ttyACM0@57600
      Dies ist auch die Standard-Baudrate.

      Es wird empfohlen, das Gerät über einen Namen anzugeben, der sich nicht ändert. Beispiel via by-id devicename: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@57600
      Wenn die Baudrate "directio" (Bsp: /dev/ttyACM0@directio), dann benutzt das Perl Modul nicht Device::SerialPort und FHEM öffnet das Gerät mit einem file io. Dies kann funktionieren, wenn das Betriebssystem die Standardwerte für die seriellen Parameter verwendet. Bsp: einige Linux Distributionen und OSX.

    Internals
    • IDsNoDispatch: Hier werden Protokolleinträge mit ihrer numerischen ID aufgelistet, für welche keine Weitergabe von Daten an logische Module aktiviert wurde. Um die Weitergabe zu aktivieren, kann die Menüoption Display protocollist verwendet werden.
    • LASTDMSGID: Hier wird die zuletzt dispatchte Protocol ID angezeigt.
    • NR_CMD_LAST_H: Anzahl der gesendeten Nachrichten innerhalb der letzten Stunde.
    • RAWMSG: zuletzt empfangene RAWMSG
    • cc1101_available: Wenn ein CC1101 erkannt wurde, so wird dieses Internal angezeigt mit dem Wert 1.
    • version: Hier wird die Version des SIGNALduino microcontrollers angezeigt.
    • versionProtocols: Hier wird die Version der SIGNALduino Protokolldatei angezeigt.
    • versionmodule: Hier wird die Version des SIGNALduino FHEM Modules selbst angezeigt.

    Set
    • LaCrossePairForSec
    • (NUR bei Verwendung eines cc110x Funk-Moduls)
      Aktivieren Sie die automatische Erstellung neuer LaCrosse-Sensoren für "x" Sekunden. Wenn ignore_battery nicht angegeben wird, werden nur Sensoren erstellt, die das Flag 'Neue Batterie' senden.

    • cc1101_bWidth / cc1101_dataRate / cc1101_deviatn / cc1101_freq / cc1101_patable / cc1101_rAmpl / cc1101_reg / cc1101_sens
      (NUR bei Verwendung eines cc110x Funk-Moduls)

      Stellt die SIGNALduino-Frequenz / Bandbreite / PA-Tabelle / Empfänger-Amplitude / Empfindlichkeit ein.
      Verwenden Sie es mit Vorsicht. Es kann Ihre Hardware zerstören und es kann sogar illegal sein, dies zu tun.
      Hinweis: Die für die RFR-Übertragung verwendeten Parameter sind nicht betroffen.
      • cc1101_bWidth , kann auf Werte zwischen 58 kHz und 812 kHz eingestellt werden. Große Werte sind störanfällig, ermöglichen jedoch den Empfang von ungenau kalibrierten Sendern. Es wirkt sich auch auf die Übertragung aus. Standard ist 325 kHz.
      • cc1101_dataRate , kann auf Werte zwischen 0.0247955 kBaud und 1621.83 kBaud eingestellt werden.
      • cc1101_deviatn , kann auf Werte zwischen 1.586914 kHz und 380.859375 kHz eingestellt werden.
      • cc1101_freq , legt sowohl die Empfangsfrequenz als auch die Übertragungsfrequenz fest.
        Hinweis: Obwohl der CC1101 auf Frequenzen zwischen 315 und 915 MHz eingestellt werden kann, ist die Antennenschnittstelle und die Antenne auf genau eine Frequenz abgestimmt. Standard ist 433.920 MHz (oder 868.350 MHz). Wenn keine Frequenz angegeben wird, dann wird die Frequenz aus dem Attribut cc1101_frequency geholt.
      • cc1101_patable , Änderung der PA-Tabelle (Leistungsverstärkung für HF-Senden)
      • cc1101_rAmpl , ist die Empfängerverstärkung mit Werten zwischen 24 und 42 dB. Größere Werte erlauben den Empfang schwacher Signale. Der Standardwert ist 42.
      • cc1101_reg Es können mehrere Register auf einmal gesetzt werden. Das Register wird über seinen zweistelligen Hexadezimalwert angegeben, gefolgt von einem zweistelligen Wert. Mehrere Register werden via Leerzeichen getrennt angegeben
      • cc1101_sens , ist die Entscheidungsgrenze zwischen den Ein- und Aus-Werten und beträgt 4, 8, 12 oder 16 dB. Kleinere Werte erlauben den Empfang von weniger klaren Signalen. Standard ist 4 dB.

    • close
      Beendet die Verbindung zum Gerät.

    • disableMessagetype
      Ermöglicht das Deaktivieren der Nachrichtenverarbeitung für
      • Nachrichten mit sync (syncedMS)
      • Nachrichten ohne einen sync pulse (unsyncedMU)
      • Manchester codierte Nachrichten (manchesterMC)
      Der neue Status wird in den eeprom vom Arduino geschrieben.

    • enableMessagetype
      Ermöglicht die Aktivierung der Nachrichtenverarbeitung für
      • Nachrichten mit sync (syncedMS)
      • Nachrichten ohne einen sync pulse (unsyncedMU)
      • Manchester codierte Nachrichten (manchesterMC)
      Der neue Status wird in den eeprom vom Arduino geschrieben.

    • flash [hexFile|url]
      Der SIGNALduino benötigt die richtige Firmware, um die Sensordaten zu empfangen und zu liefern. Unter Verwendung der Arduino IDE zum Flashen der Firmware in den SIGNALduino bietet dies eine Möglichkeit, ihn direkt von FHEM aus zu flashen. Sie können eine Datei auf Ihrem fhem-Server angeben oder eine URL angeben, von der die Firmware heruntergeladen wird.

      Es gibt einige Anforderungen:
      • avrdude muss auf dem Host installiert sein. Auf einem Raspberry PI kann dies getan werden mit: sudo apt-get install avrdude
      • Das Hardware-Attribut muss festgelegt werden, wenn eine andere Hardware als Arduino Nano verwendet wird. Dieses Attribut definiert den Befehl, der an avrdude gesendet wird, um den uC zu flashen.
      • Bei Problem mit dem Flashen, können im Logfile interessante Informationen zu finden sein.

      Beispiele:
      • flash mittels Versionsnummer: Versionen können mit get availableFirmware abgerufen werden
      • flash via hexFile: set sduino flash ./FHEM/firmware/SIGNALduino_mega2560.hex
      • flash via url für einen Nano mit CC1101: set sduino flash https://github.com/RFD-FHEM/SIGNALDuino/releases/download/3.3.1-RC7/SIGNALDuino_nanocc1101.hex

      Hinweise Modell radino:
      • Teilweise kann es beim flashen vom radino unter Linux Probleme geben. Hier im Wiki unter dem Punkt "radino & Linux" gibt es einen Patch!
      • Wenn der Radino in dieser Art /dev/ttyACM0 definiert wurde, sollte das Flashen der Firmware automatisch erfolgen. Wenn das nicht gelingt, muss der Bootloader manuell aktiviert werden:
      • Um den Bootloader vom radino manuell zu aktivieren gibt es 2 Varianten.
        • 1) Module welche einen BSL-Button besitzen:
          • Spannung anlegen
          • druecke & halte BSL- und RESET-Button
          • RESET-Button loslassen und danach den BSL-Button loslassen
          • (Wiederholen Sie diese Schritte, wenn Ihr radino nicht sofort in den Bootloader-Modus wechselt.)
        • 2) Bootloader erzwingen:
          • durch zweimaliges druecken der Reset-Taste
        Im Bootloader-Modus erhält der radino eine andere USB ID. Diese muss im Attribut "flashCommand" eingetragen werden.
        Wenn der Bootloader aktiviert ist, signalisiert er das mit dem Blinken einer LED. Dann hat man ca. 8 Sekunden Zeit zum flashen.

    • raw
      Geben Sie einen SIGNALduino-Firmware-Befehl aus, ohne auf die vom SIGNALduino zurückgegebenen Daten zu warten. Ausführliche Informationen zu SIGNALduino-Befehlen finden Sie im SIGNALduino-Firmware-Code. Mit dieser Linie können Sie fast jedes Signal über einen angeschlossenen Sender senden.
      Um einige Rohdaten zu senden, schauen Sie sich diese Beispiele an: P#binarydata#R#C (#C is optional)

      Beispiel 1: set sduino raw SR;R=3;P0=500;P1=-9000;P2=-4000;P3=-2000;D=0302030; , sendet die Daten im Raw-Modus dreimal wiederholt
      Beispiel 2: set sduino raw SM;R=3;P0=500;C=250;D=A4F7FDDE; , sendet die Daten Manchester codiert mit einem clock von 250µS
      Beispiel 3: set sduino raw SC;R=3;SR;P0=5000;SM;P0=500;C=250;D=A4F7FDDE; , sendet eine kombinierte Nachricht von Raw und Manchester codiert 3 mal wiederholt
      Beispiel 4: set sduino raw SN;R=3;D=9A46036AC8D3923EAEB470AB; , sendet die xFSK - Daten dreimal wiederholt

        Hinweis: Die falsche Benutzung der kommenden Optionen kann zu Fehlfunktionen des SIGNALduinos führen!

      • CEA -> Einschalten der automatischen Frequenzkontrolle bei FSK-Modulation und Firmwareversion >= V 4.0.0 (config: AFC=1)
      • CDA -> Abschalten der automatischen Frequenzkontrolle bei FSK-Modulation und Firmwareversion >= V 4.0.0 (config: AFC=0)
      • CER -> Einschalten der Datenkomprimierung (config: Mred=1)
      • CDR -> Abschalten der Datenkomprimierung (config: Mred=0)

      • Register Befehle bei einem CC1101
      • e -> Werkseinstellungen
      • x -> gibt die ccpatable zurück
      • C -> liest einen Wert aus dem CC1101 Register
          Beispiel: set sduino raw C04 liest den Wert aus der Registeradresse 0x04
      • W -> schreibt einen Wert ins EEPROM und ins CC1101 Register (Hinweis: Die EEPROM Adresse hat einen Offset von 2)
          Beispiel 1: set sduino raw W041D schreibt 1D ins Register 0x02
          Beispiel 2: set sduino raw W041D#W0604 schreibt 1D ins Register 0x02 und 04 ins Register 0x04

      • andere Befehle des uC
      • ? -> gibt die verfügbaren Kommandos zurück
      • P -> sendet ein PING
      • R -> gibt den freien RAM zurück
      • V -> gibt die Version zurück
      • s -> gibt den Status zurück
      • t -> gibt die Uptime zurück

    • reset
      Öffnet die Verbindung zum Gerät neu und initialisiert es.

    • sendMsg
      Dieser Befehl erstellt die erforderlichen Anweisungen zum Senden von Rohdaten über den SIGNALduino. Sie können die Signaldaten wie Protokoll und die Bits angeben, die Sie senden möchten.
      Alternativ ist es auch moeglich, die zu sendenden Daten in hexadezimaler Form zu uebergeben. Dazu muss ein 0x vor den Datenteil geschrieben werden.

      Bitte beachte, dieses Kommando funktioniert nur fuer MU oder MS Protokolle nach dieser Vorgehensweise:

      Argumente sind:

      • P#binarydata#R#C (#C is optional)
        Beispiel binarydata: set sduino sendMsg P0#0101#R3#C500
        Dieser Befehl erzeugt ein Sendekommando fuer die Bitfolge 0101 anhand der protocol id 0. Als Takt wird 500 verwendet.
        SR;R=3;P0=500;P1=-9000;P2=-4000;P3=-2000;D=03020302;

      • P#0xhexdata#R#C (#C is optional)
        Beispiel 0xhexdata: set sduino sendMsg P29#0xF7E#R4
        Dieser Befehl erzeugt ein Sendekommando fuer die Hexfolge F7E anhand der protocol id 29. Die Nachricht soll 4x gesendet werden.
        SR;R=4;P0=-8360;P1=220;P2=-440;P3=-220;P4=440;D=01212121213421212121212134;

      • P#0xhexdata#R#C#F (#C #F is optional)
        Beispiel 0xhexdata: set sduino sendMsg P36#0xF7#R6#Fxxxxxxxxxx (xxxxxxxxxx = Registerwert des CC1101)
        Dieser Befehl erzeugt ein Sendekommando fuer die Hexfolge F7 anhand der protocol id 36. Die Nachricht soll 6x gesendet werden mit der angegebenen Frequenz.
        SR;R=6;P0=-8360;P1=220;P2=-440;P3=-220;P4=440;D=012323232324232323;F= (Registerwert des CC1101);


    Get
    • availableFirmware
      Ruft die verfügbaren Firmware-Versionen von Github ab und macht diese im set flash Befehl auswählbar.

    • ccconf
      Liest sämtliche radio-chip (cc1101) Register (Frequenz, Bandbreite, etc.) aus und zeigt die aktuelle Konfiguration an.
      (NUR bei Verwendung eines cc1101 Empfänger)

    • ccpatable
      Liest die cc1101 PA Tabelle aus (power amplification for RF sending).
      (NUR bei Verwendung eines cc1101 Empfänger)

    • ccreg
      Liest das cc1101 Register aus (99 liest alle aus).
      (NUR bei Verwendung eines cc1101 Empfänger)

    • close
      Beendet die Verbindung zum SIGNALduino.

    • cmds
      Abhängig von der installierten Firmware besitzt der SIGNALduino verschiedene Befehle. Bitte beachten Sie den Quellcode der Firmware Ihres SIGNALduino, um die Antwort dieses Befehls zu interpretieren.

    • config
      Zeigt Ihnen die aktuelle Konfiguration der SIGNALduino Protokollkathegorie an. | Bsp: MS=1;MU=1;MC=1;Mred=0

    • freeram
      Zeigt den freien RAM an.

    • ping
      Prüft die Kommunikation mit dem SIGNALduino.

    • rawmsg
      Verarbeitet Nachrichten (MS, MC, MU, ...), als ob sie vom SIGNALduino empfangen wurden. Der Befehl "get raw" übergibt keine Kommandos an den verbundenen Microcontroller!

      Beispielsweise würde diese Nachricht:
      MS;P0=-7871;P2=-1960;P3=578;P4=-3954;D=030323232323434343434323232323234343434323234343234343234343232323432323232323232343234;CP=3;SP=0;R=0;m=0;
      nach mehrmaligem Ausführen des Befehles einen Sensor SD_WS_33_TH_1 anlegen.

    • uptime
      Zeigt Ihnen die Information an, wie lange der SIGNALduino läuft. Ein FHEM Neustart setzt den Timer zurück.

    • version
      Zeigt Ihnen die Information an, welche aktuell genutzte Software Sie mit dem SIGNALduino verwenden.

    Attributes
    • addvaltrigger
      Generiert Trigger für zusätzliche Werte. Momentan werden DMSG, ID, RAWMSG und RSSI unterstüzt.

    • blacklist_IDs
      Dies ist eine durch Komma getrennte Liste. Die Blacklist funktioniert nur, wenn keine Whitelist existiert! Hier kann man ID´s eintragen welche man nicht ausgewertet haben möchte.

    • cc1101_frequency
      Legt die Frequenz des SIGNALduino fest. Standard is 433 Mhz.
      Da die Werte für PA Werte Frequenzabhängig sind, wird für das Setzen der Register die hier hinterlegte Frequenz verwendet.

    • cc1101_reg_user
      Speicherplatz für individuelle Registerkonfigurationen bzw. Werte. Es können einzelne oder mehrere Werte gespeichert werden.
      Hinweis: Der Wert ist bestehend aus der Registeradresse gefolgt vom Wert. Mehrere Werte werden mit Komma getrennt. Beispiel: 04D3,0591

    • debug
      Dies bringt das Modul in eine sehr ausführliche Debug-Ausgabe im Logfile. Somit lassen sich neue Signale finden und Signale überprüfen, ob die Demodulation korrekt funktioniert.

    • development
      Das development Attribut ist nur in den Entwicklungsversionen des FHEM Modules aus Grüden der Abwärtskompatibilität vorhanden. Bei Setzen des Attributes auf "1" werden alle Protokolle aktiviert, welche mittels developID=y markiert sind.
      Wird das Attribut auf 1 gesetzt, so werden alle in Protokolle die mit dem developID Flag "y" markiert sind aktiviert. Die Flags (Spalte dev) können über das Webfrontend im Abschnitt "Information menu" mittels "Display protocollist" eingesehen werden.

    • do_not_notify

    • doubleMsgCheck_IDs
      Dieses Attribut erlaubt es, Protokolle anzugeben, die zwei gleiche Nachrichten enthalten müssen, um diese an die Module zu übergeben. Sie können mehrere IDs mit einem Komma angeben: 0,3,7,12

    • dummy

    • eventlogging
      Mit diesem Attribut können Sie steuern, ob jede Logmeldung auch als Ereignis bereitgestellt wird. Dies ermöglicht das Erzeugen eines Ereignisses fuer jede Protokollnachricht. Setze dies auf 0 und Logmeldungen werden nur in der globalen Fhem-Logdatei gespeichert, wenn der Loglevel höher oder gleich dem Verbose-Attribut ist. Setze dies auf 1 und jede Logmeldung wird auch als Ereignis versendet. Dadurch können Sie die Ereignisse in einer separaten Protokolldatei protokollieren.

    • flashCommand
      Dies ist der Befehl, der ausgeführt wird, um den Firmware-Flash auszuführen. Nutzen Sie dies nicht, wenn Sie nicht wissen, was Sie tun!
      Wurde das Attribut nicht definiert, so verwendet es die Standardeinstellungen.
      Sobald der User das Attribut manuell definiert, nutzt das System diese Vorgaben!
      • Standard nano, nanoCC1101, miniculCC1101, promini:
        avrdude -c arduino -b [BAUDRATE] -P [PORT] -p atmega328p -vv -U flash:w:[HEXFILE] 2>[LOGFILE]
      • Standard radinoCC1101:
        avrdude -c avr109 -b [BAUDRATE] -P [PORT] -p atmega32u4 -vv -D -U flash:w:[HEXFILE] 2>[LOGFILE]
      Es enthält einige Platzhalter, die automatisch mit den entsprechenden Werten gefüllt werden:
      • [BAUDRATE]
        Ist die Schrittgeschwindigkeit. (z.Bsp: 57600)
      • [PORT]
        Ist der Port, an dem der SIGNALduino angeschlossen ist (z.Bsp: /dev/ttyUSB0) und wird von der Definition verwendet.
      • [HEXFILE]
        Ist die .hex-Datei, die geflasht werden soll. Es gibt drei Optionen (angewendet in dieser Reihenfolge):
        • in set SIGNALduino flash als erstes Argument übergeben
        • aus dem Hardware-Attribut genommen
        • der im Modul definierte Standardwert
      • [LOGFILE]
        Die Logdatei, die Informationen über den Flash-Prozess sammelt. Es wird nach Abschluss des Flash-Prozesses in FHEM angezeigt

      Hinweis: ! Teilweise kann es beim Flashen vom radino unter Linux Probleme geben. Hier im Wiki unter dem Punkt "radino & Linux" gibt es einen Patch!

    • hardware
      Derzeit mögliche Hardware Varianten mit verschiedenen Empfänger Optionen. Die einfache Variante besteht aus einem Empfänger und einen Sender, die über je eine einzige digitale Signalleitung Datem mit dem Microcontroller austauschen. Der Empfänger sendet dabei und der Sender empfängt dabei ausschließlich. Weiterhin existiert der den sogenannten cc1101 (sub 1 GHZ) Chip, welche empfangen und senden kann. Dieser wird über die SPI Verbindung angebunden. ESP8266 Hardware Typen, unterstützen derzeit kein flashen aus dem Modul und benötigen mindestens 1 MB Flash Speicher.
      • ESP32s: ESP32 für einfachen eindraht Empfänger
      • ESP32cc1101: ESP32 mit einem CC110x-Empfänger (SPI Verbindung)
      • ESP8266s: ESP8266 für einfachen eindraht Empfänger
      • ESP8266cc1101: ESP8266 mit einem CC110x-Empfänger (SPI Verbindung)
      • MAPLEMINI_F103CBs: MapleMini F103CB (STM32) für einfachen eindraht Empfänger
      • MAPLEMINI_F103CBcc1101: MapleMini F103CB (STM32) mit einem CC110x-Empfänger (SPI Verbindung)
      • miniculCC1101: Arduino pro Mini mit einem CC110x-Empfänger (SPI Verbindung) entsprechend dem minicul verkabelt
      • nano328: Arduino Nano 328 für einfachen eindraht Empfänger
      • nanoCC1101: Arduino Nano für einen CC110x-Empfänger (SPI Verbindung)
      • promini8s: Arduino Pro Mini 328 8Mhz für einfachen eindraht Empfänger
      • promini8cc1101: Arduino Pro Mini 328 8Mhz für einen CC110x-Empfänger (SPI Verbindung)
      • promini16s: Arduino Pro Mini 328 16Mhz für einfachen eindraht Empfänger
      • promini16cc1101: Arduino Pro Mini 328 16Mhz für einen CC110x-Empfänger (SPI Verbindung)
      • radinoCC1101: Ein Arduino kompatibler Radino mit CC110x-Empfänger (SPI Verbindung)

      Notwendig für den Befehl flash. Hier sollten Sie angeben, welche Hardware Sie mit dem usbport verbunden haben. Andernfalls kann es zu Fehlfunktionen des Geräts kommen. Wichtig ist auch das Attribut updateChannelFW

    • longids
      Durch Komma getrennte Liste von Device-Typen für Empfang von langen IDs mit dem SIGNALduino. 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.
      Folgende Module verwenden diese Funktionalität: 14_Hideki, 41_OREGON, 14_CUL_TCM97001, 14_SD_WS07.
      Beispiele:
            # Voreinstellung, Nutzung von langen IDs wird durch logische Module definiert. Meist deaktiviert, außer bei OREGON:
            deleteattr sduino longids 
            # Keine langen IDs verwenden:
            attr sduino longids 0
            # Immer lange IDs verwenden:
            attr sduino longids 1
            # Verwende lange IDs für SD_WS07 Devices.
            # Device Namen sehen z.B. so aus: SD_WS07_TH_3
            attr sduino longids SD_WS07_TH
          
    • maxMuMsgRepeat
      In MU Signalen können mehrere Wiederholungen stecken. Diese werden einzeln ausgewertet und an ein logisches Modul uebergeben. Mit diesem Attribut kann angepasst werden, wie viele Wiederholungen gesucht werden. Standard ist 4.

    • minsecs
      Es wird von anderen Modulen bereitgestellt. Minsecs sollte wie eine Schwelle wirken. Wenn angegeben, werden unterstützte Module neue Nachrichten verworfen, wenn minsecs nicht vergangen sind.

    • noMsgVerbose
      Mit diesem Attribut können Sie die Protokollierung von Debug-Nachrichten vom io-Gerät steuern. Wenn dieser Wert auf 3 festgelegt ist, werden diese Nachrichten protokolliert, wenn der globale Verbose auf 3 oder höher eingestellt ist.

    • rawmsgEvent
      Bei der Einstellung "1", lösen empfangene Rohnachrichten Ereignisse aus.

    • rfmode
      Konfiguriert den RF Transceiver des SIGNALduino (CC1101). Verfügbare Argumente sind:
      • Avantek
        Modulation 2-FSK, Datenrate=50.087 kbps, Sync Word=0869, FIFO-THR=8 Byte, Frequenz 433.3 MHz
          Example: AVANTEK Funk-Türklingel
      • Bresser_5in1
        Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, Packet Length=26 Byte, Frequenz 868.3 MHz
          Beispiel: BRESSER 5-in-1 Wetter Center, BRESSER Profi Regenmesser, Fody E42, Fody E43
      • Bresser_6in1
        Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, FIFO-THR=20 Byte, Frequenz 868.3 MHz
      • Bresser_7in1
        Modulation 2-FSK, Datenrate=8.23 kbps, Sync Word=2DD4, Packet Length=22 Byte, Frequenz 868.3 MHz
      • Fine_Offset_WH51_434
        Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequenz 433.92 MHz
          Beispiel: Bodenfeuchtesensor Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100
      • Fine_Offset_WH51_868
        Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequenz 868.35 MHz
          Beispiel: Bodenfeuchtesensor Fine Offset WH51, ECOWITT WH51, MISOL/1, Froggit DP100
      • Fine_Offset_WH57_434
        Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=9 Byte, Frequenz 433.92 MHz
          Beispiel: Gewittersensor Fine Offset WH57, Froggit DP60, Ambient Weather WH31L
      • Fine_Offset_WH57_868
        Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=9 Byte, Frequenz 868.35 MHz
          Beispiel: Gewittersensor Fine Offset WH57, Froggit DP60, Ambient Weather WH31L
      • Fine_Offset_WH31_868
        Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=11 Byte, Frequenz 868.35 MHz
          Beispiel: Temperatur-/Feuchtesensor Fine Offset WH31, Froggit DP50, Ambient Weather WH31e/b, Ecowitt wh31
      • Fine_Offset_WH40_868
        Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequenz 868.35 MHz
          Beispiel: Regensensor Fine Offset WH40, Ambient Weather WH40, Ecowitt WH40
      • Inkbird_IBS-P01R
        Modulation 2-FSK, Datenrate=10.00 kbps, Sync Word=2DD4, Packet Length=18 Byte, Frequenz 433.92 MHz
          Beispiel: Inkbird IBS-P01R Pool Thermometer, ITH-20R Thermo-/Hygrometer
      • KOPP_FC
        Modulation GFSK, Datenrate=4.7855 kbps, Sync Word=AA54, Frequenz 868.3MHz
      • Lacrosse_mode1
        Modulation 2-FSK, Datenrate=17.25769 kbps, Sync Word=2DD4, Frequenz 868.3MHz
          Beispiel: TX25-IT, TX27-IT, TX29-IT, TX29DTH-IT, TX37, 30.3143.IT, 30.3144.IT
      • Lacrosse_mode2
        Modulation 2-FSK, Datenrate=9.579 kbps, Sync Word=2DD4, Frequenz 868.3MHz
          Beispiel: TX35TH-IT, TX35DTH-IT, TX38-IT, 30.3155WD, 30.3156WD
      • PCA301
        Modulation 2-FSK, Datenrate=6.62041 kbps, Sync Word=2DD4, Frequenz 868.950 MHz
      • Rojaflex
        Modulation GFSK, Datenrate=9.99 kbps, Sync Word=D391D391, Frequenz 433.920 MHz
      • SlowRF
        Modulation ASK/OOK, läd die Standard Einstellung vom uC

    • suppressDeviceRawmsg
      Bei der Einstellung "1" wird das interne "RAWMSG" nicht mit den empfangenen Nachrichten aktualisiert.

    • updateChannelFW
      Das Modul sucht nach Verfügbaren Firmware Versionen (GitHub) und bietet diese via dem Befehl flash zum Flashen an. Mit dem Attribut kann festgelegt werden, ob nur stabile Versionen ("Latest Release") angezeigt werden oder auch Vorabversionen ("Pre-release") einer neuen Firmware.
      Die Option testing inkludiert auch die stabilen Versionen.
      • stable: Als stabil getestete Versionen, erscheint nur sehr selten
      • testing: Neue Versionen, welche noch getestet werden muss

      Die Liste der verfügbaren Versionen muss manuell mittels get availableFirmware neu geladen werden.

    • Notwendig für den Befehl flash. Hier sollten Sie angeben, welche Hardware Sie mit dem USB-Port verbunden haben. Andernfalls kann es zu Fehlfunktionen des Geräts kommen.

    • whitelist_IDs
      Dieses Attribut erlaubt es, festzulegen, welche Protokolle von diesem Modul aus verwendet werden. Protokolle, die nicht beachtet werden, erzeugen keine Logmeldungen oder Ereignisse. Sie werden dann vollständig ignoriert. Dies ermöglicht es, die Ressourcennutzung zu reduzieren und bessere Klarheit in den Protokollen zu erzielen. Sie können mehrere WhitelistIDs mit einem Komma angeben: 0,3,7,12. Mit einer # am Anfang können WhitelistIDs deaktiviert werden.
      Wird dieses Attribut nicht verwrndet oder deaktiviert, werden alle stabilen Protokolleinträge verarbeitet. Protokolleinträge, welche sich noch in Entwicklung befinden müssen explizit über dieses Attribut aktiviert werden.

    • WS09_CRCAUS
      • 0: CRC-Check WH1080 CRC = 0 on, Standard
      • 2: CRC = 49 (x031) WH1080, set OK

    • MatchList
      Dieses Attribut ermöglicht es die Modul Match Tabelle um weitere Einträge zu erweitern. Dazu müssen die weiteren Einträge im PERL Hash format angegeben werden:
      • Format: { 'Nummer:Modul' => 'Protokoll-Pattern' , 'NächsteNummer:NächstesModul' => 'Protokoll-Pattern' , ... }
      • Beispiel: { '34:MyModule' => '^u98#.{8}' , '35:MyModule2' => '^u99#.{10}' }

    Information menu
    • Display protocollist
      Zeigt Ihnen die aktuell implementierten Protokolle des SIGNALduino an und an welches logische FHEM Modul Sie übergeben werden.
      Außerdem wird mit checkbox Symbolen angezeigt ob ein Protokoll verarbeitet wird. Durch Klick auf das Symbol, wird im Hintergrund das Attribut whitlelistIDs angepasst. Die Attribute whitelistIDs und blacklistIDs beeinflussen den dargestellten Status. Protokolle die in der Spalte dev markiert sind, befinden sich in Entwicklung.
      • Wemm eine Zeile mit 'm' markiert ist, befindet sich das logische Modul, welches eine Schnittstelle bereitstellt in Entwicklung. Im Standard übergeben diese Protokolle keine Daten an logische Module. Um die Kommunikation zu ermöglichenm muss der Protokolleintrag aktiviert werden.
      • Wemm eine Zeile mit 'p' markiert ist, wurde der Protokolleintrag reserviert oder befindet sich in einem frühen Entwicklungsstadium.
      • Wemm eine Zeile mit 'y' markiert ist, wurde das Protkokoll noch nicht ausgiebig getestet und überprüft.

      Protokolle, welche in dem blacklistIDs Attribut eingetragen sind, können nicht über das Menü aktiviert werden. Dazu bitte das Attribut blacklistIDs entfernen.

    SIGNALduino_un

    [EN DE]
      Das SIGNALduino_un Modul ist ein Hilfsmodul um unbekannte Nachrichten zu debuggen und analysieren zu können.

      Das Modul legt nur eine Hilfsgerät an mit Logfile der Bits sobald man das Attribut development im Empfänger Device auf das entsprechende unbekannte Protokoll setzt.
      Einen entsprechenden Hinweis erhalten Sie ab Verbose 4 im FHEM Log.

      Beispiel: SIGNALduino_unknown sduino_dummy Protocol:40 | To help decode or debug, please add u40! (attr sduino_dummy development u40)


      Define
        define <name> SIGNALduino_un <code>

        Es ist möglich ein Gerät manuell zu definieren, aber damit passiert überhaupt nichts.
        Die einzigste Funktion dieses Modules ist, ab Verbose 4 Logmeldungen über die Empfangene Nachricht ins FHEM-Log zu schreiben oder in das Logfile des Hilfsgerätes.
        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 werden.

        Angelegte Geräte / Logfiles müssen manuell gelöscht werden nachdem aus dem Attribut development des SIGNALduinos das zu untersuchende Protokoll entfernt wurde. (Beispiel: u40,y84)


      Set
        UserInfo "Kommentar" - somit kann der User in das Logfile des Hilfsgerät Kommentare setzen welche zeitlich zu seinen Bits des Gerätes eingeordnet werden
        (Beispiel: um die Digitalanzeige des Thermometers abzuschreiben zum Zeitpunkt des Empfangs oder Zustände von Schaltern ...)


      Get
        N/A


      Attributes
      • ignore
      • stateFormat
      • verbose


      Generierte Readings
      • bitCount (Länge des Signals, binär)
      • bitCountLength (Längenbereich aller empfangen Signale des Protokolles)
      • bitMsg
      • bitMsg_invert (Nachricht binär, invertiert)
      • hexCount_or_nibble (Länge des Signals, hexadezimal)
      • hexMsg
      • hexMsg_invert (Nachricht hexadezimal, invertiert)
      • lastInputDev (Device beim letzten Empfang)
      • past_seconds (Dauer in Sekunden seit der letzten Aktualisierung der Readings)

    SIP

    [EN DE]
      Definiert ein SIP-Client Device.
      Wiki : https://wiki.fhem.de/wiki/SIP-Client
      Forum : https://forum.fhem.de/index.php/topic,67443.0.html

      Define
        define <name> SIP

        Beispiel:
          define MySipClient SIP

      Set
      • set <name> <SIP Passwort>
        Speichert das Passwort des SIP Users. Ohne gespeichertes Passwort sind die set call und set listen Funktionen gesperrt !
        WICHTIG : wird das SIP Device umbenannt muss dieser Befehl unbedingt wiederholt werden !
      • set <name> reset
        Stoppt laufende listen-Prozess und initalisiert das Device.
      • set <name> call <nummer> [<maxtime>] [<nachricht>]
        Startet einen Anruf an die angegebene Nummer.
        Optional kann die maximale Zeit angegeben werden. Default ist 30.
        Optional kann eine Nachricht in Form eines Audiofiles angegeben werden.
        Das File ist mit dem vollen Pfad oder dem relativen ab dem Verzeichnis mit fhem.pl anzugeben.
      • set <name> listen
        Attribut sip_listen = dtmf : Der SIP-Client wird in einen Status versetzt in dem er Anrufe annimmt. Der Ton wird als Echo zurückgespielt. Über die Eingabe von # gefolgt von 2 unterschiedlichen Zahlen und anschließendem Auflegen kann eine Zahl in das Reading dtmf übergeben werden.
        Attribut sip_listen = wfp : Der SIP-Client wird in einen Status versetzt in dem er auf Anrufe wartet. Erfolgt ein Anruf an den Client, wechselt der Status zu ringing.
        Nun kann das Gespräch via set-Command fetch angenommen werden. Das als sip_audiofile angegebene File wird abgespielt.
        Anschließend wechselt der Status wieder zu listenwfp.

      Attributes
      • sip_user
        User Name des SIP-Clients. Default ist 620 (Fritzbox erstes SIP Telefon)

      • sip_registrar
        Hostname oder IP-Addresse des SIP-Servers mit dem sich das Modul verbinden soll. (Default fritz.box)

      • sip_from
        SIP-Client-Info. Syntax : sip:sip_user@sip_registrar Default ist sip:620@fritz.box

      • sip_ip
        Die IP-Addresse von FHEM im Heimnetz. Solange das Attribut nicht gesetzt ist versucht das Modul diese beim Start zu ermitteln.

      • sip_port
        Optinale Portnummer die vom Modul benutzt wird.
        Wenn dem Attribut kein Wert zugewiesen wurde verwendet das Modul eine zufällige Portnummer zwichen 44000 und 45000

      • Audiofiles Audiofiles können einfach mit dem externen Programm sox erzeugt werden :
        sox <file>.wav -t raw -r 8000 -c 1 -e a-law <file>.al
        Unterstützt werden nur die beiden RAW Audio Formate a-law und u-law !
        Statt eines echten Audiofiles kann auch eine Text2Speech Nachricht eingetragen werden.
        Bsp : attr mySIP sip_audiofile_call !Hier ist dein FHEM Server

      • sip_audiofile_wfp
        Audiofile das nach dem Command fetch abgespielt wird

      • sip_audiofile_call
        Audiofile das dem Angerufenen bei set call vorgespielt wird

      • sip_audiofile_dtmf
        Audiofile das dem Anrufer bei listen_for_dtmf abgespielt wird

      • sip_audiofile_ok
        Audiofile das bei erkannter DTMF Sequenz abgespielt wird

      • sip_listen (none , dtmf, wfp)

      • sip_ringtime
        Klingelzeit für eingehende Anrufe bei listen_for_dtmf

      • sip_dtmf_size
        1 bis 4 , default 2 Legt die Läge des erwartenden DTMF Events fest

      • sip_dtmf_loop
        once oder loop , default once

      • sip_waittime
        Maximale Wartezeit im Status listen_for_wfp bis das Gespräch automatisch angenommen wird

      • T2S_Device
        Name des Text2Speech Devices (Wird nur benötigt wenn Sprachnachrichten statt Audiofiles verwendet werden)

      • T2S_Timeout
        Wartezeit in Sekunden wie lange maximal auf Text2Speech gewartet wird

      • audo_converter
        sox oder ffmpeg, default sox
        Ist für Text2Speech unbedingt erforderlich um die mp3 Dateien in Raw Audio umzuwandeln.
        Installation z.B. mit sudo apt-get install sox und die mp3 Unterstützung mit sudo apt-get install libsox-fmt-mp3

      • sip_force_interval default 300

      • sip_force_max default 99

      • phonebook default none
        Dateiname des eigenen Telefonbuchs. Inhalt: zeilenweise Nr,Name

      • history_size default 0
        max Anzahl von Zeilen in der Ruf/Anrufer Liste

      • history_file default none
        Dateiname der Ruf/Anrufer Liste


    SISPM

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

    SIS_PMS

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

    SMAEM

    [EN DE]

    Define
      define <name> SMAEM [<Interface>]

      Definiert ein SMA Energy Meter (SMAEM), einen bidirektionalen Stromzähler, der häufig in Photovolatikanlagen der Firma SMA zum Einsatz kommt. Der optionale Parameter Interface legt das zu benutzende Netzwerk-Interface fest, zum Beispiel "eth0".

      Sie brauchen mindest ein SMAEM in Ihrem lokalen Netzwerk oder hinter einen multicastfähigen Netz von Routern, um die Daten des SMAEM über die Multicastgruppe 239.12.255.254 auf udp/9522 zu empfangen. Die Multicastpakete werden vom SMAEM einmal pro Sekunde ausgesendet (firmware 1.02.04.R, März 2016).

      Das update interval kann über das Attribut "interval" gesetzt werden. Wenn es nicht gesetzt wird, werden updates per default alle 60 Sekunden durchgeführt. Da das SMAEM seine Daten sekündlich aktualisiert, kann das update interval auf bis zu einer Sekunde reduziert werden. Das wird nicht empfohlen, da FHEM sonst unter große Last gesetzt wird.

      Der Parameter "disableSernoInReading" ändert die Art und Weise, wie die Readings des SMAEN bezeichnet werden: ist der Parameter false oder nicht gesetzt, werden die Readings mit "SMAEM<serialnumber_>....." bezeichnet. Wird der Parameter auf true gesetzt, wird das Prefix "SMAEM<serialnumber_>....." weg gelassen. Sie können diesen Parameter auf true setzen, wenn Sie nicht mehr als ein SMAEM-Gerät in Ihrem Netzwerk haben und kürzere Namen für die Readings wünschen. Falls Sie unsicher sind, setzen Sie diesen Parameter nicht.

      Sie benötigen das Perl-Module IO::Socket::Multicast für dieses FHEM Modul. Unter Debian (basierten) System, kann dies mittels apt-get install libio-socket-multicast-perl installiert werden.

    Set
    • reset
      Es wird das automatisch erstellte File "cacheSMAEM" gelöscht. Das File wird durch das Modul wieder neu initialisiert angelegt. Diese Funktion wird zur Rücksetzung eines eventuellen Fehlerzustandes des Devices verwendet, kann aber auch jederzeit ausgeführt werden.

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

    • disable
      1 = das Modul ist disabled

    • disableSernoInReading
      unterdrückt das Prefix "SMAEM<serialnumber_>....."

    • feedinPrice
      die individuelle Höhe der Vergütung pro Kilowattstunde

    • interval
      Auswertungsinterval in Sekunden

    • noCoprocess
      Wenn gesetzt, wird die Energieauswertung nicht in einen Hintergrundprozess ausgelagert. Im Standard wird dazu ein paralleler Prozess gestartet. Das Attribut kann zur Optimierung des FHEM-Systems hilfreich sein.

    • powerCost
      die individuelle Höhe der Stromkosten pro Kilowattstunde

    • serialNumber
      Die Seriennummer(n) (z.B. 1900212213) des SMA Energy Meters die durch das SMAEM-Device empfangen werden sollen. Mehrere Seriennummern sind durch Leerzeichen getrennt anzugeben.
      (default: keine Einschränkung)

    • timeout
      Einstellung timeout für Hintergrundverarbeitung (default 60s). Der timeout-Wert muss größer als das Wert von "interval" sein.

    SMAEVCharger

    [EN DE]
    Modul zur Integration eines SMA EVCharger über Speedwire (=Ethernet) Schnittstelle.
    Getestet mit SMA EV Charger 22

    Notwendige Module

    Diese Modul benötigt:
    • Perl Module: Date::Time (apt-get install libdatetime-perl)
    • Perl Module: Time::HiRes
    • Perl Module: JSON
    • FHEM Module: Blocking.pm


    Definition
      define <name> SMAEVCharger <hostname/ip> <user> <password>

    • hostname/ip: IP-Adress des Charger, sollte zunächst ohne Protokoll angegeben werden (mit hostname noch nicht getestet!).
    • Beispiel: define myWallbox 192.168.xxx.xxx username userpassword
    Operation method
      Das Modul meldet sich bei der SMA Wallbox an und liest Live-Daten (Momentanwerte) sowie verfügbare Parameter (Konfigurationsparameter).
      Alle Werte, die über die Weboberfläche geändert werden können, können auch mit dem Modul geändert werden. Um die Readings zu reduzieren,
      können die anzuzeigenden Werte und die Werte, die geändert werden können, mit den Attributen "detail-level" und "setting-level" angepasst werden.
    Get
    • get <name> data

      Die Daten des Chargers werden direkt abgerufen. Ansonsten findet alle Sekunden ein automatisierter Abruf statt (siehe auch das Attribut interval)
    • get <name> showAccount

      Zeigt die unverschlüsselten Anmeldedaten an

    Attribute
    • disable [1|0]
      Deaktivieren/Aktivieren des Moduls.

    • interval
      Abfragezyklus in Sekunden. (default: 60)

    • detail-level
      Einstellung der Sichtbarkeit von Parametern.
      0: Basisinformationen
      1: erweiterte Informationen
      2: Infos auf Expertenlevel

    • setting-level
      Einstellung für die Parameter, die über den set-Befehl änderbar sind. Bei der Eingabe wird geprüft, dass diese auch mittels "detail-level" sichtbar sind
      0: Basisinformationen
      1: erweiterte Änderungsparameter
      2: Änderung von Parametern auf Expertenlevel

    Readings Nachfolgende Readings dienen der Darstellung zusätzlicher Werte, die aus den Werten der Wallbox ermittelt wurden.
    • Anzahl_Ladevorgaenge
      Zähler zur Ermittlung aller gestarteten Ladungen, seit dem der Stecker das letzte Mal eingesteckt wurde

    • Startzeit_Verbindung
      Zeitpunkt, zu dem der Stecker das letzte Mal angesteckt wurde


    Zum Starten des Ladeprozess gibt es verschiedene Einstellmöglichkeiten:
    • Param_Betriebsart_Ladevorgang
      Optimiertes Laden: Standardeinstellung für die Ladesteuerung der Wallbox
      Laden mit Vorgabe: Laden mit vordefinierten Werten. Dieser Wert kann nur eingestellt werden, wenn die Parameter 'Param_Dauer_Ladevorgang' und 'Param_Energiemenge_Ladevorgang' gefüllt sind.
      Sind beide Werte gesetzt, wird automatisch in diesen Lademodus geschaltet und die Ladung beginnt entsprechend
      Ladestopp: Ladevorgang stoppen

    • Param_Dauer_Ladevorgang
      Dauer des Ladevorgangs in Minuten. Hiermit wird dann auch der Parameter 'Param_Ende_Ladevorgang' gesetzt, der Datum/Uhrzeit des geplanten Ladeende anzeigt

    • Param_Energiemenge_Ladevorgang
      Energiemenge in kWh, die in der angegebenen Zeit geladen werden soll

    • Param_Minimaler_Ladestrom
      Minimaler Strom, mit dem eine Ladung gestartet wird. Minimum ist 6A. Einige E-Autos benötigen einen höheren Wert, der hiermit eingestellt werden kann.


    Nachfolgend sind alle Readings aufgelistet:
    • Name im Webinterface : Name in FHEM : Kommentar
    • LIVEDATA
    • Measurement.ChaSess.WhIn :Energie_Ladevorgang : unit Wh (detail-level: 0)
    • Measurement.Chrg.ModSw :Schalterstellung Drehschalter : (detail-level: 0)
    • Measurement.GridMs.A.phsA : Netzstrom_Phase_L1 : (detail-level: 0)
    • Measurement.GridMs.A.phsB : Netzstrom_Phase_L2 : (detail-level: 0)
    • Measurement.GridMs.A.phsC : Netzstrom_Phase_L3 : (detail-level: 0)
    • Measurement.GridMs.PhV.phsA : Netzspannung_Phase_L1 : (detail-level: 0)
    • Measurement.GridMs.PhV.phsB : Netzspannung_Phase_L2 : (detail-level: 0)
    • Measurement.GridMs.PhV.phsC : Netzspannung_Phase_L3 : (detail-level: 0)
    • Measurement.Metering.GridMs.TotWIn : Leistung_Bezug : unit: W (detail-level: 0)
    • Measurement.Metering.GridMs.TotWIn.ChaSta : Leistung_Ladestation : unit W (detail-level: 0)
    • Measurement.Metering.GridMs.TotWhIn : Zaehlerstand_Bezugszaehler : unit Wh (detail-level: 0)
    • Measurement.Metering.GridMs.TotWhIn.ChaSta : Zaehlerstand_Ladestation : unit Wh (detail-level: 0)
    • Measurement.Operation.EVeh.ChaStt : Status_Ladevorgang: (detail-level: 0)
    • Measurement.Operation.EVeh.Health : Status_verbundenes_Fahrzeug: (detail-level: 0)
    • Measurement.Operation.Evt.Msg : Status_Meldung : (detail-level: 0)
    • Measurement.Operation.Health : Status_Zustand : (detail-level: 0)
    • Setpoint.PlantControl.Inverter.FstStop : Schnellabschaltung : (detail-level: 0)
    • Measurement.GridMs.Hz : Netzfrequenz : (detail-level: 1)
    • Measurement.GridMs.TotPF : Verschiebungsfaktor : (detail-level: 1)
    • Measurement.GridMs.TotVA : Scheinleistung : (detail-level: 1)
    • Measurement.GridMs.TotVAr : Blindleistung : (detail-level: 1)
    • Measurement.Wl.AcqStt : Status_WLAN_Scan : (detail-level: 1)
    • Measurement.Wl.ConnStt : Status_WLAN_Verbindung : (detail-level: 1)
    • Measurement.Wl.SigPwr : Signalstaerke_Netzwerk : (detail-level: 1)
    • Measurement.InOut.GI1 : digitaler_Gruppeneingang : (detail-level: 2)
    • Measurement.Operation.WMaxLimSrc : Digitaler_Eingang : (detail-level: 2)
    • Measurement.Wl.SoftAcsConnStt : Status_Soft_Access_Point : (detail-level: 2)
    • PARAMS:
    • Parameter.Chrg.ActChaMod : Param_Betriebsart_Ladevorgang: (detail-level: 0 / setting-level: 0)
    • Parameter.Chrg.AMinCha : Param_Minimaler_Ladestrom: (detail-level: 0 / setting-level: 0)
    • Parameter.Chrg.Plan.DurTmm : Param_Dauer_Ladevorgang : (detail-level: 0 / setting-level: 0)
    • Parameter.Chrg.Plan.En : Param_Energiemenge_Ladevorgang : (detail-level: 0 / setting-level: 0)
    • Parameter.Chrg.Plan.StopTm : Param_Ende_Ladevorgang: (detail-level: 0)
    • Parameter.Chrg.StpWhenFl : Param_Trennung_nach_Vollladung: (detail-level: 0 / setting-level: 1)
    • Parameter.Chrg.StpWhenFlTm : Param_Ladebereitschaft_bis_Trennung: (detail-level: 0 / setting-level: 1)
    • Parameter.Chrg.ChrgApv : Param_Manuelle_Ladefreigabe: (detail-level: 0 / setting-level: 0)
    • Parameter.Chrg.ChrgLok : Param_Ladefreigabe_ueber_App: (detail-level: 0 / setting-level: 0)
    • Parameter.GridGuard.Cntry.VRtg : Param_Netz_Nennspannung: (detail-level: 0)
    • Parameter.PCC.ARtg : Param_Nennstrom_Netzanschluss: (detail-level: 0 / setting-level: 1)
    • Parameter.PCC.FlbInv.WMax : Param_Fallback_Wirkleistungsbegrenzung: (detail-level: 0 / setting-level: 1)
    • Parameter.Chrg.UseEnergyMeter : Param_Betrieb_mit_Netzanschlusspunktzaehler: (detail-level: 1 / setting-level: 1)
    • Parameter.Chrg.MinSwTms : Param_Minimale_Schaltdauer_Relais : (detail-level: 1 / setting-level: 1)
    • Parameter.Inverter.WMax : Param_Nennwirkleistung_WMaxOut: (detail-level: 1 / setting-level: 1)
    • Parameter.Inverter.WMaxIn : Param_Nennwirkleistung_WMaxIn: (detail-level: 1 / setting-level: 1)
    • Parameter.Inverter.WMaxInRtg : Param_Bemessungswirkleistung_WMaxInRtg: (detail-level: 1)
    • Parameter.Inverter.AcALim : Param_AC_Strom_Begrenzung: (detail-level: 0 / setting-level: 1)
    • Parameter.Nameplate.ARtg : Param_Nennstrom_alle_Phasen: (detail-level: 1)
    • Parameter.Nameplate.Location : Param_Geraetename : (detail-level: 1)
    • Parameter.PCC.WMaxAsym : Param_Maximale_Schieflast: (detail-level: 1 / setting-level: 1)
    • Parameter.Nameplate.ChrgCtrl.ChrgTypTxt :Param_Typ_Ladecontroller : (detail-level: 2)
    • Parameter.Nameplate.ChrgCtrl.SerNumTxt :Param_Seriennummer_Ladecontrollers : (detail-level: 2)
    • Parameter.Nameplate.ChrgCtrl.SusyId :Param_SusyID_Ladecontrollers : (detail-level: 2)
    • Parameter.Nameplate.ChrgCtrl.SwRevTxt :Param_SWVersion_Ladecontroller : (detail-level: 2)
    • Parameter.Nameplate.CmpMain.HwRev :Param_HWVersion_Hauptprozessor : (detail-level: 2)
    • Parameter.Nameplate.CmpMain.Rev :Param_Umbaustand_Hauptprozessor : (detail-level: 2)
    • Parameter.Nameplate.CmpMain.SerNum :Param_Seriennummer_Hauptprozessor : (detail-level: 2)
    • Parameter.Nameplate.CmpMain.SusyId :Param_SUSyID_Hauptprozessor : (detail-level: 2)
    • Parameter.Nameplate.CmpOS.SwRev :Param_Firmware_Version_Betriebssystem : (detail-level: 2)
    • Parameter.Nameplate.MacId :Param_MAC-Adresse : (detail-level: 2)
    • Parameter.Nameplate.MainModel :Param_Geraeteklasse : (detail-level: 2)
    • Parameter.Nameplate.Model :Param_Geraetetyp : (detail-level: 2)
    • Parameter.Nameplate.ModelStr :Param_Typenbezeichnung : (detail-level: 2)
    • Parameter.Nameplate.PkgRev :Param_Softwarepaket : (detail-level: 2)
    • Parameter.Nameplate.SerNum :Param_Seriennummer : (detail-level: 2)
    • Parameter.Nameplate.Vendor :Param_Hersteller : (detail-level: 2)
    • Parameter.Nameplate.WlMacId :Param_WLAN_MAC : (detail-level: 2)
    • Parameter.DevUpd.IsOn : Param_Geraete_Update_ein : (detail-level: 2)
    • Parameter.Inverter.OutPhs : Param_Phasenzuordnung : (detail-level: 2)
    • Parameter.Operation.ComTmOut : Param_Timeout_nach_Kommunikationsverlust: (detail-level: 2)
    • Parameter.Spdwr.IgmpQryTms : Param_IGMP_Query_Intervall: (detail-level: 2)
    • Parameter.Spdwr.IgmpQryTx : Param_IGMP_Anfragen_senden: (detail-level: 2)
    • Parameter.Spdwr.ActlDnsSrvIp :Param_Akt_Speedwire_Serveradresse : (detail-level: 2)
    • Parameter.Spdwr.ActlGwIp :Param_Akt_Speedwire_Gateway : (detail-level: 2)
    • Parameter.Spdwr.ActlIp :Param_Akt_Speedwire_IP : (detail-level: 2)
    • Parameter.Spdwr.ActlSnetMsk :Param_Akt_Speedwire_Subnetzmaske : (detail-level: 2)
    • Parameter.Spdwr.AutoCfgIsOn :Automatische_Speedwire-Konfig_an : (detail-level: 2)
    • Parameter.Sys.DevRstr : Param_Geraeteneustart_ausloesen: (detail-level: 2)
    • Parameter.SwCmp.CmpEnnexOS.Frwk.SwRev :Param_ennexOS_Framework_Version : (detail-level: 2)
    • Parameter.Upd.AutoUpdIsOn : Param_Auto_Update_an: (detail-level: 2)
    • Parameter.Upd.AvalChkIstl :Param_Auto_Speedwire_Konfig_an : (detail-level: 2)
    • Parameter.Wl.ActlGwIp :Param_IP_Gateway_WLAN : (detail-level: 2)
    • Parameter.Wl.ActlDnsSrvIp :Aktuelle_Speedwire-DNS-Serveradresse : (detail-level: 2)
    • Parameter.Wl.ActlIp :Param_IP_WLAN : (detail-level: 2)
    • Parameter.Wl.ActlSnetMsk :Param_IP_Subnetz_WLAN : (detail-level: 2)
    • Parameter.Wl.DoAcq :Param_WLAN_suchen : (detail-level: 2)
    • Parameter.Wl.DoWPS :Param_WPS_aktivieren : (detail-level: 2)
    • Parameter.Wl.ExsNetw[] :Param_Gefundenes_WLAN : (detail-level: 2)
    • Parameter.Wl.Sec.Cry :Param_Verschluesselung_WLAN : (detail-level: 2)
    • Parameter.Wl.Sec.Psk :Param_WLAN-Passwort : (detail-level: 2)
    • Parameter.Wl.Sec.Ssid :Param_SSID_WLAN : (detail-level: 2)
    • Parameter.Wl.AutoCfgIsOn : Param_Auto_Update_an: (detail-level: 2)
    • Parameter.Wl.IsOn : Param_WLAN_eingeschaltet: (detail-level: 2)
    • Parameter.Wl.SoftAcsIsOn : Param_Soft_Access_Point_an: (detail-level: 2)


    SMAInverter

    [EN DE]
    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


    Definition
      define <name> SMAInverter <pin> <hostname/ip>

    • pin: Passwort des Wechselrichters. Default ist 0000.
      Wechselrichter ohne Webinterface: Das Passwort kann über die Client Software "Sunny Explorer" geändert werden.
      Wechselrichter mit Webinterface: Das im Webinterface geänderte Passwort gilt auch für die Devicedefinition.
    • hostname/ip: Hostname oder IP-Adresse des Wechselrichters (bzw. dessen Speedwire Moduls mit Ethernetanschluss)
    • Der Speedwire-Port 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.

      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
    • detail-level [0|1|2]
      Legt den Umfang der ausgegebenen Readings fest.

        0 - nur Leistung und Energie
        1 - wie 0, zusätzlich Strom und Spannung
        2 - alle Werte

    • readEnergyMeter-data [1|0]
      Deaktiviert/aktiviert das lesen der Energymeter/Smartmeter Daten über den Wechselrichter.
      Die Readings Meter_xxx werden dann angelegt und mit Daten befüllt.

    • disable [1|0]
      Deaktiviert/aktiviert das Modul.

    • interval
      Abfrageinterval in Sekunden. (default: 60)

    • mode [automatic|manual]
      Abfragemodus des Wechselrichters. (default: automatic)

        automatic - die Wechselrichterwerte werden im eingestellten Interval abgefragt (Attribut "interval")
        manual - Abfrage nur mit "get <name> data"

    • offset <0 - 7200>
      Zeit in Sekunden, um die der reale Sonnenaufgang vorgezogen bzw. reale Sonnenuntergang verzögert wird. Dadurch wird die effektive Aktivzeit des Moduls erweitert.

    • SBFSpotComp [1|0]
      Die Readingnamen werden kompatibel zu SBFSpot-Ausgaben erzeugt. (default: 0)

    • showproctime [1|0]
      Zeigt die für den Hintergrundprozess und die Abfrage des Wechselrichter verbrauchte Zeit. (default: 0)

    • suppressSleep [1|0]
      Der Schlafmodus (nach Sonnenuntergang und vor Sonnenaufgang) wird ausgeschaltet und der WR abgefragt. (default: 0)

    • target-serial
      Im Falle eines Multigate muss 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. Ist nur ein Wechselrichter vorhanden und das Attribut nicht gesetzt, wird es automatisch definiert sobald die Seriennummer des Wechselrichters erkannt wurde. (default: 0xFFFFFFFF = keine Einschränkung)

    • target-susyid
      Im Falle eines Multigate muss 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. Ist nur ein Wechselrichter vorhanden und das Attribut nicht gesetzt, wird es automatisch definiert sobald die SUSyID des Wechselrichters erkannt wurde. (default: 0xFFFF = keine Einschränkung)

    • timeout
      Einstellung des timeout für die Wechselrichterabfrage in Sekunden. (default 60)

    • installerLogin
      Einloggen als Installateur, wird benötig um manche Parameter und Momentanwerte zu lesen. (default 0)

    Readings
    • BAT_CYCLES / bat_cycles : Akku Ladezyklen
    • BAT_IDC [A,B,C] / bat_idc [A,B,C] : Akku Strom [A,B,C]
    • BAT_TEMP [A,B,C] / bat_temp [A,B,C] : Akku Temperatur [A,B,C]
    • BAT_UDC [A,B,C] / bat_udc [A,B,C] : Akku Spannung [A,B,C]
    • BAT_PDC / bat_pdc : Akku Leistung (bei Hybridwechselrichtern), berechneter Wert aus Strom und Spannung
    • BAT_P_CHARGE / bat_p_charge : Akku Ladeleistung (bei Hybridwechselrichtern)
    • BAT_P_DISCHARGE / bat_p_discharge : Akku Entladeleistung (bei Hybridwechselrichtern)
    • ChargeStatus / chargestatus : Akku Ladestand
    • BAT_CAPACITY / bat_capacity : Battery (verbleibende) Kapazität (SOH)
    • BAT_RATED_CAPACITY / bat_rated_capacity : Battery Nennkapazität Wh/kWh
    • BAT_LOADTODAY : Battery Load Today
    • BAT_LOADTOTAL : Battery Load Total
    • BAT_UNLOADTODAY : Battery Unload Today
    • BAT_UNLOADTOTAL : Battery Unload Total
    • 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_EPVTOTAL / epvtotal : PV Energie Insgesamt
    • SPOT_EPVTODAY / epvtoday : PV Energie heute
    • SPOT_ETOTAL / etotal : Energie Insgesamt
    • SPOT_FEEDTM / feed-in_time : Einspeise-Stunden
    • SPOT_FREQ / grid_freq : Netz Frequenz
    • SPOT_CosPhi / coshhi : Verschiebungsfaktor
    • 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_IDC3 / string_3_idc : DC Strom Eingang 3
    • 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_PDC3 / string_3_pdc : DC Leistung Eingang 3
    • SPOT_PDC / strings_pds : DC Leistung gesamt (bei Hybridwechselrichtern)
    • 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_UAC1_2 / phase_1_2_uac : Netz Spannung phase L1-L2
    • SPOT_UAC2_3 / phase_2_3_uac : Netz Spannung phase L2-L3
    • SPOT_UAC3_1 / phase_3_1_uac : Netz Spannung phase L3-L1
    • SPOT_UDC1 / string_1_udc : DC Spannung Eingang 1
    • SPOT_UDC2 / string_2_udc : DC Spannung Eingang 2
    • SPOT_UDC3 / string_3_udc : DC Spannung Eingang 3
    • 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_BACKUPRELAY / backuprelay_status : Backup Relais Status (bei Hybridwechselrichtern)
    • INV_GridConection / grid_conection : Status des Netzanschlusses (Öffentliches Stromnetz/Getrennt) (nur SI-Inverter)
    • INV_GeneralOperatingStatus / general_operating_status
    • : Allgemeiner Betriebszustand des Wechselrichters (MPP/Eingeschaltet/Abregelung)
    • INV_OperatingStatus / operating_status : Betriebsstatus des Wechselrichters (Netzparallelbetrieb/Backup) (bei Hybridwechselrichtern)
    • INV_STATUS / device_status : Wechselrichter Status
    • INV_FIRMWARE / device_firmware : Wechselrichter Firmwareversion
    • INV_DC_Insulation / device_dc_insulation : Isolationswiderstand in Ohm der DC Seite (nur als Installateur zu lesen)
    • INV_DC_Residual_Current / device_dc_residual_current: Fehlerstrom in Ampere der DC Seite (nur als Installateur zu lesen)
    • SPOT_BACKUP_IAC1 / phase_backup_1_iac : Backup Strom phase L1
    • SPOT_BACKUP_IAC2 / phase_backup_2_iac : Backup Strom phase L2
    • SPOT_BACKUP_IAC3 / phase_backup_3_iac : Backup Strom phase L3
    • SPOT_BACKUP_PAC1 / phase_backup_1_pac : Backup Leistung phase L1
    • SPOT_BACKUP_PAC2 / phase_backup_2_pac : Backup Leistung phase L2
    • SPOT_BACKUP_PAC3 / phase_backup_3_pac : Backup Leistung phase L3
    • 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.
    • Meter_Grid_FeedIn_PACx / Meter_Grid_FeedIn_phase_x_pac : Leistung Netzeinspeisung phase Lx
    • Meter_Grid_Consumation_PACx / Meter_Grid_Consumation_phase_x_pac : Leistung Netzbezug phase Lx
    • Meter_Power_Grid_FeedIn / Meter_Power_Grid_FeedIn : Summe Leistung Netzeinspeisung
    • Meter_Power_Grid_Consumation / Meter_Power_Grid_Consumation : Summe Leistung Netzbezug
    • Meter_TOTAL_FeedIn / Meter_TOTAL_FeedIn : Summe Energie Netzeinspeisung
    • Meter_TOTAL_Consumation / Meter_TOTAL_Consumation : Summe Energie Netzbezug
    • Meter_TOTAL_Grid_FeedIn / Meter_TOTAL_Grid_FeedIn : Summe Energie Netzeinspeisung
    • Meter_TOTAL_Grid_Consumation / Meter_TOTAL_Grid_Consumation : Summe Energie Netzbezug


    SMARTMON

    [EN DE]
      Dieses Modul ist ein FHEM-Frontend zu dem Linux-Tool smartctl. Es liefert diverse Informationen zu dem S.M.A.R.T. System einer Festplatte.

      Define

      define <name> SMARTMON <device> [<Interval>]

      Diese Anweisung erstellt eine neue SMARTMON-Instanz. Die Parameter geben ein zu überwachenden Gerät und den Aktualisierungsinterval in Minuten an.

      Beispiel: define sm SMARTMON /dev/sda 60

      Readings:

      • last_exit_code
        Gibt den Exitcode bei der letzten Ausführung vom smartctl.

      • overall_health_test
        Gibt den allgemeinen Zustand der Platte an. Kann PASSED oder FAILED sein.

      • warnings
        Gibt die Anzahl der vermerkten Warnungen an.

      • Weiterhin können die verfügbaren SMART-Parameter als Readings angezeigt werden (RAW und/oder (teilweise) interpretiert).

      Get:

      • version
        Zeigt die verwendete Modul-Version an.

      • update
        Veranlasst die Aktualisierung der gelesenen Parameter.

      • list
        Zeigt verschiedenen Informationen an:
        • devices:
          Liste der im System verfügbaren Geräten.

        • info:
          Information zu dem aktuellen Gerät.

        • data:
          Liste der SMART-Parameter zu dem aktuellen Gerät.

        • health:
          Information zu dem allgemeinen Gesundheitsstatus für das verwendete Gerät.

        Für letzten 3 Befehle kann auch noch ein anderes Gerät als zusätzliche Parameter mitgegeben werden.


      Attributes:

      • show_raw
        Gültige Werte: 0: keine RAW-Readings anzeigen (default), 1: alle anzeigen, die nicht in interpretierten Readings enthalten sind, 2: alle anzeigen.

      • show_device_info
        Gültige Werte: 0: keine Geräteinforamtionen in readings, 1: Geräteinformationen in readings 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.


    • ssh_host
      Adresse einer entferten Maschine. Falls definiert, wird smartctrl dort per SSH ausgeführt.

    • Für weitere Informationen wird die smartctrl-Dokumentation empfohlen.

    SMASTP

    [EN DE]
    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

    [EN DE]

    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
      • RefreshShareIndex
        Startet die Aktualisierung der Bibliothek.
      • 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
      • allowedWebAccess <value>
        Definiert einen regulären Ausdruck für die erlaubten Adressen für Nachladedaten wie Musikdienste, Cover o.ä. Wenn nicht angegeben, dann wird alles zugelassen.
        '''z.B. Mit ^http:\/\/192\.168\.0\.\d+.*$ wird der Zugriff auf das lokale Netz (z.B. beim Laden von Daten vom Sonosplayer selbst) beschränkt.
        Alles Sperren geht über eine unmögliche Adresse wie ^xyz
      • coverLoadTimeout <value>
        Eines von (0..10,15,20,25,30). Definiert den Timeout der für die Abfrage des Covers beim Sonosplayer verwendet wird. Wenn nicht angegeben, dann wird 5 verwendet.
      • deviceRoomView <Both|DeviceLineOnly>
        Gibt an, was in der Raumansicht zum Sonosplayer-Device angezeigt werden soll. Both bedeutet "normale" Devicezeile zzgl. Cover-/Titelanzeige und u.U. Steuerbereich, DeviceLineOnly bedeutet nur die Anzeige der "normalen" Devicezeile.
      • disable <value>
        Eines von (0,1). Hiermit kann das Modul abgeschaltet werden. Wirkt sofort. Bei 1 wird der SubProzess beendet, und somit keine weitere Verarbeitung durchgeführt. Bei 0 wird der Prozess wieder gestartet.
        Damit kann das Modul temporär abgeschaltet werden, um bei der Neueinrichtung von Sonos-Komponenten keine halben Zustände mitzubekommen.
      • getFavouritesListAtNewVersion <value>
        Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die Favoriten (bei definiertem Attribut getListsDirectlyToReadings) bei Aktualisierung automatisch herunterzuladen.
      • getPlaylistsListAtNewVersion <value>
        Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die Playlisten (bei definiertem Attribut getListsDirectlyToReadings) bei Aktualisierung automatisch herunterzuladen.
      • getQueueListAtNewVersion <value>
        Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die aktuelle Abspielliste (bei definiertem Attribut getListsDirectlyToReadings) bei Aktualisierung automatisch herunterzuladen.
      • getRadiosListAtNewVersion <value>
        Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die Radioliste (bei definiertem Attribut getListsDirectlyToReadings) bei Aktualisierung automatisch herunterzuladen.
      • getListsDirectlyToReadings <value>
        Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die Listen für Favoriten, Playlists, Radios und Queue direkt in die entsprechenden Readings zu schreiben. Dafür sind dann keine Userreadings mehr notwendig.
      • getLocalCoverArt <value>
        Eines von (0,1). Mit diesem Attribut kann das Modul aufgefordert werden, die Cover lokal herunterzuladen (bisheriges Standardverhalten).
      • ignoredIPs <IP-Adresse>[,IP-Adresse]
        Mit diesem Attribut können IP-Adressen angegeben werden, die vom UPnP-System ignoriert werden sollen. Z.B.: "192.168.0.11,192.168.0.37"
      • pingType <string>
        Eines von (none,tcp,udp,icmp,syn). Gibt an, welche Methode für die Ping-Überprüfung verwendet werden soll. Wenn 'none' angegeben wird, dann wird keine Überprüfung gestartet.
      • reusePort <int>
        Eines von (0,1). Gibt an, ob die Portwiederwendung für SSDP aktiviert werden soll, oder nicht. Kann Restart-Probleme lösen. Wenn man diese Probleme nicht hat, sollte man das Attribut nicht setzen.
      • SubProcessLogfileName <Pfad>
        Hiermit kann für den SubProzess eine eigene Logdatei angegeben werden. Unter Windows z.B. überschreiben sich die beiden Logausgaben (von Fhem und SubProzess) sonst gegenseitig. Wenn "-" angegeben wird, wird wie bisher auf STDOUT (und damit im Fhem-Log) geloggt. Der Hauptanwendungsfall ist die mehr oder weniger kurzfristige Fehlersuche. Es werden keinerlei Variablenwerte ersetzt, und der Wert direkt als Dateiname verwendet.
      • usedonlyIPs <IP-Adresse>[,IP-Adresse]
        Mit diesem Attribut können IP-Adressen angegeben werden, die ausschließlich vom UPnP-System berücksichtigt werden sollen. Z.B.: "192.168.0.11,192.168.0.37"
    • Bookmark-Einstellungen
      • bookmarkSaveDir <path>
        Das Verzeichnis, in dem die Dateien für die gespeicherten Bookmarks abgelegt werden sollen. Wenn nicht festgelegt, dann wird "." verwendet.
      • 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.
      • webname <String>
        Hiermit kann der zu verwendende Webname für die Cover-Link-Erzeugung angegeben werden. Da vom Modul Links zu Cover u.ä. erzeugt werden, ohne dass es einen FhemWeb-Aufruf dazu gibt, kann das Modul diesen Pfad nicht selber herausfinden. Wenn das Attribut nicht angegeben wird, dann wird 'fhem' angenommen.
    • Sprachoptionen
      • targetSpeakDir <string>
        Gibt an, welches Verzeichnis für die Ablage des MP3-Files der Textausgabe verwendet werden soll
      • targetSpeakMP3FileConverter <string>
        Hiermit kann ein MP3-Konverter angegeben werden, da am Ende der Verkettung der Speak-Ansage das resultierende MP3-File nochmal sauber durchkodiert. Damit können Restzeitanzeigeprobleme behoben werden. Dadurch vegrößert sich allerdings u.U. die Ansageverzögerung.
      • targetSpeakMP3FileDir <string>
        Das Verzeichnis, welches als Standard für MP3-Fileangaben in Speak-Texten verwendet werden soll. Wird dieses Attribut definiert, können die Angaben bei Speak ohne Verzeichnis erfolgen.
      • targetSpeakURL <string>
        Gibt an, unter welcher Adresse der ZonePlayer das unter targetSpeakDir angegebene Verzeichnis erreichen kann.
      • targetSpeakFileTimestamp <int>
        One of (0, 1). Gibt an, ob die erzeugte MP3-Sprachausgabedatei einen Zeitstempel erhalten soll (1) oder nicht (0).
      • targetSpeakFileHashCache <int>
        One of (0, 1). Gibt an, ob die erzeugte Sprachausgabedatei einen Hashwert erhalten soll (1) oder nicht (0). Wenn dieser Wert gesetzt wird, dann wird eine bereits bestehende Datei wiederverwendet, und nicht neu erzeugt.
      • Speak1 <Fileextension>:<Commandline>
        Hiermit kann ein Systemaufruf definiert werden, der zu Erzeugung einer Sprachausgabe verwendet werden kann. Sobald dieses Attribut definiert wurde, ist ein entsprechender Setter am Sonosplayer verfügbar.
        Es dürfen folgende Platzhalter verwendet werden:
        '''%language%''': Wird durch die eingegebene Sprache ersetzt
        '''%filename%''': Wird durch den kompletten Dateinamen (inkl. Dateiendung) ersetzt.
        '''%text%''': Wird durch den zu übersetzenden Text ersetzt.
        '''%textescaped%''': Wird durch den URL-Enkodierten zu übersetzenden Text ersetzt.
      • 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

    [EN DE]

    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
      • ButtonLockState <int>
        One of (0, 1). Setzt den aktuellen Button-Sperr-Zustand.
      • 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) oder eine Sekundenangabe (z.B. 81). Man kann hier auch relative Angaben machen wie '+0:00:10' oder nur '+10'. Zusätzlich kann man auch Prozentwerte angeben wie z.B. '+10%'. Natürlich können diese Angaben auch negativ sein.
      • Pause
        Pausiert die Wiedergabe
      • Previous
        Springt an den Anfang des vorherigen Titels.
      • Play
        Startet die Wiedergabe
      • PlayT
        Startet die Wiedergabe, wenn gerade nichts abgespielt wird und pausiert sonst.
      • 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.
      • WifiPortStatus
        Liefert den Wifi-Portstatus. Kann 'Active' oder 'Inactive' liefern.
    • Listen
      • Favourites
        Liefert eine Liste mit den Namen aller gespeicherten Sonos-Favoriten. Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "Liste 1","Eintrag 2","Test"
      • FavouritesWithCovers
        Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller gespeicherten Sonos-Favoriten. Z.B.: {'FV:2/22' => {'Cover' => 'urlzumcover', 'Title' => '1. Favorit'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.
      • Playlists
        Liefert eine Liste mit den Namen aller gespeicherten Playlists. Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "Liste 1","Liste 2","Test"
      • PlaylistsWithCovers
        Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller gespeicherten Sonos-Playlisten. Z.B.: {'SQ:14' => {'Cover' => 'urlzumcover', 'Title' => '1. Playlist'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.
      • Queue
        Liefert eine Liste mit den Namen aller Titel in der aktuellen Abspielliste. Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "1. Liste 1 [0:02:14]","2. Eintrag 2 [k.A.]","3. Test [0:14:00]"
      • QueueWithCovers
        Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller Titel der aktuellen Abspielliste. Z.B.: {'Q:0/22' => {'Cover' => 'urlzumcover', 'Title' => '1. Titel'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.
      • Radios
        Liefert eine Liste mit den Namen aller gespeicherten Radiostationen (Favoriten). Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen. z.B. "Sender 1","Sender 2","Test"
      • RadiosWithCovers
        Liefert die Stringrepräsentation eines Hash mit den Namen und Covern aller gespeicherten Sonos-Radiofavoriten. Z.B.: {'R:0/0/2' => {'Cover' => 'urlzumcover', 'Title' => '1. Radiosender'}}. Dieser String kann einfach mit '''eval''' in eine Perl-Datenstruktur umgewandelt werden.
      • SearchlistCategories
        Liefert eine Liste mit den Namen alle möglichen Kategorien für den Aufruf von "LoadSearchlist". Das Format der Liste ist eine Komma-Separierte Liste, bei der die Namen in doppelten Anführungsstrichen stehen.
    • 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.
      • suppressControlButtons <int>
        One of (0,1). Gibt an, ob die Steuerbuttons unter der Cover-/Titelanzeige angezeigt werden sollen (=1) oder nicht (=0).
      • volumeStep <int>
        One of (0..100). Definiert die Schrittweite für die Aufrufe von VolumeU und VolumeD.
    • Informationen generieren
      • generateInfoSummarize1 <string>
        Erzeugt das Reading 'InfoSummarize1' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
      • generateInfoSummarize2 <string>
        Erzeugt das Reading 'InfoSummarize2' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
      • generateInfoSummarize3 <string>
        Erzeugt das Reading 'InfoSummarize3' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
      • generateInfoSummarize4 <string>
        Erzeugt das Reading 'InfoSummarize4' mit dem angegebenen Format. Mehr Informationen dazu im Bereich Beispiele.
      • getTitleInfoFromMaster <int>
        Eins aus (0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,45,60). Bringt das Device dazu, seine aktuellen Abspielinformationen vom aktuellen Gruppenmaster zu holen, wenn es einen solchen gibt.
      • simulateCurrentTrackPosition <int>
        Eins aus (0, 1). Bringt das Device dazu, seine aktuelle Abspielposition simuliert weiterlaufen zu lassen. Dazu werden die Readings currentTrackPositionSimulated und currentTrackPositionSimulatedSec gesetzt. Gleichzeitig wird auch das Reading currentTrackPositionSimulatedPercent (zwischen 0.0 und 100.0) gesetzt.
      • simulateCurrentTrackPositionPercentFormat <Format>
        Definiert das Format für die sprintf-Prozentausgabe im Reading currentTrackPositionSimulatedPercent.
      • stateVariable <string>
        One of (TransportState,NumberOfTracks,Track,TrackURI,TrackDuration,Title,Artist,Album,OriginalTrackNumber,AlbumArtist,
        Sender,SenderCurrent,SenderInfo,StreamAudio,NormalAudio,AlbumArtURI,nextTrackDuration,nextTrackURI,nextAlbumArtURI,
        nextTitle,nextArtist,nextAlbum,nextAlbumArtist,nextOriginalTrackNumber,Volume,Mute,Shuffle,Repeat,RepeatOne,CrossfadeMode,Balance,
        HeadphoneConnected,SleepTimer,Presence,RoomName,SaveRoomName,PlayerType,Location,SoftwareRevision,SerialNum,InfoSummarize1,I
        nfoSummarize2,InfoSummarize3,InfoSummarize4). Gibt an, welche Variable in das Reading state kopiert werden soll.
    • Steueroptionen
      • maxVolume <int>
        One of (0..100). Definiert die maximale Lautstärke dieses Zoneplayer.
      • minVolume <int>
        One of (0..100). Definiert die minimale Lautstärke dieses Zoneplayer.
      • maxVolumeHeadphone <int>
        One of (0..100). Definiert die maximale Lautstärke dieses Zoneplayer im Kopfhörerbetrieb.
      • minVolumeHeadphone <int>
        One of (0..100). Definiert die minimale Lautstärke dieses Zoneplayer im Kopfhörerbetrieb.
      • buttonEvents <Time:Pattern>[ <Time:Pattern> ...]
        Definiert, dass bei einer bestimten Tastenfolge am Player ein Event erzeugt werden soll. Die Definition der Events erfolgt als Tupel: Der erste Teil vor dem Doppelpunkt ist die Zeit in Sekunden, die berücksichtigt werden soll, der zweite Teil hinter dem Doppelpunkt definiert die Abfolge der Buttons, die für dieses Event notwendig sind.
        Folgende Button-Kürzel sind zulässig:
        • M: Der Mute-Button
        • H: Die Headphone-Buchse
        • U: Up-Button (Lautstärke Hoch)
        • D: Down-Button (Lautstärke Runter)

        Das Event, das geworfen wird, heißt ButtonEvent, der Wert ist die definierte Tastenfolge
        Z.B.: 2:MM
        Hier wird definiert, dass ein Event erzeugt werden soll, wenn innerhalb von 2 Sekunden zweimal die Mute-Taste gedrückt wurde. Das damit erzeugte Event hat dann den Namen ButtonEvent, und den Wert MM.
    • saveSleeptimerInAction <int>
      One of (0..1). Wenn gesetzt, wird ein etwaig gesetztes Attribut "stopSleeptimerInAction" ignoriert.
    • stopSleeptimerInAction <int>
      One of (0..1). Wenn gesetzt, wird bei einem Wechsel des transportState auf "PAUSED_PLAYBACK" oder "STOPPED" ein etwaig definierter SleepTimer deaktiviert.

    Beispiele / Hinweise

    • Format von InfoSummarize:
      infoSummarizeX := <NormalAudio>:summarizeElem:</NormalAudio> <StreamAudio>:summarizeElem:</StreamAudio>|:summarizeElem:
      :summarizeElem: := <:variable:[ prefix=":text:"][ suffix=":text:"][ instead=":text:"][ ifempty=":text:"]/[ emptyVal=":text:"]>
      :variable: := TransportState|NumberOfTracks|Track|TrackURI|TrackDuration|Title|Artist|Album|OriginalTrackNumber|AlbumArtist|
      Sender|SenderCurrent|SenderInfo|StreamAudio|NormalAudio|AlbumArtURI|nextTrackDuration|nextTrackURI|nextAlbumArtURI|
      nextTitle|nextArtist|nextAlbum|nextAlbumArtist|nextOriginalTrackNumber|Volume|Mute|Shuffle|Repeat|RepeatOne|CrossfadeMode|Balance|
      HeadphoneConnected|SleepTimer|Presence|RoomName|SaveRoomName|PlayerType|Location|SoftwareRevision|SerialNum|InfoSummarize1|
      InfoSummarize2|InfoSummarize3|InfoSummarize4

      :text: := [Jeder beliebige Text ohne doppelte Anführungszeichen]

    SSCal

    [EN DE]
      Mit diesem Modul erfolgt die Integration des Synology Calendar Servers in FHEM. Das Modul SSCal basiert auf Funktionen der Synology Calendar API.

      Die Verbindung zum Kalenderserver erfolgt über eine Session ID nach erfolgreichem Login. Anforderungen/Abfragen des Servers werden intern in einer Queue gespeichert und sequentiell abgearbeitet. Steht der Kalenderserver temporär nicht zur Verfügung, werden die gespeicherten Abfragen nachgeholt sobald die Verbindung zum Server wieder funktioniert.

      Es können sowohl Terminkalender (Events) und Aufgabenlisten (ToDo) verarbeitet werden. Für diese verschiedenen Kalenderarten können verschiedene Device-Models definiert werden, Model Diary für Terminkalender und Model Tasks für Aufgabenlisten.

      Wenn sie über dieses Modul diskutieren oder zur Verbesserung des Moduls beitragen möchten, ist im FHEM-Forum ein Sammelplatz unter:
      57_SSCal - Modul für den Synology Kalender.

      Weitere Infomationen zum Modul sind im FHEM-Wiki zu finden:
      SSCal - Integration des Synology Calendar Servers.


      Vorbereitung

        Als Grundvoraussetzung muss das Synology Calendar Package auf der Diskstation installiert sein.
        Im Synology DSM wird ein User benutzt, der Mitglied der Administrator-Group sein muß und zusätzlich die benötigte Berechtigung zum Lesen und/oder Schreiben der relevanten Kalender hat. Die Kalenderberechtigungen werden direkt in der Synology Kalenderapplikation eingestellt. Die Zugangsdaten werden später über ein Set credentials Kommando dem angelegten Device zugewiesen.

        Weiterhin müssen diverse Perl-Module installiert sein:

        JSON
        Data::Dumper
        MIME::Base64
        Time::HiRes
        Encode
        POSIX
        HttpUtils (FHEM-Modul)
        Blocking (FHEM-Modul)
        Meta (FHEM-Modul)


      Definition

        Bei der Definition wird zwischen einem Kalenderdevice für Termine (Events) und Aufgaben (Tasks) unterschieden.

        Die Definition erfolgt mit:

          define <Name> SSCal <ServerAddr> [<Port>] [<Protocol>] [Tasks]

        Die Parameter beschreiben im Einzelnen:

        Name der Name des neuen Kalenderdevices in FHEM
        ServerAddr die IP-Addresse der Synology DS. Hinweis: Wird der DNS-Name statt IP-Adresse verwendet, sollte das Attribut dnsServer im global Device gesetzt werden !
        Port optional - Port der Synology DS (default: 5000).
        Protocol optional - Protokoll zur Kommunikation mit dem Kalender-Server, http oder https (default: http).
        Tasks optional - zur Definition einer Aufgabenliste wird "Tasks" hinzugefügt


        Beispiele:
              define Appointments SSCal 192.168.2.10 
              define Appointments SSCal 192.168.2.10 5001 https 
              # erstellt Terminkalenderdevice mit Standardport (5000/http) bzw. https auf Port 5001
        
              define Tasklist SSCal ds.myds.org 5001 https Tasks 
              # erstellt Aufgabenlistendevice mit https auf Port 5001
             
        Nach der Definition eines Devices steht nur der set-Befehl credentials zur Verfügung. Mit diesem Befehl werden zunächst die Zugangsparameter dem Device bekannt gemacht.

        War der Login erfolgreich, werden alle dem User zugänglichen Kalender ermittelt und im Attribut usedCalendars zur Auswahl bereitgestellt.


      Set

        Die aufgeführten set-Kommandos sind sowohl für die Devicemodels Diary/Tasks oder teilweise nur für einen dieser Devicemodels gültig.

        • calUpdate [<Kalenderliste>]
          Ruft die Einträge der selektierten Kalender (siehe Attribut usedCalendars) ab. Alternativ kann eine Komma getrennte Liste der abzurufenden Kalender dem Befehl übergeben werden. Die Kalendernamen können Leerzeichen enthalten.

            Beispiel:

            set Appointments calUpdate
            # ruft die Einträge der im Attribut usedCalendars spezifizierten Kalender ab

            set Appointments calUpdate Heikos Kalender,Abfall
            # ruft die Einträge der Kalender "Heikos Kalender" und "Abfall" ab.


        • cleanCompleteTasks     (nur Model "Tasks")
          In den selektierten Aufgabenlisten (siehe Attribut usedCalendars) werden alle abgeschlossenen Aufgaben gelöscht.

        • deleteEventId <Id>
          Die angegebene Event Id (siehe Reading x_x_EventId) wird aus dem Kalender bzw. der Aufgabenliste gelöscht.

        • credentials <User> <Passwort>
          Speichert die Zugangsdaten.

        • eraseReadings
          Löscht alle Kalenderreadings.

        • listSendqueue
          Zeigt alle Einträge in der Sendequeue. Die Queue ist normalerweise nur kurz gefüllt, kann aber im Problemfall dauerhaft Einträge enthalten. Dadurch kann ein bei einer Abrufaufgabe aufgetretener Fehler ermittelt und zugeordnet werden.

        • logout
          Der User wird ausgeloggt und die Session mit der Synology DS beendet.

        • purgeSendqueue
          Löscht Einträge in der Sendequeue. Es stehen verschiedene Optionen je nach Situation zur Verfügung:

            -all- löscht alle in der Sendequeue vorhandenen Einträge
            -permError- löscht alle Einträge, die durch einen permanenten Fehler von der weiteren Verarbeitung ausgeschlossen sind
            <Index> löscht einen eindeutigen Eintrag der Sendequeue

        • restartSendqueue
          Die Abarbeitung der Einträge in der Sendequeue wird manuell neu angestoßen. Normalerweise nicht nötig, da die Sendequeue bei der Initialisierung jedes neuen Abrufs impliziz neu gestartet wird.

      Get

        • apiInfo
          Ruft die API Informationen des Synology Calendar Servers ab und öffnet ein Popup mit diesen Informationen.

        • calAsHtml
          Zeigt ein Popup mit einer Terminübersicht. In eigenen perl-Routinen und für die Einbindung in weblink kann diese Übersicht aufgerufen werden mit:

            { FHEM::SSCal::calAsHtml ("<SSCal-Device>") }

        • getCalendars
          Ruft die auf der Synology vorhandenen Kalender ab und öffnet ein Popup mit Informationen über die jeweiligen Kalender.


        • storedCredentials
          Zeigt die gespeicherten User/Passwort Kombination.


        • versionNotes
          Zeigt Informationen und Hilfen zum Modul.


      Attribute

        • asyncMode
          Wenn "1" wird das Datenparsing in einen Hintergrundprozess ausgelagert und vermeidet Blockierungssituationen.
          (default: 0)

        • createATDevs
          Wenn "1" werden bei der Erkennung von FHEM-Kommandos bzw. auszuführenden Perl-Routinen im Kalendereintrag durch SSCal automatisiert at-Devices zur termingerechten Ausführung dieser Kommandos erstellt, geändert und gelöscht.
          Auszuführende FHEM-Kommandos werden in { } eingeschlossen im Feld Beschreibung im Synology Kalender WebUI hinterlegt, Perl Routinen werden in doppelte {{ }} eingeschlossen.
          Lesen sie bitte dazu die detailliierte Beschreibung im Wiki Abschnitt at-Devices für Steuerungen automatisch erstellen und verwalten lassen.
          (default: 0)

        • cutOlderDays
          Terminkalendereinträge und Aufgabenkalendereinträge mit Fälligkeitstermin älter als die angegeben Tage werden von der Verarbeitung ausgeschlossen.
          (default: 5)

            Beispiel:

            attr <Name> cutOlderDays 30

        • cutLaterDays
          Terminkalendereinträge und Aufgabenkalendereinträge mit Fälligkeitstermin später als die angegeben Tage werden von der Verarbeitung ausgeschlossen.
          (default: 5)

            Beispiel:

            attr <Name> cutLaterDays 90

        • filterCompleteTask     (nur Model "Tasks")
          Es werden Einträge in Aufgabenkalendern entsprechend der Fertigstellung gefiltert:

            1 nur fertig gestellte Aufgaben werden angezeigt
            2 nur nicht fertige Aufgaben werden angezeigt
            3 es werden fertige und nicht fertige Aufgaben angezeigt (default)

        • filterDueTask     (nur Model "Tasks")
          Es werden Einträge in Aufgabenkalendern mit/ohne Fälligkeit gefiltert:

            1 nur Einträge mit Fälligkeitstermin werden angezeigt
            2 nur Einträge ohne Fälligkeitstermin werden angezeigt
            3 es werden Einträge mit und ohne Fälligkeitstermin angezeigt (default)

        • interval <Sekunden>
          Automatisches Abrufintervall der Kalendereintträge in Sekunden. Ist "0" agegeben, wird kein automatischer Datenabruf ausgeführt. (default)
          Sollen z.B. jede Stunde die Einträge der gewählten Kalender abgerufen werden, wird das Attribut wie folgt gesetzt:

            attr <Name> interval 3600

        • loginRetries
          Anzahl der Versuche für das inititiale User login.
          (default: 3)

        • showRepeatEvent     (nur Model "Diary")
          Wenn "true" werden neben einmaligen Terminen ebenfalls wiederkehrende Termine ausgewertet.
          (default: true)

        • showPassInLog
          Wenn "1" wird das Passwort bzw. die SID im Log angezeigt.
          (default: 0)

        • tableColumnMap
          Legt fest, wie der Link zur Karte in der Tabellspalte "Map" bzw. "Karte" gestaltet wird:

            icon es wird ein durch den User anpassbares Symbol angezeigt (default)
            data es werden die GPS-Daten angezeigt
            text es wird ein durch den Nutzer einstellbarer Text verwendet

          Der Nutzer kann weitere Anpassungen des verwendeten Icons oder Textes in den Eigenschaften des Attributs tableSpecs vornehmen. Für detailliierte Informationen dazu siehe Wiki-Kapitel Darstellung der Übersichtstabelle in Raum- und Detailansicht beeinflussen.

        • tableInDetail
          Eine Termin/Aufgabenübersicht wird in der Detailansicht erstellt bzw. ausgeschaltet.
          (default: 1)

        • tableInRoom
          Eine Termin/Aufgabenübersicht wird in der Raumansicht erstellt bzw. ausgeschaltet.
          (default: 1)

        • tableFields
          Auswahl der in der Termin/Aufgabenübersicht (Raum- bzw. Detailansicht) anzuzeigenden Felder über eine Drop-Down Liste.

        • tableSpecs
          Über verschiedene Schlüssel-Wertpaar Kombinationen kann die Darstellung der Informationen in der Übersichtstabelle angepasst werden. Das Wiki-Kapitel Darstellung der Übersichtstabelle in Raum- und Detailansicht beeinflussen liefert detailiierte Informationen dazu.

        • timeout <Sekunden>
          Timeout für den Datenabruf in Sekunden.
          (default: 20)

        • usedCalendars
          Auswahl der abzurufenden Kalender über ein Popup. Die Liste der Kalender wird beim Start des Moduls initial gefüllt, kann danach aber ebenfalls durch den Befehl:

            get <Name> getCalendars

          manuell ausgeführt werden. Wurde noch kein erfolgreicher Kalenderabruf ausgeführt, enthält dieses Attribut lediglich den Eintrag:

            --wait for Calendar list--


      Hinweise zur Eventgenerierung

        Je nach Umfang der abgerufenen Daten können sehr viele Readings erstellt werden. Um eine zu umfangreiche Eventgenerierung in FHEM zu verhindern, ist nach der Definition des Kalenderdevices das Attribut event-on-update-reading voreingestellt auf:

          attr event-on-update-reading .*Summary.*,state

        Sollen Events für alle Readings erstellt werden, muss event-on-update-reading auf .* eingestellt und nicht gelöscht werden.

        SSCal generiert für jedes Ereignis, welches einen Begin-Zeitpunkt enthält, zusätzliche Events bei jedem erneuten Einlesen eines Kalenders. Diese Events bieten dem Anwender Hilfe zur Erstellung eigener Steuerungslogiken in FHEM auf Grundlage von Kalendereinträgen.

        Der Event composite enthält die Informationsfelder:

        • Blocknummer des Termins
        • Event-ID des Termins
        • Kennzeichen für ein Serientermin (0=kein Serientermin oder 1=Serientermin)
        • Startzeitpunkt im ISO 8601 Format
        • Status des Events
        • den Text in Description (entspricht dem Feld Beschreibung im Synology Kalender WebUI) bzw. den Text in Summary falls Description nicht gesetzt ist

        Der Event compositeBlockNumbers enthält die Blocknummern aller Termine des Kalenders. Sind keine Termine vorhanden, enthält dieser Event nur den Wert none.

    SSCam

    [EN DE]
      Mit diesem Modul können Operationen von in der Synology Surveillance Station (SVS) definierten Kameras und Funktionen der SVS ausgeführt werden. Es basiert auf der SVS API und unterstützt die SVS ab Version 7.
      Zur Zeit werden folgende Funktionen unterstützt:

        • Start einer Aufnahme und optionaler Versand per Email und/oder Telegram
        • Stop einer Aufnahme per Befehl bzw. automatisch nach Ablauf einer einstellbaren Dauer
        • Auslösen von Schnappschnüssen / Aufnahmen und optional gemeinsamer Email-Versand mit dem integrierten Email-Client oder Synology Chat / Telegram
        • Auslösen von Schnappschnüssen aller definierten Kameras und optionaler gemeinsamer Email-Versand mittels integrierten Email-Client
        • 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 incl. Audiowiedergabe, anzeigen der letzten Aufnahme oder des letzten Schnappschusses
        • Abruf und Ausgabe der Kamera Streamkeys sowie Stream-Urls (Nutzung von Kamera-Livestreams ohne Session Id)
        • abspielen der letzten Aufnahme bzw. Anzeige des letzten Schnappschusses
        • anzeigen der gespeicherten Anmeldeinformationen (Credentials)
        • Ein- bzw. Ausschalten des Surveillance Station HomeMode und abfragen des HomeMode-Status
        • abrufen des Surveillance Station Logs, auswerten des neuesten Eintrags als Reading
        • erzeugen einer Gallerie der letzten 1-10 Schnappschüsse (als Popup oder permanentes Device)
        • Start bzw. Stop Objekt Tracking (nur unterstützte PTZ-Kameras mit dieser Fähigkeit)
        • Setzen/Löschen eines Presets (bei PTZ-Kameras)
        • Setzen der Home-Position (bei PTZ-Kameras)
        • erstellen eines Paneels zur Kamera-Steuerung. (bei PTZ-Kameras)
        • erzeugen unterschiedlicher Typen von separaten Streaming-Devices (createStreamDev)
        • Aktivierung / Deaktivierung eines kamerainternen PIR-Sensors
        • Erzeugung einer readingsGroup zur Anzeige aller definierten SSCam-Devices (createReadingsGroup)
        • Automatisiertes Anlegen aller in der SVS vorhandenen Kameras in FHEM (autocreateCams)
        • lokales Abspeichern der letzten Kamera-Aufnahme bzw. des letzten Schnappschusses
        • Auswahl unterschiedlicher Cache-Typen zur Bilddatenspeicherung (Attribut cacheType)
        • ausführen von Zoom-Aktionen (bei PTZ-Kameras die Zoom unterstützen)

      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.

      Integration in FHEM TabletUI:

      Zur Integration von SSCam Streaming Devices (Typ SSCamSTRM) wird ein Widget bereitgestellt. Für weitere Information dazu bitte den Artikel im Wiki durchlesen:
      FTUI Widget für SSCam Streaming Devices (SSCamSTRM).


      Vorbereitung

        Dieses Modul nutzt die Perl-Module JSON und MIME::Lite die üblicherweise nachinstalliert werden müssen.
        Auf Debian-Linux basierenden Systemen können sie installiert werden mit:

        sudo apt-get install libjson-perl
        sudo apt-get install libmime-lite-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
        Encode
        POSIX
        HttpUtils (FHEM-Modul)
        Blocking (FHEM-Modul)
        Meta (FHEM-Modul)
        Net::SMTP (wenn Bilddaten-Versand verwendet)
        MIME::Lite (wenn Bilddaten-Versand verwendet)
        CHI (wenn Cache verwendet wird)
        CHI::Driver::Redis (wenn Cache verwendet wird)
        Cache::Cache (wenn Cache verwendet wird)

        SSCam benutzt einen eigenen Satz Icons. Damit das System sie findet, ist im FHEMWEB Device das Attribut iconPath um sscam zu ergänzen.

          Beispiel
          attr WEB iconPath default:fhemSVG:openautomation:sscam


      Definition

        Bei der Definition wird zwischen einer Kamera-Definition und der Definition einer Surveillance Station (SVS), d.h. der Applikation selbst auf der Diskstation, unterschieden. Abhängig von der Art des definierten Devices wird das Internal MODEL auf "<Hersteller> - <Kameramodell>" oder SVS gesetzt und eine passende Teilmenge der beschriebenen set/get-Befehle dem Device zugewiesen.
        Der Gültigkeitsbereich von set/get-Befehlen ist nach dem jeweiligen Befehl angegeben "gilt für CAM, SVS, CAM/SVS".
        Die Kameras können einzeln manuell, alternativ auch automatisiert mittels einem vorher definierten SVS-Device angelegt werden.

        Eine Kamera wird definiert mit:

          define <Name> SSCAM <Kameraname in SVS> <ServerAddr> [Port] [Protocol]

        Zunächst muß diese Kamera in der Synology Surveillance Station 7.0 oder höher eingebunden sein und entsprechend funktionieren.

        Ein SVS-Device zur Steuerung von Funktionen der Surveillance Station wird definiert mit:

          define <Name> SSCAM SVS <ServerAddr> [Port] [Protocol]

        In diesem Fall wird statt <Kameraname in SVS> nur SVS angegeben. Ist das SVS-Device definiert und nach dem Setzen der Credentials einsatzbereit, können alle in der SVS vorhandenen Kameras mit dem Set-Befehl "autocreateCams" in FHEM automatisiert angelegt werden.

        Das Modul SSCam basiert auf Funktionen der Synology Surveillance Station API.

        Die Parameter beschreiben im Einzelnen:

        Name der Name des neuen Gerätes in FHEM
        Kameraname Kameraname wie er in der Synology Surveillance Station angegeben ist für Kamera-Device, "SVS" für SVS-Device. Leerzeichen im Namen sind nicht erlaubt.
        ServerAddr die IP-Addresse des Synology Surveillance Station Host. Hinweis: Es sollte kein Servername verwendet werden weil DNS-Aufrufe in FHEM blockierend sind.
        Port optional - der Port der Synology Disc Station. Wenn nicht angegeben, wird der Default-Port "5000" genutzt
        Protocol optional - das Protokoll (http oder https) zum Funktionsaufruf. Wenn nicht angegeben, wird der Default "http" genutzt


        Beispiel:
              define CamCP SSCAM Carport 192.168.2.20 [5000] [http] 
              define CamCP SSCAM Carport 192.168.2.20 [5001] [https]
              # erstellt ein neues Kamera-Device CamCP
        
              define DS1 SSCAM SVS 192.168.2.20 [5000] [http] 
              define DS1 SSCAM SVS 192.168.2.20 [5001] [https] 
              # erstellt ein neues SVS-Device DS1
             
        Wird eine neue Kamera definiert, wird diesem Device zunächst eine Standardaufnahmedauer von 15 zugewiesen.
        Über das rectime Attribut 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 rectime Attribut gelöscht, greift wieder der Default-Wert (15s) für die Aufnahmedauer.

        Mit dem Befehl "set <name> on [rectime]" wird die Aufnahmedauer temporär festgelegt und überschreibt einmalig sowohl den Defaultwert als auch den Wert des gesetzten Attributs "rectime".
        Auch in diesem Fall führt "set <name> on 0" zu einer Daueraufnahme.

        Eine eventuell in der SVS eingestellte Dauer der Voraufzeichnung wird weiterhin berücksichtigt.

        Erkennt das Modul die definierte Kamera als PTZ-Device (Reading "DeviceType = PTZ"), wird automatisch ein Steuerungspaneel in der Detailansicht erstellt. Dieses Paneel setzt SVS >= 7.1 voraus. Die Eigenschaften und das Verhalten des Paneels können mit den Attributen "ptzPanel_.*" beeinflusst werden.
        Siehe dazu auch den Befehl "set <name> createPTZcontrol".


      Credentials

        Nach dem Definieren des Gerätes müssen zuerst die Zugangsparameter gespeichert werden. Das geschieht mit dem Befehl:
             set <name> credentials <Username> <Passwort>
            
        Die Passwortlänge beträgt maximal 20 Zeichen.
        Der Anwender kann in Abhängigkeit der beabsichtigten einzusetzenden Funktionen einen Nutzer im DSM bzw. in der Surveillance Station einrichten. Sollte im DSM die 2-Stufen Verifizierung aktiviert sein, ist die Session mit der Surveillance Station aufzubauen (session = SurveillanceStation Attribut).

        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/Funktionen 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 session Attribut kann ausgewählt werden, ob die Session mit dem DSM oder der SVS aufgebaut werden soll. Weitere Informationen zum Usermanagement in der SVS sind verfügbar mit "get <name> versionNotes 5".
        Erfolgt der Session-Aufbau mit dem DSM, stehen neben der SVS Web-API auch darüber hinausgehende API-Zugriffe zur Verfügung, die unter Umständen zur Verarbeitung benötigt werden.

        Nach der Gerätedefinition ist die Grundeinstellung "Login in das DSM", d.h. es können Credentials mit Admin-Berechtigungen genutzt werden um zunächst alle Funktionen der Kameras testen zu können. Danach können die Credentials z.B. in Abhängigkeit der benötigten Funktionen auf eine SVS-Session mit entsprechend beschränkten Privilegienprofil umgestellt werden.

        Die nachfolgende Aufstellung zeigt die Mindestanforderungen der jeweiligen Modulfunktionen an die Nutzerrechte.

        • set ... credentials
        • -
        • set ... delPreset
        • session: ServeillanceStation - Betrachter
        • set ... disable
        • session: ServeillanceStation - Manager mit dem Kamera bearbeiten Recht
        • set ... enable
        • session: ServeillanceStation - Manager mit dem Kamera bearbeiten Recht
        • set ... expmode
        • session: ServeillanceStation - Manager
        • set ... extevent
        • session: DSM - Nutzer Mitglied von Admin-Gruppe
        • set ... goPreset
        • session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
        • set ... homeMode
        • session: ServeillanceStation - Betrachter mit Privileg Home-Modus schalten ( gilt für SVS-Device ! )
        • set ... goAbsPTZ
        • session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
        • set ... move
        • session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
        • set ... motdetsc
        • session: ServeillanceStation - Manager
        • set ... on
        • session: ServeillanceStation - Betrachter mit erweiterten Privileg "manuelle Aufnahme"
        • set ... off
        • session: ServeillanceStation - Betrachter mit erweiterten Privileg "manuelle Aufnahme"
        • set ... runView
        • session: ServeillanceStation - Betrachter mit Privileg Liveansicht für Kamera
        • set ... runPatrol
        • session: ServeillanceStation - Betrachter mit Privileg Objektivsteuerung der Kamera
        • set ... setHome
        • session: ServeillanceStation - Betrachter
        • set ... setPreset
        • session: ServeillanceStation - Betrachter
        • set ... snap
        • session: ServeillanceStation - Betrachter
        • set ... snapGallery
        • session: ServeillanceStation - Betrachter
        • set ... stopView
        • -
        • get ... caminfo[all]
        • session: ServeillanceStation - Betrachter
        • get ... eventlist
        • session: ServeillanceStation - Betrachter
        • get ... listLog
        • session: ServeillanceStation - Betrachter
        • get ... listPresets
        • session: ServeillanceStation - Betrachter
        • get ... scanVirgin
        • session: ServeillanceStation - Betrachter
        • get ... svsinfo
        • session: ServeillanceStation - Betrachter
        • get ... snapfileinfo
        • session: ServeillanceStation - Betrachter
        • get ... snapGallery
        • session: ServeillanceStation - Betrachter
        • get ... snapinfo
        • session: ServeillanceStation - Betrachter
        • get ... stmUrlPath
        • session: ServeillanceStation - Betrachter


      HTTP-Timeout setzen

        Alle Funktionen dieses Moduls verwenden HTTP-Aufrufe gegenüber der SVS Web API.
        Durch Setzen des Attributes httptimeout > 0 kann dieser Wert bei Bedarf entsprechend den technischen Gegebenheiten angepasst werden.



      Set

        Die aufgeführten set-Befehle sind für CAM/SVS-Devices oder nur für CAM-Devices bzw. nur für SVS-Devices gültig. Sie stehen im Drop-Down-Menü des jeweiligen Devices zur Auswahl zur Verfügung.

        • autocreateCams     (gilt für SVS)

        • Ist ein SVS-Device definiert, können mit diesem Befehl alle in der SVS integrierten Kameras automatisiert angelegt werden. Bereits definierte Kameradevices werden übersprungen. Die neu erstellten Kameradevices werden im gleichen Raum wie das SVS-Device definiert (default SSCam). Weitere sinnvolle Attribute werden ebenfalls voreingestellt.

        • createStreamDev [generic | hls | lastsnap | mjpeg | switched]     (gilt für CAM)
          bzw.
          createStreamDev [master]     (gilt für SVS)

          Es wird ein separates Streaming-Device (Typ SSCamSTRM) erstellt. Dieses Device kann z.B. als separates Device in einem Dashboard genutzt werden. Dem Streaming-Device wird der aktuelle Raum des Kameradevice zugewiesen sofern dort gesetzt.

            generic - das Streaming-Device gibt einen durch das Attribut genericStrmHtmlTag bestimmten Content wieder
            hls - das Streaming-Device gibt einen permanenten HLS Datenstrom wieder
            lastsnap - das Streaming-Device zeigt den neuesten Schnappschuß an
            mjpeg - das Streaming-Device gibt einen permanenten MJPEG Kamerastream wieder (Streamkey Methode)
            switched - Wiedergabe unterschiedlicher Streamtypen. Drucktasten zur Steuerung werden angeboten.
            master - mit dem Master Device kann ein anderes definiertes Streaming Device adoptiert und dessen Content angezeigt werden

          Die Gestaltung kann durch HTML-Tags im Attribut htmlattr im Kameradevice oder mit den spezifischen Attributen im Streaming-Device beeinflusst werden.

        • Streaming Device "hls"

          Das Streaming-Device vom Typ "hls" verwendet die Bibliothek hls.js zur Bildverarbeitung und ist auf allen Browsern mit MediaSource extensions (MSE) lauffähig. Mit dem Attribut hlsNetScript kann bestimmt werden, ob die lokal installierte hls.js (./www/pgm2/sscam_hls.js) oder immer die aktuellste Bibliotheksversion von der hls.js Projektseite verwendet werden soll. Dieses Attribut ist zentral in einem Device vom Typ "SVS" zu setzen !
          Bei Verwendung dieses Streamingdevices ist zwingend das Attribut hlsStrmObject im verbundenen Kamera-Device (siehe Internal PARENT) anzugeben.

          Streaming Device "switched hls"

          Dieser Typ nutzt den von der Synology Surveillance Station gelieferten HLS Videostream. Soll ein HLS-Stream im Streaming-Device vom Typ "switched" gestartet werden, muss die Kamera in der Synology Surveillance Station auf das Videoformat H.264 eingestellt und HLS von der eingesetzten SVS-Version unterstützt sein. Diese Auswahltaste wird deshalb im nur dann im Streaming-Device angeboten, wenn das Reading "CamStreamFormat = HLS" beinhaltet.
          HLS (HTTP Live Streaming) kann momentan nur auf Mac Safari oder mobilen iOS/Android-Geräten wiedergegeben werden.

          Streaming Device "generic"

          Ein Streaming-Device vom Typ "generic" benötigt die Angabe von HTML-Tags im Attribut "genericStrmHtmlTag". Diese Tags spezifizieren den wiederzugebenden Content.

            Beispiele:
            attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
                                             <source src='http://192.168.2.10:32000/$NAME.m3u8' type='application/x-mpegURL'>
                                           </video>
            
            attr <name> genericStrmHtmlTag <img $HTMLATTR
                                             src="http://192.168.2.10:32774"
                                             onClick="FW_okDialog('<img src=http://192.168.2.10:32774 $PWS >')"
                                           >
                  
            Die Variablen $HTMLATTR, $NAME und $PWS sind Platzhalter und übernehmen ein gesetztes Attribut "htmlattr", den SSCam- Devicenamen bzw. das Attribut "popupWindowSize" im Streaming-Device, welches die Größe eines Popup-Windows festlegt.


          Streaming Device "lastsnap"

          Dieser Typ gibt den neuesten Schnappschuß wieder. Der Schnappschuss wird per default als Icon, d.h. in einer verminderten Auflösung abgerufen. Um die Originalauflösung zu verwenden, ist im zugehörigen Kameradevice (Internal PARENT) das Attribut "snapGallerySize = Full" zu setzen. Dort sollte ebenfalls das Attribut "pollcaminfoall" gesetzt sein, um regelmäßig die neuesten Schnappschußdaten abzurufen.

          Streaming Device "master"

          Dieser Typ kann selbst keine Streams wiedergeben. Die Umschaltung der Wiedergabe des Contents eines anderen definierten Streaming Devices erfolgt durch den Set-Befehl adopt im Master Streaming Device.


        • createPTZcontrol     (gilt für PTZ-CAM)

        • Es wird ein separates PTZ-Steuerungspaneel (Type SSCamSTRM) erstellt. Es wird der aktuelle Raum des Kameradevice zugewiesen sofern dort gesetzt (default "SSCam"). Mit den "ptzPanel_.*"-Attributen bzw. den spezifischen Attributen des erzeugten SSCamSTRM-Devices können die Eigenschaften des PTZ-Paneels beeinflusst werden.


        • createReadingsGroup [<Name der readingsGroup>]     (gilt für CAM/SVS)

        • Es wird ein readingsGroup-Device zur Übersicht aller vorhandenen SSCam-Devices erstellt. Es kann ein eigener Name angegeben werden. Ist kein Name angegeben, wird eine readingsGroup mit dem Namen "RG.SSCam" erzeugt.


        • createSnapGallery     (gilt für CAM)

        • Es wird eine Schnappschußgallerie als separates Device (Type SSCamSTRM) erzeugt. Das Device wird im Raum "SSCam" erstellt. Mit den "snapGallery..."-Attributen bzw. den spezifischen Attributen des erzeugten SSCamSTRM-Devices können die Eigenschaften der Schnappschußgallerie beeinflusst werden.

          Hinweis
          Die Namen der Kameras in der SVS sollten sich nicht stark ähneln, da es ansonsten zu Ungenauigkeiten beim Abruf der Schnappschußgallerie kommen kann.


        • credentials <username> <password>     (gilt für CAM/SVS)

        • Setzt Username / Passwort für den Zugriff auf die Synology Surveillance Station. Siehe Credentials


        • delPreset <PresetName>     (gilt für PTZ-CAM)

        • Löscht einen Preset "<PresetName>". Im FHEMWEB wird eine Drop-Down Liste der aktuell vorhandenen Presets angeboten.


        • disableCam     (gilt für CAM)
          Deaktiviert die Kamera in der Synology Surveillance Station.


        • enableCam     (gilt für CAM)
          Aktiviert die Kamera in der Synology Surveillance Station.


        • expmode [day|night|auto]     (gilt für CAM)
          Mit diesem Befehl kann der Belichtungsmodus der Kameras gesetzt werden. Dadurch wird z.B. das Verhalten der Kamera-LED's entsprechend gesteuert. Die erfolgreiche Umschaltung wird durch das Reading CamExposureMode ("get ... caminfoall") reportet.

          Hinweis:
          Die erfolgreiche Ausführung dieser Funktion ist davon abhängig ob die SVS diese Funktionalität der Kamera unterstützt. Ist in SVS -> IP-Kamera -> Optimierung -> Belichtungsmodus das Feld für den Tag/Nachtmodus grau hinterlegt, ist nicht von einer lauffähigen Unterstützung dieser Funktion auszugehen.


        • extevent [ 1-10 ]     (gilt für SVS)

        • Dieses Kommando triggert ein externes Ereignis (1-10) in der SVS. Die Aktionen, die dieses Ereignis auslöst, sind zuvor in dem Aktionsregeleditor der SVS einzustellen. Es stehen die Ereignisse 1-10 zur Verfügung. In der Benachrichtigungs-App der SVS können auch Email, SMS oder Mobil (DS-Cam) Nachrichten ausgegeben werden wenn ein externes Ereignis ausgelöst wurde. Nähere Informationen dazu sind in der Hilfe zum Aktionsregeleditor zu finden. Der verwendete User benötigt Admin-Rechte in einer DSM-Session.


        • goAbsPTZ [ X Y | up | down | left | right ]     (gilt für CAM)
          Mit diesem Kommando wird eine PTZ-Kamera in Richtung einer wählbaren absoluten X/Y-Koordinate bewegt, oder zur maximalen Absolutposition in Richtung up/down/left/right. Die Option ist nur für Kameras verfügbar die das Reading "CapPTZAbs=true" (die Fähigkeit für PTZAbs-Aktionen) besitzen. Die Eigenschaften der Kamera kann mit "get <name> caminfoall" abgefragt werden.

          Beispiel für Ansteuerung absoluter X/Y-Koordinaten:
                set <name> goAbsPTZ 120 450
              
          Dieses Beispiel bewegt die Kameralinse in die Position X=120 und Y=450.
          Der Wertebereich ist dabei:
                X = 0 - 640      (0 - 319 bewegt nach links, 321 - 640 bewegt nach rechts, 320 bewegt die Linse nicht)
                Y = 0 - 480      (0 - 239 bewegt nach unten, 241 - 480 bewegt nach oben, 240 bewegt die Linse nicht)
              
          Die Linse kann damit in kleinsten bis sehr großen Schritten in die gewünschte Richtung bewegt werden. Dieser Vorgang muß ggf. mehrfach wiederholt werden um die Kameralinse in die gewünschte Position zu bringen.


        • Soll die Bewegung mit der maximalen Schrittweite erfolgen, kann zur Vereinfachung der Befehl:
                set <name> goAbsPTZ [up|down|left|right]
              
          verwendet werden. Die Optik wird in diesem Fall mit der größt möglichen Schrittweite zur Absolutposition in der angegebenen Richtung bewegt. Auch in diesem Fall muß der Vorgang ggf. mehrfach wiederholt werden um die Kameralinse in die gewünschte Position zu bringen.


        • goPreset <Preset>     (gilt für CAM)

        • Mit diesem Kommando können PTZ-Kameras in eine vordefininierte Position bewegt werden.
          Die Preset-Positionen müssen dazu zunächst in der Synology Surveillance Station angelegt worden sein. Das geschieht in der PTZ-Steuerung im IP-Kamera Setup. Die Presets werden über das Kommando "get <name> caminfoall" eingelesen (geschieht bei restart von FHEM automatisch). Der Einlesevorgang kann durch ein Kamerapolling regelmäßig wiederholt werden. Ein langes Pollingintervall ist in diesem Fall empfehlenswert, da sich die Presetpositionen nur im Fall der Neuanlage bzw. Änderung verändern werden.

          Hier ein Beispiel einer PTZ-Steuerung in Abhängigkeit eines IR-Melder Events:
              define CamFL.Preset.Wandschrank notify MelderTER:on.* set CamFL goPreset Wandschrank, ;; define CamFL.Preset.record at +00:00:10 set CamFL on 5 ;;;; define s3 at +*{3}00:00:05 set CamFL snap ;; define CamFL.Preset.back at +00:00:30 set CamFL goPreset Home
            
          Funktionsweise:
          Der IR-Melder "MelderTER" registriert eine Bewegung. Daraufhin wird die Kamera CamFL in die Preset-Position "Wandschrank" gebracht. Eine Aufnahme mit Dauer von 5 Sekunden startet 10 Sekunden später. Da die Voraufnahmezeit der Kamera 10s beträgt (vgl. Reading "CamPreRecTime"), startet die effektive Aufnahme wenn der Kameraschwenk beginnt.
          Mit dem Start der Aufnahme werden drei Schnappschüsse im Abstand von 5 Sekunden angefertigt.
          Nach einer Zeit von 30 Sekunden fährt die Kamera wieder zurück in die "Home"-Position.

          Ein Auszug aus dem Log verdeutlicht den Ablauf:
             2016.02.04 15:02:14 2: CamFL - Camera Flur_Vorderhaus has moved to position "Wandschrank"
             2016.02.04 15:02:24 2: CamFL - Camera Flur_Vorderhaus Recording with Recordtime 5s started
             2016.02.04 15:02:29 2: CamFL - Snapshot of Camera Flur_Vorderhaus has been done successfully
             2016.02.04 15:02:30 2: CamFL - Camera Flur_Vorderhaus Recording stopped
             2016.02.04 15:02:34 2: CamFL - Snapshot of Camera Flur_Vorderhaus has been done successfully
             2016.02.04 15:02:39 2: CamFL - Snapshot of Camera Flur_Vorderhaus has been done successfully
             2016.02.04 15:02:44 2: CamFL - Camera Flur_Vorderhaus has moved to position "Home"
            


        • homeMode [on|off]     (gilt für SVS)

        • Schaltet den HomeMode der Surveillance Station ein bzw. aus. Informationen zum HomeMode sind in der Synology Onlinehilfe enthalten.

        • motdetsc [camera [<options>] | SVS [<options>] | disable]     (gilt für CAM)
          Der Befehl 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. Optionen können in einem Script verwendet werden.


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

            set <name> motdetsc SVS [Empfindlichkeit] [Schwellenwert] # Befehlsmuster
            set <name> motdetsc SVS 91 30 # setzt die Empfindlichkeit auf 91 und den Schwellwert auf 30
            set <name> motdetsc SVS 0 40 # behält gesetzten Wert für Empfindlichkeit bei, setzt Schwellwert auf 40
            set <name> motdetsc SVS 15 # setzt die Empfindlichkeit auf 15, Schwellenwert bleibt unverändert


          Wird die Bewegungserkennung durch die Kamera genutzt, stehen die Optionen "Empfindlichkeit", "Objektgröße" und "Prozentsatz für Auslösung" zur Verfügung.

            set <name> motdetsc camera [Empfindlichkeit] [Objektgröße] [Prozentsatz] # Befehlsmuster
            set <name> motdetsc camera 89 0 20 # setzt die Empfindlichkeit auf 89, Prozentsatz auf 20
            set <name> motdetsc camera 0 40 10 # behält gesetzten Wert für Empfindlichkeit bei, setzt Schwellwert auf 40, Prozentsatz auf 10
            set <name> motdetsc camera 30 # setzt die Empfindlichkeit auf 30, andere Werte bleiben unverändert


          Es ist immer die Reihenfolge der Optionswerte zu beachten. Nicht gewünschte Optionen sind mit "0" zu besetzen sofern danach Optionen folgen deren Werte verändert werden sollen (siehe Beispiele oben). Der Zahlenwert der Optionen beträgt 1 - 99 (außer Sonderfall "0").

          Die jeweils verfügbaren Optionen unterliegen der Funktion der Kamera und der Unterstützung durch die SVS. Es können jeweils nur die Optionen genutzt werden die in SVS -> Kamera bearbeiten -> Ereigniserkennung zur Verfügung stehen. Weitere Infos sind der Online-Hilfe zur SVS zu entnehmen.

          Über den Befehl "get <name> caminfoall" wird auch das Reading "CamMotDetSc" aktualisiert welches die gegenwärtige Einstellung der Bewegungserkennung dokumentiert. Es werden nur die Parameter und Parameterwerte angezeigt, welche die SVS aktiv unterstützt. Die Kamera selbst kann weiterführende Einstellmöglichkeiten besitzen.

          Beipiel:
            CamMotDetSc    SVS, sensitivity: 76, threshold: 55
            


        • move [ right | up | down | left | dir_X ] [Sekunden]     (gilt für CAM bis SVS Version 7.1)
        • move [ right | upright | up | upleft | left | downleft | down | downright ] [Sekunden]     (gilt für CAM ab SVS Version 7.2)

          Mit diesem Kommando wird eine kontinuierliche Bewegung der PTZ-Kamera gestartet. Neben den vier Grundrichtungen up/down/left/right stehen auch Zwischenwinkelmaße "dir_X" zur Verfügung. Die Feinheit dieser Graduierung ist von der Kamera abhängig und kann dem Reading "CapPTZDirections" entnommen werden.

          Das Bogenmaß von 360 Grad teilt sich durch den Wert von "CapPTZDirections" und beschreibt die Bewegungsrichtungen beginnend mit "0=rechts" entgegen dem Uhrzeigersinn. D.h. bei einer Kamera mit "CapPTZDirections = 8" bedeutet dir_0 = rechts, dir_2 = oben, dir_4 = links, dir_6 = unten bzw. dir_1, dir_3, dir_5 und dir_7 die entsprechenden Zwischenrichtungen. Die möglichen Bewegungsrichtungen bei Kameras mit "CapPTZDirections = 32" sind dementsprechend kleinteiliger.

          Im Gegensatz zum "set <name> goAbsPTZ"-Befehl startet der Befehl "set <name> move" eine kontinuierliche Bewegung bis ein Stop-Kommando empfangen wird. Das Stop-Kommando wird nach Ablauf der optional anzugebenden Zeit [Sekunden] ausgelöst. Wird diese Laufzeit nicht angegeben, wird implizit Sekunde = 1 gesetzt.

          Beispiele:
              set <name> move up 0.5      : bewegt PTZ 0,5 Sek. (zzgl. Prozesszeit) nach oben
              set <name> move dir_1 1.5   : bewegt PTZ 1,5 Sek. (zzgl. Prozesszeit) nach rechts-oben
              set <name> move dir_20 0.7  : bewegt PTZ 1,5 Sek. (zzgl. Prozesszeit) nach links-unten ("CapPTZDirections = 32)"
            

        • off     (gilt für CAM)

        • Stoppt eine laufende Aufnahme.


        • on [<rectime>]
          [recEmailTxt:"subject => <Betreff-Text>, body => <Mitteilung-Text>"]
          [recTelegramTxt:"tbot => <TelegramBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>], option => [silent]"]
          [recChatTxt:"chatbot => <SSChatBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>]"]

              (gilt für CAM)

        • Startet eine Aufnahme. Die Standardaufnahmedauer beträgt 15 Sekunden. Sie kann mit dem Attribut "rectime" individuell festgelegt werden. Die im Attribut (bzw. im Standard) hinterlegte Aufnahmedauer kann einmalig mit "set <name> on <rectime>" überschrieben werden. Die Aufnahme stoppt automatisch nach Ablauf der Zeit "rectime".
          Ein Sonderfall ist der Start einer Daueraufnahme mit "set <name> on 0" bzw. dem Attributwert "rectime = 0". In diesem Fall wird eine Daueraufnahme gestartet, die explizit wieder mit dem Befehl "set <name> off" gestoppt werden muß.
          Das Aufnahmeverhalten kann weiterhin mit dem Attribut "recextend" beeinflusst werden.

          Attribut "recextend = 0" bzw. nicht gesetzt (Standard):
          • Wird eine Aufnahme mit z.B. rectime=22 gestartet, wird kein weiterer Startbefehl für eine Aufnahme akzeptiert bis diese gestartete Aufnahme nach 22 Sekunden beendet ist. Ein Hinweis wird bei verbose=3 im Logfile protokolliert.

          Attribut "recextend = 1" gesetzt:
          • Eine zuvor gestartete Aufnahme wird bei einem erneuten "set on" -Befehl um die Aufnahmezeit "rectime" verlängert. Das bedeutet, dass der Timer für den automatischen Stop auf den Wert "rectime" neu gesetzt wird. Dieser Vorgang wiederholt sich mit jedem Start-Befehl. Dadurch verlängert sich eine laufende Aufnahme bis kein Start-Inpuls mehr registriert wird.
          • eine zuvor gestartete Endlos-Aufnahme wird mit einem erneuten "set on"-Befehl nach der Aufnahmezeit "rectime" gestoppt (Timerneustart). Ist dies nicht gewünscht, ist darauf zu achten dass bei der Verwendung einer Endlos-Aufnahme das Attribut "recextend" nicht verwendet wird.

          Ein Synology Chat Versand der Aufnahme kann durch Setzen des recChatTxt Attributs permanent aktiviert werden. Das zu verwendende SSChatBot-Device muss natürlich funktionstüchtig eingerichtet sein.
          Der Text im Attribut "recChatTxt" kann durch die Spezifikation des optionalen "recChatTxt:"-Tags, wie oben gezeigt, temporär überschrieben bzw. geändert werden. Sollte das Attribut "recChatTxt" nicht gesetzt sein, wird durch Angabe dieses Tags der Versand mit Synology Chat einmalig aktiviert. (die Tag-Syntax entspricht dem "recChatTxt"-Attribut)

          Ein Email-Versand der letzten Aufnahme kann durch Setzen des recEmailTxt aktiviert werden. Zuvor ist der Email-Versand, wie im Abschnitt Einstellung Email-Versand beschrieben, einzustellen. (Für weitere Informationen "get <name> versionNotes 7" ausführen)
          Alternativ kann durch Verwendung des optionalen "recEmailTxt:"-Tags der Email-Versand der gestarteten Aufnahme nach deren Beendigung aktiviert werden. Sollte das Attribut "recEmailTxt" bereits gesetzt sein, wird der Text des "recEmailTxt:"-Tags anstatt des Attribut-Textes verwendet.

          Ein Telegram-Versand der letzten Aufnahme kann durch Setzen des recTelegramTxt permanent aktiviert werden. Das zu verwendende TelegramBot-Device muss natürlich funktionstüchtig eingerichtet sein.
          Der Text im Attribut "recTelegramTxt" kann durch die Spezifikation des optionalen "recTelegramTxt:"-Tags, wie oben gezeigt, temporär überschrieben bzw. geändert werden. Sollte das Attribut "recTelegramTxt" nicht gesetzt sein, wird durch Angabe dieses Tags der Telegram-Versand einmalig aktiviert. (die Tag-Syntax entspricht dem "recTelegramTxt"-Attribut)

          Beispiele :
          set <name> on [rectime]
          # startet die Aufnahme der Kamera <name>, automatischer Stop der Aufnahme nach Ablauf der Zeit [rectime] (default 15s oder wie im rectime angegeben)

          set <name> on 0
          # startet eine Daueraufnahme die mit "off" gestoppt werden muss.

          set <name> on recEmailTxt:"subject => Neue Aufnahme $CAM, body => Die aktuelle Aufnahme von $CAM ist angehängt."
          # startet eine Aufnahme und versendet sie nach Beendigung per Email.

          set <name> on recTelegramTxt:"tbot => teleBot, peers => @xxxx , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME die Aufnahme $FILE erstellt, option => silent"
          # startet eine Aufnahme und versendet sie nach Beendigung per Telegram im Silent-Mode.

          set <name> on recChatTxt:"chatbot => SynChatBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME die Aufnahme $FILE erstellt. Jetzt ist es $TIME."
          # startet eine Aufnahme und versendet sie nach Beendigung per Synology Chat.


        • optimizeParams [mirror:<value>] [flip:<value>] [rotate:<value>] [ntp:<value>]     (gilt für CAM)

        • Setzt eine oder mehrere Eigenschaften für die Kamera. Das Video kann gespiegelt (mirror), auf den Kopf gestellt (flip) oder gedreht (rotate) werden. Die jeweiligen Eigenschaften müssen von der Kamera unterstützt werden. Mit "ntp" wird der Zeitserver eingestellt den die Kamera zur Zeitsynchronisation verwendet.

          <value> kann sein für:
          • mirror, flip, rotate: true | false
          • ntp: der Name oder die IP-Adresse des Zeitservers


          Beispiele:
          set <name> optimizeParams mirror:true flip:true ntp:time.windows.com
          # Das Bild wird gespiegelt, auf den Kopf gestellt und der Zeitserver auf "time.windows.com" eingestellt.
          set <name> optimizeParams ntp:Surveillance%20Station
          # Die Surveillance Station wird als Zeitserver eingestellt. (NTP-Dienst muss im DSM aktiviert sein)
          set <name> optimizeParams mirror:true flip:false rotate:true
          # Das Bild wird gespiegelt und um 90 Grad gedreht.


        • pirSensor [activate | deactivate]     (gilt für CAM)

        • Aktiviert / deaktiviert den Infrarot-Sensor der Kamera (sofern die Kamera einen PIR-Sensor enthält).


        • runPatrol <Patrolname>     (gilt für CAM)

        • Dieses Kommando startet die vordefinierterte Überwachungstour einer PTZ-Kamera.
          Die Überwachungstouren müssen dazu zunächst in der Synology Surveillance Station angelegt worden sein. Das geschieht in der PTZ-Steuerung im IP-Kamera Setup -> PTZ-Steuerung -> Überwachung. Die Überwachungstouren (Patrols) werden über das Kommando "get <name> caminfoall" eingelesen, welches beim Restart von FHEM automatisch abgearbeitet wird. Der Einlesevorgang kann durch ein Kamerapolling regelmäßig wiederholt werden. Ein langes Pollingintervall ist in diesem Fall empfehlenswert, da sich die Überwachungstouren nur im Fall der Neuanlage bzw. Änderung verändern werden. Nähere Informationen zur Anlage von Überwachungstouren sind in der Hilfe zur Surveillance Station enthalten.


        • runView [live_fw | live_fw_hls | live_link | live_open [<room>] | lastrec_fw | lastrec_fw_MJPEG | lastrec_fw_MPEG4/H.264 | lastrec_open [<room>] | lastsnap_fw]     (gilt für CAM)

          • live_fw - MJPEG-LiveStream. Audiowiedergabe wird mit angeboten wenn verfügbar.
            live_fw_hls - HLS-LiveStream (aktuell nur Mac Safari und mobile iOS/Android-Geräte)
            live_link - Link zu einem MJPEG-Livestream
            live_open [<room>] - öffnet MJPEG-Stream in separatem Browser-Fenster
            lastrec_fw - letzte Aufnahme als iFrame Objekt
            lastrec_fw_MJPEG - nutzbar wenn Aufnahme im Format MJPEG vorliegt
            lastrec_fw_MPEG4/H.264 - nutzbar wenn Aufnahme im Format MPEG4/H.264 vorliegt
            lastrec_open [<room>] - letzte Aufnahme wird in separatem Browser-Fenster geöffnet
            lastsnap_fw - letzter Schnappschuss wird dargestellt


          Mit "live_fw, live_link, live_open" wird ein MJPEG-Livestream, entweder als eingebettetes Image oder als generierter Link, gestartet.
          Der Befehl "live_open" öffnet ein separates Browserfenster mit dem MJPEG-Livestream. Wird dabei optional der Raum mit angegeben, wird das Browserfenster nur dann gestartet, wenn dieser Raum aktuell im Browser geöffnet ist.
          Soll mit "live_fw_hls" ein HLS-Stream verwendet werden, muss die Kamera in der Synology Surveillance Station auf das Videoformat H.264 (nicht MJPEG) eingestellt und HLS durch die eingesetzte SVS-Version unterstützt sein. Diese Möglichkeit wird deshalb nur dann angeboten wenn das Reading "CamStreamFormat" den Wert "HLS" hat.

          Der Zugriff auf die letzte Aufnahme einer Kamera kann über die Optionen "lastrec_fw.*" bzw. "lastrec_open" erfolgen. Bei Verwendung von "lastrec_fw.*" wird die letzte Aufnahme als eingebettetes iFrame-Objekt abgespielt. Es werden entsprechende Steuerungselemente zur Wiedergabegeschwindigkeit usw. angeboten wenn verfügbar.

          Der Befehl "set <name> runView lastsnap_fw" zeigt den letzten Schnappschuss der Kamera eingebettet an.
          Durch Angabe des optionalen Raumes bei "lastrec_open" erfolgt die gleiche Einschränkung wie bei "live_open".
          Die Gestaltung der Fenster im FHEMWEB kann durch HTML-Tags im htmlattr Attribut beeinflusst werden.

          Beispiel:
              attr <name> htmlattr width="500" height="375"
              attr <name> htmlattr width="500" height="375" top="200" left="300"
            
          Wird der Stream als live_fw gestartet, ändert sich die Größe entsprechend der Angaben von Width und Hight.
          Das Kommando "set <name> runView live_open" startet den Livestreamlink sofort in einem neuen Browserfenster. Dabei wird für jede aktive FHEMWEB-Session eine Fensteröffnung initiiert. Soll dieses Verhalten geändert werden, kann "set <name> runView live_open <room>" verwendet werden um das Öffnen des Browserfensters in einem beliebigen, in einer FHEMWEB-Session aktiven Raum "<room>", zu initiieren.
          Das gesetzte livestreamprefix Attribut ü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.
          Die "runView" Funktion schaltet ebenfalls Streaming-Devices vom Typ "switched" in den entsprechenden Modus.

          Abhängig vom wiedergegebenen Content werden unterschiedliche Steuertasten angeboten:

            Start Recording - startet eine Endlosaufnahme
            Stop Recording - stoppt eine Aufnahme
            Take Snapshot - löst einen Schnappschuß aus
            Switch off - stoppt eine laufende Wiedergabe

          Hinweis zu HLS (HTTP Live Streaming):
          Das Video startet mit einer technologisch bedingten Verzögerung. Jeder Stream wird in eine Reihe sehr kleiner Videodateien (mit etwa 10 Sekunden Länge) segmentiert und an den Client ausgeliefert. Die Kamera muss in der SVS auf das Videoformat H.264 eingestellt sein und nicht jeder Kameratyp ist gleichermassen für HLS-Streaming geeignet. Momentan kann HLS nur durch den Mac Safari Browser sowie auf mobilen iOS/Android-Geräten wiedergegeben werden.

          Hinweis zu MJPEG:
          Der MJPEG Stream wird innerhalb der SVS aus anderen Codecs (H.264) transkodiert und beträgt normalerweise ca. 1 Fps.


        • setHome <PresetName>     (gilt für PTZ-CAM)

        • Setzt die Home-Position der Kamera auf einen vordefinierten Preset "<PresetName>" oder auf die aktuell angefahrene Position.


        • setPreset <PresetNummer> [<PresetName>] [<Speed>]     (gilt für PTZ-CAM)

        • Setzt einen Preset mit dem Namen "<PresetName>" auf die aktuell angefahrene Position der Kamera. Optional kann die Geschwindigkeit angegeben werden (<Speed>). Ist kein PresetName angegeben, wird die PresetNummer als Name verwendet. Aus diesem Grund ist <PresetName> optional definiert, sollte jedoch im Normalfall gesetzt werden.


        • setZoom < .++ | + | stop | - | --. >     (gilt für PTZ-CAM)

        • Stellt Bedienelemte für Zoomfunktionen zur Verfügung sofern die Kamera dieses Merkmal unterstützt.


        • smtpcredentials <user> <password>     (gilt für CAM)

        • Setzt die Credentials für den Zugang zum Postausgangsserver wenn Email-Versand genutzt wird.


        • snap [<Anzahl>] [<Zeitabstand>]
          [snapEmailTxt:"subject => <Betreff-Text>, body => <Mitteilung-Text>"]
          [snapTelegramTxt:"tbot => <TelegramBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>], option => [silent]"]
          [snapChatTxt:"chatbot => <SSChatBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>]"]
              (gilt für CAM)

        • Ein oder mehrere Schnappschüsse werden ausgelöst. Es kann die Anzahl der auszulösenden Schnappschüsse und deren zeitlicher Abstand in Sekunden optional angegeben werden. Ohne Angabe wird ein Schnappschuß getriggert.
          Es wird die ID und der Filename des letzten Snapshots als Wert der Readings "LastSnapId" bzw. "LastSnapFilename" in der Kamera gespeichert.
          Um die Daten der letzen 1-10 Schnappschüsse zu versionieren, kann das snapReadingRotate Attribute verwendet werden.

          Ein Synology Chat Versand der Schnappschüsse kann durch Setzen des Attributs snapChatTxt permanent aktiviert werden. Das zu verwendende SSChatBot-Device muss natürlich funktionstüchtig eingerichtet sein.
          Der Text im Attribut "snapChatTxt" kann durch die Spezifikation des optionalen "snapChatTxt:"-Tags, wie oben gezeigt, temporär überschrieben bzw. geändert werden. Sollte das Attribut "snapChatTxt" nicht gesetzt sein, wird durch Angabe dieses Tags der SSChatBot-Versand einmalig aktiviert (die Syntax entspricht dem "snapChatTxt"-Attribut).
          In jedem Fall ist vorher das Attribut videofolderMap zu setzen. Es muß eine URL zum root-Verzeichnis der Aufnahmen und Schnappschüssen enthalten ( z.B. http://server.mein:8081/surveillance ).

          Ein Email-Versand der Schnappschüsse kann durch Setzen des Attributs snapEmailTxt permanent aktiviert werden. Zuvor ist der Email-Versand, wie im Abschnitt Einstellung Email-Versand beschrieben, einzustellen. (Für weitere Informationen "get <name> versionNotes 7" ausführen)
          Der Text im Attribut "snapEmailTxt" kann durch die Spezifikation des optionalen "snapEmailTxt:"-Tags, wie oben gezeigt, temporär überschrieben bzw. geändert werden. Sollte das Attribut "snapEmailTxt" nicht gesetzt sein, wird durch Angabe dieses Tags der Email-Versand einmalig aktiviert. (die Tag-Syntax entspricht dem "snapEmailTxt"-Attribut)

          Ein Telegram-Versand der Schnappschüsse kann durch Setzen des Attributs snapTelegramTxt permanent aktiviert werden. Das zu verwendende TelegramBot-Device muss natürlich funktionstüchtig eingerichtet sein.
          Der Text im Attribut "snapTelegramTxt" kann durch die Spezifikation des optionalen "snapTelegramTxt:"-Tags, wie oben gezeigt, temporär überschrieben bzw. geändert werden. Sollte das Attribut "snapTelegramTxt" nicht gesetzt sein, wird durch Angabe dieses Tags der Telegram-Versand einmalig aktiviert. (die Tag-Syntax entspricht dem "snapTelegramTxt"-Attribut)

          Beispiele:
              set <name> snap
              set <name> snap 4
              set <name> snap 3 3 snapEmailTxt:"subject => Bewegungsalarm $CAM, body => Eine Bewegung wurde am Carport registriert"
              set <name> snap 2 snapTelegramTxt:"tbot => teleBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME der Schnappschuss $FILE erstellt, option => silent"
              set <name> snap 2 snapChatTxt:"chatbot => SynChatBot , peers => Frodo Sam, subject => Bewegungsalarm bei $CAM. Es wurde $CTIME der Schnappschuss $FILE erstellt. Jetzt ist es: $TIME."
            


        • snapCams [<Anzahl>] [<Zeitabstand>] [CAM:"<Kamera>, <Kamera>, ..."]     (gilt für SVS)

        • Ein oder mehrere Schnappschüsse der angegebenen Kamera-Devices werden ausgelöst. Sind keine Kamera-Devices angegeben, werden die Schnappschüsse bei allen in FHEM definierten Kamera-Devices getriggert. Optional kann die Anzahl der auszulösenden Schnappschüsse (default: 1) und deren zeitlicher Abstand in Sekunden (default: 2) angegeben werden.
          Es wird die ID und der Filename des letzten Snapshots als Wert der Readings "LastSnapId" bzw. "LastSnapFilename" der entsprechenden Kamera gespeichert.

          Ein Email-Versand der Schnappschüsse kann durch Setzen des Attributes snapEmailTxt im SVS-Device UND in den Kamera-Devices, deren Schnappschüsse versendet werden sollen, aktiviert werden. Bei Kamera-Devices die kein Attribut "snapEmailTxt" gesetzt haben, werden die Schnappschüsse ausgelöst, aber nicht versendet. Zuvor ist der Email-Versand, wie im Abschnitt Einstellung Email-Versand beschrieben, einzustellen. (Für weitere Informationen "get <name> versionNotes 7" ausführen)
          Es wird ausschließlich der im Attribut "snapEmailTxt" des SVS-Devices hinterlegte Email-Text in der erstellten Email verwendet. Der Text im Attribut "snapEmailTxt" der einzelnen Kameras wird ignoriert !!

          Beispiele:
              set <name> snapCams 4
              set <name> snapCams 3 3 CAM:"CamHE1, CamCarport"
            


        • snapGallery [1-10]     (gilt für CAM)
          Der Befehl ist nur vorhanden wenn das Attribut "snapGalleryBoost=1" gesetzt wurde. Er erzeugt eine Ausgabe der letzten [x] Schnappschüsse ebenso wie "get <name> snapGallery". Abweichend von "get" wird mit Attribut snapGalleryBoost=1 kein Popup erzeugt, sondern die Schnappschußgalerie als Browserseite dargestellt. Alle weiteren Funktionen und Attribute entsprechen dem "get <name> snapGallery" Kommando.
          Wenn die Ausgabe einer Schnappschußgalerie, z.B. über ein "at oder "notify", getriggert wird, sollte besser das "get <name> snapGallery" Kommando anstatt "set" verwendet werden.

          Hinweis
          Die Namen der Kameras in der SVS sollten sich nicht stark ähneln, da es ansonsten zu Ungenauigkeiten beim Abruf der Schnappschußgallerie kommen kann.


        • startTracking     (gilt für CAM mit Tracking Fähigkeit)

        • Startet Objekt Tracking der Kamera. Der Befehl ist nur vorhanden wenn die Surveillance Station die Fähigkeit der Kamera zum Objekt Tracking erkannt hat (Reading "CapPTZObjTracking").


        • stopTracking     (gilt für CAM mit Tracking Fähigkeit)

        • Stoppt Objekt Tracking der Kamera. Der Befehl ist nur vorhanden wenn die Surveillance Station die Fähigkeit der Kamera zum Objekt Tracking erkannt hat (Reading "CapPTZObjTracking").



      Get

        Mit SSCam können die Eigenschaften der Surveillance Station und der Kameras abgefragt werden.
        Die aufgeführten get-Befehle sind für CAM/SVS-Devices oder nur für CAM-Devices bzw. nur für SVS-Devices gültig. Sie stehen im Drop-Down-Menü des jeweiligen Devices zur Auswahl zur Verfügung.

        • apiInfo
          Ruft die API Informationen der Synology Surveillance Station ab und öffnet ein Popup mit diesen Informationen.

        • caminfoall     (gilt für CAM/SVS)
        • caminfo     (gilt für CAM)

          Es werden SVS-Parameter und abhängig von der Art der Kamera (z.B. Fix- oder PTZ-Kamera) die verfügbaren Kamera-Eigenschaften ermittelt und als Readings zur Verfügung gestellt.
          So wird zum Beispiel das Reading "Availability" auf "disconnected" gesetzt falls die Kamera von der Surveillance Station getrennt ist.
          "getcaminfo" ruft eine Teilmenge von "getcaminfoall" ab.


        • eventlist     (gilt für CAM)

        • Es wird das Reading "CamEventNum" und "CamLastRec" aktualisiert, welches die Gesamtanzahl der registrierten Kameraevents und den Pfad / Namen der letzten Aufnahme enthält. Dieser Befehl wird implizit mit "get <name> caminfoall" ausgeführt.
          Mit dem videofolderMap Attribut kann der Inhalt des Readings "VideoFolder" überschrieben werden. Dies kann von Vortel sein wenn das Surveillance-Verzeichnis der SVS an dem lokalen PC unter anderem Pfadnamen gemountet ist und darüber der Zugriff auf die Aufnahmen erfolgen soll (z.B. Verwendung bei Email-Versand).

          Ein DOIF-Beispiel für den Email-Versand von Snapshot und Aufnahmelink per non-blocking sendmail:
               define CamHE1.snap.email DOIF ([CamHE1:"LastSnapFilename"])
               ({DebianMailnbl ('Recipient@Domain','Bewegungsalarm CamHE1','Eine Bewegung wurde an der Haustür registriert. Aufnahmelink: \
               \[CamHE1:VideoFolder]\[CamHE1:CamLastRec]','/media/sf_surveillance/@Snapshot/[CamHE1:LastSnapFilename]')})
            
        • homeModeState     (gilt für SVS)

        • HomeMode-Status der Surveillance Station wird abgerufen.


        • listLog [severity:<Loglevel>] [limit:<Zeilenzahl>] [match:<Suchstring>]     (gilt für SVS)
          Ruft das Surveillance Station Log vom Synology Server ab. Ohne Angabe der optionalen Zusätze wird das gesamte Log abgerufen.
          Es können alle oder eine Auswahl der folgenden Optionen angegeben werden:

          • <Loglevel> - Information, Warning oder Error. Nur Sätze mit dem Schweregrad werden abgerufen (default: alle)
          • <Zeilenzahl> - die angegebene Anzahl der Logzeilen (neueste) wird abgerufen (default: alle)
          • <Suchstring> - nur Logeinträge mit dem angegeben String werden abgerufen (Achtung: kein Regex, der Suchstring wird im Call an die SVS mitgegeben)

        • Beispiele
            get <name> listLog severity:Error limit:5
            Zeigt die letzten 5 Logeinträge mit dem Schweregrad "Error"
            get <name> listLog severity:Information match:Carport
            Zeigt alle Logeinträge mit dem Schweregrad "Information" die den String "Carport" enthalten
            get <name> listLog severity:Warning
            Zeigt alle Logeinträge mit dem Schweregrad "Warning"

          Wurde mit dem Attribut pollcaminfoall das Polling der SVS aktiviert, wird das Reading "LastLogEntry" erstellt.
          Im Protokoll-Setup der SVS kann man einstellen was protokolliert werden soll. Für weitere Informationen siehe Synology Online-Hlfe.


        • listPresets     (gilt für PTZ-CAM)

        • Die für die Kamera gespeicherten Presets werden in einem Popup ausgegeben.


        • saveLastSnap [<Pfad>]     (gilt für CAM)

        • Der aktuell im Reading "LastSnapId" angegebene (letzte) Schnappschuß wird lokal als jpg-File gespeichert. Optional kann der Pfad zur Speicherung des Files im Befehl angegeben werden (default: modpath im global Device).
          Das File erhält lokal den gleichen Namen wie im Reading "LastSnapFilename" enthalten.
          Die Auflösung des Schnappschusses wird durch das Attribut "snapGallerySize" bestimmt.

            Beispiel:

            get <name> saveLastSnap /opt/fhem/log


        • saveRecording [<Pfad>]     (gilt für CAM)

        • Die aktuell im Reading "CamLastRec" angegebene Aufnahme wird lokal als MP4-File gespeichert. Optional kann der Pfad zur Speicherung des Files im Befehl angegeben werden (default: modpath im global Device).
          Das File erhält lokal den gleichen Namen wie im Reading "CamLastRec" angegeben.

            Beispiel:

            get <name> saveRecording /opt/fhem/log


        • scanVirgin     (gilt für CAM/SVS)

        • Wie mit get caminfoall werden alle Informationen der SVS und Kamera abgerufen. Allerdings wird in jedem Fall eine neue Session ID generiert (neues Login), die Kamera-ID neu ermittelt und es werden alle notwendigen API-Parameter neu eingelesen.


        • snapGallery [1-10]     (gilt für CAM)

        • Es wird ein Popup mit den letzten [x] Schnapschüssen erzeugt. Ist das snapGalleryBoost Attribut gesetzt, werden die letzten Schnappschüsse (default 3) über Polling abgefragt und im Speicher gehalten. Das Verfahren hilft die Ausgabe zu beschleunigen, kann aber möglicherweise nicht den letzten Schnappschuß anzeigen, falls dieser NICHT über das Modul ausgelöst wurde.
          Diese Funktion kann ebenfalls, z.B. mit "at" oder "notify", getriggert werden. Dabei wird die Schnappschußgalerie auf allen verbundenen FHEMWEB-Instanzen als Popup angezeigt.

          Zur weiteren Steuerung dieser Funktion stehen die Attribute:

          • snapGalleryBoost
          • snapGalleryColumns
          • snapGalleryHtmlAttr
          • snapGalleryNumber
          • snapGallerySize

          zur Verfügung.

          Hinweis:
          Abhängig von der Anzahl und Auflösung (Qualität) der Schnappschuß-Images werden entsprechend ausreichende CPU und/oder RAM-Ressourcen benötigt. Die Namen der Kameras in der SVS sollten sich nicht stark ähneln, da es ansonsten zu Ungnauigkeiten beim Abruf der Schnappschußgallerie kommen kann.


        • snapfileinfo     (gilt für CAM)

        • Es wird der Filename des letzten Schnapschusses ermittelt. Der Befehl wird implizit mit "get <name> snap" ausgeführt.


        • snapinfo     (gilt für CAM)

        • Es werden Schnappschussinformationen gelesen. Hilfreich wenn Schnappschüsse nicht durch SSCam, sondern durch die Bewegungserkennung der Kamera oder Surveillance Station erzeugt werden.


        • stmUrlPath     (gilt für CAM)

        • Mit diesem Kommando wird der aktuelle Streamkey der Kamera abgerufen und das Reading mit dem Key-Wert gefüllt. Dieser Streamkey kann verwendet werden um eigene Aufrufe eines Livestreams aufzubauen (siehe Beispiel). Wenn das showStmInfoFull Attribut 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 CAMID), StmKey müssen durch gültige Werte ersetzt werden.

          Hinweis:
          Falls der Stream-Aufruf versendet und von extern genutzt wird sowie hostname / port durch gültige Werte ersetzt und die Routerports entsprechend geöffnet werden, ist darauf zu achten, dass diese sensiblen Daten nicht durch unauthorisierte Personen für den Zugriff genutzt werden können !


        • storedCredentials     (gilt für CAM/SVS)

        • Die gespeicherten Anmeldeinformationen (Credentials) werden in einem Popup als Klartext angezeigt.


        • svsinfo     (gilt für CAM/SVS)

        • Ermittelt allgemeine Informationen zur installierten SVS-Version und andere Eigenschaften.


        • versionNotes [hints | rel | <key>]     (gilt für CAM/SVS)

        • Zeigt Release Informationen und/oder Hinweise zum Modul an. Es sind nur Release Informationen mit Bedeutung für den Modulnutzer enthalten.
          Sind keine Optionen angegben, werden sowohl Release Informationen als auch Hinweise angezeigt. "rel" zeigt nur Release Informationen und "hints" nur Hinweise an. Mit der <key>-Angabe wird der Hinweis mit der angegebenen Nummer angezeigt. Ist das Attribut "language = DE" im global Device gesetzt, erfolgt die Ausgabe der Hinweise in deutscher Sprache.




      Einstellung Email-Versand

        Schnappschüsse und Aufnahmen können nach der Erstellung per Email versendet werden. Dazu enthält das Modul einen eigenen Email-Client. Zur Verwendung dieser Funktion muss das Perl-Modul MIME::Lite installiert sein. Auf Debian-Systemen kann es mit

          sudo apt-get install libmime-lite-perl

        installiert werden.

        Für die Verwendung des Email-Versands müssen einige Attribute gesetzt oder können optional genutzt werden.
        Die Credentials für den Zugang zum Email-Server müssen mit dem Befehl "set <name> smtpcredentials <user> <password>" hinterlegt werden. Der Verbindungsaufbau zum Postausgangsserver erfolgt initial unverschüsselt und wechselt zu einer verschlüsselten Verbindung wenn SSL zur Verfügung steht. In diesem Fall erfolgt auch die Übermittlung von User/Password verschlüsselt. Ist das Attribut smtpSSLPort definiert, erfolgt der Verbindungsaufbau zum Email-Server sofort verschlüsselt.

        Optionale Attribute sind gekennzeichnet:

          snapEmailTxt - Aktiviert den Email-Versand von Schnappschüssen. Das Attribut hat das Format:
            subject => <Betreff-Text>, body => <Mitteilung-Text>
          Es können die Platzhalter $CAM, $DATE und $TIME verwendet werden.
          Der Email-Versand des letzten Schnappschusses wird einmalig aktiviert falls der "snapEmailTxt:"-Tag beim "snap"-Kommando verwendet wird bzw. der in diesem Tag definierte Text statt des Textes im Attribut "snapEmailTxt" verwendet.
          recEmailTxt - Aktiviert den Email-Versand von Aufnahmen. Das Attribut hat das Format:
            subject => <Betreff-Text>, body => <Mitteilung-Text>
          Es können die Platzhalter $CAM, $DATE und $TIME verwendet werden.
          Der Email-Versand der letzten Aufnahme wird einamlig aktiviert falls der "recEmailTxt:"-Tag beim "on"-Kommando verwendet wird bzw. der in diesem Tag definierte Text statt des Textes im Attribut "recEmailTxt" verwendet.
          smtpHost - Hostname oder IP-Adresse des Postausgangsservers (z.B. securesmtp.t-online.de)
          smtpFrom - Absenderadresse (<name>@<domain>)
          smtpTo - Empfängeradresse(n) (<name>@<domain>)
          smtpPort - (optional) Port des Postausgangsservers (default: 25)
          smtpCc - (optional) Carbon-Copy Empfängeradresse(n) (<name>@<domain>)
          smtpNoUseSSL - (optional) "1" wenn kein SSL beim Email-Versand verwendet werden soll (default: 0)
          smtpSSLPort - (optional) SSL-Port des Postausgangsservers (default: 465)
          smtpDebug - (optional) zum Debugging der SMTP-Verbindung setzen

        Erläuterung der Platzhalter:

          $CAM - Device-Alias bzw. den Namen der Kamera in der SVS ersetzt falls der Device-Alias nicht vorhanden ist
          $DATE - aktuelles Datum
          $TIME - aktuelle Zeit
          $FILE - Filename des Schnappschusses
          $CTIME - Erstellungszeit des Schnappschusses



      Polling der Kamera/SVS-Eigenschaften:

        Die Abfrage der Kameraeigenschaften erfolgt automatisch, wenn das Attribut pollcaminfoall 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 httptimeout) von 4 Sekunden kann die theoretische Verarbeitungszeit nicht höher als 80 Sekunden betragen.
        In dem Beispiel sollte man das Pollingintervall mit einem Sicherheitszuschlag auf nicht weniger 160 Sekunden setzen.
        Ein praktikabler Richtwert könnte zwischen 600 - 1800 (s) liegen.
        Sind mehrere Kameras in SSCam definiert, sollte "pollcaminfoall" nicht bei allen Kameras auf exakt den gleichen Wert gesetzt werden um Verarbeitungsengpässe
        und dadurch versursachte potentielle Fehlerquellen bei der Abfrage der Synology Surveillance Station zu vermeiden.
        Ein geringfügiger Unterschied zwischen den Pollingintervallen der definierten Kameras von z.B. 1s kann bereits als ausreichend angesehen werden.


      Internals

        Die Bedeutung der verwendeten Internals stellt die nachfolgende Liste dar:

        • CAMID - die ID der Kamera in der SVS, der Wert wird automatisch anhand des SVS-Kameranamens ermittelt.
        • CAMNAME - der Name der Kamera in der SVS
        • COMPATIBILITY - Information bis zu welcher SVS-Version das Modul kompatibel bzw. zur Zeit getestet ist (siehe Reading "compstate")
        • CREDENTIALS - der Wert ist "Set" wenn die Credentials gesetzt wurden
        • MODEL - Unterscheidung von Kamera-Device (Hersteller - Kameratyp) und Surveillance Station Device (SVS)
        • NAME - der Kameraname in FHEM
        • OPMODE - die zuletzt ausgeführte Operation des Moduls
        • SERVERADDR - IP-Adresse des SVS Hostes
        • SERVERPORT - der SVS-Port


      Attribute

        • cacheServerParam
          Angabe der Verbindungsparameter zu einem zentralen Datencache.

          redis : bei Netzwerkverbindung: <IP-Adresse>:<Port> / bei Unix-Socket: <unix>:</path/zum/socket>


        • cacheType
          Legt den zu verwendenden Cache für die Speicherung von Schnappschüssen, Aufnahmen und anderen Massendaten fest. (Default: internal).
          Es müssen eventuell weitere Module installiert werden, z.B. mit Hilfe des FHEM Installers.
          Die Daten werden in "Namespaces" gespeichert um die Nutzung zentraler Caches (redis) zu ermöglichen.
          Die Cache Typen "file" und "redis" bieten sich an, wenn die Daten nicht im RAM des FHEM-Servers gehalten werden sollen. Für die Verwendung von Redis ist zunächst ein Redis Key-Value Store bereitzustellen, z.B. in einem Docker-Image auf der Synology Diskstation (redis).

          internal : verwendet modulinterne Speicherung (Default)
          mem : sehr schneller Cache, kopiert Daten in den RAM
          rawmem : schnellster Cache bei komplexen Daten, speichert Referenzen im RAM
          file : erstellt und verwendet eine Verzeichnisstruktur im Directory "FhemUtils"
          redis : Verwendet einen externen Redis Key-Value Store per TCP oder Unix-Socket. Siehe dazu Attribut "cacheServerParam".


        • customSVSversion
          Es wird eine logische Änderung auf die angegebene SVS-Version vorgenommen. Das Attribut kann hilfreich sein um eventuell auftretende Inkompatibilitäten nach einem Update/Upgrade der Synology Surveillance Station temporär zu beseitigen. Auftretende Inkompatibilitäten sollten zeitnah dem Maintainer mitgeteilt werden.

        • debugactivetoken
          Wenn gesetzt, wird der Status des Active-Tokens gelogged - nur für Debugging, nicht im normalen Betrieb benutzen !

        • debugCachetime
          Zeigt die verbrauchte Zeit für Cache-Operationen an.

        • disable
          deaktiviert das Gerätemodul bzw. die Gerätedefinition

        • genericStrmHtmlTag
          Das Attribut enthält HTML-Tags zur Video-Spezifikation in einem Streaming-Device von Typ "generic". (siehe "set <name> createStreamDev generic")

            Beispiele:
            attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
                                             <source src='http://192.168.2.10:32000/$NAME.m3u8' type='application/x-mpegURL'>
                                           </video>
            
            attr <name> genericStrmHtmlTag <img $HTMLATTR
                                             src="http://192.168.2.10:32774"
                                             onClick="FW_okDialog('<img src=http://192.168.2.10:32774 $PWS >')"
                                           >
                  
            Die Variablen $HTMLATTR, $NAME und $PWS sind Platzhalter und übernehmen ein gesetztes Attribut "htmlattr", den SSCam- Devicenamen bzw. das Attribut "popupWindowSize" im Streaming-Device, welches die Größe eines Popup-Windows festlegt.


        • httptimeout
          Timeout-Wert für HTTP-Aufrufe zur Synology Surveillance Station.
          (default: 20 Sekunden)

        • hlsNetScript     (setzbar in Device Model "SVS")
          Wenn gesetzt, wird die aktuellste hls.js Version von der Projektseite verwendet (Internetverbindung nötig).
          Im Standard wird die lokal installierte Version (./fhem/www/pgm2/sscam_hls.js) zur Wiedergabe von Daten in allen Streaming Devices vom Typ "hls" genutzt (siehe "set <name> createStreamDev hls"). Dieses Attribut wird in einem Device vom Model "SVS" gesetzt und gilt zentral für alle Streaming Devices !

        • hlsStrmObject
          Wurde ein Streaming Device mit "set <name> createStreamDev hls" definiert, muss mit diesem Attribut der Link zum Wiedergabeobjekt bekannt gemacht werden.
          Die Angabe muss ein HTTP Live Streaming Objekt mit der Endung ".m3u8" enthalten.
          Die Variable $NAME kann als Platzhalter genutzt werden und übernimmt den SSCam-Devicenamen.

            Beispiele:
            attr <name> hlsStrmObject https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8
            attr <name> hlsStrmObject https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8
            # Beispielstreams der zum Test des Streaming Devices verwendet werden kann (Internetverbindung nötig)

            attr <name> hlsStrmObject http://192.168.2.10:32000/CamHE1.m3u8
            # Wiedergabe eines Kamera HLS-Streams der z.B. durch ffmpeg bereitgestellt wird

            attr <name> hlsStrmObject http://192.168.2.10:32000/$NAME.m3u8
            # Wie obiges Beispiel mit der Variablennutzung für "CamHE1"

        • htmlattr
          ergänzende Angaben zur Inline-Bilddarstellung um das Verhalten wie Bildgröße zu beeinflussen.

            Beispiel:
            attr <name> htmlattr width="500" height="325" top="200" left="300"

        • livestreamprefix
          Überschreibt die Angaben zu Protokoll, Servernamen und Port in StmKey.*-Readings bzw. der Livestreamadresse zur Weiterverwendung z.B. als externer Link.
          Die Spezifikation kann auf zwei Arten erfolgen:

          DEF : es wird Protokoll, Servername und Port aus der Definition des SSCam-Devices verwendet
          http(s)://<servername>:<port> : eine eigene Adressenangabe wird verwendet

          Servername kann der Name oder die IP-Adresse der Synology Surveillance Station sein.

        • loginRetries
          Setzt die Anzahl der Login-Wiederholungen im Fehlerfall.
          (default: 3)

        • noQuotesForSID
          Dieses Attribut entfernt Quotes für SID bzw. der StmKeys. Es kann in bestimmten Fällen die Fehlermeldung "402 - permission denied" oder "105 - Insufficient user privilege" vermeiden und ein login ermöglichen.
          (default: 0)

        • pollcaminfoall <Ganzzahl >= 0>
          Intervall der automatischen Datenabfrage (Polling) des Gerätes. Ist der Wert '0' oder das Attribut nicht gesetzt, erfolgt kein automatisches Polling.
          (default: 0)

          Hinweis: Es wird dringend empfohlen das Polling beizubehalten um den vollen Funktionsumfang des Moduls zu erhalten.

        • pollnologging
          "0" bzw. nicht gesetzt = Logging Gerätepolling aktiv (default), "1" = Logging Gerätepolling inaktiv

        • ptzNoCapPrePat
          Manche PTZ-Kameras können trotz ihrer PTZ-Fähigkeiten keine Presets und Patrols speichern. Um Fehler und entsprechende Logmeldungen zu vermeiden, kann in diesen Fällen das Attribut ptzNoCapPrePat gesetzt werden. Dem System wird eine fehlende Preset / Patrol Fähigkeit mitgeteilt.

        • ptzPanel_Home
          Im PTZ-Steuerungspaneel wird dem Home-Icon (im Attribut "ptzPanel_row02") automatisch der Wert des Readings "PresetHome" zugewiesen. Mit "ptzPanel_Home" kann diese Zuweisung mit einem Preset aus der verfügbaren Preset-Liste geändert werden.

        • ptzPanel_iconPath
          Pfad für Icons im PTZ-Steuerungspaneel, default ist "www/images/sscam". Der Attribut-Wert wird für alle Icon-Dateien außer *.svg verwendet.
          Für weitere Information bitte "get <name> versionNotes 2,6" ausführen.

        • ptzPanel_iconPrefix
          Prefix für Icon-Dateien im PTZ-Steuerungspaneel, default ist "black_btn_". Der Attribut-Wert wird für alle Icon-Dateien außer *.svg verwendet.
          Beginnen die verwendeten Icon-Dateien z.B. mit "black_btn_" ("black_btn_CAMDOWN.png"), braucht das Icon in den Attributen "ptzPanel_row[00-09]" nur noch mit dem darauf folgenden Teilstring, z.B. "CAMDOWN.png" benannt zu werden.

        • ptzPanel_row[00-09] <command>:<icon>,<command>:<icon>,...
          Für PTZ-Kameras werden automatisch die Attribute "ptzPanel_row00" bis "ptzPanel_row04" zur Verwendung im PTZ-Steuerungspaneel angelegt.
          Die Attribute enthalten eine Komma-separarierte Liste von Befehl:Icon-Kombinationen (Tasten) je Paneelzeile. Eine Paneelzeile kann beliebig viele Tasten enthalten. Die Attribute "ptzPanel_row00" bis "ptzPanel_row04" können nicht gelöscht werden da sie in diesem Fall automatisch wieder angelegt werden. Der User kann die Attribute ändern und ergänzen. Diese Änderungen bleiben erhalten.
          Bei Bedarf kann die Belegung der Home-Taste in "ptzPanel_row02" geändert werden mit dem Attribut "ptzPanel_Home".
          Die Icons werden im Pfad "ptzPanel_iconPath" gesucht. Dem Icon-Namen wird "ptzPanel_iconPrefix" vorangestellt. Eigene Erweiterungen des PTZ-Steuerungspaneels können über die Attribute "ptzPanel_row05" bis "ptzPanel_row09" vorgenommen werden. Zur Erstellung eigener Icons gibt es eine Vorlage im SVN. Für weitere Informationen bitte "get <name> versionNotes 2" ausführen.

          Hinweis
          Für eine Leerfeld verwenden sie bitte ":CAMBLANK.png" bzw. ":CAMBLANK.png,:CAMBLANK.png,:CAMBLANK.png,..." für eine Leerzeile.

            Beispiel:
            attr <name> ptzPanel_row00 move upleft:CAMUPLEFTFAST.png,:CAMBLANK.png,move up:CAMUPFAST.png,:CAMBLANK.png,move upright:CAMUPRIGHTFAST.png
            # Der Befehl "move upleft" wird der Kamera beim Druck auf Tastenicon "CAMUPLEFTFAST.png" übermittelt.


        • ptzPanel_use
          Die Anzeige des PTZ-Steuerungspaneels in der Detailanzeige bzw. innerhalb eines generierten Streamdevice wird ein- bzw. ausgeschaltet (default ein).
          Das PTZ-Panel benutzt einen eigenen Satz Icons. Damit das System sie finden kann, ist im FHEMWEB Device das Attribut "iconPath" um "sscam" zu ergänzen (z.B. "attr WEB iconPath default:fhemSVG:openautomation:sscam").

        • recChatTxt chatbot => <SSChatBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>]
          Aktiviert den permanenten Versand von Aufnahmen nach deren Erstellung per Synology Chat.
          Vor der Aktivierung ist das Attribut videofolderMap zu setzen. Es muß eine URL zum root-Verzeichnis der Aufnahmen und Schnappschüsse enthalten ( z.B. http://server.mein:8081/surveillance ).
          Das Attribut recChatTxt muß in der angegebenen Form definiert werden. Im Schlüssel "chatbot" ist das SSChatBot-Device anzugeben, welches für den Versand der Daten verwendet werden soll. Das SSChatBot-Device muss natürlich vorhanden und funktionstüchtig sein.
          Der Schlüssel "peers" enthält gültige Namen von Synology Chat Nutzern an die die Nachricht gesendet werden soll.
          Die Angabe von "peers" ist optional, jedoch muß der Schlüssel (leer) angegeben werden. Wurde "peers" leer gelassen, wird der defaultPeer des SSChatBot-Devices verwendet.

          Es können die folgenden Platzhalter im subject verwendet werden.

            $CAM (#CAM) - Device-Alias bzw. den Namen der Kamera in der SVS ersetzt falls der Device-Alias nicht vorhanden ist
            $DATE (#DATE) - aktuelles Datum
            $TIME (#TIME) - aktuelle Zeit
            $FILE (#FILE) - Filename
            $CTIME (#CTIME) - Erstellungszeit der Aufnahme

          Beispiele:
          attr <device> recChatTxt chatbot => SynChatBot, peers => , subject => Bewegungsalarm ($FILE)
          attr <device> recChatTxt chatbot => SynChatBot, peers => Frodo Sam Gollum, subject => Achtung
          attr <device> recChatTxt chatbot => SynChatBot, peers => , subject => Achtung Aufnahme
          attr <device> recChatTxt chatbot => SynChatBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME die Aufnahme $FILE erstellt. Jetzt ist es $TIME.


        • recEmailTxt subject => <Betreff-Text>, body => <Mitteilung-Text>
          Aktiviert den Emailversand von Aufnahmen nach deren Erstellung.
          Das Attribut muß in der angegebenen Form definiert werden.
          Es können die folgenden Platzhalter im subject bzw. body verwendet werden.

            $CAM (#CAM) - Device-Alias bzw. der Name der Kamera in der SVS falls der Device-Alias nicht vorhanden ist
            $DATE (#DATE) - aktuelles Datum
            $TIME (#TIME) - aktuelle Zeit
            $FILE (#FILE) - Filename der (letzten) Aufnahme (nur in body verwendbar)
            $CTIME (#CTIME) - Erstellungszeit des (letzten) Aufnahme (nur in body verwendbar)

            Beispiel:
            recEmailTxt subject => Neue Aufnahme $CAM, body => Die aktuelle Aufnahme von $CAM ist angehängt.

        • recTelegramTxt tbot => <TelegramBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Text>], option => [silent]
          Aktiviert den permanenten Versand von Aufnahmen nach deren Erstellung per TelegramBot.
          Das Attribut muß in der angegebenen Form definiert werden. Bei optionalen Angaben muß der Schlüssel >leer< angegeben werden.

          Bedeutung der Schlüssel:

            tbot Name des TelegramBot-Device
            peers Durch Leerzeichen getrennte Liste der Empfänger (optional).
            Es kann r:<Reading> angegeben werden um die Empfänger aus dem <Reading> zu lesen.
            Ist peers nicht angegeben, wird der Default-Peer des TelegramBot-Device verwendet.
            subject der zu übermittelnde Text (optional)
            option mögliche nachfolgend beschriebene TelegramBot Sendeoptionen (optional)
            silent : die Signalisierung beim Empfänger wird unterdrückt

          Es können die folgenden Platzhalter im subject verwendet werden.

            $CAM (#CAM) - Device-Alias bzw. den Namen der Kamera in der SVS ersetzt falls der Device-Alias nicht vorhanden ist
            $DATE (#DATE) - aktuelles Datum
            $TIME (#TIME) - aktuelle Zeit
            $FILE (#FILE) - Filename
            $CTIME (#CTIME) - Erstellungszeit der Aufnahme

          Beispiele:
          attr <device> recTelegramTxt tbot => teleBot, peers => , subject => Bewegungsalarm ($FILE)
          attr <device> recTelegramTxt tbot => teleBot, peers => @nabuko @foo @bar, subject =>
          attr <device> recTelegramTxt tbot => teleBot, peers => #nabugroup, subject =>
          attr <device> recTelegramTxt tbot => teleBot, peers => -123456, subject =>
          attr <device> recTelegramTxt tbot => teleBot, peers => , subject =>
          attr <device> recTelegramTxt tbot => teleBot, peers => r:peerTelegram, subject =>
          attr <device> recTelegramTxt tbot => teleBot, peers => , subject => ohne Signalisierung, option => silent
          attr <device> recTelegramTxt tbot => teleBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME die Aufnahme $FILE erstellt. Jetzt ist es $TIME.


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

            DSM die Session wird dem Synology DSM aufgebaut (default)
            Es sind die Credentials eines DSM Nutzers mit administrativen Rechten zu verwenden.
            SurveillanceStation die Session wird mit der SurveillanceStation (SVS aufgebaut).
            Es sind die Credentials eines in der SVS definierten Nutzers zu verwenden.
            Dem Nutzer muß in der SVS ein ensprechendes Privilegien Profil zugeordnet sein.

          Für weitere Informationen bitte "get <name> versionNotes 5" ausführen.

        • smtpHost <Hostname>
          Gibt den Hostnamen oder die IP-Adresse des Postausgangsservers für den Emailversand an (z.B. securesmtp.t-online.de).

        • smtpCc <name>@<domain>[, <name>@<domain>][, <name>@<domain>]...
          Optionale zusätzliche Empfängeradresse(n) für den Email-Versand. Mehrere Adressen müssen durch "," getrennt werden.

        • smtpDebug
          Schaltet den Debugging-Modus der Verbindung zum Email-Server ein (wenn Email Versand verwendet wird).

        • smtpFrom <name>@<domain>
          Absenderadresse bei Verwendung des Emailversands.

        • smtpPort <Port>
          Optionale Angabe Standard-SMTP-Port des Postausgangsservers (default: 25).

        • smtpSSLPort <Port>
          Optionale Angabe SSL Port des Postausgangsservers (default: 465). Ist dieses Attribut gesetzt, erfolgt die Verbindung zum Email-Server sofort verschlüsselt.

        • smtpTo <name>@<domain>[, <name>@<domain>][, <name>@<domain>]...
          Empfängeradresse(n) für den Email-Versand. Mehrere Adressen müssen durch "," getrennt werden.

        • smtpNoUseSSL
          Soll keine Email SSL-Verschlüsselung genutzt werden, ist dieses Attribut auf "1" zu setzen (default: 0).

        • snapChatTxt chatbot => <SSChatBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>]
          Aktiviert den permanenten Versand von Schnappschüssen nach deren Erstellung per Synology Chat. Wurden mehrere Schnappschüsse ausgelöst, werden sie sequentiell versendet.
          Vor der Aktivierung ist das Attribut videofolderMap zu setzen. Es muß eine URL zum root-Verzeichnis der Aufnahmen und Schnappschüsse enthalten ( z.B. http://server.mein:8081/surveillance ).
          Das Attribut snapChatTxt muß in der angegebenen Form definiert werden. Im Schlüssel "chatbot" ist das SSChatBot-Device anzugeben, welches für den Versand der Daten verwendet werden soll. Das SSChatBot-Device muss natürlich vorhanden und funktionstüchtig sein.
          Der Schlüssel "peers" enthält gültige Namen von Synology Chat Nutzern an die die Nachricht gesendet werden soll.
          Die Angabe von "peers" ist optional, jedoch muß der Schlüssel (leer) angegeben werden. Wurde "peers" leer gelassen, wird der defaultPeer des SSChatBot-Devices verwendet.

          Es können folgende Platzhalter im subject verwendet werden.

            $CAM (#CAM) - Device-Alias bzw. den Namen der Kamera in der SVS ersetzt falls der Device-Alias nicht vorhanden ist
            $DATE (#DATE) - aktuelles Datum
            $TIME (#TIME) - aktuelle Zeit
            $FILE (#FILE) - Filename des Schnappschusses
            $CTIME (#CTIME) - Erstellungszeit des Schnappschusses

          Beispiele:
          attr <device> snapChatTxt chatbot => SynChatBot, peers => , subject => Bewegungsalarm ($FILE)
          attr <device> snapChatTxt chatbot => SynChatBot, peers => Aragorn Frodo Sam, subject => Ein Schnappschuss wurde ausgelöst
          attr <device> snapChatTxt chatbot => SynChatBot, peers => , subject => Achtung !
          attr <device> snapChatTxt chatbot => SynChatBot, peers => Frodo, subject => Bewegungsalarm bei $CAM. Es wurde $CTIME der Schnappschuss $FILE erstellt


        • snapEmailTxt subject => <Betreff-Text>, body => <Mitteilung-Text>
          Aktiviert den Emailversand von Schnappschüssen nach deren Erstellung. Wurden mehrere Schnappschüsse ausgelöst, werden sie gemeinsam in einer Mail versendet.
          Das Attribut muß in der angegebenen Form definiert werden.
          Es können die folgenden Platzhalter im subject bzw. body verwendet werden.

            $CAM (#CAM) - Device-Alias bzw. der Name der Kamera in der SVS falls der Device-Alias nicht vorhanden ist
            $DATE (#DATE) - aktuelles Datum
            $TIME (#TIME) - aktuelle Zeit
            $FILE (#FILE) - Filename des (letzten) Schnappschusses (nur in body verwendbar)
            $CTIME (#CTIME) - Erstellungszeit des (letzten) Schnappschusses (nur in body verwendbar)

            Beispiel:
            snapEmailTxt subject => Bewegungsalarm $CAM, body => Eine Bewegung wurde an der $CAM registriert.

        • snapTelegramTxt tbot => <TelegramBot-Device>, peers => [<peer1 peer2 ...>], subject => [<Betreff-Text>], option => [silent]
          Aktiviert den permanenten Versand von Schnappschüssen nach deren Erstellung per TelegramBot. Wurden mehrere Schnappschüsse ausgelöst, werden sie sequentiell versendet.
          Das Attribut muß in der angegebenen Form definiert werden. Bei optionalen Angaben muß der Schlüssel >leer< angegeben werden.

          Bedeutung der Schlüssel:

            tbot Name des TelegramBot-Device
            peers Durch Leerzeichen getrennte Liste der Empfänger (optional).
            Es kann r:<Reading> angegeben werden um die Empfänger aus dem <Reading> zu lesen.
            Ist peers nicht angegeben, wird der Default-Peer des TelegramBot-Device verwendet.
            subject der zu übermittelnde Text (optional)
            option mögliche nachfolgend beschriebene TelegramBot Sendeoptionen (optional)
            silent : die Signalisierung beim Empfänger wird unterdrückt

          Es können folgende Platzhalter im subject verwendet werden.

            $CAM (#CAM) - Device-Alias bzw. den Namen der Kamera in der SVS ersetzt falls der Device-Alias nicht vorhanden ist
            $DATE (#DATE) - aktuelles Datum
            $TIME (#TIME) - aktuelle Zeit
            $FILE (#FILE) - Filename des Schnappschusses
            $CTIME (#CTIME) - Erstellungszeit des Schnappschusses

          Beispiele:
          attr <device> snapTelegramTxt tbot => teleBot, peers => , subject => Bewegungsalarm ($FILE)
          attr <device> snapTelegramTxt tbot => teleBot, peers => @nabuko @foo @bar, subject =>
          attr <device> snapTelegramTxt tbot => teleBot, peers => #nabugroup, subject =>
          attr <device> snapTelegramTxt tbot => teleBot, peers => -123456, subject =>
          attr <device> snapTelegramTxt tbot => teleBot, peers => , subject =>
          attr <device> snapTelegramTxt tbot => teleBot, peers => r:peerTelegram, subject =>
          attr <device> snapTelegramTxt tbot => teleBot, peers => , subject => ohne Signalisierung, option => silent
          attr <device> snapTelegramTxt tbot => teleBot, peers => , subject => Bewegungsalarm bei $CAM. Es wurde $CTIME der Schnappschuss $FILE erstellt


        • snapGalleryBoost
          Wenn gesetzt, werden die letzten Schnappschüsse (default 3) über Polling im Speicher gehalten und mit "set/get snapGallery" aufbereitet angezeigt. Dieser Modus bietet sich an wenn viele bzw. Fullsize Images angezeigt werden sollen. Ist das Attribut eingeschaltet, können bei "set/get snapGallery" keine Argumente mehr mitgegeben werden. (siehe Attribut "snapGalleryNumber").

          (default: 0)

        • snapGalleryColumns
          Die Anzahl der Snaps die in einer Reihe im Popup erscheinen sollen (default 3).

        • snapGalleryHtmlAttr
          hiermit kann die Bilddarstellung beeinflusst werden.
          Ist das Attribut nicht gesetzt, wird das Attribut "htmlattr" verwendet.
          Ist auch dieses nicht gesetzt, wird eine Standardvorgabe verwendet (width="500" height="325").

            Beispiel:
            attr <name> snapGalleryHtmlAttr width="325" height="225"

        • snapGalleryNumber
          Die Anzahl der abzurufenden Schnappschüsse (default 3).

        • snapGallerySize
          Mit diesem Attribut kann die Qualität der Images eingestellt werden (default "Icon").
          Im Modus "Full" wird die original vorhandene Auflösung der Images abgerufen. Dies erfordert mehr Ressourcen und kann die Anzeige verlangsamen. Mit "snapGalleryBoost=1" kann die Ausgabe beschleunigt werden, da in diesem Fall die Aufnahmen über Polling abgerufen und nur noch zur Anzeige gebracht werden.

        • snapReadingRotate 0...10
          Aktiviert die Versionierung von Schnappschußreadings (default: 0). Es wird eine fortlaufende Nummer der Readings "LastSnapFilename", "LastSnapId" und "LastSnapTime" bis zum eingestellten Wert von snapReadingRotate erzeugt und enthält die Daten der letzten X Schnappschüsse.

        • showStmInfoFull
          zusaätzliche Streaminformationen wie LiveStreamUrl, StmKeyUnicst, StmKeymjpegHttp werden ausgegeben

        • showPassInLog
          Wenn gesetzt, wird das verwendete Passwort im Logfile mit verbose 4 angezeigt. (default = 0)

        • videofolderMap
          Ersetzt den Inhalt des Readings "VideoFolder". Verwendung z.B. bei gemounteten Verzeichnissen oder URL-Bereitstellung durch einen Webserver.

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

        • readingFnAttributes


        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.

          • CamAudioType
          • - listet den eingestellten Audiocodec auf wenn verwendet
          • Availability
          • - Verfügbarkeit der Kamera (disabled, enabled, disconnected, other)
          • CamEventNum
          • - liefert die Gesamtanzahl der in SVS registrierten Events der Kamera
          • CamExposureControl
          • - zeigt den aktuell eingestellten Typ der Belichtungssteuerung
          • 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
          • CamLastRecId
          • - die ID der letzten Aufnahme
          • CamLastRecTime
          • - Datum / Startzeit - Stopzeit der letzten Aufnahme (Format abhängig vom global Attribut "language")
          • CamLiveFps
          • - Frames pro Sekunde des Live-Streams
          • CamLiveMode
          • - Quelle für Live-Ansicht (DS, Camera)
          • camLiveQuality
          • - in SVS eingestellte Live-Stream Qualität
          • camLiveResolution
          • - in SVS eingestellte Live-Stream Auflösung
          • camLiveStreamNo
          • - verwendete Stream-Nummer für Live-Stream
          • CamModel
          • - Kameramodell
          • CamMotDetSc
          • - Status der Bewegungserkennung (disabled, durch Kamera, durch SVS) und deren Parameter
          • CamNTPServer
          • - eingestellter Zeitserver
          • CamPort
          • - IP-Port der Kamera
          • CamPreRecTime
          • - Dauer der der Voraufzeichnung in Sekunden (Einstellung in SVS)
          • CamPtSpeed
          • - eingestellter Wert für Schwenken/Neige-Aktionen (Einstellung in SVS)
          • CamRecShare
          • - gemeinsamer Ordner auf der DS für Aufnahmen
          • CamRecVolume
          • - Volume auf der DS für Aufnahmen
          • CamStreamFormat
          • - aktuelles Format des Videostream
          • CamVideoType
          • - listet den eingestellten Videocodec auf
          • CamVendor
          • - Kamerahersteller Bezeichnung
          • CamVideoFlip
          • - Ist das Video gedreht
          • CamVideoMirror
          • - Ist das Video gespiegelt
          • CamVideoRotate
          • - Ist das Video gedreht
          • CapAudioOut
          • - Fähigkeit der Kamera zur Audioausgabe über Surveillance Station (false/true)
          • CapChangeSpeed
          • - Fähigkeit der Kamera verschiedene Bewegungsgeschwindigkeiten auszuführen
          • CapPIR
          • - besitzt die Kamera einen PIR-Sensor
          • 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
          • CapPTZObjTracking
          • - Unterstützung der Kamera für Objekt-Tracking
          • CapPTZPan
          • - Unterstützung der Kamera für Pan-Aktion
          • CapPTZPresetNumber
          • - die maximale Anzahl unterstützter Presets. 0 steht für keine Preset-Unterstützung
          • 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
          • HomeModeState
          • - HomeMode-Status (ab SVS-Version 8.1.0)
          • LastLogEntry
          • - der neueste Eintrag des Surveillance Station Logs (nur SVS-Device und wenn Attribut pollcaminfoall gesetzt)
          • LastSnapFilename[x]
          • - der Filename des/der letzten Schnapschüsse
          • LastSnapId[x]
          • - die ID des/der letzten Schnapschüsse
          • LastSnapTime[x]
          • - Zeitstempel des/der letzten Schnapschüsse (Format abhängig vom global Attribut "language")
          • LastUpdateTime
          • - Datum / Zeit der letzten Aktualisierung durch "caminfoall" (Format abhängig vom global Attribut "language")
          • LiveStreamUrl
          • - die LiveStream-Url wenn der Stream gestartet ist. (showStmInfoFull muss gesetzt sein)
          • Patrols
          • - in Surveillance Station voreingestellte Überwachungstouren (bei PTZ-Kameras)
          • PollState
          • - zeigt den Status des automatischen Pollings an
          • PresetHome
          • - Name der Home-Position (bei PTZ-Kameras)
          • 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. (showStmInfoFull muss gesetzt sein)
          • StmKeymjpegHttp
          • - Mjpeg Stream Pfad (über http) der Kamera. (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
          • compstate
          • - Kompatibilitätsstatus (Vergleich von eingesetzter/simulierter SVS-Version zum Internal COMPATIBILITY)




    SSCamSTRM

    [EN DE]

      Das Modul SSCamSTRM ist ein mit SSCam abgestimmtes Gerätemodul zur Definition von Streaming-Devices.
      Abhängig vom Zustand des Streaming-Devices werden zum Start von Aktionen unterschiedliche Drucktasten angeboten:

        Switch off - stoppt eine laufende Wiedergabe
        Refresh - auffrischen einer Ansicht (kein Browser Seiten-Reload)
        Restart - neu starten eines laufenden Contents (z.B. eines HLS-Streams)
        MJPEG - Startet MJPEG Livestream
        HLS - Startet HLS (HTTP Live Stream)
        Last Record - spielt die letzte Aufnahme als iFrame
        Last Rec H.264 - spielt die letzte Aufnahme wenn als H.264 vorliegend
        Last Rec MJPEG - spielt die letzte Aufnahme wenn als MJPEG vorliegend
        Last SNAP - zeigt den letzten Snapshot
        Start Recording - startet eine Endlosaufnahme
        Stop Recording - stoppt eine Aufnahme
        Take Snapshot - löst einen Schnappschuß aus

      Integration in FHEM TabletUI:

      Zur Integration von SSCam Streaming Devices (Typ SSCamSTRM) wird ein Widget bereitgestellt. Für weitere Information dazu bitte den Artikel im Wiki durchlesen:
      FTUI Widget für SSCam Streaming Devices (SSCamSTRM).


      Define

        Ein SSCam Streaming-Device wird durch den SSCam Befehl

          set <name> createStreamDev <Device Typ>

        erstellt. Siehe auch die Beschreibung zum SSCam "createStreamDev" Befehl.

      Set
        • adopt <Streaming Device>     (nur wenn MODEL = master)
          Ein Streaming Device vom Type master übernimmt (adoptiert) den Content eines anderen definierten Streaming Devices.

        • adoptForTimer <Streaming Device>     (nur bei MODEL = master)
          Ein Streaming Device vom Type master übernimmt (adoptiert) den Content eines anderen definierten Streaming Devices für eine bestimmte Zeit.
          Die Zeit wird mit dem Kommando set <name> adoptTime eingestellt.
          (default: 10 Sekunden)

        • adoptTime <Sekunden>     (nur bei MODEL = master)
          Einstellung der Schaltzeit bei temporärer Übernahme des Contents eines anderen Streaming Devices. Nach Ablauf der Zeit wird die Wiedergabe auf das vorher eingestellte Streaming Device zurückgeschaltet.
          Wird kein Argument oder "0" angegeben, wird die Zeitvorgabe gelöscht und der Standard (10 Sekunden) verwendet.

        • snap [<number>] [<time difference>]     (nur bei MODEL = lastsnap)
          Es werden ein oder mehrere Schnappschüsse ausgelöst. Die Anzahl der auszulösenden Schnappschüsse und der Zeitabstand (in Sekunden) zwischen jedem Snapshot können optional angegeben werden. Ohne Angabe wird nur ein Snapshot ausgelöst.

        • popupStream [OK | <Sekunden>]     (nur bei MODEL != master)
          Der aktuelle Streaminhalt wird in einem Popup-Fenster dargestellt. Mit dem Attribut "popupWindowSize" kann die Darstellungsgröße eingestellt werden. Das Attribut "popupStreamTo" legt die Art des Popup-Fensters fest. Ist "OK" eingestellt, öffnet sich ein OK-Dialogfenster. Die angegebene Zahl in Sekunden schließt das Fenster nach dieser Zeit automatisch (default 5 Sekunden).
          Durch die optionalen Angabe von "OK" oder <Sekunden> kann die Einstellung des Attributes "popupStreamTo" übersteuert werden.


      Get

        • get <name> html
        • Das eingebundene Streamobjekt (Kamera Live View, Schnappschüsse oder Wiedergabe einer Aufnahme) wird als HTML-code abgerufen und dargestellt.


      Attribute

        • adoptSubset     (nur für MODEL "master")
          In einem Streaming master Device wird eine Teilmenge aller definierten Streaming Devices ausgewählt und für das adopt Kommando bereitgestellt.
          Für die Steuerung im FTUI wird die Auswahl ebenfalls im gleichnamigen Reading gespeichert.

        • autoRefresh
          Wenn gesetzt, werden aktive Browserseiten des FHEMWEB-Devices welches das SSCamSTRM-Device aufgerufen hat, nach der eingestellten Zeit (Sekunden) neu geladen. Sollen statt dessen Browserseiten eines bestimmten FHEMWEB-Devices neu geladen werden, kann dieses Device mit dem Attribut "autoRefreshFW" festgelegt werden. Dies kann in manchen Fällen die Wiedergabe innerhalb einer Anwendung stabilisieren.

        • autoRefreshFW
          Ist "autoRefresh" aktiviert, kann mit diesem Attribut das FHEMWEB-Device bestimmt werden dessen aktive Browserseiten regelmäßig neu geladen werden sollen.

        • disable
          Aktiviert/deaktiviert das Device.

        • forcePageRefresh
          Das Attribut wird durch SSCam ausgewertet.
          Wenn gesetzt, wird ein Reload aller Browserseiten mit aktiven FHEMWEB-Verbindungen nach dem Abschluß bestimmter SSCam-Befehle erzwungen. Dies kann in manchen Fällen die Wiedergabe innerhalb einer Anwendung stabilisieren.

        • genericStrmHtmlTag     (nur für MODEL "generic")
          Das Attribut enthält HTML-Tags zur Video-Spezifikation in einem Streaming-Device von Typ "generic".

            Beispiele:
            attr <name> genericStrmHtmlTag <video $HTMLATTR controls autoplay>
                                             <source src='http://192.168.2.10:32000/$NAME.m3u8' type='application/x-mpegURL'>
                                           </video>
                                           
            attr <name> genericStrmHtmlTag <img $HTMLATTR 
                                             src="http://192.168.2.10:32774"
                                             onClick="FW_okDialog('<img src=http://192.168.2.10:32774 $PWS >')"
                                           >                              
                  
            Die Variablen $HTMLATTR, $NAME und $PWS sind Platzhalter und übernehmen ein gesetztes Attribut "htmlattr", den SSCam- Devicenamen bzw. das Attribut "popupWindowSize" im Streaming-Device, welches die Größe eines Popup-Windows festlegt.


        • hideAudio
          Verbirgt die Steuerungsbereich für die Audiowiedergabe in der Fußzeile.

        • hideButtons
          Verbirgt die Drucktasten in der Fußzeile. Dieses Attribut hat keinen Einfluß bei Streaming-Devices vom Typ "switched".

        • hideDisplayName
          Verbirgt den Device/Alias-Namen (Link zur Detailansicht).

        • hideDisplayNameFTUI
          Verbirgt den Device/Alias-Namen (Link zur Detailansicht) im TabletUI.

        • htmlattr
          Zusätzliche HTML Tags zur Darstellung im Streaming Device.

            Beispiel:
            attr <name> htmlattr width="580" height="460"

        • htmlattrFTUI
          Zusätzliche HTML Tags zur Darstellung des Streaming Device im TabletUI.

            Beispiel:
            attr <name> htmlattr width="580" height="460"

        • noLink
          Der Devicename oder Alias enthält keinen Link zur Detailansicht.

        • popupStreamFW
          Es kann mit diesem Attribut das FHEMWEB-Device bestimmt werden, auf dessen Browserseiten sich Popup-Fenster mit "set <name> popupStream" öffnen sollen (default: alle aktiven FHEMWEB-Devices).

        • popupStreamTo [OK | <Sekunden>]
          Das Attribut "popupStreamTo" legt die Art des Popup-Fensters fest welches mit der set-Funktion "popupStream" geöffnet wird. Ist "OK" eingestellt, öffnet sich ein OK-Dialogfenster. Die angegebene Zahl in Sekunden schließt das Fenster nach dieser Zeit automatisch (default 5 Sekunden).

            Beispiel:
            attr <name> popupStreamTo 10

        • popupWindowSize
          Bei geeigneten Wiedergabeinhalten (Videostream oder Schnappschußgalerie) öffnet ein Klick auf den Bildinhalt ein Popup-Fenster mit diesem Inhalt. Die Darstellungsgröße kann mit diesem Attribut eingestellt werden. Das Attribut gilt ebenfalls für die set-Funktion "popupStream".

            Beispiel:
            attr <name> popupWindowSize width="600" height="425"

        • ptzButtonSize
          Legt die Größe der Drucktasten des PTZ Paneels fest (in %).

        • ptzButtonSizeFTUI
          Legt die Größe der Drucktasten des PTZ Paneels in einem Tablet UI fest (in %).

    SSChatBot

    [EN DE]
      Mit diesem Modul erfolgt die Integration des Synology Chat Servers in FHEM. Dadurch ist es möglich, Nachrichten zwischen FHEM und Synology Chat Server auszutauschen.
      Eine ausführliche Beschreibung des Moduls ist im Wiki vorhanden.


      Definition

        Die Definition erfolgt mit:

          define <Name> SSChatBot <IP> [Port] [Protokoll]

        Die Angaben Port und Protokoll sind optional.

        • IP: IP-Adresse oder Name der Synology Diskstation. Wird der Name benutzt, ist das globale Attribut dnsServer zu setzen.
        • Port: Port der Synology Diskstation (default 5000)
        • Protokoll: Protokoll für Messages Richtung Chat-Server, http oder https (default http)

        Bei der Definition wird neben dem SSChaBot Device ebenfalls ein extra FHEMWEB Device zum Nachrichtenempfang automatisiert im Raum "Chat" angelegt. Der Port des FHEMWEB Devices wird automatisch ermittelt mit Startport 8082. Ist dieser Port belegt, werden die Ports in aufsteigender Reihenfolge auf eine eventuelle Belegung durch ein FHEMWEB Device geprüft und der nächste freie Port wird dem neuen Device zugewiesen.
        Die Chatintegration unterscheidet zwischen "Eingehende Nachrichten" (FHEM -> Chat) und "Ausgehende Nachrichten" (Chat -> FHEM).


      Konfiguration

        Für die Aktivierung eingehender Nachrichten (FHEM -> Chat) wird ein Bot-Token benötigt. Dieser Token wird über die benutzerdefinierte Einbindungsfunktionen in der Synology Chat-Applikation erstellt bzw. kann darüber auch verändert werden. (siehe dazu auch den Wiki-Abschnitt )
        Der Token wird in das neu definierten SSChatBot-Device eingefügt mit dem Befehl:

          set <Name> botToken U6FOMH9IgT22ECJceaIW0fNwEi7VfqWQFPMgJQUJ6vpaGoWZ1SJkOGP7zlVIscCp

        Es ist natürlich der reale, durch die Chat-Applikation erstellte Token einzusetzen.

        Zur Aktivierung ausgehende Nachrichten (Chat -> FHEM) muß in der Chat-Applikation das Feld Ausgehende URL gefüllt werden. Klicken Sie dazu auf das Symbol Profilfoto oben rechts in der aufgerufenen Synology Chat-Applikation und wählen Sie "Einbindung". Wählen sie dann im Menü "Bots" den im ersten Schritt erstellten Bot aus. In das Feld Ausgehende URL wird nun der Wert des Internals OUTDEF des erstellten SSChatBot Devices hineinkopiert.
        Zum Beispiel könnte der String so aussehen:

          http://myserver.mydom:8086/sschat/outchat?botname=SynChatBot&fwcsrf=5de17731

        (siehe dazu auch den Wiki-Abschnitt )


        Allgemeine Information zum Nachrichtenversand
        Nachrichten, die FHEM an den Chat Server sendet (eingehende Nachrichten), werden in FHEM zunächst in eine Queue gestellt. Der Sendeprozess wird sofort gestartet. War die Übermittlung erfolgreich, wird die Nachricht aus der Queue gelöscht. Anderenfalls verbleibt sie in der Queue und der Sendeprozess wird, in einem von der Anzahl der Fehlversuche abhängigen Zeitintervall, erneut gestartet.
        Mit dem Set-Befehl restartSendqueue kann die Abarbeitung der Queue manuell angestartet werden (zum Beispiel nach einer Synology Wartung).

        Allgemeine Information zum Nachrichtempfang
        Um Befehle vom Chat Server an FHEM zu senden, werden Slash-Befehle (/) verwendet. Sie sind vor der Verwendung im Synology Chat und ggf. zusätzlich im SSChatBot Device (User spezifische Befehle) zu konfigurieren.

        Folgende Befehlsformen werden unterstützt:

        • /set
        • /get
        • /code
        • /<User spezifischer Befehl> (siehe Attribut ownCommandx)

        Weitere ausfühliche Informationen zur Konfiguration des Nachrichtenempfangs sind im entsprechenden Wiki-Abschnitt enthalten.


      Set

        • asyncSendItem <Item>
          Sendet eine Nachricht an einen oder mehrere Chatempfänger.
          Für weitere Informationen zu den verfügbaren Optionen für asyncSendItem, insbesondere zur Benutzung von interaktiven Objekten (Schaltflächen), konsultieren sie bitte diesen Wiki-Abschnitt.

            Beispiele:
            set <Name> asyncSendItem Erste zu postende Nachrichtenzeile.\n Sie können auch eine zweite Nachrichtenzeile haben. [users="<User>"]
            set <Name> asyncSendItem text="Erste zu postende Nachrichtenzeile.\n Sie können auch eine zweite Nachrichtenzeile haben." [users="<User>"]
            set <Name> asyncSendItem text="https://www.synology.com" [users="<User>"]
            set <Name> asyncSendItem text="Überprüfen Sie dies!! <https://www.synology.com|Click hier> für Einzelheiten!" [users="<User1>,<User2>"]
            set <Name> asyncSendItem text="ein lustiges Bild" fileUrl="http://imgur.com/xxxxx" [users="<User1>,<User2>"]
            set <Name> asyncSendItem text="<Mitteilungstext>" attachments="[{ "callback_id": "<Text für Reading recCallbackId>", "text": "<Überschrift des Buttons>", "actions":[{"type": "button", "name": "<Text>", "value": "<Wert>", "text": "<Text>", "style": "<Farbe>"}] }]"

          Es können Plotausgaben von SVG-Devices direkt versendet werden:

            set <Name> asyncSendItem text="aktuelles Plotfile" svg="<SVG-Device>[,<Zoom>][,<Offset>]" [users="<User1>,<User2>"]

          Weitere Informationen dazu sind im Wiki ausgeführt.

        • botToken <Token>
          Seichert den Token für den Zugriff auf den Chat als Bot.

        • listSendqueue
          Zeigt die noch an den Chat zu übertragenden Nachrichten.
          Alle zu sendenden Nachrichten werden zunächst in einer Queue gespeichert und asynchron zum Chatserver übertragen.

        • purgeSendqueue <-all- | -permError- | index>
          Löscht Einträge aus der Sendequeue.

          • -all- : Löscht alle Einträge der Sendqueue.
          • -permError- : Löscht alle Einträge der Sendqueue mit "permanent Error" Status.
          • index : Löscht ausgewählten Eintrag mit "index".
            Die Einträge in der Sendqueue kann man sich vorher mit "set listSendqueue" ansehen um den gewünschten Index zu finden.

        • restartSendqueue [force]
          Startet die Abarbeitung der Sendequeue manuell neu.
          Eventuell in der Sendequeue vorhandene Einträge mit der Kennzeichnung forbidSend werden nicht erneut versendet.
          Erfolgt der Aufruf mit der Option force, werden auch Einträge mit der Kennzeichnung forbidSend berücksichtigt.

      Get

        • apiInfo
          Ruft die API Informationen des Synology Chat Servers ab und öffnet ein Popup mit diesen Informationen.

        • chatChannellist
          Erstellt eine Liste der für den Bot sichtbaren Channels.

        • chatUserlist
          Erstellt eine Liste der für den Bot sichtbaren Usern.
          Sollten keine User gelistet werden, muss den Usern auf der Synology die Berechtigung für die Chat-Anwendung zugewiesen werden.

        • storedToken
          Zeigt den gespeicherten Token an.

        • versionNotes
          Listet wesentliche Änderungen in der Versionshistorie des Moduls auf.

      Attribute

        • allowedUserForCode
          Benennt die Chat-User, die Perl-Code in FHEM auslösen dürfen wenn der Slash-Befehl /code empfangen wurde.
          (default: alle User erlaubt)

        • allowedUserForGet
          Benennt die Chat-User, die Get-Kommandos in FHEM auslösen dürfen wenn der Slash-Befehl /get empfangen wurde.
          (default: alle User erlaubt)

        • allowedUserForOwn
          Benennt die Chat-User, die die im Attribut "ownCommand" definierte Kommandos in FHEM auslösen dürfen.
          (default: alle User erlaubt)

        • allowedUserForSet
          Benennt die Chat-User, die Set-Kommandos in FHEM auslösen dürfen wenn der Slash-Befehl /set empfangen wurde.
          (default: alle User erlaubt)

        • defaultPeer
          Ein oder mehrere (default) Empfänger für Nachrichten. Kann mit dem users= Tag im Befehl asyncSendItem übersteuert werden.

        • httptimeout <Sekunden>
          Stellt den Verbindungstimeout zum Chatserver ein.
          (default 20 Sekunden)

        • ownCommandx <Slash-Befehl> <Kommando>
          Definiert ein <Slash-Befehl> <Kommando> Paar. Der Slash-Befehl und das Kommando sind durch ein Leerzeichen zu trennen.
          Das Kommando wird ausgeführt wenn der SSChatBot den Slash-Befehl empfängt. Das Kommando kann ein FHEM Befehl oder Perl-Code sein. Perl-Code ist in { } einzuschließen.

            Beispiele:
            attr <Name> ownCommand1 /Wozi_Temp {ReadingsVal("eg.wz.wandthermostat","measured-temp",0)}
            attr <Name> ownCommand2 /Wetter get MyWetter wind_speed

        • showTokenInLog
          Wenn gesetzt, wird im Log mit verbose 4/5 der übermittelte Bot-Token angezeigt.
          (default: 0)

        • spareHost
          Ersetzt den automatisch ermittelten Hostnamen im Internal OUTDEF mit einem benutzerspezifischen Hostnamen oder einer IP-Adresse.
          Die URL des Internals OUTDEF ist das Ziel für ausgehende Nachrichten (Chat -> FHEM) und wird beim Versand von SVG Plot-Dateien ausgewertet.

        • sparePort
          Ersetzt den automatisch ermittelten Port im Internal OUTDEF mit einem benutzerspezifischen Wert.
          Die URL des Internals OUTDEF ist das Ziel für ausgehende Nachrichten (Chat -> FHEM) und wird beim Versand von SVG Plot-Dateien ausgewertet.

    SSFile

      Mit diesem Modul erfolgt die Integration der Synology File Station in FHEM. Das Modul SSFile basiert auf Funktionen der Synology File Station API.

      Die Verbindung zum Synology Server erfolgt über eine Session ID nach erfolgreichem Login. Anforderungen/Abfragen des Servers werden intern in einer Queue gespeichert und sequentiell abgearbeitet. Steht der Server temporär nicht zur Verfügung, werden die gespeicherten Abfragen abgearbeitet sobald die Verbindung zum Server wieder verfügbar ist.

      Vorbereitung

        Als Grundvoraussetzung muss das Synology File Station Package auf der Diskstation installiert sein.
        Die Zugangsdaten des verwendeten Users werden später über ein Set credentials Kommando dem angelegten Device zugewiesen.

      Definition

        Die Definition erfolgt mit:

          define <Name> SSFile <ServerAddr> [<Port>] [<Protocol>]

        Die Parameter beschreiben im Einzelnen:

        Name der Name des neuen Devices in FHEM
        ServerAddr die IP-Addresse der Synology DS. Hinweis: Wird der DNS-Name statt IP-Adresse verwendet, sollte das Attribut dnsServer im global Device gesetzt werden !
        Port optional - Port der Synology DS (default: 5000).
        Protocol optional - Protokoll zur Kommunikation mit der DS, http oder https (default: http).


        Beispiele:
              define SynBackup SSFile 192.168.2.10 
              define SynBackup SSFile 192.168.2.10 5001 https 
              # erstellt ein SSFile-Device mit Standardport (5000/http) bzw. https mit Port 5001
             
        Nach der Definition eines Devices steht nur der set-Befehl credentials zur Verfügung. Mit diesem Befehl werden zunächst die Zugangsparameter dem Device bekannt gemacht.

      Set

        • credentials <User> <Passwort>
          Speichert die Zugangsdaten.

        • deleteUploadsDone
          Löscht die Historie aller erfolgreich ausgeführten Uploads zur Synology Diskstation.

        • deleteRemoteObject "<File>[,<File>,...]" | "<Ordner>[,<Ordner>,...]" [<args>]
          Löscht die angegebenen Files oder Verzeichnisse auf der Synology Diskstation. Mehrere Objekte sind durch Komma zu trennen. Verzeichnissse sind ohne "/" am Ende einzugeben. Alle angegebenen Objekte sind insgesamt in " einzuschließen.

          Optional kann als <args> angegeben werden:
            recursive= true: Dateien innerhalb eines Ordners rekursiv löschen. (default)
            false: Nur erste Ebene Datei/Ordner löschen. Wenn ein zu löschender Ordner eine Datei enthält, wird ein Fehler auftreten, weil der Ordner nicht direkt gelöscht werden kann.

          Beispiele:
          set <Name> deleteRemoteObject "/backup/Carport-20200625-1147065130.jpg"
          set <Name> deleteRemoteObject "/backup/log,/backup/cookie - old.txt"
          set <Name> deleteRemoteObject "/backup/log/archive" recursive=false

        • Download "<File>[,<File>,...]" | "<Ordner>[,<Ordner>,...]" [<args>]
          Überträgt das(die) angegebene(n) File(s) oder Ordner von der Synology Diskstation zur Destination. Ist ein Ordner angegeben, wird er bzw. der Inhalt im Zip-Format komprimiert in einer Datei gespeichert. Ohne weitere Angaben wird das Quellobjekt im FHEM Root-Verzeichnis (üblicherweise /opt/fhem), abhängig von der Einstellung des globalen Attributs modpath, mit identischem Namen gespeichert.

          Optional kann angegeben werden:
            dest= <Filename>: das Objekt wird mit neuem Namen im default Pfad gespeichert
            <Pfad/Filename>: das Objekt wird mit neuem Namen im angegebenen Pfad gespeichert
            <Pfad/>: das Objekt wird mit ursprünglichen Namen im angegebenen Pfad gespeichert. Wichtig: der Pfad muß mit einem "/" enden.

          Alle angegebenen Objekte sind insgesamt in " einzuschließen.

          Beispiele:
          set <Name> Download "/backup/Carport-20200625-1147065130.jpg"
          set <Name> Download "/backup/Carport-20200625-1147065130.jpg" dest=carport.jpg
          set <Name> Download "/backup/Carport-20200625-1147065130.jpg" dest=./log/carport.jpg
          set <Name> Download "/backup/Carport-20200625-1147065130.jpg" dest=./log/
          set <Name> Download "/Temp/Anträge 2020,/backup/Carport-20200625-1147065130.jpg"
          set <Name> Download "/backup/Carport-20200625-1147065130.jpg,/Temp/card.txt" dest=/opt/

        • listQueue
          Zeigt alle Einträge in der Sendequeue. Die Queue ist normalerweise nur kurz gefüllt, kann aber im Problemfall dauerhaft Einträge enthalten. Dadurch kann ein bei einer Abrufaufgabe aufgetretener Fehler ermittelt und zugeordnet werden.

        • listUploadsDone
          Zeigt eine Tabelle mit Datum/Zeit, Quelldatei und Zielobjekt aller erfolgreich ausgeführten Uploads zur Synology Diskstation.

        • logout
          Der User wird ausgeloggt und die Session mit beendet.

        • prepareDownload "<File>[,<File>,...]" | "<Ordner>[,<Ordner>,...]" [<args>]
          Identisch zum "Download" Befehl. Der Download der Files/Ordner von der Synology Diskstation wird allerdings nicht sofort gestartet, sondern die Einträge nur in die Sendequeue gestellt. Um die Übertragung zu starten, muß abschließend der Befehl

            set <Name> startQueue

          ausgeführt werden.

        • prepareUpload "<File>[,<File>,...]" | "<Ordner>[,<Ordner>,...]" <args>
          Identisch zum "Upload" Befehl. Die Übertragung der Files zur Synology Diskstation wird allerdings nicht sofort gestartet, sondern die Einträge nur in die Sendequeue gestellt. Um die Übertragung zu starten, muß abschließend der Befehl

            set <Name> startQueue

          ausgeführt werden.

        • purgeQueue
          Löscht Einträge in der Sendequeue. Es stehen verschiedene Optionen je nach Situation zur Verfügung:

            -all- löscht alle in der Sendequeue vorhandenen Einträge
            -permError- löscht alle Einträge, die durch einen permanenten Fehler von der weiteren Verarbeitung ausgeschlossen sind
            <Index> löscht einen eindeutigen Eintrag der Sendequeue

        • startQueue
          Die Abarbeitung der Einträge in der Sendequeue wird gestartet. Bei den meisten Befehlen wird die Abarbeitung der Sendequeue implizit gestartet.

        • Upload "<File>[,<File>,...]" | "<Ordner>[,<Ordner>,...]" <args>
          Überträgt das(die) angegebene(n) lokalen File(s)/Ordner zur Synology Diskstation. Im Argument dest ist das Zielverzeichnis auf der Synology Diskstation anzugeben. Der Pfad der zu übertragenden lokalen Files/Ordner kann als absoluter oder relativer Pfad zum FHEM global modpath angegeben werden.
          Dateien und Ordner-Inhalte werden im Standard inklusive Subordner ausgelesen und zur Destination Struktur erhaltend übertragen. Dateien können Wildcards (*.) enthalten um nur bestimmte Dateien hochzuladen.
          Unterverzeichnisse werden im Standard in der Destination angelegt wenn sie nicht vorhanden sind.
          Alle angegebenen Objekte sind insgesamt in " einzuschließen.

          Pflichtargumente:
            dest= <Ordner>: Zielpfad zur Speicherung der Files im Synology Filesystem (der Pfad beginnnt mit einem shared Folder und endet ohne "/")
            Es können POSIX %-Wildcards angegeben werden.

          Optionale Argumente:
            ow= true: das File wird überschrieben wenn im Ziel-Pfad vorhanden (default), false: das File wird nicht überschrieben
            cdir= true: übergeordnete(n) Ordner erstellen, falls nicht vorhanden. (default), false: übergeordnete(n) Ordner nicht erstellen
            mode= full: alle außer im Attribut excludeFromUpload angegebenen Objekte werden berücksichtigt (default)
            inc: nur neue Objekte und Objekte die sich nach dem letzten Upload verändert haben werden berücksichtigt
            nth:<Tage>: nur Objekte neuer als <Tage> werden berücksichtigt (gebrochene Zahlen sind erlaubt, z.B. 3.6)
            struc= true: alle Objekte werden inkl. ihrer Verzeichnisstruktur im Zielpfad gespeichert (default)
            false: alle Objekte werden ohne die ursprüngliche Verzeichnisstruktur im Zielpfad gespeichert

          Beispiele:
          set <Name> Upload "./text.txt" dest=/home/upload
          set <Name> Upload "/opt/fhem/old data.txt" dest=/home/upload ow=false
          set <Name> Upload "./Archiv neu 2020.txt" dest=/home/upload
          set <Name> Upload "./log" dest=/home/upload mode=inc struc=false
          set <Name> Upload "./log/*.txt,./log/archive/fhem-2019-12*.*" dest=/home/upload mode=full
          set <Name> Upload "./log" dest=/home/upload/%Y_%m_%d_%H_%M_%S mode=full struc=false
          set <Name> Upload "./" dest=/home/upload mode=inc
          set <Name> Upload "/opt/fhem/fhem.pl,./www/images/PlotToChat.png,./log/fhem-2020-10-41.log" dest=/home/upload

      Get

        • apiInfo
          Ruft die API Informationen der Synology File Station ab und öffnet ein Popup mit diesen Informationen.

        • remoteFileInfo "<File>[,<File>,...]"
          Listet Informationen von einer oder mehreren Dateien der Synology Diskstation getrennt durch ein Komma "," auf. Alle Objekte sind insgesamt in " einzuschließen.

          Beispiele:
          get <Name> remoteFileInfo "/ApplicationBackup/export.csv,/ApplicationBackup/export_2020_09_25.csv"


        • remoteFolderList [<args>]
          Listet alle freigegebenen Ordner oder Dateien in einem angegebenen Ordner der Synology Diskstation auf und erstellt detaillierte Dateiinformationen. Ohne Argument werden alle freigegebenen Wurzel-Ordner aufgelistet. Ein Ordnerpfad und zusätzliche Optionen können angegeben werden.

          sort_direction= asc: aufsteigend sortieren, desc: absteigend sortieren
          onlywritable= true: listet beschreibbarer freigegebener Ordner, false: auflisten beschreibbarer und schreibgeschützter freigegebener Ordner
          limit= Integer: Anzahl der angeforderten Dateien. 0 - alle Dateien in einem bestimmten Ordner zeigen (default).
          pattern= Muster zum Filtern von anzuzeigenden Dateien bzw. Dateiendungen. Mehrere Muster können durch "," getrennt angegeben werden.
          filetype= file: nur Dateien listen, dir: nur Ordner listen, all: Dateien und Ordner listen

          Objekte mit Leerzeichen im Namen sind in " einzuschließen.

          Beispiele:
          get <Name> remoteFolderList /home
          get <Name> remoteFolderList "/home/30_Haus & Bau"
          get <Name> remoteFolderList "/home/30_Haus & Bau" filetype=file limit=2
          get <Name> remoteFolderList "/home/30_Haus & Bau" sort_direction=desc
          get <Name> remoteFolderList /home/Lyrik pattern=doc,txt


        • storedCredentials
          Zeigt die gespeicherten User/Passwort Kombination.


        • versionNotes
          Zeigt Informationen und Hilfen zum Modul.


      Attribute

        • additionalInfo
          Legt die zusätzlich anzuzeigenden Eigenschaften beim Abruf von Datei- oder Verzeichnisinformationen fest.

        • excludeFromUpload
          Die eingetragenen Dateien oder Verzeichnisse werden vom Upload (Übertragung zur Synology Diskstation) ausgeschlossen. Die Angaben werden als Regex ausgewertet. Mehrere Objekte sind durch Komma zu trennen.
          Hinweis: Dateien/Verzeichnisse mit "@" im Namen werden per default vom Upload ausgeschlossen.

          Beispiel:
          attr <Name> excludeFromUpload ./FHEM/FhemUtils/cacheSSCam.*,./www/SVGcache.*

        • interval <Sekunden>
          Automatischer Start der internen Queue alle X Sekunden. Alle zum Startzeitpunkt in der Queue enthaltenen Einträge (z.B. mit prepareUpload eingefügt) werden abgearbeitet. Ist "0" angegeben, wird kein automatischer Start ausgeführt. (default)

        • loginRetries
          Anzahl der Versuche für das inititiale User login.
          (default: 3)

        • noAsyncFillQueue
          Das Füllen der Upload-Queue kann in Abhängigkeit der Anzahl hochzuladender Dateien/Ordner sehr zeitaufwändig sein und FHEM potentiell blockieren. Aus diesem Grund wird die Queue in einem nebenläufigen Prozess gefüllt.
          Sollen nur wenige Einträge verarbeitet werden oder bei sehr schnellen Systemen kann durch Setzen dieses Attributs auf die Verwendung des zusätzlichen Prozesses verzichtet werden.
          (default: 0)

        • showPassInLog
          Wenn "1" wird das Passwort bzw. die SID im Log angezeigt.
          (default: 0)

        • timeout <Sekunden>
          Timeout für die Kommunikation mit der File Station API in Sekunden.
          (default: 20)

    STACKABLE

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

    STACKABLE_CC

    [EN DE]
      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.

    STV

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

    SUNRISE_EL

    [EN DE]
      SUNRISE_EL definiert eine Reihe von Perl-Subroutinen (z.B. zur Nutzung mit at):
      • sunrise() - absolute Zeit des nächsten Sonnenaufgangs (+ 24 h, wenn am nächsten Tag)
      • sunset() - absolute Zeit des nächsten Sonnenuntergangs (+ 24 h, wenn am nächsten Tag)
      • sunrise_rel() - relative Zeit bis zum nächsten Sonnenaufgang
      • sunset_rel() - relative Zeit bis zum nächsten Sonnenuntergang
      • sunrise_abs() - absolute Zeit des entsprechenden Sonnenaufgangs am heutigen Tag (ohne Stundenzuschlag)
      • sunset_abs() - absolute Zeit des entsprechenden Sonnenuntergangs am heutigen Tag (ohne Stundenzuschlag)
      • sunrise_abs_dat() - absolute Zeit des entsprechenden Sonnenaufgangs an einem bestimmten Tag
      • sunset_abs_dat() - absolute Zeit des entsprechenden Sonnenuntergangs an einem bestimmten Tag
      • isday() - (1) Tag oder (0) Nacht

      Breite, Länge und Höhenwinkel

      Bevor du SUNRISE_EL verwendest, solltest du im global-Device die Werte für latitude (geographische Breite) und longitude (geographische Länge) entsprechend deines Standorts setzen.
      Die Voreinstellung ist 50.112, 8.686 (Frankfurt am Main).
      SUNRISE_EL geht von einem Höhenwinkel der Sonne bezogen zum Horizont, h, von -6° aus. Dieser Wert bedeutet, dass die Sonne 6° unter dem Horizont steht und Lesen im Freien ohne künstliche Beleuchtung nicht mehr möglich ist (civil twilight, bürgerliche Dämmerung). SUNRISE_EL speichert diesen Wert in $defaultaltit. Siehe auch perldoc DateTime::Event::Sunrise für weitere Hinweise.
      Parameter
      Jede der folgenden Funktionen akzeptiert bis zu vier (bzw. fünf) Parameter in der angegebenen Reihenfolge:
      • unix timestamp
        Ausschließlich sunrise_abs_dat() & sunset_abs_dat() erwarten als ersten Parameter einen Unix-Timestamp (Unix-Epoche) in Sekunden, der ein Datum spezifiziert. Andere Subroutinen erwarten diesen Parameter nicht!

      • altitude
        Eine der folgenden Zeichenketten, die unterschiedliche Höhenwinkel h definieren und den Wert von $defaultaltit verändern.
        Erlaubte Werte sind:
        • REAL, h = 0°,
        • CIVIL, h = -6°,
        • NAUTIC, h = -12°,
        • ASTRONOMIC, h = -18°,
        • oder HORIZON=, gefolgt von einer positiven oder negativen Zahl ohn Gradzeichen, die einen Höhenwinkel angibt.

      • offset
        Offset in Sekunden, der zu dem Rückgabewert der Funktion addiert wird.
        isday() ignoriert diesen Wert.

      • min
        Einen Zeitstempel im Format hh:mm, vor dem keine Aktion ausgeführt werden soll. isday() wird (int) 0 zurückliefern, wenn min gesetzt und der aktuelle Zeitstempel kleiner ist.

      • max
        Einen Zeitstempel im Format hh:mm, nach dem keine Aktion ausgeführt werden soll. isday() wird (int) 0 zurückliefern, wenn max gesetzt und der aktuelle Zeitstempel größer ist.
      Beispiele
      • sunrise("CIVIL");
        Zeitpunkt des Sonnenaufgangs bei einem Höhenwinkel der Sonne von -6° unter dem Horizont (identisch zu sunrise()).

      • sunset("HORIZON=-3");
        Zeitpunkt des Sonnenuntergangs bei einem Höhenwinkel der Sonne von 3° unter dem Horizont (zwischen REAL und CIVIL).

      • sunset("HORIZON=1");
        Zeitpunkt des Sonnenaufgangs bei einem Höhenwinkel der Sonne von 1° über dem Horizont.

      • defmod a15 at *{sunset("REAL",0,"18:00","21:00")} set lamp1 on
        Schalte lamp1 an, sobald die Sonne unter den Horizont sinkt (h ≤ 0), jedoch nicht vor 18:00 und nicht nach 21:00.

      • sunrise_abs_dat(time() + 7*86400);
        Berechne den Sonnenaufgang von heute + sieben Tage.

      • sunrise_abs_dat(time() + 7*86400, "CIVIL");
        Berechne den Sonnenaufgang von heute + sieben Tage mit einem Höhenwinkel h = -6°.

      Define

      SUNRISE_EL kann nicht explizit als Device definiert werden, sondern bietet die oben genannten Subroutinen.

      Set

      SUNRISE_EL unterstützt set nicht.

      Get

      SUNRISE_EL unterstützt get nicht.

      Attribute

      Diese Attribute müssen im global-Device gesetzt werden!
      • latitude
      • longitude

    SVDRP

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

    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 die 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 eines FileLogs die SVG Instanz, wird eine eindeutige .gplot-Datei erzeugt. In diesem Fall ist dieser Befehl nicht erforderlich.

      Get
        N/A

      Attribute
      • axis_width
        Abstand reserviert für die Darstellung der Messgrößen. Falls nicht gesetzt, wird 48 für Desktop und 32 für smallscreen verwendet.

      • captionLeft
        Anzeigen der Legende auf der linken Seite. Überholt, wird automatisch nach captionPos konvertiert.

      • captionPos
        right - Anzeigen der Legende auf der rechten Seite (default)
        left - Anzeigen der Legende auf der linken Seite
        auto - Anzeigen der Labels der Legende auf der linken oder rechten Seite je nach Achsenzugehörigkeit

      • endPlotNow
        Wenn Sie dieses 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.

      • endPlotNowByHour
        Falls endPlotNow und dieses Attribut auf 1 gesetzt sind, und Zoom-Level ein Tag ist, dann werden die angezeigten Zeitmarker auf die volle Stunde gerundet.

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

      • fixedoffset <offset>
        Verschiebt den Plot-Offset um einen festen Wert, die Einheit hängt vom aktuellen Zoom-Level ab. Wird als Perl-Ausdruck ausgewertet, falls der Wert in {} eingeschlossen ist. Falls die aktuelle Auflösung Tag ist, dann zeigt {$FW_pos{off}-1} den Tag vor den aktuell gewählten an.

      • fixedrange [offset]
        Erste Alternative:
        Enthält zwei Zeit-Spezifikationen in der Schreibweise YYYY-MM-DD, getrennt durch ein Leerzeichen. scrollen der Zeitachse ist nicht möglich, es wird z.B. verwendet, um sich die Daten verschiedener Jahre auf eine Seite anzusehen.

        Zweite Alternative:
        Wenn der Wert entweder hour, <N>hours, day, <N>days, week, month, year oder <N>years lautet, kann der Zoom-Level für dieses SVG unabhängig vom User-spezifischen Zoom eingestellt werden. Diese Einstellung ist nützlich für mehrere Plots auf einer Seite: Eine Grafik ist mit dem Standard-Zoom am aussagekräftigsten, die anderen mit einem Zoom über eine Woche. Der optionale ganzzahlige Parameter [offset] setzt ein anderes Zeitintervall (z.B. letztes Jahr: fixedrange year -1, vorgestern: fixedrange day -2).
        Falls der Attributwert in {} eingeschlossen ist, dann wird er vor der weiteren Verarbeitung als Perl-Ausdruck ausgewertet.

      • 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.
        Überholt, wird durch das plotReplace Attribut abgelöst.

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

      • plotAsPngFix [0|1]
        Betrifft nur die plotAsPng Funktion: Bestimmte LibRSVG Versionen können nicht mit komplexen CSS Selektoren umgehen, und das Ergebnis ist ein schwarz/weiß Bild. Falls dieses Attribut auf 1 gesetzt wird, werden die CSS Anweisungen vereinfacht.

      • plotAsPngPort <portNum>
        Betrifft nur die plotAsPng Funktion: Verwendet eine bestimmte FHEMWEB Instanz.

      • 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::
        Überholt, wird durch das plotReplace Attribut abgelöst.

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

      • plotReplace
        Leerzeichen getrennte Liste von Name=Wert Paaren. Wert kann Leerzeichen enthalten, falls es in "" oder {} eingeschlossen ist. Wert wird als perl-Ausdruck ausgewertet, falls es in {} eingeschlossen ist.
        In der .gplot Datei wird <Name> und %Name% durch den zugehörigen Wert ersetzt, wobei <Name> nach der Extraktion der Logdaten ersetzt wird, damit man auf Werte wie $data{min1} zugreifen kann, und %Name% davor, damit man die Regeln in der .gplot Datei für die Extraktion anpassen kann.

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

      • startDate
        Setzt das Startdatum für den Plot. Wird für Demo-Installationen verwendet.

      • title
        Eine besondere Form der Überschrift (siehe oben), bei der die Zeichenfolge <TL> in der .gplot-Datei ersetzt wird. Standardmäßig wird als <TL> der Dateiname des Logfiles eingesetzt.
        Überholt, wird durch das plotReplace Attribut abgelöst.


      Plot-Editor
      Dieser Editor ist in der Detailansicht der SVG-Instanz zu sehen. Die meisten Features sind hier einleuchtend und bekannt, es gibt aber auch einige Ausnahmen:
      • wenn für ein Diagramm die Überschrift unterdrückt werden soll, muss im Eingabefeld notitle eingetragen werden.
      • wenn ein fester Wert (nicht aus einer Wertespalte) definiert werden soll, für den Fall, das eine Zeichenfoge gefunden wurde (z.B. 1 für eine FS20 Schalter, der AN ist und 0 für den AUS-Zustand), muss zuerst das Tics-Feld gefüllt, und die .gplot-Datei gespeichert werden, bevor der Wert über die Dropdownliste erreichbar ist.
          Beispiel:
          Eingabe im Tics-Feld: ("On" 1, "Off" 0)
          .gplot-Datei speichern
          "1" als Regexp switch.on und "0" für den Regexp switch.off vom Spalten-Dropdown auswählen (auf die Gänsefüßchen achten!).
          .gplot-Datei erneut speichern
      • Falls Range der Form {...} entspricht, dann wird sie als Perl - Expression ausgewertet. Das Ergebnis muss in der Form [min:max] sein.
      Die Sichtbarkeit des Plot-Editors kann mit dem FHEMWEB Attribut ploteditor konfiguriert werden.

    SWAP

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

    SWAP_0000002200000003

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

    SWAP_0000002200000008

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

    SYSMON

    [EN DE]
    (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', 'ssh' und 'local' erlaubt. 'local' erfordert keine weiteren Angaben und kann auch ganz weggelassen werden.
      Bei SSH-Anmeldung mit Passwort muss 'sshpass' installiert sein (Achtung! Sicherheitstechnisch nicht empfehlenswert! Besser Public-Key-Verfahren benutzen). Damit SSH-Anmeldung funktioniert, muss ggf. einmalig eine manuelle SSH-Verbindung an die Remote-Machine von dem FHEM-Acount (unter dessen Rechten FHEM läuft) durchgeführt und fingerprint bestätigt werden.

      Readings:

      • cpu_core_count
        Anzahl der CPU Kerne
      • cpu_model_name
        CPU Modellname
      • cpu_bogomips
        CPU Speed: BogoMIPS
      • cpu_freq (auf den DualCore-Systemen wie Cubietruck auch cpu1_freq)
        CPU-Frequenz

      • cpu_temp
        CPU-Temperatur

      • cpu_temp_avg
        Durchschnitt der CPU-Temperatur, gebildet über die letzten 4 Werte.

      • fhemuptime
        Zeit (in Sekunden) seit dem Start des FHEM-Servers.

      • fhemuptime_text
        Zeit seit dem Start des FHEM-Servers: Menschenlesbare Ausgabe (texttuelle Darstellung).

      • fhemstarttime
        Startzeit (in Sekunden seit 1.1.1970 1:00:00) des FHEM-Servers.

      • fhemstarttime_text
        Startzeit des FHEM-Servers: Menschenlesbare Ausgabe (texttuelle Darstellung).

      • idletime
        Zeit (in Sekunden und in Prozent), die das System (nicht der FHEM-Server!) seit dem Start in dem Idle-Modus verbracht hat. Also die Zeit der Inaktivität.

      • idletime_text
        Zeit der Inaktivität des Systems seit dem Systemstart in menschenlesbarer Form.

      • loadavg
        Ausgabe der Werte für die Systemauslastung (load average): 1 Minute-, 5 Minuten- und 15 Minuten-Werte.

      • ram
        Ausgabe der Speicherauslastung.

      • swap
        Benutzung und Auslastung der SWAP-Datei (bzw. Partition).

      • uptime
        Zeit (in Sekenden) seit dem Systemstart.

      • uptime_text
        Zeit seit dem Systemstart in menschenlesbarer Form.

      • starttime
        Systemstart (Sekunden seit Thu Jan 1 01:00:00 1970).

      • starttime_text
        Systemstart in menschenlesbarer Form.

      • Netzwerkinformationen
        Informationen zu den über die angegebene Netzwerkschnittstellen übertragene Datenmengen und der Differenz zu der vorherigen Messung.
        Beispiele:
        Menge der übertragenen Daten über die Schnittstelle eth0.
        eth0: RX: 940.58 MB, TX: 736.19 MB, Total: 1676.77 MB
        Änderung der übertragenen Datenmenge in Bezug auf den vorherigen Aufruf (für eth0).
        eth0_diff: RX: 0.66 MB, TX: 0.06 MB, Total: 0.72 MB
        IP and IP v6 Adressen eth0_ip 192.168.0.15
        eth0_ip6 fe85::49:4ff:fe85:f885/64

      • 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

      • ssh-param
        Fügt dem SSH-Aufruf zusätzliche Prameter, wie angegeben hinzu.


      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

    [EN DE]
      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>

      Set
        set <name> <value>

        Werte für value sind

      • raw <command>
        Sendet <command> per ssh and das entfernte System.
        set <name> raw shutdown -h now

      Get
        get <name> <value>

        Werte für value sind

      • filesystems
        zeigt die Dateisysteme an, die überwacht werden können.

      Attributes
      • noSSH
      • 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.
      • readings
        Newline getrennte Liste aus <reading>:<kommando> Paaren die ausgeführt werden sollen.
        attr  readings processes:ps ax | wc -l\
                                temperature:snmpwalk -c public -v 1 10.0.1.21 .1.3.6.1.4.1.6574.1.2.0 | grep -oE ..$
        
      • readingsFormat
        attr  readings temperature:cat /sys/class/thermal/thermal*/temp\
                                temperatures:cat /sys/class/thermal/thermal*/temp\
                                frequency:cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
        
        attr  readingsFormat { frequency => '{ $VALUE = [map {int($_ / 1000)} split("\n", $VALUE)] }',\
                                temperature => '{ $VALUE = [map {$_ / 1000} split("\n", $VALUE)] }',\
                                temperatures => '{ $VALUE =~ s/\n/ /g }' }
        
      • 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.
      • load
        Wenn gesetzt und = 0 wird die last (load) des nicht Systems ausgelesen.
      • 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

    SamsungAV

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

    Schellenberg

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

    SchellenbergHandle

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

    ShareMaster

    [EN DE]
      Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: ShareMaster

    Shares

    [EN DE]
      Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: Shares

    Shelly

      FHEM Modul zur Kommunikation mit Shelly Aktoren und Sensoren/Energiezähler

      Define

      define <name> Shelly <IP-Adresse|DNS-Name>[:Port] [[Benutzername:]Passwort]
      Definiert das Shelly Device.

      Beispiele
      define meinDevice Shelly 192.168.178.100 mit IP-Adresse
      define meineLampe Shelly 192.168.178.101 fritzi:geheim     mit IP-Adresse, Benutzername und Passwort
      define meinePumpe Shelly ShellyPlusPlugS-Pumpe mit DNS-Namen
      define meinShelly Shelly 192.168.178.100:11101 mit IP-Adresse des Range-Extender-Devices und Port-Nummer

      Hinweise:
      • Dieses Modul benötigt die Pakete JSON und HttpUtils
      • Das Attribut model wird automatisch gesetzt. Für Shelly Geräte, welche nicht von diesem Modul unterstützt werden, wird das Attribut zu generic gesetzt. Das Device enthält dann keine Aktoren, es ist nur ein Platzhalter für die Bereitstellung von Readings
      • Bei bestimmten Shelly Modellen können URLs (Webhooks) festgelegt werden, welche bei Eintreten bestimmter Ereignisse ausgelöst werden. Beispielsweise lauten die Webhooks für die Information über die Betätigung lokaler Taster wie folgt:
        • Button switched ON url: http://<FHEM IP address>:<Port>/fhem?cmd=set%20<Devicename>%20button_on%20[<channel>]
        • Button switched OFF url: http://<FHEM IP address>:<Port>/fhem?cmd=set%20<Devicename>%20button_off%20[<channel>]
        Ein Webhook für die Aktualisierung aller Readings lautet beispielsweise:
        • http://<FHEM IP address>:<Port>/fhem?cmd=get%20<Devicename>%20status
        Ein CSRF-Token muss gegebenenfalls in den URL aufgenommen werden oder ein zugehörendes allowed Device muss festgelegt werden.
        Die URLs (Webhooks) können mit dem Attribut 'webhook' automatisiert angelegt werden

      Set

      Für alle Shelly Geräte

      • Set-Extensions können genutzt werden, allerdings bei Geräten mit mehreren Kanälen nur für den per defchannel festgelegten Kanal.

      • set <name> name <ShellyName>
        Name des Shelly Gerätes. Der Shellyname darf Leerzeichen enthalten.
      • Hinweis: Leere Zeichenkentten werden nicht akzeptiert.
      • Gen1: set <name> config <registername> <value> [<channel>]
        Setzen eines Registers auf den Wert value (nur für Shellies der 1. Generation)
        Die verfügbaren Register erhält man mit get <name> registers
        Gen2: set <name> config <command>
        ap_enable|ap_disable aktiviert/deaktiviert den Zugangspunkt (access point)
      • set <name> interval <integer>
        Vorübergehendes Setzen des Aktualisierungsintervals. Wird bei Restart vom Wert des Attributes interval überschrieben. Der Wert -1 setzt das Interval auf den Wert des Attributes, der Wert 0 deaktiviert die automatische Aktualisierung.
      • set <name> password <password>
        Setzen des Passwortes für das Shelly Web Interface set <name> password
        Entfernen des in Fhem gespeicherten Passwortes (Aufruf ohne Parameter)
      • Bei Shelly-Geräten der 1. Generation muss zuvor das Attribut 'shellyuser' gesetzt sein. Hinweis: Beim Umbenennen des Devices mit 'rename' geht das Passwort verloren
      • set <name> reboot
        Neustarten des Shelly
      • set <name> script_start <id>
        Starten des Scripts <id>
      • set <name> script_stop <id>
        Stoppen des Scripts <id>
      • set <name> clear <reading>
        Zurücksetzen des/der ausgewählten Readings
        • disconnects: Reading network_disconnects
        • error: Reading error
        • energy: Reading energy (nur bei PMmini Leistungsmessgeräten)
        • responsetimes: Readings /.... (nur sichtbar, wenn Attribut timeout gesetzt ist)
      • set <name> update
        Aktualisieren der Shelly Firmware zur aktuellen stabilen Version

      Für Shelly mit Relais (model=shelly1|shelly1pm|shellyuni|shelly4|shellypro4pm|shellyplug|shellyem|shelly3em oder (model=shelly2/2.5/plus2/pro2 und mode=relay)) sowie Dimmer, RGBW und Leuchten
      • set <name> ON|OFF
        schaltet ALLE Kanäle eines mehrkanaligen Gerätes ein bzw. aus.
      • set <name> on|off|toggle [<channel>]
        schaltet den Kanal <channel> ein bzw. aus. Bei Geräten mit nur einem Kanal kann die Angabe des Kanals entfallen. Wenn bei mehrkanaligen Geräte keine Kanalnummer angegeben wird, wird der mit dem Attribut 'defchannel' definierte Kanal geschaltet.
      • set <name> on-for-timer|off-for-timer <time> [<channel>]
        schaltet den Kanal <channel> für <time> Sekunden ein bzw. aus. Wenn bei mehrkanaligen Geräte keine Kanalnummer angegeben wird, wird der mit dem Attribut 'defchannel' definierte Kanal geschaltet.
          Hinweise:
        • Im Shelly aktivierte Timer 'auto_on' und 'auto_off' bleiben unberücksichtig.
        • Bei nachfolgenden Befehlen, z.B. 'set ... pct ...' bleiben gestartete 'on-for-timer' Timer bestehen
      • set <name> intervals <from1>-<till1> <from2>-<till2> ...
        Das Gerät wird für die spezifizierten Intervalle eingeschaltet. Bei mehrkanaligen Geräten wird der mit defchannel definierte Kanal geschaltet. Die einzelnen Intervalle sind Leerzeichen getrennt, und ein Intervall besteht aus zwei Zeitspezifikationen, die mit einem "-" getrennt sind.
      • set <name> xtrachannels
        Erstellen von readingsProxy Devices für Shellies mit mehr als einem Kanal

      Für Shelly Rollladenaktoren (model=shelly2/2.5/plus2/pro2 und mode=roller)
      • set <name> open|closed [<duration>]
        Fährt den Rollladen aufwärts zur Position offen (open) bzw. abwärts zur Position geschlossen (closed). Es kann ein optionaler Parameter für die Fahrzeit in Sekunden mit übergeben werden
      • set <name> stop
        Beendet die Fahrbewegung (stop).
      • set <name> pos <integer percent value>
        Fährt den Rollladen zu einer Zwischenstellung (normalerweise gilt 100=offen, 0=geschlossen, siehe Attribut 'pct100').
        äquivalent zu set <name> pct <integer percent value>
      • set <name> delta +|-<percentage>
        Fährt den Rollladen einen gegebenen Prozentwert auf oder ab. Die Fahrtrichtung ist abhängig vom Attribut 'pct100'.
      • set <name> zero
        Den Shelly kalibrieren
      • set <name> predefAttr
        Setzen von vordefinierten Attributen: devStateIcon, cmdIcon, webCmd and eventMap
        Das Attribut 'pct100' muss bereits definiert sein
        Attribute werden nur gesetzt, wenn sie nicht bereits definiert sind

      Für Shelly Dimmer Devices (model=shellydimmer oder model=shellyrgbw und mode=white)
      • set <name> on|off|toggle [<channel>]
        schaltet Kanal <channel> on oder off.
      • set <name> blink <count> <time> [<channel>]
        schaltet Kanal <channel> entsprechend Anzahl 'count' für Zeit 'time' ein und aus.
      • set <name> on-for-timer|off-for-timer <time> [<channel>]
        schaltet Kanal <channel> on oder off für <time> Sekunden.
      • set <name> pct <1...100> [<channel>]
        Dimmer: Prozentualer Wert für die Helligkeit (brightness). Es wird nur der Helligkeitswert gesetzt ohne das Gerät ein oder aus zu schalten.
        Rollo: Prozentualer Wert für die Position, siehe auch set <name> pos <integer percent value> .
      • set <name> pct 0 [<channel>]
        Das Gerät/Kanal wird ausgeschaltet, der vorhandene Helligkeitswert bleibt unverändert.
      • set <name> dim <0...100>[:<transition>] [<channel>]
        Prozentualer Wert für die Helligkeit (brightness). Es wird der Helligkeitswert gesetzt und eingeschaltet. Bei einem Helligkeitswert gleich 0 (Null) wird ausgeschaltet, der im Shelly gespeicherte Helligkeitswert bleibt unverändert. Optional kann mit Doppelpunkt getrennt die Transit-Zeit 'transition' in Sekunden vorgegen werden.
      • set <name> dimup [<1...100>][:<transition>] [<channel>]
        Prozentualer Wert für die Vergrößerung der Helligkeit. Ist kein Wert angegeben, wird das Attribut dimstep ausgewertet. Der größte erreichbare Helligkeitswert ist 100. Ist das Gerät aus, ergibt sich der neue Helligkeitswert aus dem angegebenen Wert und das Gerät wird eingeschaltet. Optional kann mit Doppelpunkt die Transit-Zeit 'transition' in Sekunden vorgegen werden.
      • set <name> dimdown [<1...100>][:<transition>] [<channel>]
        Prozentualer Wert für die Verringerung der Helligkeit. Ist kein Wert angegeben, wird das Attribut dimstep ausgewertet. Der kleinste erreichbare Helligkeitswert ist der im Shelly gespeicherte Wert für "minimum brightness". Optional kann mit Doppelpunkt die Transit-Zeit 'transition' in Sekunden vorgegen werden.
      • set <name> dim-for-timer <brightness>[:<transition>] <time> [<channel>]
        Wie on-for-timer mit zusätzlicher Angabe eines prozentualen Wertes 'brightness' für die Helligkeit. Nach Ablauf der Zeit 'time' wird ausgeschaltet. Optional kann mit Doppelpunkt die Transit-Zeit 'transition' in Sekunden vorgegen werden.

      Hinweis zu transition: Nur bei Gen2-Dimmern verfügbar. Ist das Gerät eingeschaltet 'on', dann beginnt der Dimmvorgang beim aktuellen Helligkeitswert. Bei ausgeschaltetem Gerät beginnt der Dimmvorgang bei 0.
      Hinweis für ShellyRGBW (white-Mode): Kanalnummern sind 0..3. Wird keine Kanalnummer angegeben, wird der mit dem Attribut 'defchannel' definierte Kanal geschaltet.

      Für Shelly RGBW Devices (model=shellyrgbw und mode=color)
      • set <name> on|off|toggle
        schaltet das Device <channel> on oder off
      • set <name> on-for-timer|off-for-timer <time>
        schaltet das Device für <time> Sekunden on oder off.
      • set <name> hsv <hue value 0..360>,<saturation value 0..1>,<brightness value 0..1>
        Komma separierte Liste von Farbton (hue), Sättigung (saturation) und Helligkeit zum Setzen der Lichtfarbe. Hinweis: ein Hue-Wert von 360° entspricht einem Hue-Wert von 0° = rot. Hue-Werte kleiner als 1 werden als Prozentwert von 360° gewertet, z.B. entspricht ein Hue-Wert von 0.5 einem Hue-Wert von 180°.
      • set <name> gain <integer>
        setzt die Verstärkung (Helligkeit) der Farbkanäle auf einen Wert 0..100
      • set <name> effect <Off|0|1|2|3>
        aktiviert einen Effekt (nur Farbkanäle): 1=Meteor Shower Farbwechsel 2=Gradual Change Farbwechsel 3=Flash Blitz
      • 1 ws bl vt rt ge gn ge 2 gn bl vt rt ge
      • set <name> rgb <rrggbb>
        6-stelliger hexadezimal String zum Setzten der Farbe
      • set <name> rgbw <rrggbbww>
        8-stelliger hexadezimal String zum Setzten der Farbe und des Weiß-Wertes
      • set <name> white <integer>
        setzt den Weiß-Wert auf einen Wert 0..100

      Für Shelly Bulb duo:
      • set <name> ct <integer>
        setzt die Farbtemperatur auf einen Wert 3000...6500 K

      Für Shellies Gen2:
      • set <name> actions create|delete|disable|enable|update <...>

        set <name> actions create info|<index>|all   Erstellen von Actions auf dem Shelly
        set <name> actions delete <id>|own|all       Löschen von Actions auf dem Shelly
        set <name> actions disable <id>       Deaktivieren einer Action auf dem Shelly
        set <name> actions enable <id>        Deaktivieren einer Action auf dem Shelly
        set <name> actions update [<id>]      Aktualisieren aller/einer Action(s) auf dem Shelly
      • create info: Gibt eine Liste der verfügbaren Actions aus. Mit dem in der ersten Spalte aufgeführtem Index kann eine einzelne Action angelegt werden.
      • create <index>: Legte eine Action für das unter <index> angegebene Event auf dem Shelly an.
      • create all: Legt alle verfügbaren Actions mit an FHEM addressierten Webhooks auf dem Shelly an, so dass der Shelly von sich aus Statusänderungen an FHEM sendet. Voraussetzung ist, dass eine FHEMWEB-Instanz für das Ziel der Webhooks mittels des Attributes webhook definiert ist.
        Hinweise:
        Dezeit nur für Shellies der 2.Gen. verfügbar, Actions auf den Shellies der 1. Gen. müssen manuell angelegt werden.
        Enthält das zugehörige FHEMWEB Device ein CSFR-Token, wird dies mit berücksichtigt.
        Die Namen der Actions auf dem Shelly werden entsprechend der zugehörigen Events benannt, zusätzlich mit einem vorangestellten und angehangenen Unterstrich (z.B. _COVER.STOPPED_).
      • delete id: Die Action mit der ID <id> wird vom Shelly entfernt.
      • delete own: Automatisch erstellte Actions zur eigenen FHEMWEB-Instanz (mit Unterstrich) auf dem Shelly werden entfernt.
      • delete all: Alle actions auf dem Shelly werden entfernt.
      • disable id: Die Action mit der ID <id> wird auf dem Shelly deaktiviert.
      • enable id: Die Action mit der ID <id> wird auf dem Shelly aktiviert.
      • update: Die automatisch erstellten 'eigenen' Actions auf dem Shelly werden aktualisiert. Token werden vom Modul geprüft und die Webhooks auf dem Shelly werden gegenenfalls aktualisiert.
      • update id: Wie 'update' jedoch wird nur die Action mit der ID <id> aktualisiert.
      • Actions mit bis zu fünf Webhooks werden unterstützt. Webhooks, welche nicht an FHEM addressiert sind, werden von diesem Mechanismus nicht verändert.

      Für Shelly Devices mit Eingängen (model=...)
      • set <name> input mode [channel]
        ändert den Modus des Einganges [channel] zu <mode>

      Für ShellyPro3EM / ShellyProEM50 (model=...)
      • set <name> interval_power <integer>
        setzt das Aktualisierungsintervall der Power-Readings zu <integer> Sekunden
        Standardwert ist das allgemeine Intervall.


      Hinweise:
      Vor dem Löschen eines FHEM-Devices sollten die zugehörigen Actions auf dem Shelly entfernt werden.
      Alle mit dem Shelly-Modul durchführbaren Operationen können natürlich auch manuell über das GUI des Shelly durchgeführt werden.

      Get

      • get <name> actions
        Erstellt eine Liste aller auf dem Shelly vorhandenen Actions
        Hinweis: zur besseren Lesbarkeit wird dabei %20 durch das Blank-Symbol ␣ dargestellt
      • get <name> config [<registername>] [<channel>]
        Holt den Inhalt eines Konfigurationsregisters vom Shelly und schreibt das Ergebnis in das Reading 'config'. Wird kein Registername angegeben, werden nur allgemeine Daten wie z.B. die SHELLYID abgelegt.
      • get <name> registers
        Zeigt die Namen der verfügbaren Konfigurationsregister für dieses Device an.
      • get <name> status
        Aktualisiert den Gerätestatus.
      • get <name> settings
        Aktualisiert die Systemdaten des Shelly.
      • get <name> model
        Ermittelt den Typ des Shelly und passt die Attribute an
      • get <name> readingsGroup Device|Firmware|Network|Status
        Erstellt ein readingsGroup Device zur thematischen Darstellung aller Shellies
      • get <name> version
        Zeigt die Version des FHEM-Moduls an

      Attribute

      • attr <name> name <ShellyName>
        Name des Shelly Devices. Wenn kein Name für den Shelly vergeben wurde oder wenn der Name auf der Website des Shelly gelöscht wird, wird der Shelly-Name entsprechend dem Namens des FHEM-Devices gesetzt. Der Shelly-Name darf Leerzeichen enthalten, leere Zeichenketten werden nicht akzeptiert.
      • attr <name> shellyuser <shellyuser>
        Benutzername für den Zugang zur Website des Shelly. Das Passwort wird mit dem 'set ... password'-Befehl gesetzt.
      • Bei den Shellies der 2. Gen ist shellyuser=admin fest vorgegeben und kann nicht geändert werden.
      • attr <name> model <model>
        Type des Shelly Device. Wenn das Attribut model zu generic gesetzt wird, enthält das Device keine Aktoren, es ist dann nur ein Platzhalter für Readings. Hinweis: Dieses Attribut wird bei Definition automatisch ermittelt.
      • attr <name> mode relay|roller (nur bei model=shelly2/2.5/plus2/pro2)
        attr <name> mode white|color (nur bei model=shellyrgbw)
        Betriebsart bei bestimmten Shelly Devices
      • attr <name> host_dns <dns-name>
        DNS-Name des FHEM-Hosts
        Hinweis: wird bei Definition eines Devices vom System gesetzt
      • attr <name> host_ip <ip-address>
        IP-Adresse des FHEM-Hosts
        Beispiel: attr meinShelly host_ip 192.168.178.200
        Hinweis: wird bei Definition eines Devices vom System gesetzt, sofern unterstützt
      • attr <name> interval <interval>
        Aktualisierungsinterval für das Polling der Daten vom Shelly. Der Default-Wert ist 60 Sekunden, ein Wert von 0 deaktiviert das automatische Polling.
      • attr <name> interval_power <interval>
        Aktualisierungsinterval für das Polling der Leistungswerte von ShellyPro3EM / ShellyProEM50 Energiemessgeräten (i.W. Strom, Spannung, Leistung). Der Default-Wert ist das mit dem Attribut interval festgelegte Intervall. Minimalwert ist 1 sec.

      • Hinweise:
        Wenn interval_power gesetzt ist, kann interval auf einen größeren Wert (z.B. 300 sec) gesetzt werden.
        Bei den ShellyPro3EM / ShellyProEM50 Energiemessgeräten werden die Energiewerte (und daraus rekursiv bestimmte Leistungswerte) alle 60 Sekunden oder einem Vielfachen davon gelesen.
      • attr <name> maxAge <seconds>
        Mit diesem Attribut kann bei einigen Readings die Auslösung eines Events bei Aktualisierung des Readings erzwungen werden, auch wenn sich das Reading nicht geändert hat. Der Standardwert ist 2160000 Sekunden = 600 Stunden, Minimalwert ist das Pollingintervall.
      • attr <name> showinputs show|hide
        Das Attribut steuert die Berücksichtigung von Eingangssignalen an den Schalteingängen 'input' des Shelly. Der Status und die Betriebsart des Eingangs/der Eingänge werden als Reading dargestellt. In der Standardeinstellung werden die Readings angezeigt ('show'). Dies ist besonders dann sinnvoll, wenn die Informationen zu den Eingängen vom Shelly via 'Shelly actions' (webhooks) vom Shelly gepusht werden.
      • attr <name> showunits none|original|normal|normal2|ISO
        Anzeige der Einheiten in den Readings. Der Standardwert ist 'none' (keine Einheiten anzeigen). Die Einheit für Energie können zwischen Wh, kWh und kJ gewählt werden.
        • none: empfohlen im Zusammenhang mit ShellyMonitor
        • original: Einheiten werden entsprechend dem Shelly-Device angezeigt (z.B. Wm (Wattminuten) für die meisten Devices der 1. Gen.)
        • normal: Energie wird als Wh (Wattstunde) ausgegeben
        • normal2: Energie wird als kWh (Kilowattstunde) ausgegeben
        • ISO: Energie wird als kJ (Kilojoule) ausgegeben
      • attr <name> maxpower <maxpower>
        Leistungswert für den Überlastungsschutz des Shelly in Watt. Der Standardwert und der Einstellbereich wird vom Shelly-Device vorgegeben.
      • attr <name> timeout <seconds>
        Zeitlimit für nichtblockierende Anfragen an den Shelly. Der Standardwert ist 4 Sekunden. Dieses Attribut sollte bei Timingproblemen ('connect to ... timed out' in der Logdatei) angepasst werden.
        Durch das Setzen dieses Attributs werden für die diversen Anfragen an den Shelly Readings (beginnend mit '/') mit Angaben der Reaktionszeit, der letzte Set-Befehl sowie die Zeitspanne bis zur nächsten Status-Aktualisierung geschrieben. Diese Readings werden durch Löschen des Attributes entfernt und mit set <name> clear responsetimes zurückgesetzt.
      • attr <name> webhook <FHEMWEB-device>
        Auswahl der FHEMWEB-Instanz, für welche die Webhooks generiert werden (siehe set <name> actions create)

      Für Shelly Relais Devices (mode=relay für model=shelly2/2.5/plus2/pro2, Standard für alle anderen Relais Modelle)
      • attr <name> defchannel <integer>
        nur für mehrkanalige Relais Modelle (z.B. model=shelly2|shelly2.5|shelly4) oder ShellyRGBW im 'white mode': Festlegen des zu schaltenden Kanals, wenn ein Befehl ohne Angabe einer Kanalnummer empfangen wird.

      Für Shelly Dimmer Devices oder Shelly RGBW im White-Mode
      • attr <name> dimstep <integer>
        nur für dimmbare Modelle (z.B. model=shellydimmer) oder ShellyRGBW im 'white mode': Festlegen der Schrittweite der Befehle dimup / dimdown. Default ist 25.

      Für Shelly Rollladen Aktoren (mode=roller für model=shelly2/2.5/plus2/pro2)
      • attr <name> maxtime <int|float>
        Benötigte Zeit für das vollständige Öffnen oder Schließen
      • attr <name> maxtime_close <int> Gen1
        attr <name> maxtime_close <float> Gen2
        Benötigte Zeit für das vollständige Schließen
      • attr <name> maxtime_open <int> Gen1
        attr <name> maxtime_open <float> Gen2
        Benötigte Zeit für das vollständige Öffnen
      • attr <name> slat_control enabled|disabled
        Status der Lamellensteuerung
      • attr <name> slat_pos <0...100>
        Prozentwert für die Steuerung der Lamellen
      • attr <name> pct100 open|closed (default:open)
        Festlegen der 100%-Endlage für Rollladen offen (pct100=open) oder Rollladen geschlossen (pct100=closed)

      Für Energiemeter ShellyPro3EM / ShellyProEM50
      • attr <name> Energymeter_P <float>
        Anpassen des Zählerstandes an den Zähler des Netzbetreibers, für Zähler mit Rücklaufsperre bzw. für den Bezugszähler, in Wh (Wattstunden).
        Hinweis: Beim Anlegen des Attributes wird der Wert um den aktuellen Zählerstand reduziert
      • attr <name> Energymeter_R <float>
        Anpassen des Zählerstandes an den Einspeisezähler des Netzbetreibers (Bidirectional meters only), in Wh (Wattstunden).
        Hinweis: Beim Anlegen des Attributes wird der Wert um den aktuellen Zählerstand reduziert
      • attr <name> Energymeter_F <float>
        Anpassen des Zählerstandes an den Zähler des Netzbetreibers, für Zähler ohne Rücklaufsperre (Ferraris-Zähler), in Wh (Wattstunden).
        Hinweis: Beim Anlegen des Attributes wird der Wert um den aktuellen Zählerstand reduziert
      • attr <name> EMchannels ABC_|L123_|_ABC|_L123 (default: _ABC)
        Festlegung der Readingnamen mit Postfix oder Präfix
        Achtung: Das Löschen oder Ändern dieses Attributes führt zum Löschen der zugehörigen Readings!
      • attr <name> Balancing [0|1]
        Saldierung des Gesamtenergiedurchsatzes aktivieren/deaktivieren. Das Intervall-Attribut darf nicht größer als 20 sec sein.
        Achtung: Das Deaktivieren des Attributes führt zum Löschen aller zugehörigen Readings _T!
      • attr <name> Periods <periodes>
        Komma getrennte Liste von Zeitspannen für die Berechnung von Energiedifferenzen (Energieverbrauch)
        min: Minute
        hourT: Zwölftelstunde (5 Minuten)
        hourQ: Viertelstunde (15 Minuten)
        hour: Stunde
        dayQ: Tagesviertel (6 Stunden)
        dayT: Tagesdrittel (8 Stunden) beginnend um 06:00
        Week: Woche
        Achtung: Das Entfernen eines Eintrages dieser Liste oder Löschen des Attributes führt zum Löschen aller zugehörigen Readings!
      • attr <name> PeriodsCorr-F <0.90 ... 1.10>
        Korrekturfaktor für die berechneten Energiedifferenzen in den durch das Attribut 'Periods' gewählten Zeitspannen

      Standard Attribute
      • alias, comment, event-on-update-reading, event-on-change-reading, room, eventMap, verbose, webCmd

      Readings und erzeugte Events (Auswahl)

        Webhooks
      • webhook_cnt active / controlled / total
        Anzahl der Action-URLs auf dem Shelly:
        active: Anzahl der aktiven URLs (enabled)
        controlled: Anzahl der von dieser FHEM-Instanz kontrollierten URLs
        total: Gesamtzahl der URLs
      • webhook_ver
        latest revision number of shellies webhooks.
      • ShellyPlus and ShellyPro devices
      • indicating the configuration of Shellies hardware inputs
        input_<channel>_mode
        ShellyPlus/Pro2PM in relay mode:
        button|switch straight|inverted follow|detached
        ShellyPlus/Pro2PM in roller mode:
        button|switch straight|inverted single|dual|detached normal|swapped
        ShellyPlusI4:
        button|switch straight|inverted
        • button input type: button attached to the Shelly
        • switch input type: switch attached to the Shelly
        • straight the input is not inverted
        • inverted the input is inverted
        • single control button mode: the roller is controlled by one input *
        • dual control button mode: the roller is controlled by two inputs *
        • follow control button mode: the relay is controlled by the input **
        • detached control button mode: the input is detached from the relay|roller
        • normal the inputs are not swapped *
        • swapped the inputs are swapped *

        • * roller mode only ** relay mode only

      • indicating the reason for start or stop of the roller
        start_reason, stop_reason
        • button button or switch attached to the Shelly
        • http HTTP/URL eg Fhem
        • HTTP Shelly-App
        • loopback Shelly-App timer
        • limit_switch roller reaches upper or lower end
        • timeout after given drive time (eg fhem)
        • WS_in Websocket
        • obstruction Obstruction detection
        • overpower
        • overvoltage
        • overcurrent
      • ShellyPlusI4
        an input in mode 'button' has usually the state 'unknown'. When activated, the input state is set to 'ON' for a short periode, independent from activation time. The activation time and sequence is reprensented by the readings input_<ch>_action and input_<ch>_actionS, which will act simultanously with following values:
        • S single_push
        • SS double_push
        • SSS triple_push
        • L long_push
        NOTE: the readings of an input in mode 'button' cannot actualized by polling. It is necessary to set actions/webhooks on the Shelly!

        Webhooks on ShellyPlusI4
        Webhooks generated by Fhem are named as follows:
        Input mode 'switch'
        • _INPUT.TOGGLE_ON_
        • _INPUT.TOGGLE_OFF_

        Input mode 'button'
        • _INPUT.BUTTON_PUSH_
        • _INPUT.BUTTON_DOUBLEPUSH_
        • _INPUT.BUTTON_TRIPLEPUSH
        • _
        • _INPUT.BUTTON_LONGPUSH_
        ShellyPro3EM / ShellyProEM50
        Power
        Power, Voltage, Current and Power-Factor are updated at the main interval, unless otherwise specified
      • Active Power
        Active_Power_<A|B|C|T>
        float values of the actual active power
      • Calculated Active Power
        Active_Power_calculated
        float value, calculated from the difference of Shellies Total_Energy reading (updated each minute, or multiple)
      • Integrated Active Power
        Active_Power_integrated
        float value, calculated from the integration of Shellies power readings (updated each minute, or multiple)
      • Pushed Power
        Active_Power_pushed_<A|B|C|T>
        float values of the actual power pushed by the Shelly when the value of a phase differs at least 10% to the previous sent value (update interval depends on load, possible minimum is 1 second) Action on power-events on the Shelly must be enabled.
      • Apparent Power
        Apparent_Power_<A|B|C|T>
        float values of the actual apparent power
      • Voltage, Current and Power-Factor
        Voltage_<A|B|C>
        Current_<A|B|C|T>
        Power_Factor_<A|B|C>
        float values of the actual voltage, current and power factor
      • Energy
        Energy readings are updated each minute, or multiple.
        When the showunits attribute is set, the associated units (Wh, kWh, kJ) are appended to the values
      • Active Energy
        Purchased_Energy_<A|B|C|T>
        Returned_Energy_<A|B|C|T>
        float values of the purchased or returned energy per phase and total
      • Total Active Energy
        Total_Energy
        float value of total purchased energy minus total returned energy
        A minus sign is indicating returned energy.
        The timestamp of the reading is set to the full minute, as this is Shellies time base. Day and Week are based on GMT.
      • Energymeter
        Total_Energymeter_<F|P|R>
        float values of the purchased (P) or returned (R) energy displayed by the suppliers meter. For Ferraris type meters (F), the returned energy is subtracted from the purchased energy
      • Energy differences in a period of time
        [measuredEnergy]_<Min|QHour|Hour|Qday|TDay|Day|Week>
        float value of energy in a period of time (updated at the defined time interval).
        • QDay is a period of 6 hours, starting at 00:00.
        • TDay is a period of 8 hours, starting at 06:00.
        • Week is a period of 7 days, starting mondays at 00:00.

    ShellyMonitor

    [EN DE]
      Dieses Modul aktualisiert die Readings von Shelly-Geräten, die ihre Daten im CoIoT-"Standard" (Abwandlung von COAP) im Netzwerk versenden. Die gefundenen Geräte werden in FHEMWEB in einer Tabelle angezeigt, wo sie sich mit einem Klick erzeugen und anschließend ggf. umbenennen lassen.

      Anforderungen

      ShellyMonitor benötigt zwei zusätzliche Perl-Pakete:
      • JSON
        Unter Raspian Buster per sudo apt-get install libjson-perl installierbar, oder per sudo cpan install JSON
      • IO::Socket::Multicast
        Unter Raspian Buster per sudo apt-get install libio-socket-multicast-perl installierbar, oder per sudo cpan install IO::Socket::Multicast

      Define

        define <name> ShellyMonitor [interface]

        <interface> ist nötig, falls das primäre Netzwerk-Interface nicht das Netz ist, in dem die Multicast-Pakete versendet werden. Beispielsweise "wlan0" oder "eth0"

      Set

      • set <name> autocreate [<ip regexp>]
        Mit diesem Kommando werden alle gefundenen Shelly-Geräte, die noch nicht angelegt wurden, erzeugt, sofern ihre aktuelle IP-Adresse dem regulären Ausdruck entspricht. Ohne diesen Parameter werden alle gefundenen Geräte erzeugt.
        Die Erzeugung umfasst:
        • a define über das autocreate-Modul mit dem systematischen Namen, der in der Tabelle angezeigt wird
        • Setzen des model-Attributs für das Gerät
        • Setzen des mode-Attributs, sofern beim Gerät vorhanden
        • Setzen eines webCmd-Attributs, falls sinnvoll
      • set <name> create <ip address> [deviceName]
        Mit diesem Kommando wird das durch die angegebene IP-Adresse spezifizierte Gerät unter dem als deviceName optional angegebenen Namen erzeugt. Anders als bei autocreate wird das Gerät nicht über das autocreate-Modul erzeugt. Es wird daher kein Raum zugewiesen und kein FileLog-Device angelegt. Die Attribute werden hingegen wie bei autocreate beschrieben zugewiesen.

      Attribute

      • ignoreDevices
        Regulärer Ausdruck, welche Shelly-Geräte nicht aktualisiert werden sollen. Beispielsweise werden mit ".*" alle Geräte ignoriert. Der Ausdruck bezieht sich auf den Gerätenamen.

    Signalbot

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

    SingleFileLog

    [EN DE]

      Define
        define <name> SingleFileLog <filename> <regexp>

        Fü jedes Event oder Gerätename:Event, worauf <regexp> zutrifft, wird eine separate Datei angelegt, der Inhalt wird von dem template Attribut gesteuert (s.u.). <filename> kann %-Wildcards der POSIX strftime-Funktion des darunterliegenden OS enthalten (siehe auch man strftime). Zusätzlich wird %Q durch eine fortlaufende Zahl ersetzt.
        Falls filename in {} eingeschlossen ist, dann wird sie als perl-Ausdruck ausgewertet, was ermöglicht einen vom %L abweichenden globalem Pfad zu definieren.

      Set
        N/A

      Get
        N/A

      Attribute
      • addStateEvent

      • disable
      • disabledForIntervals

      • dosLineEnding
        Erzeugt die Datei mit der auf Windows Systemen ueblichen Zeilenenden (\r\n)

      • numberFormat
        Falls ein Wort im Event wie eine Zahl aussieht, dann wird es wie in numberFormat angegeben, umformatiert, und als $EVTNUMx (analog zu $EVTPARTx) zur Verfügung gestellt. Voreinstellung ist %1.6E, siehe die printf Formatbeschreibung für Details.

      • readySuffix
        Die in der Definition spezifizierte Datei wird mit dem Suffix .tmp angelegt, und nachdem sie fertig ist, mit readySuffix umbenannt. Die Voreinstellung ist .rdy; um kein Suffix zu erzeugen, muss man none spezifizieren.

      • syncAfterWrite
        Zwingt das Betriebssystem die Datei sofort auf die Platte zu schreiben. Achtung: das kann die Geschwindigkeit beeinträchtigen, und bei SSDs zu einem früheren Ausfall führen. Die Voreinstellung ist 0 (aus).

      • template
        Damit wird der Inhalt der geschriebenen Datei spezifiziert. Folgende Variablen werden vor dem Schreiben der Datei ersetzt:
        • $EVENT - das vollständige Event.
        • $EVTPART0 $EVTPART1 ... - die einzelnen Wörter des Events.
        • $EVTNUM0 $EVTNUM1 ... - umformatiert als Zahl, siehe numberFormat weiter oben.
        • $NAME - der Name des Gerätes, das das Event generiert.
        • $time - die aktuelle Zeit, formatiert als YYYY-MM-DD HH:MM:SS
        • $time14 - die aktuelle Zeit, formatiert als YYYYMMDDHHMMSS
        • $time16 - die aktuelle Zeit, formatiert als YYYYMMDDHHMMSSCC, wobei CC die hundertstel Sekunde ist
        Falls template in {} eingeschlossen ist, dann wird er als perl-Ausdruck ausgefuehrt, und das Ergebnis wird in die Datei geschrieben.
        Die Voreinstellung ist $time $NAME $EVENT\n

      • writeInBackground
        falls gesetzt (auf 1), dann erfolgt das Schreiben in einem Hintergrundprozess, um FHEM nicht zu blockieren. Die Voreinstellung ist 0 (aus).


    SmartMeterP1

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

    SmartPi

    [EN DE]

    Snapcast

      Leider keine deutsche Dokumentation vorhanden. Die englische Version gibt es hier: Snapcast
      Das Modul liest Daten aus der Grünbeck Cloud für Softliq Wasserenthärter (SD Serie). Es ermöglicht auch das Setzen von Parametern, sowie eine gewisse Steuerung

      Define
        Definiere das Modul mit define SoftliqCloud wobei login name dein login name für die softliq cloud ist. Danach Passwoert setzen: set password
      Get
      • authenticate: Braucht man im Normalfall nicht, beim Testen hatte ich allerdings Fälle, wo ich mich neu authorisieren musste
      • query: holt alle Daten aus der Cloud
      • realtime:  triggert das "streaming" (entspricht mehr oder weniger dem refresh Button in der App)
      • salt/water: zeigt die Salz-/Wasser-Verbrauchshistorie an
      • paramList: Zeigt die verfügbaren Einstellungen mit aktuellen Werten an (Readings). Wenn die Bedeutung bekannt ist, gibt es auch eine Erläuterung
      Set
      • param: erlaubt das setzen von Einstellungen (siehe paramList) in der Form set meineSoftliq
      • regenerate: startet die manuelle Regeneration (ohne Nachfrage - geht direkt los)
      • refill: Auszuführen wenn (25kg) Salz nachgefüllt wurden. Ermöglicht es das verbleibende Salz zu tracken
      • password: Einmalig auszuführen, um das Passwort im sicheren Speicher zu setzen.
      Attributes
      • sq_duplex: Auf 1 setzen, wenn es sich um einen Duplex Entkalker handelt
      • sq_interval: Polling Intervall in Sekunden (Default Wert 3600)

    SolarEdgeAPI

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

    SolarForecast


    Das Modul SolarForecast erstellt auf Grundlage der Werte aus generischen Quellen eine Vorhersage für den solaren Ertrag und integriert weitere Informationen als Grundlage für darauf aufbauende Steuerungen.
    Zur Erstellung der solaren Vorhersage kann das Modul SolarForecast unterschiedliche Dienste und Quellen nutzen:

      DWD solare Vorhersage basierend auf MOSMIX Daten des Deutschen Wetterdienstes
      SolCast-API verwendet Prognosedaten der SolCast API
      ForecastSolar-API verwendet Prognosedaten der Forecast.Solar API
      OpenMeteoDWD-API ICON-Wettermodelle des Deutschen Wetterdienstes (DWD) über Open-Meteo
      OpenMeteoDWDEnsemble-API Zugang zum globalen Ensemble-Vorhersagesystem (EPS) des DWD
      OpenMeteoWorld-API vereint nahtlos Wettermodelle von Organisationen wie NOAA, DWD, CMCC und ECMWF über Open-Meteo
      VictronKI-API Victron Energy API des VRM Portals

    Die Nutzung der erwähnten API's beschränkt sich auf die jeweils kostenlose Version des Dienstes.
    In Abhängigkeit vom verwendeten Model kann eine KI-Unterstützung aktiviert werden.

    Über die PV Erzeugungsprognose hinaus werden Verbrauchswerte bzw. Netzbezugswerte erfasst und für eine Verbrauchsprognose verwendet.
    Das Modul errechnet aus den Prognosewerten einen zukünftigen Energieüberschuß der zur Betriebsplanung von Verbrauchern genutzt wird. Weiterhin bietet das Modul eine Consumer Integration zur integrierten Planung und Steuerung von PV Überschuß abhängigen Verbraucherschaltungen. Eine Unterstützung zum optimalen Batterie SoC-Management gehört ebenfalls zum Funktionsumfang.

    Bei der ersten Definition des Moduls wird der Benutzer über eine Guided Procedure unterstützt um alle initial notwendigen Eingaben vorzunehmen.
    Am Ende des Vorganges und nach relevanten Änderungen der Anlagen- bzw. Devicekonfiguration sollte unbedingt mit einem set <name> plantConfiguration ceck die ordnungsgemäße Anlagenkonfiguration geprüft werden.
      Define

        Ein SolarForecast Device wird erstellt mit:

          define <name> SolarForecast

        Nach der Definition des Devices sind in Abhängigkeit der verwendeten Prognosequellen zwingend weitere anlagenspezifische Angaben zu hinterlegen.
        Mit nachfolgenden Set-Kommandos und Attributen werden für die Funktion des Moduls maßgebliche Informationen hinterlegt:

          setupWeatherDevX DWD_OpenData Device welches meteorologische Daten (z.B. Bewölkung) liefert
          setupRadiationAPI DWD_OpenData Device bzw. API zur Lieferung von Strahlungsdaten
          setupInverterDevXX Device welches PV Leistungsdaten liefert
          setupMeterDev Device welches Netz I/O-Daten liefert
          setupBatteryDevXX Device welches Batterie Leistungsdaten liefert (sofern vorhanden)
          setupInverterStrings Bezeichner der vorhandenen Anlagenstrings
          setupStringAzimuth Ausrichtung (Azimut) der Anlagenstrings
          setupStringPeak die DC-Peakleistung der Anlagenstrings
          roofIdentPair die Identifikationsdaten (bei Nutzung der SolCast API)
          setupRoofTops die Rooftop Parameter (bei Nutzung der SolCast API)
          setupStringDeclination die Neigungswinkel der Anlagenmodule

        Um eine Anpassung an die persönliche Anlage zu ermöglichen, können Korrekturfaktoren manuell fest bzw. automatisiert dynamisch angewendet werden.

      Consumer Integration

        Der Nutzer kann Verbraucher (z.B. Schaltsteckdosen) direkt im Modul registrieren und die Planung der Ein/Ausschaltzeiten sowie deren Ausführung vom SolarForecast Modul übernehmen lassen. Die Registrierung erfolgt mit den ConsumerXX-Attributen. In den Attributen werden neben dem FHEM Consumer Device eine Vielzahl von obligatorischen oder optionalen Schlüsseln angegeben die das Einplanungs- und Schaltverhalten des Consumers beeinflussen.
        Die Schlüssel sind in der ConsumerXX-Hilfe detailliiert beschreiben. Um sich in den Umgang mit der Consumersteuerung anzueignen, bietet es sich an zunächst einen oder mehrere Dummies anzulegen und diese Devices als Consumer zu registrieren.

        Zu diesem Zweck eignet sich ein Dummy Device nach diesem Muster:

          define SolCastDummy dummy
          attr SolCastDummy userattr nomPower
          attr SolCastDummy alias SolarForecast Consumer Dummy
          attr SolCastDummy cmdIcon on:remotecontrol/black_btn_GREEN off:remotecontrol/black_btn_RED
          attr SolCastDummy devStateIcon off:light_light_dim_100@grey on:light_light_dim_100@darkorange
          attr SolCastDummy group Solarprognose
          attr SolCastDummy icon solar_icon
          attr SolCastDummy nomPower 1000
          attr SolCastDummy readingList BatIn BatOut BatVal BatInTot BatOutTot bezW einW Batcharge Temp automatic
          attr SolCastDummy room Energie,Testraum
          attr SolCastDummy setList BatIn BatOut BatVal BatInTot BatOutTot bezW einW Batcharge on off Temp
          attr SolCastDummy userReadings actpow {ReadingsVal ($name, 'state', 'off') eq 'on' ? AttrVal ($name, 'nomPower', 100) : 0}


      Set
        • aiDecTree

          Ist der KI Support im SolarForecast Device aktiviert, können verschiedene KI-Aktionen manuell ausgeführt werden. Die manuelle Ausführung der KI Aktionen ist im Allgemeinen nicht notwendig, da die Abarbeitung aller nötigen Schritte bereits automatisch im Modul vorgenommen wird.

            addInstAndTrain Die KI wird mit den aktuell vorhandenen PV-, Strahlungs- und Umweltdaten angereichert.
            Anschließend wird die KI mit den historischen Daten trainiert.
            Erfolgreich generierte Entscheidungsbäume werden im Filesystem gespeichert.
            addRawData Relevante PV-, Strahlungs- und Umweltdaten werden extrahiert und für die spätere Verwendung gespeichert.
            rawDataGHIreplace Es werden historische GHI (Global Horizontal Irradiance) Werte vom Open-Meteo Dienst abgerufen und die in aiRawData
            (siehe get ... valDecTree aiRawData) vorhanden Werte 'rad1h' ersetzt bzw. ergänzt wenn sie nicht vorhanden sind.

        • attrKeyVal <Attribut> [<Gerät>] <Schlüssel=Wert>

          Es können ein oder mehrere Schlüssel=Wert Paare in den Sammelattributen (aiControl, consumerXX, plantControl, setup.*, etc.) neu gesetzt oder verändert werden.
          Ist ein Gerät obligatorisch, wie in den setup.*-Attributen verlangt, kann es ebenfalls gesetzt oder geändert werden. Es erfolgt eine automatische Speicherung der Änderung.

            Beispiel:
            set <name> attrKeyVal setupBatteryDev01 asynchron=1
            set <name> attrKeyVal setupBatteryDev02 BatteryDummy2 asynchron=1
            set <name> attrKeyVal plantControl cycleInterval=77
            set <name> attrKeyVal plantControl batteryPreferredCharge=0 consForecastInPlanning=1 cycleInterval=77

        • batteryTrigger <1on>=<Wert> <1off>=<Wert> [<2on>=<Wert> <2off>=<Wert> ...]

          Generiert Trigger bei Über- bzw. Unterschreitung bestimmter Batterieladungswerte (SoC in %).
          Der verwendete SoC wird als resultierender SoC (Summe aktuelle Ladung aller Batterie Geräte im Verhältnis zur installierten Gesamtkapazität) gebildet, d.h. alle Batterien werden als ein Cluster betrachtet.
          Überschreiten die letzten drei SoC-Messungen eine definierte Xon-Bedingung, wird das Reading batteryTrigger_X = on erstellt/gesetzt.
          Unterschreiten die letzten drei SoC-Messungen eine definierte Xoff-Bedingung, wird das Reading batteryTrigger_X = off erstellt/gesetzt.
          Es kann eine beliebige Anzahl von Triggerbedingungen angegeben werden. Xon/Xoff-Bedingungen müssen nicht zwingend paarweise definiert werden.

            Beispiel:
            set <name> batteryTrigger 1on=30 1off=10 2on=70 2off=20 3on=15 4off=90

        • consumerNewPlanning <Verbrauchernummer>

          Es wird die vorhandene Planung des angegebenen Verbrauchers gelöscht.
          Die Neuplanung wird unter Berücksichtigung der im consumerXX Attribut gesetzten Parameter sofort vorgenommen.

            Beispiel:
            set <name> consumerNewPlanning 01

        • cycleInterval <Ganzzahl>

          Wiederholungsintervall der Datensammlung in Sekunden.
          Der Befehl ist geeignet um den Schlüssel 'cycleInterval' im Attribut 'plantControl' dynamisch zu ändern. Für die Eingabe gelten die Bedingungen des Attributes 'plantControl'.

            Beispiel:
            set <name> cycleInterval 120

        • consumerImmediatePlanning <Verbrauchernummer>

          Es wird das sofortige Einschalten des Verbrauchers zur aktuellen Zeit eingeplant. Eventuell im consumerXX Attribut gesetzte Schlüssel notbefore, notafter bzw. mode werden nicht beachtet.

            Beispiel:
            set <name> consumerImmediatePlanning 01

        • energyH4Trigger <1on>=<Wert> <1off>=<Wert> [<2on>=<Wert> <2off>=<Wert> ...]

          Generiert Trigger bei Über- bzw. Unterschreitung der 4-Stunden PV Vorhersage (NextHours_Sum04_PVforecast).
          Überschreiten die letzten drei Messungen der 4-Stunden PV Vorhersagen eine definierte Xon-Bedingung, wird das Reading energyH4Trigger_X = on erstellt/gesetzt. Unterschreiten die letzten drei Messungen der 4-Stunden PV Vorhersagen eine definierte Xoff-Bedingung, wird das Reading energyH4Trigger_X = off erstellt/gesetzt.
          Es kann eine beliebige Anzahl von Triggerbedingungen angegeben werden. Xon/Xoff-Bedingungen müssen nicht zwingend paarweise definiert werden.

            Beispiel:
            set <name> energyH4Trigger 1on=2000 1off=1700 2on=2500 2off=2000 3off=1500

        • operatingMemory backup | save | recover-<Datei>

          Die Komponenten pvHistory (PVH) und pvCircular (PVC) der internen Cache Datenbank werden im Filesystem gespeichert.
          Das Zielverzeichnis ist "../FHEM/FhemUtils". Dieser Vorgang wird vom Modul regelmäßig im Hintergrund ausgeführt.

            backup Sichert die aktiven In-Memory Strukturen mit dem aktuellen Zeitstempel.
            Es werden plantControl->backupFilesKeep Generationen der Dateien gespeichert. Ältere Versionen werden gelöscht.
            Dateien: PVH_SolarForecast_<name>_<Zeitstempel>, PVC_SolarForecast_<name>_<Zeitstempel>
            save Die aktiven In-Memory Strukturen werden gespeichert.
            Dateien: PVH_SolarForecast_<name>, PVC_SolarForecast_<name>
            recover-<Datei> Stellt die Daten der ausgewählten Sicherungsdatei als aktive In-Memory Struktur wieder her.
            Um Inkonsistenzen zu vermeiden, sollten die Dateien PVH.* und PVC.* mit dem gleichen
            Zeitstempel paarweise recovert werden.


        • operationMode

          Mit inactive wird das SolarForecast Gerät deaktiviert. Die active Option aktiviert das Gerät wieder. Das Verhalten entspricht dem "disable"-Attribut, eignet sich aber vor allem zum Einsatz in Perl-Skripten da gegenüber dem "disable"-Attribut keine Speicherung der Gerätekonfiguration nötig ist.

        • plantConfiguration

          Je nach ausgewählter Kommandooption werden folgende Operationen ausgeführt:

            check Prüft die aktuelle Anlagenkonfiguration. Es wird eine Plausibilitätsprüfung
            vorgenommen und das Ergebnis sowie eventuelle Hinweise bzw. Fehler ausgegeben.
            save sichert wichtige Parameter der Anlagenkonfiguration.
            Die Operation wird täglich kurz nach 00:00 Uhr automatisch ausgeführt.
            restore stellt eine gesicherte Anlagenkonfiguration wieder her

        • powerTrigger <1on>=<Wert> <1off>=<Wert> [<2on>=<Wert> <2off>=<Wert> ...]

          Generiert Trigger bei Über- bzw. Unterschreitung bestimmter PV Erzeugungswerte (Current_PV).
          Überschreiten die letzten drei Messungen der PV Erzeugung eine definierte Xon-Bedingung, wird das Reading powerTrigger_X = on erstellt/gesetzt. Unterschreiten die letzten drei Messungen der PV Erzeugung eine definierte Xoff-Bedingung, wird das Reading powerTrigger_X = off erstellt/gesetzt.
          Es kann eine beliebige Anzahl von Triggerbedingungen angegeben werden. Xon/Xoff-Bedingungen müssen nicht zwingend paarweise definiert werden.

            Beispiel:
            set <name> powerTrigger 1on=1000 1off=500 2on=2000 2off=1000 3on=1600 4off=1100

        • pvCorrectionFactor_Auto

          Schaltet die automatische Vorhersagekorrektur ein/aus. Die Wirkungsweise unterscheidet sich je nach gewählter Methode.
          (default: off)

          noLearning:
          Mit dieser Option wird die erzeugte PV Energie der aktuellen Stunde vom Lernprozess (Korrekturfaktoren sowie KI) ausgeschlossen.
          Die zuvor eingestellte Autokorrekturmethode wird weiterhin angewendet.

          on_simple(_ai):
          Bei dieser Methode wird die stündlich vorhergesagte mit der real erzeugten Energiemenge verglichen und daraus ein für die Zukunft verwendeter Korrekturfaktor für die jeweilige Stunde erstellt. Die von der gewählten API gelieferten Prognosedaten werden nicht zusätzlich mit weiteren Bedingungen wie den Bewölkungszustand oder Temperaturen in Beziehung gesetzt.
          Ist die KI-Unterstützung eingeschaltet (on_simple_ai) und wird durch die KI ein PV-Prognosewert geliefert, wird dieser Wert anstatt des API-Wertes verwendet.

          on_complex(_ai):
          Bei dieser Methode wird die stündlich vorhergesagte mit der real erzeugten Energiemenge verglichen und daraus ein für die Zukunft verwendeter Korrekturfaktor für die jeweilige Stunde erstellt. Die von der gewählten API gelieferten Prognosedaten werden außerdem zusätzlich mit weiteren Bedingungen wie den Bewölkungszustand oder Temperaturen verknüpft.
          Ist die KI-Unterstützung eingeschaltet (on_complex_ai) und wird durch die KI ein PV-Prognosewert geliefert, wird dieser Wert anstatt des API-Wertes verwendet.

          Hinweis: Die automatische Vorhersagekorrektur ist lernend und benötigt Zeit um die Korrekturwerte zu optimieren. Nach der Aktivierung sind nicht sofort optimale Vorhersagen zu erwarten!

          on_complex_api_ai:
          Die Methode arbeitet wie 'on_complex_ai', jedoch wird der verwendete PV-Prognosewert durch eine Durchschnittsberechnung von gelieferten API-Wert und KI-Wert gebildet.

          Nachfolgend einige API-spezifische Hinweise die lediglich Best Practice Empfehlungen darstellen.

          Model OpenMeteo...API:
          Die empfohlene Autokorrekturmethode ist on_complex bzw. on_complex_ai.

          Model SolCastAPI:
          Die empfohlene Autokorrekturmethode ist on_complex.
          Bevor man die Autokorrektur eingeschaltet, ist die Prognose mit folgenden Schritten zu optimieren:

          • definiere im RoofTop-Editor der SolCast API den efficiency factor entsprechend dem Alter der Anlage.
            Bei einer 8 Jahre alten Anlage wäre er 84 (100 - (8 x 2%)).
          • nach Sonnenuntergang wird das Reading Today_PVdeviation erstellt, welches die Abweichung zwischen Prognose und realer PV Erzeugung in Prozent darstellt.
          • entsprechend der Abweichung passe den efficiency factor in Schritten an bis ein Optimum, d.h. die kleinste Tagesabweichung gefunden ist
          • ist man der Auffassung die optimale Einstellung gefunden zu haben, kann pvCorrectionFactor_Auto on* gesetzt werden.

          Idealerweise wird dieser Prozess in einer Phase stabiler meteorologischer Bedingungen (gleichmäßige Sonne bzw. Bewölkung) durchgeführt.

          Model VictronKiAPI:
          Dieses Model basiert auf der KI gestützten API von Victron Energy. Die empfohlene Autokorrekturmethode ist off.

          Model DWD:
          Die empfohlene Autokorrekturmethode ist on_complex bzw. on_complex_ai.

          Model ForecastSolarAPI:
          Die empfohlene Autokorrekturmethode ist on_complex.

        • pvCorrectionFactor_XX <Zahl>

          Voreinstellung des Korrekturfaktors für die Stunde XX des Tages.
          (default: 1.0)

          In Abhängigkeit vom Setting pvCorrectionFactor_Auto ('off' bzw. 'on_.*') erfolgt eine statische oder dynamische Voreinstellung:

            off Der eingestellte Korrekturfaktor wird durch die Autokorrektur nicht überschrieben.
            Im Reading pvCorrectionFactor_XX wird der Status durch den Zusatz 'manual fix' signalisiert.
            on_.* Der eingestellte Korrekturfaktor wird durch die Autokorrektur bzw. KI überschrieben
            sofern ein berechneter Korrekturwert im System verfügbar ist.
            Im Reading pvCorrectionFactor_XX wird der Status durch den Zusatz 'manual flex' signalisiert.

        • reset

          Löscht die aus der Drop-Down Liste gewählte Datenquelle, zu der Funktion gehörende Readings oder weitere interne Datenstrukturen.

            aiData löscht eine vorhandene KI Instanz inklusive aller Trainings- und Rohdaten und initialisiert sie neu
            batteryTriggerSet löscht die Triggerpunkte des Batteriespeichers
            consumerPlanning löscht die Planungsdaten aller registrierten Verbraucher
            Um die Planungsdaten nur eines Verbrauchers zu löschen verwendet man:
              set <name> reset consumerPlanning <Verbrauchernummer>
            Das Modul führt eine automatische Neuplanung der Verbraucherschaltung durch.
            consumerMaster löscht die aktuellen und historischen Daten aller registrierten Verbraucher aus dem Speicher
            Die definierten Consumer Attribute bleiben bestehen und die Daten werden neu gesammelt.
            Um die Daten nur eines Verbrauchers zu löschen verwendet man:
              set <name> reset consumerMaster <Verbrauchernummer>
            consumptionHistory löscht die gespeicherten Verbrauchswerte des Hauses aus dem pvHistory Speicher
            Um die Verbrauchswerte eines bestimmten Tages zu löschen:
              set <name> reset consumptionHistory <Tag> (z.B. set <name> reset consumptionHistory 08)
            Um die Verbrauchswerte einer bestimmten Stunde eines Tages zu löschen:
              set <name> reset consumptionHistory <Tag> <Stunde> (z.B. set <name> reset consumptionHistory 08 10)
            energyH4TriggerSet löscht die 4-Stunden Energie Triggerpunkte
            powerTriggerSet löscht die Triggerpunkte für PV Erzeugungswerte
            pvCorrection löscht die Readings pvCorrectionFactor*
            Um alle bisher gespeicherten PV Korrekturfaktoren aus den Caches zu löschen:
              set <name> reset pvCorrection cached
            Um gespeicherte PV Korrekturfaktoren einer bestimmten Stunde aus den Caches zu löschen:
              set <name> reset pvCorrection cached <Stunde>
              (z.B. set <name> reset pvCorrection cached 10)
            pvHistory löscht den Speicher aller historischen Tage (01 ... 31)
            Um einen bestimmten historischen Tag zu löschen:
              set <name> reset pvHistory <Tag> (z.B. set <name> reset pvHistory 08)
            Um eine bestimmte Stunde eines historischer Tages zu löschen:
              set <name> reset pvHistory <Tag> <Stunde> (z.B. set <name> reset pvHistory 08 10)
            roofIdentPair löscht alle gespeicherten SolCast API Rooftop-ID / API-Key Paare
            Um ein bestimmtes Paar zu löschen ist dessen Schlüssel <pk> anzugeben:
              set <name> reset roofIdentPair <pk> (z.B. set <name> reset roofIdentPair p1)

        • roofIdentPair <pk> rtid=<Rooftop-ID> apikey=<SolCast API Key>
          (nur bei Verwendung Model SolCastAPI)

          Der Abruf jedes in SolCast Rooftop Sites angelegten Rooftops ist mit der Angabe eines Paares Rooftop-ID und API-Key zu identifizieren.
          Der Schlüssel <pk> kennzeichnet eindeutig ein verbundenes Paar Rooftop-ID / API-Key. Es können beliebig viele Paare nacheinander angelegt werden. In dem Fall ist jeweils ein neuer Name für "<pk>" zu verwenden.

          Der Schlüssel <pk> wird im Attribut setupRoofTops dem abzurufenden Rooftop (=String) zugeordnet.

            Beispiele:
            set <name> roofIdentPair p1 rtid=92fc-6796-f574-ae5f apikey=oNHDbkKuC_eGEvZe7ECLl6-T1jLyfOgC
            set <name> roofIdentPair p2 rtid=f574-ae5f-92fc-6796 apikey=eGEvZe7ECLl6_T1jLyfOgC_oNHDbkKuC


        • vrmCredentials user=<Benutzer> pwd=<Paßwort> idsite=<idSite>
          (nur bei Verwendung Model VictronKiAPI)

          Wird die Victron VRM API genutzt, sind mit diesem set-Befehl die benötigten Zugangsdaten zu hinterlegen.

            user Benutzername für das Victron VRM Portal
            pwd Paßwort für den Zugang zum Victron VRM Portal
            idsite idSite ist der Bezeichner "XXXXXX" in der Victron VRM Portal Dashboard URL.
            URL des Victron VRM Dashboard ist:
            https://vrm.victronenergy.com/installation/XXXXXX/dashboard

          Um die gespeicherten Credentials zu löschen, ist dem Kommando nur das Argument delete zu übergeben.

            Beispiele:
            set <name> vrmCredentials user=john@example.com pwd=somepassword idsite=212008
            set <name> vrmCredentials delete


      Get
        • data

          Startet die Datensammlung zur Bestimmung der solaren Vorhersage und anderer Werte.

        • dwdCatalog

          Der Deutsche Wetterdienst (DWD) stellt einen Katalog der MOSMIX Stationen zur Verfügung.
          Die Stationen liefern Daten deren Bedeutung in dieser Übersicht erläutert ist. Der DWD unterscheidet dabei zwischen MOSMIX_L und MOSMIX_S Stationen die sich durch Aktualisierungfrequenz und Datenumfang unterscheiden.
          Mit diesem Kommando wird der Katalog in SolarForecast eingelesen und in der Datei ./FHEM/FhemUtils/DWDcat_SolarForecast gespeichert.
          Der Katalog kann umfangreich gefiltert und im GPS Exchange Format (GPX) gespeichert werden. Die Koordinaten Latitude und Logitude werden in Dezimalgrad ausgegeben.
          Zur Filterung werden Regex-Ausdrücke in den entsprechenden Schlüsseln verwendet. Der Regex wird zur Auswertung in ^...$ eingeschlossen.
          Folgende Parameter können angegeben werden. Ohne Parameter erfolgt die Ausgabe des gesamten Katalogs:

            byID Die Ausgabe erfolgt sortiert nach Stations-ID. (default)
            byName Die Ausgabe erfolgt sortiert nach Stations-Name.
            force Es wird die neueste Version des DWD Stationskatalogs in das System geladen.
            exportgpx Die (gefilterten) Stationen werden in der Datei ./FHEM/FhemUtils/DWDcat_SolarForecast.gpx gespeichert.
            Diese Datei kann z.B. im GPX-Viewer dargestellt werden.
            id=<Regex> Es erfolgt eine Filterung nach Stations-ID.
            name=<Regex> Es erfolgt eine Filterung nach Stations-Name.
            lat=<Regex> Es erfolgt eine Filterung nach Latitude.
            lon=<Regex> Es erfolgt eine Filterung nach Longitude.

            Beispiel:
            get <name> dwdCatalog byName name=ST.* exportgpx lat=(48|49|50|51|52)\..* lon=([5-9]|10|11|12|13|14|15)\..*
            # filtert die Stationen weitgehend auf deutsche Orte beginnend mit "ST" und exportiert die Daten im GPS Exchange Format

        • forecastQualities

          Zeigt die zur Bestimmung der PV Vorhersage aktuell verwendeten Korrekturfaktoren mit der jeweiligen Startzeit sowie die bisher im Durchschnitt erreichte Vorhersagequalität dieses Zeitraumes an.

        • ftuiFramefiles

          SolarForecast stellt Widgets für FHEM Tablet UI v2 (FTUI2) zur Verfügung.
          Ist FTUI2 auf dem System installiert, können die Dateien für das Framework mit diesem Kommando in die FTUI-Verzeichnisstruktur geladen werden.
          Die Einrichtung und Verwendung der Widgets ist im Wiki SolarForecast FTUI Widget beschrieben.

        • html

          Die SolarForecast Grafik wird als HTML-Code abgerufen und wiedergegeben.
          Hinweis: Durch das Attribut graphicHeaderOwnspec generierte set-Kommandos oder Attribut-Befehle im Anwender spezifischen Bereich des Headers werden aus technischen Gründen generell ausgeblendet.
          Als Argument kann dem Befehl eine der folgenden Selektionen mitgegeben werden:

            both zeigt Grafikkopf, Verbraucherpaneel, Balken- und Energieflußgrafik an (default)
            both_noHead zeigt Verbraucherpaneel, Balken- und Energieflußgrafik an
            both_noCons zeigt Grafikkopf, Balken- und Energieflußgrafik an
            both_noHead_noCons zeigt Balken- und Energieflußgrafik an
            swap wie 'both', mit vertauschter Balken- und Energieflußgrafik Reihenfolge
            swap_noHead wie 'both_noHead', mit vertauschter Balken- und Energieflußgrafik Reihenfolge
            swap_noCons wie 'both_noCons', mit vertauschter Balken- und Energieflußgrafik Reihenfolge
            swap_noHead_noCons wie 'both_noHead_noCons', mit vertauschter Balken- und Energieflußgrafik Reihenfolge
            flow zeigt Grafikkopf, Verbraucherpaneel und Energieflußgrafik an
            flow_noHead zeigt Verbraucherpaneel und Energieflußgrafik an
            flow_noCons zeigt Grafikkopf und Energieflußgrafik an
            flow_noHead_noCons zeigt Energieflußgrafik an
            forecast zeigt Grafikkopf, Verbraucherpaneel und Balkengrafik an
            forecast_noHead zeigt Verbraucherpaneel und Balkengrafik an
            forecast_noCons zeigt Grafikkopf und Balkengrafik an
            forecast_noHead_noCons zeigt Balkengrafik an
            none zeigt nur Grafikkopf und Verbraucherpaneel an

          Die Grafik kann abgerufen und in eigenen Code eingebettet werden. Auf einfache Weise kann dies durch die Definition eines weblink-Devices vorgenommen werden:

            define wl.SolCast5 weblink htmlCode { FHEM::SolarForecast::pageAsHtml ('SolCast5', '-', '<argument>') }

          'SolCast5' ist der Name des einzubindenden SolarForecast-Device. <argument> ist eine der oben beschriebenen Auswahlmöglichkeiten.

        • nextHours

          Listet die gespeicherte Werte der kommenden Stunden auf.

            aihit Lieferstatus der KI für die PV Vorhersage (0-keine Lieferung, 1-Lieferung)
            confc erwarteter Energieverbrauch inklusive der Anteile registrierter Verbraucher
            confcEx erwarteter Energieverbrauch ohne Anteile Verbraucher mit gesetztem Schlüssel exconfc=1
            crange berechneter Bewölkungsbereich
            correff verwendeter Korrekturfaktor/Qualität
            <Faktor>/- -> keine Qualität definiert
            <Faktor>/0..1 - Qualität der PV Prognose (1 = beste Qualität)
            day Tagesdatum
            DoN Sonnenauf- und untergangsstatus (0 - Nacht, 1 - Tag)
            hourofday laufende Stunde des Tages
            pvapifc erwartete PV Erzeugung (Wh) der verwendeten API inkl. einer eventuellen Korrektur
            pvaifc erwartete PV Erzeugung der KI (Wh)
            pvfc verwendete PV Erzeugungsprognose (Wh)
            rad1h vorhergesagte Globalstrahlung
            starttime Startzeit des Datensatzes
            sunaz Azimuth der Sonne (in Dezimalgrad)
            sunalt Höhe der Sonne (in Dezimalgrad)
            temp vorhergesagte Außentemperatur
            today hat Wert '1' wenn Startdatum am aktuellen Tag
            rcdchargebatXX Aufladeempfehlung für Batterie XX (1 - Ja, 0 - Nein)
            rr1c Gesamtniederschlag in der letzten Stunde kg/m2
            rrange Bereich des Gesamtniederschlags
            socXX aktueller (NextHour00) oder prognostizierter SoC (%) der Batterie XX
            socprogwhsum aktueller (NextHour00) oder prognostizierter SoC (Wh) zusammengefasst über alle Batterien
            weatherid ID des vorhergesagten Wetters
            wcc vorhergesagter Grad der Bewölkung

        • pvHistory

          Zeigt oder exportiert den Inhalt des pvHistory Datenspeichers sortiert nach dem Tagesdatum und Stunde.
          Mit der Auswahlliste kann ein bestimmter Tag angesprungen werden. Die Drop-Down Liste enthält die aktuell im Speicher verfügbaren Tage. Ohne Argument wird der gesamte Datenspeicher gelistet. Die Angabe 'exportToCsv' exportiert den gesamten Inhalt der pvHistory in eine CSV-Datei.
          Die Stundenangaben beziehen sich auf die jeweilige Stunde des Tages, z.B. bezieht sich die Stunde 09 auf die Zeit von 08 Uhr bis 09 Uhr. Die Stunde '99' enthält Tageswerte.

            batintotalXX Gesamtladung der Batterie XX (Wh) zu Beginn der Stunde
            batinXX Ladung der Batterie XX innerhalb der Stunde (Wh)
            batouttotalXX Gesamtentladung der Batterie XX (Wh) zu Beginn der Stunde
            batoutXX Entladung der Batterie XX innerhalb der Stunde (Wh)
            batprogsocXX prognostizierte Ladezustand SOC (%) der Batterie XX am Ende der Stunde
            batsocXX realer Ladezustand SOC (%) der Batterie XX am Ende der Stunde
            batmaxsocXX maximal erreichter SOC (%) der Batterie XX an dem Tag
            batsetsocXX optimaler SOC Sollwert (%) der Batterie XX für den Tag
            csmtXX Energieverbrauch total von ConsumerXX
            csmeXX Energieverbrauch von ConsumerXX in der Stunde des Tages (Stunde 99 = Tagesenergieverbrauch)
            confc erwarteter Energieverbrauch (Wh)
            con realer Energieverbrauch (Wh) des Hauses
            conprice Preis für den Bezug einer kWh. Die Einheit des Preises ist im setupMeterDev definiert.
            cyclescsmXX Anzahl aktive Zyklen von ConsumerXX des Tages
            dayname Kurzname des Tages (locale-abhängig)
            DoN Sonnenauf- und untergangsstatus (0 - Nacht, 1 - Tag)
            etotaliXX PV Zählerstand "Energieertrag total" (Wh) von Inverter XX zu Beginn der Stunde
            etotalpXX Zählerstand "Energieertrag total" (Wh) des Produzenten XX zu Beginn der Stunde
            gcons realer Leistungsbezug (Wh) aus dem Stromnetz
            gfeedin reale Einspeisung (Wh) in das Stromnetz
            feedprice Vergütung für die Einpeisung einer kWh. Die Währung des Preises ist im setupMeterDev definiert.
            avgcycmntscsmXX durchschnittliche Dauer eines Einschaltzyklus des Tages von ConsumerXX in Minuten
            hourscsmeXX Summe Aktivstunden des Tages von ConsumerXX
            minutescsmXX Summe Aktivminuten in der Stunde von ConsumerXX
            pprlXX Energieerzeugung des Produzenten XX (siehe Attribut setupOtherProducerXX) in der Stunde (Wh)
            pvfc der prognostizierte PV Ertrag (Wh)
            pvrlXX reale PV Erzeugung (Wh) von Inverter XX
            pvrl Summe reale PV Erzeugung (Wh) aller Inverter
            pvrlvd 1-'pvrl' ist gültig und wird im Lernprozess berücksichtigt, 0-'pvrl' ist als abnormal bewertet
            pvcorrf verwendeter Autokorrekturfaktor / erreichte Prognosequalität
            rad1h Globalstrahlung (kJ/m2)
            rr1c Gesamtniederschlag in der letzten Stunde kg/m2
            socwhsum real erreichter SoC (Wh) zusammengefasst über alle Batterien
            socprogwhsum prognostizierter SoC (Wh) zusammengefasst über alle Batterien
            sunalt Höhe der Sonne (in Dezimalgrad)
            sunaz Azimuth der Sonne (in Dezimalgrad)
            wid Identifikationsnummer des Wetters
            wcc effektive Wolkenbedeckung

        • pvCircular

          Listet die gespeicherten Daten der ausgewählten Stunde oder alle vorhandenen Werte im Ringspeicher auf.
          Die Stundenangaben 01 - 24 beziehen sich auf die Stunde des Tages, z.B. bezieht sich die Stunde 09 auf die Zeit von 08 - 09 Uhr.
          Die Stunde 99 hat eine Sonderfunktion.
          Die Werte der Schlüssel pvcorrf, quality, pvrlsum, pvfcsum und dnumsum sind in der Form <Bereich Sonnenstand Höhe>.<Bewölkungsbereich> kodiert.

            aihit Lieferstatus der KI für die PV Vorhersage (0-keine Lieferung, 1-Lieferung)
            attrInvChangedTs Zeitstempel der letzten Änderung der Inverter Gerätedefinition
            batinXX Ladung der Batterie XX (Wh)
            batoutXX Entladung der Batterie XX (Wh)
            batouttotXX aktuell total aus der Batterie XX entnommene Energie (Wh)
            batintotXX aktuell total in die Batterie XX geladene Energie (Wh)
            confc erwarteter Energieverbrauch (Wh) des Hauses am aktuellen Tag
            con_all ein Array aus Werten des Hausverbrauches an bestimmten Tagen der ausgewählten Stunde
            days2careXX verbleibende Tage bis der Batterie XX Pflege-SoC (default 95%) erreicht sein soll
            dnumsum Anzahl Tage pro Bewölkungsbereich über die gesamte Laufzeit
            feedintotal in das öffentliche Netz total eingespeiste PV Energie (Wh)
            gcon realer Leistungsbezug aus dem Stromnetz
            gcons_a ein Array aus Werten des Energiebezuges aus dem öffentlichen Netz an bestimmten Tagen der ausgewählten Stunde
            gfeedin reale Leistungseinspeisung in das Stromnetz
            gridcontotal vom öffentlichen Netz total bezogene Energie (Wh)
            initdayfeedin initialer PV Einspeisewert zu Beginn des aktuellen Tages (Wh)
            initdaygcon initialer Netzbezugswert zu Beginn des aktuellen Tages (Wh)
            initdaybatintotXX initialer Wert der total in die Batterie XX geladenen Energie zu Beginn des aktuellen Tages (Wh)
            initdaybatouttotXX initialer Wert der total aus der Batterie XX entnommenen Energie zu Beginn des aktuellen Tages (Wh)
            lastTsMaxSocRchdXX Timestamp des letzten Erreichens von Batterie XX SoC >= maxSoC (default 95%)
            nextTsMaxSocChgeXX Timestamp bis zu dem die Batterie XX mindestens einmal maxSoC erreichen soll
            pvapifc erwartete PV Erzeugung (Wh) der verwendeten API
            pvaifc PV Vorhersage (Wh) der KI für die nächsten 24h ab aktueller Stunde des Tages
            pvfc verwendete PV Prognose für die nächsten 24h ab aktueller Stunde des Tages
            pvfc_XX Array der prognostizierten PV Erzeugungswerte abhängig von einem bestimmten Bewölkungsgrad (XX = Altitude der Sonne)
            pvcorrf Autokorrekturfaktoren für die Stunde des Tages, wobei 'simple' der einfach berechnete Korrekturfaktor ist.
            pvfcsum Summe PV Prognose pro Bewölkungsbereich über die gesamte Laufzeit
            pvrl reale PV Erzeugung der letzten 24h (Achtung: pvforecast und pvreal beziehen sich nicht auf den gleichen Zeitraum!)
            pvrl_XX Array realer PV Erzeugungswerte erzeugt bei einem bestimmten Bewölkungsgrad (XX = Altitude der Sonne)
            pvrlsum Summe reale PV Erzeugung pro Bewölkungsbereich über die gesamte Laufzeit
            pprlXX Energieerzeugung des Produzenten XX (siehe Attribut setupOtherProducerXX) der letzten 24 Stunden (Wh)
            quality Qualität der Autokorrekturfaktoren (0..1), wobei 'simple' die Qualität des einfach berechneten Korrekturfaktors ist.
            runTimeTrainAI Laufzeit des letzten KI Trainings
            aitrainLastFinishTs Timestamp des letzten erfolgreichen KI Trainings
            aiRulesNumber Anzahl der Regeln in der trainierten KI Instanz
            todayConsumption realer Energieverbrauch (Wh) des Hauses am aktuellen Tag
            tdayDvtn heutige Abweichung PV Prognose/Erzeugung in %
            temp Außentemperatur
            wcc Grad der Wolkenüberdeckung
            rr1c Gesamtniederschlag in der letzten Stunde kg/m2
            wid ID des vorhergesagten Wetters
            wtxt Beschreibung des vorhergesagten Wetters
            ydayDvtn Abweichung PV Prognose/Erzeugung in % am Vortag

        • rooftopData

          Die erwarteten solaren Strahlungsdaten bzw. PV Erzeugungsdaten werden von der gewählten API abgerufen.
          Ist bezüglich Wetterdaten ebenfalls eine API gewählt, werden diese Daten ebenfalls abgerufen.

        • radiationApiData

          Listet die im Kontext des API-Abrufs gespeicherten Strahlungsdaten auf. Die von der API gelieferten Vorhersagedaten bzgl. der Globalstrahlung Rad1h und des auf einen String bezogenen prognostizierten PV Ertrag (Wh) sind auf eine Stunde normiert. Die verfügbaren Kennwerte unterscheiden sich je nach verwendeter API.

            Rad1h erwartete Globalstrahlung (GI) in kJ/m2
            GTIWh erwartete globale Strahlung auf die geneigte Fläche (GTI) in Wh/m2
            pv_estimateXX erwartete PV Erzeugung (Wh)
            KI-based erwartete PV Erzeugung (Wh) der VictronKI-API
            KI-based_co erwarteter Energieverbrauch (Wh) der VictronKI-API

        • statusApiData

          Zeigt die Statusdaten der verwendeten Strahlungsdaten-API bzw. Wetterdaten-API. Es werden nur die Statusdaten des führenden Wetterdienstes ausgegeben.

            currentAPIinterval das aktuell verwendete API Abrufintervall in Sekunden
            lastretrieval_time Zeit des letzten API Abrufs
            lastretrieval_timestamp Unix Timestamp des letzten API Abrufs
            todayDoneAPIrequests Anzahl der ausgeführten API Requests am aktuellen Tag
            todayRemainingAPIrequests Anzahl der verbleibenden SolCast API Requests am aktuellen Tag
            todayDoneAPIcalls Anzahl der ausgeführten API Abrufe am aktuellen Tag
            todayRemainingAPIcalls Anzahl der noch möglichen SolCast API Abrufe am aktuellen Tag
            (ein Abruf kann mehrere SolCast API Requests ausführen)
            todayMaxAPIcalls Anzahl der maximal möglichen SolCast API Abrufe pro Tag

        • valBattery

          Zeigt die ermittelten Betriebswerte der ausgewählten Batterie oder aller definierten Batteriegeräte.

            bname Name des Gerätes
            balias Alias des Gerätes
            basynchron Modus der Verarbeitung empfangener Batterie-Events
            bcharge aktueller SoC (State of Charge) der Batterie (%)
            bchargewh aktueller SoC (State of Charge) der Batterie (Wh)
            binstcap installierte Batteriekapazität (Wh)
            bpowerin momentane Ladeleistung (W)
            bpinmax maximal mögliche Ladeleistung (W)
            bpowerout momentane Entladeleistung (W)
            bpoutmax maximal mögliche Entladeleistung (W)

        • valConsumerMaster

          Zeigt die Daten der aktuell im SolarForecast Device registrierten Verbraucher.
          Mit der Auswahlliste kann ein bestimmter Verbraucher angesprungen werden. Die Drop-Down Liste enthält die aktuell im Datenspeicher verfügbaren Verbraucher bzw. Verbrauchernummern. Ohne Argument wird der gesamte Datenspeicher gelistet.

        • valCurrent

          Listet aktuelle Betriebsdaten, Kennzahlen und Status auf.

        • valDecTree

          Anzeige von KI relevanten Daten. Die verfügbaren Anzeigeoptionen sind abhängig vom verfügbaren und aktivierten KI Unterstützungslevel.

            aiRawData Anzeige der aktuell für eine KI-Auswertung gespeicherten PV-, Strahlungs- und Umweltdaten.
            aiRuleStrings Gibt eine Liste zurück, die den Entscheidungsbaum der KI in Form von Regeln beschreibt.
            Hinweis: Die Reihenfolge der Regeln ist zwar nicht vorhersehbar, die
            Reihenfolge der Kriterien innerhalb jeder Regel spiegelt jedoch die Reihenfolge
            wider, in der die Kriterien bei der Entscheidungsfindung geprüft werden.
            (verfügbar wenn ein KI kompatibles SolarForecast MODEL der PV Vorhersage aktiviert ist)

        • valInverter

          Zeigt die ermittelten Betriebswerte des ausgewählten Wechselrichters oder aller definierten Wechselrichter.

            iasynchron Modus der Verarbeitung empfangener Inverter-Events
            ietotal Stand gesamte bisher erzeugte Energie des Wechselrichters (Wh)
            ifeed Eigenschaften der Energielieferung
            igeneration aktuelle PV Erzeugung (W)
            iicon die evtl. festgelegten Icons zur Darstellung des Gerätes in der Grafik
            ialias Alias des Gerätes
            iname Name des Gerätes
            invertercap die nominale Leistung (W) des Wechselrichters (falls definiert)
            istrings Liste der dem Wechselrichter zugeordneten Strings (falls definiert)

        • valProducer

          Zeigt die ermittelten Betriebswerte des ausgewählten nicht PV-Erzeugers oder aller definierten nicht PV-Erzeuger.

            petotal Stand gesamte bisher erzeugte Energie des Erzeugers (Wh)
            pfeed Eigenschaften der Energielieferung
            pgeneration aktuelle Leistung (W)
            picon die evtl. festgelegten Icons zur Darstellung des Gerätes in der Grafik
            palias Alias des Gerätes
            pname Name des Gerätes

        • valStrings

          Listet die Parameter des ausgewählten oder aller definierten Strings auf.

        • weatherApiData

          Zeigt die gelieferten Daten der gewählten Wetter-API.


      Attribute

        • aiControl <Schlüssel=Wert> <Schlüssel=Wert> ...
          Durch die optionale Angabe der nachfolgend aufgeführten Schlüssel=Wert Paare können verschiedene Eigenschaften der KI Unterstützung beeinflusst werden.
          Die KI Unterstützung der PV Prognose Autokorrektur wird mit dem Set-Befehl pvCorrectionFactor_Auto eingeschaltet.
          Die Eingabe kann mehrzeilig erfolgen.

            aiTrainStart Bei Nutzung der internen KI erfolgt ein tägliches Training.
            Der Start des Trainings erfolgt ca. 15 Minuten nach der in diesem Schlüssel festgelegten vollen Stunde.
            Zum Beispiel würde bei einem eingestellten Wert von '3' das Traning ca. 03:15 Uhr starten.
            Wert: 1 ... 23, default: 2
            aiStorageDuration Es werden Trainingsdaten für die modulinterne KI gesammelt und gespeichert.
            Diese Daten werden gelöscht, wenn sie die angegebene Haltedauer (Tage) überschritten haben.
            Wert: Ganzzahl, default: 1825
            aiTreesPV Legt die Anzahl der KI-Entscheidungsbäume (Random Forests) fest. Eine höhere Anzahl steigert die
            Genauigkeit und Robustheit der KI Vorhersage, erfordert aber mehr CPU und RAM Ressourcen.
            Hinweis: Eine Erhöhung nur in kleinen Schritten und unter Beachtung der Leistungsfähigkeit der Hardware durchführen!
            Wert: 1 ... 50, default: 10
            Beispiel:
            attr <name> aiControl aiTrainStart=7 aiStorageDuration=3000 aiTreesPV=3

        • consumerControl <Schlüssel=Wert> <Schlüssel=Wert> ...
          Durch die Angabe der nachfolgend aufgeführten 'Schlüssel=Wert' Paare können verschiedene übergreifende Eigenschaften der Verbraucherdarstellung eingestellt werden.
          Die Eingabe kann mehrzeilig erfolgen.

            adviceIcon Definiert die Art der Information über die geplanten Schaltzeiten eines Verbrauchers in der Verbraucherlegende.
            <Icon>[@<Farbe]> - Aktivierungsempfehlung wird durch Icon und Farbe dargestellt (default: clock@gold)
            times - der Planungsstatus und die geplanten Schaltzeiten werden als Text angezeigt
            none - keine Anzeige der Planungsdaten
            detailLink Wenn gesetzt, sind die Geräte in der Verbraucher-Legende anklickbar um die Detailansicht des Gerätes zu öffnen.
            Wert: 0|1, default: 1
            dummyIcon Icon und ggf. dessen Farbe zur Darstellung des Dummy-Verbrauchers in der Flußgrafik (optional)
            Syntax: [<Icon>][@<Farbe>]
            Soll nur die Farbe des Standard Dummy-Icon geändert werden, kann lediglich '@<Farbe>' angegeben werden.
            Die Farbe kann als Hex-Wert (z.B. #cc3300) oder Bezeichnung (z.B. red, blue) angegeben werden.
            showLegend Definiert die Lage bzw. Darstellungsweise der Verbraucherlegende sofern Verbraucher registriert sind.
            Zur Ausblendung des Verbraucherpaneels bitte graphicSelect verwenden.
            icon_top - die Legende wird oberhalb der Balkengrafik mit Verbrauchericons angezeigt (default)
            icon_bottom - die Legende wird unterhalb der Balken- und Flußgrafik mit Verbrauchericons angezeigt
            text_top - die Legende wird oberhalb der Balkengrafik ohne Verbrauchericons angezeigt
            text_bottom - die Legende wird unterhalb der Balken- und Flußgrafik ohne Verbrauchericons angezeigt
            Beispiel:
            attr <name> consumerControl dummyIcon=status_comfort@#ff8c00 adviceIcon=times showLegend=icon_bottom

        • consumerXX <Device>[:<Alias>] type=<type> power=<power> [switchdev=<device>]
          [mode=<mode>] [icon=<Icon>[@<Farbe>]] [mintime=<Option>]
          [on=<Kommando>] [off=<Kommando>] [swstate=<Readingname>:<on-Regex>:<off-Regex>] [asynchron=<Option>]
          [notbefore=<Ausdruck>] [notafter=<Ausdruck>] [locktime=<offlt>[:<onlt>]]
          [auto=<Readingname>] [pcurr=<Readingname>:<Einheit>[:<Schwellenwert>]] [etotal=<Readingname>:<Einheit>[:<Schwellenwert>]]
          [swoncond=<Device>:<Reading>:<Bedingung>] [swoffcond=<Device>:<Reading>:<Bedingung>]
          [spignorecond=<Device>:<Reading>:<Bedingung>] [surpmeth=<Option>] [interruptable=<Option>] [noshow=<Option>] [exconfc=<Option>]


          Registriert einen Verbraucher <Device> beim SolarForecast Device. Ein optionaler Alias kann angegeben werden.
          Dabei ist <Device> ein in FHEM bereits angelegtes Verbraucher Device, z.B. eine Schaltsteckdose. Die meisten Schlüssel sind optional, sind aber für bestimmte Funktionalitäten Voraussetzung und werden mit default-Werten besetzt.
          Ist der Schüssel "auto" definiert, kann der Automatikmodus in der integrierten Verbrauchergrafik mit den entsprechenden Drucktasten umgeschaltet werden. Das angegebene Reading wird ggf. im Consumer Device angelegt falls es nicht vorhanden ist.

          Mit dem optionalen Schlüssel swoncond kann eine zusätzliche externe Bedingung definiert werden um den Einschaltvorgang des Consumers freizugeben. Ist die Bedingung (Regex) nicht erfüllt, erfolgt kein Einschalten des Verbrauchers auch wenn die sonstigen Voraussetzungen wie Zeitplanung, on-Schlüssel, auto-Mode und aktuelle PV-Leistung gegeben sind. Es erfolgt somit eine UND-Verknüpfung des Schlüssels swoncond mit den weiteren Einschaltbedingungen.

          Der optionale Schlüssel swoffcond definiert eine vorrangige Ausschaltbedingung (Regex). Sobald diese Bedingung erfüllt ist, wird der Consumer ausgeschaltet auch wenn die geplante Endezeit (consumerXX_planned_stop) noch nicht erreicht ist (ODER-Verknüpfung). Weitere Bedingungen wie off-Schlüssel und auto-Mode müssen zum automatischen Ausschalten erfüllt sein.

          Mit dem optionalen Schlüssel interruptable kann während der geplanten Einschaltzeit eine automatische Unterbrechung sowie Wiedereinschaltung des Verbrauchers vorgenommen werden. Der Verbraucher wird temporär ausgeschaltet (interrupted) und wieder eingeschaltet (continued) wenn die Interrupt-Bedingung nicht mehr vorliegt. Die verbleibende Laufzeit wird durch einen Interrupt nicht beeinflusst!

          Der Schlüssel power gibt die nominale Leistungsaufnahme des Verbrauchers gemäß seines Datenblattes an. Dieser Wert wird verwendet um die Schaltzeiten des Verbrauchers zu planen und das Schalten in Abhängigkeit des tatsächlichen PV-Überschusses zum Einplanungszeitpunkt zu steuern. Ist power=0 gesetzt, wird der Verbraucher unabhängig von einem ausreichend vorhandenem PV-Überschuß wie eingeplant geschaltet.

            Device Verbraucher-Gerät. Im einfachen Fall arbeitet das Gerät sowohl als Energiemesser als auch als Schalter.
            Im optionalen Alias sind Leerzeichen durch '+' zu ersetzen (z.B. 'Ein+toller+Alias').
            Besteht der Verbraucher aus verschiedenen Geräten/Kanäalen (z.B. Homematic), wird der Energiemesser als <Device> definiert.
            Das dazugehörige Schalt-Gerät wird mit dem Schlüssel 'switchdev' spezifiziert.
            type Typ des Verbrauchers. Folgende Typen sind erlaubt:
            dishwasher - Verbraucher ist eine Spülmaschine
            dryer - Verbraucher ist ein Wäschetrockner
            washingmachine - Verbraucher ist eine Waschmaschine
            heater - Verbraucher ist ein Heizstab
            charger - Verbraucher ist eine Ladeeinrichtung (Akku, Auto, Fahrrad, etc.)
            other - Verbraucher ist keiner der vorgenannten Typen
            noSchedule - für den Verbraucher erfolgt keine Einplanung oder automatische Schaltung.
                                   Anzeigefunktionen oder manuelle Schaltungen sind verfügbar.
            power nominale Leistungsaufnahme des Verbrauchers (siehe Datenblatt) in W
            (kann auf "0" gesetzt werden)
            switchdev Das angegebene <device> wird als Schalter Device dem Verbraucher zugeordnet (optional). Schaltvorgänge werden mit diesem Gerät
            ausgeführt. Der Schlüssel ist für Verbraucher nützlich bei denen Energiemessung und Schaltung mit verschiedenen Geräten vorgenommen
            wird, z.B. Homematic oder readingsProxy. Ist switchdev angegeben, beziehen sich die Schlüssel on, off, swstate, auto, asynchron auf dieses Gerät.
            mode Planungsmodus des Verbrauchers (optional). Erlaubt sind:
            can - Die Einplanung erfolgt zum Zeitpunkt mit wahrscheinlich genügend verfügbaren PV Überschuß (default)
                     Der Start des Verbrauchers zum Planungszeitpunkt unterbleibt bei ungenügendem PV-Überschuß.
            must - der Verbraucher wird optimiert eingeplant auch wenn wahrscheinlich nicht genügend PV Überschuß vorhanden sein wird
                       Der Start des Verbrauchers erfolgt auch bei ungenügendem PV-Überschuß sofern eine gesetzte "swoncond" Bedingung erfüllt und "swoffcond" nicht erfüllt ist.
            <Device>:<Reading> - Device/Reading Kombination um den Planungsmodus dynamisch ändern zu können. Das Reading muß 'can' oder 'must' zurückgeben.
            icon Icon und ggf. dessen Farbe zur Darstellung des Verbrauchers in der Übersichtsgrafik (optional)
            mintime Einplanungsdauer in Minuten (optional). Folgende Optionen der Definition sind möglich:
            <Zahl> - die Einplanungsdauer in Minuten als numerische Angabe
            SunPath[:<Offset_Sunrise>:<Offset_Sunset>] - die Einplanung erfolgt von Sonnenaufgang bis Sonnenuntergang.
            Optional kann eine positive und negative Verschiebung (Minuten) der Planungszeit bzgl. Sonnenaufgang bzw. Sonnenuntergang angegeben werden.
            <Device>:<Reading> - Device/Reading-Kombination, die eine variabel definierbare Einplanungsdauer in Minuten liefert.
            Ist mintime nicht angegeben, wird eine Standard Einplanungsdauer gemäß nachfolgender Tabelle verwendet.
            Default mintime nach Verbrauchertyp:
            - dishwasher: 180 Minuten
            - dryer: 90 Minuten
            - washingmachine: 120 Minuten
            - heater: 240 Minuten
            - charger: 120 Minuten
            - other: 60 Minuten
            on Set-Kommando zum Einschalten des Verbrauchers (optional)
            off Set-Kommando zum Ausschalten des Verbrauchers (optional)
            swstate Reading welches den Schaltzustand des Verbrauchers anzeigt (default: 'state').
            on-Regex - regulärer Ausdruck für den Zustand 'ein' (default: 'on')
            off-Regex - regulärer Ausdruck für den Zustand 'aus' (default: 'off')
            asynchron die Art der Schaltstatus Ermittlung im Verbraucher Device. Die Statusermittlung des Verbrauchers nach einem Schaltbefehl erfolgt nur
            durch Abfrage innerhalb eines Datensammelintervals (synchron) oder zusätzlich durch Eventverarbeitung (asynchron).
            0 - ausschließlich synchrone Verarbeitung von Schaltzuständen (default)
            1 - zusätzlich asynchrone Verarbeitung von Schaltzuständen durch Eventverarbeitung
            notbefore Startzeitpunkt Verbraucher nicht vor angegebener Zeit 'Stunde[:Minute]' einplanen (optional)
            Der <Ausdruck> hat das Format hh[:mm] oder ist in {...} eingeschlossener Perl-Code der hh[:mm] zurückgibt.
            notafter Startzeitpunkt Verbraucher nicht nach angegebener Zeit 'Stunde[:Minute]' einplanen (optional)
            Der <Ausdruck> hat das Format hh[:mm] oder ist in {...} eingeschlossener Perl-Code der hh[:mm] zurückgibt.
            auto Reading im Verbraucherdevice welches das Schalten des Verbrauchers freigibt bzw. blockiert (optional)
            Ist der Schlüssel switchdev angegeben, wird das Reading in diesem Device gesetzt und ausgewertet.
            Readingwert = 1 - Schalten freigegeben (default), 0: Schalten blockiert
            pcurr Reading:Einheit (W/kW) welches den aktuellen Energieverbrauch liefert (optional)
            :<Schwellenwert> (W) - Ab diesem Leistungsbezug wird der Verbraucher als aktiv gewertet. Die Angabe ist optional (default: 0)
            etotal Reading:Einheit (Wh/kWh) des Consumer Device, welches die Summe der verbrauchten Energie liefert (optional)
            :<Schwellenwert> (Wh) - Ab diesem Energieverbrauch pro Stunde wird der Verbrauch als gültig gewertet. Optionale Angabe (default: 0)
            swoncond Bedingung die zusätzlich erfüllt sein muß um den geplanten Zyklus zu starten und den Verbraucher einzuschalten (optional).
            Device - Device zur Lieferung der zusätzlichen Einschaltbedingung
            Reading - Reading zur Lieferung der zusätzlichen Einschaltbedingung
            Die Bedingung kann als regulärer Ausdruck oder als in {..} eingeschlossener Perl-Code formuliert sein:
            Regex - regulärer Ausdruck der für eine 'wahre' Bedingung erfüllt sein muß
            {Perl-Code} - der in {..} eingeschlossene Perl-Code muß 'wahr' liefern um die Bedingung zu erfüllen. Er darf keine Leerzeichen enthalten.
            Der Wert von Device:Reading wird dem Code mit der Variable $VALUE übergeben.
            swoffcond vorrangige Bedingung um den Verbraucher auszuschalten (optional). Der geplante Zyklus wird gestoppt.
            Device - Device zur Lieferung der vorrangigen Ausschaltbedingung
            Reading - Reading zur Lieferung der vorrangigen Ausschaltbedingung
            Die Bedingung kann als regulärer Ausdruck oder als in {..} eingeschlossener Perl-Code formuliert sein:
            Regex - regulärer Ausdruck der für eine 'wahre' Bedingung erfüllt sein muß
            {Perl-Code} - der in {..} eingeschlossene Perl-Code muß 'wahr' liefern um die Bedingung zu erfüllen. Er darf keine Leerzeichen enthalten.
            Der Wert von Device:Reading wird dem Code mit der Variable $VALUE übergeben.
            surpmeth Die möglichen Optionen legen das Verfahren zur Ermittlung des PV-Überschusses fest. (optional)
            default - der PV-Überschuß wird aus dem Reading 'Current_Surplus' direkt ausgelesen. (default)
            median - es wird der Median der letzten PV-Überschuß Messungen (max. 20) verwendet.
            2 .. 20 - der verwendete PV-Überschuß wird als Durchschnitt der angegebenen Anzahl Meßwerte gebildet.
            <Device>:<Reading> - Device/Reading-Kombination die einen vom Nutzer bestimmten bzw. berechneten numerischen PV-Überschuß in Watt liefert.
            spignorecond Bedingung um einen fehlenden PV Überschuß zu ignorieren (optional). Bei erfüllter Bedingung wird der Verbraucher entsprechend
            der Planung eingeschaltet auch wenn zu dem Zeitpunkt kein PV Überschuß vorliegt.
            ACHTUNG: Die Verwendung beider Schlüssel spignorecond und interruptable kann zu einem unerwünschten Verhalten führen!
            Device - Device zur Lieferung der Bedingung
            Reading - Reading welches die Bedingung enthält
            Die Bedingung kann als regulärer Ausdruck oder als in {..} eingeschlossener Perl-Code formuliert sein:
            Regex - regulärer Ausdruck der für eine 'wahre' Bedingung erfüllt sein muß
            {Perl-Code} - der in {..} eingeschlossene Perl-Code muß 'wahr' liefern um die Bedingung zu erfüllen. Er darf keine Leerzeichen enthalten.
            Der Wert von Device:Reading wird dem Code mit der Variable $VALUE übergeben.
            interruptable definiert die möglichen Unterbrechungsoptionen für den Verbraucher nachdem er gestartet wurde (optional). Optionen können sein:
            0 - Verbraucher wird nicht temporär ausgeschaltet auch wenn der PV Überschuß die benötigte Energie unterschreitet (default)
            1 - Verbraucher wird temporär ausgeschaltet falls der PV Überschuß die benötigte Energie unterschreitet
            Device:Reading:{Perl-Code} - Verbraucher wird temporär unterbrochen, wenn der Perl-Code 'wahr' zurückgibt oder unzureichender
            PV Überschuß (wenn power ungleich 0) vorliegt und wird wieder eingeschaltet, wenn der Perl-Code 'falsch' zurückgibt und PV Überschuß
            (wenn power ungleich 0) vorliegt. Der Wert von Device:Reading wird dem Code mit der Variable $VALUE übergeben.
            Der Code ist in {..} einzuschließen und darf keine Leerzeichen enthalten.
            Device:Reading:Regex[:Hysterese] - Verbraucher wird temporär unterbrochen, wenn der Wert des angegebenen
            Device:Readings auf den Regex matched oder unzureichender PV Überschuß (wenn power ungleich 0) vorliegt.
            Der unterbrochene Verbraucher wird wieder eingeschaltet, wenn der Wert nicht mehr matched und ausreichender PV Überschuß
            (wenn power ungleich 0) vorliegt.
            Ist die optionale Hysterese angegeben, wird der Hysteresewert vom Readingswert subtrahiert und danach der Regex angewendet.
            Matched dieser und der originale Readingswert, wird der Verbraucher temporär unterbrochen.
            Der Verbraucher wird fortgesetzt, wenn sowohl der originale als auch der substrahierte Readingswert nicht (mehr) matchen.
            locktime Sperrzeiten in Sekunden für die Schaltung des Verbrauchers (optional).
            offlt - Sperrzeit in Sekunden nachdem der Verbraucher ausgeschaltet oder unterbrochen wurde
            onlt - Sperrzeit in Sekunden nachdem der Verbraucher eingeschaltet oder fortgesetzt wurde
            Der Verbraucher wird erst wieder geschaltet wenn die entsprechende Sperrzeit abgelaufen ist.
            Hinweis: Der Schalter 'locktime' ist nur im Automatik-Modus wirksam.
            noshow Verbraucher in Grafik ausblenden oder einblenden (optional).
            0 - der Verbraucher wird eingeblendet (default)
            1 - der Verbraucher wird ausgeblendet
            2 - der Verbraucher wird in der Verbraucherlegende ausgeblendet
            3 - der Verbraucher wird in der Flußgrafik ausgeblendet
            [Device:]Reading - Reading im Verbraucher oder (optional) einem alternativen Device.
            Hat das Reading den Wert 0 oder ist nicht vorhanden, wird der Verbraucher eingeblendet.
            Die Wirkung der möglichen Readingwerte 1, 2 und 3 ist wie beschrieben.
            exconfc Kennzeichen zur Verwendung des historischen Energieverbrauchs des Verbrauchers (optional).
            0 - die gespeicherten Energieverbrauchsanteile bleiben als Bestandteil der allgemeinen Verbrauchsprognose erhalten (default)
            1 - die allgemeine Verbrauchsprognose wird um die gespeicherten Energieverbrauchsanteile reduziert.
            2 - wie bei '1', jedoch gehen die Planungsdaten des Verbrauchers bei der Prognose der kommenden Stunden wieder mit ein.

            Beispiele:
            attr <name> consumer01 wallplug icon=scene_dishwasher@orange type=dishwasher mode=can power=2500 on=on off=off notafter=20 etotal=total:kWh:5
            attr <name> consumer02 WPxw type=heater mode=can power=3000 mintime=180 on="on-for-timer 3600" notafter=12 auto=automatic
            attr <name> consumer03 Shelly.shellyplug2 type=other power=300 mode=must icon=it_ups_on_battery mintime=120 on=on off=off swstate=state:on:off auto=automatic pcurr=relay_0_power:W etotal:relay_0_energy_Wh:Wh swoncond=EcoFlow:data_data_socSum:-?([1-7][0-9]|[0-9]) swoffcond:EcoFlow:data_data_socSum:{$VALUE==100?1:0}
            attr <name> consumer04 Shelly.shellyplug3 icon=scene_microwave_oven@red type=heater power=2000 mode=must notbefore=07 mintime=600 on=on off=off etotal=relay_0_energy_Wh:Wh pcurr=relay_0_power:W auto=automatic interruptable=eg.wz.wandthermostat:diff-temp:(22)(\.[2-9])|([2-9][3-9])(\.[0-9]):0.2
            attr <name> consumer05 Shelly.shellyplug4 icon=sani_buffer_electric_heater_side type=heater mode=must power=1000 notbefore=7 notafter=20:10 auto=automatic pcurr=actpow:W on=on off=off mintime=SunPath interruptable=1
            attr <name> consumer06 Shelly.shellyplug5 icon=sani_buffer_electric_heater_side type=heater mode=must power=1000 notbefore=07:20 notafter={return'20:05'} auto=automatic pcurr=actpow:W on=on off=off mintime=SunPath:60:-120 interruptable=1 spignorecond=SolCast:Current_PV:{($VALUE)=split/\s/,$VALUE;$VALUE>10?1:0;}
            attr <name> consumer07 SolCastDummy icon=sani_buffer_electric_heater_side type=heater mode=can power=600 auto=automatic pcurr=actpow:W on=on off=off mintime=15 asynchron=1 locktime=300:1200 interruptable=1 noshow=1

        • ctrlBatSocManagementXX lowSoc=<Wert> upSoC=<Wert> [maxSoC=<Wert>] [careCycle=<Wert>]

          Sofern ein Batterie Device (setupBatteryDevXX) installiert ist, aktiviert dieses Attribut das Batterie SoC-Management für dieses Batteriegerät.
          Das Reading Battery_OptimumTargetSoC_XX enthält den vom Modul berechneten optimalen Mindest-SoC.
          Das Reading Battery_ChargeRequest_XX wird auf '1' gesetzt, wenn der aktuelle SoC unter den Mindest-SoC gefallen ist.
          In diesem Fall sollte die Batterie, unter Umständen mit Netzstrom, zwangsgeladen werden.
          Die Readings können zur Steuerung des SoC (State of Charge) sowie zur Steuerung des verwendeten Ladestroms der Batterie verwendet werden.
          Durch das Modul selbst findet keine Steuerung der Batterie statt.

            lowSoc unterer Mindest-SoC - Die Batterie wird nicht tiefer als dieser Wert entladen (> 0)
            upSoC oberer Mindest-SoC - Der übliche Wert des optimalen SoC bewegt sich in Perioden mit hohen
            PV-Überschuß tendenziell zwischen 'lowSoC' und 'upSoC', in Perioden mit geringem PV-Überschuß
            tendenziell zwischen 'upSoC' und 'maxSoC'
            maxSoC maximaler Mindest-SoC - SoC Wert der mindestens im Abstand von 'careCycle' Tagen erreicht
            werden muß um den Ladungsausgleich im Speicherverbund auszuführen.
            Die Angabe ist optional (<= 100, default: 95)
            careCycle maximaler Abstand in Tagen, der zwischen zwei Ladungszuständen von mindestens 'maxSoC'
            auftreten darf. Die Angabe ist optional (default: 20)

          Alle Werte sind ganze Zahlen in %. Dabei gilt: 'lowSoc' < 'upSoC' < 'maxSoC'.
          Die Ermittlung des optimalen SoC erfolgt nach folgendem Schema:

          1. Ausgehend von 'lowSoc' wird der Mindest-SoC kurz vor Sonnenuntergang um 5% inkrementiert sofern am laufenden
          Tag 'maxSoC' nicht erreicht wurde und die PV-Prognose keinen hinreichenden Ertrag des kommenden Tages vorhersagt.
          2. Wird 'maxSoC' (wieder) erreicht, wird Mindest-SoC um 5%, aber nicht tiefer als 'lowSoc', verringert.
          3. Mindest-SoC wird soweit verringert, dass die prognostizierte PV Energie des aktuellen bzw. des folgenden Tages
          von der Batterie aufgenommen werden kann. Mindest-SoC wird typisch auf 'upSoc' und nicht tiefer als 'lowSoc' verringert.
          4. Das Modul erfasst den letzten Zeitpunkt am 'maxSoC'-Level, um eine Ladung auf 'maxSoC' mindestens alle 'careCycle'
          Tage zu realisieren. Zu diesem Zweck wird der optimierte SoC in Abhängigkeit der Resttage bis zum nächsten
          'careCycle' Zeitpunkt derart verändert, dass durch eine tägliche 5% SoC-Steigerung 'maxSoC' am 'careCycle' Zeitpunkt
          rechnerisch erreicht wird. Wird zwischenzeitlich 'maxSoC' erreicht, beginnt der 'careCycle' Zeitraum erneut.

            Beispiel:
            attr <name> ctrlBatSocManagement01 lowSoc=10 upSoC=50 maxSoC=99 careCycle=25

        • ctrlConsRecommendReadings
          Für die ausgewählten Consumer (Nummer) werden Readings der Form consumerXX_ConsumptionRecommended erstellt.
          Diese Readings signalisieren ob das Einschalten dieses Consumers abhängig von seinen Verbrauchsdaten und der aktuellen PV-Erzeugung bzw. des aktuellen Energieüberschusses empfohlen ist. Der Wert des erstellten Readings korreliert mit den berechneten Planungsdaten des Consumers, kann aber von dem Planungszeitraum abweichen.

        • ctrlDebug
          Aktiviert/deaktiviert verschiedene Debug Module. Ist ausschließlich "none" selektiert erfolgt keine DEBUG-Ausgabe. Zur Ausgabe von Debug Meldungen muß der verbose Level des Device mindestens "1" sein.
          Die Debug Ebenen können miteinander kombiniert werden:

            aiProcess Datenanreicherung und Trainingsprozess der KI Unterstützung
            aiData Datennutzung KI im Prognoseprozess
            apiCall Abruf API Schnittstelle ohne Datenausgabe
            apiProcess Abruf und Verarbeitung von API Daten
            batteryManagement Steuerungswerte des Batterie Managements (SoC)
            collectData detailliierte Datensammlung
            consumerPlanning Consumer Einplanungsprozesse
            consumerSwitchingXX Operationen des internen Consumer Schaltmodul für Verbraucher XX
            consumption Verbrauchskalkulation, Verbrauchsvorhersage und -nutzung
            consumption_long erweiterte Ausgabe der Verbrauchsvorhersage Ermittlung
            dwdComm Kommunikation mit Webseite oder Server des Deutschen Wetterdienst (DWD)
            epiecesCalc Berechnung des spezifischen Energieverbrauchs je Betriebsstunde und Verbraucher
            graphic Informationen der Modulgrafik
            notifyHandling Ablauf der Eventverarbeitung im Modul
            pvCorrectionRead Anwendung PV Korrekturfaktoren
            pvCorrectionWrite Berechnung PV Korrekturfaktoren
            radiationProcess Sammlung und Verarbeitung der Solarstrahlungsdaten
            saveData2Cache Datenspeicherung in internen Speicherstrukturen

        • ctrlLanguage <DE | EN>
          Legt die benutzte Sprache des Devices fest. Die Sprachendefinition hat Auswirkungen auf die Modulgrafik und verschiedene Readinginhalte.
          Ist das Attribut nicht gesetzt, definiert sich die Sprache durch die Einstellung des globalen Attributs "language".
          (default: EN)

        • ctrlNextDayForecastReadings <01,02,..,24>
          Wenn gesetzt, werden Readings der Form Tomorrow_Hour<hour>_PVforecast erstellt.
          Diese Readings enthalten die voraussichtliche PV Erzeugung des kommenden Tages. Dabei ist <hour> die Stunde des Tages.

            Beispiel:
            attr <name> ctrlNextDayForecastReadings 09,11
            # erstellt Readings für die Stunde 09 (08:00-09:00) und 11 (10:00-11:00) des kommenden Tages

        • ctrlNextHoursSoCForecastReadings <00,02,..,23>
          Wenn gesetzt, werden Readings der Form Battery_NextHourXX_SoCforecast_BN erstellt sofern eine Batterie im SolarForecast-Device registriert ist (siehe attr <name> setupBatteryDevXX ).
          Diese Readings enthalten den prognostizierten SoC-Wert (%) zum Ende der ausgewählten Stunde.
          Dabei ist 'XX' die Stunde in der Zukunft ausgehend von der aktuellen Stunde (00) und 'BN' die Nummer der registrierten Batterie.

            Beispiel:
            attr <name> ctrlNextHoursSoCForecastReadings 00,03,12,18
            # erstellt Readings für die aktuelle Stunde (00) sowie die nachfolgenden Stunden +03, +12 und +18.

        • ctrlSolCastAPImaxReq
          (nur bei Verwendung Model SolCastAPI)

          Die Einstellung der maximal möglichen täglichen Requests an die SolCast API.
          Dieser Wert wird von SolCast vorgegeben und kann sich entsprechend des SolCast Lizenzmodells ändern.
          (default: 50)

        • ctrlSpecialReadings
          Für die ausgewählten Kennzahlen und Indikatoren werden Readings mit dem Namensschema 'special_<Indikator>' erstellt. Auswählbare Kennzahlen / Indikatoren sind:

            BatPowerIn_Sum die Summe der momentanen Batterieladeleistung aller definierten Batterie Geräte
            BatPowerOut_Sum die Summe der momentanen Batterieentladeleistung aller definierten Batterie Geräte
            allStringsFullfilled Erfüllungsstatus der fehlerfreien Generierung aller Strings
            conForecastTillNextSunrise Verbrauchsprognose von aktueller Stunde bis zum kommenden Sonnenaufgang
            currentAPIinterval das aktuelle Abrufintervall der gewählten Strahlungsdaten-API in Sekunden
            currentRunMtsConsumer_XX die Laufzeit (Minuten) des Verbrauchers "XX" seit dem letzten Einschalten. (letzter Laufzyklus)
            dayAfterTomorrowPVforecast liefert die Vorhersage der PV Erzeugung für Übermorgen (sofern verfügbar) ohne Autokorrektur (Rohdaten).
            daysUntilBatteryCare_XX Tage bis zur nächsten Batterie XX Pflege (Erreichen der Ladung 'maxSoC' aus Attribut ctrlBatSocManagementXX)
            lastretrieval_time der letzte Abrufzeitpunkt der gewählten Strahlungsdaten-API
            lastretrieval_timestamp der Timestamp der letzen Abrufzeitpunkt der gewählten Strahlungsdaten-API
            response_message die letzte Statusmeldung der gewählten Strahlungsdaten-API
            runTimeAvgDayConsumer_XX die durchschnittliche Laufzeit (Minuten) des Verbrauchers "XX" an einem Tag
            runTimeCentralTask die Laufzeit des letzten SolarForecast Intervalls (Gesamtprozess) in Sekunden
            runTimeTrainAI die Laufzeit des letzten KI Trainingszyklus in Sekunden
            runTimeLastAPIAnswer die letzte Antwortzeit des Strahlungsdaten-API Abrufs auf einen Request in Sekunden
            runTimeLastAPIProc die letzte Prozesszeit zur Verarbeitung der empfangenen Strahlungsdaten-API Daten
            SunMinutes_Remain die verbleibenden Minuten bis Sonnenuntergang des aktuellen Tages
            SunHours_Remain die verbleibenden Stunden bis Sonnenuntergang des aktuellen Tages
            todayConsumption der Energieverbrauch des Hauses am aktuellen Tag
            todayConsumptionForecastDayVerbrauchsprognose für den aktuellen Tag
            todayConsumptionForecast Verbrauchsprognose pro Stunde des aktuellen Tages (01-24)
            todayConForecastTillSunset Verbrauchsprognose von aktueller Stunde bis Stunde vor Sonnenuntergang
            todayDoneAPIcalls die Anzahl der am aktuellen Tag ausgeführten Strahlungsdaten-API Calls
            todayDoneAPIrequests die Anzahl der am aktuellen Tag ausgeführten Strahlungsdaten-API Requests
            todayGridConsumption die aus dem öffentlichen Netz bezogene Energie am aktuellen Tag
            todayGridFeedIn die in das öffentliche Netz eingespeiste PV Energie am aktuellen Tag
            todayMaxAPIcalls die maximal mögliche Anzahl Strahlungsdaten-API Calls.
            Ein Call kann mehrere API Requests enthalten.
            todayRemainingAPIcalls die Anzahl der am aktuellen Tag noch möglichen Strahlungsdaten-API Calls
            todayRemainingAPIrequests die Anzahl der am aktuellen Tag noch möglichen Strahlungsdaten-API Requests
            todayBatIn_XX die am aktuellen Tag in die Batterie XX geladene Energie
            todayBatInSum Summe der am aktuellen Tag in alle Batterien geladene Energie
            todayBatOut_XX die am aktuellen Tag aus der Batterie XX entnommene Energie
            todayBatOutSum Summe der am aktuellen Tag aus allen Batterien entnommene Energie
            tomorrowConsumptionForecastVerbrauchsprognose pro Stunde des kommenden Tages (01-24)


        • ctrlUserExitFn {<Code>}
          Nach jedem Zyklus (siehe Attribut plantControl->cycleInterval) wird der in diesem Attribut abgegebene Code ausgeführt. Der Code ist in geschweifte Klammern {...} einzuschließen.
          Dem Code werden die Variablen $name und $hash übergeben, die den Namen des SolarForecast Device und dessen Hash enthalten.
          Im SolarForecast Device können Readings über die Funktion storeReading erzeugt und geändert werden.

            Beispiel:
            {
            my $batdev = (split " ", AttrVal ($name, 'setupBatteryDev01', ''))[0];
            my $pvfc = ReadingsNum ($name, 'RestOfDayPVforecast', 0);
            my $cofc = ReadingsNum ($name, 'RestOfDayConsumptionForecast', 0);
            my $diff = $pvfc - $cofc;

            storeReading ('userFn_Battery_device', $batdev);
            storeReading ('userFn_estimated_surplus', $diff);
            }

        • flowGraphicControl <Schlüssel=Wert> <Schlüssel=Wert> ...
          Durch die optionale Angabe der nachfolgend aufgeführten Schlüssel=Wert Paare können verschiedene Anzeigeeigenschaften der Energieflußgrafik beeinflusst werden.
          Die Eingabe kann mehrzeilig erfolgen.

            animate Animiert die Energieflußgrafik sofern angezeigt. (graphicSelect)
            0 - Animation aus, 1 - Animation an, default: 1
            consumerdist Steuert den Abstand zwischen den Verbraucher-Icons.
            Wert: 80 ... 500, default: 130
            h2consumerdist Erweiterung des vertikalen Abstandes zwischen dem Haus und den Verbraucher-Icons.
            Wert: 0 ... 999, default: 0
            homenodedyncol Das Hausknoten-Icon kann dynamisch in Abhängigkeit der aktuellen Autarkie eingefärbt werden.
            0 - keine dynamische Färbung, 1 - dynamische Färbung, default: 0
            shiftx Horizontale Verschiebung der Energieflußgrafik.
            Wert: -80 ... 80, default: 0
            shifty Vertikale Verschiebung der Energieflußgrafik.
            Wert: Ganzzahl, default: 0
            showconsumer Anzeige der Verbraucher in der Energieflußgrafik.
            0 - Anzeige aus, 1 - Anzeige an, default: 1
            showconsumerdummy Steuert die Anzeige des Dummy-Verbrauchers. Dem Dummy-Verbraucher wird der
            Energieverbrauch zugewiesen der anderen Verbrauchern nicht zugeordnet werden kann.
            0 - Anzeige aus, 1 - Anzeige an, default: 1
            showconsumerpower Steuert die Anzeige des Energieverbrauchs der Verbraucher.
            0 - Anzeige aus, 1 - Anzeige an, default: 1
            showconsumerremaintime Steuert die Anzeige der Restlaufzeit (Minuten) der Verbraucher.
            0 - Anzeige aus, 1 - Anzeige an, default: 1
            size Größe der Energieflußgrafik in Pixel sofern angezeigt. (graphicSelect)
            Wert: Ganzzahl, default: 400
            strokeconsumerdyncol Die Linien vom Hausknoten zu den Verbrauchern können abhängig vom Verbrauchswert dynamisch eingefärbt werden.
            0 - keine dynamische Färbung, 1 - dynamische Färbung, default: 0
            strokeCmrRedColLimit Leistungsaufnahme ab der die Linie Haus -> Verbraucher rot dargestellt wird sofern strokeconsumerdyncol=1 gesetzt ist.
            Wert: Ganzzahl, default: 400
            strokecolina Farbe einer inaktiven Linie
            Wert: Hex (z.B. #cc3300) oder Bezeichnung (z.B. red, blue), default: gray
            strokecolsig Farbe einer aktiven Signallinie
            Wert: Hex (z.B. #cc3300) oder Bezeichnung (z.B. red, blue), default: red
            strokecolstd Farbe einer aktiven Standardlinie
            Wert: Hex (z.B. #cc3300) oder Bezeichnung (z.B. red, blue), default: darkorange
            strokewidth Breite der Linien
            Wert: Ganzzahl, default: 25
            Beispiel:
            attr <name> flowGraphicControl size=300 animate=0 consumerdist=100 showconsumer=1 showconsumerdummy=0 shiftx=-20 strokewidth=15 strokecolstd=#99cc00

        • graphicBeamXColor
          Farbauswahl für den Balken der ausgewählten Ebene.
          Ungerade Balkennummern kennzeichnen den primären, gerade Balkennummern den sekundären Balken.

        • graphicBeamXFontColor
          Auswahl der Schriftfarbe des Balkens der ausgewählten Ebene.
          Ungerade Balkennummern kennzeichnen den primären, gerade Balkennummern den sekundären Balken.
          (default: 000000)

        • graphicBeamXContent
          Legt den darzustellenden Inhalt der Balken in den Balkendiagrammen fest. Die Balkendiagramme sind in mehreren Ebenen verfügbar.
          Die Ebene 1 ist im Standard voreingestellt. Der Inhalt wird durch die Attribute graphicBeam1Content und graphicBeam2Content bestimmt.
          Die Ebene 2 kann durch Setzen der Attribute graphicBeam3Content und graphicBeam4Content aktiviert werden.
          Die Ebene 3 kann durch Setzen der Attribute graphicBeam5Content und graphicBeam6Content aktiviert werden.
          Die Attribute mit ungeraden Ziffern (1,3,5) stellen die primären Balken, die Attribute mit geraden Ziffern die sekundären Balken der jeweiligen Ebene dar.

            batsocCombi_XX der prognostizierte (ab kommender Stunde) und bis zur aktuellen Zeit real erreichte SOC (%) der Batterie XX
            batsocForecast_XX der prognostizierte SOC (%) der Batterie XX
            batsocReal_XX der real erreichte SOC (%) der Batterie XX
            batsocForecastSum der prognostizierte SOC (%) als Resultierende über alle Batterien
            batsocRealSum der real erreichte SOC (%) als Resultierende über alle Batterien
            consumption Energieverbrauch
            consumptionForecast prognostizierter Energieverbrauch
            energycosts Kosten des Energiebezuges aus dem Netz. Die Währung ist im setupMeterDev, Schlüssel conprice, definiert.
            feedincome Vergütung für die Netzeinspeisung. Die Währung ist im setupMeterDev, Schlüssel feedprice, definiert.
            gridconsumption Energiebezug aus dem öffentlichen Netz
            gridfeedin Einspeisung in das öffentliche Netz
            pvForecast prognostizierte PV-Erzeugung (default für graphicBeam2Content)
            pvReal reale PV-Erzeugung (default für graphicBeam1Content)

          Hinweis: Die Auswahl der Parameter energycosts und feedincome ist nur sinnvoll wenn in setupMeterDev die optionalen Schlüssel conprice und feedprice gesetzt sind.

        • graphicBeamHeightLevelX <value>
          Multiplikator zur Festlegung der maximalen Balkenhöhe der jeweiligen Ebene.
          In Verbindung mit dem Attribut graphicControl->hourCount lassen sich damit auch recht kleine Grafikausgaben erzeugen.
          (default: 200)

        • graphicControl <Schlüssel=Wert> <Schlüssel=Wert> ...
          Durch die Angabe der nachfolgend aufgeführten 'Schlüssel=Wert' Paare können verschiedene übergreifende Eigenschaften der Grafik- bzw. Balkengrafikdarstellung eingestellt werden.
          Die Eingabe kann mehrzeilig erfolgen.

            beamWidth Bestimmt die Breite der Balken der Balkengrafik in px.
            Ohne gesetzen Attribut wird die Balkenbreite durch das Modul automatisch dynamisch angepasst.
            Wert: Ganzzahl 20..100, default: 20
            energyUnit Definiert die Einheit zur Anzeige der elektrischen Leistung in der Grafik.
            Die Kilowattstunde wird auf eine Nachkommastelle gerundet.
            Wert: Wh | kWh, default: Wh
            hourCount Anzahl der Balken/Stunden in der Balkengrafk.
            Wert: Ganzzahl 4..24, default: 24
            headerDetail Auswahl der anzuzeigenden Zonen des Grafik Kopfbereiches. Die gewählten Optionen werden durch Komma getrennt angegeben.
            all - alle Zonen des Kopfbereiches (default)
            co - Verbrauchsbereich
            pv - Erzeugungsbereich
            own - Nutzerzone (siehe graphicHeaderOwnspec)
            status - Bereich der Statusinformationen
            hourStyle Format der Zeitangabe in der Balkengrafik.
            nicht gesetzt - nur Stundenangabe ohne Minuten (default)
            :00 - Stunden sowie Minuten zweistellig, z.B. 10:00
            :0 - Stunden sowie Minuten einstellig, z.B. 8:0
            layoutType Layout der Balkengrafik. Der darzustellende Inhalt der Balken wird durch die Attribute graphicBeamXContent bestimmt.
            double - zeigt den primären Balken und den sekundären Balken an (default)
            single - zeigt nur den primären Balken an
            diff - Differenzanzeige. Es gilt: <Differenz> = <Wert primärer Balken> - <Wert sekundärer Balken>
            Die Einstellung von graphicControl->energyUnit wird nicht berücksichtigt.
            spaceSize Legt fest, wieviel Platz in px über oder unter den Balken (bei Anzeigetyp layoutType=diff) zur Anzeige der
            Werte freigehalten wird. Bei Styles mit großen Fonts kann der default-Wert zu klein sein bzw. rutscht ein
            Balken u.U. über die Grundlinie. In diesen Fällen bitte den Wert erhöhen.
            Wert: Ganzzahl, default: 24
            Beispiel:
            attr <name> graphicControl beamWidth=45 headerDetail=co,pv energyUnit=kWh hourCount=10 layoutType=diff hourStyle=:00

        • graphicHeaderOwnspec <Label>:<Reading>[@Device] <Label>:<Set>[@Device] <Label>:<Attr>[@Device] ...

          Anzeige beliebiger Readings, Set-Kommandos und Attribute des SolarForecast Devices im Grafikkopf.
          Durch Angabe des optionalen [@Device] können Readings, Set-Kommandos und Attribute anderer Devices angezeigt werden.
          Die anzuzeigenden Werte werden durch Leerzeichen getrennt. Es werden vier Werte (Felder) pro Zeile dargestellt.
          Die Eingabe kann mehrzeilig erfolgen. Werte mit den Einheiten "Wh" bzw. "kWh" werden entsprechend der Einstellung des Attributs graphicControl->energyUnit umgerechnet.

          Jeder Wert ist jeweils durch ein Label und das dazugehörige Reading verbunden durch ":" zu definieren.
          Leerzeichen im Label sind durch "&nbsp;" einzufügen, ein Zeilenumbruch durch "<br>".
          Ein leeres Feld in einer Zeile wird durch ":" erzeugt.
          Ein Zeilentitel kann durch Angabe von "#:<Text>" eingefügt werden, ein leerer Titel durch die Eingabe von "#".

            Beispiel:
            attr <name> graphicHeaderOwnspec #
            AutarkyRate:Current_AutarkyRate
            Überschuß:Current_Surplus
            aktueller&nbsp;Netzbezug:Current_GridConsumption
            :
            #
            CO&nbsp;bis&nbsp;Sonnenuntergang:special_todayConForecastTillSunset
            PV&nbsp;Übermorgen:special_dayAfterTomorrowPVforecast
            InverterRelay:gridrelay_status@MySTP_5000
            :
            #Batterie
            in&nbsp;heute:special_todayBatIn
            out&nbsp;heute:special_todayBatOut
            :
            :
            #Settings
            Autokorrektur:pvCorrectionFactor_Auto : : :
            Consumer<br>Neuplanung:consumerNewPlanning : : :
            Consumer<br>Sofortstart:consumerImmediatePlanning : : :
            Wetter:graphicShowWeather : : :
            History:graphicHistoryHour : : :
            ShowNight:graphicShowNight : : :
            Debug:ctrlDebug : : :

        • graphicHeaderOwnspecValForm

          Die mit dem Attribut graphicHeaderOwnspec anzuzeigenden Readings können mit sprintf und anderen Perl Operationen manipuliert werden.
          Es stehen zwei grundsätzliche, miteinander nicht kombinierbare Möglichkeiten der Notation zur Verfügung.
          Die Angabe der Notationen erfolgt grundsätzlich innerhalb von zwei geschweiften Klammern {...}.

          Hinweis: Werte mit den Einheiten 'Wh' oder 'kWh' werden entsprechend der Einstellung des Attributs graphicControl->energyUnit automatisch umgerechnet und dargestellt.

          Notation 1:
          Eine einfache Formatierung von Readings des eigenen Devices mit sprintf erfolgt wie in Zeile 'Current_AutarkyRate' bzw. 'Current_GridConsumption' angegeben.
          Andere Perl Operationen sind mit () zu klammern. Die jeweiligen Readingswerte und Einheiten stehen über die Variablen $VALUE und $UNIT zur Verfügung.
          Readings anderer Devices werden durch die Angabe '<Device>.<Reading>' spezifiziert.

            {
            'Current_AutarkyRate' => "%.1f %%",
            'Current_GridConsumption' => "%.2f $UNIT",
            'SMA_Energymeter.Cover_RealPower' => q/($VALUE)." W"/,
            'SMA_Energymeter.L2_Cover_RealPower' => "($VALUE).' W'",
            'SMA_Energymeter.L1_Cover_RealPower' => '(sprintf "%.2f", ($VALUE / 1000))." kW"',
            }

          Notation 2:
          Die Manipulation von Readingwerten und Einheiten erfolgt über Perl If ... else Strukturen.
          Der Struktur stehen Device, Reading, Readingwert und Einheit mit den Variablen $DEVICE, $READING, $VALUE und $UNIT zur Verfügung.
          Bei Änderung der Variablen werden die neuen Werte entsprechend in die Anzeige übernommen.

            {
            if ($READING eq 'Current_AutarkyRate') {
               $VALUE = sprintf "%.1f", $VALUE;
               $UNIT = "%";
            }
            elsif ($READING eq 'Current_GridConsumption') {
               ...
            }
            }

        • graphicHistoryHour
          Anzahl der vorangegangenen Stunden die in der Balkengrafik dargestellt werden.
          (default: 2)

        • graphicSelect
          Wählt die anzuzeigenden Grafiksegmente des Moduls aus.

            both zeigt Grafikkopf, Verbraucherpaneel, Balken- und Energieflußgrafik an (default)
            both_noHead zeigt Verbraucherpaneel, Balken- und Energieflußgrafik an
            both_noCons zeigt Grafikkopf, Balken- und Energieflußgrafik an
            both_noHead_noCons zeigt Balken- und Energieflußgrafik an
            swap wie 'both', mit vertauschter Balken- und Energieflußgrafik Reihenfolge
            swap_noHead wie 'both_noHead', mit vertauschter Balken- und Energieflußgrafik Reihenfolge
            swap_noCons wie 'both_noCons', mit vertauschter Balken- und Energieflußgrafik Reihenfolge
            swap_noHead_noCons wie 'both_noHead_noCons', mit vertauschter Balken- und Energieflußgrafik Reihenfolge
            flow zeigt Grafikkopf, Verbraucherpaneel und Energieflußgrafik an
            flow_noHead zeigt Verbraucherpaneel und Energieflußgrafik an
            flow_noCons zeigt Grafikkopf und Energieflußgrafik an
            flow_noHead_noCons zeigt Energieflußgrafik an
            forecast zeigt Grafikkopf, Verbraucherpaneel und Balkengrafik an
            forecast_noHead zeigt Verbraucherpaneel und Balkengrafik an
            forecast_noCons zeigt Grafikkopf und Balkengrafik an
            forecast_noHead_noCons zeigt Balkengrafik an
            none zeigt nur Grafikkopf und Verbraucherpaneel an

        • graphicShowDiff [no | top | bottom]
          Zusätzliche Anzeige der Differenz "<primärer Balkeninhalt> - <sekundärer Balkeninhalt>" im Kopf- oder Fußbereich der Balkengrafik.
          (default: no)

        • graphicShowNight
          Anzeigen oder Verbergen der Nachtstunden in der Balkengrafik.

            0 keine Anzeige der Nachtstunden sofern kein Wert anzuzeigen ist (default)
            Sofern die ausgewählten Inhalte einen Wert enthalten, werden diese Balken dennoch dargestellt.
            01 Wie '0', es findet jedoch eine Zeitsynchronisation zwischen der Ebene 1
            und der nachfolgenden Balkengrafikebene statt.
            1 Nachtstunden werden immer angezeigt

        • graphicShowWeather
          Wettericons in der Balkengrafik anzeigen/verbergen.
          (default: 1)

        • graphicWeatherColor
          Farbe der Wetter-Icons in der Balkengrafik für die Tagesstunden.

        • graphicWeatherColorNight
          Farbe der Wetter-Icons für die Nachtstunden.

        • plantControl <Schlüssel=Wert> <Schlüssel=Wert> ...
          Durch die optionale Angabe der nachfolgend aufgeführten 'Schlüssel=Wert' Paare können verschiedene Eigenschaften der Gesamtanlage eingestellt werden. Die Eingabe kann mehrzeilig erfolgen.

            backupFilesKeep Legt die Anzahl der Generationen von Sicherungsdateien fest.
            (siehe set <name> operatingMemory backup)
            Ist backupFilesKeep explit auf '0' gesetzt, erfolgt keine automatische Generierung und Bereinigung von Sicherungsdateien.
            Eine manuelle Ausführung mit dem genannten Set-Kommando ist weiterhin möglich.
            Wert: Ganzzahl, default: 3
            batteryPreferredCharge Verbraucher mit dem Mode can werden erst dann eingeschaltet, wenn die angegebene Batterieladung (%) erreicht ist.
            Verbraucher mit dem Mode must beachten die Vorrangladung der Batterie nicht.
            Wert: Ganzzahl 0..100, default: 0
            consForecastIdentWeekdays Wenn gesetzt, werden zur Berechnung der Verbrauchsprognose nur gleiche Wochentage (Mo..So) einbezogen.
            Anderenfalls werden alle Wochentage gleichberechtigt zur Kalkulation verwendet.
            Wert: 0|1, default: 0
            consForecastInPlanning Der Schlüssel bestimmt die Vorgehensweise bei der Einplanung der registrierten Verbraucher.
            0 - die Einplanung der Verbraucher erfolgt auf Grundlage der PV Prognose (default)
            1 - die Einplanung der Verbraucher erfolgt auf Grundlage der PV Prognose und der Prognose des Verbrauchs
            consForecastLastDays Es wird die angegebene Anzahl historischer Tage bei der Berechnung der Verbrauchsprognose einbezogen.
            So wird z.B. mit dem Attributwert "1" nur der vorangegangene Tag berücksichtigt, mit dem Wert '14' die vergangenen 14 Tage.
            Die berücksichtigten Tage können geringer ausfallen, wenn noch nicht genügend Werte im internen Speicher vorhanden sind.
            Bei einem zusätzlich gesetzten Schlüssel 'consForecastIdentWeekdays' wird die angegebene Anzahl vergangener
            gleicher Wochentage (Mo .. So) berücksichtigt.
            Zum Beispiel werden dann bei einem gesetzten Wert von '8' die gleichen Wochentage der vergangenen 8 Wochen berücksichtigt.
            Wert: Ganzzahl 0..180, default: 60
            cycleInterval Wiederholungsintervall der Datensammlung in Sekunden.
            Ist cycleInterval explizit auf '0' gesetzt, erfolgt keine regelmäßige Datensammlung und muss mit 'get <name> data'
            extern gestartet werden.
            Wert: Ganzzahl, default: 70
            Hinweis: Unabhängig vom eingestellten Intervall (auch bei '0') erfolgt einige Sekunden vor dem Ende
            sowie nach dem Beginn einer vollen Stunde eine automatische Datensammlung. Weiterhin erfolgt eine automatische Datensammlung
            wenn ein Event eines als "asynchron" definierten Gerätes (Consumer, Meter, etc.) empfangen und verarbeitet wird.
            feedinPowerLimit Einspeiselimit der Gesamtanlage in das öffentliche Netz in Watt.
            SolarForecast limitiert die Einspeisung nicht, verwendet diese Angabe jedoch
            innerhalb des Batterie-Lademanagements zur Vermeidung einer Anlagenabregelung.
            Wert: Ganzzahl, default: unbegrent
            genPVdeviation Legt die Methode zur Berechnung der Abweichung von prognostizierter und realer PV Erzeugung fest.
            Das Reading Today_PVdeviation wird in Abhängigkeit dieser Einstellung erstellt.
            daily - Berechnung und Erstellung von Today_PVdeviation erfolgt nach Sonnenuntergang (default)
            continuously - Berechnung und Erstellung von Today_PVdeviation erfolgt fortlaufend
            genPVforecastsToEvent Das Modul erzeugt täglich 'AllPVforecastsToEvent'-Events zur Visualisierung der PV Prognose.
            Nähere Erläuterungen dazu sind im Wiki beschrieben.
            Die Eventerzeugung kann für bestimmte Nutzungen optimiert werden.
            adapt4Steps - die Events werden für den SVG Plot-Type 'steps' optimiert
            showLink Anzeige eines Links zur Detailansicht des Device über dem Grafikbereich
            0 - Anzeige aus, 1 - Anzeige an, default: 0
            Beispiel:
            attr <name> plantControl feedinPowerLimit=4800 consForecastInPlanning=1 showLink=1 backupFilesKeep=2 consForecastIdentWeekdays=1 consForecastLastDays=8 genPVdeviation=continuously genPVforecastsToEvent=adapt4Steps

        • setupBatteryDevXX <Batterie Device Name> pin=<Readingname>:<Einheit> pout=<Readingname>:<Einheit> cap=<Option> [pinmax=<Ganzzahl>] [poutmax=<Ganzzahl>] [intotal=<Readingname>:<Einheit>] [outtotal=<Readingname>:<Einheit>] [charge=<Readingname>] [asynchron=<Option>] [show=<Option>]
          [[icon=<empfohlen>@<Farbe>]:[<aufladen>@<Farbe>]:[<entladen>@<Farbe>]:[icon=<unterlassen>@<Farbe>]]


          Legt ein beliebiges Device und seine Readings zur Lieferung der Batterie Leistungsdaten fest. Das Modul geht davon aus, dass der numerische Wert der Readings immer positiv ist. Es kann auch ein Dummy Device mit entsprechenden Readings sein.

            pin Reading welches die aktuelle Batterieladeleistung liefert
            pout Reading welches die aktuelle Batterieentladeleistung liefert
            pinmax die maximal mögliche Ladeleistung in Watt (optional)
            poutmax die maximal mögliche Entladeleistung in Watt (optional)
            intotal Reading welches die totale Batterieladung als fortlaufenden Zähler liefert (optional)
            Sollte des Reading die Vorgabe eines stetig aufsteigenden Zählers verletzen, behandelt
            SolarForecast diesen Fehler und meldet die aufgetretene Situation durch einen Logeintrag mit verbose 2.
            outtotal Reading welches die totale Batterieentladung als fortlaufenden Zähler liefert (optional)
            Sollte des Reading die Vorgabe eines stetig aufsteigenden Zählers verletzen, behandelt
            SolarForecast diesen Fehler und meldet die aufgetretene Situation durch einen Logeintrag mit verbose 2.
            cap installierte Batteriekapazität. Option kann sein:
            numerischer Wert - direkte Angabe der Batteriekapazität in Wh ohne die Einheit anzugeben!
            <Readingname>:<Einheit> - Reading welches die Kapazität liefert und Einheit (Wh, kWh)
            charge Reading welches den aktuellen Ladezustand (SOC in Prozent) liefert (optional)
            Einheit die jeweilige Einheit (W,Wh,kW,kWh)
            icon Icon und/oder (nur) Farbe der Batterie in der Balkengrafik entsprechend des Status (optional).
            Die Farbe kann als Bezeichner (z.B. blue) oder HEX-Wert (z.B. #d9d9d9) angegeben werden.
            <empfohlen> - die Aufladung ist empfohlen aber inaktiv (kein Aufladen oder Entladen)
            <aufladen> - wird verwendet wenn die Batterie aktuell aufgeladen wird
            <entladen> - wird verwendet wenn die Batterie aktuell entladen wird
            <unterlassen> - nur bei Überschreitung des Einspeiselimits aufladen
            show Steuerung der Anzeige der Batterie in der Balkengrafik (optional)
            0 - keine Anzeige des Gerätes (default)
            1..3[:top|bottom] - Anzeige des Gerätes in der Ebene 1,2 oder 3 (über|unter) den Balken
            asynchron Modus der Datensammlung entsprechend Einstellung plantControl->cycleInterval (synchron) oder
            zusätzlich durch Eventverarbeitung (asynchron).
            0 - keine Datensammlung nach Empfang eines Events des Gerätes (default)
            1 - auslösen einer Datensammlung bei Empfang eines Events des Gerätes

          Sonderfälle: Sollte das Reading für pin und pout identisch, aber vorzeichenbehaftet sein, können die Schlüssel pin und pout wie folgt definiert werden:

            pin=-pout    (ein negativer Wert von pout wird als pin verwendet)
            pout=-pin    (ein negativer Wert von pin wird als pout verwendet)

          Die Einheit entfällt in dem jeweiligen Sonderfall.

            Beispiel:
            attr <name> setupBatteryDev01 BatDummy pin=BatVal:W pout=-pin intotal=BatInTot:Wh outtotal=BatOutTot:Wh cap=BatCap:kWh show=2:bottom icon=measure_battery_50@#262626:@yellow:measure_battery_100@red

          Hinweis: Durch Löschen des Attributes werden ebenfalls die intern korrespondierenden Daten entfernt.

        • setupInverterDevXX <Inverter Device Name> pv=<Readingname>:<Einheit> etotal=<Readingname>:<Einheit> capacity=<max. WR-Leistung> [strings=<String1>,<String2>,...] [asynchron=<Option>] [feed=<Liefertyp>] [limit=<0..100>] [icon=<Tag>[@<Farbe>][:<Nacht>[@<Farbe>]]]

          Legt ein beliebiges Wechselrichter-Gerät bzw. Solar-Ladegerät und dessen Readings zur Lieferung der aktuellen PV Erzeugungswerte fest.
          Ein Solar-Ladegerät wandelt die von den Solarzellen gelieferte Energie nicht in Wechselstrom um, sondern lädt damit direkt eine vorhandene Batterie
          (z.B. ein Victron SmartSolar MPPT).
          Es können nacheinander mehrere Geräte in den Attributen setupInverterDev01..XX definiert werden.
          Dabei kann es sich auch um ein Dummy Gerät mit entsprechenden Readings handeln.
          Die Werte mehrerer Wechselrichter kann man z.B. in einem Dummy Gerät zusammenführen und gibt dieses Gerät mit den entsprechenden Readings an.


            pv Reading welches die aktuelle PV-Erzeugung als positiven Wert liefert
            etotal Reading welches die gesamte erzeugte PV-Energie liefert (ein stetig aufsteigender Zähler)
            Sollte des Reading die Vorgabe eines stetig aufsteigenden Zählers verletzen, behandelt
            SolarForecast diesen Fehler und meldet die aufgetretene Situation durch einen Logeintrag.
            Einheit die jeweilige Einheit (W,kW,Wh,kWh)
            capacity Bemessungsleistung des Wechselrichters gemäß Datenblatt, d.h. max. möglicher Output in Watt
            strings Komma getrennte Liste der dem Wechselrichter zugeordneten Strings (optional). Die Stringnamen
            werden im Attribut setupInverterStrings definiert.
            Ist 'strings' nicht angegeben, werden alle definierten Stringnamen dem Wechselrichter zugeordnet.
            feed Definiert spezielle Eigenschaften der Energielieferung des Gerätes (optional).
            Ist der Schlüssel nicht gesetzt, speist das Gerät die PV-Energie in das Wechselstromnetz des Hauses ein.
            bat - Solar-Ladegerät zur Batterie Direktladung. Ein Überschuß wird dem Inverter/Hausnetz zugeführt.
            grid - die Energie wird ausschließlich in das öffentlich Netz eingespeist
            limit Definiert eine eventuelle Wirkleistungsbeschränkung in % (optional).
            icon Icon zur Darstellung des Inverters in der Flowgrafik (optional)
            <Tag> - Icon und ggf. Farbe bei Aktivität nach Sonnenaufgang
            <Nacht> - Icon und ggf. Farbe nach Sonnenuntergang, sonst wird die Mondphase angezeigt
            asynchron Modus der Datensammlung entsprechend Einstellung plantControl->cycleInterval (synchron) oder
            zusätzlich durch Eventverarbeitung (asynchron). (optional)
            0 - keine Datensammlung nach Empfang eines Events des Gerätes (default)
            1 - auslösen einer Datensammlung bei Empfang eines Events des Gerätes

            Beispiel:
            attr <name> setupInverterDev01 STP5000 pv=total_pac:kW etotal=etotal:kWh capacity=5000 asynchron=1 strings=Garage icon=inverter@red:solar

          Hinweis: Durch Löschen des Attributes werden ebenfalls die intern korrespondierenden Daten entfernt.

        • setupInverterStrings <Stringname1>[,<Stringname2>,<Stringname3>,...]

          Bezeichnungen der aktiven Strings. Diese Bezeichnungen werden als Schlüssel in den weiteren Settings verwendet.
          Bei Nutzung einer KI basierenden API (z.B. VictronKI-API) ist nur "KI-based" einzutragen unabhängig davon welche realen Strings existieren.

            Beispiele:
            attr <name> setupInverterStrings Ostdach,Südgarage,S3
            attr <name> setupInverterStrings KI-based

        • setupMeterDev <Meter Device Name> gcon=<Readingname>:<Einheit> contotal=<Readingname>:<Einheit> gfeedin=<Readingname>:<Einheit> feedtotal=<Readingname>:<Einheit> [conprice=<Feld>] [feedprice=<Feld>] [asynchron=<Option>]

          Legt ein beliebiges Device und seine Readings zur Energiemessung in bzw. aus dem öffentlichen Netz fest. Das Modul geht davon aus, dass der numerische Wert der Readings positiv ist. Es kann auch ein Dummy Device mit entsprechenden Readings sein.

            gcon Reading welches die aktuell aus dem Netz bezogene Leistung liefert
            contotal Reading welches die Summe der aus dem Netz bezogenen Energie liefert (ein sich stetig erhöhender Zähler)
            Wird der Zähler zu Beginn des Tages auf '0' zurückgesetzt (Tageszähler), behandelt das Modul diese Situation entsprechend.
            In diesem Fall erfolgt eine Meldung im Log mit verbose 3.
            gfeedin Reading welches die aktuell in das Netz eingespeiste Leistung liefert
            feedtotal Reading welches die Summe der in das Netz eingespeisten Energie liefert (ein sich stetig erhöhender Zähler)
            Wird der Zähler zu Beginn des Tages auf '0' zurückgesetzt (Tageszähler), behandelt das Modul diese Situation entsprechend.
            In diesem Fall erfolgt eine Meldung im Log mit verbose 3.
            Einheit die jeweilige Einheit (W,kW,Wh,kWh)
            conprice Preis für den Bezug einer kWh (optional). Die Angabe <Feld> ist in einer der folgenden Varianten möglich:
            <Preis>:<Währung> - Preis als numerischer Wert und dessen Währung
            <Reading>:<Währung> - Reading des Meter Device das den Preis enthält : Währung
            <Device>:<Reading>:<Währung> - beliebiges Device und Reading welches den Preis enthält : Währung
            feedprice Vergütung für die Einspeisung einer kWh (optional). Die Angabe <Feld> ist in einer der folgenden Varianten möglich:
            <Vergütung>:<Währung> - Vergütung als numerischer Wert und dessen Währung
            <Reading>:<Währung> - Reading des Meter Device das die Vergütung enthält : Währung
            <Device>:<Reading>:<Währung> - beliebiges Device und Reading welches die Vergütung enthält : Währung
            asynchron Modus der Datensammlung entsprechend Einstellung plantControl->cycleInterval (synchron) oder zusätzlich durch
            Eventverarbeitung (asynchron).
            0 - keine Datensammlung nach Empfang eines Events des Gerätes (default)
            1 - auslösen einer Datensammlung bei Empfang eines Events des Gerätes

          Sonderfälle: Sollte das Reading für gcon und gfeedin identisch, aber vorzeichenbehaftet sein, können die Schlüssel gfeedin und gcon wie folgt definiert werden:

            gfeedin=-gcon    (ein negativer Wert von gcon wird als gfeedin verwendet)
            gcon=-gfeedin    (ein negativer Wert von gfeedin wird als gcon verwendet)

          Die Einheit entfällt in dem jeweiligen Sonderfall.

            Beispiel:
            attr <name> setupMeterDev Meter gcon=Wirkleistung:W contotal=BezWirkZaehler:kWh gfeedin=-gcon feedtotal=EinWirkZaehler:kWh conprice=powerCost:€ feedprice=0.1269:€

          Hinweis: Durch Löschen des Attributes werden ebenfalls die intern korrespondierenden Daten entfernt.

        • setupOtherProducerXX <Device Name> pcurr=<Readingname>:<Einheit> etotal=<Readingname>:<Einheit> [icon=<Icon>[@<Farbe>]]

          Legt ein beliebiges Device und dessen Readings zur Lieferung sonstiger Erzeugungswerte fest (z.B. BHKW, Winderzeugung, Notstromaggregat). Dieses Device ist nicht für PV-Erzeugung vorgsehen. Es kann auch ein Dummy Device mit entsprechenden Readings sein.

            icon Icon und ggf. Farbe bei Aktivität zur Darstellung des Producers in der Flowgrafik (optional)
            pcurr Reading welches die aktuelle Erzeugung als positiven Wert oder einen Eigenverbrauch (Sonderfall) als negativen Wert liefert
            etotal Reading welches die gesamte erzeugte Energie liefert (ein stetig aufsteigender Zähler)
            Sollte des Reading die Vorgabe eines stetig aufsteigenden Zählers verletzen, behandelt
            SolarForecast diesen Fehler und meldet die aufgetretene Situation durch einen Logeintrag.
            Einheit die jeweilige Einheit (W,kW,Wh,kWh)

            Beispiel:
            attr <name> setupOtherProducer01 windwheel pcurr=total_pac:kW etotal=etotal:kWh icon=Ventilator_wind@darkorange

          Hinweis: Durch Löschen des Attributes werden ebenfalls die intern korrespondierenden Daten entfernt.

        • setupRadiationAPI

          Legt die Quelle zur Lieferung der solaren Strahlungsdaten fest. Es kann ein Device vom Typ DWD_OpenData oder eine implementierte API eines Dienstes ausgewählt werden.

          Hinweis: Ist im Attribut 'setupWeatherDev1' ebenfalls eine OpenMeteo API gesetzt, werden die Einstellungen beider Attribute harmonisiert wobei die Einstellung von 'setupRadiationAPI' führend ist.

          OpenMeteoDWD-API
          Open-Meteo ist eine Open-Source-Wetter-API und bietet kostenlosen Zugang für nicht-kommerzielle Zwecke. Es ist kein API-Schlüssel erforderlich. Open-Meteo nutzt eine leistungsstarke Kombination aus globalen (11 km) und mesoskaligen (1 km) Wettermodellen von angesehenen nationalen Wetterdiensten. Diese API bietet Zugang zu den renommierten ICON-Wettermodellen des Deutschen Wetterdienstes (DWD), die 15-minütige Daten für kurzfristige Vorhersagen in Mitteleuropa und globale Vorhersagen mit einer Auflösung von 11 km liefern. Das ICON-Modell ist eine bevorzugte Wahl für allgemeine Wettervorhersage-APIs, wenn keine anderen hochauflösenden Wettermodelle verfügbar sind. Es werden die Modelle DWD Icon D2, DWD Icon EU und DWD Icon Global zu einer nahtlosen Vorhersage zusammengeführt. Auf der Webseite des Dienstes ist die umfangreiche und übersichtliche API Dokumentation verfügbar.

          OpenMeteoDWD_D2-API
          Wie OpenMeteoDWD-API. Es wird jedoch nur das Modell ICON D2 für Mitteleuropa (Deutschland, Schweiz, Österreich, Frankreich, Belgien, Niederlande, Dänemark, Tschechien, Slowenien) verwendet. Die Raumauflösung dieses Modells beträgt 0,02° (ca. 2 km) und eine zeitliche Auflösung von 15 Minuten.

          OpenMeteoDWDEnsemble-API
          Diese Open-Meteo API Variante bietet Zugang zum globalen Ensemble-Vorhersagesystem (EPS) des DWD.
          Es werden die Ensemble Modelle ICON-D2-EPS, ICON-EU-EPS und ICON-EPS nahtlos vereint.
          Ensemble-Wetterprognosen sind eine spezielle Art von Vorhersagemethode, die die Unsicherheiten bei der Wettervorhersage berücksichtigt. Sie tun dies, indem sie mehrere Simulationen oder Modelle mit leichten Unterschieden in den Startbedingungen oder Einstellungen ausführen. Jede Simulation, bekannt als Ensemblemitglied, stellt ein mögliches Ergebnis des Wetters dar. In der vorliegenden Implementierung werden 40 Ensemblemitglieder pro Wettermerkmal zusammengeführt und das wahrscheinlichste Ergbnis verwendet.

          OpenMeteoWorld-API
          Als Variante des Open-Meteo Dienstes liefert die OpenMeteoWorld-API die optimale Vorhersage für einen bestimmten Ort weltweit. Die OpenMeteoWorld-API vereint nahtlos Wettermodelle bekannter Organisationen wie NOAA (National Oceanic and Atmospheric Administration), DWD (Deutscher Wetterdienst), CMCC (Canadian) und ECMWF (Europäisches Zentrum für mittelfristige Wettervorhersage). Für jeden Ort weltweit werden die Modelle der Anbieter kombiniert, um die bestmögliche Vorhersage zu erstellen. Die Nutzung der Dienste und Wettermodelle erfolgt automatisch anhand der im API Aufruf enthaltenen Standortkoordinaten.

          SolCast-API
          Die API-Nutzung benötigt vorab ein oder mehrere API-keys (Accounts) sowie ein oder mehrere Rooftop-ID's die auf der SolCast Webseite angelegt werden müssen. Ein Rooftop ist im SolarForecast-Kontext mit einem setupInverterString gleichzusetzen.
          Die kostenfreie API-Nutzung ist auf eine Tagesrate API-Anfragen begrenzt. Die Anzahl definierter Strings (Rooftops) erhöht die Anzahl erforderlicher API-Anfragen. Das Modul optimiert die Abfragezyklen automatisch.

          ForecastSolar-API
          Die kostenfreie Nutzung der Forecast.Solar API erfordert keine Registrierung. Die API-Anfragen sind in der kostenfreien Version auf 12 innerhalb einer Stunde begrenzt. Ein Tageslimit gibt es dabei nicht. Das Modul ermittelt automatisch das optimale Abfrageintervall in Abhängigkeit der konfigurierten Strings.
          Hinweis: Nach den bisherigen Erfahrungen unzuverlässig und nicht zu empfehlen.

          VictronKI-API
          Diese API kann durch Nutzer des Victron Energy VRM Portals angewendet werden. Diese API ist KI basierend. Als String ist der Wert "KI-based" im Setup der setupInverterStrings einzutragen.
          Im Victron Energy VRM Portal ist als Voraussetzung der Standort der PV-Anlage anzugeben.
          Siehe dazu auch den Blog-Beitrag Introducing Solar Production Forecast.

          DWD_OpenData Device
          Der DWD-Dienst wird über ein FHEM Device vom Typ DWD_OpenData eingebunden. Ist noch kein Device des Typs DWD_OpenData vorhanden, muß es vorab definiert werden (siehe DWD_OpenData Commandref).
          Um eine gute Strahlungsprognose zu erhalten, sollte eine nahe dem Anlagenstandort gelegene DWD-Station genutzt werden.
          Leider liefern nicht alle DWD-Stationen die benötigten Rad1h-Werte.
          Erläuterungen zu den Stationen sind im Stationslexikon aufgeführt.
          Im ausgewählten DWD_OpenData Device müssen mindestens die folgenden Attribute gesetzt sein:

            forecastDays 1 (auf >= 2 setzen wenn eine längere Vorhersage gewünscht ist)
            forecastProperties Rad1h
            forecastResolution 1
            forecastStation <Stationscode der ausgewerteten DWD Station>
            Hinweis: Die ausgewählte DWD Station muß Strahlungswerte (Rad1h Readings) liefern.
            Nicht alle Stationen liefern diese Daten!

        • setupRoofTops <Stringname1>=<pk> [<Stringname2>=<pk> <Stringname3>=<pk> ...]
          (nur bei Verwendung Model SolCastAPI)

          Es erfolgt die Zuordnung des Strings "StringnameX" zu einem Schlüssel <pk>. Der Schlüssel <pk> wurde mit dem Setter roofIdentPair angelegt. Damit wird bei Abruf des Rooftops (=String) in der SolCast API die zu verwendende Rooftop-ID sowie der zu verwendende API-Key festgelegt.
          Der StringnameX ist ein Schlüsselwert des Attributs setupInverterStrings.

            Beispiel:
            attr <name> setupRoofTops Ostdach=p1 Südgarage=p2 S3=p3

          • setupStringAzimuth <Stringname1>=<dir> [<Stringname2>=<dir> <Stringname3>=<dir> ...]

            Ausrichtung <dir> der Solarmodule im String "StringnameX". Der Stringname ist ein Schlüsselwert des Attributs setupInverterStrings.
            Die Richtungsangabe <dir> kann als Azimut Kennung oder als Azimut Wert angegeben werden:

              Kennung Azimut
              N -180 Nordausrichtung
              NE -135 Nord-Ost Ausrichtung
              E -90 Ostausrichtung
              SE -45 Süd-Ost Ausrichtung
              S 0 Südausrichtung
              SW 45 Süd-West Ausrichtung
              W 90 Westausrichtung
              NW 135 Nord-West Ausrichtung

            Azimut Werte sind Ganzzahlen im Bereich von -180 bis 180. Obwohl die genannten Kennungen verwendet werden können, wird empfohlen den genauen Azimut Wert im Attribut anzugeben. Dadurch können beliebige Zwischenwerte wie 83, 48 etc. angeben werden.

              Beispiel:
              attr <name> setupStringAzimuth Ostdach=-85 Südgarage=S S3=132

          • setupStringDeclination <Stringname1>=<Winkel> [<Stringname2>=<Winkel> <Stringname3>=<Winkel> ...]

            Neigungswinkel der Solarmodule. Der Stringname ist ein Schlüsselwert des Attributs setupInverterStrings.
            Als Neigungswinkel können Ganzzahlen zwischen 0 und 90 angegeben werden. (0 = waagerecht, 90 = senkrecht).

              Beispiel:
              attr <name> setupStringDeclination Ostdach=40 Südgarage=60 S3=30

        • setupStringPeak <Stringname1>=<Peak> [<Stringname2>=<Peak> <Stringname3>=<Peak> ...]

          Die DC Peakleistung des Strings "StringnameX" in kWp. Der Stringname ist ein Schlüsselwert des Attributs setupInverterStrings.
          Bei Verwendung einer KI basierenden API (z.B. Model VictronKiAPI) sind die Peakleistungen aller vorhandenen Strings als Summe dem Stringnamen KI-based zuzuordnen.

            Beispiele:
            attr <name> setupStringPeak Ostdach=5.1 Südgarage=2.0 S3=7.2
            attr <name> setupStringPeak KI-based=14.3 (bei KI basierender API)

        • setupWeatherDevX

          Gibt das Gerät oder die API zur Lieferung der erforderlichen Wetterdaten (Wolkendecke, Niederschlag usw.) an.
          Das Attribut 'setupWeatherDev1' definiert den führenden Wetterdienst und ist zwingend erforderlich.

          Hinweis: Ist im Attribut 'setupRadiationAPI' ebenfalls eine OpenMeteo API gesetzt, werden die Einstellungen beider Attribute harmonisiert wobei die Einstellung von 'setupRadiationAPI' führend ist.

          OpenMeteoDWD-API
          Open-Meteo ist eine Open-Source-Wetter-API und bietet kostenlosen Zugang für nicht-kommerzielle Zwecke. Es ist kein API-Schlüssel erforderlich. Open-Meteo nutzt eine leistungsstarke Kombination aus globalen (11 km) und mesoskaligen (1 km) Wettermodellen von angesehenen nationalen Wetterdiensten. Diese API bietet Zugang zu den renommierten ICON-Wettermodellen des Deutschen Wetterdienstes (DWD), die 15-minütige Daten für kurzfristige Vorhersagen in Mitteleuropa und globale Vorhersagen mit einer Auflösung von 11 km liefern. Das ICON-Modell ist eine bevorzugte Wahl für allgemeine Wettervorhersage-APIs, wenn keine anderen hochauflösenden Wettermodelle verfügbar sind. Es werden die Modelle DWD Icon D2, DWD Icon EU und DWD Icon Global zu einer nahtlosen Vorhersage zusammengeführt. Auf der Webseite des Dienstes ist die umfangreiche und übersichtliche API Dokumentation verfügbar.

          OpenMeteoDWD_D2-API
          Wie OpenMeteoDWD-API. Es wird jedoch nur das Modell ICON D2 für Mitteleuropa (Deutschland, Schweiz, Österreich, Frankreich, Belgien, Niederlande, Dänemark, Tschechien, Slowenien) verwendet. Die Raumauflösung dieses Modells beträgt 0,02° (ca. 2 km) und eine zeitliche Auflösung von 15 Minuten.

          OpenMeteoDWDEnsemble-API
          Diese Open-Meteo API Variante bietet Zugang zum globalen Ensemble-Vorhersagesystem (EPS) des DWD.
          Es werden die Ensemble Modelle ICON-D2-EPS, ICON-EU-EPS und ICON-EPS nahtlos vereint.
          Ensemble-Wetterprognosen sind eine spezielle Art von Vorhersagemethode, die die Unsicherheiten bei der Wettervorhersage berücksichtigt. Sie tun dies, indem sie mehrere Simulationen oder Modelle mit leichten Unterschieden in den Startbedingungen oder Einstellungen ausführen. Jede Simulation, bekannt als Ensemblemitglied, stellt ein mögliches Ergebnis des Wetters dar. In der vorliegenden Implementierung werden 40 Ensemblemitglieder pro Wettermerkmal zusammengeführt und das wahrscheinlichste Ergbnis verwendet.

          OpenMeteoWorld-API
          Als Variante des Open-Meteo Dienstes liefert die OpenMeteoWorld-API die optimale Vorhersage für einen bestimmten Ort weltweit. Die OpenMeteoWorld-API vereint nahtlos Wettermodelle bekannter Organisationen wie NOAA (National Oceanic and Atmospheric Administration), DWD (Deutscher Wetterdienst), CMCC (Canadian) und ECMWF (Europäisches Zentrum für mittelfristige Wettervorhersage). Für jeden Ort weltweit werden die Modelle der Anbieter kombiniert, um die bestmögliche Vorhersage zu erstellen. Die Nutzung der Dienste und Wettermodelle erfolgt automatisch anhand der im API Aufruf enthaltenen Standortkoordinaten.

          DWD Gerät
          Alternativ zu Open-Meteo kann ein FHEM 'DWD_OpenData'-Gerät zur Lieferung der Wetterdaten dienen.
          Ist noch kein Gerät dieses Typs vorhanden, muß zunächst mindestens ein DWD_OpenData Gerät definiert werden (siehe DWD_OpenData Commandref).
          Sind mehr als ein setupWeatherDevX angegeben, wird der Durchschnitt aller Wetterstationen ermittelt sofern der jeweilige Wert geliefert wurde und numerisch ist.
          Anderenfalls werden immer die Daten von 'setupWeatherDev1' als führendes Wetterdevice genutzt.
          Im ausgewählten DWD_OpenData Gerät müssen mindestens diese Attribute gesetzt sein:

            forecastDays 1
            forecastProperties TTT,Neff,RR1c,ww,SunUp,SunRise,SunSet
            forecastResolution 1
            forecastStation <Stationscode der ausgewerteten DWD Station>

          Hinweis: Sind die Attribute latitude und longitude im global Device gesetzt, ergibt sich der Sonnenauf- und Sonnenuntergang aus diesen Angaben.

    Spotify

    [EN DE]
      Das Spotify Modul ermöglicht die Steuerung von Spotify (Connect).
      Um die Wiedergabe zu steuern, wird die Spotify WEB API verwendet. Dafür wird eine eigene Spotify API application benötigt.
      Während der Erstellung muss eine redirect_uri angegeben - standardmäßig wird vom Modul https://oskar.pw/ verwendet, da diese Seite nach der Anmeldung den Code in leserlicher Form ausgibt.
      Die Seite kann bedenkenlos verwendet werden, da der Code ohne client_secret nutzlos und nur wenige Minuten gültig ist.
      Wenn du diese verwenden willst, stelle sicher, diese bei der Erstellung anzugeben (wichtig: das Hinzufügen der URL muss mit add und save bestätigt werden), ansonsten kann jede beliebige andere Seite verwendet werden und der Code aus der URL extrahiert werden.

      Define

        define <name> Spotify <client_id> <client_secret> [ <redirect_url> ]

        Beispiel: define Spotify Spotify f88e5f5c2911152d914391592e717738 301b6d1a245e4fe01c2f8b4efd250756

      Sobald das Gerät angelegt wurde, muss die AUTHORIZATION_URL im Browser geöffnet werden und die Anmeldung mit Spotify erfolgen.
      Sollte der Fehler redirect_uri mismatch auftauchen, stelle sicher, dass https://oskar.pw/ als redirect_uri hinzugefügt wurde oder die verwendete URL exakt übereinstimmt.
      Sobald der Anmeldecode ermittelt wurde, führe folgenden Befehl aus: set <name> code <code> - der Status sollte nun auf connected wechseln und das Gerät ist einsatzbereit.

      set <required> [ <optional> ]

      Wird kein Zielgerät angegeben, wird das aktive (oder das Standard-Gerät, wenn alwaysStartOnDefaultDevice aktiviert ist) verwendet.
      An den Stellen, wo eine <device_id> verlangt wird, kann auch der Gerätename, sofern dieser keine Leerzeichen enthält, verwendet werden. Dort wo es <device_name> heißt, sind auch Leerzeichen im Namen zugelassen. Wenn kein aktives oder Standard-Gerät vorhanden ist, wird das erste verfügbare Gerät verwendet.
      Die Spotify URI kann in der (Desktop) App ermittelt werden, wenn man den teilen Knopf bei einem Track/Playlist/Album drückt.

      • findArtistByName
        sucht einen Künstler und liefert das Ergebnis in den Readings
      • findTrackByName
        sucht einen Track und liefert das Ergebnis in den Readings
      • pause
        pausiert die aktuelle Wiedergabe
      • playArtistByName <artist_name> [ <device_id> ]
        sucht einen Künstler und spielt dessen Tracks ab
      • playContextByURI <context_uri> [ <nr_of_start_track> ] [ <device_id / device_name> ]
        spielt einen Context (Playlist, Album oder Künstler) durch Angabe der URI ab
      • playPlaylistByName <playlist_name> [ <device_id> ]
        sucht eine Playlist und spielt diese ab
      • playRandomTrackFromPlaylistByURI <playlist_uri> [ <limit> ] [ <device_id / device_name> ]
        spielt einen zufälligen Track aus einer Playlist ab (berücksichtigt nur die ersten <limit> Tracks der Playlist)
      • playSavedTracks [ <nr_of_start_track> ] [ <device_id / device_name> ]
        spielt die gespeicherten Tracks ab (beginnend mit Track Nummer <nr_of_start_track>)
      • playTrackByName <track_name> [ <device_id> ]
        sucht den Song und spielt ihn ab
      • playTrackByURI <track_uri> [ <device_id / device_name> ]
        spielt einen Song durch Angabe der URI ab
      • repeat <track,context,off>
        setzt den Wiederholungsmodus: entweder one, all (Playlist, Album, Künstler) oder off
      • resume [ <device_id / device_name> ]
        fährt mit der Wiedergabe (auf einem Gerät) fort
      • seekToPosition <position>
        spult an die Position <position> (in Sekunden, erlaubte Formate: 01:20, 80, 00:20, 20)
      • shuffle <off,on>
        setzt den Shuffle-Modus: entweder on oder off
      • skipToNext
        weiter zum nächsten Track
      • skipToPrevious
        zurück zum vorherigen Track
      • togglePlayback
        toggelt die Wiedergabe (hält an, wenn sie aktiv ist, ansonsten fortsetzen)
      • transferPlayback [ <device_id> ]
        überträgt die aktuelle Wiedergabe auf ein anderes Gerät (wenn kein Gerät angegeben wird, wird das nächste inaktive verwendet)
      • update
        lädt den aktuellen Zustand neu
      • volume <volume> [ <device_id> ]
        setzt die Lautstärke
      • volumeDown [ <step> ] [ <device_id / device_name> ]
        verringert die Lautstärke um step (falls nicht gesetzt, um volumeStep)
      • volumeFade <volume> [ <duration> <step> ] [ <device_id> ]
        setzt die Lautstärke schrittweise
      • volumeUp [ <step> ] [ <device_id / device_name> ]
        erhöht die Lautstärke um step (falls nicht gesetzt, um volumeStep)

      Get

        N/A

      Attributes

      • alwaysStartOnDefaultDevice
        startet neue Wiedergabe immer auf dem Standard-Gerät
        default: 0
      • defaultPlaybackDeviceID
        das Standard-Gerät durch Angabe der Geräte-ID oder des Geräte-Namens
      • disable
        deaktiviert das Gerät
        default: 0
      • updateInterval
        Intervall in Sekunden, in dem der Status aktualisiert wird, wenn keine Musik läuft
        default: 300
      • updateIntervalWhilePlaying
        Intervall in Sekunden, in dem der Status aktualisiert wird, wenn Musik läuft
        default: 10
      • volumeStep
        der Wert, um den die Lautstärke bei volumeUp/volumeDown standardmäßig verändert wird (in Prozent)
        default: 5

    TA_CMI_JSON

    [EN DE]
    Weitere Informationen zu diesem Modul im FHEM-Wiki. Define
      define <name> TA_CMI_JSON <IP> <CAN-Node-Id> <Query-Params>

      Liest Werte vom CMI mit der angegebenen IP für das CAN-Gerät mit der angegebenen Node-Id.
      Query-Param definiert, welche Werte ausgelesen werden sollen. Erlaubt sind I,O,D.
      Beispiel:
        defmod cmi TA_CMI_JSON 192.168.4.250 1 <I,O,D>

      Daneben muss auch noch das mapping angegeben werden, welche Werte in welches Reading geschrieben werden sollen.
      Nur gemappte Werte werden in Readings geschrieben. (siehe Attributes)


    Set
    • fixwertAnalog
      Setzt einen Fixwert auf einen analogen Wert. Beispiel:
        set cmiNode fixwertAnalog <index> <value>
        set cmiNode fixwertAnalog 3 64.0
        setzt Fixwert 3 auf 64.0
    • fixwertDigital
      Setzt einen Fixwert auf einen digitalen Wert. Funktioniert auch für Impulse. Beispiel:
        set cmiNode fixwertDigital <index> <value>
        set cmiNode fixwertDigital 2 1
        setzt Fixwert 2 auf Ein/Ja
    • fixwertImpuls
      Sendet einen Impuls an den Fixwert. Beispiel:
        set cmiNode fixwertImpuls <index> <value>
        set cmiNode fixwertImpuls 3 1
        sendet einen Ein-Impuls nach Fixwert 3.
    Get
    • update
      Hiermit kann sofort eine Abfrage der API ausgeführt werden. Das Limit von einer Anfrage pro Minute besteht trotzdem.
    • readOutputStates
      Liest Ausgangs-Stati, zB Auto-Ein, Hand-Aus. Kann mittels outputStatesInterval automatisch ausgeführt werden. Das Zeitlimit von 60 Sekunden trifft hier nicht zu.


    Attributes

    • readingNamesDL-Bus {index:reading-name}
      Hiermit werden erhaltene Werte vom DL-Bus einem Reading zugewiesen. zB 1:Durchfluss_Solar 2:T.Solar_RL
    • readingNamesInput {index:reading-name}
      Hiermit werden erhaltene Werte der Eingänge einem Reading zugewiesen. zB 1:Durchfluss_Solar 2:T.Solar_RL
    • readingNamesDL-Bus {index:reading-name}
      Hiermit werden erhaltene Werte der Ausgänge einem Reading zugewiesen. zB 1:Durchfluss_Solar 2:T.Solar_RL
    • readingNamesLoggingAnalog {index:reading-name}
      Hiermit werden erhaltene Werte vom Analog Logging einem Reading zugewiesen. zB 1:Durchfluss_Solar 2:T.Solar_RL
    • readingNamesLoggingDigital {index:reading-name}
      Hiermit werden erhaltene Werte vom Digital Logging einem Reading zugewiesen. zB 1:Durchfluss_Solar 2:T.Solar_RL
    • includeUnitReadings [0:1]
      Definiert, ob zu jedem Reading ein zusätzliches Reading _Name geschrieben werden soll, welches die Einheit enthält.
    • includePrettyReadings [0:1]
      Definiert, ob zu jedem Reading zusätzlich ein Reading, welches Wert und Einheit enthält, geschrieben werden soll.
    • interval
      Abfrage-Intervall in Sekunden. Muss mindestens 60 sein.
    • outputStatesInterval
      Abfrage-Intervall für Ausgangs-Stati in Sekunden.
    • prettyOutputStates [0:1]
      Definiert, ob zu einem Ausgangs-Status ein zusätzliches Reading _State_Pretty geschrieben werden soll (liefert zB Auto-On, Manual-Off)
    • setList
      Dienst zum Anlegen direkter Set Befehle für fixwertAnalog, Digital, und Impuls. zB Licht_ein:noArg fixwertImpuls 3 1
      Wird der zweite Parameter (der Wert) weggelassen, kann dieser direkt aus dem Textfeld übernommen werden. zB Wasser_Temperatur fixwertAnalog 7
      könnte dann mit set cmiNode Wasser_Temperatur 55.0 verwendet werden.
    • username
      Username zur Abfrage der JSON-API. Muss die Berechtigungsstufe admin oder user haben.
    • password
      Passwort zur Abfrage der JSON-API.


    Readings

    Readings werden entsprechend der Definition in den Attributen angelegt.

    TBot_List

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

    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

    [EN DE]
      Eine deutsche Version der Dokumentation ist derzeit nicht vorhanden. Die englische Version ist hier zu finden:
      THINKINGCLEANER

    THRESHOLD

    [EN DE]
      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

    [EN DE]
      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 älterer 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 userReadings insideSetTemp:sHC1.* {THZ_Val("sHC1",21)}, insideTemp:sHC1.* {THZ_Val("sHC1",27)}, AussenTemp:sGlobal.* {THZ_Val("sGlobal",1)}
          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

    [EN DE]

      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

    [EN DE]
      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.

    Talk2Fhem

    [EN DE]
      Das Modul Talk2Fhem stellt eine Verbindung zwischen natürlicher Sprache und FHEM Befehlen her. Die Konfiguration erfolgt dabei komfortabel über das FHEM Webfrontend.
      Für eine genauere Beschreibung und weiterführende Beispiele siehe Talk2Fhem Wiki.

      Define
        define <name> Talk2Fhem

        Beispiel: define talk Talk2Fhem

        Die eigentliche Konfigration sollte erst auf der FHEM Seite erfolgen.

        Die einzelnen Sprachphrasen werden Zeile für Zeile konfiguriert. Hierbei fängt eine Konfiguration immer mit dem Regulärem Ausdruck an, gefolgt von mindestens einem Leerzeichen oder Tabulator gefolgt von einem Gleichheitszeichen.
        Der Kommandoteil fängt nach dem Gleichheitszeichen mit einem Leerzeichen, Tabulator oder Zeilenumbruch an.

        <regexp> = <command>

        Kurzreferenz:
        <RegExpPart> [&& [?!]<RegExpPart_n>] = [ <FHEM command> | { <Perl code> } | (<option> => '<wert>' , ... ) ]

        Beispiel: hallo welt = {Log 1, Hallo Welt}

        Alles nach einem Hashtag '#' wird bis zum Zeilenende ignoriert.

        <regexp>
          Regulärer Ausdruck der den Text beschreibt, bei dem das Kommando ausgeführt werden soll


        <command>
          Der ausführende Teil. Folgende Formate sind Zulässig:
        • FHEM Kommando
        • {Perlcode}
        • (<option> => '<wert>' , ... )

          • <option>
          • cmd
            FHEM Kommando wie oben
          • offset
            Ganzzahliger Wert in Sekunden der auf den Zeitpunkt addiert wird
          • answer
            Perl Code dessen Rückgabe in das Reading answer geschrieben wird

        Klammerüberführung:
          Im Regulärem Ausdruck gesetzte Klammern können in den Kommandoteil mit $1, $2, [...], $n überführt und modifiziert werden. Folgende Modifizierungsmöglichkeiten stehen hierbei zur Verfügung.
        • $n
          Ohne Änderung direkt das Wort überführen.
        • $n{<typ> => <wert>}
          Die Typen sind:
          true, false, integer, float, numeral, /<regexp>/, word, empty, else
          true entspricht: ja|1|true|wahr|ein|eins.*|auf.*|..?ffnen|an.*|rauf.*|hoch.*|laut.*|hell.*
          false entspricht: nein|0|false|falsch|aus.*|null|zu.*|schlie..?en|runter.*|ab.*|leise.*|dunk.*
          integer Wort enthält eine Zahl float Wort enthält eine Gleitkommazahl numeral Word ist ein Zahlenwort oder Zahl
          /<regexp>/ Wort entspricht der <regexp> word Wort enthält gleich oder mehr als 4 Zeichen empty Wort enthält eine Leere Zeichenkette else Falls keines der Fälle zutrifft Wird ein <typ> identifiziert wird für $n der <wert> eingesetzt
          Beispiel: licht (\S*) = set light $1{true => on,false => off}
        • $n[<list>]
          Kommaseparierte Liste: [wert1,wert2,...,[else,value], [empty,value]] oder [@modwordlist]
          Ist $n eine Zahl, wird das Wort das an dieser Position in <list> steht gewählt.

          Ist $n ein Text wird in der zugehörigen Klammer im <regexp>-Teil nach einer Liste gesucht. (a|b|c) oder (@keywordlist) In dieser Liste, wird nach $n gesucht und bei erfolg dessen Position in <list> für $n gewählt.
          Beispiel: licht .* (küche|flur|bad) (\S*) an = set $1[dev_a,dev_b,dev_c] $2{true => on,false => off}
        • $n@
          Das Wort wird so übernommen wie es in der Liste im <regexp>-Teil steht.

        Umgebungsvariablen:
          Es stehen eine Reihe von Variablen zur Verfügung auf die im <command>-Teil zugegriffen werden können.
        • $& Enthält alle gefundenen Wörter
        • !$& Enthält den Rest der nicht von der RegExp eingeschlossen wurde
        • $DATE Enthält den Zeit und Datumstext des Sprachbefehls
        • $AGAIN Enthält das Wort wieder wenn es sich um ein wieder Kommando handelt
        • $TIME Enthält die erkannte Zeit.
        • $NAME Enthält den Devicenamen.
        • $IF Enthält den Text der erkannten T2F_if Konfiguration.
        • $0 Enthält den Text der erkannten T2F_origin RegExp.

      Set
        set <name> [!]<text>

        Über das set Kommando wird der zu interpretierende Text an das Modul gesendet. Schaue unter commandref#set für weiterführende Hilfe.
      • cleartimers
      • Entfernt die wartenden zeitbezogenen Kommandos
      • cleartriggers
      • Entfernt die wartenden ereignisbezogenen Kommandos

      Get
      get <name> <option>

      Über get lassen sich Informationen aus dem Modul auslesen. Siehe commandref#get für weitere Informationen zu "get".

      <option>
      • @keywordlist @modwordlist
        Vergleich der zwei Listen Wort für Wort
      • keylistno
        Eine Auflistung der Konfigurierten "Keyword"-Listen. Zur einfacheren Positionierung der "Modword"-Listen
      • log
        Zeigt die Logeinträge des letzten Kommandos
      • modificationtypes
        Zeigt die RegExp der Modifikationstypen.
      • standardfilter
        Lädt den Standardfilter und schreibt ihn in das Attribut T2F_filter wenn er leer ist
      • version
        Die Modulversion

      Readings
      • set
        Enthält den zuletzt über "set" gesendeten Text.
      • cmds
        Enthält das zuletzt ausgeführte Kommando. Wird auch bei disable=1 gesetzt.
      • answer
        Enthält den Antworttext des letzten Befehls.
      • err
        Enthält die letzte Fehlermeldung.
        "No match" Übereinstimmung mit keiner RegExp.
        "Error on Command" siehe FHEM log.
      • response
        Enthällt die Rückgabe des FHEM Befhels.
      • origin
        Enthält die gefundene Zeichenkette der in dem Attribut T2F_origin definierten RegExp.
      • status
        Enthält den Status der Ausgabe. response, disabled, err, answers, done
      • ifs
        Enthält die Bedingungen bei denen das Kommando ausgeführt werden wird.
      • notifies
        Enthält eine Auflistung der Devices die für die aktuell wartenden bedingten Kommandos relevant sind. Auf diesen Devices liegt ein internes notify.

      Attribute
        attr <name> <attribute> <value>

        Siehe commandref#attr für weitere Informationen zu den Attributen.

        Attribute:
        • T2F_keywordlist <name> = <list>
          Eine Komma seperierte Liste von Schlüsselwörtern wie z.B.: Räumen, Namen, Farben usw...
          Mit anderen Worten, mit natürlichem Namen benannte Sachen.
        • T2F_modwordlist <name> = <list>
          Eine Komma seperierte Liste von Ersetzungswörten die für die Schlüsselwörter eingesetzt werden. z.B.: Gerätenamen in FHEM
        • T2F_if
          Eine Auflistung von ereignisgesteuerten Konfigurationen. Die Syntax ist die der Definition. Kommandoteil ist eine IF Bedingung.
          z.B.: wenn .*?tür = [door] eq "open"
        • T2F_filter
          Kommaseparierte Liste von RegExp die generell entfernt werden.
          Standard: \bbitte\b,\bauch\b,\bkann\b,\bsoll\b
        • T2F_origin
          Eine RegExp die generell entfernt wird und deren Ausgabe über $0 angesprochen werden kann.
          Kann für eine Benutzerzuordnung verwendet werden.
        • T2F_languageDE|EN
          Die verwendete Sprache kann über das globale Attribut "language" gesetzt werden. Oder über dieses Attribut überschrieben werden.
        • T2F_disableumlautescaping <0|1>
          Deaktiviert das Konvertieren der Umlaute in "\S\S?"
        • disable <0|1>
          Kann zu Testzwecken verwendet werden. Steht das Attribut auf 1, wird das FHEM-Kommando nicht ausgeführt aber in das Reading cmds geschrieben.

    TechemHKV

    [EN DE]
      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

    [EN DE]
      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

    Tesla Powerwall 2 AC

    [EN DE]

    Text2Speech


      Define

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

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

      • Local Device
          Die Ausgabe wird an jedes angeschlossene Audiogerät gesendet. Zum Beispiel an einen lokalen Lautsprecher oder an entfernte Geräte via Netzwerk, WiFI oder Bluetooth. Die Wiedergabe kann über MPlayer oder jede andere Anwendung erfolgen.

          Mplayer-Installation unter Debian/Ubuntu/Raspbian:
          apt-get install mplayer
          Das angegebene Alsa-Device ist in der /etc/asound.conf zu konfigurieren.

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

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

      • 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, dass die Text2Speech Instanz (Definition als Local-Device) auf dem Zieldevice identisch benannt ist.
          • Host: Angabe der IP-Adresse
          • PortNr: Angabe des Telnet-Ports von FHEM; default: 7072
          • SSL: Angabe, ob der Zugriff per SSL erfolgen soll oder nicht; default: kein SSL
          • PortPassword: Angabe des in der Ziel-FHEM-Installation angegebenen Telnet-Passworts

          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.
      • Server Device
          Im Falle der Verwendung als Server wird nur die MP3-Datei erstellt und als Reading lastFilename dargestellt. Es ergibt keinen Sinn hier das Attribut TTS_speakAsFastAsPossible zu verwenden. Die Verwendung des Attributs TTS_useMP3Wrap wird dringend empfohlen. Ansonsten wird hier nur der letzte Teiltext als mp3 Datei im Reading dargestellt.

        Beispiel:
        define MyTTS Text2Speech none

    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 Doppelpunkte beinhalten.
      Für die Sprachengine Amazon Polly kann auch SSML verwendet werden. Siehe Beispiele.
    • volume:
      Setzen der Ausgabe Lautstärke.
      Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!

    Get

      N/A

    Attribute

    • TTS_Delimiter
      Optional: Wird ein Delimiter angegeben, so wird der Sprachbaustein an dieser Stelle geteilt. Als Delimiter ist nur ein einzelnes Zeichen zulässig. Hintergrund ist die Tatsache, dass die einige Sprachengines nur eine bestimmte Anzahl an Zeichen (z. B. Google 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!
      Notation
      + -> erzwinge das Trennen, auch wenn Textbaustein < x Zeichen
      - -> trenne, nur wenn Textbaustein > x Zeichen af -> add first -> füge den Delimiter am Satzanfang wieder hinzu
      al -> add last -> füge den Delimiter am Satzende wieder hinzu
      an -> add nothing -> Delimiter nicht wieder hinzufügen
      ~ -> der Delimiter
      Beispiel
      attr myTTS TTS_Delimiter -al.
    • TTS_Ressource
      Optional: Auswahl der Sprachengine
      Achtung: Nur bei einem lokal definierter Text2Speech Instanz möglich!
      • Google
        Google Sprachengine. Voraussetzung: Aktive Internetverbindung
        Aufgrund der Qualität ist der Einsatz der Engine empfohlen und daher der Standard.
      • VoiceRSS
        VoiceRSS Sprachengine. Voraussetzung: Aktive Internetverbindung
        Die Nutzung ist frei bis zu 350 Anfragen pro Tag. Wenn mehr benötigt werden, ist ein Bezahlmodell wählbar. Aufgrund der Qualität ist der Einsatz dieser Engine ebenfalls empfohlen. Wird diese Engine benutzt, ist ein APIKey notwendig (siehe TTS_APIKey)
      • ESpeak
        ESpeak Sprachengine. Voraussetzung: Installation von Espeak und lame
        eSpeak ist ein Open-Source-Software-Sprachsynthesizer für Englisch und andere Sprachen. Die Qualitä ist schlechter als die der Google Engine
      • SVOX-pico
        SVOX-Pico TTS-Engine (aus dem AOSP). Voraussetzung: Installation von SVOX-Pico and lame
        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
      • Amazon-Polly
        Amazon Polly Sprachengine. Voraussetzung: Aktive Internetverbindung und Perl Package Paws
        Amazon-Dienst, der Text in lebensechte Sprache umwandelt. Ein AWS Konto und ein Polly AWS User müssen verfügbar sein
        cpan paws
        Die Zugangsdaten zum eigenen AWS Konto müssen unter ~/.aws/credentials liegen.
        [default] aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxx aws_access_key_id = xxxxxxxxxxxxxxx
      • maryTTS
        maryTTS oder Mimic 3 Sprachsynthesizer, der betr. Server sowie lame muss separat installiert werden. Beides sind open source Lösungen für English und andere Sprachen. Über das Attribut TTS_User können ergänzende Angaben zu Server, Port und verwendeten Stimme etc. gemacht werden.
    • TTS_Language
      Auswahl verschiedener Standardsprachen.
    • TTS_Language_Custom
      Möchte man eine Sprache und Stimme abweichend der Standardsprachen verwenden, so kann man diese hier eintragen.
      Die Definition ist abhängig der verwendeten Sprachengine. Dieses Attribut überschreibt ein ev. vorhandenes TTS_Langugae Attribut.
      Siehe in die jeweilige API Referenz
    • 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
      Derzeit nur für maryTTS (bzw. Mimic 3) genutzt. Falls eine Sprachengine zusätzlich zum APIKey einen Usernamen im Request verlangt.

      (Vollständiges) Beispiel für maryTTS (die angegebenen Werte entsprechen den defaults):

      attr t2s TTS_User host=127.0.0.1 port=59125 lang=de_DE voice=de_DE/thorsten_low

    • TTS_CacheFileDir
      Optional: Die per Google geladenen Sprachbausteine werden in diesem Verzeichnis zur Wiederverwendung abgelegt. Es findet zurzeit keine automatisierte Löschung statt.
      Default: cache/
      Achtung: Nur bei einer lokal definierten Text2Speech-Instanz möglich!
    • TTS_UseMP3Wrap
      Optional: Für eine flüssige Sprachausgabe ist es zu empfehlen, die einzelnen vorher 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 einer lokal definierten Text2Speech-Instanz möglich!
    • TTS_MplayerCall
      Optional: Angabe des Systemaufrufs für einen alternativen Player. Wird der Aufruf gesetzt,
      können folgende Templates genutzt werden:
      • {device}
      • {volume}
      • {volumeadjust}
      • {file}
      • {options}
      {options} werden als Text in Klammern bei der Ausführung von set gesetzt, um beispielsweise spezielle Parameter für jeden Aufruf separat zu setzen
      Beispiel: set myTTS tts [192.168.0.1:7000] Das ist mein Text

      Beispiel der Definition:
      attr myTTS TTS_MplayerCall sudo /usr/bin/mplayer
      attr myTTS TTS_MplayerCall AUDIODEV={device} play -q -v {volume} {file}
      attr myTTS TTS_MplayerCall player {file} {options}
    • 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 Template-Definition. Getrennt durch Leerzeichen. Die Template-Definitionen 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
      Hinweis: Das Logging ist wichtig um alte, lang nicht genutzte Cachedateien automatisiert zu löschen. Wird die Option hier aktiviert, muss sich der Nutzer selbst darum küümmern.
    • TTS_speakAsFastAsPossible
      Es wird versucht, so schnell als möglich eine Sprachausgabe zu erzielen. Bei Sprachbausteinen die nicht bereits lokal vorliegen, ist eine kurze Pause wahrnehmbar. Dann wird der benötigte Sprachbaustein nachgeladen. Liegen alle Sprachbausteine im Cache vor, so hat dieses Attribut keine Auswirkung.
      Attribut nur verfügbar bei einer lokalen oder Server Instanz
    • TTS_OutputFile
      Angabe eines fixen Dateinamens als mp3 Output. Das Attribut ist nur relevant in Verbindung mit TTS_UseMP3Wrap.
      Wenn ein Dateiname angegeben wird, so wird zusätzlich TTS_CacheFileDir beachtet. Bei einer absoluten Pfadangabe muss der Dateipfad durch FHEM schreibbar sein.
      attr myTTS TTS_OutputFile output.mp3
      attr myTTS TTS_OutputFile /media/miniDLNA/output.mp3
    • TTS_RemotePlayerCall
      Die Text2Speech Geräte stellen eine URL bereit, die auf die letzte erzeugte mp3 Datei zeigt:
      <protocol>://<fhem server name or ip>:<fhem port>/fhem/Text2Speech/<device name>/last.mp3
      Wenn dieses Attribut den Aufruf eines Remoteplayers enthält, wird er nach dem Erzeugen der letzten mp3 Datei ausgeführt.
      Beispiel zum Abspielen einer Datei auf einem Smartphone oder Tablet mit Fully Kiosk Browser App.
      attr <device name> TTS_RemotePlayerCall GetFileFromURL('<protocol>://<remote player name or ip>:2323/?cmd=playSound&url=<protocol>://<fhem server name or ip>:<fhem port>/fhem/Text2Speech/<device name>/last.mp3&loop=false&password=<password>')
    • readingFnAttributes

    • disable
      Wird das Attribut aktiviert, wird die Audioausgabe deaktiviert.
      Mögliche Werte: 0 => nicht deaktiviert , 1 => deaktiviert
      Standardwert ist 0 (nicht deaktiviert)

    • verbose
      4: Alle Zwischenschritte der Verarbeitung werden ausgegeben
      5: Zusätzlich werden auch die Meldungen von Mplayer und Mp3Wrap ausgegeben

    Beispiele

      define TTS_EG_WZ Text2Speech hw=/dev/snd/controlC3
      attr TTS_EG_WZ TTS_Language Deutsch
      attr TTS_EG_WZ TTS_MplayerCall /usr/bin/mplayer
      attr TTS_EG_WZ TTS_Ressource Amazon-Polly
      attr TTS_EG_WZ TTS_UseMP3Wrap 1

      set MyTTS tts <speak>Mary had a little lamb.</speak>
      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:
      Beispiel MaryTTS und SSML:
      define T2S Text2Speech default attr T2S TTS_MplayerCall /usr/bin/mplayer attr T2S TTS_Ressource maryTTS attr T2S TTS_User host=192.168.100.1 port=59125 lang=de_DE voice=de_DE/thorsten_low ssml=1 set T2S tts '<voice name="de_DE/m-ailabs_low#rebecca_braunert_plunkett">Das ist ein Test in deutsch </voice><voice name="en_US/vctk_low#p236">and this is an test in english.</voice>'

    Timer Modul

    [EN DE]
      Das Timer Modul ist eine programmierbare Schaltuhr mit maximal 99 Aktionen.

      Im Frontend können Sie neue Zeitpunkte und Aktionen definieren. Die kleinstmögliche Definition einer Aktion ist ein 10 Sekunden Intervall.
      Mittels der Dropdown Menüs können Sie die Einstellungen für den Zeitschaltpunkt vornehmen. Erst nach dem drücken auf den Speichern Knopf wird die Einstellung übernommen.

      In der DropDown-Liste stehen jeweils die Zahlenwerte für Jahr / Monat / Tag / Stunde / Minute / Sekunde zur Auswahl.
      Zusätzlich können Sie in der Spalte Stunde und Minute die Auswahl SA und SU nutzen. Diese Kürzel stehen für den Zeitpunkt Sonnenaufgang und Sonnenuntergang.
      Wenn sie Beispielsweise bei Minute SU auswählen, so haben Sie die Minuten des Sonnenuntergang als Wert gesetzt. Sobald Sie bei Stunde und Minute den Wert auf SU stellen, so nutzt der Timer den errechnenten Zeitpunkt Sonnenuntergang an Ihrem Standort. (Für diese Berechnung sind die FHEM globalen Attribute latitude und longitude notwendig!) Sobald bei einem Timer Sonnenaufgang oder Sonnenuntergang ausgewählt ist, wird eine zusätzliche Spalte "Offset" angezeigt. Dort kann ein Offset in Minuten im Bereich von -1440 bis 1440 eingetragen werden.

      Programmierbare Aktionen sind derzeit:
      • on | off - Die Zustände müssen von dem zu schaltenden Device unterstützt werden
      • DEF - für einen PERL-Code oder ein FHEM Kommando *

          Beispiele für DEF:
        • { Log 1, "Timer: schaltet jetzt" } (PERL-Code)
        • update (FHEM-Kommando)
        • trigger Timer state:ins Log geschrieben (FHEM-Kommando)
        • set TYPE=IT:FILTER=room=Stube.*:FILTER=state=on off (FHEM-Kommando)

      * Hierfür hinterlegen Sie den auszuführenden PERL-Code in das jeweilige Attribut. Bsp.: Timer_03_set

      Eine Intervallschaltung des Timer ist nur möglich in folgenden Varianten:
      • minütlich, Sekunde definieren und alle anderen Werte (Minute, Stunde, Tag, Monat, Jahr) auf alle setzen
      • stündlich, Sekunde + Minute definieren und alle anderen Werte (Stunde, Tag, Monat, Jahr) auf alle setzen
      • täglich, Sekunde + Minute + Stunde definieren und alle anderen Werte (Tag, Monat, Jahr) auf alle setzen
      • monatlich, Sekunde + Minute + Stunde + Tag definieren und alle anderen Werte (Monat, Jahr) auf alle setzen
      • jährlich, Sekunde + Minute + Stunde + Tag + Monat definieren und den Wert (Jahr) auf alle setzen
      • Sonnenaufgang, Sekunde definieren & Minute + Stunde definieren mit SA und alle anderen Werte (Tag, Monat, Jahr) auf alle setzen
      • Sonnenuntergang, Sekunde definieren & Minute + Stunde definieren mit SU und alle anderen Werte (Tag, Monat, Jahr) auf alle setzen

      Beliebige Intervallschaltungen können definiert werden, in dem im zugehörigen Timer-Attribut z.B. folgender Perl-Code eingefügt wird:
      {if ($min % 5 == 0) {fhem("set FS10_6_11 toggle");}}
      Dieser Timer würde dann aller 5 Minuten ausgeführt, wenn der Timer wie beschrieben auf minütliches Ausführen konfiguriert ist.

      Folgende Variablen für Zeit- und Datumsangaben stehen zur Verfügung:
      $sec, $min, $hour, $mday, $month, $year, $wday, $yday, $isdst, $hms, $we, $today
      Damit ist es möglich, einen Timer beispielsweise nur jeden Sonntag um 15:30:00 Uhr etwas ausführen zu lassen.

      Define
        define <NAME> Timer

        Beispiel:
          define Schaltuhr Timer

      Set
      • addTimer: Fügt einen neuen Timer hinzu.
      • deleteTimer: Löscht den ausgewählten Timer.
      • offTimer: Einzelner Timer wird abgeschalten.
      • offTimerAll: Alle Timer werden abgeschalten.
      • onTimer: Einzelner Timer wird aktiv geschalten.
      • onTimerAll: Alle Timer werden aktiv geschalten.
      • saveTimers: Speichert die eingestellten Timer in der Datei Timers.txt im Verzeichnis ./FHEM/lib.
      • sortTimer: Sortiert die gespeicherten Timer alphabetisch.


      Get
      • loadTimers: Läd eine gespeicherte Konfiguration aus der Datei Timers.txt aus dem Verzeichnis ./FHEM/lib.


      Attribute
      • disable

      • stateFormat
        Es dient zur Formatierung des Wertes state
        Beispiel: { ReadingsTimestamp($name, "state", 0) ."&nbsp;- ". ReadingsVal($name, "state", "none");}
                       - wird zur formatieren Ausgabe: 2019-09-19 17:51:44 - Timer_04 saved

      • Table_Border
        Blendet den Tabellenrahmen ein. (on | off, standard off)

      • Table_Border_Cell
        Blendet den Cellrahmen ein. (on | off, standard off)

      • Table_Header_with_time
        Blendet den Sonnenauf und Sonnenuntergang mit der lokalen Zeit über der Tabelle ein oder aus. (on | off, standard off)

      • Table_Size_TextBox
        Korrekturwert um die Länge der Textbox für die Gerätenamen / Bezeichung zu verändern. (standard 90)

      • Table_Style
        Schaltet den definierten Tabellen-Style ein. (on | off, standard off)

      • Table_View_in_room
        Schaltet das Tabellen UI in der Raumansicht an oder aus. (on | off, standard on)
        Im Raum Unsorted ist das Tabellen UI immer abgeschalten!

      • Timer_preselection
        Setzt die Eingabewerte bei einem neuen Timer auf die aktuelle Zeit. (on | off, standard off)

      • Timer_xx_set
        Speicherort für das FHEM-Kommando oder den PERL-Code des Timers (xx hat den Zahlenwert von 01-99). OHNE dieses Attribut, welches nur erscheint wenn die Aktion DEF eingestellt ist, verarbeitet das Modul kein Kommando oder PERL-Code vom Benutzer. *

      • Offset_Horizon
        Für die Berechnung der Zeiten von Sonnenaufgang und Sonnenuntergang werden verschiedene Höhenwinkel verwendet.
        (HORIZON = -0.833°, REAL = 0°, CIVIL = -6°, NAUTIC = -12°, ASTRONOMIC = -18°, Standard REAL)
        Die meisten Seiten im Internet bevorzugen einen Offset von -0.833°.

      • Show_DeviceInfo
        Blendet die Zusatzinformation ein. (alias | comment, standard off)


      Generierte Readings
      • Timer_xx
        Speicherwerte des einzelnen Timers

      • internalTimer
        Zustand des internen Timers (stop oder Intervall bis zum nächsten Aufruf)


      Hinweise:
      • Einträge im Systemlogfile wie: 2019.09.20 22:15:01 3: Timer: time difference too large! interval=59, Sekunde=01 sagen aus, das der Timer die Zeit neu berechnet hat.
      • Die Funktion Offset ist nur bei Sonnenaufgang (SA) und Sonnenuntergang (SU) aktivierbar.
      • Um eine Gruppenschaltung umzusetzen, so kann man das Timer Modul mit dem structure Modul kombinieren.

    TrashCal

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

    Twilight

    [EN DE]
      Allgemeine Hinweise
      Dieses Modul nutzte früher Daten von der Yahoo Wetter API. Diese ist leider nicht mehr verfügbar, daher ist die heutige Funktionalität deutlich eingeschränkt. Dies kann zu einem gewissen Grad kompensiert werden, indem man im define oder das Attribut useExtWeather ein externes Wetter-Device setzt, um Bedeckungsgrade mit Wolken zu berücksichtigen. Falls Sie nur Astronomische Daten benötigen, wäre Astro hierfür eine genauere Alternative.


      Define
        define <name> Twilight [<latitude> <longitude>] [<indoor_horizon> [<weatherDevice[:Reading]>]]

        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. Sie sind optional, wenn nicht vorhanden, werden die Angaben in global berücksichtigt, bzw. ohne weitere Angaben die Daten von Frankfurt/Main. Möchte man andere als die in global gesetzten Werte setzen, müssen zwingend beide Werte angegeben werden.

        indoor_horizon
        Der Parameter indoor_horizon bestimmt einen virtuellen Horizont, der für die Berechnung der Dämmerung innerhalb von Räumen genutzt werden kann. Minimalwert ist -6 (ergibt gleichen Wert wie Zivile Dämmerung). Bei 0 fallen indoor- und realer Dämmerungswert zusammen. Werte größer 0 ergeben frühere Werte für den Abend bzw. spätere für den Morgen.

        weatherDevice:Reading
        Der Parameter weatherDevice:Reading kann genutzt werden, um über ein anderes Device an den Bedeckungsgrad für die Berechnung von twilight_weather bereitzustellen.
        Das Reading sollte sich im Intervall zwischen 0 und 100 bewegen, z.B. das Reading c_clouds in einem openweathermap device, bei dem 0 heiteren und 100 bedeckten Himmel bedeuten.
        Beispiel: MyWeather:cloudCover

        Hinweis 1: Eventuelle Angaben im useExtWeather-Attribut überschreiben die Angaben im define.
        Hinweis 2: Bei bekannten Wetter-Device-Typen (im Moment ausschließlich: Weather oder PROPLANTA) ist die Angabe des Readings optional.

        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äude 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

        state entspricht der aktuellen virtuellen "Tages-Phase" (0 = nach Mitternacht, 1 = nach sr_astro, ...12 = nach ss_astro)
        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 4.5 MeinWetter:cloudCover
            

      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"Zeit" des wetterabhängigen Sonnenaufgangs
        ss_weather"Zeit" des wetterabhängigen Sonnenuntergangs
        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> [<usercode>] 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 einem openweathermap device, bei dem 0 heiteren und 100 bedeckten Himmel bedeuten. Wettereffekte wie Starkregen oder Gewitter k¨nnen derzeit für die Berechnung von twilight_weather nicht mehr herangezogen werden.
        Durch Angabe von usercode (Achtung: experimentelles feature! Kann auch schiefgehen...) kann die Berechnung der sr_weather und ss_weather-Zeiten verbessert werden, indem die zum jeweils zugehörigen indoor-Zeitpunkt gehörenden Vorhersage-Werte zurückgegeben werden. Das Rückgabe-Format der Funktion muss sein:
              Wert_A:Wert_B:Wert_C
            
        wobei Wert_A der aktuelle cloudCover-Wert ist, Wert_B der zum Zeitpunt für sr_indoor und Wert_C für ss_indoor (alle Werte nummerisch im Bereich 0-100).
        Beispiel:
              attr myTwilight useExtWeather MeinWetter:cloudCover { myCloudCoverAnalysis("MeinWetter") }
            
        mit folgendem (wenig sinnvollen) Code für myUtils:
            sub myCloudCoverAnalysis {
                my $weatherName = shift;
                my $ret = ReadingsVal($weatherName,"cloudCover",50);
                $ret .= ":".ReadingsVal($weatherName,"cloudCover_morning",55);
                $ret .= ":".ReadingsVal($weatherName,"cloudCover_evening",65);
                return $ret; 
            }
            

      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


        Optional ist es möglich, auch die morgigen sr_weather bzw. ss_weather abzufragen, dafür werden die "fiktiven" Reading-Namen "sr_tomorrow" bzw. "ss_tomorrow" verwendet. Als Bedeckungsgrad wird dabei ein fiktiver Wert von "50" angenommen, dieser kann mit (optionalem) 5. Parameter auch abweichend (Bereich: 0-100) angegeben werden. Beispiel:
        { twilight('tw_test1','sr_tomorrow','08:00','09:10',100) }

      Anwendungsbeispiel:
          define BlindDown at *{twilight("myTwilight","sr_indoor","7:30","9:00")} set xxxx position 100
          # xxxx ist ein definiertes Rollo
      

      Siehe dazu auch das computeAfterInit Attribut zum at-Modul.

    UBUS_CALL

    UBUS_CLIENT

    UNIRoll

    [EN DE]
    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

    [EN DE]
      Das Modul extrahiert Unwetterwarnungen von www.unwetterzentrale.de.
      Hierfür wird die selbe Schnittstelle verwendet die auch die Android App Alerts Pro nutzt. Es werden maximal 10 Standortbezogene Unwetterwarnungen zur Verfügung gestellt. Weiterhin verfügt das Modul über HTML-Templates welche als weblink verwendet werden können.
      Es nutzt die Perl-Module HTTP::Request, LWP::UserAgent, JSON, Encode::Guess und HTML::Parse.

      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|creation).
      • htmlsequence
        Anzeigereihenfolge der html warnungen. (ascending|descending).
      • htmltitle
        Titel / Ueberschrift der HTML Ausgabe
      • htmltitleclass
        css-Class des Titels der HTML Ausgabe
      • localiconbase
        BaseURL angeben um Warn Icons lokal zu hosten. (Dateityp ist png).
      • intervalAtWarnLevel
        konfiguriert den Interval je nach WarnLevel. Beispiel: 2=1800,3=900,4=300


      Readings

      • Warn_0|1|2|3...|9_... - aktive Warnmeldungen
      • WarnCount - Anzahl der aktiven Warnmeldungen
      • WarnUWZLevel - Gesamt Warn Level
      • WarnUWZLevel_Color - Gesamt Warn Level Farbe
      • WarnUWZLevel_Str - Gesamt Warn Level Text
      • Warn_0_AltitudeMin - minimum Höhe für Warnung
      • Warn_0_AltitudeMax - maximum Höhe für Warnung
      • Warn_0_EventID - EventID der Warnung
      • Warn_0_Creation - Warnungs Erzeugung
      • Warn_0_Creation_Date - Warnungs Erzeugungs Datum
      • Warn_0_Creation_Time - Warnungs Erzeugungs Zeit
      • currentIntervalMode - default/warn, aktuell Verwendeter Interval. Internal INTERVAL oder INTERVALWARN
      • Warn_0_Start - Begin der Warnung
      • Warn_0_Start_Date - Startdatum der Warnung
      • Warn_0_Start_Time - Startzeit der Warnung
      • Warn_0_End - Warn Ende
      • Warn_0_End_Date - Enddatum der Warnung
      • Warn_0_End_Time - Endzeit der Warnung
      • Warn_0_Severity - Schwere des Unwetters (0 kein Unwetter, 12 massives Unwetter)
      • 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 {FHEM::UWZ::UWZAsHtml("Unwetterzentrale")}

      • define UnwetterLite weblink htmlCode {FHEM::UWZ::UWZAsHtmlLite("Unwetterzentrale")}

      • define UnwetterFloorplan weblink htmlCode {FHEM::UWZ::UWZAsHtmlFP("Unwetterzentrale")}

      • define UnwetterKarteLand weblink htmlCode {FHEM::UWZ::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
          • alsace
          • aquitaine
          • basse-normandie
          • bretagne
          • champagne-ardenne
          • franche-comte
          • haute-normandie
          • ile-de-france
          • languedoc-roussillon
          • limousin
          • lorraine
          • bourgogne
          • centre
          • midi-pyrenees
          • nord-pas-de-calais
          • pays-de-la-loire
          • picardie
          • poitou-charentes
          • provence-alpes-cote-dazur
          • rhone-alpes

          • letzebuerg

          • nederland
          • drenthe
          • flevoland
          • friesland
          • gelderland
          • groningen
          • limburg
          • noordbrabant
          • noordholland
          • overijssel
          • utrecht
          • zeeland
          • zuidholland

          • norwegen

          • portugal

          • sverige

          • espana

          • unitedkingdom
          • eastofengland
          • eastmidlands
          • london
          • northeastengland
          • northernireland
          • northwestengland
          • scotland
          • southeastengland
          • southwestengland
          • wales
          • westmidlands
          • yorkshireandthehumber

          • isobaren1
          • isobaren2
          • isobaren3
      • define UnwetterKarteMovie weblink htmlCode {FHEM::UWZ::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

          • neerslag-wolken-nl
          • stroming-nl

          • nuages-precipitations-fr
          • courants-fr

          • clouds-precipitation-uk
          • currents-uk




    UbiquitiMP

    [EN DE]
      FHEM Modul für die Ubiquiti mFi mPower Schaltsteckdosen
      Mehr Informationen zu den verschiedenen mPower Modellen im Wiki unter https://wiki.fhem.de/wiki/Ubiquit_mFi/mPower
      FHEM Forum : http://forum.fhem.de/index.php/topic,35722.0.html Define
        define <name> UbiquitiMP <IP oder FQDN>
        Beispiel :
        define myUbi UbiquitiMP 192.168.0.100
        define myUbi UbiquitiMP myhost.mynet.net
        Das Perl Net::Telnet und sowie das JSON Modul werden unbedingt benötigt. Auf einem Raspberry Pi können diese mit den folgenden beiden Kommandos installiert werden:
        sudo apt-get install libjson-perl
        sudo apt-get install libnet-telnet-perl

      Set
      • Outx on / off (force) -> schaltet den Port x an oder aus
      • Outx toggle -> schaltet den Port aus wenn er an ist und umgekehrt
      • Outx lock / unlock -> Ist lock bei einem Port gesetzt kann er nicht mehr an oder aus geschaltet werden
      • Outx reset -> setzt den internen Verbrauchszähler für diesen Port zurück
      • Outx enable / disable -> interne Verbrauchsmessung für diesen Port ein / aus schalten

      • Bei der mPower mini entfällt die Angabe von Outx !
        Zusätzlich unterstützt die mini die set Extensions direkt
      Get
      • status -> Gibt den aktuellen Status aller Ports zurück
      • info -> liefert einige interne Parameter des Gerätes
      • reboot -> Startet das Gerät neu

      Attributes
      • ignoreList -> Liste der Ports die bei Abfragen ignoriert werden sollen, Bsp. attr Ubi ignoreList 456
        ignoriert alle Werte der Ports 4,5 und 6

      • groupPorts -> Durch Kommatas getrennte Liste um Ports in Gruppen zusammen zu fassen.
        Die Gruppen können danach wie win einzelner Port behandelt werden.
        Bsp. attr Ubi groupPorts TV=12 Media=4,5,6 (GruppenName=Port Nummer des Ports in der Gruppe)
        set Ubi TV on oder set Ubi Media toggle

      • ledconnect -> Farbe der LED beim Zugriff mit fhem

      • subDevices -> Legt für jeden Port ein eigenes Subdevice an
        (Default 1 für die 3 and 6 Port mPower, Default 0 für die mPower 1 Port mini) benötigt zusätzlich das Modul 98_UbiquitiOut.pm

      • interval -> Abfrage Interval in Sekunden, kann ausgeschaltet werden mit dem Wert 0 (Default ist 300)

      • timeout -> Wartezeit in Sekunden bevor eine Abfrage mit einer Fehlermeldung abgebrochen wird (Default ist 5 Sekunden)
        Werte unter zwei Sekunden werden vom Modul nicht angenommen !

      • user -> Login Username (Default ubnt)

      • password -> Login Passwort (Default ubnt)

    UbiquitiOut

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

    Unifi

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

    UnifiClient

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

    UnifiProtect

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

    UnifiSwitch

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

    UnifiVideo

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

    Utils

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

    VBUSDEV

    [EN DE]
      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

    VCLIENT

    [EN DE]
      Dieses Modul stellt eine GUI für Viessmann-Heizungssteuerungen bereit. Während VCONTROL und VCONTROL300 direkt Steuerungsbefehle versenden, basiert VCLIENT auf einem (extern) laufenden Daemon vcontrold.
      Die Viessmann-Heizung wird ausschließlich durch vcontrold kontrolliert. Dieses Modul verbindet sich nur mit vcontrold und stellt gewissermaßen einen vcontrold-Klienten für FHEM dar. Wenn ein Befehl nicht das tut, was er soll, liegt es an vcontrold, nicht aber an VCLIENT.

      Voraussetzungen

      Dieses Modul funktioniert nur, wenn auf einem (externen) Host vcontrold installiert wurde und fehlerfrei läuft. Zudem muss natürlich ein Optolink-Kabel (von Viessmann oder im Eigenbau) an die Heizung angeschlossen und mit diesem Host verbunden sein. Anderenfalls wird VCLIENT keine Ergebnisse liefern. Zur Installation und Inbetriebnahme von vcontrold sowie dem dazugehörigen Optolink-Kabel siehe die Webseite https://github.com/openv/openv
      (Es kommt bei diesem Modul erschwerend hinzu, dass sowohl bei FHEM als auch bei vcontrold die Kommandos get-Befehle und set-Befehle heißen. FHEM-Befehle und vcontrold-Befehle müssen sprachlich auseinander gehalten werden.)

      Vorbereitungen

      VCLIENT setzt eine Konfigurationsdatei voraus. In dieser Datei befinden sich zeilenweise Einträge. Jeder Eintrag ordnet einem vcontrold -Befehl einen Readingnamen zu. Wird der in der Zeile genannte Befehl ausgeführte, so wird das durch vcontrold erhaltene Ergebnis in das entsprechende Reading geschrieben. Eine typische Zeile in der Konfigurationsdatei sieht wie folgt aus:
        ###### VCLIENT-Konfigurationsdatei #########
        #Dies ist eine Kommentarzeile
        getTempA Aussentemperatur
        getTempBrennerstarts Brennerstarts
        getTempBrennerstarts BrennerstartsBisGestern daily
        #bisher standen get-Befehle da, nun folgen set-Befehle
        getTimerWWMo Warmwasser_1Montag manually
        setTimerWWMo WW_1Mo_spaet 08:00-10:00|12:00-12:30|| 
        setTempWW WarmwasserTemp 70,65,60,55
      

      Get-Befehle:Zuerst muss der vcontrold-Befehl in der Zeile stehen, er muss das Wort get enthalten (zB getTempWW). Die Rückgabe des vcontrold-Befehls "getTempA" wird dann in das VCLIENT-Reading Aussentemperatur geschrieben. Bitte für jeden Befehl eine eigene Zeile verwenden. Soll ein Kommando nur einmal am Tag ausgeführt werden, muss als weiteres (drittes) Wort in der cfg-Datei "daily" stehen. Soll ein Kommando nur manuell ausgeführt werden, so muss als weiteres (drittes) Wort in der cfg-Datei "manually" stehen. Das Format von Zeitbefehlen (so genannte timer) wird automatisch erkannt.
      Set-Befehle:Zuerst muss der vcontrold-Befehl in der Zeile stehen, er muss das Wort set enthalten (zB setTempWW). Dann erfolgt der Name, der im FHEM-Set-Befehl autauchen soll, hier WarmwasserTemp (der komplette FHEM-Befehl hieße dann set <name> WarmwasserTemp 65). Zuletzt stehen die möglichen Auswahlen einer dropdown-Liste in der Zeile. Es ist unabdingbar, dass die auszuwählenden Werte kommagetrennt und ohne Leerzeichen geschrieben werden. Timer-Befehle machen hier eine Ausnahme. Wieder erfolgt zuerst der vcontrold-Befehl (hier setTimerWWMo), danach folgt der Befehl, mit dem die Angaben in FHEM ausgelöst werden (hier wäre das set <name> WW_1Mo_spaet). In FHEM werden die Zeiten aber nicht eingegeben, dies geschieht vielmehr in der cfg-Datei. Dazu werden die Zeiten, die an die Anlage zu senden sind, in der Datei eingetragen. Es muss sich um eine gerade Anzahl von Zeitangaben, höchstens acht, handeln. Die Zeitangaben sind durch genau drei Trennzeichen | voneinander zu separieren. Die Zeiten wiederum sind durch Angaben HH:MM-HH:MM zu notieren. Dabei sind nur Minuten zulässig, die Vielfache von 10 sind; weiter müssen die Zeitangaben von links nach rechts wachsen und dürfen nicht fallen. Die Zeitangaben wie auch der Set-Befehl dürfen keine Leerzeichen enthalten.

      Define

        define <name> VCLIENT <host> <port> <configfilename> <interval>

        <host> ist der Host, auf dem vcontrold läuft.
        <port> ist der Port, unter dem vcontrold ansprechbar ist (sehr oft 3002).
        <configfilename> ist die vorbereitete Konfigurationsdatei, siehe hierzu oben.
        <interval> ist die Zeitspanne in Sekunden, in denen regelmäßige Abfragen erfolgen sollen. Der Wert 0 (nur manuelle Abfragen) ist möglich.

      Set

        reload_command_file
          set <name> reload_command_file <configfilename>
          Ändert den Namen und/oder Pfad der Konfigurationsdatei. Die Datei muss existieren, sonst erfolgt eine Fehlermeldung (vollständigen Pfad angeben).
        <vcontrold/FHEM-Kommando>
          set <name> <vcontrold/FHEM-Kommando> args
          Es können mit dem set-Befehl auch vcontrold-Kommandos ausgeführt werden. Diese Kommandos müssen vorab in der cfg-Konfigurationsdatei definiert werden. Schaut man auf das obige Beispiel einer Konfigurationsdatei, so würde ein FHEM-Befehl der Form set <name> WarmwasserTemp 70 intern an die Heizung bzw vcontrold den Befehl setTempWW 70 absetzen, der dann die Warmwassertemperatur auf 70 Grad Celsius setzt. Im Reading last_set_cmd muss ein OK erscheinen, wenn der Befehl erfolgreich ausgeführt wurde. Analog können komplexere Zeitangaben für Timer gesetzt werden. Leider ist es momentan wohl so, dass beim Setzen von timer-Angaben vcontrold eine Fehlermeldung zurück gibt - obwohl die Angaben korrekt übertragen wurden.
      Get

        update
          get <name> update
          Führt die in der Konfigurationsdatei genannten vcontrold-Befehle aus und schreibt die Ergebnisse in die dort angegebenen Readings. Sind diese nicht vorhanden, so werden sie angelegt.
        update_manually
          get <name> update_manually
          Führt die in der Konfigurationsdatei genannten vcontrold-Befehle für sämtliche manuellen Einträge aus und schreibt die Ergebnisse in die dort angegebenen Readings. Sind diese nicht vorhanden, so werden sie angelegt.
      Attribute

        timeout
          attr <name> <timeout> 1
          Jeder Zugriff auf einen entfernten Host ist nicht blockierend, muss aber dennoch die Möglichkeit eines Abbruches beinhalten (falls partout keine Antwort erfolgt). Timeout beschreibt, nach wie viel Sekunden die Abfrage erfolglos abgebrochen werden soll. In einem solchen Fall wird auch die gesamte Abfrageliste beendet. Beachten Sie: Ein zu kurzer Timeout ist problematisch, weil dann uU noch keine Rückmeldung von der Heizung erfolgen konnte. Voreinstellung (wenn kein Attribut gesetzt) ist 5 Sekunden.

        internal_update_interval
          attr <name> <internal_update_interval> 0.1
          Hier handelt es sich um ein Attribut, das nur verwendet werden sollte, wenn trotz intensiver Suche immer noch Probleme bei der Ansteuerung der Anlage auftreten. Normalerweise ist es nicht nötig, dieses Attribut zu setzen.
          Zwei verschiedene Kommandos können nicht gleichzeitig an die Anlage geschickt werden, weil dann bei einer Antwort nicht klar ist, auf welche Frage sich das Ergebnis bezieht. Dies wird intern so umgesetzt, indem VCLIENT darauf achtet, dass zwischen zwei Kommandos eine kleine Zeitspanne liegt. Diese Zeitspanne ist nun ein genaues Vielfaches von $internal_update_interval. $internal_update_interval ist intern auf 0.1 Sekunden eingestellt; dies sollte normalerweise genügen. $internal_update_interval muss größer als Null sein. Ein größerer Wert führt zu einer längeren Abfragedauer für alle Readings, ein kleinerer Wert verkürzt unter Umständen die gesamte Abfragedauer, könnte aber auch zu Instabilitäten führen.

    VCONTROL

    [EN DE]
      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

    [EN DE]
      Define
        define <name> VIERA <host> <interval> <pin code> <?>

        Dieses Modul steuert einen Panasonic Fernseher (unverschlüsselt oder verschlüsselt) über das Netzwerk. Es ist möglich den Fernseher auszuschalten, die Lautstärke zu ändern oder zu muten bzw. unmuten oder Befehle wie auf der Fernbedinung zu senden,

        Beim definieren des Gerätes in FHEM wird ein interner Timer gestartet, welcher zyklisch den Status der Lautstärke und des Mute-Zustand ausliest. Das Intervall des Timer kann über den Parameter <interval> geändert werden und ein notify wird eingerichtet.

        Um das Modul einzurichten können mehrere Schritte notwendig sein. Zuerst wird das Modul definiert mit dem PinCode <0000>, ? für die Abfrage der Verschlüsselung und einem beliebigen Zeitinterval (60 ist ok). Dann den TV einschalten und warten bis die Verschlüsselung yes/no erkannt wird. Wenn der TV nicht verschlüsselt ist, ist die Einrichtung abgeschlossen. Ist der TV verschlüsselt, dann bitte ein Kommando ausführen (set myTV1 off), danach wird ein PinCode am TV angezeigt. Die Definition editieren den PinCode eintragen und das ? löschen. Das Kommando nochmals ausführen, solange der PinCode angezeigt wird. Das wars.
        state: Initialized - on (grün) - dormant (orange) - off (rot)

        Diese Modul benötigt evtl. weitere PERL Bibliotheken. Für raspbian bitte folgende Kommandos im Terminmal eingeben:
        sudo cpan
        install MIME::Base64
        install Crypt::Mode::CBC
        install Digest::SHA
        q
        für exit.

        Anmerkung:
          Aktivieren von Remote Control und VIERA-LINK im TV Menü unter Netzwerk und Setup

        Beispiel:
          define myTV1 VIERA 192.168.178.20 ## PinCode ?
          define myTV1 VIERA 192.168.178.20 60 0000 ? (mit einem Interval von 60 Sekunden und dem PinCode für den 1. Schritt)
          define myTV1 VIERA 192.168.178.20 60 1234 (mit geändertem PinCode wie am TV angezeigt)

      Set
        set <name> <command> [<value>]

        Zur Zeit sind die folgenden Befehle implementiert:
          on_off
          mute [on|off]
          volume [0-100]
          channel [1-9999]
          input [hdmi1|hdmi2|hdmi3|hdmi4|sdCard|tv]
          statusRequest
          web
        Beim Kommando web, bitte immer https:// voranstellen. Beispiel:
        set <name> web https://google.de


        Fernbedienung (Kann vielleicht nach Modell variieren).
        Das Modul hat die folgenden Fernbedienbefehle implementiert:

        set <name> remoteControl .........

          3D_button => in 3D Modus schalten
          apps => apps anzeigen
          aspect => Aspekt aendern
          AV => Eingang auf AV umschalten
          blue_button => blaue Taste
          cancel => loeschen
          channel_down => Kanal nach unten schalten
          channel_up => Kanal nach oben schalten
          digit_0 => Zahl 0
          digit_1 => Zahl 1
          digit_2 => Zahl 2
          digit_3 => Zahl 3
          digit_4 => Zahl 4
          digit_5 => Zahl 5
          digit_6 => Zahl 6
          digit_7 => Zahl 7
          digit_8 => Zahl 8
          digit_9 => Zahl 9
          display_mode
          down => Pfeil nach unten
          enter => Eingabe
          EPG => elektronische Programmzeitschrift
          exit => beenden
          fast_forward => vorspulen
          favorite => Favoriten
          game
          green_button => gruene Taste
          guide => Programmzeitschrift
          HDMI_1 => Eingang HDMI 1
          HDMI_2 => Eingang HDMI 2
          HDMI_3 => Eingang HDMI 3
          HDMI_4 => Eingang HDMI 4
          hold =>
          home => Startbildschirm
          index => Index
          info => Info
          last_view => letzte Ansicht
          left => Pfeil nach unten
          menu => Menue
          mute => Ton aus
          noise_reduction => Rauschreduzierung
          on_off => Ein- / Ausschalter
          option => Option
          pause => Pause
          play => Abspielen
          program => Programm
          record => Aufnahme
          red_button => rote Taste
          return => zurueck
          rewind => zurueckspulen
          right => Pfeil nach rechts
          SD_card => => SD Karte
          skip_next => springe vorwaerts
          skip_previous => springe zurueck
          stop => Stop
          subtitle => Untertitel
          tune => Suchlauf
          TV => TV
          up => Pfeil nach oben
          videotext => Videotext
          VIERA_connect
          VIERA_link
          VIERA_tools
          volume_down => Lautstaerke leiser
          volume_up => Lautstaerke lauter
          yellow_button => gelbe Taste


        set <name> remoteControlApp ......

          netflix
          youtube
          shoutcast
          calendar
          browser
          amazonprime
          iplayer
          bbc_iplayer
          itv
          all_4
          demand_5
          recorded_tv
          multi_window
          bbc_news
          bbc_sport
          weather
          developer

        Beispiel:
          set <name> mute on
          set <name> volume 20

      Get
        get <name> <what>

        Die folgenden Befehle sind definiert und geben den entsprechenden Wert zurück, der vom Fernseher zurückgegeben wurde.
          mute
          volume
          presence

      Attribute
        blocking [0|1]

      Generierte events:
      • volume
      • mute
      • presence
      • state

    Vallox

    [EN DE]
      Vallox ist ein Hersteller von Belüftungsanlagen mit Wärmetauscher.
      Die Systeme verfügen sowohl an der zentralen Lüftungskomponente, als auch an den Terminals über eine RS485-Schnittstelle über die die gesamte interne Kommunikation abgewickelt wird.
      Mehr Informationen sind auf der FHEM-Wiki-Seite verfügbar.
       
      Define
        define <name> Vallox <RS485-Device[@baud]> [BusVersion]
        Wird die Baudrate weggelassen wird mit 9600 baud kommuniziert. (Standardrate des Vallox-Busses).
        Die BusVersion kann bei älteren Anlagen auf 1 gesetzt werden. (Standard: 2).

        Beispiel: define Ventilation Vallox /dev/ttyUSB1

      Set
      • FanSpeed < 1-8 >
        Erlaubt das Ändern der Lüftergeschwindigkeit (1 = minimal; 8 = maximal).

      • BasicHumidityLevel < 0-100 >
        Erlaubt das Ändern des Luftfeuchtigkeits-Grenzwertes (Terminaldisplay: Grenzwert %RH).

      • HeatRecoveryCellBypassSetpointTemperature < 0-20 >
        Erlaubt das Ändern des Grenzwertes für den Wärmetauscher-Bypass (Terminaldisplay: WRG Bypass)

      • raw < HexWert >
        HexWert sind zwei 2-stellige Hex-Zahlen, welche den Typ und den Wert der Einstellung identifiziert.


      • Beispiel um die Lüftergeschwindigkeit auf 3 zu setzen:
        set Ventilation raw 2907
        oder:
        set Ventilation FanSpeed 3

      Get
      • reading < readingname >
        Erlaubt das Auslesen der vorgegebenen Datenpunkte aus dem Bus.

      • raw < HexWert >
        HexWert ist eine 2-stellige Hex-Zahl, welche den Typ der abzufragenden Einstellung identifiziert.


      Attribute
      • ValloxIDDomain < HexWert >
        HexWert ist eine 2-stellige Hex-Zahl die als "Adresse" der Bus-Domäne dient. (Standard: 01).

      • ValloxIDCentral < HexWert >
        HexWert ist eine 2-stellige Hex-Zahl die als "Adresse" der zentralen Ventilationseinheit dient. (Standard: 11).
        In einer normalen Umgebung werden die Ventilationseinheiten mit 11 - 1F adressiert. 10 ist die Broadcast-Adresse.

      • ValloxIDFHEM < HexWert >
        HexWert ist eine 2-stellige Hex-Zahl die als "Adresse" dieses Systems als virtuelles Kontrollterminal dient. (Standard: 2F).
        Sie darf nicht bereits im Bus genutzt werden.
        In einer normalen Umgebung werden die Kontrollterminals mit 21 - 2F adressiert. 20 ist die Broadcast-Adresse.
        In den Einstellungen der physikalisch vorhandenen Terminals kann die "FBD-Adresse" des jeweiligen Terminals eingestellt werden.
        Hierbei stehen die Werte 1-15 zur Verfügung, was der zweiten Stelle dieser Adresse (1-F) entspricht. Die erste Stelle ist immer 2.
        Das physikalische Kontrollterminal ist üblicherweise die 21.

      • ValloxBufferDebug < 0/1 >
        Wenn 1, erzeugt das Modul ein Internal in welches die rohen Hex-Daten aus dem Bus herein geschrieben. NUR ZUM DEBUGGEN! (Standard: 0).

      • ValloxForceBroadcast < 0/1 >
        Wenn 1, sendet das Modul die Befehle nicht nur an die zentrale Ventilationseinheit (11), sondern auch an alle Broadcast-Adressen (10/20). Dies ist manchmal bei älteren Anlagen notwendig, wenn sich die Anzeige auf den Kontrollterminals nicht mit aktualisiert. (Standard: 0; Funktion immer an bei BusVersion 1).

      • ValloxProcessOwnCommands < 0/1 >
        Wenn 1, behandelt das Modul die eigenen Befehle auch als Empfangene Befehle und verarbeitet sie intern weiter. Dies ist manchmal bei älteren Anlagen notwendig. (Standard: 0; Funktion immer an bei BusVersion 1).

      • readingFnAttributes

    Verkehrsinfo

    [EN DE]
      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

        • disable
          1 = inactive and 0 = active

        • timeout
          Timeout für Webabfrage

        • 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

    WINCONNECT

    [EN DE]
      Dieses Module dient zur Steuerung eines Windows PCs

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

          Für definierte WINCONNECT Geräte wird ein interner Task angelegt, welcher periodisch die Readings aktualisiert. Der Standartpollintervall ist 45 Sekunden.

          Example:
            define Buero.PC WINCONNECT 192.168.0.10

            # Alternativer poll intervall von 60 seconds
            define Buero.PC WINCONNECT 192.168.0.10 60


      Mehr Information im FHEM Wiki.

    WMBUS - Wireless M-Bus

    [EN DE]
      Dieses Modul unterstützt Zähler mit Wireless M-Bus, z. B. für Wasser, Gas oder Elektrizität. Wireless M-Bus ist ein standardisiertes Protokoll das von unterschiedlichen Herstellern unterstützt wird. Es verwendet das 868 MHz Band für Radioübertragungen. Daher wird ein Gerät benötigt das die Wireless M-Bus Nachrichten empfangen kann, z. B. ein CUL mit culfw >= 1.59 oder ein AMBER Wireless AMB8465-M.
      WMBus verwendet drei unterschiedliche Radioprotokolle, T-Mode, S-Mode und C-Mode. Der Empfänger muss daher so konfiguriert werden, dass er das selbe Protokoll verwendet wie der Sender. Im Falle eines CUL kann das erreicht werden, in dem das Attribut rfmode auf WMBus_T, WMBus_S bzw. WMBus_C gesetzt wird.
      WMBus Geräte senden Daten periodisch abhängig von ihrer Konfiguration. Es können u. U. Tage zwischen einzelnen Nachrichten vergehen oder sie können im Minutentakt gesendet werden.
      WMBus Nachrichten können optional verschlüsselt werden. Bei verschlüsselten Nachrichten muss der passende Schlüssel mit dem Attribut AESkey angegeben werden. Andernfalls wird die Entschlüsselung fehlschlagen und es können keine relevanten Daten ausgelesen werden. Das Modul kann mit Security Profile A oder B (Mode 5 und 7) verschlüsselte Nachrichten entschlüsseln.

      Voraussetzungen
      Dieses Modul benötigt die perl Module Digest::CRC, Crypt::Mode::CBC, Crypt::Mode::CTR und Digest::CMAC (die letzten drei Module werden nur benötigt wenn verschlüsselte Nachrichten verarbeitet werden sollen).
      Bei einem Debian basierten System können diese so installiert werden
      sudo apt-get install libdigest-crc-perl
      sudo cpan -i Crypt::Mode::CBC Crypt::Mode::CTR Digest::CMAC


      Define
        define <name> WMBUS [<manufacturer id> <identification number> <version> <type> [<MessageEncoding>]]|<b[]HexCode>

        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. Wird kein Encoding angegeben so wird CUL verwendet.


      Set
      • rawmsg Hexadezimaler Inhalt einer Rohnachricht (ohne führendes b)
        Wird interpretiert als ob die Nachricht von einem IODev empfangen worden wäre. Hauptsächlich nützlich zum debuggen.

      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.

      • ignoreUnknownDataBlocks
        Wenn auf 1 gesetzt so werden Datenblocks die unbekannte/herstellerspezifische Daten enthalten ignoriert. Das ist hilfreich wenn ein Zähler Daten in unterschiedlichen Formaten sendet von denen einige nicht interpretiert werden können. Es verhindert, dass die unbekannten Daten die Readings der interpretierbaren Daten überschreiben.

      • ignoreMasterMessages Einige Geräte (z. B. Letrika Wechselrichter) senden nur dann Daten wenn sie eine spezielle Nachricht von einem Mastergerät erhalten haben. Die Nachrichten von dem Master werden ignoriert es sei denn es wird explizit mit diesem Attribut eingeschaltet.
      • useVIFasReadingName
        Einige Geräte senden verschiedene Arten von Nachrichten mit logisch unterschiedlichem Inhalt. Da die Readings normalerweise aufsteigend nummeriert werden können Readings durch semantisch unterschiedliche Readings überschrieben werden. Wenn dieses Attribut auf 1 gesetzt ist ändert sich die Namenskonvention der Readings. Die Namen setzen sich dann aus der Storagenumber und dem VIF (Value Information Field) zusammen. Dadurch bekommt jeder semantisch unterschiedliche Wert einen eindeutigen Readingnamen. Beispiel:
             1_storage_no 0
             1_type VIF_ENERGY_WATT
             1_unit Wh
             1_value 1234.5
             
        wird zu
             0_VIF_ENERGY_WATT_unit Wh
             0_VIF_ENERGY_WATT_value 1234.5
             

      Readings
        Zähler können sehr viele unterschiedliche Informationen senden, abhängig von ihrem Typ. Ein Elektrizitätszähler wird andere Daten senden als ein Wasserzähler. Die Information hängt auch vom Hersteller des Zählers ab. Für weitere Informationen siehe die WMBus Spezifikation unter oms-group.org.

        Die Readings werden als Block dargestellt, beginnend mit Block 1. Ein Zähler kann mehrere Blöcke senden. Jeder Block enthält zumindest einen Typ, einen Wert und eine Einheit. Für einen Elektrizitätszähler könnte das z. B. so aussehen
          1_type VIF_ENERGY_WATT
          1_unit Wh
          1_value 2948787

        Es gibt auch eine Anzahl von festen Readings.
        • is_encrypted ist 1 wenn die empfangene Nachricht verschlüsselt ist.
        • decryption_ok ist 1 wenn die Nachricht entweder erfolgreich entschlüsselt wurde oder gar nicht verschlüsselt war.
        • state enthält den Status des Zählers und kann Fehlermeldungen wie 'battery low' enthalten. Normalerweise ist der Wert 'no error'.
        • batteryState enthält ok oder low.
        Für einige bekannte Gerätetypen werden zusätzliche Readings wie der Energieverbrauch in kWh erzeugt.

    WOL

    [EN DE]
    Definiert ein WOL Gerät über seine MAC und IP Addresse.

    Wenn der on Befehl an das WOL Gerät gesendet wird, wird das entsprechende Gerät durch das Senden eines "magic packet" aufgeweckt. Wenn WOL im repeat Modus läuft, wird das "magic packet" alle n Sekunden zum Gerät geschickt. So kann z.B. ein Buffalo NAS "wach" gehalten werden.

      Define

        define <name> WOL <MAC> <IP> [<mode> [<repeat>]]

        MAC
        MAC-Adresse des Hosts
        IP
        IP-Adresse des Hosts (oder broadcast Addresse des lokalen Netzwerks, wenn die IP des Hosts unbekannt ist)
        mode [EW|UDP]
        EW: aufwecken durch usr/bin/ether-wake
        UDP: aufwecken durch eine Implementierung wie Net::Wake(CPAN)
        CMD: aufwecken durch einen eigenen Befehl (FHEM Kommando, Perl Code oder system Command - siehe Attribut wolCmd


        Beispiele:
          define computer1 WOL 72:11:AC:4D:37:13 192.168.0.24             nur einmal schalten
          define computer1 WOL 72:11:AC:4D:37:13 192.168.0.24 EW          über ether-wake(Linux Befehl)
          define computer1 WOL 72:11:AC:4D:37:13 192.168.0.24 BOTH        über beide Methoden
          define computer1 WOL 72:11:AC:4D:37:13 192.168.0.24 UDP 200     im repeat Modus
          define computer1 WOL 72:11:AC:4D:37:13 192.168.0.24 CMD


        Anmerkungen:
          Nicht jede Hardware kann standardmäßig andere Geräte aufwecken. Firewalls filtern häufig magic packets und müssen entsprechend konfiguriert werden. Möglicherweise ist ein Packet Sniffer notwendig um Fehlfunktionen zu überprüfen.

      Set

        set <name> <value>

        wobei value einer der folgenden ist:
            refresh           # überprüft (mittels ping) ob das Gerät gerade läuft
            on                # schickt ein magic packet an die definierte MAC-Adresse
            off               # beemdet das Senden von magic packets schickt das shutdownCmd(siehe Attribute)
            
        Beispiele:
          set computer1 on
          set computer1 off
          set computer1 refresh

      Attribute

      • attr <name> sysCmd <string>
        Eigener Befehl, um ein entferntes Gerät aufzuwecken, z.B. /usr/bin/ether-wake or /usr/bin/wakeonlan
      • attr <name> wolCmd <command>
        Eigener Befehl, um ein entferntes Gerät aufzuwecken. Es können <command>, wie in at, notify oder Watchdog verwendet werden. Wenn das Attribut sshHost gesetzt ist, wird ein shell Befehl im remote System ausgeführt. Die Platzhalter $MAC, $IP und $BC koennen verwendet werden und werden durch MAC, IP und UdpBroadcast ersetzt.
      • attr <name> shutdownCmd <command>
        Eigener Befehl, um ein entferntes Gerät herunter zu fahren. Es können <command>, wie in at, notify oder Watchdog verwendet werden. Wenn das Attribut sshHostShutdown gesetzt ist, wird ein shell Befehl im remote System ausgeführt.


      • Beispiele:
            attr wol shutdownCmd    set lamp on                            # fhem Befehl
            attr wol shutdownCmd    { Log 1, "Teatime" }                   # Perl Befehl
            attr wol shutdownCmd    "/bin/echo "Teatime" > /dev/console"   # shell Befehl
            
      • attr <name> sshHost <IP Address>
        Erwartet eine Wert der Form [pi@]ip-adresse[:port]. Ist das Attribut gesetzt wird wolCmd über ssh auf dem angegebenen remote host ausgeführt. Voraussetzung ist, dass der fhem-User sich ohne Passwort auf dem remote host einloggen kann (siehe z.B. https://www.schlittermann.de/doc/ssh.html).
      • attr <name> sshHostShutdown <IP Address>
        Erwartet eine Wert der Form [pi@]ip-adresse[:port]. Ist das Attribut gesetzt wird shutdownCmd über ssh auf dem angegebenen remote host ausgeführt. Voraussetzung ist, dass der fhem-User sich ohne Passwort auf dem remote host einloggen kann (siehe z.B. https://www.schlittermann.de/doc/ssh.html).
      • attr <name> interval <seconds>
        definiert die Zeit zwischen zwei Checks mittels ping Wenn der state von <name> on ist. Mit dem Wert 0 als interval wird die regelmäßige Überprüfung abgeschaltet.
      • attr <name> useUdpBroadcast <broadcastAdress>
        Bei der Nutzung von UDP kann das magic packet an eine det broadcastAdressen (x.x.x.255, x.x.255.255, x.255.255.255) geschickt werden, an Stelle des Ziel-Hosts address. Diese Methode sollte verwendet werden, wenn ein Gerät im eigenen Subnetz aufgeweckt werden soll, aber der wakeup mit dem Zielhost nicht funktioniert oder nicht stabil ist.

    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

    [EN DE]
      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
        Zusätzlich werden folgende Erweiterungen (für WS3080) unterstützt:
        IL 0.0
        UV 8
        Forecast Zeitweise Regen, später zunehmend
        ZCode U
        Welche der vorgenannten Wertepaare durch <wsreaderprog>  geliefert werden, ist egal. Jedes bekannte wird übersetzt (z.B. Ti nach Temp-inside) und als Reading angezeigt, alle unbekannten werden kommentarlos verworfen. Mittels geeignetem Programm oder Script sollte sich also jede beliebige Wetterstation anschließen lassen.
        Anmerkung: Um die Anzahl Readings zu reduzieren, werden jetzt Date- und Time-Wertepaare zusammengefasst. Es ist jetzt auch zulässig, dass <wsreaderprog> schon kombinierte Wertepaare liefert. Diese sind mit dem Prefix DT zu kennzeichnen, also z.B. Date + Time --> DTime, DRPmin + TRPmin --> DTRPmin usw.).
        Fetch3600 ist auch unter Windows verfügbar, ob das Zusammenspiel mit FHEM dort auch funktioniert, wurde noch nicht getestet.

        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, WS3080 (z.Zt (noch) ohne Wirkung)

    WS980

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

    WUup

    [EN DE]
      Define

        define <name> WUup <stationId> <password>

        Dieses Modul stellt eine Verbindung zu www.wunderground.com
        her, um Daten einer eigenen Wetterstation zu versenden..


      Set-Befehle
      • update - sende Daten an Weather Underground


      Get-Befehle

        - keine -


      Attribute

      • readingFnAttributes
      • interval - Sendeinterval in Sekunden. Wird auf 300 (Default-Wert) eingestellt, wenn der Wert kleiner als 3 ist.
        Wenn der Wert kleiner als 300 ist, wird der RapidFire Modus verwendet.
      • disable - deaktiviert das Modul
      • disabledForIntervals
      • unit_windspeed - gibt die Einheit der Readings für die Windgeschwindigkeiten an (m/s oder km/h)
      • unit_solarradiation - gibt die Einheit der Readings für die Sonneneinstrahlung an (lux oder W/m²)
      • round - Anzahl der Nachkommastellen zur Berechnung (Standard 4)
      • wu.... - Attributname entsprechend dem Parameternamen aus der API.
        Jedes dieser Attribute enthält Informationen über zu sendende Wetterdaten im Format sensorName:readingName.
        Beispiel: attr WUup wutempf outside:temperature definiert das Attribut wutempf und sendet das Reading "temperature" vom Gerät "outside" als Parameter "tempf" (welches die aktuelle Temperatur angibt).
        Einheiten werden automatisch ins anglo-amerikanische System umgerechnet. (°C -> °;F; km/h(m/s) -> mph; mm -> in; hPa -> inHg)

        Unterstützte Angaben
        • winddir - momentane Windrichtung (0-360) [°]
        • windspeedmph - momentane Windgeschwindigkeit [mph]
        • windgustmph - aktuelle Böe, mit Software-spezifischem Zeitraum [mph]
        • windgustdir - aktuelle Böenrichtung, mit Software-spezifischer Zeitraum [°]
        • windspdmph_avg2m - durchschnittliche Windgeschwindigkeit innerhalb 2 Minuten [mph]
        • winddir_avg2m - durchschnittliche Windrichtung innerhalb 2 Minuten [°]
        • windgustmph_10m - Böen der vergangenen 10 Minuten [mph]
        • windgustdir_10m - Richtung der Böen der letzten 10 Minuten [°]
        • humidity - Luftfeuchtigkeit im Freien (0-100) [%]
        • dewptf- Taupunkt im Freien [°F]
        • tempf - Außentemperatur [°F]
        • rainin - Regen in der vergangenen Stunde [in]
        • dailyrainin - Regenmenge bisher heute [in]
        • baromin - barometrischer Druck [inHg]
        • soiltempf - Bodentemperatur [°F]
        • soilmoisture - Bodenfeuchtigkeit [%]
        • solarradiation - Sonneneinstrahlung [W/m²]
        • UV - [Index]
        • AqPM2.5 - Feinstaub PM2,5 [µg/m³]
        • AqPM10 - Feinstaub PM10 [µg/m³]


      Readings/Events:

      • data - Daten, die zu www.wunderground.com gesendet werden
      • response - Antwort, die vom Server empfangen wird


      Notizen

      • Die komplette API-Beschreibung findet sich hier
      • Viel Spaß!

    WWO

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

    Watches

    [EN DE]

    Das Modul Watches stellt Uhren in unterschiedlichen Stilen als Device zur Verfügung. Das Modul ist eine JavaScript Anwendung die auf einem Client (Browser) ausgeführt wird und nicht auf dem FHEM Server. Attribute und Readings werden asynchron vom Server gelesen und evtl. auch geschrieben, allerdings nur dann wenn die Anwendung aktuell im Browser ausgeführt wird.
    Der Nutzer kann das Design der Uhren über Attribute beeinflussen.
    Die Uhren basieren auf Skripten dieser Seiten:
    moderne Uhr, Bahnhofsuhr, Digitalanzeige

    Ein Device vom Model Digital kann ebenfalls als Stoppuhr, CountDown-Timer oder universelle Textanzeige (für Sechzehnsegment-Modus siehe Attribut digitalSegmentType) verwendet werden.
    Als Zeitquelle können sowohl der Client (Browserzeit) als auch der FHEM-Server eingestellt werden (Attribut timeSource).
      Define
        define <name> Watches [Modern | Station | Digital]

        Modern : erstellt eine analoge Uhr im modernen Design
        Station : erstellt eine Bahnhofsuhr
        Digital : erstellt eine Digitalanzeige (Uhr, (CountDown)Stoppuhr, statische Zeitanzeige oder Text)


      Set
        • alarmSet <hh> <mm> <ss>
          Setzt die Alarmzeit im Format hh-Stunden, mm-Minuten und ss-Sekunden.
          Erreicht die Zeit den definierten Wert, wird ein Event des Readings "alarmed" ausgelöst.
          Dieses Set-Kommando ist nur bei digitalen Stoppuhren vorhanden.

            Beispiel
            set <name> alarmSet 0 30 10


        • alarmDel
          Löscht die gesetzte Alarmzeit und deren Status.
          Dieses Set-Kommando ist nur bei digitalen Stoppuhren vorhanden.

        • countDownInit <hh> <mm> <ss> | <Sekunden>
          Setzt die Startzeit einer CountDown-Stoppuhr. Das Format kann sein <hh> Stunden, <mm> Minuten und <ss> Sekunden oder alternativ nur eine Angabe in Sekunden.
          Dieses Set-Kommando ist nur bei einer digitalen CountDown-Stoppuhr vorhanden.

            Beispiel
            set <name> countDownInit 0 30 10
            set <name> countDownInit 3600


        • displayTextSet
          Stellt den anzuzeigenden Text ein.
          Dieses Set-Kommando ist nur bei einer digitalen Segmentanzeige mit "digitalDisplayPattern = text" vorhanden.
          (default: leere Anzeige)

          Hinweis:
          Die darstellbaren Zeichen sind vom Attribut "digitalSegmentType" abhängig.
          Mit der (default) Siebensegmentanzeige können lediglich Ziffern, Bindestrich, Unterstrich und die Buchstaben A, b, C, d, E, F, H, L, n, o, P, r, t, U und Y angezeigt werden. Damit lassen sich außer Zahlen auch kurze Texte wie „Error“, „HELP“, „run“ oder „PLAY“ anzeigen.
          Für Textdarstellung wird empfohlen die Sechzehnsegmentanzeige mit dem Attribut "digitalSegmentType" einzustellen !

        • displayTextDel
          Löscht den Anzeigetext.
          Dieses Set-Kommando ist nur bei einer digitalen Segmentanzeige mit "digitalDisplayPattern = text" vorhanden.

        • reset
          Stoppt die Stoppuhr (falls sie läuft) und löscht alle spezifischen Readings bzw. setzt sie auf initialized zurück.
          Dieses Set-Kommando ist nur bei digitalen Stoppuhren vorhanden.

        • resume
          Setzt die Zählung einer angehaltenen Stoppuhr fort.
          Dieses Set-Kommando ist nur bei digitalen Stoppuhren vorhanden.

        • start
          Startet die Stoppuhr.
          Dieses Set-Kommando ist nur bei digitalen Stoppuhren vorhanden.

        • stop
          Stoppt die Stoppuhr. Die erreichte Zeit bleibt erhalten.
          Dieses Set-Kommando ist nur bei digitalen Stoppuhren vorhanden.

        • textTicker on | off
          Schaltet den Laufschriftmodus einer Textanzeige (siehe Attribut digitalDisplayPattern) ein bzw. aus.
          (default: off)

        • time <hh> <mm> <ss>
          Setzt eine statische Zeitanzeige mit hh-Stunden, mm-Minuten und ss-Sekunden.
          Dieses Set-Kommando ist nur bei einer Digitaluhr mit statischer Zeitanzeige vorhanden.

            Beispiel
            set <name> time 8 15 3


      Get
        N/A

      Attribute

        • controlButtonSize
          Ändert die Größe der Steuerdrucktasten sofern der Uhrentyp über Steuerdrucktasten verfügt.

        • disable
          Aktiviert/deaktiviert das Device.

        • hideButtons
          Verbirgt die Steuerdrucktasten sofern der Uhrentyp über Steuerdrucktasten verfügt.

        • hideDisplayName
          Verbirgt den Device/Alias-Namen (Link zur Detailansicht).

        • htmlattr
          Zusätzliche HTML Tags zur Größenänderung der Uhr / Anzeige.

            Beispiel:
            attr <name> htmlattr width="125" height="125"

        • timeAsReading
          Wenn gesetzt, wird eine angezeigte Uhrzeit in das Reading currtime geschrieben.

        • timeSource
          Wählt die Zeitquelle aus. Es kann die lokale Clientzeit (Browser) oder die Zeit des FHEM-Servers angezeigt werden.
          Diese Einstellung ist bei (CountDown-)Stoppuhren nicht relevant.
          (default: client)

        Die nachfolgenden Attribute sind spezifisch für einen Uhrentyp zu setzen.

        Model: Modern

        • modernColorBackground
          Hintergrundfarbe der Uhr.

        • modernColorFace
          Einfärbung des Ziffernblattes.

        • modernColorFigure
          Farbe der Ziffern im Ziffernblatt und der Zeigerachsabdeckung.

        • modernColorHand
          Farbe der UhrenZeiger.

        • modernColorRing
          Farbe des Ziffernblattrahmens.

        • modernColorRingEdge
          Farbe des Außenringes vom Ziffernblattrahmen.


        Model: Station

        • stationBody
          Art des Uhrengehäuses.

        • stationBoss
          Art und Farbe der Zeigerachsabdeckung.

        • stationHourHand
          Art des Stundenzeigers.

        • stationMinuteHand
          Art des Minutenzeigers.

        • stationMinuteHandBehavoir
          Verhalten des Minutenzeigers.

        • stationSecondHand
          Art des Sekundenzeigers.

        • stationSecondHandBehavoir
          Verhalten des Sekundenzeigers.

        • stationStrokeDial
          Auswahl des Ziffernblattes.


        Model: Digital

        • digitalBorderDistance
          Linker und rechter Abstand der digitalen Textanzeige vom Hintergrundrand.
          (default: 8)

        • digitalColorBackground
          Digitaluhr Hintergrundfarbe.

        • digitalColorDigits
          Farbe der Balkenanzeige in einer Digitaluhr.

        • digitalDigitAngle
          Stellt den Neigungswinkel der dargestellten Zeichen ein.
          (default: 9)

        • digitalDigitDistance
          Stellt den Zeichenabstand ein.
          (default: 2)

        • digitalDigitHeight
          Stellt die Zeichenhöhe ein.
          (default: 20)

        • digitalDigitWidth
          Stellt die Zeichenbreite ein.
          (default: 12)

        • digitalDisplayPattern [countdownwatch | staticwatch | stopwatch | text | watch]
          Umschaltung der Digitalanzeige zwischen einer Uhr (default), einer Stoppuhr, statischen Zeitanzeige oder Textanzeige. Der anzuzeigende Text im Modus Textanzeige kann mit
          set <name> displayText.

          Hinweis: Bei Textanzeige wird empfohlen das Attribut "digitalSegmentType" auf "16" zu stellen.

            countdownwatch : CountDown Stoppuhr
            staticwatch : statische Zeitanzeige
            stopwatch : Stoppuhr
            text : Anzeige eines definierbaren Textes
            watch : Uhr


        • digitalSegmentDistance
          Legt den Abstand zwischen den Segmenten fest.
          (default: 0.5)

        • digitalSegmentType
          Schaltet die Segmentanzahl der Digitalanzeige um.
          (default: 7)

        • digitalSegmentWidth
          Verändert die Breite der einzelnen Segmente.
          (default: 1.5)

        • digitalTextDigitNumber <Anzahl>
          Wenn <Anzahl> > 0 wird die Anzahl der Stellen einer Textanzeige (digitalDisplayPattern = text) fest eingestellt. Wenn <Anzahl> = 0 oder nicht gesetzt erfolgt die Festlegung automatisch. In diesem Fall erfolgt eine Adaption der Zeichengröße an die Anzahl abhängig von der eingestellten Displaygröße (siehe htmlattr).
          (default: 0)

    WaterCalculator

    [EN DE]
      Das WaterCalculator Modul berechnet den Verbrauch an Wasser und die verbundenen Kosten von einem oder mehreren Wasserzählern.

      Die Funktion des sogenannten Unterwasserzählers ist noch nicht implementiert. Daher müssen bei den Wasserkosten die Abwasserkosten mit einbezogen werden.
      Es ist kein eigenes Zählermodul sondern benötigt eine Regular Expression (regex or regexp) um das Reading mit dem kontinuierlich wachsenden Zählerstand von einem oder mehreren Wasserzählern zu finden.

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

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

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


      Intervalle kleiner als 10s werden ignoriert um Spitzen zu verhindern die von Blockaden des fhem Systems hervorgerufen werden (z.B. DbLog - reducelog).

      <
      Define
        define <name> WaterCalculator <regex>
          <name> : Der Name dieses Berechnungs-Device. Empfehlung: "myWaterCalculator".
          <regex> : Eine gültige Regular Expression (regex or regexp) von dem Event wo der Zählerstand gefunden werden kann
        Beispiel: define myWaterCalculator WaterCalculator myWaterCounter:countersA.*

      Set
        Die set - Funktion erlaubt individuelle Readings zu verändern um beispielsweise nach einem Stromausfall Werte zu korrigieren.
        Die set - Funktion funktioniert für Readings welche im CalculatorDevice gespeichert wurden und zum update des Offsets zwischen den Zählern.
        Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit set - Befehl gesetzt werden.
        Der Befehl "SyncCounter" errechnet und update den Offset. Hierbei einfach den Wert des mechanischen Zählers eingeben.

      Get
        Die get - Funktion liefert nur den Wert des jeweiligen Readings zurück.
        Die get - Funktion funktioniert nur für Readings welche im CalculatorDevice gespeichert wurden.
        Die Readings welche im Counter - Device gespeichert wurden, müssen individuell mit get - Befehl ausgelesen werden.

      Attributes
        Sollten die unten ausfeg&auuml;hrten Attribute bei der Definition eines entsprechenden Gerätes nicht gesetzt sein, so werden sie vom Modul mit Standard Werten automatisch gesetzt
        Zusätzlich können die globalen Attribute wie room verwendet werden.
        • BasicPricePerAnnum : Eine gültige float Zahl für die jährliche Grundgebühr in der gewählten Währung für die Wasser-Versorgung zum Endverbraucher.
          Dieser Wert stammt vom Wasserversorger und steht auf der Abrechnung.
          Der Standard Wert ist 0.00
        • Currency : Eines der vordefinerten Währungssymbole: [€,£,$].
          Der Standard Wert ist €
        • disable : Deaktiviert das device. Das Modul wird nicht mehr auf die Events reagieren die durch die Regular Expression definiert wurde.
          Der Standard Wert ist 0 = aktiviert.
        • WaterCounterOffset : Eine gültige float-Zahl für den Unterschied = Offset (Nicht der Unterschied zwischen Zählimpulsen) zwischen dem am mechanischen Wasserzählern und dem angezeigten Wert im Reading dieses Device.
          Der Offset-Wert wird wie folgt ermittelt: WOffset = WMechanisch - WModule
          Der Standard-Wert ist 0.00
        • WaterCubicPerCounts : Eine gültige float-Zahl für die Menge Kubik pro Zählimpulsen.
          Der Wert ist durch das mechanische Zählwerk des Wasserzählern vorgegeben. WaterCubicPerCounts = 0.001 bedeutet, dass jeder Zählimpuls ein Tausendstel eines Kubik ist (=Liter).
          Der Standard-Wert ist 1
        • WaterPricePerCubic : Eine gültige float-Zahl für den Preis pro Kubik Wasser.
          Hierbei müssen die Abwasserkosten mit einbezogen werden. Dieser Wert stammt vom Wasserversorger und steht auf der Abrechnung.
          Der Standard-Wert ist 2.00
        • MonthlyPayment : Eine gültige float-Zahl für die monatlichen Abschlagszahlungen in der gewählten Währung an den Wasserversorger.
          Der Standard-Wert ist 0.00
        • MonthOfAnnualReading : Eine gültige Ganz-Zahl für den Monat wenn der mechanische Wasserzähler jedes Jahr durch den Wasserversorger abgelesen wird.
          Der Standard-Wert ist 5 (Mai)
        • ReadingDestination : Eines der vordefinerten Device als Ziel der errechneten Readings: [CalculatorDevice,CounterDevice].
          Das CalculatorDevice ist das mit diesem Modul erstellte Device.
          Das CounterDevice ist das Device von welchem der mechanische Zähler ausgelesen wird.
          Der Standard-Wert ist CalculatorDevice.
        • WFRUnit : Ein Wert der vorgegebenen Auswahlliste: l/min (Liter/Minute), m³/min (Kubikmeter/Minute), m³/h (Kubikmeter/Stunde).
          Es definiert welcher Einheit verwendet werden soll und teilt den Wasserdurchsatz entsprechend.
          Der Standard-Wert ist l/min (Liter/Minute).
        • DecimalPlace : Eine gültige Ganz-Zahl für den die Anzahl der zu verwendenden Nachkommastellen.
          Der Standard-Wert is 3.

      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>_ConsumptionCostDayLast
      : Wasserkosten des letzten Tages.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionCostMeterLast
      : Wasserkosten der letzten Ableseperiode.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionCostMonthLast
      : Wasserkosten des letzten Monats.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionCostYearLast
      : Wasserkosten des letzten Kalenderjahres.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionCostDay
      : Wasserkosten in gewählter Währung seit Mitternacht des laufenden Tages.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionCostMeter
      : Wasserkosten in gewählter Währung seit Beginn der laufenden Ableseperiode.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionCostMonth
      : Wasserkosten in gewählter Währung seit Beginn des laufenden Monats.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionCostYear
      : Wasserkosten in gewählter Währung seit Beginn des laufenden Kalenderjahres.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionDay
      : Wasserverbrauch seit Beginn der aktuellen Tages (Mitternacht).
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionDayLast
      : Wasserverbrauch in qm des vorherigen Tages.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionMeter
      : Wasserverbrauch seit Beginn der aktuellen Ableseperiode.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionMeterLast
      : Wasserverbrauch in qm der vorherigen Ableseperiode.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionMonth
      : Wasserverbrauch seit Beginn des aktuellen Monats.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionMonthLast
      : Wasserverbrauch in qm des vorherigen Monats.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionYear
      : Wasserverbrauch seit Beginn des aktuellen Kalenderjahres.
        • <DestinationDevice>_<SourceCounterReading>_ConsumptionYearLast
      : Wasserverbrauch in qm des vorherigen Kalenderjahres.
        • <DestinationDevice>_<SourceCounterReading>_FinanceReserve
      : Finanzielle Reserve basierend auf den Abschlagszahlungen die jeden Monat an den Wasserversorger 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>_WFRCurrent
      : Aktueller Wasserdurchsatz. (Wasserdurchsatz basierend auf aktueller und letzter Messung)
        • <DestinationDevice>_<SourceCounterReading>_WFRDayAver
      : Mittlerer Wasserdurchsatz seit Mitternacht.
        • <DestinationDevice>_<SourceCounterReading>_WFRDayMax
      : Maximale Wasserdurchsatz seit Mitternacht.
        • <DestinationDevice>_<SourceCounterReading>_WFRDayMin
      : Minimale Wasserdurchsatz seit Mitternacht.

    Weather

    [EN DE]
      Hinweis: es wird das Perl-Modul JSON benötigt. Mit apt-get install libjson-perl kann es unter Debian und Derivaten installiert werden.

      Das Weather-Modul arbeitet mit verschiedenen Wetter-APIs zusammen:
      • DarkSky (Webseite, Standard)
      • OpenWeatherMap (Webseite)
      • Wunderground (Webseite)

      Eine solche virtuelle Wetterstation sammelt periodisch aktuelle Wetterdaten und Wettervorhersagen aus dem verwendeten API.

      Define



        define <name> Weather [API=<API>[,<apioptions>]] [apikey=<apikey>] [location=<location>] [interval=<interval>] [lang=<lang>]

        Die Parameter haben die folgende Bedeutung:
        APIName des Wetter-APIs, z.B. DarkSkyAPI
        apioptionsIndividuelle Optionen für das gewählte API
        apikeySchlüssel für das gewählte API
        locationOrt, für den das Wetter vorhergesagt wird. Abhängig vom API z.B. die Koordinaten, ein Ortsname oder eine ID.
        intervalDauer in Sekunden zwischen den einzelnen Aktualisierungen der Wetterdaten
        langSprache der Wettervorhersage: de, en, pl, fr, it oder nl

        Eine ganz einfache Definition ist:

        define <name> Weather apikey=<DarkSkyAPISecretKey>

        Bei dieser Definition wird die API von Dark Sky verwendet mit einem individuellen Schlüssel, den man sich auf der Webseite von Dark Sky beschaffen muss.

        Beispiele:
              define Forecast Weather apikey=987498ghjgf864
              define MyWeather Weather API=OpenWeatherMapAPI,cachemaxage:600 apikey=09878945fdskv876 location=52.4545,13.4545 interval=3600 lang=de
              define  Weather API=wundergroundAPI,stationId:IHAUIDELB111 apikey=ed64ccc80f004556a4e3456567800b6324a
            
        Es folgt die API-spezifische Dokumentation.

        Dark Sky

        APIDarkSkyAPI
        apioptionscachemaxage:<cachemaxage>
        Zeitdauer in Sekunden, innerhalb derer die Wettervorhersage nicht neu abgerufen sondern aus dem Cache zurück geliefert wird.
        location<latitude,longitude>
        Geographische Breite und Länge des Ortes in Grad, für den das Wetter vorhergesagt wird. Bei fehlender Angabe werden die Werte aus den gleichnamigen Attributen des global-Device genommen, sofern vorhanden.

        OpenWeatherMap

        APIOpenWeatherMapAPI
        apioptionscachemaxage:<cachemaxage> Zeitdauer in Sekunden, innerhalb derer die Wettervorhersage nicht neu abgerufen sondern aus dem Cache zurück geliefert wird. version:<version> API Version welche verwendet werden soll. Per Default 2.5, möglich ist noch 3.0 aber nur mit Zusatzsubscription endpoint:onecall nur zum testen ob der API Key welcher nicht offiziell für onecall ist nicht doch onecall über die API Version 2.5 unterstützt. WICHTIG!!! apioption version darf nicht auf 3.0 gesetzt werden
        location<latitude,longitude> Geographische Breite und Länge des Ortes in Grad, für den das Wetter vorhergesagt wird. Bei fehlender Angabe werden die Werte aus den gleichnamigen Attributen des global-Device genommen, sofern vorhanden.

        Wunderground

        APIwundergroundAPI
        apioptionscachemaxage:<cachemaxage> Zeitdauer in Sekunden, innerhalb derer die Wettervorhersage nicht neu abgerufen sondern aus dem Cache zurück geliefert wird.
        stationId:ID-Num
        die ID der Station von welcher die Daten gelesen werden sollen.
        location<latitude,longitude> Geographische Breite und Länge des Ortes in Grad, für den das Wetter vorhergesagt wird. Bei fehlender Angabe werden die Werte aus den gleichnamigen Attributen des global-Device genommen, sofern vorhanden.

        Das Modul unterstützt zusätzlich vier verschiedene Funktionen WeatherAsHtml, WeatherAsHtmlV, WeatherAsHtmlH und WeatherAsHtmlD. Die ersten beiden Funktionen sind identisch: sie erzeugen den HTML-Kode 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 Funktionen akzeptieren einen zusätzlichen optionalen Paramter um die Anzahl der darzustellenden Icons anzugeben.
        Zusätzlich erlauben die Funktionen 2 und 3 noch einen dritten Parameter (d oder h) welcher die Forecast-Art (h-Hourly oder d-Daily) mit an gibt.
        Wird der dritte Parameter verwendet muss auch der zweite Parameter für die Anzahl der darzustellenden Icons gesetzt werden.

        Beispiel:
              define MyWeatherWeblink weblink htmlCode { WeatherAsHtmlH("MyWeather","h",10) }
            

      Set

      • set <name> update

        Erzwingt eine Abfrage der Wetterdaten. Die darauffolgende Abfrage wird gemäß dem eingestellten Intervall interval Sekunden später durchgeführt.
      • set <name> newLocation latitude,longitude

        Gibt die Möglichkeit eine neue temporäre Location zu setzen. Das Wertepaar Latitude Longitude wird durch ein Komma getrennt übergeben. Wird kein Wert mitgegebn (leere Übergabe) wird automatisch die per Definition erkannte Location genommen


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

        .licenseLizenz des jeweiligen API-Anbieters, sofern vorhanden
        cityName der Stadt, der für die location ü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
        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_conditionWindrichtung und -geschwindigkeit
        wind_directionGradangabe der Windrichtung (0 = Nordwind)
        wind_speedWindgeschwindigkeit in km/h (mit wind identisch)
        validitystale, wenn der Veröffentlichungszeitpunkt auf dem entfernten Server vor dem Zeitpunkt der aktuellen Daten (readings) liegt

        Der Wochentag der Prognose wird in der Sprache Ihres FHEM-Systems angezeigt. Geben Sie zur Überprüfung {$ ENV {LANG}} in die Befehlszeile von FHEM ein. Wenn nichts angezeigt wird oder eine unerwartete Spracheinstellung angezeigt wird, fügen Sie export LANG = de_DE.UTF-8 oder etwas Ähnliches zu Ihrem FHEM-Startskript hinzu. Starten Sie FHEM erneut und überprüfen Sie es erneut. Wenn Sie beim Starten von FHEM eine Ländereinstellung erhalten, fehlt möglicherweise das erforderliche Sprachpaket. Sie kann abhängig von Ihrem Betriebssystem und Ihren Präferenzen installiert werden (z. B. Gebietsschemas dpkg-reconfigure, apt-get install language-pack-de oder ähnliches).
        Je nach verwendeter API ist es durchaus möglich, dass weitere readings geschrieben werden. Die Bedeutung dieser readings kann man der API-Beschreibung des Anbieters entnehmen.

      Attribute

      • disable - stellt die Abfrage der Wetterdaten ab - der Timer läft gemäß Plan doch es werden keine Daten vom API angefordert.
      • readingFnAttributes
      • forecast - hourly/daily, Anzeige von forecast Daten.
      • forecastLimit - Anzahl der Forecast-Datensätze welche als Reading geschrieben werden sollen.
      • alerts - 0/1 Sollen Alert Meldungen änlich Unwetterwarnung geschrieben werden.

    WeekdayTimer

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

    WifiLight

    [EN DE]

      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

    [EN DE]
      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

    Xiaomi BTLE Sensor

    [EN DE]
      XiaomiBTLESens - liest Daten von einem Xiaomi BTLE Sensor
      Dieser Modul liest Daten von einem Sensor und legt sie in den Readings ab.
      Auf dem (Linux) FHEM-Server werden gatttool und hcitool vorausgesetzt. (sudo apt install bluez)

      Define

        define <name> XiaomiBTLESens <BT-MAC>

        Beispiel:

          define Weihnachtskaktus XiaomiBTLESens C4:7C:8D:62:42:6F

        Der Befehl legt ein Device vom Typ XiaomiBTLESens mit dem Namen Weihnachtskaktus und der Bluetooth MAC C4:7C:8D:62:42:6F an.
        Nach dem Anlegen des Device und setzen des korrekten model Attributes werden umgehend und automatisch die aktuellen Daten vom betroffenen Xiaomi BTLE Sensor gelesen.


      Readings
      • state - Status des BTLE Sensor oder eine Fehlermeldung falls Fehler beim letzten Kontakt auftraten.
      • batteryState - aktueller Batterie-Status in Abhängigkeit vom Wert batteryLevel.
      • batteryPercent - aktueller Ladestand der Batterie in Prozent.
      • fertility - Wert des Fruchtbarkeitssensors (Bodenleitfähigkeit)
      • firmware - aktuelle Firmware-Version des BTLE Sensor
      • lastGattError - Fehlermeldungen vom gatttool
      • lux - aktuelle Lichtintensität
      • moisture - aktueller Feuchtigkeitswert
      • temperature - aktuelle Temperatur


      Set
      • resetBatteryTimestamp - wenn die Batterie gewechselt wurde
      • devicename - setzt einen Devicenamen



      Get
      • sensorData - aktive Abfrage der Sensors Werte
      • devicename - liest den Devicenamen aus
      • firmware - liest die Firmeware aus



      Attribute
      • disable - deaktiviert das Device
      • interval - Interval in Sekunden zwischen zwei Abfragen
      • disabledForIntervals - deaktiviert das Gerät für den angegebenen Zeitinterval (13:00-18:30 or 13:00-18:30 22:00-23:00)
      • minFertility - min Fruchtbarkeits-Grenzwert für ein Ereignis minFertility low
      • hciDevice - Auswahl bei mehreren Bluetooth Dongeln
      • model - setzt das Model
      • maxFertility - max Fruchtbarkeits-Grenzwert für ein Ereignis maxFertility high
      • minMoisture - min Feuchtigkeits-Grenzwert für ein Ereignis minMoisture low
      • maxMoisture - max Feuchtigkeits-Grenzwert für ein Ereignis maxMoisture high
      • minTemp - min Temperatur-Grenzwert für ein Ereignis minTemp low
      • maxTemp - max Temperatur-Grenzwert für ein Ereignis maxTemp high
      • minlux - min Helligkeits-Grenzwert für ein Ereignis minlux low
      • maxlux - max Helligkeits-Grenzwert für ein Ereignis maxlux high

        Beispiele für min/max-Ereignisse:
        2017-03-16 11:08:05 XiaomiBTLESens Dracaena minMoisture low
        2017-03-16 11:08:06 XiaomiBTLESens Dracaena maxTemp high

      • sshHost - FQDN oder IP-Adresse eines entfernten SSH-Systems. Das SSH-System ist auf eine Zertifikat basierte Authentifizierung zu konfigurieren. Am elegantesten geschieht das mit einer .ssh/config Datei auf dem SSH-Client.
      • batteryFirmwareAge - wie alt soll der Timestamp des Readings sein bevor eine Aktuallisierung statt findet
      • blockingCallLoglevel - Blocking.pm Loglevel für BlockingCall Logausgaben

    XiaomiDevice

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

    XmlList

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

    YAAHM

    [EN DE]
      Deutsche Dokumentation im Wiki vorhanden, die englische Version gibt es hier: YAAHM

    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
        • extraBass auto,off   -   Aktiviert den Extra Bass
        • ypaoVolume auto,off   -   Aktiviert YPAO Lautstärke
        • displayBrightness -4...0   -   Steuert die Helligkeitsreduzierung des Front-Displays
        • partyMode on|off   -  Aktiviert den Party Modus. In der Main Zone wird hierbei der Party Modus geräteweit aktiviert oder deaktiviert. In den anderen Zonen kann man damit die entsprechende Zone dem Party Modus zuschalten oder entziehen.
        • navigateListMenu [Element 1]/[Element 2]/.../[Element N]   -   Wählt ein spezifisches Element aus einer Menüstruktur aus. Nur verwendbar bei Menü-basierenden Eingängen (z.B. Net Radio, USB, Server, etc.). Siehe nachfolgendes Kapitel "Automatische Menü Navigation" für weitere Details und Beispiele.
        • tunerFrequency [Frequenz] [AM|FM]   -   setzt die Radio-Frequenz. Das erste Argument ist die Frequenz, der zweite dient optional zu Angabe des Bandes (AM oder FM, standardmäßig FM). Abhängig davon, welches Band man benutzt, wird die Frequenz in kHz (AM-Band) oder MHz (FM-Band) angegeben. Wenn im zweiten Argument kein Band angegeben ist, wird standardmäßig das FM-Band benutzt. Dieser Befehl kann auch benutzt werden, wenn der aktuelle Eingang nicht "tuner" ist. Die neue Frequenz wird dennoch gesetzt und bei der nächsten Benutzung abgespielt.
        • tunerFrequencyBand FM|DAB   -   setzt das zu nutzende Frequenzband bzw. Empfangstechnologie für den Radioempfang ("FM" f&uumLr analoge Frequenzmodulation oder "DAB" für digitalen Radioempfang). Nur verfügbar wenn DAB unterstüzt wird.
        • preset 1...40   -   wählt ein gespeichertes Preset für den aktuellen Eingang aus.
        • presetUp   -   wählt das nächste Preset für den aktuellen Eingang aus.
        • presetDown   -   wählt das vorherige Preset für den aktuellen Eingang aus.
        • direct on,off   -   Umgeht alle internen soundverbessernden Maßnahmen (Equalizer, Enhancer, Adaptive DRC,...) und gibt das Signal unverfälscht wieder
        • input hdmi1,hdmiX,...   -   Wählt den Eingangskanal (es werden nur die tatsächlich verfügbaren Eingänge angeboten)
        • hdmiOut1 on,off   -   Aktiviert die Ausgabe via HDMI Ausgang 1
        • hdmiOut2 on,off   -   Aktiviert die Ausgabe via HDMI Ausgang 2
        • scene scene1,sceneX   -   Wählt eine vorgefertigte Szene aus
        • surroundDecoder dolbypl,...   -   Setzt den Surround Decoder, welcher genutzt werden soll sofern der DSP Modus "Surround Decoder" aktiv ist.
        • volume 0...100 [direct]   -   Setzt die Lautstärke in Prozent (0 bis 100%). Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
        • volumeStraight -87...15 [direct]   -   Setzt die Lautstärke in Dezibel (-80.5 bis 15.5 dB) so wie sie am Receiver auch verwendet wird. Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
        • volumeUp [0...100] [direct]   -   Erhöht die Lautstärke um 5% oder entsprechend dem Attribut volumeSteps (optional kann der Wert auch als Argument angehangen werden, dieser hat dann Vorang). Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
        • volumeDown [0...100] [direct]   -   Veringert die Lautstärke um 5% oder entsprechend dem Attribut volumeSteps (optional kann der Wert auch als Argument angehangen werden, dieser hat dann Vorang). Wenn als zweites Argument "direct" gesetzt ist, wird keine weiche Lautstärkenanpassung durchgeführt (sofern aktiviert). Die Lautstärke wird in diesem Fall sofort gesetzt.
        • mute on,off,toggle   -   Schaltet den Receiver stumm
        • bass [-6...6] Schrittweite 0.5 (main zone), [-10...10] Schrittweite 2 (andere Zonen), [-10...10] Schrittweite 1 (andere Zonen, DSP Modelle)   -   Stellt die Tiefen in decibel ein
        • treble [-6...6] Schrittweite 0.5 (main zone), [-10...10] Schrittweite 2 (andere Zonen), [-10...10] Schrittweite 1 (andere Zonen, DSP Modelle)   -   Stellt die Höhen in decibel ein
        • straight on,off   -   Umgeht die interne Codec-Umwandlung und gibt den Original-Codec wieder.
        • sleep off,30min,60min,...,last   -   Aktiviert den internen Sleep-Timer zum automatischen Abschalten
        • shuffle on,off   -   Aktiviert die Zufallswiedergabe des aktuellen Eingangs (ist nur eingangsabhängig verfügbar)
        • repeat one,all,off   -   Wiederholt den aktuellen (one) oder alle (all) Titel des aktuellen Eingangs (ist nur eingangsabhängig verfügbar)
        • pause   -   Wiedergabe pausieren (ist nur eingangsabhängig verfügbar)
        • play   -   Wiedergabe starten (ist nur eingangsabhängig verfügbar)
        • stop   -   Wiedergabe stoppen (ist nur eingangsabhängig verfügbar)
        • skip reverse,forward   -   Aktuellen Titel überspringen (ist nur eingangsabhängig verfügbar)
        • statusRequest   -   Fragt den aktuell Status des Receivers ab
        • remoteControl up,down,...   -   Sendet Fernbedienungsbefehle wie im nächsten Abschnitt beschrieben


      Fernbedienung (je nach Modell nicht in allen Zonen verfügbar)

        Cursor Steuerung:

          remoteControl up
          remoteControl down
          remoteControl left
          remoteControl right
          remoteControl enter
          remoteControl return


        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

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


      • volumeSmoothChange
        Optionales Attribut, welches einen weichen Lautstärkeübergang aktiviert

        Mögliche Werte: 0 => deaktiviert , 1 => aktiviert


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


      • volumeMax
        Optionales Attribut, welches eine maximale Obergrenze in Prozent für die Lautstärke festlegt. Wird versucht die Lautstärke auf einen höheren Wert zu setzen, so wird die Lautstärke dennoch die konfigurierte Obergrenze nicht überschreiten.

        Mögliche Werte: 0-100%. Standardwert ist 100% (keine Begrenzung)


      Generierte Readings/Events:

      • 3dCinemaDsp - Der Status des CINEMA DSP 3D-Modus ("auto" => an, "off" => aus)
      • adaptiveDrc - Der Status des Adaptive DRC ("auto" => an, "off" => aus)
      • bass Der aktuelle Basspegel, zwischen -6 and 6 dB (main zone) and -10 and 10 dB (andere Zonen)
      • direct - Zeigt an, ob soundverbessernde Features umgangen werden oder nicht ("on" => soundverbessernde Features werden umgangen, "off" => soundverbessernde Features werden benutzt)
      • displayBrightness - Status der Helligkeitsreduzierung des Front-Displays (-4 => maximale Reduzierung, 0 => keine Reduzierung)
      • dsp - Das aktuell aktive DSP Preset
      • enhancer - Der Status des Enhancers ("on" => an, "off" => aus)
      • extraBass - Der Status des Extra Bass ("auto" => an, "off" => aus)
      • input - Der ausgewählte Eingang entsprechend dem FHEM-Kommando
      • inputName - Die Eingangsbezeichnung, so wie sie am Receiver eingestellt wurde und auf dem Display erscheint
      • hdmiOut1 - Der Status des HDMI Ausgang 1 ("on" => an, "off" => aus)
      • hdmiOut2 - Der Status des HDMI Ausgang 2 ("on" => an, "off" => aus)
      • 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.
      • straight - Zeigt an, ob die interne Codec Umwandlung umgangen wird oder nicht ("on" => Codec Umwandlung wird umgangen, "off" => Codec Umwandlung wird benutzt)
      • sleep - Zeigt den Status des internen Sleep-Timers an
      • surroundDecoder - Zeigt den aktuellen Surround Decoder an
      • state - Der aktuelle Schaltzustand (power-Reading) oder die Abwesenheit des Gerätes (mögliche Werte: "on", "off" oder "absent")
      • tunerFrequency - Die aktuelle Empfangsfrequenz für Radio-Empfang in kHz (AM-Band) oder MHz (FM-Band)
      • tunerFrequencyBand - Das aktuell genutzte Radio-Band ("AM", "FM" oder "DAB" sofern unterstüzt)
      • treble Der aktuelle Höhenpegel, zwischen -6 and 6 dB (main zone) and -10 and 10 dB (andere Zonen)
      • volume - Der aktuelle Lautstärkepegel in Prozent (zwischen 0 und 100 %)
      • volumeStraight - Der aktuelle Lautstärkepegel in Dezibel (zwischen -80.0 und +15 dB)
      • ypaoVolume - Der Status der YPAO Lautstärke ("auto" => an, "off" => aus)

      • Eingangsabhängige Readings/Events:

      • currentChannel - Nummer des Eingangskanals (nur bei SIRIUS)
      • currentStation - Name des Radiosenders (nur bei TUNER, HD RADIO, NET RADIO oder PANDORA)
      • currentStationFrequency - Die Sendefrequenz des aktuellen Radiosender (nur bei Tuner oder HD Radio)
      • currentAlbum - Album es aktuell gespielten Titel
      • currentArtist - Interpret des aktuell gespielten Titel
      • currentTitle - Name des aktuell gespielten Titel
      • playStatus - Wiedergabestatus des Eingangs
      • shuffle - Status der Zufallswiedergabe des aktuellen Eingangs
      • repeat - Status der Titelwiederholung des aktuellen Eingangs

      Hinweise des Autors
        Dieses Modul ist nur nutzbar, wenn die Option "Network Standby" am Receiver aktiviert ist. Ansonsten ist die Steuerung nur im eingeschalteten Zustand möglich.

    YAMAHA_BD

    [EN DE]
      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_MC

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

    YAMAHA_NP

    [EN DE]
      Define

        define <name> YAMAHA_NP <ip–address> [<status_interval>]

        Alternatitv mit unterschiedlichen off/on Intervalldefinitionen (Default 30 Sek).

        define <name> YAMAHA_NP <ip–address> [<off_status_interval>] [<on_status_interval>]

        Dieses FHEM–Modul steuert einen Yamaha Network Player (z.B. MCR–N560, MCR–N560D, CRX–N560, CRX–N560D, CD–N500 or NP–S2000) im lokalen Netzwerk.
        Geräte, die das Kommunikationsprotokoll der Yamaha Network Player App für i*S und Andr*id implementieren, sollten ebenfalls unterstützen werden können.

        Beispiel:

          define NP_Player YAMAHA_NP 192.168.0.15
          attr NP_player webCmd input:selectStream:volume

          # Mit einem Statusintervall von 60 Sek.
          define NP_Player YAMAHA_NP 192.168.0.15 60
          attr NP_player webCmd input:selectStream:volume

          # Mit unterschiedlichen Statusintervallen für off/on, 60/10 Sekunden
          define NP_Player YAMAHA_NP 192.168.0.15 60 10
          attr NP_player webCmd input:selectStream:volume

      Set

        set <name> <command> [<parameter>]

        Bemerkung: Bei den Befehlen und Parametern ist die Groß–/Kleinschreibung zu bachten. Das Modul zeigt ausschließlich verfügbare Eingänge, die vom jeweiligen Gerät unterstützt werden. Darüber hinaus sind die Befehle kontextsensitiv, abhängig von dem jeweils gewählten Eingang bzw. Betriebsmodus.

          Verfügbare Befehle:

        • CDTray – Öffnen und Schließen des CD–Fachs.
        • checkForNewFirmware – Prüft die Verfügbarkeit neuer Firmware. Das Ergebnis wird in 'Internals' and 'deviceInfo' gespeichert.
        • clockUpdate – Aktualisierung der Systemzeit des Network Players. Die Zeitinformation wird von dem FHEM Server bezogen, auf dem das Modul ausgeführt wird.
        • dimmer [1..3] – Einstellung der Anzeigehelligkeit
        • directPlay < input:Stream Level 1,Stream Level 2,... > – ermöglicht direktes Abspielen eines Audiostreams/einer Audiodatei z.B. CD:1, DAB:1, netradio:Bookmarks,SWR3
        • favoriteDefine < name:input[,Stream Level 1,Stream Level 2,...] > – Speichert einen Favoriten e.g. CoolSong:CD,1 (vordefinierte Favoriten sind die verfügbaren Eingänge)
        • favoriteDelete < name > – Löscht einen Favoriten
        • favoritePlay < name > – Spielt einen Favoriten ab
        • friendlyName < name> – Setzt den Gerätenamen (friendly name / network name). String muss zwischen einem und 15 Zeichen sein.
        • input [<parameter>] – Auswahl des Eingangs des Network Players. (Nicht verfügbar beim ausgeschaltetem Gerät)
        • mute [on|off] – Aktiviert/Deaktiviert die Stummschaltung
        • off – Network Player ausschalten
        • on – Network Player einschalten
        • player [<parameter>] – Setzt Player relevante Befehle.
          • play – play
          • stop – stop
          • pause – pause
          • next – nächstes Audiostück
          • prev – vorheriges Audiostück
        • playMode [<parameter>] – Setzt Player relevante Befehle
          • shuffleAll – setzt shuffle
          • shuffleOff – setzt no Shuffle mode
          • repeatOff – repeat off
          • repeatOne – repeat one
          • repeatAll – repeat all
        • selectStream – Direkte kontextsensitive Streamauswahl. Verügbare Menüeinträge werden automatisch generiert. Bedingt durch das KOnzept des Yamaha–Protokolls kann dies etwas Zeit in Anspruch nehmen. (Defaultmässig auf 999 Listeneintäge limitiert. s.a. maxPlayerLineItems Attribut.)
        • sleep [off|30min|60min|90min|120min] – Aktiviert/Deaktiviert den internen Sleep–Timer
        • soundBalance <-10..10> – Setzt balance
        • soundEnhancer [on|off] – Music Enhancer on|off
        • soundEqLow <-10..10> – Setzt EQ Low band
        • soundEqMid <-10..10> – Setzt EQ Mid band
        • soundEqHigh <-10..10> – Setzt EQ High band
        • 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.)
        • timerSet – konfiguriert den Timer nach den Vorgaben: timerHour, timerMinute, timerRepeat, timerVolume (s. entprechende Attribute). (ALLE Attribute müssen zuvor gesetzt sein. Dieser Befehl schaltet den Timer nicht ein → 'timer on'.)
        • timer [on|off] – Schaltet ein/aus den internen Wake–up Timer. (Bemerkung: Der Timer wird basierend auf den im Gerät gespeicherten Parametern aktiviert. Um diese zu ändern, bitte den 'timerSet' Befehl benutzen.)
        • tunerFMFrequency [87.50 ... 108.00] – Setzt die FM Frequenz. Der Wert muss zwischen 87.50 ... 108.00 liegen und muss den Digitalpunkt beinhalten ('.') mit zwei Nachkommastellen.
        • volume [0...100] – Setzt den relativen Lautstärkepegel in %
        • volumeStraight [<VOL_MIN>...<VOL_MAX>] – Setzt die absolute Lautstärke wie vom Gerät benutzt und angezeigt. Die Parameter <VOL_MIN> and <VOL_MAX> werden automatisch ermittelt.
        • volumeUp [<VOL_MIN>...<VOL_MAX>] – Erhöht die Lautstärke um einen absoluten Schritt. Die Parameter <VOL_MIN> and <VOL_MAX> werden automatisch ermittelt.
        • volumeDown [<VOL_MIN>...<VOL_MAX>] – Reduziert die Lautstärke um einen absoluten Schritt. Die Parameter <VOL_MIN> and <VOL_MAX> werden automatisch ermittelt.

      Get
        get <name> <reading>

        Der 'get' Befehl liest Readingwerte zurück. Die Readings sind kontextsensitiv und hängen von dem/der jeweils gewählten Eingang bzw. Aktion ab.

      Attributes

        • .DABList – (internes) Attribut zum Speichern von DAB Presets
        • .favoriteList – (internes) Attribut zum Speichern von Favoriten
        • autoUpdatePlayerReadings – optionales Attribut zum automtischen aktualisieren der Player–Readings (Default 1)
        • autoUpdatePlayerlistReadings – optionales Attribut zum automatischen Scannen der Playerlist (Menü) (Default 1). (Aufgrund des Kommunikationskonzeptes bei der Übertragung der Playerlistinformation kann diese Funktion zu längeren Reaktionszeiten bei der Yamaha App führen, wenn gleichzeitig auf den Netzwerkplayer zugegriffen wird.)
        • autoUpdateTunerReadings – optionales Attribut zum automtischen aktualisieren der Tuner–Readings (Default 1)
        • directPlaySleepNetradio – optionales Attribut zum Definieren der Sleep-Zeit zwischen zwei netradio Anfragen zum vTuner Server, wenn der Befehl directPlay benutzt wird. Kann bei langsamen Interneverbindungen nützlich sein. (Default 5 Sek.).
        • directPlaySleepServer – optionales Attribut zum Definieren der Sleep-Zeit zwischen zwei Multimediaserver-Anfragen, wenn der Befehl directPlay benutzt wird. Kann bei langsamen Verbindungen nützlich sein. (Default 2 Sek.).
        • disable – optionales Attribut zum Deaktivieren des internen zyklischen Timers zum Aktualisieren des NP–Status. Manuelles Update ist nach wie vor möglich. Mögliche Werte: 0 → Zyklisches Update aktiv., 1 → Zyklisches Update inaktiv (Default 1).
        • do_not_notify
        • maxPlayerListItems – optionales Attribut zum Limitieren der maximalen Anzahl von Menüeinträgen (Default 999).
        • readingFnAttributes
        • requestTimeout – optionales Attribut zum setzen des HTTP response Timeouts (Default 4)
        • searchAttempts – optionales Attribut zur Definition von max. Anzahl der Suchversuche des angegebenen Direktoryinhalts bei der Benutzng des directPlay Befehls. Mögliche Werte: 15...100 (Default 15 Sek.).
        • smoothVolumeChange – optionales Attribut zur sanften Lautstärkeänderung (Erzeugt deutlich mehr Ethernetkommunikation während der Lautstärkeänderung). (Default 1)
        • timerHour [0...23] – Setzt die Stunde des internen Wake–up Timers
        • timerMinute [0...59] – Setzt die Minute des internen Wake–up Timers
        • timerRepeat [once|every] – Setzt den Wiederholungsmodus des internen Wake–up Timers

      Readings

          Generelle Readings:

        • deviceInfo – Devicespezifische, konsolidierte Informationen wie z.B. uuid, IP–Adresse, usw.
        • favoriteList – Listet gespeicherte Favoriten auf
        • reading [reading] – Gibt Readingwerte zurück

          • .volumeStraightMax – Devicespezifische maximale Lautstärke
          • .volumeStraightMin – Devicespezifische minimale Lautstärke
          • .volumeStraightStep – Devicespezifischer minimales Lautstärkenin–/dekrement
          • audioSource – Konsolidierte Audiostreaminformation mit aktuell gewähltem Eingang, Playerstatus (wenn aktiv) und Mute Information. (off|reading status...|input [(play|stop|pause[, muted])]])
          • directPlay – Status des directPlay Befehls
          • input – Aktuell gewählter Eingang
          • mute – Mute status
          • power – Aktueller Devicestatus (on|off)
          • presence – Geräteverfügbarkeit im Netzwerk (present|absent)
          • selectStream – Status des selectStream Befehls
          • soundEqLow – Balance Wert
          • soundEnhancer – Music Enhancer on|off
          • soundEqLow – Equalizer Wert Low band
          • soundEqMid – Equalizer Wert Mid band
          • soundEqHigh – Equalizer Wert High band
          • sleep – Sleeptimer Wert (off|30 min|60 min|90 min|120 min)
          • standbyMode – Standby Mode Status (normal|eco)
          • state – Aktueller Gerätezusand (on|off)
          • volume – Relative Lautstärke [0 ... 100]
          • volumeStraight – Devicespezifische absolute Lautstärke [<VOL_MIN>...<VOL_MAX>]

          Playerspezifische Readings:

        • playerPlaybackInfo – Abfrage des aktuellen Player Status (play|stop|pause)
        • playerAlbum – Abfrage des Albumnamens (falls verfügbar) der aktuellen Wiedergabe
        • playerAlbumArtURL – Abfrage der Album URL (falls verfügbar) der aktuellen Wiedergabe
        • playerAlbumArtID – Abfrage der AlbumArtID (falls verfügbar) der aktuellen Wiedergabe
        • playerAlbumArtFormat – Abfrage des AlbumArt Formats (falls verfügbar) der aktuellen Wiedergabe
        • playerArtist – Abfrage des Künstler (Artist) (falls verfügbar) der aktuellen Wiedergabe
        • playerDeviceType – Abfrage des Device Typs (ipod|msc)
        • playerIpodMode – Abfrage des iP*d/iPh*ne Modus (normal|off)
        • playerPlayTime – Abfrage der aktuellen Spielzeit (HH:MM:SS)
        • playerRepeat – Abfrage des Wiederholungsmodus (one|all)
        • playerShuffle – Abfrage des Zufallswiedergabemodus (on|off)
        • playerSong – Abfrage des Tracknamens (falls verfügbar) der aktuellen Wiedergabe
        • playerTotalTracks – Abfrage der Gesamtzahl der zu wiedergebenden Tracks
        • playerTrackNb – Abfrage der Audiotracknummer

        • Playerlistspezifische (Menü) Readings:

        • listItem_XXX – Inhalt der Menüeinträge. Prefix 'c_' steht für Container (Directory), Prefix 'i_' für Item (Audiofile/Stream). Die Anzahl kann mit dem Attribut 'maxPlayerLineItems' limitiert werden (Default 999).
        • lvlX_ – Zeigt den hierarchischen Directorylevel im Directory Tree an

        • Tunerspezifische Readings:

        • listItem_XXX – Gespeicherter Preset
        • tunerBand – Tuner Band (DAB|FM)

        • DAB
          • tunerDABStation – (DAB|DAB+), Channel: (value), Ensemble: (name)
          • tunerDABSignal – (Frequenz), (Signalqualitä), (Bitrate), (Mono|Stereo)
          • tunerInfo1 – DAB program service
          • tunerPreset – (Preset number DAB Frequenz Sender) oder '–' wenn aktueller Sender nicht als Preset gespeichert wurde
          • tunerStation – DAB Sendername

        • FM
          • tunerFrequency – FM Frequenz
          • tunerInfo1 – FM Sendername
          • tunerInfo2_A – Zusätzliche RDS Information A
          • tunerInfo2_A – Zusätzliche RDS Information B
          • tunerPreset – (Presetnummer FM Frequenz Sender) oder '–' wenn aktueller Sender nicht als Preset gespeichert wurde

          Timerspezifische Readings:

        • timer – Aktueller Timerstatus (on|off)
        • timerRepeat – Timer repeat mode (once|every)
        • timerStartTime – Timer Startzeit HH:MM
        • timerVolume – Timerlautstärke [<VOL_MIN>...<VOL_MAX>]

    ZM_Monitor

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

    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

    ZoneMinder

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

    alarmclock

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

    alexa

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

    allergy

    [EN DE]

      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.

      • date
        Vorhersage-End-Datum bei alternativer Datenquelle


      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.

      • alternative3Day (Standard: 0|1)
        Alternative Datenquelle mit 3-Tage-Vorhersage.

    allowed

    [EN DE]

      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
      • basicAuth <username> <password>
      • password <password>
      • globalpassword <password>
        diese Befehle setzen das entsprechende Attribut, indem sie aus den Parameter und ein Salt ein SHA256 Hashwert berechnen. Achtung: das perl Modul Digest::SHA wird benötigt.

      Get
        N/A

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

      • allowedDevicesRegexp
        Regexp um die Geräte zu spezifizieren, die man bearbeiten darf. Das Regexp wird (wie in FHEM üblich) mit ^ und $ ergänzt.

      • allowedIfAuthenticatedByMe
        Per Voreinstellung (Wert ist 1) werden die Regel nur dann angewendet, falls die Authentifikation (per Benutzername / Passwort) durch diese allowed Instanz erfolgte. Falls der Wert 0 ist, werden die Regel in jedem Fall angewendet. Das ist z.Bsp. dann notwendig, falls kein Benutzername/Passwort gesetzt ist.

      • basicAuth, basicAuthMsg
        Erzwingt eine Authentifizierung mit Benutzername/Passwort für die zugerdnete FHEMWEB Instanzen. Der Wert kann entweder das base64 kodierte Benutzername:Passwort sein, ein SHA256 hash (was man am besten mit dem passenden set Befehl erzeugt), oder, falls er in {} eingeschlossen ist, ein Perl Ausdruck. Für Letzteres wird $user und $passwort gesetzt, und muss wahr zurückliefern, falls Benutzername und Passwort korrekt sind. Beispiele:
          attr allowed basicAuth ZmhlbXVzZXI6c2VjcmV0
          attr allowed basicAuth SHA256:F87740B5:q8dHeiClaPLaWVsR/rqkzcBhw/JvvwVi4bEwKmJc/Is
          attr allowed basicAuth {"$user:$password" eq "fhemuser:secret"}
        basicAuthMsg wird (in manchen Browsern) in dem Passwort Dialog als Überschrift angezeigt.

      • disable
        disable

      • disabledForIntervals

      • password
        Betrifft nur telnet Instanzen (siehe validFor): Bezeichnet ein Passwort, welches als allererster String eingegeben werden muss, nachdem die Verbindung aufgebaut wurde. Für die Werte gelten die Regeln von basicAuth, mit der Ausnahme, dass nur Passwort und kein Benutzername spezifiziert wird.
        Falls dieser Parameter gesetzt wird, sendet FHEM telnet IAC Requests, um ein Echo während der Passworteingabe zu unterdrücken. Ebenso werden alle zurückgegebenen Zeilen mit \r\n abgeschlossen.
        Falls dieses Attribut gesetzt wird, muss als erstes Argument ein Passwort angegeben werden, wenn fhem.pl im Client-mode betrieben wird:
          perl fhem.pl localhost:7072 secret "set lamp on"

      • reportAuthAttempts {1|2|3}
        If set to 1 or 3, each successful Authentication attempt will generate a FHEM event. If set to 2 or 3, generates an event on each unsuccesful Auth attempt.
      • globalpassword
        Betrifft nur telnet Instanzen (siehe validFor): Entspricht dem Attribut password; ein Passwort wird aber ausschließlich für nicht-lokale Verbindungen verlangt.

      • validFor
        Komma separierte Liste von Frontend-Instanznamen. Aktuell werden nur Frontends unterstützt, die das FHEM TCP/IP Bibliothek verwenden, z.Bsp. telnet und FHEMWEB. Falls nicht gesetzt, ist die allowed Instanz nicht aktiv.

    apptime

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

    archetype

    [EN DE]
      archetype (lt. Duden Synonym u.a. für: Urbild, Urform, Urgestalt, Urtyp, Ideal, Inbegriff, Musterbild, Vorbild) kann:
      • Attribute vom archetype auf andere Geräte übertragen und/oder
      • neue Geräte (auch z.B. solche, die von autocreate erzeugt werden)
        • nach einem bestimmten Muster anlegen
        • mit Standardattributen versorgen
        • mit Standardattributen und/oder Reading-Werte initialisieren
      • vorhandene Abweichungen zu gewünschten Standard-Attribut-Inhalten aufzeigen und beheben

      Die verwendeten Begriffe sind angelehnt an Vererbung in der Programmierung. Mit einem archetype werden Attribute auf Erben (inheritors), andere Geräte, übertragen. Die Erben können, nach einem vorgegeben Muster im archetype und für Beziehungen (relations), eine bestimmte Gruppe von Geräten, definiert werden.

      Folgende Variablen können für Übertragungsvorgänge genutzt werden:
      • $name Name des Erben
      • $room Raum der Beziehung
      • $relation Name der Beziehung
      • $SELF Name des archetype

      Hinweis: Für in Teilen ähnliche Funktionalitäten siehe auch die Kommandos setdefaultattr sowie template.

      Befehle

        archetype <clean or check>
        Definiert für alle Beziehungen aller archetype die Erben, vererbt für alle archetype die unter dem Attribut attributes angegeben Attribute auf alle Erben.
        Wird optinal der Parameter "check" angegeben werden alle ausstehenden Attribute und Erben angezeigt.

      Define

        define <name> archetype [<devspec>] [<devspec>] [...]
        In den <devspec> werden alle Erben beschrieben die es für dieses archetype gibt. Es sollte darauf geachtet werden, dass jeder Erbe nur einem archetype zugeordnet ist und keine widerstreitenden Angaben für diesselben Attribute aus unterschiedlichen archetype abgeleitet werden sollen. .
        Wird keine <devspec> angegeben wird diese mit "defined_by=$SELF" gesetzt. Diese devspec wird auch immer überprüft, selbst wenn sie nicht angegeben ist.
        Siehe den Abschnitt über Geräte-Spezifikation für Details zu <devspec>.

        define <name> archetype derive attributes
        Wird in der DEF "derive attributes" angegeben, handelt es sich um ein besonderes archetype. Es leitet Attribute anhand eines Musters ab.
        Das Muster wird mit den Attributen actual_.+ beschrieben.
        Als Erben werden alle Geräte aufgelistet welche alle Pflicht- Attribute eines Musters besitzen.

      Set

      • addToAttrList <attribute>
        Der Befehl ist nur bei einem archetype mit der DEF "derive attributes" möglich.
        Fügt global einen Eintrag unter userattr hinzu, sodass er für alle Geräte zur Verfügung steht.
        Dies kann sinnvoll sein, um (z.B.) den alias nach einem Muster abzuleiten.

      • define inheritors
        Definiert für alle Beziehungen einen Erben nach dem Muster:
          define <metaNAME> <actualTYPE> [<metaDEF>]
        Wenn ein Erbe definiert wird, wird er mit den unter dem Attribut initialize angegebenen Befehlen initialisiert und ihm wird das Attribut defined_by mit dem Wert $SELF zugewiesen.
        Die Beziehungen (metaNAME, metaTYPE und metaDEF) werden in den gleichnamigen Attributen beschrieben.

      • derive attributes
        Der Befehl ist nur bei einem archetype mit der DEF "derive attributes" möglich.
        Leitet für alle Erben die unter dem Attribut attributes angegeben Attribute ab.

      • inheritance
        Vererbt die eigenen unter dem Attribut attributes angegeben Attribute auf alle Erben. Dabei werden - wenn vorhanden - die Vorgaben aus dem zugehörigen actual_.+-Attribut entnommen, hilfsweise aus dem gleichnamigen Attribut des archetype.

      • import
        Hilfsfunktion zum Erstellen eines archetype.
        • Importiert alle Attribute vom ausgewählten Device, die im archetype unter attributes gelistet sind.
        • Ist attributes nicht gesetzt, werden alle im genannten Device gesetzten Attribute (als actual_.+-attribute) in das archetype importiert und attributes wird mit der Liste der importierten Attribute gefüllt
        • die Attribut-Werte werden ebenfalls importiert und können dann nachbearbeitet werden. Sie werden dabei als nicht zwingende Attributwerte (mit "undef"-Präfix) übernommen.
        Hinweis: Beim Import werden die Attribute nicht direkt wieder weitervererbt.

      • initialize inheritors
        Führt für alle Erben die unter dem Attribut initialize angegebenen Befehle aus.

      • raw <Befehl>
        Führt für alle Erben den Befehl aus.

      Get

      • inheritors
        Listet alle Erben auf.

      • relations
        Listet alle Beziehungen auf.

        • pending attributes
          Listet für jeden Erben die unter dem Attribut attributes angegeben Attribute auf, die nicht mit den (zwingenden) Attribut-Vorgaben des archetype übereinstimmen.

        • pending inheritors
          Listet alle Erben auf die aufgrund der Beziehungen noch definiert werden sollen.

      Attribute

        Hinweise:
          Alle Attribute, die vererbt werden können, können vorab mit einem Modifikator versehen werden.
        • attr archetype <attribute> undef:<...>
          Wird undef: vorangestellt wird das Attribut nur vererbt, sofern dieses Attribut an dem Erbe noch gar nicht vorhanden ist.

        • attr archetype <attribute> least[(<Trennzeichen>)]:<...>
          Wird eine Liste vererbt kann mit dem voranstellen von least[(<Trennzeichen>)]: angegeben werden, dass diese Elemente mindestens vorhanden sein sollen.
          Wird kein Trennzeichen angegeben wird das Leerzeichen als Trennzeichen verwendet.
        • attr archetype <attribute> Perl:<...>
          attr archetype <attribute> undef,Perl:<...>
          Wird Perl: (mit) vorangestellt wird der folgende Perl-Code nicht zur Ermittlung des Attributwerts vorab ausgeführt, sondern direkt als Attributwert übernommen (z.B. für devStateIcon oder stateFormat).


      • actual_<attribute> <value>
        <value> kann als <Text> oder als {perl code} angegeben werden.
        Wird das Attribut <attribute> vererbt, ersetzt die Rückgabe des actual_<attribute> den Wert des gleichnamigen Attributes.
        Bei dem archetype mit der DEF "derive attributes" können Muster definiert werden.
        Beispiel: actual_alias %captionRoom|room%: %description%[ %index%][%suffix%]
        Alle in % eingeschlossenen Ausdrücke sind Attribute. Eine Reihenfolge lässt sich durch | erreichen. Ist ein Ausdruck in [] eingeschlossen ist er optional.
        Die Ausdrücke captionRoom, description, index und suffix sind hierbei z.B. durch addToAttrList hinzugefügte (globale) Attribute.

        Weitere Hinweise und Optionen
        • keine Rückgabe
        • Ist in einem Attribut (z.B. nach der Evaluierung einer Perl-Funktion) kein Inhalt definiert, wird keine Änderung vorgenommen.
        • Filterungen
        • Duch weitere Zusätze zum Attributnamen können zusätzliche Filterungen realisiert werden. Dies erfolgt in der Form actual_<attribute>_<index> <FILTER> <value>. Dies kann genutzt werden, um z.B. Geräte mit mehreren Kanälen oder ähnliche Modelle über ein gemeinsames archetype abzubilden. Falls der angegebene Filter paßt, wird ein eventuell vorhandenes gleichnamiges actual_<attribute> nicht ausgewertet, selbst, wenn ggf. die Evaluierung von Perl-Code keinen Rückgabewert ergibt.
          Beispiel:
          define archHM_CC archetype TYPE=CUL_HM:FILTER=model=(HM-CC-RT-DN|HM-TC-IT-WM-W-EU)
          attr archHM_CC attributes devStateIcon icon
          attr archHM_CC actual_devStateIcon_RT model=HM-CC-RT-DN:FILTER=chanNo=04 Perl:{devStateIcon_Clima($name)}
          attr archHM_CC actual_devStateIcon_WT model=HM-TC-IT-WM-W-EU:FILTER=chanNo=02 Perl:{devStateIcon_Clima($name)}
          attr archHM_CC actual_icon hm-cc-rt-dn
          attr archHM_CC actual_icon_2 model=HM-TC-IT-WM-W-EU hm-tc-it-wm-w-eu
        • Verfügbarkeit im FHEMWEB-Frontend
        • Es handelt sich um "wildcard"-Attribute, die (initial) über das FHEM-Kommandofeld gesetzt werden können bzw. (im Fall der Filterung) müssen. Ein Attribut, das in attributes gelistet ist, erhält automatisch einen passenden actual_<attribute>-Eintrag und kann dann auch direkt das drop-down Menü der Attribut-Liste in FHEMWEB gesetzt werden.

      • actualTYPE <TYPE>
        Legt den TYPE des Erben fest. Der Standardwert ist dummy.

      • attributes <attribute> [<attribute>] [...]
        Leerzeichen-getrennte Liste der zu vererbenden Attribute. Die Werte der Attribute werden (mit steigender Priorität) im Vererbungsprozess entnommen aus dem Attribut mit:
        • genau demselben Namen
        • dem Namens-Schema: actual_<attribute>
        • dem Namens-Schema actual_<attribute>_<index>, sofern der dort angegebene Filter paßt.

      • attributesExclude <attribute> [<attribute>] [...]
        Leerzeichen-getrennte Liste von Attributen die nicht auf diesen Erben vererbt werden.

      • autocreate <0 oder 1>
        Legt fest, ob durch das archetype automatisch Attribute auf neue Devices vererbt werden sollen bzw. ob Erben automatisch für neue Beziehungen angelegt werden.
        Der Standardwert ist 1.

      • autoclean_init 1
        Legt fest, ob das archetype beim FHEM-Start unmittelbar eine inherit-Aktion ausführen soll.
        Der Standardwert ist 0.

      • defined_by <...>
        Hilfsattribut um zu erkennen, durch welchen archetype ein Device als Erbe definiert wurde.

      • deleteAttributes 1
        Wenn gesetzt, wird ein im archetype gelöschtes Attribut auch bei allen Erben gelöscht.
        Der Standardwert ist 0 (deaktiviert).

      • disable 1
        Es werden keine Attribute mehr vererbt und keine Erben definiert.

      • initialize <initialize>
        <initialize> kann als <Text> oder als {perl code} angegeben werden.
        Der <Text> oder die Rückgabe vom {perl code} muss eine durch Semikolon (;) getrennte Liste von FHEM-Befehlen sein. Mit diesen werden die Erben initialisiert, wenn sie definiert werden bzw. der Befehl initialize angewandt wird.
        Hinweis: Die Funktion ist beschränkt auf "relations"!

      • metaDEF <metaDEF>
        <metaDEF> kann als <Text> oder als {perl code} angegeben werden und beschreibt den Aufbau der DEF für die Erben.

      • metaNAME <metaNAME>
        <metaNAME> kann als <Text> oder als {perl code} angegeben werden und beschreibt den Aufbau des Namens für die Erben.

      • relations <devspec> [<devspec>] [...]
        In den <relations> werden alle Beziehungen beschrieben, die es für dieses archetype gibt.
        Siehe den Abschnitt über Geräte-Spezifikation für Details zu <devspec>.

      • readingList <values>
        setList <values>
        Ermöglichen zusammen das Vorbelegen von Reading-Werten, die z.B. bei einer "initialize"-Aktion ausgewertet und an die Erben weitergereicht werden können. Siehe auch die entsprechenden Attributbeschreibungen in dummy.

      • splitRooms 1
        Gibt für jede Beziehung jeden Raum separat in $room zurück.

      Beispiele

        Die folgenden beispiel Codes können per "Raw defnition" importiert werden.

      • Es sollen alle Plots in die Gruppe "verlaufsdiagramm" verschoben werden:
        defmod SVG_archetype archetype TYPE=SVG
        attr SVG_archetype attributes group
        attr SVG_archetype group verlaufsdiagramm

      • Zusätzlich soll für alle Plots ein weblink angelegt werden:
        defmod SVG_link_archetype archetype
        attr SVG_link_archetype relations TYPE=SVG
        attr SVG_link_archetype actualTYPE weblink
        attr SVG_link_archetype metaNAME $relation\_link
        attr SVG_link_archetype metaDEF link ?detail=$relation
        attr SVG_link_archetype initialize attr $name room $room;;
        attr SVG_link_archetype group verlaufsdiagramm
        attr SVG_link_archetype attributes group

    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 zurückliefern. Achtung: {perlfunc()} darf keine Leerzeichen enthalten.
          <datespec> ist entweder ISO8601 (YYYY-MM-DDTHH:MM:SS) oder Anzahl der Sekunden seit 1970 oder {perlfunc()}.

        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.
        • Um einen FHEM Befehl immer am letzten Tag des Monats auszuführen, kann die Funktion at_ultimo() als perlfunc für eine datespec verwendet werden.
          define at_ultimo at *{at_ultimo()} set lamp1 off
          Hiermit wird ein at device erzeugt, der immer am letzten Tag des Monats um 23:59:00 Uhr ausgeführt wird.
          at_ultimo() kann drei optionale Parameter verarbeiten, um eine andere Uhrzeit anzugeben.
          define at_ultimo at *{at_ultimo(12,34,56)} set lamp1 off
          Es wird ein at device erzeugt, das immer um 12:34:56 am Monatsletzten ausgeführt wird.

      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.
      • skip_next
        genau wie der gleichnamige Attribut, verhindert die nächste Ausführung. Als set Befehl, eignet sich besser für webCmd.

      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ür 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 zurückliefern, da zu diesem Zeitpunkt die Readings noch nicht aktiv sind. Mit gesetztem computeAfterInit wird perlfunc nach Setzen aller Readings erneut ausgeführt. (Siehe Forum #56706)

      • disable
      • disabledForIntervals
      • skip_next
        Wird bei at Befehlen verwendet um die nächste Ausführung zu überspringen

      • perlSyntaxCheck
      • readingFnAttributes

    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 erst der Gerätename geprüft wird, und dann der Konstrukt Typ:Gerätename.
        Achtung: ab featurelevel 5.8 wird der Regexp automatisch mit ^ und $ ergänzt, muss also den kompletten Namen matchen (genau wie bei notify und FileLog).

      • autocreateThreshold
        Eine Liste of <type>:<count>:<interval> tripeln. Ein neues Device wird nur dann erzeugt wenn es mindestens count Events für den TYPE type in den letzten interval Sekunden gegeben hat.
        Beispiel:
        attr autocreateThreshold LaCrosse:2:30,EMT7110:2:60

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

        Dieser Befehl ist Bestandteilteil des autocreate-Modules.

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

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

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

        Dieser Befehl ist Bestandteilteil des autocreate-Modules.

    average

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

    backup

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

    cloneDummy

    [EN DE]
      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

    [EN DE]
      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

    [EN DE]
      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

    dewpoint

    [EN DE]
      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.

        Veraltet, für neue Definitionen nicht mehr benutzen
          Wenn <temp_name> T lautet, wird die Temperatur aus state T: H: benutzt und <new_name> zu STATE hinzugefügt. Das hinzufügen zu STATE erfolgt nur, falls im Zielgerät das Attribut "stateFormat" nicht definiert ist.
        Falls das veraltete Verhalten zum Update unbedingt gewüscht ist, kann das Attribut legacyStateHandling gesetzt werden.
        Beispiele:
            # Berechnet den Taupunkt aufgrund von Temperatur und Luftfeuchte
            # in Ereignissen, die vom Gerät temp1 erzeugt wurden und erzeugt ein Reading dewpoint.
            define dew_temp1 dewpoint dewpoint temp1
            define dew_temp1 dewpoint dewpoint temp1 temperature humidity dewpoint
        
            # Berechnet den Taupunkt aufgrund von Temperatur und Luftfeuchte
            # in Ereignissen, die von allen Geräten erzeugt wurden die diese Werte ausgeben
            # und erzeugt ein Reading dewpoint.
            define dew_all dewpoint dewpoint .*
            define dew_all dewpoint dewpoint .* temperature humidity dewpoint
        
            # Berechnet den Taupunkt aufgrund von Temperatur und Luftfeuchte
            # in Ereignissen, die vom Gerät Aussen_1 erzeugt wurden und ergänzt 
            # mit diesem Wert den Status STATE, falls in Aussen_1 das Attribut "stateFormat" nicht definiert ist.
            # Falls "stateFormat" definiert ist, wird das reading "D" angelegt.
            define dew_state dewpoint dewpoint Aussen_1 T H D
        
            # Berechnet den Taupunkt aufgrund von Temperatur und Luftfeuchte
            # in Ereignissen, die von allen Geräten erzeugt wurden die diese Werte ausgeben
            # und ergänzt mit diesem Wert den Status STATE. (Siehe Beispiel oben).
            # Beispiel STATE: "T: 10 H: 62.5" wird verändert nach
            # "T: 10 H: 62.5 D: 3.2"
            define dew_state dewpoint dewpoint .* T H D
            


        define <name> dewpoint fan <devicename> <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> <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
      • absoluteHumidity <reading_name>
        • Zusätzlich wird die absolute Feuchte in g/m³ als Reading <reading_name> berechnet.

      • vapourPressure <reading_name>
        • Zusätzlich wird der Dampfdruck in hPa als Reading <reading_name> berechnet.

      • max_timediff
        • Maximale erlaubter Zeitunterschied in Sekunden zwischen den Temperatur- und Luftfeuchtewerten eines Geräts. dewpoint verwendet Readings von Temperatur oder Luftfeuchte wenn sie nicht im Ereignis mitgeliefert werden. Das ist sowohl für den Betrieb mit event-on-change-reading nötig als auch bei Sensoren die Temperatur und Luftfeuchte in getrennten Ereignissen kommunizieren (z.B. Technoline Sensoren TX3TH).
          Der Standardwert ist 1 Sekunde.

          Beispiel:
                  # Maximal erlaubter Zeitunterschied soll 60 Sekunden sein
                  define dew_all dewpoint dewpoint .*
                  attr dew_all max_timediff 60
                  

    dummy

    [EN DE]
      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 sind die set extensions verfügbar.
        Seiteneffekt: falls gesetzt, werden nur die spezifizierten Parameter akzeptiert, auch dann, wenn setList kein on und off enthält.
      • setExtensionsEvent
        Falls gesetzt, enthält das Event den im SetExtensions implementierten Befehl (z.Bsp. on-for-timer 10), sonst den Ausgefürten (z.Bsp. on).
      • readingFnAttributes

    echodevice

    [EN DE]
      Basic remote control fuer Amazon Echo devices. Die komplette Dokumentation findet Ihr hier.

      https://mwinkler.jimdo.com/smarthome/eigene-module/echodevice/

      Define
        define <name> echodevice <DeviceID> [DeviceType]
        Example: define <Name> echodevice <Amazon account> <Amazon Kennwort>
        Example: define <Name> echodevice

      Set
      • ...
        ...

      Get
      • settings
        Manually reload setings (dnd, bluetooth, wakeword)

      • devices
        Displays a list of Amazon devices connected to your account

      Readings
      • ...
        ...


      Attributes
      • interval
        Poll interval in seconds (300)

      • cookie
        Amazon access cookie, has to be entered for the module to work

      • server
        Amazon server used for controlling the Echo

    eventTypes

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

    expandJSON

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

    fakeRoku

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

    feels_like

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

    fhemdebug

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

    fheminfo

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

    freezemon

    [EN DE]
      FREEZEMON überwacht - ähnlich wie PERFMON mögliche Freezes, allerdings ist FREEZEMON ein echtes Modul und hat daher:
      • Readings - die geloggt werden können und damit viel einfacher ausgewertet werden können
      • Attribute - mit denen das Verhalten von freezemon beeinflusst werden kann
      • zusätzliche Funktionalität - die versucht das den Freeze verursachende Device zu identifizieren
      Ich würde empfehlen, PERFMON zu deaktivieren, wenn FREEZEMON aktiv ist, da beide auf die selbe Art Freezes erkennen und dann nur alles doppelt kommt. Bitte beachten! FREEZEMON versucht nur intelligent zu erraten, welches Device einen freeze verursacht haben könnte (basierend auf den Timern die laufen sollten). Es gibt eine Menge anderer Faktoren (intern oder extern) die einen Freeze verursachen können. FREEZEMON ersetzt keine detaillierte Analyse. Das Modul versucht nur Hinweise zu geben, was optimiert werden könnte.



      Define
        FREEZEMON wird ohne Parameter definiert.

        define <devicename> freezemon

        damit ist der Freezemon aktiv (im Log sollte eine entsprechende Meldung geschrieben werden)

      Set
        • inactive: deaktiviert das Device (identisch zum Attribut "disable", aber ohne die Notwendigkeit zu "saven".
        • active: reaktiviert das Device nachdem es auf inactive gesetzt wurde
        • clear:
          • statistics_all: löscht die Statistik (d.h. löscht alle readings die für die statistics erzeugt wurden)
          • statistics_low: löscht Statistiken mit geringer Bedeutung (siehe Attribut fm_statistics_low)
          • all: Löscht alle readings (inklusive der Liste der letzten 20 Freezes).
          • getFreezes: identisch zum "get freeze" Befehl, kann als set-Befehl aber als z.B. im webCmd Attribut genutzt werden
      Get
        • freeze: gibt die letzten 20 freezes zurück (in Kompakter Darstellung, wie im state) - Dies dient einem schnellen überblick, für detailliertere Auswertungen empfehle ich die Daten zu loggen.
        • log: gibt Zugriff auf die Logfiles die geschrieben werden, wenn fm_logFile aktiv ist
        • statistic: Stellt eine schöner formatierte übersicht der top 20 Freeze Devices aus der Freeze Statistik zur Verfügung
      Readings
        • freezeTime: Dauer des Freezes
        • freezeDevice: Liste von möglicherweise den Freeze auslösenden Funktionen(Devices)
        • fcDay: kumulierte Anzahl der Freezes pro Tag
        • ftDay: kumulierte Dauer der Freezes pro Tag
        • fcDayLast: speichert die kumulierte Anzahl der Freezes des vergangenen Tages (um tageweise plots zu erstellen). Aus technischen gründen werden Freezes, die sehr kurz nach Mitternacht auftreten möglicherweise noch zum Vortag gezählt.
        • ftDayLast: speichert die kumulierte Dauer der Freezes des vergangenen Tages (um tageweise plots zu erstellen). Aus technischen gründen werden Freezes, die sehr kurz nach Mitternacht auftreten möglicherweise noch zum Vortag gezählt.
        • fs_.*_c: freeze Statistik - Anzahl der freezes bei denen das Device möglicherweise beteiligt war
        • fs_.*_t: freeze Statistik - kumulierte Dauer der freezes bei denen das Device möglicherweise beteiligt war
        • state: s:<StartZeit> e:<EndeZeit> f:<Dauer> d:<Devices>
      Attribute
        • fm_CatchFnCallsfm_CatchFnCalls: wenn aktiviert, werden zusätzlich FHEM-interne Funktionsaufrufe überwacht, in einigen Fällen kann das zusätzliche Hinweise auf den Freeze-Verursacher geben, 0 bedeuted disabled, Zahlen >= 1 geben den Loglevel für des logging lang laufender Funktionsaufrufe an.
        • fm_CatchCmds: wenn aktiviert, werden zusätzlich FHEM-Kommandos überwacht, in einigen Fällen kann das zusätzliche Hinweise auf den Freeze-Verursacher geben, 0 bedeuted disabled, Zahlen >= 1 geben den Loglevel für des logging lang laufender Kommandos an.
        • fm_CatchHttp: wenn aktiviert, werden zusätzlich callback Funktionen von non-blocking HTTP requests überwacht, in einigen Fällen kann das zusätzliche Hinweise auf den Freeze-Verursacher geben, 0 bedeuted disabled, Zahlen >= 1 geben den Loglevel für des logging lang laufender Kommandos an.
        • fm_extDetail: stellt in einigen Fällen zusätzliche Details bei erkannten Freezes zur Verfügung. In wenigen Fällen wurde berichtet, dass FHEM crasht, also vorsichtig verwenden.
        • fm_freezeThreshold: Wert in Sekunden (Default: 1) - Nur Freezes länger als fm_freezeThreshold werden als Freeze betrachtet
        • fm_forceApptime: Wenn FREEZEMON aktiv ist wird automatisch apptime gestartet (falls nicht aktiv)
        • fm_ignoreDev: Liste von Komma-getrennten Devices. Wenn einzelne möglicherweise einen Freeze verursachenden Device in dieser Liste sind, wird der Freeze ignoriert (nicht geloggt). Bitte das Attribut fm_ignoreMode beachten
        • fm_ignoreMode: Kann die Werte off,single oder all annehmen. Wenn in fm_ignoreDev Devices angegeben sind wirken sich der ignoreMode wie folgt aus:
          all: Ein Freeze wird nur dann ignoriert, wenn alle möglicherweise den Freeze verursachenden Devices in der Ignore-Liste enthalten sind. Dies führt unter Umständen dazu, dass mehr Freezes geloggt werden als erwartet.
          single: Ein Freeze wird ignoriert, sobald ein möglicher Verursacher in der Ignorierliste enthalten ist. Dies führt möglicherweise dazu, dass Freezes übersehen werden.
          off: Alle Freezes werden geloggt.
          Sofern das Attribut nicht gesetzt ist, aber Ignore-Devices angegeben sind, wird im Modus "all" ignoriert.
        • fm_log: dynamischer Loglevel, nimmt einen String der Form 10:1 5:2 1:3 entgegen, was bedeutet: Freezes > 10 Sekunden werden mit Loglevel 1 geloggt, >5 Sekunden mit Loglevel 2 usw...
        • fm_logFile: ist ein gültiger Filename (wie z.B. ./log/freeze-%Y%m%d-%H%M%S.log). Wenn gesetzt, werdn Meldungen auf Loglevel 5 (auch wenn global Loglevel < 5 ist) vor einem Freeze in einem seperaten File geloggt.
        • fm_logExtraSeconds: normalerweise beginnt das detaillierte Log ca. 1 Sekunde vor dem Freeze, mit extraSeconds kann dieser Zeitraum verlängert werden
        • fm_logKeep: Eine Zahl, die angibt wieviele Logfiles behalten werden sollen. Wenn gesetzt, werden alle Logfiles ausser den letzten n Freezemon Logfiles regelmäßig gelöscht.
        • fm_whitelistSub: Komma-getrennte Liste von Subroutinen wo du sicher bist, dass sie keinen Freeze verursachen. Whitelisted Subs erscheinen nicht in der "possibly caused by" Liste. Typischerweise listet man hier Subroutinen, die regelmäßig in der "possibly caused by" Liste auftauchen, wo du aber wirklich sicher bist, dass sie nicht die Ursache sind. Anmerkung: Die Subroutine ist der initiale Teil (vor dem devicename in Klammern) in Freezemon Logmeldungen.
        • fm_statistics: aktivieren/deaktivieren der Freeze Statistik. Erzeugt Readings für jedes Device, das möglicherweise an einem Freeze beteiligt war und Summiert die Häufigkeit und Dauer dieser Freezes
        • fm_statistics_low: Parametrisierung des clear statistics_low set Kommandos, im Format c:t. Bei clear statistics_low werden alle Statistics-Readings gelöscht deren Count kleiner oder gleich "c" ist UND deren kumulierte Dauer kleiner oder gleich "t" ist
        • disable: aktivieren/deaktivieren der Freeze-Erkennung

    gassistant

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

    harmony

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

    help

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

    holiday

    [EN DE]
      Define
        define <name> holiday

        Definiert einen Satz mit Urlaubsinformationen. Das Modul versucht die Datei <name>.holiday erst in modpath/FHEM zu öffnen, und dann in modpath/FHEM/holiday, Letzteres enthält eine Liste von per FHEM-update verteilten Dateien für diverse (Bundes-)Länder. Diese Liste wird bei einer Fehlermeldung angezeigt. Wenn Einträge im der Datei auf den aktuellen Tag passen wird der STATE der Holiday-Instanz die im list Befehl angezeigt wird auf die entsprechenden Werte gesetzt. Andernfalls ist der STATE auf den Text "none" gesetzt. Meistens wird dieser Wert mit einem Perl Script abgefragt: siehe Value() im perl Abschnitt oder im globalen Attribut holiday2we.
        Achtung: Seit März 2019 verwendet die IsWe() Funktion (und $we) die state, tomorrow und yesterday Readings, und nicht mehr das STATE Internal.
        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
          MM-TT kann auch als JJJJ-MM-TT geschrieben werden.
        • 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
          MM-TT kann auch als JJJJ-MM-TT geschrieben werden.
        • 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
        • 6
          Datum mit einer perl Funktion berechnen. Das Ergebnis muss ein exaktes Datum im Format "mm-dd" sein, z.B."12-02"

          Beispiel:
            6 calcAdvent 21 1.Advent
            6 calcAdvent 14 2.Advent
            6 calcAdvent 7 3.Advent
            6 calcAdvent 0 4.Advent

          Erklärung:
            calcAdvent = Name der Funktion, z.B. enthalten in 99_myUtils.pm
            21 = Parameter zum Funktionsaufruf
            1.Advent = Text für die Anzeige in readings

          erzeugt einen Funktionsaufruf "calcAdvent(21)" zur Berechnung eines Datums.
          Fehler werden im Loglevel 1 protokolliert.

      Set
      • createPrivateCopy
          Falls die Datei in der FHEM/holiday Verzeichnis geöffnet wurde, dann ist sie nicht beschreibbar, da dieses Verzeichnis mit FHEM update aktualisiert wird. Mit createPrivateCopy kann eine private Kopie im FHEM Verzeichnis erstellt werden.
      • deletePrivateCopy
          Entfernt die private Kopie, siehe auch createPrivateCopy
      • reload
          setzt die state, tomorrow und yesterday Readings. Wird nach einem manuellen Bearbeiten der .holiday Datei benötigt.

      Get
        get <name> <YYYY-MM-DD>
        get <name> <MM-DD>
        get <name> yesterday
        get <name> today
        get <name> tomorrow
        get <name> days <offset>


        Gibt den Name des Feiertages zum angebenenen Datum zurück oder den Text none.


      Attributes
      • readingFnAttributes

    inotify

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

    KM200

    [EN DE]
      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.

    livetracking

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

    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

    monitoring

    [EN DE]
      Jedes monitoring verfügt über eine warning- und eine error-Liste, welche als Readings gespeichert werden.
      Beim Auftreten eines definierten add-events wird das Gerät nach einer vorgegeben Zeit auf die warning-Liste gesetzt.
      Nach einer weiteren vorgegeben Zeit wird das Gerät von der warning-Liste gelöscht und auf die error-Liste gesetzt.
      Beim Auftreten eines definierten remove-events wird das Gerät von beiden Listen gelöscht und noch laufende Timer abgebrochen.
      Hiermit lassen sich auf einfache Weise Sammelmeldungen erstellen und durch zwei Attribute formatiert ausgeben.

      Folgende Anwendungen sind möglich und werden unten beschrieben:
      • geöffnete Fenster
      • Batterie Warnungen
      • Activity Monitor
      • regelmäßige Wartungsarbeiten (z.B. Tischwasserfilter wechseln oder Räume putzen)
      • Betriebsstunden abhängige Wartungsarbeiten (z.B. Beamer Filter reinigen)

      Das monitor sendet selbst keine Benachrichtung, hierfür ist ein notify oder DOIF notwendig, welches auf das Event "<monitoring-name> error add: <name>" reagiert und dann den Rückgabewert von "get <monitoring-name> default" versendet.

      Define

        define <name> monitoring <add-event> [<remove-event>]
        Die Syntax für <add-event> und <remove-event> ist die gleiche wie für das Suchmuster von notify (Gerätename oder Gerätename:Event).
        Ist nur ein <add-event> definiert wird beim auftreten das Gerät von beiden Listen gelöscht und die Timer für warning und error werden gestartet.

      Set

      • active
        Es passieren zwei Dinge:
        1. Stellt noch ausstehende Timer wieder her, bzw. setzt die Geräte sofort auf die entsprechende Liste, falls der Zeitpunkt in der Vergangenheit liegt.
        2. Führt die unter dem Attribut "setActiveFunc" angegeben Befehle aus.
      • clear (warning|error|all)
        Entfernt alle Geräte von der angegeben Liste und bricht für diese Liste laufende Timer ab. Bei "all" werden alle Geräte von beiden Listen entfernt und alle laufenden Timer abgebrochen.
      • errorAdd <name>
        Fügt <name> zu der error-Liste hinzu.
      • errorRemove <name>
        Entfernt <name> von der error-Liste.
      • inactive
        Deaktiviert das monitoring. Beachte den leichten semantischen Unterschied zum disable Attribut: "set inactive" wird bei einem shutdown automatisch in fhem.state gespeichert, es ist kein save notwendig.
      • warningAdd <name>
        Fügt <name> zu der warning-Liste hinzu.
      • warningRemove <name>
        Entfernt <name> von der warning-Liste.

      Get

      • all
        Gibt, durch eine Leerzeile getrennt, die error- und warning-Liste zurück.
        Die Formatierung kann dabei mit den Attributen "errorReturn" und "warningReturn" eingestellt werden.
      • default
        Der "default" Wert kann in dem Attribut "getDefault" festgelegt werden und ist dazu gedacht um die Konfiguration für den Rückgabewert im monitoring Gerät zu belassen. Wird nichts angegeben wird "all" verwendent.
      • error
        Gibt die error-Liste zurück.
        Die Formatierung kann dabei mit dem Attribut "errorReturn" eingestellt werden.
      • warning
        Gibt die warning-Liste zurück.
        Die Formatierung kann dabei mit dem Attribut "warningReturn" eingestellt werden.

      Readings

      • allCount
        Zeigt die Anzahl der Geräte in der warning- und error-Liste an.
      • error
        Durch Komma getrennte Liste von Geräten.
      • errorAdd_<name>
        Zeigt den Zeitpunkt an wann das Gerät auf die error-Liste gesetzt wird.
      • errorCount
        Zeigt die Anzahl der Geräte in der error-Liste an.
      • state
        Zeigt den Status (active, inactive oder disabled) an. Bei "active" wird angezeigt welches Gerät zu welcher Liste hinzugefügt bzw. von welcher Liste entfernt wurde.
      • warning
        Durch Komma getrennte Liste von Geräten.
      • warningAdd_<name>
        Zeigt den Zeitpunkt an wann das Gerät auf die warning-Liste gesetzt wird.
      • warningCount
        Zeigt die Anzahl der Geräte in der warning-Liste an.

      Attribute

      • addStateEvent
      • blacklist <devspec list>
        Durch Leerzeichen getrennte Liste von devspecs, die ignoriert werden.
        Wenn das Attribut gesetzt wird, werden alle Geräte von beiden Listen gelöscht, die durch die devspecs definiert sind .
      • disable (1|0)
        1: Deaktiviert das monitoring.
        0: siehe "set active"
      • disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM ...
      • errorFuncAdd {<perl code>}
        In dieser Funktion stehen die folgende Variablen zur Verfügung:
        • $name
          Name des Event auslösenden Gerätes
        • $event
          Beinhaltet das komplette Event, z.B. measured-temp: 21.7 (Celsius)
        • $addMatch
          Hat den Wert 1, falls das add-event zutrifft
        • $removeMatch
          Hat den Wert 1, falls das remove-event zutrifft
        • $SELF
          Eigenname des monitoring
        Gibt die Funktion eine 1 zurück, wird das Gerät, nach der Wartezeit, auf die error-Liste gesetzt.
        Wenn das Attribut nicht gesetzt ist wird auf $addMatch geprüft.
      • errorFuncAdded {<perl code>}
        In dieser Funktion stehen die folgende Variablen zur Verfügung:
        • $name
          Name des Event auslösenden Gerätes
        • $SELF
          Eigenname des monitoring
        Diese Funktion wird ausgeführt, wenn ein Gerät in die Fehlerliste aufgenommen wird.
      • errorFuncRemove {<perl code>}
        In dieser Funktion stehen die selben Variablen wie bei "errorFuncAdd" zur Verfügung.
        Gibt die Funktion eine 1 zurück, wird das Gerät von der error-Liste entfernt und noch laufende Timer werden abgebrochen.
        Wenn das Attribut nicht gesetzt ist wird bei einer DEF mit <remove-event> auf $removeMatch geprüft und bei einer DEF ohne <remove-event> auf errorFuncAdd.
      • errorWait <perl code>
        Wartezeit (Rückgabe in Sekunden) bis das Gerät auf die error-Liste gesetzt wird.
      • errorReturn {<perl code>}
        In diesem Attribut stehen folgende Variablen zur Verfügung:
        • @errors
          Array mit allen Geräten auf der error-Liste.
        • @warnings
          Array mit allen Geräten auf der warning-Liste.
        • $SELF
          Eigenname des monitoring
        Mit diesem Attribut kann die Ausgabe die mit "get <name> error" erzeugt wird angepasst werden.
        Hinweis: Da der Code im package-Kontext evaluiert wird, muss ggf. bei Funktionen aus dem main Kontext explizit ein Verweis auf diesen Kontext ergänzt werden(z.B. mit vorangestelltem doppeltem Doppelpunt "::myFunction($SELF)").
      • getDefault (all|error|warning)
        Mit diesem Attribut kann festgelegt werden welche Liste/n mit "get <name> default" zurück gegeben wird/werden. Wenn das Attribut nicht gesetzt ist wird "all" verwendet.
      • setActiveFunc <Anweisung>
        Die Anweisung ist einer der FHEM Befehlstypen und wird beim Definieren des monitoring oder bei "set active" ausgeführt.
        Für eine Batterie Meldung kann "trigger battery=low battery:low" sinnvoll sein.
      • setInactiveFunc <Anweisung>
        Die Anweisung ist einer der FHEM Befehlstypen und wird beim Definieren des monitoring oder bei "set inactive" ausgeführt.
      • warningFuncAdd {<perl code>}
        Wie errorFuncAdd, nur für die warning-Liste.
      • warningFuncAdded {<perl code>}
        Wie errorFuncAdded, nur für die warning-Liste.
      • warningFuncRemove {<perl code>}
        Wie errorFuncRemove, nur für die warning-Liste.
      • warningWait <perl code>
        Wie errorWait, nur für die warning-Liste.
      • warningReturn {<perl code>}
        Wie errorReturn, nur für die warning-Liste.
      • whitelist <devspec list>
        Durch Leerzeichen getrennte Liste von devspecs die erlaubt sind.
        Wenn das Attribut gesetzt wird, werden alle Geräte von beiden Listen gelöscht, die nicht durch die devspecs definiert sind .
      • readingFnAttributes

      Beispiele

        Die folgenden beispiel Codes können per "Raw defnition" importiert werden.

      • Globale, flexible Fenster-/Tür-Offen-Meldungen (ähnlich wie im Forum beschrieben)
        defmod Fenster_monitoring monitoring .*:(open|tilted) .*:closed
        attr Fenster_monitoring errorReturn {return if !@errors;;\
         $_ = AttrVal($_, 'alias', $_) for @errors;;\
         return("Das Fenster \"$errors[0]\" ist schon länger geöffnet.") if(int(@errors) == 1);;\
         @errors = sort {lc($a) cmp lc($b)} @errors;;\
         return(join("\n - ", "Die folgenden ".@errors." Fenster sind schon länger geöffnet:", @errors))\
        }
        attr Fenster_monitoring errorWait {AttrVal($name, 'winOpenTimer', 60*10)}
        attr Fenster_monitoring warningReturn {return if !@warnings;;\
         $_ = AttrVal($_, 'alias', $_) for @warnings;;\
         return("Das Fenster \"$warnings[0]\" ist seit kurzem geöffnet.") if(int(@warnings) == 1);;\
         @warnings = sort {lc($a) cmp lc($b)} @warnings;;\
         return(join("\n - ", "Die folgenden ".@warnings." Fenster sind seit kurzem geöffnet:", @warnings))\
        }
        Sobald ein Gerät ein "open" oder "tilded" Event auslöst wird das Gerät auf die warning-Liste gesetzt und es wird ein Timer gestartet nach dessen Ablauf das Gerät von der warning- auf die error-Liste verschoben wird. Die Wartezeit kann für jedes Gerät per userattr "winOpenTimer" festgelegt werden. Der Vorgabewert sind 10 Minuten.
        Sobald ein Gerät ein "closed" Event auslöst wird das Gerät von beiden Listen gelöscht und noch laufende Timer werden gestoppt.

      • Batterieüberwachung
        defmod Batterie_monitoring monitoring .*:battery:.low .*:battery:.ok
        attr Batterie_monitoring errorReturn {return if !@errors;;\
         $_ = AttrVal($_, 'alias', $_) for @errors;;\
         return("Bei dem Gerät \"$errors[0]\" muss die Batterie gewechselt werden.") if(int(@errors) == 1);;\
         @errors = sort {lc($a) cmp lc($b)} @errors;;\
         return(join("\n - ", "Die folgenden ".@errors." Geräten muss die Batterie gewechselt werden:", @errors))\
        }
        attr Batterie_monitoring errorWait 60*60*24*14
        attr Batterie_monitoring warningReturn {return if !@warnings;;\
         $_ = AttrVal($_, 'alias', $_) for @warnings;;\
         return("Bei dem Gerät \"$warnings[0]\" muss die Batterie demnächst gewechselt werden.") if int @warnings == 1;;\
         @warnings = sort {lc($a) cmp lc($b)} @warnings;;\
         return(join("\n - ", "Die folgenden ".@warnings." Geräten muss die Batterie demnächst gewechselt werden:", @warnings))\
        }
        Sobald ein Gerät ein "battery: low" Event auslöst wird das Gerät auf die warning-Liste gesetzt und es wird ein Timer gestartet nach dessen Ablauf das Gerät von der warning- auf die error-Liste verschoben wird. Die Wartezeit ist auf 14 Tage eingestellt.
        Sobald ein Gerät ein "battery: ok" Event auslöst wird das Gerät von beiden Listen gelöscht und noch laufende Timer werden gestoppt.

      • Activity Monitor
        defmod Activity_monitoring monitoring .*:.*
        attr Activity_monitoring errorReturn {return if !@errors;;\
         $_ = AttrVal($_, 'alias', $_) for @errors;;\
         return("Das Gerät \"$errors[0]\" hat sich seit mehr als 24 Stunden nicht mehr gemeldet.") if(int(@errors) == 1);;\
         @errors = sort {lc($a) cmp lc($b)} @errors;;\
         return(join("\n - ", "Die folgenden ".@errors." Geräten haben sich seit mehr als 24 Stunden nicht mehr gemeldet:", @errors))\
        }
        attr Activity_monitoring errorWait 60*60*24
        attr Activity_monitoring warningReturn {return if !@warnings;;\
         $_ = AttrVal($_, 'alias', $_) for @warnings;;\
         return("Das Gerät \"$warnings[0]\" hat sich seit mehr als 12 Stunden nicht mehr gemeldet.") if(int(@warnings) == 1);;\
         @warnings = sort {lc($a) cmp lc($b)} @warnings;;\
         return(join("\n - ", "Die folgenden ".@warnings." Geräten haben sich seit mehr als 12 Stunden nicht mehr gemeldet:", @warnings))\
        }
        attr Activity_monitoring warningWait 60*60*12
        Geräte werden erst überwacht, wenn sie mindestens ein Event ausgelöst haben. Sollte das Gerät in 12 Stunden kein weiterer Event auslösen, wird es auf die warning-Liste gesetzt. Sollte das Gerät in 24 Stunden kein weiteres Event auslösen, wird es von der warning- auf die error-Liste verschoben.

        Hinweis: Es ist empfehlenswert das whitelist Attribut zu verwenden.

      • regelmäßige Wartungsarbeiten (z.B. Tischwasserfilter wechseln)
        defmod Wasserfilter_monitoring monitoring Wasserfilter_DashButton:.*:.short
        attr Wasserfilter_monitoring errorReturn {return if !@errors;;\
         return "Der Wasserfilter muss gewechselt werden.";;\
        }
        attr Wasserfilter_monitoring errorWait 60*60*24*30
        attr Wasserfilter_monitoring warningReturn {return if !@warnings;;\
         return "Der Wasserfilter muss demnächst gewechselt werden.";;\
        }
        attr Wasserfilter_monitoring warningWait 60*60*24*25
        Hierbei wird ein DashButton genutzt um FHEM mitzuteilen, dass der Wasserfilter gewechselt wurde.
        Nach 30 Tagen wird der DashButton auf die error-Liste gesetzt.

      • regelmäßige Wartungsarbeiten (z.B. Räume putzen)
        defmod putzen_DashButton dash_dhcp
        attr putzen_DashButton allowed AC:63:BE:2E:19:AF,AC:63:BE:49:23:48,AC:63:BE:49:5E:FD,50:F5:DA:93:2B:EE,AC:63:BE:B2:07:78
        attr putzen_DashButton devAlias ac-63-be-2e-19-af:Badezimmer\
        ac-63-be-49-23-48:Küche\
        ac-63-be-49-5e-fd:Schlafzimmer\
        50-f5-da-93-2b-ee:Arbeitszimmer\
        ac-63-be-b2-07-78:Wohnzimmer
        attr putzen_DashButton event-min-interval .*:5
        attr putzen_DashButton port 6767
        attr putzen_DashButton userReadings state {return (split(":", @{$hash->{CHANGED}}[0]))[0];;}
        attr putzen_DashButton widgetOverride allowed:textField-long devAlias:textField-long
        
        defmod putzen_monitoring monitoring putzen_DashButton:.*:.short
        attr putzen_monitoring errorFuncAdd {$event =~ m/^(.+):/;;\
         $name = $1;;\
         return 1;;\
        }
        attr putzen_monitoring errorReturn {return if !@errors;;\
         return("Der Raum \"$errors[0]\" muss wieder geputzt werden.") if(int(@errors) == 1);;\
         return(join("\n - ", "Die folgenden Räume müssen wieder geputzt werden:", @errors))\
        }
        attr putzen_monitoring errorWait 60*60*24*7
        Hierbei werden mehrere DashButton genutzt um FHEM mitzuteilen, dass die Räume geputzt wurden.
        Nach 7 Tagen wird der Raum auf die error-Liste gesetzt.
        Der Raum Name ist hierbei jedoch nicht der Geräte-Name, sondern der Readings-Name und wird in dem errorFuncAdd-Attribut geändert.

      • Betriebsstunden abhängige Wartungsarbeiten (z.B. Beamer Filter reinigen)
        defmod BeamerFilter_monitoring monitoring Beamer_HourCounter:pulseTimeOverall BeamerFilter_DashButton:.*:.short
        attr BeamerFilter_monitoring userattr errorInterval
        attr BeamerFilter_monitoring errorFuncAdd {return 1\
           if(ReadingsVal($name, "pulseTimeOverall", 0) >= \
                ReadingsVal($name, "pulseTimeService", 0)\
              + (AttrVal($SELF, "errorInterval", 0))\
              && $addMatch\
           );;\
         return;;\
        }
        attr BeamerFilter_monitoring errorFuncRemove {return if !$removeMatch;;\
         $name = "Beamer_HourCounter";;\
         fhem(\
            "setreading $name pulseTimeService "\
           .ReadingsVal($name, "pulseTimeOverall", 0)\
         );;\
         return 1;;\
        }
        attr BeamerFilter_monitoring errorInterval 60*60*200
        attr BeamerFilter_monitoring errorReturn {return if !@errors;;\
         return "Der Filter vom Beamer muss gereinigt werden.";;\
        }
        attr BeamerFilter_monitoring warningFuncAdd {return}
        attr BeamerFilter_monitoring warningFuncRemove {return}
        Hierbei wird ein HourCounter genutzt um die Betriebsstunden eine Beamer zu erfassen und ein DashButton um FHEM mitzuteilen, dass der Filter gereinigt wurde.
        Wurde der Filter länger als 200 Betriebsstunden nicht gereinigt wird das Gerät auf die error-Liste gesetzt.
        Wurde die Reinigung mit dem DashButton quittiert wird das Gerät von der error-Liste entfernt und der aktuelle Betriebsstunden-Stand in dem HourCounter Gerät gespeichert.

    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.
        • cleanReadings   []  
          Einfache Methode, um alle fhemMsg-Readings zu säubern. Optional kann ein Parameter angegeben werden, um ein bestimmtes Device zu säubern, als Device Name kann auch regex angegeben werden. Dieses Kommando ist ein Alias for "deletereading fhemMsg.*".
        • createResidentsDev     
          Creates a new device named rgr_Residents of type RESIDENTS. It will be pre-configured based on the given language. In case rgr_Residents exists it will be updated based on the given language (basically only a language change). Afterwards next configuration steps will be displayed to use RESIDENTS together with presence-based routing of the msg-command.
          This next step is basically to set attribute msgResidentsDevice to refer to this RESIDENTS device either globally or for any other specific FHEM device (most likely you do NOT want to have this attribute set globally as otherwise this will affect ALL devices and therefore ALL msg-commands in your automations).
          Note that use of RESIDENTS only makes sense together with ROOMMATE and or GUEST devices which still need to be created manually. See RESIDENTS Set commands addRoommate and addGuest respectively.
        • createSwitcherDev     
          Creates a pre-configured Dummy device named HouseAnn and updates globalMsg attribute msgSwitcherDev to refer to it.

      Attribute

        • msgContact<TYPE>
          FHEM Gerätename, welcher zur Übermittlung von Nachrichten des jeweiligen Typs angesprochen werden soll.
          • Muss bei Audio Nachrichten ohne eigene Definition von msgCmdAudio* ein Gerät vom Typ SONOSPLAYER sein.
          • Muss bei Screen Nachrichten ohne eigene Definition von msgCmdScreen* ein Gerät vom Typ ENIGMA2 sein.
          • Muss bei Light Nachrichten ohne eigene Definition von msgCmdLight* ein Gerät vom Typ HUEDevice sein.
          • Muss bei Push Nachrichten ohne eigene Definition von msgCmdPush* ein Gerät vom Typ Pushover sein.
          • Muss bei Mail Nachrichten eine oder mehrere gültige E-Mail Adressen enthalten.
          Bei FHEM Gerätenamen, über die mehrere Empfänger adressiert werden können, kann der Empfänger mittels Doppelpunkt getrennt vom FHEM Gerätenamen angegeben werden. Je nach Modul ist das optional oder verbindlich.

    msgDialog

      Mit msgDialog können Dialoge für Sofortnachrichten über TelegramBot, Jabber und yowsup (WhatsApp) definiert werden.
      Die Kommunikation erfolgt über den msg Befehl. Daher muss ein Gerät vom Typ msgConfig zuerst definiert werden.
      Für jeden Dialog kann festgelegt werden welche Person dazu berechtigt ist. Dazu sind Geräte vom Typ ROOMMATE oder GUEST mit definiertem msgContactPush Attribut erforderlich. Es ist darauf zu achten, dass das Reading fhemMsgRcvPush ein Event erzeugt.

      Vorraussetzungen:
        Das Perl-Modul "JSON" wird benötigt.
        Unter Debian (basierten) System, kann dies mittels "apt-get install libjson-perl" installiert werden.

      Define

        define <name> msgDialog <JSON>
        Aufgrunder komplexität ist es am einfachsten erst einen leeren Dialog zu definieren. define <name> msgDialog {} Anschließend die DEF dann in der Detail-Ansicht bearbeiten.
        {
          "<TRIGGER>": {
            "match": "<regex>",
            "setOnly": (true|false),
            "commands": "(fhem command|{perl code})",
            "message": [
              "{perl code}",
              "text"
            ],
            "<NEXT TRIGGER 1>": {
              ...
            },
            "<NEXT TRIGGER 2>": {
              ...
            }
          }
        }
            
      • TRIGGER
        Kann ein beliebiger Text sein. Es wird geprüft ob die eingehende Nachricht damit übereinstimmt. Falls ja, wird der Dialog an dieser Stelle fortgesetzt.

      • match
        Wenn nicht nur genau eine Nachricht zugelassen werden soll, kann noch eine regex angegeben werden. Die regex muss auf die gesamte eingehnde Nachricht zutreffen.

      • setOnly
        Kann optional auf true oder false gestellt werden. In beiden fällen wird der TRIGGER dann nicht bei "get <name> trigger" zurück gegeben.
        Wenn setOnly auf true gestellt wird kann der Dialog an dieser Stelle nicht durch eingehnde Nachrichten ausgelöst werden, sondern nur über "set <name> say TRIGGER".
        Dies kann dazu genutzt werden um einen Dialog von FHEM zu aus zu initieren.

      • commands
        Kann einen einzelnen oder mehrere Befehle enthalten:
        "commands": "single command"
        
        "commands": [
        "command 1",
        "command 2",
        "{perl command}"
        ]
              
      • message
        Kann einen einzelnen oder mehrere Textte enthalten die mit einen Zeilenumbruch verbunden werden:
        "message": "text"
        
        "message": [
        "text 1",
        "text 2",
        "{return from perl command}"
        ]
              
      • Bei mehrstufigen Dialogen wird diese Struktur ineinander verschachtelt angegeben.

        Es werden Variablen und unter dem Attribut evalSpecials definierte Platzhalter ausgewertet.
        Variablen:
      • $SELF
        Eigenname des msgDialog

      • $message
        eingegangene Nachricht

      • $recipient
        Name des Dialogpartners

      Set

      • reset
        Setzt den Dialog für alle Benutzer zurück.

      • say [@<recipient1>[,<recipient2>,...]] <TRIGGER>[|<NEXT TRIGGER>|...]
        Der Dialog wird für alle angegeben Empänger an der angegeben Stelle fortgeführt.
        Sind keine Empfänger angegeben wird der Dialog für alle unter dem Attribut allowed angegebenen Empfänger fortgeführt.

      • updateAllowed
        Aktualisiert die Auswahl für das Attribut allowed.
      • update <allowed or configFile>
        • allowed - aktualisiert die Auswahl für das Attribut allowed.
        • configFile - liest die configFile neu ein (z.B. nach Änderung).

      Get

      • trigger
        Listet alle TRIGGER der ersten Ebene auf bei denen nicht setOnly angegeben ist.

      Attribute

      • allowed
        Liste mit allen RESIDENTS und ROOMMATE die für diesen Dialog berechtigt sind.

      • disable 1
        Dialog ist deaktiviert.

      • disabledForIntervals HH:MM-HH:MM HH:MM-HH-MM ...

      • evalSpecials key1=value1 key2=value2 ...
        Leerzeichen getrennte Liste von Name=Wert Paaren.
        Wert kann Leerzeichen enthalten, falls es in "" oder {} eingeschlossen ist.
        Wert wird als perl-Ausdruck ausgewertet, falls es in {} eingeschlossen ist.
        In der DEF werden %Name% Zeichenketten durch den zugehörigen Wert ersetzt.
        Dieses Attribut ist als "msgDialog_evalSpecials" im msgConfig Gerät vorhanden.
        Wenn der selbe Name im msgConfig und msgDialog definiert wurde, wird der Wert aus msgDialog verwendet.

      • msgCommand <command>
        Befehl der zum Versenden einer Nachricht verwendet wird.
        Die Vorgabe ist "msg push \@$recipients $message"
        Dieses Attribut ist als "msgDialog_msgCommand" im msgConfig Gerät vorhanden.
      • configFile

        Alternativ zur Eingabe des Dialogs in der DEF kann eine Datei eingelesen werden, die die Konfigurationsinformationen zum Dialog enthält. Anzugeben ist der Pfad zu dieser Datei.
        Die Datei selbst muss den Dialog in einer JSON-Structur beinhalten (Kommentar-Zeilen beginnend mit # sind erlaubt) - ansonsten gilt dasselbe wie in define beschrieben.

        Beispiel (die Datei liegt im Modul-Verzeichnis):

        attr <msgDialogDevice> configFile ./FHEM/metaDialogue.cfg


      Readings

      • $recipient_history
        Durch | getrennte Liste von TRIGGERN um den aktuellen Zustand des Dialogs zu sichern.
        Für jeden Dialogpartner wird ein Readings angelegt. Wenn der Dialog beendet ist wird das Reading zurückgesetzt.

      Hinweise zur Benutzung mit Telegram:
        Es kann notwendig sein, dass im TelegramBot das Attribut "utf8specials" auf 1 gesetzt wird, damit Nachrichten mit Umlauten gesendert werden.

        Bei dem msg Befehl kann der TelegramBot_MTYPE angegeben werden. Die Vorgabe ist message. Durch den Wert queryInline lässt sich ein inline Keyboard erzeugen.

      Hinweise zur Benutzung mit Jabber:
        Bei dem msg Befehl kann der Jabber_MTYPE angegeben werden. Die Vorgabe ist leer. Durch den Wert otr lässt sich eine OTR Nachricht versenden.

      Hinweise zur Benutzung mit yowsub (WhatsApp):
        Bisher noch keine Erfahungen.

      Beispiele:
        Die folgenden beispiel Codes können nur per "Raw defnition" importiert werden.

        Alle Beispiele sind für die Kommunikation über den TelegramBot ausgelegt. Bei der Verwendung von Jabber oder yowsup müssen diese gegebenenfalls angepasst werden.
        Es wird davon ausgegangen, dass im msgConfig Gerät das evalSpecials "me" mit einem Namen gepflegt ist, über welchen der Bot angesprochen wird.

        Meta Dialog zur auflistung aller Berechtigten Dialoge:
          defmod meta_Dialog msgDialog {\
            "%me%": {\
              "match": "\/?(start|%me%)",\
              "commands": "deletereading TYPE=msgDialog $recipient_history",\
              "message": [\
                "{return('(' . join(') (', sort(split('\n', fhem('get TYPE=msgDialog:FILTER=NAME!=$SELF:FILTER=allowed=.*($recipient|everyone).* trigger'))), 'abbrechen') . ') ')}",\
                "Ich kann folgendes für dich tun:"\
              ]\
            },\
            "zurück": {\
              "commands": "set $recipient_history=.+|.+ say @$recipient {(ReadingsVal($DEV, '$recipient_history', '') =~ m/(.+)\\|.+$/;; return $2 ? $2 : $1;;)}"\
            },\
            "abbrechen": {\
              "match": "\/?abbrechen",\
              "commands": "deletereading TYPE=msgDialog $recipient_history",\
              "message": [\
                "TelegramBot_MTYPE=queryInline (%me%) ",\
                "Dialog abgebrochen."\
              ]\
            },\
            "beenden": {\
              "match": "\/?beenden",\
              "commands": "deletereading TYPE=msgDialog $recipient_history",\
              "message": [\
                "TelegramBot_MTYPE=queryInline (%me%) ",\
                "Dialog beendet."\
              ]\
            }\
          }
          attr meta_Dialog allowed everyone
          
        Abfrage der aktuellen Krafstoffpreise
          defmod Tankstelle_Dialog msgDialog {\
            "Tankstelle": {\
              "message": [\
                "TelegramBot_MTYPE=queryInline (%me%) ",\
                "Die Krafstoffpreise der betragen aktuell folgende Werte:",\
                "",\
                "AIVA",\
                "",\
                "[%AIVA%:Diesel] €/l Diesel",\
                "[%AIVA%:Super] €/l Super",\
                "[%AIVA%:E10] €/l E10",\
                "[%AIVA%:Autogas] €/l Autogas"\
              ]\
            }\
          }
          attr Tankstelle_Dialog evalSpecials AIVA=AIVA_petrolStation
          
        Programmierung der Waschmaschine
          defmod Waschmaschine_Dialog msgDialog { "Waschmaschine": {\
              "message": [\
                "{return('(Zeitprogramm stoppen) ') if(ReadingsVal('%controlUnit%', 'controlMode', '') eq 'auto')}",\
                "{return('(programmieren) ') if(ReadingsVal('%actor%', 'state', '') ne 'on')}",\
                "{return('(einschalten) ') if(ReadingsVal('%actor%', 'state', '') ne 'on')}",\
                "(Verlaufsdiagramm) ",\
                "(abbrechen) ",\
                "{return('Waschmaschine: ' . (ReadingsVal('%actor%', 'state', '') eq 'on' ? 'eingeschaltet' : 'ausgeschaltet'))}",\
                "{return('Modus: ' . (ReadingsVal('%controlUnit%', 'controlMode', '') eq 'auto' ? 'Automatik' : 'Manuell (' . ReadingsVal('%controlUnit%', 'time', '') . ')'))}"\
              ],\
              "Zeitprogramm stoppen": {\
                "commands": "set %controlUnit% controlMode manual",\
                "message": [\
                  "TelegramBot_MTYPE=queryInline (%me%) ",\
                  "Das Zeitprogramm wurde gestoppt."\
                ]\
              },\
              "programmieren": {\
                "message": [\
                  "(bestätigen|zurück|abbrechen) ",\
                  "( 00:00 | 00:15 | 00:30 | 00:45 ) ",\
                  "( 01:00 | 01:15 | 01:30 | 01:45 ) ",\
                  "( 02:00 | 02:15 | 02:30 | 02:45 ) ",\
                  "( 03:00 | 03:15 | 03:30 | 03:45 ) ",\
                  "( 04:00 | 04:15 | 04:30 | 04:45 ) ",\
                  "( 05:00 | 05:15 | 05:30 | 05:45 ) ",\
                  "( 06:00 | 06:15 | 06:30 | 06:45 ) ",\
                  "( 07:00 | 07:15 | 07:30 | 07:45 ) ",\
                  "( 08:00 | 08:15 | 08:30 | 08:45 ) ",\
                  "( 09:00 | 09:15 | 09:30 | 09:45 ) ",\
                  "( 10:00 | 10:15 | 10:30 | 10:45 ) ",\
                  "( 11:00 | 11:15 | 11:30 | 11:45 ) ",\
                  "( 12:00 | 12:15 | 12:30 | 12:45 ) ",\
                  "( 13:00 | 13:15 | 13:30 | 13:45 ) ",\
                  "( 14:00 | 14:15 | 14:30 | 14:45 ) ",\
                  "( 15:00 | 15:15 | 15:30 | 15:45 ) ",\
                  "( 16:00 | 16:15 | 16:30 | 16:45 ) ",\
                  "( 17:00 | 17:15 | 17:30 | 17:45 ) ",\
                  "( 18:00 | 18:15 | 18:30 | 18:45 ) ",\
                  "( 19:00 | 19:15 | 19:30 | 19:45 ) ",\
                  "( 20:00 | 20:15 | 20:30 | 20:45 ) ",\
                  "( 21:00 | 21:15 | 21:30 | 21:45 ) ",\
                  "( 22:00 | 22:15 | 22:30 | 22:45 ) ",\
                  "( 23:00 | 23:15 | 23:30 | 23:45 ) ",\
                  "Wann soll die Wäsche fertig sein?",\
                  "Bitte Uhrzeit in HH:MM angeben.",\
                  "Aktuell ist [%controlUnit%:time] Uhr eingestellt."\
                ],\
                "Uhrzeit": {\
                  "match": " ?([0-1][0-9]|2[0-3]):[0-5][0-9] ?",\
                  "commands": [\
                    "set %controlUnit% time $message",\
                    "set $SELF say @$recipient Waschmaschine|programmieren|bestätigen"\
                  ]\
                },\
                "bestätigen": {\
                  "commands": "set %controlUnit% controlMode auto",\
                  "message": [\
                    "TelegramBot_MTYPE=queryInline (%me%) ",\
                    "Das Zeitprogramm wurde eingestellt.",\
                    "Die Wäsche wird voraussichtlich um [%controlUnit%:time] Uhr fertig sein.",\
                    "Bitte die Waschmaschine vorbereiten."\
                  ]\
                }\
              },\
              "einschalten": {\
                "commands": [\
                  "set %controlUnit% controlMode manual",\
                  "set %actor% on"\
                ]\
              },\
              "Verlaufsdiagramm": {\
                "commands": "set %TelegramBot% cmdSend {plotAsPng('%plot%')}",\
                "message": "TelegramBot_MTYPE=queryInline (%me%) $message"\
              }\
            },\
            "auto": {\
              "setOnly": true,\
              "commands": [\
                "set %actor% on",\
                "set %controlUnit% controlMode manual"\
              ],\
              "message": [\
                "TelegramBot_MTYPE=queryInline (%me%) ",\
                "Die Wachmaschine wurde automatisch eingeschaltet."\
              ]\
            },\
            "manual": {\
              "setOnly": true,\
              "message": [\
                "TelegramBot_MTYPE=queryInline (%me%) ",\
                "Die Wachmaschine wurde manuell eingeschaltet."\
              ]\
            },\
            "done": {\
              "setOnly": true,\
              "commands": "set %actor% off",\
              "message": [\
                "TelegramBot_MTYPE=queryInline (%me%) ",\
                "Die Wachmaschine ist fertig."\
              ]\
            }\
          }
          attr Waschmaschine_Dialog evalSpecials actor=HM_2C10D8_Sw\
          controlUnit=Waschkeller_washer_controlUnit\
          plot=Waschkeller_washer_SVG
          

    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
          • $SELF enthaelt den Namen dieser notify
        • 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
      • disabledAfterTrigger <sekunden>
        deaktiviert die Ausführung für <sekunden> nach dem das notify ausgelöst wurde.
      • addStateEvent
        Das mit dem state Reading verknüpfte Event ist speziell, da das dazugehörige Prefix "state: " entfernt wird, d.h. $EVENT ist nicht "state: on", sondern nur "on". In manchen Fällen ist es aber erwünscht das unmodifizierte Event zu bekommen, d.h. wo "state: " nicht entfernt ist. Für diese Fälle sollte addStateEvent auf 1 gesetzt werden, die Voreinstellung ist 0 (deaktiviert).
        Achtung:
        • dieses Attribut muss beim Empfänger (notify, FileLog, etc) gesetzt werden.
        • dieses Attribut zeigt nur für solche Geräte-Events eine Wirkung, die readingFnAttributes unterstützen.
      • forwardReturnValue
        Rückgabe der Werte eines ausgeführten Kommandos an den Aufrufer. Die Voreinstellung ist 0 (ausgeschaltet), um weniger Meldungen im Log zu haben.
      • ignoreRegexp regexp
        Es ist nicht immer einfach ein Regexp zu bauen, was etwas _nicht_ matcht. Dieses Attribut hilft in diesen Fällen: das Event wird ignoriert, falls es den angegebenen Regexp matcht. Syntax ist gleich wie in der Definition.
      • perlSyntaxCheck
      • 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
      • setList
        Leerzeichen getrennte Liste von benutzerdefinierten Befehlen. Beim ausfüren solcher Befehle wird ein gleichnamiges Reading auf dem Wert des Befehls gesetzt. Kann z.Bsp. wie folgt verwendet werden:
          define Leuchtdauer notify schalter:on set Licht on-for-timer [$SELF:dauer]
          attr Leuchtdauer setList dauer:60,120,180

    Node.js Installation und Update

    [EN DE]
      npmjs - Bedienung der Node.js Installation und Updates
      Das Modul erlaubt es Node.js Pakete über den NPM Paket Manager zu installieren, zu deinstallieren und zu aktualisieren.
      Standardmäßig werden globale Installationen bedient und das Ausführen von update/install/uninstall erfordert sudo Berechtigungen wie diese:

      fhem ALL=(ALL) NOPASSWD:SETENV: /usr/bin/npm update *
      fhem ALL=(ALL) NOPASSWD:SETENV: /usr/bin/npm install *
      fhem ALL=(ALL) NOPASSWD:SETENV: /usr/bin/npm uninstall *


      Diese Zeile kann einfach in einer neuen Datei unter /etc/sudoers.d/fhem hinzugefügt werden und wird von dort automatisch in /etc/sudoers inkludiert.


      Define
        define <name> npmjs [<[user@]HOSTNAME[:port]>]

        Beispiel:
          define fhemServer npmjs

        Der Befehl erstellt eine npmjs Instanz mit dem Namen 'fhemServerNpm', um Kommandos auf der lokalen Host Maschine auszuführen. Anschließend werden die alle Informationen über den Installations- und Update Status geholt. Dies kann einen Moment dauern.

        Wenn man sich zu einem entfernten Rechner verbinden möchte, kann man den optionalen HOSTNAME Parameter zu etwas anderem als 'localhost' setzen. In diesem Fall muss auch sichergestellt sein, dass die SSH Schlüssel zwischen dem laufenden FHEM Benutzer und dem entfernten Server entsprechend konfiguriert sind.


      Readings
      • state - update Status des Servers
      • nodejsVersion - installierte Node.js Version
      • outdated - Status des letzten Update sync.
      • updated - Status des letzten update Befehles
      • installed - Status des letzten install Befehles
      • uninstalled - Status des letzten uninstall Befehles
      • updatesAvailable - Anzahl der verfügbaren Paketupdates


      Set
      • statusRequest - Node.js Installationsstatus aktualisieren
      • outdated - Holt aktuelle Informationen über den Updatestatus
      • update - Führt ein komplettes oder selektives Update aus (nutzt 'npm update' Kommando). FHEM relevante Pakete werden immer auf die neuste Major Version upgegraded (nutzt 'npm install' Kommando anstatt von 'npm update'). Semantische Versionierung wird bei anderen Paketen weiterhin respektiert und es werden keine Major Upgrades durchgeführt.
      • upgrade - Führt ein komplettes oder selektives Upgrade aus (nutzt 'npm install' Kommando). ACHTUNG! Jedes Paket wird auf die neuste und größte Version upgegraded (nutzt 'npm install' Kommando anstatt von 'npm update'), ganz egal ob der Paket Maintainer eine Inkompatibilität zwischen der aktuell installierten und der neusten Version definiert hat. Im Zweifel sollte besser stattdessen das Update set Kommando benutzt werden.
      • install - Installiert ein oder mehrere NPM Pakete. Wenn Node.js nicht installiert ist, wird die erstmalige Installation von Node.js angeboten (nur für APT kompatible Linux Distributionen). Node.js kann weiterhin manuell installiert werden. Über jede der angebotenen Optionen kann eine erneute Prüfung veranlasst werden. Bestehende Node.js Installationen werden niemals überschrieben und es ist nicht möglich ein Upgrade von Node.js über dieses FHEM Modul durchzuführen!
      • uninstall - deinstalliert ein oder mehrere NPM Pakete


      Get
      • showOutdatedList - Paketiste aller zur Verfügung stehender Updates
      • showErrorList - Liste aller aufgetretenden Fehler für das letzte Kommando


      Attributes
      • disable - Deaktiviert das Device
      • updateListReading - fügt die Update Liste als ein zusäiches Reading im JSON Format ein.
      • npmglobal - wechselt zwischen Global- und Benutzer-Installation. Standard ist 1=global
      • disabledForIntervals - Deaktiviert das Device für eine bestimmte Zeit (13:00-18:30 or 13:00-18:30 22:00-23:00)

    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.
      Zur Beachtung: Da powerMap dazu gedacht ist, zusätzliche Readings zu erzeugen, greift es zu einem frühen Zeitpunkt in der gesamten Eventverarbeitung auf (triggernde) Änderungen zu. Dies ist v.a. dann zu beachten, wenn versucht werden sollte, eigene Readings oder Werte mit anderen Eventhandlern (z.B. notify oder DOIF, per "setreading" Kommando) zu setzen.

      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.

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

    [EN DE]
      Zeigt eine Sammlung von Messwerten von einem oder mehreren Geräten an.

      Define
        define <name> readingsGroup <device>[:regex] [<device-2>[:regex-2]] ... [<device-n>[:regex-n]]

        Anmerkungen:
        • <device> kann die Form INTERNAL=VALUE haben, wobei INTERNAL der Name eines internen Wertes ist und VALUE ein Regex.
        • <device> kann die Form ATTRIBUTE&VALUE haben, wobei ATTRIBUTE der Name eines Attributs ist und VALUE ein Regex.
        • <device> kann die Form <STRING> oder <{perl}> haben, wobei STRING oder die von Perl zurückgegebene Zeichenfolge als Zeile in die Readings List eingefügt wird. Wird übersprungen, wenn STRING undef ist.
        • <device> kann ein devspec sein (siehe devspec) mit mindestens einem FILTER-Ausdruck sein.
        • Wenn Regex eine Komma separarierte Liste ist, werden die Reading-Values in einer einzelnen Zeile angezeigt.
        • Wenn Regex mit einem "+" beginnt, wird es mit den internen Werten (Internals) des Geräts anstelle der Readings verglichen.
        • Wenn Regex mit einem '?' beginnt, wird es mit den Attributen des Geräts verglichen und nicht mit den Werten (Readings) verglichen.
        • Wenn Regex mit einem '!' beginnt, wird die Anzeige des Wertes erzwungen, auch wenn kein Reading mit diesem Namen verfügbar ist.
        • Wenn Regex mit einem '$' beginnt, ist die Berechnung mit Wert-Spalten und Zeilen möglich.
        • Die folgenden "set magic" Präfixe und Suffixe können mit Regex verwendet werden:
          • Sie können anstelle von + und ? ein Präfix i :, r: oder a: verwenden. Analog zur devspec-Filterung.
          • Der Suffix :d ruft die erste Nummer ab.
          • Der Suffix :i ruft den ganzzahligen Teil der ersten Zahl ab.
          • Der Suffix :r<n> ruft die erste Zahl ab und rundet sie auf <n> Nachkommastellen ab. Wenn <n> fehlt, wird es auf eine Dezimalstelle gerundet.
          • Der Suffix :t gibt den Zeitstempel zurück (funktioniert nur mit Readings).
          • Der Suffix :sec gibt die Anzahl der Sekunden seit dem das Reading gesetzt wurde zurück. Wahrscheinlich nicht nützlich mit readingsGroups.
        • Regex kann von der Form <regex>@device sein, um Readings von einem anderen Gerät zu verwenden.
          Wenn der Gerätename mit einem '!' beginnt, wird die Anzeige deaktiviert. Verwenden Sie in Verbindung mit ! den Reading-Name.
        • Regex kann die Form <regex>@{perl} haben, um Readings von einem anderen Gerät zu verwenden.
        • Regex kann von der Form <STRING> oder <{perl}[@readings]> sein, wobei STRING oder die von Perl zurückgegebene Zeichenfolge als Reading eingefügt wird, oder:
          • das Element wird übersprungen, wenn STRING undef ist
          • wenn STRING br ist, wird eine neue Zeile gestartet
          • wenn STRING hr ist, wird eine horizontale Linie eingefügt
          • wenn STRING tfoot ist, wird der Tabellenfuß gestartet
          • wenn STRING die Form hat, %ICON[%CMD] ICON wird als Name eines Symbols anstelle von Text und CMD als der Befehl verwendet, der ausgeführt werden soll, wenn auf das Symbol geklickt wird. Siehe auch die Befehlsattribute.
          Wenn Readings aktualisiert werden, wird der Perl-Ausdruck bei Longpoll-Aktualisierungen erneut ausgewertet.
        • Wenn der erste Regex '@<index>' ist, gibt es den Index der folgenden Regex an, mit dem die Messwerte gruppiert werden sollen. Wenn Erfassungsgruppen verwendet werden, können sie durch #<number> refferenziert werden. z.Bsp:
            <IP-Adress><Hostname><MAC><Vendor>
            nmap:@2,<#1>,(.*)_hostname,#1_macAddress,#1_macVendor
        • Für interne Werte (Internals) und Attribute ist longpoll update nicht möglich. Aktualisieren Sie die Seite, um die Werte zu aktualisieren.
        • Der Ausdruck <{perl}> ist auf Ausdrücke ohne Leerzeichen beschränkt. Es ist am besten, eine kleine Sub in 99_myUtils.pm aufzurufen, anstatt einen complexen Ausdruck im Define zu haben.

        Beispiele:
          define batteries readingsGroup .*:battery

          define temperatures readingsGroup s300th.*:temperature
          define temperatures readingsGroup TYPE=CUL_WS:temperature

          define culRSSI readingsGroup cul_RSSI=.*:+cul_RSSI

          define heizung readingsGroup t1:temperature t2:temperature t3:temperature
          attr heizung notime 1
          attr heizung mapping {'t1.temperature' => 'Vorlauf', 't2.temperature' => 'R&uuml;cklauf', 't3.temperature' => 'Zirkulation'}
          attr heizung style style="font-size:20px"

          define systemStatus readingsGroup sysstat
          attr systemStatus notime 1
          attr systemStatus nostate 1
          attr systemStatus mapping {'load' => 'Systemauslastung', 'temperature' => 'Systemtemperatur in &deg;C'}

          define Verbrauch readingsGroup TYPE=PCA301:state,power,consumption
          attr Verbrauch mapping %ALIAS
          attr Verbrauch nameStyle style="font-weight:bold"
          attr Verbrauch style style="font-size:20px"
          attr Verbrauch valueFormat {power => "%.1f W", consumption => "%.2f kWh"}
          attr Verbrauch valueIcon { state => '%devStateIcon' }
          attr Verbrauch valueStyle {($READING eq "power" && $VALUE > 150)?'style="color:red"':'style="color:green"'}

          define rg_battery readingsGroup TYPE=LaCrosse:[Bb]attery
          attr rg_battery alias Batteriestatus
          attr rg_battery commands { "battery.low" => "set %DEVICE replaceBatteryForSec 60" }
          attr rg_battery valueIcon {'battery.ok' => 'batterie', 'battery.low' => 'batterie@red'}

          define rgMediaPlayer readingsGroup myMediaPlayer:currentTitle,<>,totaltime,
          ,currentAlbum,<>,currentArtist,
          ,volume,<{if(ReadingsVal($DEVICE,"playStatus","")eq"paused"){"%rc_PLAY%set+$DEVICE+play"}else{"%rc_PAUSE%set+$DEVICE+pause"}}@playStatus>,playStatus
          attr rgMediaPlayer commands { "playStatus.paused" => "set %DEVICE play", "playStatus.playing" => "set %DEVICE pause" }
          attr rgMediaPlayer mapping  
          attr rgMediaPlayer notime 1
          attr rgMediaPlayer valueFormat { "volume" => "Volume: %i" }
          #attr rgMediaPlayer valueIcon { "playStatus.paused" => "rc_PLAY", "playStatus.playing" => "rc_PAUSE" }


      Set
      • hide
        Alle sichtbaren Instanzen dieser ReadingsGroup werden ausgeblendet
      • show
        Zeigt alle sichtbaren Instanzen dieser ReadingsGroup an
      • toggle
        Schaltet den versteckten / angezeigten Zustand aller sichtbaren Instanzen dieser ReadingsGroup an.
      • toggle2
        schaltet den erweiterten / kollabierten Zustand aller sichtbaren Instanzen dieser ReadingsGroup an.

      Get

      Attribute
      • alwaysTrigger
        1 -> Events auch wenn nicht sichtbar.
        2 -> Events für berechnete Werte.

      • disable
        1 -> Deaktivieren der Benachrichtigung Verarbeitung und Longpoll-Updates. Hinweis: Dadurch wird auch die Umbenennung und Löschbehandlung deaktiviert.
        2 -> Deaktivieren der HTML-Tabellenerstellung
        3 -> Deaktivieren der HTML-Erstellung vollständig

      • sortDevices
        1 -> Sortieren der Geräteliste alphabetisch. Verwenden Sie das erste von sortby oder alias oder name, das für jedes Gerät definiert ist.
      • noheading
        Wenn sie auf 1 gesetzt ist, hat die Readings-Tabelle keine Überschrift.

      • nolinks
        Deaktiviert die HTML-Links von der Überschrift und den Readings-Namen.

      • nostate
        Wenn der Wert 1 ist, wird der Status nicht berücksichtigt.

      • nonames
        Wenn der Wert auf 1 gesetzt ist, wird der Readings-Name / Zeilentitel nicht angezeigt.

      • notime
        Wenn der Wert auf 1 gesetzt, wird der Readings-Timestamp nicht angezeigt.

      • mapping
        Kann ein einfacher String oder ein in {} eingeschlossener Perl-Ausdruck sein, der einen Hash zurückgibt, der den Reading-Name dem angezeigten Namen zuordnet. Der Schlüssel kann entweder der Name des Readings oder <device>.<reading> oder <reading>.<value> oder <device>.<reading>.<value> sein. %DEVICE, %ALIAS, %ROOM, %GROUP, %ROW und %READING werden durch den Gerätenamen, Gerätealias, Raumattribut ersetzt. Sie können diesen Keywords auch ein Präfix voranstellen $ anstatt von %. Beispiele:
        attr temperatures mapping $DEVICE-$READING
        attr temperatures mapping {temperature => "%DEVICE Temperatur"}

      • separator
        Das zu verwendende Trennzeichen zwischen dem Gerätealias und dem Reading-Namen, wenn keine Zuordnung angegeben ist, standardgemäß ':' Ein Leerzeichen wird so dargestellt &nbsp;

      • setList
        Eine durch Leerzeichen getrennte Liste von Befehlen, die zurückgegeben werden "set name ?", Das FHEMWEB-Frontend kann also ein Dropdown-Menü erstellen und An / Aus-Schalter anbieten. Set-Befehle, die nicht in dieser Liste enthalten sind, werden zurückgewiesen.

      • setFn
        Perl-Ausdruck, der für die Befehle aus der setList ausgeführt wird. Es hat Zugriff auf $CMD und $ARGS.

      • style
        Geben Sie einen HTML-Stil für die Readings-Tabelle an, z.Bsp:
        attr temperatures style style="font-size:20px"

      • cellStyle
        Geben Sie einen HTML-Stil für eine Zelle der Readings-Tabelle an. Normale Zeilen und Spalten werden gezählt beginnend mit 1, Die Zeilenüberschriften beginnt mit der Spaltennummer 0. Perl-Code hat Zugriff auf $ROW und $COLUMN. Schlüssel für Hash-Lookup können sein: r:#, c:# oder r:#,c:# , z.Bsp:
        attr temperatures cellStyle { "c:0" => 'style="text-align:right"' }

      • nameStyle
        Geben Sie einen HTML-Stil für die Readings-Namen an, z.Bsp:
        attr temperatures nameStyle style="font-weight:bold"

      • valueStyle
        Geben Sie einen HTML-Stil für die Readings-Werte an, z.Bsp:
        attr temperatures valueStyle style="text-align:right"

      • valueColumn
        Geben Sie die Mindestspalte an, in der ein Messwert angezeigt werden soll. z.Bsp:
        attr temperatures valueColumn { temperature => 2 }

      • valueColumns
        Geben Sie einen HTML-Colspan für die Readings-Werte an, z.Bsp:
        attr wzReceiverRG valueColumns { eventdescription => 'colspan="4"' }

      • valueFormat
        Geben Sie eine Sprintf-Stilformat-Zeichenfolge an, die zum Anzeigen der Readings-Werte verwendet wird. Wenn die Formatzeichenfolge undef ist wird dieser Messwert übersprungen. Es kann als String angegeben werden, ein Perl-Ausdruck, der einen Hash- oder Perl-Ausdruck zurückgibt, der einen String zurückgibt, z.Bsp:
        attr temperatures valueFormat %.1f °C
        attr temperatures valueFormat { temperature => "%.1f °C", humidity => "%i %%" }
        attr temperatures valueFormat { ($READING eq 'temperature')?"%.1f °C":undef }

      • valuePrefix
        Text, der dem Readings-Wert vorangestellt wird

      • valueSuffix
        Text, der nach dem Readings-Wert angehängt wird
        attr temperatures valueFormat { temperature => "%.1f", humidity => "%i" }
        attr temperatures valueSuffix { temperature => "°C", humidity => " %" }

      • nameIcon
        Geben Sie das Symbol an, das anstelle des Readings-Name verwendet werden soll. Es kann ein einfacher String oder ein in {} eingeschlossener Perl-Ausdruck sein, der einen Hash zurückgibt, der dem Readings-Name den Icon-Namen zuordnet. z.Bsp:
        attr devices nameIcon $DEVICE

      • valueIcon
        Geben Sie ein Symbol an, das anstelle des Readings-Wert verwendet werden soll. Es kann ein einfacher String oder ein in {} eingeschlossener Perl-Ausdruck sein, der einen Hash zurückgibt, der dem Readings-Wert dem Symbolnamen zuordnet. z.Bsp:
        attr devices valueIcon $VALUE
        attr devices valueIcon {state => '%VALUE'}
        attr devices valueIcon {state => '%devStateIcon'}
        attr rgMediaPlayer valueIcon { "playStatus.paused" => "rc_PLAY", "playStatus.playing" => "rc_PAUSE" }

      • commands
        Kann auf verschiedene Arten verwendet werden:
        • Um ein Reading oder ein Symbol anklickbar zu machen, indem Sie direkt den Befehl angeben, der ausgeführt werden soll. z.Bsp:
          attr rgMediaPlayer commands { "playStatus.paused" => "set %DEVICE play", "playStatus.playing" => "set %DEVICE pause" }
        • Wenn der zugeordnete Befehl die Form <command>:[<modifier>] hat, wird das normale FHEMWEB webCmd-Widget für für diesen commands verwendet. z.Bsp:
          attr rgMediaPlayer commands { volume => "volume:slider,0,1,100" }
          attr lights commands { pct => "pct:", dim => "dim:" }
        • commands können für Attribute verwendet werden. z.Bsp:
          attr commands { disable => "disable:" }

      • visibility
        Wenn sie auf hidden oder hideable eingestellt ist, wird eine kleine Schaltfläche links neben dem Namen der Readings-Group angezeigt, um den Inhalt der Readings-Group zu erweitern / auszublenden. Wenn eine Readings-Group erweitert wird, werden alle anderen Gruppen derselben Gruppe ausgeblendet.
          hidden -> Standardmäßig ist hidden aktiv, kann jedoch erweitert werden.
          hideable -> Standardmäßig ist hideable aktiv, kann jedoch ausgeblendet werden.

        Wenn diese Option auf "collapsed" oder "collapsible" eingestellt ist, erkennt readingsGroup die Specials <->,<+> und <+-> als die ersten Elemente von eine Linie, um dieser Linie ein + oder - Symbol hinzuzufügen. Durch Klicken auf das + oder - Symbol wird zwischen erweitertem und reduziertem Zustand umgeschaltet. Wenn eine Readings-Group erweitert wird, werden alle anderen Gruppen in der gleichen Gruppe ausgeblendet.
          - -> Die Linie wird im expandierten Zustand sichtbar sein.
          + -> Die Linie wird im zusammengefalteten Zustand angezeigt.
          +- -> Die Linie wird in beiden Zuständen sichtbar sein.

          collapsed -> Der Standardstatus ist reduziert, kann jedoch erweitert werden.
          collapsible -> Der Standardstatus ist sichtbar, kann jedoch minimiert werden.

      • headerRows

      • sortColumn
        > 0 -> sortiert die Tabelle automatisch nach dem Laden der Seite nach dieser Spalte
        0 -> sortiert Sie nicht automatisch, sondern durch Klicken auf eine Spaltenüberschrift
        < 0 -> sortiert die Tabelle automatisch nach dem Laden der Seite nach dieser Spalte

      • perlSyntaxCheck

      Für die Hash-Version aller Zuordnungsattribute kann ein Standardwert angegeben werden mit { '' => <default> }.

      Die Stilattribute können auch einen in {} eingeschlossenen Perl-Ausdruck enthalten, der die zu verwendende Stilzeichenfolge zurückgibt. Für nameStyle und valueStyle, kann der Perl-Code $DEVICE,$READING,$VALUE und $NUM verwendet werden. z.Bsp:
        attr batteries valueStyle {($VALUE ne "ok")?'style="color:red"':'style="color:green"'}
        attr temperatures valueStyle {($DEVICE =~ m/aussen/)?'style="color:green"':'style="color:red"'}

      Hinweis: Nur valueStyle, valueFomat, valueIcon und <{...}@reading> werden bei Longpoll-Updates ausgewertet und valueStyle muss für jeden möglichen Wert einen nicht leeren Stil zurückgeben. Alle anderen Perl-Ausdrücke werden nur einmal während der HTML-Erstellung ausgewertet und geben keine Wertupdates mit longpoll wieder. Aktualisieren Sie die Seite, um den dynamischen Stil zu aktualisieren. Für nameStyle funktioniert das Farbattribut momentan nicht, die font -... und background Attribute funktionieren.

      Berechnung: Bitte sehen Sie sich dafür diese Beschreibung an in der Wiki.
      z.Bsp: define rg readingsGroup .*:temperature rg:$avg

    readingsHistory

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

    readingsProxy

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

    readingsWatcher

    [EN DE]
      Das Modul überwacht Readings in anderen Modulen darauf das sich dessen Readings bzw. deren Zeiten in bestimmten Abständen ändern
      und löst ggf. Events aus die mit anderen Modulen (z.B. notify,DOIF) weiter verarbeitet werden können.
      Forum : https://forum.fhem.de/index.php/topic,49408.0.html

      Define
        define <name> readingsWatcher

        Definiert ein readingsWatcher Device.

        Danach besitzt jedes FHEM Device das neue globale Attribut readingsWatcher
        Dieses Attribut ist bei allen zu überwachenden Geräten wie folgt zu belegen :
        attr mydevice timeout,[Ersatz],Readings1,[Readings2][;timeout2,Ersatz2,Reading,Reading] Timeout in Sekunden, neuer Reading Wert, Reading1 des Devices, Reading2, usw.

        Beispiel : Ein Funk Thermometer sendet in regelmäßigen Abständen ( z.b.5 Sekunden ) seine Werte.
        Bleiben diese nun für eine bestimmte Zeit aus, so kann das Modul diesen nun nicht mehr aktuellen Werte (oder Werte)
        mit einem beliebigen anderen Wert überschreiben ( z.B. ??? )
        Das Attribut readingsWatcher könnte hier wie folgt gesetzt werden :

        attr AussenTemp readingsWatcher 300,???,temperature

        oder falls mehr als ein Reading überwacht werden soll

        attr AussenTemp readingsWatcher 300,???,temperature,humidity

        Sollen Readings nur auf ihre Aktualiesierung überwacht, deren Wert aber nicht überschrieben werden,
        so muss der Ersatzsstring leer gelassen werden :
        Bsp : attr AussenTemp readingsWatcher 300,,temperature,humidity


        weitere Beispiele :
        attr wetter readingsWatcher 300,,temperature+humidity (neu)
        attr wetter readingsWatcher 300,,temperature,humidity;3600,???,battery
      Set
      • active
      • inactive
      • checkNow
      • clearReadings

      Get
      • devices

      Attribute

        • delimiter
          Trennzeichen für Reading Namen (z.b. device_reading) default _

        • disable
          Deaktiviert das Device

        • interval <Sekunden> (default 60)
          Zeitintervall zur kontinuierlichen Überprüfung

        • deleteUnusedReadings (default 1)
          Readings mit dem Wert unused werden automatisch gelöscht

        • readingActivity (default none)
          Das Modul kann ähnlich dem HomeMatic ActionDetector im überwachten Gerät ein eigenes Reading setzen und den Überwachungsstatus
          in diesem speichern. Beispiel :
          attr <name> readingActivity actifity
          Erzeugt in den überwachten Geräten das zusäzliche Reading actifity und versorgt es mit dem Status dead bzw alive
          attr <name> readingActivity aktiv:0:1
          Erzeugt in den überwachten Geräten das zusätzliche Reading aktiv und versorgt es mit dem Status 0 bzw 1


    remotecontrol

    [EN DE]
      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

    [EN DE]
      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

    [EN DE]
      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".

    search

    [EN DE]
      search <Suchausdruck>
      Durchsucht FHEM nach Geräten, Modulen, Entwickler Paketen, Schlüsselwörtern und Perl Paketen.
      Dieses Kommando benötigt eine Geräteinstanz des FHEM Installer Moduls. Sofern kein lokales Installer Gerät vorhanden ist, wird beim ersten ausführen dieses Kommandos eines angelegt.

      Das 'Get search' Kommando des FHEM Installer verrät mehr daräber, wie die Suche funktioniert.

    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 Btn1:on innerhalb einer Sekunde gedrückt wurde, definiert man folgendes:
          define lampseq sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on
          define lampon notify lampseq:trigger set lamp on
        Nachfolgende Regexps können den Namen des Gerätes weglassen, in diesem Fall werden nur die Events des beim ersten Event eingetroffenen Gerätes beachtet:
          define lampseq sequence Btn.:on 0.5 :off

        Timeout kann als <delay>:<timeout> spezifiziert werden, dabei setzt delay die Zeit, wo kein passendes Event empfangen werden darf, ansonsten wird sequence abgebrochen. Das kann verwendet werden, um "press and hold" auszuwerten. Folgendes
          define lampseq sequence Btn1:on 2:3 :off
        ist nur erfolgreich, falls Btn1 zwischen 2 und 5 Sekunden lang gedrückt wurde.
        Die globale Variable $data{sequence_source} wird auf dem Namen des Gerätes gesetzt, was den letzten Event ausgelöst hat.

      Set
        N/A

      Get
        N/A

      Attributes
      • addStateEvent
      • disable
      • disabledForIntervals
      • 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.* 1 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

      • strictSequence
        Falls gesetzt ist (auf 1), jedes "unerwartete" Event setzt die Verarbeitung zurück. Das kann bei sog. Brute-Force Attacken helfen.
        Achtung: es funktioniert nur dann wie erwartet, wenn die Definition nur auf die konfigurierten Geraete triggert (siehe das NOTIFYDEV Internal), und die Quelle generiert nur die gewünschten Events (kein Zeitstempel, ACK, etc).


    serviced

      Mit serviced können lokale und entfernte Dienste verwaltet werden.
      Die üblichen Kommandos sind verfügbar: start/restart/stop/status.

      Define

        define <name> serviced <Dienst Name> [<user@ip-adresse>]

      Beispiel serviced für lokale Dienste:

        define hb serviced homebridge

      Beispiel serviced für entfernte Dienste:

        define hyp serviced hyperion pi@192.168.1.4

      Für entfernte Dienste muss dem Benutzer unter dem FHEM läuft dass passwortlose Anmelden per SSH erlaubt werden. Eine Anleitung wie das zu machen geht ist unter diesem Link abrufbar.

      Zur Benutzung von systemctl (systemd) oder service (initd) müssen dem Benutzer unter dem FHEM läuft die entsprechenden Rechte in der sudoers Datei erteilt werden (/etc/sudoers) (visudo).

      Für systemd (bitte mit eigenen Pfaden abgleichen):
        fhem ALL=(ALL) NOPASSWD:/bin/systemctl

      Für initd (bitte mit eigenen Pfaden abgleichen):
        fhem ALL=(ALL) NOPASSWD:/usr/sbin/service


      Wenn homebridgeMapping in der Attributliste ist, so wird ein entsprechendes Mapping hinzugefügt, ebenso genericDeviceType.

      Set

      • start
        angehaltenen Dienst starten
      • stop
        laufenden Dienst anhalten
      • restart
        Dienst neu starten
      • status
        Status des Dienstes abrufen

      Get

      • status
        Status des Dienstes abrufen
        identisch zu 'set status'

      Attribute

      • serviceAutostart
        Verzögerung in Sekunden um den Dienst nach Start von FHEM (neu) zu starten
        Voreinstellung:
      • serviceAutostop
        Timeout in Sekunden um den Dienst bei Beenden von FHEM ebenso zu beenden
        Voreinstellung:
      • serviceGetStatusOnInit
        beim Start von FHEM automatisch den Status des Dienstes abrufen
        Voreinstellung: 1
      • serviceInitd
        benutze initd (system) statt systemd (systemctl)
        Voreinstellung: 0
      • serviceLogin
        SSH Anmeldedaten für entfernten Dienst
        passwortloser SSH Zugang ist Grundvoraussetzung
        Voreinstellung:
      • servicePort
        SSH Port falls ein anderer als der Standard Port (22) verwendet wird
        Voreinstellung: 22
      • serviceRegexFailed
        Regex für failed Status
        Voreinstellung: dead|failed|exited
      • serviceRegexStarted
        Regex für running Status
        Voreinstellung: running|active
      • serviceRegexStarting
        Regex für starting Status
        Voreinstellung: activating|starting
      • serviceRegexStopped
        Regex für stopped Status
        Voreinstellung: inactive|stopped
      • serviceStatusInterval
        Interval um den Status automatisch zu aktualisieren
        Voreinstellung:
      • serviceStatusLine
        Zeilennummer der Status Rückgabe welche die Status Information enthält
        Voreinstellung: 3
      • serviceSudo
        sudo benutzen
        Voreinstellung: 1

      Readings

      Alle Aktualisierungen der Readings erzeugen Events.

      • error
        letzter aufgetretener Fehler, none wenn kein Fehler aufgetreten ist
      • state
        aktueller Zustand
      • status
        letzte Statuszeile von 'get/set status'

    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

      Dieses Modul wertet von den angegebenen Geräten (als regulärer Ausdruck) bestimmte Werte statistisch aus und fügt das Ergebnis den jeweiligen Geräten als neue Werte hinzu.
      Für detailierte Anleitungen bitte die FHEM-Wiki konsultieren und ergänzen.
       
      Es unterscheidet in vier Statistik-Typen denen bereits standardmäßig Gerätewerte zugeordnet sind:
      • Min|Avg|Max Minimum, Durchschnitt und Maximum von Momentanwerten:
        über den Zeitraum Tag, Monat und Jahr:
        current, energy_current, humidity, luminosity, temperature, voltage, etc.
        über den Zeitraum Stunde, Tag, Monat und Jahr:
        brightness, wind, wind_speed, windSpeed, etc.

      • Tendency Tendenz über 1h, 2h, 3h und 6h: pressure

      • Delta Differenz zwischen Anfangs- und Endwerte innerhalb eines Zeitraums (Stunde, Tag, Monat, Jahr):
        count, energy, energy_total, power, total, rain, rain_rate, rain_total, etc.

      • Duration Dauer und Anzahl der Zustände (on, off, open, closed...) innerhalb eines Zeitraums (Tag, Monat, Jahr):
        lightsensor, lock, motion, Window, window, state (wenn kein anderer Gerätewert gültig)

      Über die 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äßig stat

      Set

      • resetStatistics <All|Gerätename>
        Setzt die Statistiken der ausgewählten Geräte zurück.

      • doStatistics
        Berechnet die aktuellen Statistiken aller beobachteten Geräte.
      • setStatistics <device> <reading> <period> <value>
        Setzt einen statistic Wert auf einen festen Wert. Die period ist eine aus Hour, Day, Month, Year.
        Iimplementiert für delta Readings (Hour, Day, Month, Year). Hinweis: nicht für die Last-Readings.

      Get

        nicht implementiert

      Attribute

      • dayChangeTime <Zeit>
        Uhrzeit des Tageswechsels. Standardmäßig 00:00. Bei Wetterdaten kann der Tageswechsel z.B. auf 6:50 gesetzt werden.

      • deltaReadings <Gerätewerte>
        Durch Kommas getrennte Liste von weiteren Gerätewerten, für welche die Differenz zwischen den Werten am Anfang und Ende einer Periode (Stunde/Tag/Monat/Jahr) bestimmt wird.

      • durationPeriodHour < 1 | 0 >
        Wenn auf 1 gesetzt, dann werden für "durationReadings" auch stündliche Statistiken gebildet.

      • durationReadings <Gerätewerte>
        Durch Kommas getrennte Liste von weiteren Gerätewerten, für welche die Dauer einzelner Gerätewerte innerhalb bestimmte Zeiträume (Stunde/Tag/Monat/Jahr) erfasst wird.

      • excludedReadings <GerätenameRegExp:GerätewertRegExp>
        Regulärer Ausdruck der Gerätewerte die nicht ausgewertet werden sollen. z.B. FritzDect:current|Sensor_.*:humidity

      • limitDecimals <reading:decimals>
        Durch Angabe einer Liste im Format reading:decimals (Leerzeichen getrennt) wird die maximale Anzahl
        von Nachkommastellen festgelegt (greift nur bei Delta und Avg).

      • ignoreDefaultAssignments <0 | 1>
        Ignoriert die Standardzuordnung von Gerätewerten zu Statistik-Typen..
        D.h., nur die Gerätewerte, die über Attribute den Statistik-Typen zugeordnet sind, werden ausgewertet.

      • hideAllSummaryReadings <0 | 1>
        noch nicht implementiert - Es werden keine gesammelten Statistiken angezeigt, sondern nur die unter "singularReadings" definierten Einzelwerte

      • minAvgMaxReadings <Gerätewerte>
        Durch Kommas getrennte Liste von Gerätewerten, für die in bestimmten Zeiträumen (Tag, Monat, Jahr) Minimum, Mittelwert und Maximum erfasst werden.

      • periodChangePreset <Sekunden>
        Start der Berechnung der periodischen Daten, standardmäßig 5 Sekunden vor der vollen Stunde,
        Erlaubt die korrekte zeitliche Zuordnung in Plots, kann je nach Systemauslastung verringert oder vergrößert werden.

      • singularReadings <GerätRegExp:GeräteWertRegExp:Statistiktyp:Zeitraum>
        • Statistik-Typ: 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
      • saveStructState <readingName>
        Der Status (genauer: state Reading) aller Mitglieder wird im angegebenen Reading Komma separiert gespeichert.

      • restoreStructState <readingName>
        Der Status der Mitglieder wird aus dem angegebenen Reading gelesen, und via "set Mitgliedsname StatusWert" gesetzt.

      • Jedes andere set Kommando wird an alle Devices dieser Struktur weitergegeben.
        Ausnahme: 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 Weitergabe der set an jeden Devicenamen wie folgt angehängt: set <devN>:FILTER=<filter> <type-specific>
        Falls der letzte Parameter reverse ist, dann werden die Befehle in der umgekehrten Reihenfolge ausgeführt.
        Falls der letzte Parameter dem Muster "random:4" entspricht, erhalten nur 4 zufällig ausgewählte Devices den Befehl.

      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
      • considerDisabledMembers
        wenn gesetzt (auf 1), werden "disabled" Mitglieder bei der Berechnung der Struktur-Status berücksichtigt, sonst werden diese ignoriert.
      • 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
        Ist das Attribut nicht gesetzt, wertet structure den state des Devices aus, bzw. falls dieser nicht existiert, dessen STATE.
      • evaluateSetResult
        Falls ein set Befehl den Status der Struktur-Mitglieder auf was unterschiedliches setzt (wie z.Bsp. beim set statusRequest), dann muss dieses Attribut auf 1 gesetzt werden, wenn die Struktur Instanz diesen neuen Status auswerten soll.
      • filterEvents
        falls gesetzt, und das Event auslösende Gerät über ein struct_type map verfügt, dann werden nur solche Events die Strukturberechnung auslösen, die in diesem map enthalten sind.
        Achtung: in struct_type map werden nur die readingName und readingName:oldVal:newVal Einträge berücksichtigt.
      • propagateAttr <regexp>
        Falls der Regexp auf den Namen des Attributes zutrifft, dann wird dieses Attribut an allen Mitglieder weitergegeben. Für featurelevel <= 5.9 ist die Voreinstellung .* (d.h. alle Attribute), sonst ^$ (d.h. keine Attribute).
        Achtung: folgende Attribute wurden fuer featurelevel<=5.9 nicht weitervererbt:
          alias async_delay clientstate_behavior clientstate_priority devStateIcon disable disabledForIntervals group icon room propagateAttr setStateIndirectly stateFormat webCmd userattr
      • setStateIndirectly
        Falls wahr (1), dann wird der Status der Struktur nur aus dem Statusmeldungen der Mitglied-Geräte bestimmt, sonst wird zuerst der Status auf dem set Argument gesetzt. Die Voreinstellung ist 0.
      • setStructType
        Falls wahr (1), <struct-type> wird als Attribute für jedes Mitglied-Gerät auf dem Namen der Struktur gesetzt. Wahr ist die Voreinstellung für featurelevel <= 5.8.
      • structexclude
        Bei gesetztem Attribut wird set, attr/deleteattr ignoriert. Dies trifft ebenfalls auf die Weitergabe des Devicestatus an die Struktur zu. Fuer set und fuer die Status-Weitergabe muss der Wert den Strukturnamen matchen, bei einem Attribut-Befehl die Kombination Strukturname:Attributname. Beispiel:
          define kitchen structure room lamp1 lamp2
          attr lamp1 structexclude kitchen
          attr lamp1 structexclude kitchen:stateFormat
      • readingFnAttributes

    systemd Watchdog Client

    [EN DE]

      systemd erlaubt die Überwachung von Programmen mittels eines Watchdogs. Sendet der beobachtete Prozess innerhalb eines definierten Intervalls kein Lebenszeichen an den systemd, wird dieser den überwachten Prozess stoppen und neu starten. Dieses Modul sendet periodisch eine keep-alive Nachricht an den systemd-Watchdog.

      Define
      define <name> systemd_watchdog

      Legt einen neuen systemd-Watchdog mit dem Namen name an.

      systemd service facility

      Um den Status überwachen zu können, muss FHEM durch systemd gestartet werden und der systemd-Watchdog muss korrekt konfiguriert sein. Dazu kann das die folgende systemd service facility genutzt werden:

        
      [Unit]
      Description=FHEM Home Automation
      Requires=network.target
      After=dhcpcd.service
      
      [Service]
      Type=forking
      NotifyAccess=all
      User=fhem
      Group=dialout
      
      # Run ExecStartPre with root-permissions
      ExecStartPre=-+/bin/mkdir -p /run/fhem
      ExecStartPre=+/bin/chown -R fhem:dialout /run/fhem
      
      # Run ExecStart with defined user and group
      WorkingDirectory=/opt/fhem
      ExecStart=/usr/bin/perl fhem.pl fhem.cfg
      #ExecStart=/usr/bin/perl fhem.pl configDB   # use for configDB
      TimeoutStartSec=240
      TimeoutStopSec=120
      
      # Stop service with root priviliges
      ExecStop=+/usr/bin/pkill -F /run/fhem/fhem.pid
      
      # Restart options: no, on-success, on-failure, on-abnormal, on-watchdog, on-abort, or always.
      Restart=on-failure
      RestartSec=3
      WatchdogSec=180
      PIDFile=/run/fhem/fhem.pid
      
      [Install]
      WantedBy=multi-user.target
        
        

      Das Script kann unter /etc/systemd/system/fhem.service abgelegt werden. Mit sudo systemctl daemon-reload wird die systemd-Konfiguration erneuert um die Änderungen zu aktivieren. Anschließend kann FHEM mit sudo service fhem start gestartet werden.

      Wenn in der service unit Type=notify verwendet wird, muss in FHEM das globale Attribut nofork=1 gesetzt sein: attr global nofork 1.

      Wird Type=forking muss in der systemd service facility der korrekte Pfad zu der PID-Datei angegeben werden, die dann im globalen Device in FHEM mit attr global pidfilename /run/fhem/fhem.pid konfiguriert werden kann.

    tahoma

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

    telnet

    [EN DE]

      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. Gültige Werte sind 0 und 1, 0 ist die Voreinstellung. Nach ändern des Wertes ein FHEM Neustart ist erforderlich. Falls openssl installiert ist, dann werden die notwendigen Zertifikate automatisch generiert, hier gibt es eine Beschreibung, wie das Zertifikat manuell generiert werden kann. Beim gesetzten Attribut kann man den telnet Befehl nicht mehr zum Verbinden werwenden, mögliche Alternativen sind folgende Programme:
          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.
        Achtung: falls allowfrom nicht gesetzt ist, und keine gütige allowed Instanz definiert ist, und die Gegenstelle eine nicht lokale Adresse hat, dann wird die Verbindung abgewiesen. Folgende Adressen werden als local betrachtet:
          IPV4: 127/8, 10/8, 192.168/16, 172.16/10, 169.254/16
          IPV6: ::1, fe80/10

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

      • sslCertPrefix
        Setzt das Präfix der SSL-Zertifikate, die Voreinstellung ist certs/server-, siehe auch das SSL Attribut.

    template

    [EN DE]
      template [use|show] <filename> [<param1>=<value1> [<param2>=<value2> [...]]]

      Includes a file with parameter substitution, i.e. read the file and process every line as a FHEM command. For any given parameter/value pair <param>=<value> on the command line, a literal %<param>% in the file is replaced by <value> before executing the command.

      This can be used to to code recurring definitions of one or several devices only once and use it many times. template show .. shows what would be done, including a parameter listing, while template use ... actually does the job. The word use can be omitted.

      Example

      File H.templ:

      define %name% FHT %fhtcode%
      attr %name% IODev CUN
      attr %name% alias %alias%
      attr %name% group %group%
      attr %name% icon icoTempHeizung.png
      attr %name% room %room%,Anlagen/Heizungen

      define watchdog.%name% watchdog %name% 00:15:00 SAME set %name% report2 255
      attr watchdog.%name% group %group%
      attr watchdog.%name% room Control/Heizungen

      define %name%.log FileLog /opt/fhem/log/%name%-%Y%m.log %name%:.*
      attr %name%.log group %group%
      attr %name%.log icon icoLog.png
      attr %name%.log logtype fht
      attr %name%.log room Control/Heizungen

      define %name%.weblink SVG %name%.log:%name%:CURRENT
      attr %name%.weblink label sprintf("Temperatur: %.0f °C (%.0f °C .. %.0f °C) Aktor: %.0f %% (%.0f %% .. %.0f %%)", $data{currval1}, $data{min1}, $data{max1}, $data{currval2}, $data{min2}, $data{max2} )
      attr %name%.weblink room %room%
      attr %name%.weblink alias %alias%


      Configuration:

      te H.templ name=3.dz.hzg fhtcode=3f4a alias=Dachzimmerheizung group=Heizung room=Dachzimmer

      Please note that although %Y% in the FileLog definition looks like a parameter, it is not substituted since no parameter Y is given on the command line. You get detailed information at verbosity level 5 when you run the command.

    todoist

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

    tradfri

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

    update

      update [-noSSL] [<fileName>|all|check|checktime|force] [http://.../controlfile]
      oder
      update [add source|delete source|list|reset]

      Erneuert die FHEM Installation. D.h. es wird (werden) zuerst die Kontroll-Datei(en) heruntergeladen und mit der lokalen Version dieser Datei in moddir/FHEM verglichen. Danach werden alle in der Kontroll-Datei spezifizierten Dateien heruntergeladen, deren Größe oder Zeitstempel sich unterscheiden. Wenn dieser Ablauf abgeschlossen ist, wird das globale UPDATE Ereignis ausgelöst.
      Mit -noSSL wird das http Protocol statt https verwendet, was bei bestimmten veralteten Distributionen notwendig sein kann.
      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 dem 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 und den letzten Abschnitt aus der CHANGED Datei
      • checktime zeigt zusätzlich zu check den update-Zeitstempel der neuen Datei, üblicherweise version Zeitstempel +1 Tag.
      • Falls man <fileName> spezifiziert werden nur die Dateien heruntergeladen, die diesem Regexp entsprechen.
      Siehe Befehl restore.

      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 der update Befehl in einem separaten Prozess ausgeführt und alle Meldungen werden per Event übermittelt. In der telnet Sitzung wird inform, in FHEMWEB wird der 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 spezifiziertem Wunsch 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 durch Leerzeichen oder Komma getrennte Liste von Dateinamen (Regexp), welche beim update nicht berücksichtigt werden.
        Falls der Wert commandref enthält, dann wird commandref_join.pl nach dem update nicht aufgerufen, d.h. die Gesamtdokumentation ist nicht mehr aktuell. Die Moduldokumentation bleibt weiterhin aktuell.
        Beispiel:
          attr global exclude_from_update 21_OWTEMP.pm temp4hum4.gplot
        Der Regexp wird gegen den Dateinamen und gegen Quelle:Dateiname geprüft. Um die Datei FILE.pm von updates von fhem.de auszuschließen, weil sie von einer anderen Quelle bezogen wird, kann man fhem.de.*:FILE.pm spezifizieren.

      • hideExcludedUpdates
        falls gesetzt, werden keine Meldungen bei exclude_from_update Dateien generiert.

      • restoreDirs

    uptime

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

    version

    [EN DE]
      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).

      Wenn dieser Befehl über die FHEMWEB-Kommandozeile eingegeben wird, werden zusätzlich alle aktuell geladenen JavaScript-Dateien mit ihren zugehörigen Versionsinformationen angezeigt.

      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

    vitoconnect

      vitoconnect implementiert ein Gerät für die Viessmann API Vitoconnect100 oder E3 One Base, basierend auf der Untersuchung von thetrueavatar
      Es werden Benutzername und Passwort des ViCare App-Kontos benötigt.
      Zusätzlich auch eine Client-ID, siehe set apiKey.
      Weitere Details sind im FHEM Wiki (deutsch) zu finden.

      Für die Nutzung werden die folgenden Bibliotheken benötigt:
      • Path::Tiny
      • JSON
      • JSON::XS
      • DateTime
      Die Bibliotheken können mit dem Befehl sudo apt install libtypes-path-tiny-perl libjson-perl libdatetime-perl installiert werden oder über cpan. Andernfalls tritt eine Fehlermeldung "cannot load module vitoconnect" auf.

      Define
        define <name> vitoconnect <user> <password> <interval>
        Es wird empfohlen, zunächst ein falsches Passwort zu verwenden und dieses später zu ändern, da es in der Detailansicht des Geräts sichtbar ist.

        Beispiel:
        define vitoconnect vitoconnect user@mail.xx fakePassword 60
        set vitoconnect password correctPassword 60 set vitoconnect apiKey Client-ID


      Set
      • update
        Liest sofort die aktuellen Werte aus.
      • selectDevice
        Wird benötigt, wenn mehr als ein Viessmann Gateway/Device vorhanden ist. Ein Viessmann Gerät muss für jedes FHEM Gerät ausgewählt werden.
        Der Set-Befehl muss ausgeführt werden, nachdem die Viessmann Geräte im Gerätestatus vorgefüllt sind.
        Bei Auswahl eines Viessmann Geräts und Ausführung des Set-Befehls werden die Attribute vitoconnect_serial und vitoconnect_installationId gefüllt.
        Bei nur einem Viessmann Gerät erfolgt dies automatisch.
        Es wird empfohlen, die Änderungen nach der Initialisierung oder dem Set zu speichern.
      • clearReadings
        Löscht sofort alle Werte.
      • clearMappedErrors
        Löscht sofort alle gemappten Fehler Werte.
      • password passwd
        Speichert das Passwort im Schlüsselbund.
      • logResponseOnce
        Speichert die JSON-Antwort des Viessmann-Servers in den Dateien entities.json, gw.json und actions.json im FHEM-Log-Verzeichnis. Wenn mehrere Gateways vorhanden sind, wird die Seriennummer des Gateways an die Dateinamen angehängt.
      • apiKey
        Ein API-Schlüssel muss unter https://developer.viessmann.com/ erstellt werden. Dazu ein Konto anlegen, einen neuen Client hinzufügen (Google reCAPTCHA deaktivieren, Redirect URI = http://localhost:4200/). Die Client-ID muss als apiKey hier eingefügt werden.
      • Die Setter für das Gerät hängen von der gewählten Mappingmethode ab, die durch die Attribute vitoconnect_raw_readings oder vitoconnect_mapping_roger gesteuert wird.
        Neue Setter werden verwendet, wenn vitoconnect_raw_readings = 1 gesetzt ist. Standardmäßig wird das statische Mapping der alten SVN-Version verwendet. Die folgenden Setter sind verfügbar:
      • HKn_Heizkurve_Niveau shift
        Setzt die Verschiebung der Heizkurve für HKn.
      • HKn_Heizkurve_Steigung slope
        Setzt die Steigung der Heizkurve für HKn.
      • HKn_Urlaub_Start_Zeit start
        Setzt die Urlaubsstartzeit für HKn.
        Start muss im Format: 2019-02-02 angegeben werden.
      • HKn_Urlaub_Ende_Zeit end
        Setzt die Urlaubsendzeit für HKn.
        Ende muss im Format: 2019-02-16 angegeben werden.
      • HKn_Urlaub_stop
        Entfernt die Urlaubsstart- und Endzeit für HKn.
      • HKn_Zeitsteuerung_Heizung schedule
        Setzt den Heizplan für HKn im JSON-Format.
        Beispiel: {"mon":[],"tue":[],"wed":[],"thu":[],"fri":[],"sat":[],"sun":[]} für keinen Betrieb und {"mon":[{"mode":"on","start":"00:00","end":"24:00","position":0}],...} für 24/7 Betrieb.
      • HKn_Betriebsart heating,standby
        Setzt den Betriebsmodus für HKn auf heizen oder standby.
      • WW_Betriebsart balanced,off
        Setzt den Betriebsmodus für Warmwasser auf ausgeglichen oder aus.
      • HKn_Soll_Temp_comfort_aktiv activate,deactivate
        Aktiviert/deaktiviert die Komforttemperatur für HKn.
      • HKn_Soll_Temp_comfort targetTemperature
        Setzt die Komfortzieltemperatur für HKn.
      • HKn_Soll_Temp_eco_aktiv activate,deactivate
        Aktiviert/deaktiviert die Ökotemperatur für HKn.
      • HKn_Soll_Temp_normal targetTemperature
        Setzt die normale Zieltemperatur für HKn (zwischen 3 und 37 Grad Celsius).
      • HKn_Soll_Temp_reduziert targetTemperature
        Setzt die reduzierte Zieltemperatur für HKn (zwischen 3 und 37 Grad Celsius).
      • HKn_Name name
        Setzt den Namen des Kreislaufs für HKn.
      • WW_einmaliges_Aufladen activate,deactivate
        Aktiviert oder deaktiviert einmaliges Aufladen für Warmwasser.
      • WW_Zirkulationspumpe_Zeitplan schedule
        Setzt den Zeitplan im JSON-Format für die Warmwasserzirkulationspumpe.
      • WW_Zeitplan schedule
        Setzt den Zeitplan im JSON-Format für Warmwasser.
      • WW_Solltemperatur targetTemperature
        Setzt die Warmwassertemperatur (zwischen 10 und 60 Grad Celsius) auf targetTemperature.
      • Urlaub_Start_Zeit start
        Setzt die Urlaubsstartzeit.
        Start muss im Format: 2019-02-02 angegeben werden.
      • Urlaub_Ende_Zeit end
        Setzt die Urlaubsendzeit.
        Ende muss im Format: 2019-02-16 angegeben werden.
      • Urlaub_stop
        Entfernt die Urlaubsstart- und Endzeit.

    Get
      Keine Daten zum Abrufen verfügbar.

    Attributes
      attr <name> <attribute> <value>

      Weitere Informationen zum attr-Befehl sind in der commandref#attr zu finden.

      Attribute:
      • disable:
        Stoppt die Kommunikation mit dem Viessmann-Server.
      • verbose:
        Setzt das Verbositätslevel.
      • vitoconnect_raw_readings:
        Erstellt Readings mit einfachen JSON-Namen wie 'heating.circuits.0.heating.curve.slope' anstelle von deutschen Bezeichnern (altes Mapping), Mapping-Attributen oder Übersetzungen.
        Wenn raw Readings verwendet werden, werden die Setter dynamisch erstellt, die den raw Readings entsprechen.
        Diese Einstellung wird empfohlen, um die Daten so dynamisch wie möglich von der API zu erhalten.
        stateFormat oder userReadings können verwendet werden, um wichtige Readings mit einem lesbaren Namen anzuzeigen.
        Wenn vitoconnect_raw_readings gesetzt ist, wird kein Mapping verwendet.
      • vitoconnect_disable_raw_readings:
        Deaktiviert die zusätzliche Generierung von raw Readings.
        Es werden nur die Messwerte angezeigt, die im gewählten Mapping explizit zugeordnet sind.
        Diese Einstellung wird nicht aktiv, wenn vitoconnect_raw_readings = 1 gesetzt ist.
      • vitoconnect_gw_readings:
        Erstellt ein Reading vom Gateway, einschließlich Informationen, wenn mehrere Gateways vorhanden sind.
      • vitoconnect_actions_active:
        Erstellt Readings für Aktionen, z.B. 'heating.circuits.0.heating.curve.setCurve.setURI'.
      • vitoconnect_mappings:
        Definiert eigene Zuordnungen von Schlüssel-Wert-Paaren anstelle der eingebauten Zuordnungen. Das Format muss wie folgt sein:
        mapping
        { 'device.serial.value' => 'device_serial',
        'heating.boiler.sensors.temperature.main.status' => 'status',
        'heating.boiler.sensors.temperature.main.value' => 'haupt_temperatur'}
        Die eigene Zuordnung hat Vorrang vor der alten Zuordnung.
      • vitoconnect_translations:
        Definiert eigene Übersetzungen für Wörter, die dann Teil für Teil übersetzt werden. Das Format muss wie folgt sein:
        translation
        { 'device' => 'gerät',
        'messages' => 'nachrichten',
        'errors' => 'fehler'}
        Die eigene Übersetzung hat Vorrang vor der Zuordnung und der alten Zuordnung.
      • vitoconnect_mapping_roger:
        Verwendet das Mapping von Roger vom 8. November (https://forum.fhem.de/index.php?msg=1292441) anstelle der SVN-Zuordnung.
      • vitoconnect_serial:
        Dieses Attribut wird bei der Initialisierung des FHEM-Geräts gesetzt.
        Der Befehl set selectDevice muss ausgeführt werden, wenn mehrere Seriennummern verfügbar sind.
        Dieses Attribut muss nicht manuell gesetzt werden, wenn nur ein Viessmann Gerät vorhanden ist.
      • vitoconnect_installationID:
        Dieses Attribut wird bei der Initialisierung des FHEM-Geräts gesetzt.
        Der Befehl set selectDevice muss ausgeführt werden, wenn mehrere Seriennummern verfügbar sind.
        Dieses Attribut muss nicht manuell gesetzt werden, wenn nur ein Viessmann Gerät vorhanden ist.
      • vitoconnect_timeout:
        Setzt ein Timeout für den API-Aufruf.
      • vitoconnect_device:
        Es kann zwischen den Geräten 0 (Standard) oder 1 gewählt werden. Diese Funktion konnte nicht getestet werden, da nur ein Gerät verfügbar ist.

    watchdog

    [EN DE]

      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.
        • Die Variablen $DEV, $NAME, $EVENT, $EVTPART*, $TYPE und $SELF stehen im ausgefürten Code zur Verfügung, sie sind in der notify Dokumentation genauer beschreiben.

      Set
      • inactive
        Deaktiviert das entsprechende Gerät. Beachte den leichten semantischen Unterschied zum disable Attribut: "set inactive" wird bei einem shutdown automatisch in fhem.state gespeichert, es ist kein save notwendig.
        Der Einsatzzweck sind Skripte, um das notify temporär zu deaktivieren.
        Das gleichzeitige Verwenden des disable Attributes wird nicht empfohlen.
      • active
        Aktiviert das entsprechende Gerät, siehe inactive.

      Get
        N/A

      Attribute
      • activateOnStart
        Falls gesetzt, wird der Watchdog nach FHEM-Neustart aktiviert, je nach Zeitstempel der Activated und Triggered Readings. Da zwischen Shutdown und Neustart Events verlorengehen können, ist die Voreinstellung 0 (deaktiviert).
      • 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.

      • regexp2WillReactivate
        In der Voreinstellung wartet der Watchdog nach Empfang eines Events, der auf regexp2 matcht, wieder auf einem Event, was auf regexp1 matcht, um den Rückwärtszähler zu starten. Wenn dieses Attribut gesetzt ist (auf 1), dann wird nach dem Empfang des "regexp2" Events der Zähler ohne auf einem "regexp1" Event zu warten, von vorne gestartet. Falls regexp1 und regexp2 gleich sind, oder regexp2 ist ., dann ist dieses Verhalten die Voreinstellung.

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

      • completeOnDisabled
        falls gesetzt (auf 1), wird ein aktiviertes (STATE Next:...) watchdog auch dann ausgeführt, wenn zur Ausführungszeit disabled aktiv ist (siehe disabledForIntervals).


    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
    • Homematic via CUL_HM (Kanal _Clima bzw. _Climate)
    • Homematic via HMCCUDEV und HMCCUCHN

    • Weiter können die folgenden Modul-Typen als logische Zwischenschicht eingesetzt werden:
    • WeekdayTimer
    • MQTT2_DEVICE (zusätzlicher Code erforderlich)

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

      Hinweis: Geräte des Typs WeekdayTimer und MQTT2_DEVICE können nicht als 'Master-Gerät' verwendet werden.

      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.

      Hinweis: weekprofile unterstützt configdb and configdb migrate seit SVN-Version: 21314.
      Wenn von einer früheren Version geupdatet wird, muss die Profiel-\Konfigurationsdatei manuell in configDB importiert werden.

      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 Modul wird libjson-perl benötigt

      Events:
      Aktuell werden folgende Events erzeugt:
    • PROFILE_TRANSFERED: wenn ein Profil oder Teile davon zu einem Gerät gesended wurden
    • PROFILES_SAVED: wenn Profile in die Konfigurationsdatei gespeichert wurden (auch wenn es keine Änderung gab!)
    • Define
        define <name> weekprofile [master device]

        Aktiviert das Modul. Bei der Angabe eines 'Master-Gerätes' wird das Profil 'master' entprechende dem Wochenrofil vom Gerät angelegt. Sonderbehandlung des 'master' Profils:
      • Kann nicht gelöscht werden
      • Bei Ändern\Setzen des Proils wird es automatisch an das 'Master-Geräte' gesendet
      • Es wird sind mit abgespeicht

      • Wird kein 'Master-Geräte' angegeben, wird ein 'default' Profil angelegt.
      Set
      • profile_data
        set <name> profile_data <profilname> <json data>
        Es wird das Profil 'profilname' geändert. Die Profildaten müssen im json-Format übergeben werden.
      • send_to_device
        set <name> send_to_device <profilname> [devices]
        Das Profil wird an ein oder mehrere Geräte übertragen. Wird kein Gerät angegeben, wird das 'Master-Gerät' verwendet. 'Devices' ist eine kommagetrennte Auflistung von Geräten
      • copy_profile
        set <name> copy_profile <quelle> <ziel>
        Kopiert das Profil 'quelle' auf 'ziel'. 'ziel' wird überschrieben oder neu angelegt.
      • remove_profile
        set <name> remove_profile <profilname>
        Das Profil 'profilname' wird gelöscht.
      • reference_profile
        set <name> reference_profile <quelle> <ziel>
        Referenziert das Profil 'ziel'auf 'quelle'. 'ziel' wird überschrieben oder neu angelegt.
      • restore_topic
        set <name> restore_topic <topic>
        Alle Wochenpläne in der Topic werden zu den entsprechenden Geräten übertragen. Dazu muss im Gerät ein Userattribut 'weekprofile' mit dem Namen des Wochenplans ohne Topic gesetzt sein.
      • reread_master
        Aktualisiert das master profile indem das 'Master-Geräte' neu ausgelesen wird.
      • import_profile
        set <name> import_profile <device> <[profilename]>
        Profil von einem Gerät importieren.
      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.
      • associations [Rückgabetyp (0|1)]
        Gibt eine Liste der unterstützten Geräte mit dem verbundenen\zugeordnetem Profilnamen zurück.
        Rückgabetyp 0: HTML Tabelle
        Rückgabetyp 1: json Liste

      Readings

      • active_topic
        Aktive\zuletzt gesetzter Topicname.
      • profile_count
        Anzahl aller Profile mit Referenzen.
      • topics
        Liste von Topicnamen getrennt durch ':'
      Attribute
      • widgetTranslations
        Liste von Übersetzungen der Form :<Übersetzung> getrennt durch ',' um Texte im Widget zu Übersetzen. attr name widgetTranslations Abbrechen:Abbr,Speichern:Save
      • widgetWeekdays
        Liste von Wochentagen getrennt durch ',' welche im Widget angzeigt werden. Beginnend bei Montag. z.B. attr name widgetWeekdays Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag
      • widgetEditDaysInRow
        Anzahl in der in einer Reihe dargestellten Tage während der Bearbeitung. Default 2.
      • widgetEditOnNewPage
        Wenn gesetzt ('1'), dann wird die Bearbeitung auf einer separaten\neuen Webseite gestartet.
      • widgetTempRange
        Bereich der Temperatur Dropdown-Box im FHEM widget Syntax: min:max:step z.B. 5:30:0.5
      • tempMap
        Temperatur Schlüssel-Werte-Paare Syntax: :,:
        z.B. off:5.0,on:30.0
      • tempOn
        Veraltet - bitte tempMap benutzen
      • tempOff
        Veraltet - bitte tempMap benutzen
      • sendKeywordsToDevices
        Sende Temperatur-Schlüsselwort zum Gerät anstatt der Werte Default: 0
      • 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.
      • sendDelay
        Default: 0 Verzögerungszweit in Sekunden zwischen dem Senden von Profildaten an ein Thermostat gleichen Typs. Hilfreich zur Vermeidung von Meldungen wie "queue is full, dropping packet".
      • forceCompleteProfile
        Default: 0 Ezwingt das Senden eines komplettes Wochenprofiles anstatt der Änderungen Es besteht somit die Möglichkeit eines erneuten Senden der Daten an das Thermostats
      • weekprofile
        Kann ein userattr eines unterstützten Moduls von weekprofile sein, um ein spezifisches Profil mit dem angegeben Namen beim Befehl restore_topic zu empfangen. Siehe auch 'Topics'.

    withings

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

    xs1Bridge

    [EN DE]
      Mit diesem Modul können Sie das Gerät xs1 der Firma EZcontrol auslesen. Das Modul ruft die Daten des xs1 via der Kommunikationsschnittstelle ab. Mit einem HTTP GET Requests erhält man die Antworten in Textform welche im Datenformat JSON (JavaScript Object Notation) ausgegeben werden. Es werden Aktoren | Sensoren | Timer | Informationen vom xs1 ausgelesen und in Readings geschrieben. Bei jedem Auslesen werden nur Readings angelegt bzw. aktualisiert, welche auch im xs1 definiert und aktiv sind. Aktor | Sensor bzw. Timer Definitionen welche deaktiviert sind im xs1, werden NICHT ausgelesen.

      Das Modul wurde entwickelt basierend auf dem Firmwarestand v4-Beta des xs1. Es kann aufgrund von unterschiedlichen Anpassungen innerhalb der Firmware des Herstellers zu Fehlern kommen.
      Getestete Firmware: v4.0.0.5326 (Beta) @me | v3.0.0.4493 @ForumUser

        Derzeit implementierte Typen des xs1 zur Verarbeitung:
      • Aktor: dimmer, switch, shutter, timerswitch
      • Sensor: barometer, counter, counterdiff, light, motion, other, rain, rain_1h, rain_24h, rainintensity, remotecontrol, uv_index, waterdetector, winddirection, windgust, windspeed, windvariance


      Define
        xs1 ohne Passwortabfrage:  define <NAME> xs1Bridge <IP>
        xs1 mit Passwortabfrage:     define <NAME> xs1Bridge <User>:<Passwort>@<IP>

        Ein anlegen des Modules ohne Angabe der IP vom xs1 ist nicht möglich. Sollte die IP bei der Moduldefinierung nicht erreichbar sein, so bricht der Define Vorgang ab.
        • <IP> ist IP-Adresse im lokalen Netzwerk
        • <User> ist der Administrator Benutzer admin (standard)
        • <Passwort> ist das vergebene Administrator Passwort im xs1.

        Beispiele:
          define EZcontrol_xs1 xs1Bridge 192.168.1.45
          define EZcontrol_xs1 xs1Bridge admin:geheim@192.168.1.45

      Set
        N/A

      Get
        N/A

      Attribute
      • debug (0,1,2)
        Dies bringt das Modul in eine sehr ausführliche Debug-Ausgabe im Logfile. Somit lassen sich Programmteile kontrollieren und Fehler überprüfen.
        (Default, debug 0)

      • update_only_difference (0,1)
        Die Aktoren welche im xs1 definiert wurden, werden nur bei Wertänderung aktualisiert.
        (Default, update_only_difference 0)

      • view_Device_name (0,1)
        Die Aktor Namen welche im xs1 definiert wurden, werden als Reading ausgelesen.
        (Default, view_Device_name 0)

      • view_Device_function (0,1)
        Die Aktor Funktionen welche im xs1 definiert wurden, werden als Reading ausgelesen.
        (Default, view_Device_function 0)

      • xs1_blackl_aktor
        Eine kommagetrennte Blacklist der Aktoren, welche nicht automatisch angelegt werden sollen sobald xs1_control = 1(aktiv).
        (Beispiel: 2,40,3)

      • xs1_blackl_sensor
        Eine kommagetrennte Blacklist der Sensoren, welche nicht automatisch angelegt werden sollen sobald xs1_control = 1(aktiv).
        (Beispiel: 3,37,55)

      • xs1_control (0,1)
        Die Freigabe zur Steuerung des xs1. Nach Aktivierung dieser, wird durch das xs1Dev Modul jeder Aktor und Sensor in FHEM angelegt.
        (Default, xs1_control 0)

      • xs1_interval (0,30,60,180,360)
        Das ist der Intervall in Sekunden, in dem die Readings neu gelesen werden vom xs1.
        Bei Aktoren werden nur unterschiedliche Zustände aktualisiert im eingestellten Intervall.
        Sensoren werden unabhängig vom Zustand immer im Intervall aktualisiert.
        (Default, xs1_interval 60)


      Erläuterung:
      • Auszug Readings:
        • Aktor_(01-64)
        • definierter Aktor mit jeweiligem Zustand im Gerät
        • Aktor_(01-64)_name
        • definierter Aktorname im Gerät
        • Aktor_(01-64)_function(1-4)
        • definierte Aktorfunktion im Gerät
        • Sensor_(01-64)
        • definierter Sensor im Gerät
        • Sensor_(01-64)
        • definierter Sensorname im Gerät
        • Timer_(01-128)
        • definierter Timer im Gerät
        • xs1_bootloader
        • Firmwareversion des Bootloaders
        • xs1_dhcp
        • DHCP an/aus
        • xs1_features
        • erworbene Feature beim Kauf (A = SENDEN | B = EMPFANGEN | C = Skripte/Makros | D = Speicherkartenzugriff)
        • xs1_firmware
        • Firmwareversion
        • xs1_start
        • Gerätestart

      • Die Meldung "Error: Can't connect ..." oder "ERROR: empty answer received" im System-Logfile, besagt das kurzzeitig keine Abfrage erfolgen konnte.
        (Das kann häufiger bei DLAN vorkommen.)

      • Sollte das Gerät nach 5 Verbindungsversuchen ebenfalls keine Verbindung erhalten haben, so schaltet das Modul auf < disable > !

      • Logfile Erstellung erfolgt automatisch nach dem definieren. | Schema: define FileLog_xs1Bridge FileLog ./log/xs1Bridge-%Y-%m.log <Name>
        Folgende Werte werden im Logfile erfasst: Timer | xs1-Statusinformationen

      • Sollte das Gerät nach 5 Verbindungsversuchen ebenfalls keine Verbindung erhalten haben, so schaltet das Modul auf < disable > !

    xs1Dev

    [EN DE]
      Dieses Modul arbeitet mit dem Modul xs1Bridge zusammen. (Das Attribut xs1_control im Modul xs1Bridge muss auf 1 gestellt sein!)
      Es kommuniziert mit diesem und legt sämtliche Aktoren des xs1 als Device im FHEM an. So kann man vom FHEM aus, die Aktoren der xs1 steuern.

      Das Modul wurde entwickelt basierend auf dem Firmwarestand v4-Beta des xs1. Es kann aufgrund von unterschiedlichen Anpassungen innerhalb der Firmware des Herstellers zu Fehlern kommen.

        Derzeit implementierte Typen des xs1 zur Verarbeitung:
      • Aktor: dimmer, switch, shutter, timerswitch
      • Sensor: barometer, counter, counterdiff, light, motion, other, rain, rain_1h, rain_24h, rainintensity, remotecontrol, uv_index, waterdetector, winddirection, windgust, windspeed, windvariance


      Define
        define <name> xs1Dev <Typ> <ID> IODev=<NAME>

        Ein anlegen des Modules ohne Angabe des Typ und der ID vom xs1 ist nicht möglich.
        • <ID> ist interne ID im xs1.
        • <Typ> ist der Kürzel A für Aktoren oder S für Sensoren.

        Beispiel:
          define xs1Dev_Aktor_02 xs1Dev A 02 IODev=ezControl

      Set
        set <name> <value>

      Wobei value der in der xs1 definierten Funktion entspricht. Bsp:
        an
        aus
        dimup
        dimupdown
        umschalten
        an, warten, aus
        absolut
        warten
        langes AN
        langes AUS
        Stopp
        an, warten, an
        aus, warten, aus
        Impuls

      Get
        N/A

      Attribute
      • debug (0,1)
        Dies bringt das Modul in eine sehr ausführliche Debug-Ausgabe im Logfile. Somit lassen sich Programmteile kontrollieren und Fehler überprüfen.
        (Default, debug 0)
      • useSetExtensions (0,1)
        Schaltet die SetExtensions ein bzw. aus.
        (Default, useSetExtensions 0)

      Erläuterung:
      • Auszug Internals:
        • xs1_function(1-4): definierte Funktion im Gerät
          xs1_name: definierter Name im Gerät
          xs1_typ: definierter Typ im Gerät

    yowsup

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

    Perl specials

    [EN DE]
    Wenn Sie einige Aufgaben automatisieren wollen, dann sollten Sie die Befehle at oder notify nutzen. Für komplexere Aufgaben sollten Sie lieber ein SHELL-Skript oder einen PERL "oneliner" als das at/notify argument anwenden. Dieser Abschnitt gibt Ihnen einige Tipps zur Anwendung der PERL-oneliner.

  • Um PERL-"oneliner" zu testen, geben Sie diese am "telnet" Prompt (oder in der FHEMWEB Text-Eingabezeile) eingeschlossen von geschweiften Klammern {} in einer Zeile ein. Die letzte Beispielzeile schreibt nur etwas in die Logdatei, während das Ergebnis der anderen Zeilen direkt auf der Webseite sichtbar ist.
      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 und $hms für die Verwendung in PERL-"oneliners" eingeführt (s. unter perldoc -f localtime). Ausnahmen: $month hat einen Wertebereich von 1 bis 12 und $year ist korrigiert von 1900. Weiterhin enthält $hms die Zeit in dem HH:MM:SS Format und $today das aktuellen Datum in YYYY-MM-DD Format.
    Die Variabe $we hat den Wert 1 wenn der abgefragte Tag auf ein Wochenende fällt (Z.B. $wday == 0 [Sonntag] oder $wday == 6 [Samstag]), und 0 für die anderen Wochentage. Wenn man das global holiday2we Attribut setzt, dann ist $we ebenfalls 1 bei Urlaubstagen.
      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) }
    $we wird mit IsWe() gesetzt, diese Funktion nimmt optional die Argumente "today", "yesterday", "tomorrow", MM-DD oder YYYY-MM-DD. Achtung: bei anderen Werten wird das state Reading ausgewertet, ohne eine Fehlermeldung zu generieren.

  • Hilfsfunktionen sind in 99_Utils.pm beschrieben.

  • Um auf die Gerätestatus/Attribute zuzugreifen benutzen Sie bitte die folgenden Funktionen:
    • Value(<devicename>)
      liefert das Internal STATE zurück. Achtung: STATE wird in erster Linie für die Anzeige verwendet, und kann vom Benutzer mit dem stateFormat Attribut geändert werden. Für Berechnungen sollte man stattdessen ReadingsVal(<devicename>, 'state', '') verwenden (s.u.).

    • OldValue(<devicename>)
    • OldTimestamp(<devicename>)
      gibt den vorherigen Wert/Zeitstempel des Gerätes zurück.

    • ReadingsVal(<devicename>,<reading>,<defaultvalue>)
      Gibt den Inhalt der "readings" zurück (den Inhalt der in dem "Readings"-Abschnitt von "list device" angezeigt wird)

    • ReadingsNum(<devicename>,<reading>, <defaultvalue>,<round>)
      Gibt die erste Zahl aus dem Readingswert zurück. Falls <round> spezifiziert ist, wird sie auf diese Anzahl von Dezimalstellen gerundet und ggf. mit 0 aufgefüllt, wenn <round> größer ist als die Anzahl der Dezimalstellen.

    • ReadingsTimestamp(<devicename>, <reading>,<defaultvalue>)
      gibt den Zeitstempel des Readings zurück.

    • ReadingsAge(<devicename>,<reading>,<defaultvalue>)
      gibt das Alter des Readings in Sekunden zurück.

    • OldReadingsVal(<devicename>,<reading> ,<defaultvalue>)
      OldReadingsNum(<devicename>,<reading>, <defaultvalue>,<round>)
      OldReadingsTimestamp(<devicename>,<reading> ,<defaultvalue>)
      OldReadingsAge(<devicename>,<reading>,< defaultvalue>)
      analog zu den Routinen oben, aber zum Zugriff auf die vorherigen Werte. siehe: oldreadings

    • AttrVal(<devicename>,<attribute>,<defaultvalue>)
      Gibt das entsprechende Attribut des Gerätes zurück

      { Value("wz") }
      { OldValue("wz") }
      { time_str2num(OldTimestamp("wz")) }
      { ReadingsVal("wz", "measured-temp", "20")+0 }
      { ReadingsTimestamp("wz", "measured-temp", 0)}
      { AttrVal("wz", "room", "none") }

    • AttrNum(<devicename>,<attribute>, <defaultvalue>,<round>)
      Gibt die erste Zahl aus dem Attributwert zurück. Falls <round> spezifiziert ist, wird sie auf diese Anzahl von Dezimalstellen gerundet und ggf. mit 0 aufgefüllt, wenn <round> größer ist als die Anzahl der Dezimalstellen.

    • InternalVal(<devicename>,<internal>, <defaultvalue>)
      Gibt den Inhalt der "internal" zurück (den Inhalt der in dem "Internals"-Abschnitt von "list device" angezeigt wird)

    • InternalNum(<devicename>,<internal>, <defaultvalue>,<round>)
      Gibt die erste Zahl aus dem "internal" zurück. Falls <round> spezifiziert ist, wird sie auf diese Anzahl von Dezimalstellen gerundet.

  • Wenn Sie das 99_SUNRISE_EL.pm Modul benutzen, haben Sie zugriff auf folgende Funktionen:
      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.


  • Regexp

    [EN DE]
    FHEM verwendet an vielen Stellen Regexps, womit Reguläre Ausdrücke gemeint sind. Weitere Bezeichner sind regex oder re.
    Mit einem Regexp kann man prüfen, ob eine Zeichenkette eine Andere enthält, oder man kann Teile einer Zeichenkette extrahieren.
    Regexp ist nicht mit dem aus dem Shell bekannten Globbing zu verwechseln: zBsp. ist .* die Regexp äquivalente von *, was man in dem Dateisystem verwendet.
    Einige Beispiele:
      RegexpErklärung
      . Trifft für ein beliebiges Zeichen/Buchstabe zu.
      x Trifft für eine Zeichenkette zu, die x enthält: x, xy, aber nicht abc
      ^x Trifft für eine Zeichenkette zu, die mit x anfängt: x, xy, aber nicht yx
      x$ Trifft für eine Zeichenkette zu, die mit x endet: x, yx, aber nicht xy
      ^x?$ Trifft für eine Zeichenkette zu, die leer ist, oder nur ein x enthält
      ^x*$ Trifft für eine Zeichenkette zu, die leer ist oder nur x enhtält: "", x, xxxx, aber nicht xy oder yx
      ^x+$ Trifft für eine Zeichenkette zu, die x mindestens einmal enthaelt: x, xxxx, aber nicht ""
      ^(xy|yx)$ Trifft für xy or yx zu.
      *Das ist kein Regexp! Das ist ein Glob.
    Das ist nicht mal die Spitze des Eisbergs, wenn man mehr wissen will, kann man z.Bsp. die in der perl Installation vorhandene Dokumentation verwenden: die Shell Befehle "perldoc perlretut" oder "perldoc perlre" (in dieser Reihenfolge) liefern Seitenweise mehr Info.
    Falls man unsicher ist, sollte man die Regexps testen, z.Bsp. in einen der online Tester wie regex101.com, regexr.com or regextester.com .
    Man kann ein Regexp auch offline in FHEM testen, z.Bsp. wenn man es in der Kommandozeile so eingibt:
      { "StringToTest" =~ m/^Str/ }
      { "StringToTest" =~ m/^str$/ }
      { "StringToTest" =~ m/(To|From)/ }

    gnuplot file syntax

    [EN DE]
    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.